[UnityShader基礎]04.ColorMask


語法如下:

ColorMask RGB | A | 0 | 其他R,G,B,A的組合

ColorMask R,意思是輸出顏色中只有R通道會被寫入

ColorMask 0,意思是不會輸出任何顏色

默認值為RGBA,即四個通道都寫入

 

測試:

1.ColorMask R

 1 Shader "Custom/ColorMask"
 2 {
 3     Properties
 4     {
 5     }
 6     SubShader
 7     {
 8         Tags { "RenderType"="Opaque" }
 9 
10         Pass
11         {
12             ColorMask R
13 
14             CGPROGRAM
15             #pragma vertex vert
16             #pragma fragment frag
17 
18             #include "UnityCG.cginc"
19 
20             struct appdata
21             {
22                 float4 vertex : POSITION;
23             };
24 
25             struct v2f
26             {
27                 float4 vertex : SV_POSITION;
28             };
29 
30             v2f vert (appdata v)
31             {
32                 v2f o;
33                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
34                 return o;
35             }
36             
37             fixed4 frag (v2f i) : SV_Target
38             {
39                 return fixed4(1, 1, 1, 1);
40             }
41             ENDCG
42         }
43     }
44 }

 

效果如下,可以看出輸出顏色並不是紅色。因此推出,“只有R通道會被寫入”並不是說寫入的顏色就是(R,0,0),那么G,B這兩個通道的值是怎么取的呢?經試驗取的是攝像機的Background值。

 

2.ColorMask 0

如下兩圖,第一個是ColorMask RBGA,第二個是ColorMask 0。ColorMask 0雖然不寫入顏色,但是默認是開啟深度寫入的,因此重疊部分的像素還是會被舍棄掉的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM