Surface Shader 筆記 2. Shader Properties

建立屬性 Shader從 Inspector獲取屬性的方法,在Properties中建立 Properties { 變量名 ( “顯示名”, 輸入類型 ) = 初始化 }

建立一個有color picker的屬性,初始值白色 _myColor (“Example Color”, Color) = (1,1,1,1)

有Slider的數值屬性,初始值 1 _myRange (“Example Range”, Range(0,5)) = 1

Texture屬性,顯示圖像的Texture框,初始值為空白,在未分配 Texture時使用顏色 “white” _myTex (“Example Texture”, 2D) = “white” { } 註: 未分配 Texture時的顏色,也會輸入到材質的非 Albedo通道,如透明材質的 Alpha (0~1)

Cube屬性,像是Skybox,初始值空白 _myCube (“Example Cube” , Cube) = "" { }

一般的float數值屬性,初始值 0.5 _myFloat (“Example Float”, Float) = 0.5

向量屬性,初始值 (0.5, 1, 1, 1) _myVector (“Example Vector”, Vector ) = (0.5,1,1,1)

注意句尾不需要 ; float尾不須 f

定義屬性 建立屬性後必須經過定義變量才能使用 SubShader { CGPROGRAM

    fixed4 _myColor;
    half _myRange;
    sampler2D _myTex;
    samplerCUBE _myCube;
    float _myFloat;
    float4 _myVector;

ENDCG }

特殊屬性

高光的顏色 _SpecColor (“Colour”,Color) = (1,1,1,1) _SpecColor 已經在 Unity建構文件 ‘include’中被定義了,不需再多定義一次,會出error