zoukankan      html  css  js  c++  java
  • [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虽然不写入颜色,但是默认是开启深度写入的,因此重叠部分的像素还是会被舍弃掉的

  • 相关阅读:
    计算机网络第一章_20210512
    bootloader_华清远见
    C#3.17
    linux--cd命令
    国内的开源网站
    安装linux
    如何自我介绍
    课堂破冰游戏“猜猜他是谁”
    办公软件---word
    计算机网络--技能训练
  • 原文地址:https://www.cnblogs.com/lyh916/p/10549623.html
Copyright © 2011-2022 走看看