From c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 19 Apr 2020 17:19:32 -0400 Subject: Inital commit --- .../Shaders/TMP_SDF Internal SSD.shader | 126 +++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Library/PackageCache/com.unity.textmeshpro@2.0.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader (limited to 'Library/PackageCache/com.unity.textmeshpro@2.0.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader') diff --git a/Library/PackageCache/com.unity.textmeshpro@2.0.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader new file mode 100644 index 0000000..d053216 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader @@ -0,0 +1,126 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "Hidden/TextMeshPro/Internal/Distance Field SSD" { + +Properties { + _FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0.02 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "ForceSupported" = "True" + } + + Lighting Off + Blend One OneMinusSrcAlpha + Cull Off + ZWrite Off + ZTest Always + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + + #include "UnityCG.cginc" + #include "TMP_Properties.cginc" + + sampler2D _GUIClipTexture; + uniform float4x4 unity_GUIClipTextureMatrix; + + struct vertex_t { + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 clipUV : TEXCOORD1; + }; + + + pixel_t VertShader(vertex_t input) + { + // Does not handle simulated bold correctly. + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float opacity = input.color.a; + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + // Generate UV for the Clip Texture + float3 eyePos = UnityObjectToViewPos(input.vertex); + float2 clipUV = mul(unity_GUIClipTextureMatrix, float4(eyePos.xy, 0, 1.0)); + + // Structure for pixel shader + pixel_t output = { + vPosition, + faceColor, + float2(input.texcoord0.x, input.texcoord0.y), + clipUV, + }; + + return output; + } + + half transition(half2 range, half distance) + { + return smoothstep(range.x, range.y, distance); + } + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + half distanceSample = tex2D(_MainTex, input.texcoord0).a; + half smoothing = fwidth(distanceSample) * (1 - _Sharpness) + _OutlineSoftness; + half contour = 0.5 - _FaceDilate * 0.5; + half2 edgeRange = half2(contour - smoothing, contour + smoothing); + + half4 c = input.faceColor; + + half edgeTransition = transition(edgeRange, distanceSample); + c *= edgeTransition; + + c *= tex2D(_GUIClipTexture, input.clipUV).a; + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} -- cgit v1.2.3