目录
- 假环境反射材质(不锈钢材质)
- 生锈材质
假环境反射材质(不锈钢材质)
先放上最终图:
处理高光部分:
- 这里是phong模型不是blinnphong。
- 应用观察方向的反射方向和光方向点乘算出高光,然后重映射取值范围为[0,1],为后面采样纹理做准备,纹理坐标的范围就是[0,1],再乘一个系数,控制整个纹理采样后的结果,应该成为强度。
然后是正式的phong模型:
将上面两个部分加起来,就能得到最后的效果:
生锈材质
先放最终效果:
- 原理其实是使用噪声图作为蒙版,分底色和生锈色,蒙版的部分就是生锈色。要用蒙版就是使用lerp函数。
- 然后还加上了菲涅尔的效果,效果不是很明显,应该还是能看出来,材质球周围一圈明显亮一点。
首先是菲涅尔项:
- 加上了菲涅尔项的控制系数和颜色,就不细说了。
然后是blinnphong项了:
- BlinnPhong项使用的是半程向量(光方向和观察方向的中间向量,也就是两个相加后归一化的向量)和法向量点乘的结果。
- BlinnPhong项计算的是高光项,也就是镜面反射光,和观察方向是有关的。
然后是兰伯特项:
- 法向量和光方向点乘,兰伯特项是用来计算漫反射光照的,也就是环境光,和观察方向无关。
然后是蒙版项:
- 控制uv坐标去采样噪声纹理,添加一个阈值,来对采样后的结果进行分层,高于阈值的返回0,低于阈值的返回1,让黑白对比更明显。
- Desaturate:输出一个 [Col] 的不饱和版本。[Des]决定怎样去饱和度。值 1 表示完全去饱和,0.5 表示半去饱和,0 表示无去饱和。
最后运算:
- add是高光项,兰伯特项和菲涅尔项三者相加的结果,作为lerp函数的a层,也就是底色层。
- add的结果乘上一个高光颜色,作为lerp函数的b层,也就是生锈层。
- 蒙版项作为lerp的t层,也就是遮罩。
完整的连连看: