diff --git a/.gitignore b/.gitignore index 452d783..677d95a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ ProjectSettings/ Temp/ # Autogenerated shaders -Assets/ConformalDecals/Shaders/Generated/*.shader +Assets/ConformalDecals/Shaders/Decal/*.shader # Unity Assetbundle Manifest Files GameData/ConformalDecals/Resources/Resources diff --git a/Assets/ConformalDecals/Shaders/Generated/StandardDecal.cginc b/Assets/ConformalDecals/Shaders/Decal/StandardDecal.cginc similarity index 100% rename from Assets/ConformalDecals/Shaders/Generated/StandardDecal.cginc rename to Assets/ConformalDecals/Shaders/Decal/StandardDecal.cginc diff --git a/Assets/ConformalDecals/Shaders/Generated/StandardDecal.shader.template b/Assets/ConformalDecals/Shaders/Decal/StandardDecal.shader.template similarity index 100% rename from Assets/ConformalDecals/Shaders/Generated/StandardDecal.shader.template rename to Assets/ConformalDecals/Shaders/Decal/StandardDecal.shader.template diff --git a/Assets/ConformalDecals/Shaders/TextDecal.cginc b/Assets/ConformalDecals/Shaders/Decal/TextDecal.cginc similarity index 78% rename from Assets/ConformalDecals/Shaders/TextDecal.cginc rename to Assets/ConformalDecals/Shaders/Decal/TextDecal.cginc index 855de63..2d34f83 100644 --- a/Assets/ConformalDecals/Shaders/TextDecal.cginc +++ b/Assets/ConformalDecals/Shaders/Decal/TextDecal.cginc @@ -1,14 +1,18 @@ +#include "../DecalsCommon.cginc" +#include "../SDF.cginc" + float4 _DecalColor; float4 _OutlineColor; float _OutlineWidth; -void surf(DecalSurfaceInput IN, inout SurfaceOutputStandardSpecular o) { +void surf(DecalSurfaceInput IN, inout SurfaceOutput o) { float4 color = _DecalColor; - float dist = _Cutoff - tex2D(_Decal, IN.uv_decal).r; // text distance o.Specular = 0.4; - o.Occlusion = 1; - + o.Gloss = _Shininess; + + float dist = _Cutoff - tex2D(_Decal, IN.uv_decal).r; // text distance + #ifdef DECAL_OUTLINE // Outline float outlineOffset = _OutlineWidth * 0.25; @@ -30,8 +34,8 @@ void surf(DecalSurfaceInput IN, inout SurfaceOutputStandardSpecular o) { dist = max(dist, BoundsDist(IN.uv, IN.vertex_normal, _DecalNormal)); float ddist = SDFdDist(dist); // distance gradient magnitude - o.Alpha = _DecalOpacity * SDFAA(dist, ddist); - o.Albedo = UnderwaterFog(IN.worldPosition, color).rgb; + o.Albedo = color.rgb; + o.Alpha *= SDFAA(dist, ddist); #ifdef DECAL_BASE_NORMAL float3 normal = IN.normal; @@ -44,9 +48,4 @@ void surf(DecalSurfaceInput IN, inout SurfaceOutputStandardSpecular o) { float4 specular = tex2D(_SpecMap, IN.uv_specmap); o.Specular = specular; #endif - - o.Smoothness = _Shininess; - - half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal)); - o.Emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a; } \ No newline at end of file diff --git a/Assets/ConformalDecals/Shaders/Decal/TextDecal.shader.template b/Assets/ConformalDecals/Shaders/Decal/TextDecal.shader.template new file mode 100644 index 0000000..8dbc70e --- /dev/null +++ b/Assets/ConformalDecals/Shaders/Decal/TextDecal.shader.template @@ -0,0 +1,39 @@ +{% extends "StandardDecal.shader.template" %} +{% block shader_name %}ConformalDecals/Decal/Text{% endblock %} + +{% block properties %} + [Header(Decal)] + [Toggle(DECAL_FILL)] _Fill ("Fill", int) = 0 + _Decal("Decal Texture", 2D) = "gray" {} + _DecalColor("Decal Color", Color) = (1,1,1,1) + + _Weight("Text Weight", Range(0,1)) = 0 + + [Header(Outline)] + [Toggle(DECAL_OUTLINE)] _Outline ("Outline", int) = 0 + _OutlineColor("Outline Color", Color) = (0,0,0,1) + _OutlineWidth("Outline Width", Range(0,1)) = 0.1 + + [Header(Normal)] + [Toggle(DECAL_BASE_NORMAL)] _BaseNormal ("Use Base Normal", 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 +{% endblock %} + +{% block pragmas %} + #pragma multi_compile_local __ DECAL_SPECMAP + #pragma multi_compile_local __ DECAL_OUTLINE + #pragma multi_compile_local __ DECAL_FILL + #pragma skip_variants DECAL_BUMPMAP +{% endblock %} + +{% block body %} + #include "TextDecal.cginc" +{% endblock %} \ No newline at end of file diff --git a/Assets/ConformalDecals/Shaders/TextDecal.shader b/Assets/ConformalDecals/Shaders/TextDecal.shader deleted file mode 100644 index 8ead977..0000000 --- a/Assets/ConformalDecals/Shaders/TextDecal.shader +++ /dev/null @@ -1,174 +0,0 @@ -Shader "ConformalDecals/Decal/Text" -{ - Properties - { - [Header(Decal)] - [Toggle(DECAL_FILL)] _Fill ("Fill", int) = 0 - _Decal("Decal Texture", 2D) = "gray" {} - _DecalColor("Decal Color", Color) = (1,1,1,1) - - _Weight("Text Weight", Range(0,1)) = 0 - - [Header(Outline)] - [Toggle(DECAL_OUTLINE)] _Outline ("Outline", int) = 0 - _OutlineColor("Outline Color", Color) = (0,0,0,1) - _OutlineWidth("Outline Width", Range(0,1)) = 0.1 - - [Header(Normal)] - [Toggle(DECAL_BASE_NORMAL)] _BaseNormal ("Use Base Normal", 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 - - _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 - _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_fwdbase nolightmap nodirlightmap nodynlightmap - #pragma skip_variants SHADOWS_DEPTH SHADOWS_CUBE SHADOWS_SHADOWMASK LIGHTMAP_SHADOW_MIXING POINT_COOKIE - #pragma multi_compile_local __ DECAL_PREVIEW - #pragma multi_compile_local __ DECAL_BASE_NORMAL - #pragma multi_compile_local __ DECAL_SPECMAP - #pragma multi_compile_local __ DECAL_OUTLINE - #pragma multi_compile_local __ DECAL_FILL - - #include "UnityCG.cginc" - #include "DecalsCommon.cginc" - #include "DecalsSurface.cginc" - #include "SDF.cginc" - #include "TextDecal.cginc" - - ENDCG - } - - Pass - { - Name "FORWARD" - Tags { "LightMode" = "ForwardAdd" } - ZWrite Off - ZTest LEqual - Blend One One - Offset -1, -1 - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag_forward - - #pragma multi_compile_fwdadd nolightmap nodirlightmap nodynlightmap - #pragma skip_variants SHADOWS_DEPTH SHADOWS_CUBE SHADOWS_SHADOWMASK LIGHTMAP_SHADOW_MIXING POINT_COOKIE - #pragma multi_compile_local __ DECAL_PREVIEW - #pragma multi_compile_local __ DECAL_BASE_NORMAL - #pragma multi_compile_local __ DECAL_SPECMAP - #pragma multi_compile_local __ DECAL_OUTLINE - #pragma multi_compile_local __ DECAL_FILL - - #include "UnityCG.cginc" - #include "DecalsCommon.cginc" - #include "DecalsSurface.cginc" - #include "SDF.cginc" - #include "TextDecal.cginc" - - ENDCG - } - - Pass - { - Name "DEFERRED_PREPASS" - Tags { "LightMode" = "Deferred" } - ZWrite Off - ZTest LEqual - Offset -1, -1 - Blend 1 Zero OneMinusSrcColor, Zero OneMinusSrcAlpha - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag_deferred_prepass - #pragma target 3.0 - - #pragma multi_compile_local __ DECAL_PREVIEW - #pragma multi_compile_local __ DECAL_SDF_ALPHA - - #include "UnityCG.cginc" - #include "DecalsCommon.cginc" - #include "DecalsSurface.cginc" - #include "SDF.cginc" - #include "TextDecal.cginc" - - 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 8 - Comp Always - Pass Replace - } - - 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 - #pragma multi_compile_local __ DECAL_SPECMAP - #pragma multi_compile_local __ DECAL_EMISSIVE - #pragma multi_compile_local __ DECAL_SDF_ALPHA - - #include "UnityCG.cginc" - #include "DecalsCommon.cginc" - #include "DecalsSurface.cginc" - #include "SDF.cginc" - #include "TextDecal.cginc" - - ENDCG - } - } -} \ No newline at end of file diff --git a/GameData/ConformalDecals/Resources/conformaldecals.shab b/GameData/ConformalDecals/Resources/conformaldecals.shab index 9f7e76d..ff20a82 100644 Binary files a/GameData/ConformalDecals/Resources/conformaldecals.shab and b/GameData/ConformalDecals/Resources/conformaldecals.shab differ