首先看一下最终实现的效果:
遮挡高亮是一种游戏很常见的效果,在被其他物体遮挡了之后,还能显示出角色的位置,还可以用来标记墙后面敌人的位置。
我们来解析一下这个效果,首先我们需要一个单独的Pass来处理被遮挡的效果,这个Pass核心要点就是使用ZTest Greater,默认的ZTest 是LEqual(小于等于)则写入深度缓存,现在则变成了离的远的才会写入,就可以显示被遮挡的物体了。然后另一个Pass用来直接渲染我们的物体,可以为他加上光照等等的效果,我们下面来实现这个效果。
1 Setup
首先我们简单设置一下场景,新建shader和材质,新建一个胶囊体和一个立方体,把胶囊体插入到立方体的内部,有这么一个遮挡关系就行了。
2 Shader
首先我们将原始的Pass复制一次,还需要注意Pass的顺序,第一个Pass才是遮挡的效果
首先新建一个变量来控制遮挡的颜色
_OcclusionColor ("OcclusionColor", Color) = (1, 1, 0, 0)