[Shader]渲染Image,ZWrite Off ZTest Always的理解

通過(guò)這篇的學(xué)習(xí),對(duì)ZTest,ZWrite有了更深層次的理解。

新建兩個(gè)shader,一個(gè)為ImageEffectShader,一個(gè)為UnlitShader,都是頂點(diǎn)/片元著色器,其中一個(gè)區(qū)別為ImageEffectShader有如下設(shè)置:

Cull Off ZWrite Off ZTest Always

我們關(guān)注的就是ZWrite設(shè)置為Off,表示不需要深度緩存,ZTest設(shè)置為Always,表示深度測(cè)試總是通過(guò),按照我的理解,使用該shader的物體都會(huì)一直繪制再最前面,下面來(lái)測(cè)試一下。

  • 深度相同,RenderQueue=2000,ImageEffectShader對(duì)應(yīng)的cube沒(méi)有顯示


    image.png
  • ImageEffectShader對(duì)應(yīng)shader深度設(shè)置更大,RenderQueue=2000,部分顯示


    image.png
  • 深度相同,ImageEffectShader對(duì)應(yīng)的物體RenderQueue=2000+1,部分顯示


    image.png

通過(guò)FrameDebugger發(fā)現(xiàn),只要ImageEffectShader對(duì)應(yīng)的物體后渲染,就會(huì)顯示部分,這里說(shuō)明ZTest起作用了。


image.png

但是為什么只會(huì)顯示和另一個(gè)Cube重疊的部分,F(xiàn)rameDebugger中也很明顯的,SkyBox在其后進(jìn)行的渲染,ZWrite沒(méi)有的部分,會(huì)直接渲染天空盒顏色(天空盒混合模式為one zero)。

所以這也是為什么ZWrite關(guān)閉適用于有RenderQueue在transparent的圖像。

最后將ImageEffectShader對(duì)應(yīng)的物體RenderQueue設(shè)置到transparent,并設(shè)置混合模式。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容