Unity Shader 如何使用屬性


Shader "Custom/UsePropertiesShader"{
    Properties{
        //聲明一個Color 類型的屬性
        _Color("Color Tint",Color)=(1.0,1.0,1.0,1.0)
    }
    SubShader{
        Pass{
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            //在CG代碼中,我們需要定義一個與屬性名稱和類型都匹配的變量
            fixed4 _Color;

            struct a2v{
                float4 vertex:POSITION;
                float3 normal:NORMAL;
                float4 texcoord:TEXCOORD0;
            };

            struct v2f{
                float4 pos:SV_POSITION;
                float3 color:COLOR0;
            };

            v2f vert(a2v v){
                v2f o;
                o.pos=UnityObjectToClipPos(v.vertex);
                o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);
                return o;
            }
            fixed4 frag(v2f i):SV_Target{
                fixed3 c=i.color;
                c*=_Color.rgb;
                return fixed4(c,1.0);
            }
            ENDCG
        }
    }
    Fallback "VertexLit"
}

Shaderlab屬性類型和CG變量類型的匹配關系

ShaderLab屬性類型 CG屬性類型
Color,Vector float4,half4,fixed4
Range,Float float,half,fixed
2D sampler2D
Cube samplerCube
3D sampler3D


免責聲明!

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



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