unity shader案例分析(一)

Shader "Custom/test_1" {
	Properties {
		
		_MainTex ("Albedo (RGB)", 2D) = "white" {} //紋理
		_BumpMap("Bumpmap",2D) = "bump"{} //凹凸紋理
		_RimColor("Rim Color",Color) = (0.17,0.36,0.81,0.0) //邊緣顏色
		_RimPower("Rim Power",Range(0.6,9.0)) = 1.0 //邊緣顏色強度

	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		// 
		#pragma surface surf Lambert

		// Use shader model 3.0 target, to get nicer looking lighting
		#pragma target 3.0

		sampler2D _MainTex;//主紋理
		sampler2D _BumpMap;//凹凸紋理
		float4 _RimColor;//邊緣顏色
		float _RimPower;//邊緣顏色強度

		struct Input {
			float2 uv_MainTex;//紋理貼圖
			float2 uv_BumpMap;//法線貼圖
			float3 viewDir;//觀察方向
		};

		void surf (Input IN, inout SurfaceOutputStandard o) {
		    //表面反射顏色爲紋理顏色
		    o.Albedo = tex2D(_MainTex,IN.uv_MainTex).rgb;
		    //表面法線爲凹凸紋理的顏色
		    o.Normal = UnpackNormal(tex2D(_BumpMap,IN.uv_BumpMap));
		    //邊緣顏色
		    half rim = 1.0 - saturate(dot (normalize(IN.viewDir),o.Normal));
		    //邊緣顏色強度
		    o.Emission = _RimColor.rgb * pow(rim,_RimPower);
		}
		ENDCG
	}
	FallBack "Diffuse"
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章