透视效果是我们经常会遇到的,比如我心中最好的线性游戏 “Dishonored2”。
Dishonored2
透视

今天的目标就是实现这个最终效果。
理一下思路,因为是隔墙,所以肯定是两个 Pass 来实现了,毕竟要考虑到一半一半的情况。
第一个 Pass 用来显示边缘形成的模型,第二个 Pass 用来画剩下没有被遮挡的模型,也就是正常的 Pass 就不说了。

第一个 Pass:

  • 要显示墙后面的物体,那么自己本身肯定是不透明的,渲染队列先设置为 Geometry,既然是不透明的,那么深度信息也不能写入。考虑到该 Pass 渲染完后,挡在他前面的物体还是要显示的,所以如下:
1
2
3
"Queue" = "Geometry"
ZWrite Off
ZTest Greater

第一个 Pass 渲染状态设置完,就直接考虑画模型边缘就行了,可以用最简单的 N dot V 来实现看一下效果。

透视

感觉视线部分和后面的模型重叠了,那么最终应该给个颜色强度值改下。
暂时先这样,美化工作和其他的效果有时间再整整看。

参考链接