打回重寫
混合模式 ——
決定如何將計算結果(片元)輸出到幀緩衝。一般對計算產生的顏色、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通道的 紋理貼...