Advertisement
Bagserk

ColorMask3Layer

Jan 4th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.92 KB | None | 0 0
  1. Shader "Custom/ColorMask3Layer" {
  2.     Properties
  3.     {
  4.         _Color ("Color", Color) = (1,1,1,1)
  5.         _Color_2 ("Color_2", Color) = (1,1,1,1)
  6.         _Color_3 ("Color_3", Color) = (1,1,1,1)    
  7.         _MainTex ("Texture", 2D) = "white" {}
  8.         _MaskTex ("MaskTexture", 2D) = "white" {}
  9.         _MaskColor("MaskColor", Color) = (1,0,0,1)
  10.         _MaskStrength("Mask Strength", Range(0.0, 1.0)) = 1
  11.         _BumpMap ("Bumpmap", 2D) = "bump" {}
  12.         _SpecGlossMap("Specular Texture", 2D) = "white" {}
  13.         _SpecColor("SpecColor", Color) = (1,1,1,1)
  14.         _SpecColor_2 ("SpecColor_2", Color) = (1,1,1,1)
  15.         _SpecColor_3 ("SpecColor_3", Color) = (1,1,1,1)
  16.         _OcclusionStrength("Occlusion Strength", Range(0.0, 1.0)) = 1
  17.         _OcclusionMap("Occlusion Map", 2D) = "white" {}
  18.         _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5       
  19.         _Smoothness_2("Smoothness_2", Range(0.0, 1.0)) = 0.5
  20.         _EmissionColor("Emission Color", Color) = (0,0,0)
  21.         _EmissionMap("Emission", 2D) = "black" {}
  22.     }
  23.     SubShader {
  24.         Tags { "RenderType"="Opaque" }
  25.  
  26.         LOD 200
  27.        
  28.         CGPROGRAM
  29.         #include "UnityPBSLighting.cginc"
  30.         // Physically based Standard lighting model, and enable shadows on all light types
  31.         #pragma surface surf StandardSpecular fullforwardshadows
  32.  
  33.         // Use shader model 3.0 target, to get nicer looking lighting
  34.         #pragma target 3.0
  35.  
  36.         sampler2D _MainTex, _MaskTex, _BumpMap, _SpecGlossMap, _OcclusionMap, _EmissionMap;
  37.         fixed4 _Color, _Color_2, _Color_3;
  38.         fixed4 _SpecColor_2, _SpecColor_3; 
  39.         fixed4 _MaskColor;
  40.         half3 _EmissionColor;      
  41.         half _Smoothness, _Smoothness_2;
  42.         half _OcclusionStrength;
  43.         half _MaskStrength;
  44.         //float4 mask;
  45.  
  46.         struct Input {
  47.             float2 uv_MainTex;
  48.             float2 uv_MaskTex;
  49.             float2 uv_BumpMap;
  50.             float2 uv_SpecGlossMap;
  51.             float2 uv_EmissionMap;
  52.             float2 uv_OcclusionMap;
  53.         };
  54.  
  55.  
  56.  
  57.         void surf (Input IN, inout SurfaceOutputStandardSpecular o) {
  58.             // Albedo comes from a texture tinted by colo
  59.             float4 c = tex2D (_MainTex, IN.uv_MainTex);
  60.             float4 mask = tex2D (_MaskTex, IN.uv_MaskTex);         
  61.             float cmask = min(1.0 ,mask.r + mask.g + mask.b);
  62.             float4 n = tex2D (_BumpMap, IN.uv_BumpMap);
  63.             float4 sp = tex2D (_SpecGlossMap, IN.uv_SpecGlossMap);
  64.             float oc = tex2D(_OcclusionMap, IN.uv_MainTex).rgb;
  65.             fixed4 em = tex2D(_EmissionMap, IN.uv_EmissionMap);
  66.            
  67.             mask = lerp(float4(0,0,0,0), mask * _MaskColor, _MaskStrength);
  68.            
  69.             c.rgb = c.rgb * (1 - cmask) + (c * _Color * mask.r) + (c * _Color_2 * mask.g) + (c * _Color_3 * mask.b);
  70.             sp.rgb = sp.rgb * (1 - cmask) + ((sp * _SpecColor) * mask.r) + (sp * _SpecColor_2 * mask.g) + (sp * _SpecColor_3 * mask.b);        
  71.             o.Albedo = c.rgb;          
  72.             o.Normal = UnpackNormal (n);           
  73.             o.Specular = sp.rgb;
  74.             o.Smoothness = (sp.a * (1 - cmask) + ((sp.a * _Smoothness) * mask.r) + ((sp.a * _Smoothness_2) * mask.g) + ((sp.a * _SpecColor_3.a) * mask.b));
  75.             o.Occlusion = lerp(float4(1,1,1,1), oc, _OcclusionStrength).rgba;          
  76.             o.Emission = em.rgb * _EmissionColor;
  77.         }
  78.         ENDCG
  79.     }
  80.     FallBack "Diffuse"
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement