[Shader]渲染Image,ZWrite Off ZTest

作者: 阿飞咯 | 来源:发表于2018-06-19 17:25 被阅读19次

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

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

    Cull Off ZWrite Off ZTest Always
    

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

    • 深度相同,RenderQueue=2000,ImageEffectShader对应的cube没有显示


      image.png
    • ImageEffectShader对应shader深度设置更大,RenderQueue=2000,部分显示


      image.png
    • 深度相同,ImageEffectShader对应的物体RenderQueue=2000+1,部分显示


      image.png

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


    image.png

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

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

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


    image.png

    相关文章

      网友评论

        本文标题:[Shader]渲染Image,ZWrite Off ZTest

        本文链接:https://www.haomeiwen.com/subject/zxfzeftx.html