一、创建Shader
Shader "Custom/BlinnPhong" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _MainTint ("Diffuse Tint", Color) = (1,1,1,1)//色调 _SpecularColor ("Specular Color", Color) = (1,1,1,1)//高光颜色 _SpecPower ("Specular Power", Range(0.1, 60)) = 3//高光强度 } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM //使用自定义光照模型 #pragma surface surf CustomBlinnPhong sampler2D _MainTex; float4 _MainTint; float4 _SpecularColor; float _SpecPower; //创建自定义光照模型BlinnPhong inline fixed4 LightingCustomBlinnPhong (SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten) { float3 halfVector = normalize(lightDir + viewDir); float diff = max(0, dot(s.Normal, lightDir)); float nh = max(0, dot(s.Normal, halfVector)); float spec = pow(nh, _SpecPower) * _SpecularColor; float4 c; c.rgb = (s.Albedo * _LightColor0.rgb * diff) + (_LightColor0.rgb + _SpecularColor.rgb * spec) * (atten * 2); c.a = s.Alpha; return c; } struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex) ; o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
二、创建Shere、Material
三、效果