Unity Shader分享Unity干货Unity技术分享

[Shader]渲染Image,ZWrite Off ZTest

2018-06-19  本文已影响19人  阿飞咯

通过这篇的学习,对ZTest,ZWrite有了更深层次的理解。

新建两个shader,一个为ImageEffectShader,一个为UnlitShader,都是顶点/片元着色器,其中一个区别为ImageEffectShader有如下设置:

Cull Off ZWrite Off ZTest Always

我们关注的就是ZWrite设置为Off,表示不需要深度缓存,ZTest设置为Always,表示深度测试总是通过,按照我的理解,使用该shader的物体都会一直绘制再最前面,下面来测试一下。

通过FrameDebugger发现,只要ImageEffectShader对应的物体后渲染,就会显示部分,这里说明ZTest起作用了。


image.png

但是为什么只会显示和另一个Cube重叠的部分,FrameDebugger中也很明显的,SkyBox在其后进行的渲染,ZWrite没有的部分,会直接渲染天空盒颜色(天空盒混合模式为one zero)。

所以这也是为什么ZWrite关闭适用于有RenderQueue在transparent的图像。

最后将ImageEffectShader对应的物体RenderQueue设置到transparent,并设置混合模式。


image.png
上一篇下一篇

猜你喜欢

热点阅读