unity3d shader 代碼控制開關(guān)屬性

直接上代碼shader

Shader "ShaerTest" {
Properties {
    _Color("Tint",Color ) = (0.5,0.5,0.5,0.5)
    _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
    [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("Src Blend Mode", Float) = 1  //聲明外部控制開關(guān)
    [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("Dst Blend Mode", Float) = 1  //聲明外部控制開關(guān)
    [Enum(Off, 0, On, 1)] _ZWrite ("ZWrite", Float) = 0  //聲明外部控制開關(guān)
    [Enum(UnityEngine.Rendering.CompareFunction)] _ZTest ("ZTest", Float) = 0  //聲明外部控制開關(guān)
    [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull Mode", Float) = 1  //聲明外部控制開關(guān)
}

SubShader {
    Tags {"Queue"="Geometry" "RenderType"="Opaque"}
    LOD 200
    Blend [_SrcBlend] [_DstBlend] //獲取值應(yīng)用
    ZWrite [_ZWrite] //獲取值應(yīng)用
    ZTest [_ZTest] //獲取值應(yīng)用
    Cull [_Cull] //獲取值應(yīng)用

    Pass {  
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata_t {
                float4 vertex : POSITION;
                float2 texcoord : TEXCOORD0;
                fixed4 color : COLOR;
            };

            struct v2f {
                float4 vertex : SV_POSITION;
                half2 texcoord : TEXCOORD0;
                fixed4 color : TEXCOORD1;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed4 _Color;

            v2f vert (appdata_t v)
            {
                v2f o;
                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                o.color = v.color;
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.texcoord)*_Color * i.color;
                return col;
            }
        ENDCG
    }
}

}





   [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull Mode", Float) = 1
   [Enum(Off,0,On,1)] _ZWrite ("ZWrite", Float) = 1
   [Enum(Less,0, Greater,1, LEqual,2, GEqual,3, Equal,4, NotEqual,5, Always,6)] _ZTest ("ZTest", Float) = 1
   [Enum(UnityEngine.Rendering.BlendMode)] _SourceBlend ("Source Blend Mode", Float) = 2        
   [Enum(UnityEngine.Rendering.BlendMode)] _DestBlend ("Dest Blend Mode", Float) = 2

C#代碼 下面舉例一個(gè) 其他的你懂的

gameObject.GetComponent<MeshRenderer>().sharedMaterial.SetInt("_ZWrite", 1);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容