交界高光+法线扭曲做一堵透明的墙,用作划分“战场范围”。
Shader Graph
分两部分完成,一是噪声图用作法线扭曲并滚动,二是深度比对把交界处识别出来。
相比起以前做的扭曲效果,这次直接用Normal From Height节点生成高度图用于法线扭曲。
交界处检测
- 关闭zwrite,在Shader Graph中把master node设为transparent时即包含了此操作
- 通过ScreenPosition在raw模式下获取到w分量,此时的w相当于clip空间下该顶点的z值,选用raw模式是因为此时的w分量没做归一化,详见Screen Position Node说明
- 由于关闭了zwrite,所以从Scene Depth Node中取出场景深度图的时候是不包含自己的z值的,此时把ScreenPos.w(即Screen Position的RGBA中的A channel)当做深度,在同一UV取样下,与场景深度图的点作差,若差值足够小,说明顶点在物体交界处
- 差值太大的点说明已远离了交界处,用Step Node把它们统统过滤出来
- 过滤结果是有用的点全是0,无用的点全是1,于是要用OneMinus做反向,把StepNode的In和Edge参数调转过来,即省略了OneMinus
参考资料