基础要点:
顶点片元着色器执行顺序:顶点函数(appdata)->片元函数(v2f结构体)->输出到屏幕
表面着色器是在顶点片元着色器基础上的封装。
函数使用的数据来源:模型和属性
语义很重要,是数据传递的标识
常用的语义:POSITION NORMAL COLOR TEXCOORD0 TANGENT
标准光照模型:
光线分4种:emissive specular diffuse ambient
自发光和环境光是简单的叠加
漫反射公式:Lambert's law
高光反射:Phong模型 Blinn模型(都是经验模型)当入射光和视角是常量时Blinn模型更快,反之Phong模型更快。
逐像素和逐顶点计算:
顶点数目远小于像素数目,逐顶点计算量小。
逐顶点光照依赖线性插值得到像素光照,若有非线性计算会出现问题。同样由于插值运算,渲染图元内部颜色总是暗于顶点处最高颜色值。(留坑)
简单的逐顶点漫反射shader代码,用类似形式容易实现逐片元漫反射、逐顶点高光、逐片元高光效果。
刚开始学冯乐乐的《UnityShader入门精要》,发现代码也能这么浪漫,然后突然发现90后都开始出书了,我到20多的时候应该还会是条杂鱼吧(不会真的不是吧)。