日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Unity ZTest深度测试 & ZWrite深度写入

發布時間:2024/1/4 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 Unity ZTest深度测试 & ZWrite深度写入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shader深度渲染隊列Queue預定義值:Background(1000)、Geometry(2000)、AlphaTest(2450)、Transparent(3000)、Overlay(4000)。

渲染優先順序: Queue值越小越先渲染,后渲染的物體會覆蓋先渲染的物體。

測試:我想讓遠處的紅色方塊遮擋住近處的藍色方塊,即讓藍色的先渲染,紅色的后渲染,我將紅塊的Queue設置為Transparent ,藍塊的Queue值設置為Transparent-1,按照上面的渲染優先順序,值越小越先渲染,按道理紅塊后渲染應該覆蓋在藍塊前面對吧,結果卻不是這樣的,藍塊依舊在紅塊前面。

這是為什么呢?原因在下面兩條指令,shader代碼中雖然沒有定義,但是默認存在的。

ZTest:深度測試。(LEqua小于等于、Less小于、Greater大于、Equal等于 , NotEqual不等于)

ZWrite:深度寫入。(On打開、Off關閉)。

系統中存在一個顏色緩沖區和一個深度緩沖區,分別存儲顏色值和深度值,來決定畫面上應該顯示什么顏色。深度值是物體在世界空間中距離攝像機的遠近,距離越近深度值越小,反之越大。

上面的測試中,藍色方塊比紅色方塊近,那么藍色方塊的深度值就比紅色方塊小。假設藍塊的深度值為1,紅塊深度值為2,例子中藍塊優先渲染,系統就先將藍色值存入顏色緩沖區,將深度值1存入了深度緩沖區。

接下來渲染紅塊,系統會將紅塊的深度值和緩沖區的深度值對比(這個過程就是深度測試),由于ZTest的深度測試方式是Lequal小于等于,即深度值小于1才會通過測試,如果通過了測試,且ZWrite處于On狀態,

該顏色的深度值就會替換深度緩沖區中的值,顏色值也會替換顏色緩沖區中的值,從而顯示新的顏色。很顯然,2 > 1,深度測試并不能通過,紅色也就不能顯示在藍色的前面。

如果我們硬要遠處的紅塊遮擋近處的藍塊,很顯然,我們應該關閉深度寫入ZWrite或者關閉深入測試ZTest,能得到我們想要的結果,如下:

總結

以上是生活随笔為你收集整理的Unity ZTest深度测试 & ZWrite深度写入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。