今天内容主要是将之前学过的所有的光照模型统一在一起,写出一个较完整的光照模型。
在做本次作业中代码在检查时经常出错,这次的笔记就将在作业过程中的问题写出来做一次收集整理。
一、属性
在这一块中,由于所需要的参数增多,所以引用:[Header( )] 来进行面板的分割,使所见的面板更为整洁。
二、参数声明
在参数声明中也将不同的参数声明用属性中的面板名称分隔,以便更清晰明了,寻找时也更为方便。
三、输入、输出结构与顶点Shader
在这个块中,数据传输的方向是 输入——顶点Shader——输出,应该注意数据传输的方向,对应的数据需要向上一个结构去拿,而不是从上到下。例如 输出结构的 pos 就是 顶点Shader中的,而不是在输入结构拿取。
在这个步骤中不需要将所有的数据一次性都齐全,可以在过程中不断添加,跟着 像素Shader的需求而增加。
四、像素Shader
像素Shader较为繁杂,前面的结构都为此服务,如果需要什么数据,需要让前面的结构替它处理后拿进来进行运算。写像素Shader也需要进行分类分步奏的计算,使Shader更为简洁富有逻辑。
五、写代码时范的错误
在写投影(shadow)时需要在输出结构中增加如上图的坐标和对应的包含文件:
#include "AutoLight.cginc"
#include "Lighting.cginc"
2.
法线贴图映射后需要解码:UnpackNormal
3.
Cube 的坐标需要为4维向量。
4.
Larmbert 定义成一维标量了,而后面的为一个一维标量与一个三维矢量,导致颜色输出存在问题 。