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"
}


unity shader案例分析(一)_第1张图片

你可能感兴趣的:(unity shader案例分析(一))