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