Shader "Custom/ActorShader" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _FaceTex ("Face", 2D) = "white" {} _HairColor ("Hair Color", Color) = (1,1,1,1) _HairTex ("Hair", 2D) = "white" {} _JacketColor ("Jacket Color", Color) = (1,1,1,1) _JacketTex ("Jacket", 2D) = "white" {} _PantsColor ("Pants Color", Color) = (1,1,1,1) _PantsTex ("Pants", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _FaceTex; fixed4 _Color; sampler2D _HairTex; fixed4 _HairColor; sampler2D _JacketTex; fixed4 _JacketColor; sampler2D _PantsTex; fixed4 _PantsColor; struct Input { float2 uv_FaceTex; }; void surf (Input IN, inout SurfaceOutput o) { o.Albedo = _Color; fixed4 f = tex2D (_FaceTex, IN.uv_FaceTex); fixed4 h = tex2D (_HairTex, IN.uv_FaceTex)*_HairColor; fixed4 j = tex2D (_JacketTex, IN.uv_FaceTex)*_JacketColor; fixed4 p = tex2D (_PantsTex, IN.uv_FaceTex)*_PantsColor; o.Albedo = o.Albedo*(1-f.a)+f.rgb*f.a; o.Albedo = o.Albedo*(1-h.a)+h.rgb*h.a; o.Albedo = o.Albedo*(1-j.a)+j.rgb*j.a; o.Albedo = o.Albedo*(1-p.a)+p.rgb*p.a; o.Alpha = 1; } ENDCG } FallBack "Diffuse" }