渲染設定系列5 Blend

2021-08-18 14:14:57 字數 1253 閱讀 5295

打回重寫

混合模式 ——

決定如何將計算結果(片元)輸出到幀緩衝。一般對計算產生的顏色、alpha來和其他東西進行混合

常用來繪製透明、半透明、鏤空物體

源因子、目標因子

混合模式操作指令

說明blend off

關閉混合(預設情況?是不是這個?)

blend 源因子 目標因子

計算產生的顏色和源因子相乘,然後兩個顏色相加

blend 源因子 目標因子,源因子a 目標因子a

源因子和目標因子用於混合顏色值;

源因子a和目標因子a用於混合alpha值

blendop 操作命令

不是將加入的顏色混合在一起,而是對它們做其他操作。

主要命令有 min、max、sub(求差)、revsub(求反差)

猜測 ——

源顏色,應該是說計算得到的顏色值,還沒存到幀緩衝區

目標顏色,應該是說幀緩衝區中的,片元的顏色值

源/目標混合因子

說明one

值為1,用它可以使源顏色、目標顏色完全顯示

zero

值為0,用它可以刪除源顏色、目標顏色

srccolor

這個階段的值乘以源顏色值

srcalpha

dstcolor

這個階段的值乘以幀快取源顏色值

dstalpha

oneminussrccolor

這個階段的值乘以(1 - 源顏色的值)

oneminussrcalpha

oneminusdstcolor

這個階段的值乘以(1 - 目標顏色的值)

oneminusdstalpha 例子


//使物體的顏色乘以它的alpha值,然後再和緩衝區目標顏色的值相混合,達到透明效果

乙個球網,遮擋住後邊的立方體。(大致上應該可以這麼理解)

立方體因其 queue 是 geometry,先進行渲染,幀緩衝區中有它的顏色值,

然後才渲染 queue 是 transparent 的球網,球網是乙個平面進行貼圖,其中一些區域是 alpha = 0,所以要將其與幀緩衝中的顏色值進行混合(避免直接覆蓋了它後邊的物體)。

另外,如果不用混合,而是用 alphatest,那麼估計會是直接將整個球網寫入幀緩衝,所以見不到這個立方體。。。估計是這樣的。。。

渲染設定系列1 LOD

subshader 指定的 lod 數值,如果 lod 大於 shader 類的 maximumlod 則不能使用這個 subshader來渲染。所以這個 lod 設定,是和指令碼共同使用的。shader 類 api頁面 unity 內建的著色器都有 lod 分級 其實不用理這個 lod分級 對應值...

渲染設定系列3 ZTest ZWrite

深度寫開關 zwrite,控制是否將來自物件的片元深度值 z 寫入深度緩衝,預設開啟。如果繪製不透明物體,設定為 on 預設 如果繪製半透明物體,設定為 off 半透明物體,它需要進行深度測試,然後進行alpha混合,但是不必對深度緩衝進行寫操作,否則半透明物體後邊的不透明物體看上去就是是被半透明物...

渲染設定系列4 AlphaTest

alphatest alpha 測試,是阻止片元被寫到螢幕上的最後機會。在最終渲染出的顏色被計算出來之後,可以通過將顏色的透明度,和乙個固定值進行比較。如果該顏色 的透明度 alpha,滿足條件,則通過測試,繪製此片元 否則丟棄此片元,不進行繪製。一般用的時候也會需要一張帶 alpha通道的 紋理貼...