Shader "{% block shader_name %}ConformalDecals/Decal/Standard{% endblock %}" { Properties { // Shader-specific properties //{% block properties %} [Header(Decal)] _Decal("Decal Texture", 2D) = "gray" {} [Toggle(DECAL_SDF_ALPHA)] _Decal_SDF_Alpha ("SDF in Alpha", int) = 0 [Header(Normal)] [Toggle(DECAL_BASE_NORMAL)] _BaseNormal ("Use Base Normal", int) = 0 [Toggle(DECAL_BUMPMAP)] _Decal_BumpMap ("Has BumpMap", int) = 0 _BumpMap("Bump Map", 2D) = "bump" {} _EdgeWearStrength("Edge Wear Strength", Range(0,500)) = 100 _EdgeWearOffset("Edge Wear Offset", Range(0,1)) = 0.1 [Header(Specularity)] [Toggle(DECAL_SPECMAP)] _Decal_SpecMap ("Has SpecMap", int) = 0 _SpecMap ("Specular Map)", 2D) = "black" {} _SpecColor ("_SpecColor", Color) = (0.25, 0.25, 0.25, 1) _Shininess ("Shininess", Range (0.03, 10)) = 0.3 [Header(Emissive)] [Toggle(DECAL_EMISSIVE)] _Decal_Emissive ("Has Emissive", int) = 0 _Emissive("_Emissive", 2D) = "black" {} _EmissiveColor("_EmissiveColor", Color) = (0,0,0,1) //{% endblock %} // Common decal properties _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 _DecalOpacity("Opacity", Range(0,1) ) = 1 _Background("Background Color", Color) = (0.9,0.9,0.9,0.7) [Enum(UnityEngine.Rendering.CullMode)] _Cull ("Cull", int) = 2 [Toggle] _ZWrite ("ZWrite", Float) = 1.0 [Toggle(DECAL_PREVIEW)] _Preview ("Preview", int) = 0 [Header(Effects)] [PerRendererData]_Opacity("_Opacity", Range(0,1) ) = 1 [PerRendererData]_Color("_Color", Color) = (1,1,1,1) [PerRendererData]_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1 [PerRendererData]_RimColor("_RimColor", Color) = (0,0,0,0) [PerRendererData]_UnderwaterFogFactor ("Underwater Fog Factor", Range(0,1)) = 0 } SubShader { Tags { "Queue" = "Geometry+100" "IgnoreProjector" = "true" "DisableBatching" = "true" } Cull [_Cull] Pass { Name "FORWARD" Tags { "LightMode" = "ForwardBase" } ZWrite [_ZWrite] ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag_forward #pragma multi_compile DIRECTIONAL #pragma multi_compile_local __ DECAL_PREVIEW #pragma multi_compile_local __ DECAL_BASE_NORMAL DECAL_BUMPMAP //{% block pragmas %} #pragma multi_compile_local __ DECAL_SPECMAP #pragma multi_compile_local __ DECAL_EMISSIVE #pragma multi_compile_local __ DECAL_SDF_ALPHA //{% endblock %} //{% block body %} #include "StandardDecal.cginc" //{% endblock %} ENDCG } Pass { Name "FORWARD" Tags { "LightMode" = "ForwardAdd" } ZWrite Off ZTest LEqual Blend SrcAlpha One Offset -1, -1 CGPROGRAM #pragma vertex vert #pragma fragment frag_forward #pragma multi_compile DIRECTIONAL SPOT POINT #pragma multi_compile_local __ DECAL_PREVIEW #pragma multi_compile_local __ DECAL_BASE_NORMAL DECAL_BUMPMAP //{{ self.pragmas() }} //{{ self.body() }} ENDCG } Pass { Name "DEFERRED_PREPASS" Tags { "LightMode" = "Deferred" } ZWrite Off ZTest LEqual Offset -1, -1 Blend 1 Zero OneMinusSrcColor, Zero OneMinusSrcAlpha Stencil { Ref 1 Comp Equal Pass Keep } CGPROGRAM #pragma vertex vert #pragma fragment frag_deferred_prepass #pragma target 3.0 #pragma multi_compile_local __ DECAL_PREVIEW #pragma multi_compile_local __ DECAL_BASE_NORMAL //{{ self.pragmas() }} //{% block prepass_skip_variants %} #pragma skip_variants DECAL_SPECMAP DECAL_EMISSIVE //{% endblock %} #define DECAL_PREPASS //{{ self.body() }} ENDCG } Pass { Name "DEFERRED" Tags { "LightMode" = "Deferred" } ZWrite Off ZTest LEqual Offset -1, -1 Blend 0 SrcAlpha OneMinusSrcAlpha, Zero One Blend 1 One One Blend 2 SrcAlpha OneMinusSrcAlpha, Zero One Blend 3 SrcAlpha OneMinusSrcAlpha, Zero One Stencil { Ref 1 Comp Equal Pass Keep } CGPROGRAM #pragma vertex vert #pragma fragment frag_deferred #pragma target 3.0 #pragma multi_compile __ UNITY_HDR_ON #pragma multi_compile_local __ DECAL_PREVIEW #pragma multi_compile_local __ DECAL_BASE_NORMAL DECAL_BUMPMAP //{{ self.pragmas() }} //{{ self.body() }} ENDCG } } }