游戏内实际截图
模型查看
unlit 和 lit材质
描边
具体做法可以看这一篇
这里直接使用了
法线外扩
的方案来实现了描边
控制描边的粗细
这里的实现方案是使用法线的长度来控制法线外扩的距离
直接输出法线的长度当做颜色,可以看到部分地方法线长度较短(颜色较暗),为了避免描边过重的问题
将描边和unlit进行整合效果预览
自定义兰伯特
默认的兰伯特和半兰伯特都有一些局限性,过暗或者过亮的情况,这里希望更自由的控制兰伯特的强度
1 | float lambert(float3 normal, float3 lightDir, float lambertScale = 0.0f) |
叠加兰伯特效果后对比
基于兰伯特的值再次进行二值化操作
伪代码
1 | float lambert = xxx; |
需要注意的一点:是否和自定义兰伯特进行叠加
如果不叠加:会让画面更纯净
如果叠加:会带一点点的参差感,具体可以看期望的美术风格