01.结构Struct
一些相关数据的组织方式

02.渲染过程
模型 > 输入结构 > 顶点Shader > 输出结构 > 像素Shader > 渲染结果


将模型每个顶点位置信息,换算为每个顶点应该屏幕的位置
计算和赋值其他顶点信息,如: UV,顶点色,顶点法线


03.
向量
标量(Scalar):只有大小,没有方向的量;如:年龄,体重,等;
向量(Vector):既有大小,也有方向的量;如:力,速度等
理论上不存在没有大小,只有方向的量;但存在大小无现实意义的量,我们多把它归一化处理.

04.点乘Dot
点乘/点积/Dot:两向量间的一种运算方式,结果为一标量.,具有良好的几何含义;
结果的几何意义为:一个向量在另一向量上的投影长度
结果的图形学表现为:两向量,方向同时 结果=1(白色),方向 结果=-1(黑色),垂直 结果=0(黑色)

两个向量方向
一样,它的投影长度
最长

两个向量方向
相反,它的投影长度为
负值

两个向量方向
垂直,它的投影长度为
零
中午12点钟的太阳照到头上,投影就在脚下,值为0

如果一个向量是光的方向,
光的方向的反方向,
一个是物体表面的朝向
05.兰伯特光照模型Lambert
根据向量点乘的图形学含义,我们令:
-模型表面的垂直方向为向量nDir(即:法线方向)
-令光照方向的反方向为向量lDir(即:LightDir)
-令nDir * lDir(两者点乘)结果为像素输出;
最两处:值为1,纯白;
明暗交接处:值为0,纯黑;
暗部:值为负数,亦为黑;
负数是个意义的亮度,所以我们通常把结果为负数的值,都改为0;
则有:
Max(0,nDir * lDir)
即为
兰伯特光照模型

Max(x,y)
选择x和y中的最大的


06.半兰博特光照模型 Half-Lambert
优点:比Lambert透气,不至于暗部死黑
缺点:显然和素描老师教的不一样

lDir 即平行光 Direction Light取方向光的
反方向

Clamp 0-1
输出不小于0,不大于1 限制两端点之间的范围

Clamp
将指定值限制在指定的最小和最大范围内



07.映射
映射:两个集合,元素间相互对应的关系


08.调子映射 RampTex


Append
把两个标量值合并成一个二维向量
一维向量+一维向量 = 二维向量
二维向量 + 一个标量 = 三维向量,限制最多四维



结论
两个向量的方向越接近,它的点乘Dot结果越接近1

两个向量的方向越相反,它的点乘Dot结果越接近-1

两个向量的夹角为90度,它的点乘Dot结果为0

光 直射到表面 就应该 亮
光 背向表面 就应该 暗
光 垂直于90度 应该也暗
Append 是相加分量的节点
Component Mask 是拆分量的节点

