Advertisement
dnnkeeper

Standard3ColorMaskExtended

Mar 27th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None | 0 0
  1. Shader "Custom/Standard3ColorMask" {
  2.     Properties {
  3.         _Mask ("mask (RGBA)", 2D) = "black" {}
  4.  
  5.         _ColorR ("ColorR", Color) = (1,1,1,1)
  6.         _MainTex ("AlbedoR (RGB)", 2D) = "white" {}
  7.         _SpecR ("SpecR (RGB)", 2D) = "black" {}
  8.         _NormalR ("NormalR", 2D) = "bump" {}
  9.         _EmissionR ("EmissionR (RGB)", 2D) = "black" {}
  10.  
  11.         _ColorG ("ColorG", Color) = (1,1,1,1)
  12.         _MainTexG ("AlbedoG (RGB)", 2D) = "white" {}
  13.         _SpecG ("SpecG (RGB)", 2D) = "black" {}
  14.         _NormalG ("NormalG", 2D) = "bump" {}
  15.         _EmissionG ("EmissionG (RGB)", 2D) = "black" {}
  16.  
  17.         _ColorB ("ColorB", Color) = (1,1,1,1)
  18.         _MainTexB ("AlbedoB (RGB)", 2D) = "white" {}
  19.         _SpecB ("SpecB (RGB)", 2D) = "black" {}
  20.         _NormalB ("NormalB", 2D) = "bump" {}
  21.         _EmissionB ("EmissionB (RGB)", 2D) = "black" {}
  22.  
  23.         [HDR]
  24.         _EmissionColor("EmissionColor", Color) = (0,0,0)
  25.     }
  26.     SubShader {
  27.         Tags { "RenderType"="Opaque" }
  28.         LOD 200
  29.        
  30.         CGPROGRAM
  31.         // Physically based Standard lighting model, and enable shadows on all light types
  32.         #pragma surface surf StandardSpecular fullforwardshadows
  33.  
  34.         // Use shader model 3.0 target, to get nicer looking lighting
  35.         #pragma target 3.0
  36.  
  37.         sampler2D _MainTex,_MainTexG,_MainTexB,_Mask;
  38.         sampler2D _NormalR,_NormalG,_NormalB;
  39.         sampler2D _SpecR,_SpecG,_SpecB;
  40.         sampler2D _EmissionR,_EmissionG,_EmissionB;
  41.         half4 _EmissionColor;
  42.  
  43.         struct Input {
  44.             float2 uv_MainTex;
  45.             float2 uv_MainTexG;
  46.             float2 uv_MainTexB;
  47.         };
  48.  
  49.         fixed4 _ColorR,_ColorG,_ColorB;
  50.  
  51.         void surf (Input IN, inout SurfaceOutputStandardSpecular o) {
  52.  
  53.             fixed4 mask = tex2D (_Mask, IN.uv_MainTex);
  54.             // Albedo comes from a texture tinted by color
  55.             fixed4 c = (tex2D (_MainTex, IN.uv_MainTex) * mask.r + tex2D (_MainTexG, IN.uv_MainTexG) * mask.g + tex2D (_MainTexB, IN.uv_MainTexB) * mask.b) * ( _ColorR * mask.r + _ColorG * mask.g + _ColorB * mask.b) ;
  56.  
  57.             o.Albedo = c.rgb;
  58.  
  59.             o.Normal = UnpackNormal ( tex2D (_NormalR, IN.uv_MainTex) * mask.r + tex2D (_NormalG, IN.uv_MainTexG) * mask.g + tex2D (_NormalB, IN.uv_MainTexB) * mask.b );
  60.  
  61.             fixed4 spec = tex2D (_SpecR, IN.uv_MainTex) * mask.r + tex2D (_SpecG, IN.uv_MainTexG) * mask.g + tex2D (_SpecB, IN.uv_MainTexB) * mask.b;
  62.             o.Specular = spec.rgb;
  63.             o.Smoothness = spec.a;
  64.  
  65.             o.Emission = _EmissionColor * ( tex2D (_EmissionR, IN.uv_MainTex) * mask.r + tex2D (_EmissionG, IN.uv_MainTexG) * mask.g + tex2D (_EmissionB, IN.uv_MainTexB) * mask.b );
  66.  
  67.             o.Alpha = c.a;
  68.         }
  69.         ENDCG
  70.     }
  71.     FallBack "Diffuse"
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement