Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Shader "Custom/ColorMask3LayerMetal_AlphaTest" {
- Properties
- {
- _Color ("Color", Color) = (1,1,1,1)
- _Color_2 ("Color_2", Color) = (1,1,1,1)
- _Color_3 ("Color_3", Color) = (1,1,1,1)
- _MainTex ("Texture", 2D) = "white" {}
- _MaskTex ("MaskTexture", 2D) = "white" {}
- _MaskColor("MaskColor", Color) = (1,0,0,1)
- _MaskStrength("Mask Strength", Range(0.0, 1.0)) = 1
- _BumpMap ("Bumpmap", 2D) = "bump" {}
- _MetalGlossMap("Metallic Texture", 2D) = "white" {}
- _SpecColor("SpecColor", Color) = (1,1,1,1)
- _SpecColor_3 ("SpecColor_3", Color) = (1,1,1,1)
- _OcclusionStrength("Occlusion Strength", Range(0.0, 1.0)) = 1
- _OcclusionMap("Occlusion Map", 2D) = "white" {}
- _Metallic ("Metallic", Range(0,1)) = 1
- _Metallic_2 ("Metallic 2", Range(0,1)) = 1
- _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5
- _Smoothness_2("Smoothness_2", Range(0.0, 1.0)) = 0.5
- _EmissionColor("Emission Color", Color) = (0,0,0)
- _EmissionMap("Emission", 2D) = "black" {}
- _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
- _DetailBump ("Detail Bumpmap", 2D) = "bump" {}
- _DetailBumpStrength("Detail Bumpmap Strength", Range(0.0,1.0)) = 0.0
- _DetailBumpScale ("Detail Bumpmap Scale", Int) = 1
- _DetailMask ("Detail Mask", 2D) = "white" {}
- }
- SubShader {
- Tags {"Queue" = "AlphaTest" "RenderType"="TransparentCutout" }
- LOD 200
- CGPROGRAM
- #include "UnityPBSLighting.cginc"
- // Physically based Standard lighting model, and enable shadows on all light types
- #pragma surface surf Standard fullforwardshadows alphatest:_Cutoff addshadow
- // Use shader model 3.0 target, to get nicer looking lighting
- #pragma target 3.0
- sampler2D _MainTex, _MaskTex, _BumpMap, _MetalGlossMap, _OcclusionMap, _EmissionMap, _DetailBump, _DetailMask;
- fixed4 _Color, _Color_2, _Color_3;
- fixed4 _SpecColor_3;
- fixed4 _MaskColor;
- half3 _EmissionColor;
- half _Metallic, _Metallic_2;
- half _Smoothness, _Smoothness_2;
- half _OcclusionStrength;
- half _MaskStrength;
- int _DetailBumpScale;
- half _DetailBumpStrength;
- //float4 mask;
- struct Input {
- float2 uv_MainTex;
- float2 uv_MaskTex;
- float2 uv_BumpMap;
- float2 uv_EmissionMap;
- float2 uv_DetailBump;
- };
- void surf (Input IN, inout SurfaceOutputStandard o) {
- // Albedo comes from a texture tinted by colo
- float4 c = tex2D (_MainTex, IN.uv_MainTex);
- float4 mask = tex2D (_MaskTex, IN.uv_MaskTex);
- float cmask = min(1.0 ,mask.r + mask.g + mask.b);
- float4 n = tex2D (_BumpMap, IN.uv_BumpMap);
- float4 sp = tex2D (_MetalGlossMap, IN.uv_MainTex);
- float oc = tex2D(_OcclusionMap, IN.uv_MainTex).rgb;
- float em = tex2D(_EmissionMap, IN.uv_EmissionMap).r;
- float4 detailn = tex2D (_DetailBump, IN.uv_DetailBump * _DetailBumpScale);
- float4 detailmask = tex2D(_DetailMask, IN.uv_DetailBump);
- half3 normalTangent = UnpackNormal(n);
- half3 detailNormalTangent = UnpackScaleNormal(detailn, _DetailBumpStrength);
- normalTangent = lerp(normalTangent, BlendNormals(normalTangent, detailNormalTangent), detailmask.r);
- mask = lerp(float4(0,0,0,0), mask * _MaskColor, _MaskStrength);
- c.rgb = c.rgb * (1 - cmask) * _Color_2 + (c * _Color * mask.r) + (c * _SpecColor.rgb * mask.g) + (c * _Color_3 * mask.b);
- //sp.rgb = sp.rgb * _Metallic;
- o.Albedo = c.rgb;
- o.Normal = normalTangent;
- //o.Metallic = sp.rgb;
- o.Metallic = clamp(sp.rgb * (1 - cmask) * _Metallic_2 + (sp.rgb * _Metallic * mask.r) + (sp.rgb * _SpecColor_3.g * mask.g) + (sp.rgb * _SpecColor_3.r * mask.b),0,1);
- o.Smoothness = clamp(sp.a * (1 - cmask) * _Smoothness_2 + ((sp.a * _Smoothness) * mask.r) + ((sp.a * _SpecColor_3.b) * mask.g) + ((sp.a * _SpecColor_3.a) * mask.b),0,1);
- o.Occlusion = lerp(float4(1,1,1,1), oc, _OcclusionStrength).rgba;
- o.Emission = em * _EmissionColor;
- o.Alpha = c.a;
- }
- ENDCG
- }
- FallBack "Transparent/Cutout/Diffuse"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement