gutterball-3/Gutterball 3/Library/PackageCache/com.unity.textmeshpro@1.4.1/Editor Resources/Shaders/TMP_SDF Internal SSD.shader
SkunkStudios 1c033119df New Version 1.42
Moving cam replay.
Fixed the bugs.

New Version 1.42

Moving cam replay.
Fixed the bugs.

New Version 1.42

Moving cam replay,
Fixed the bugs.
2025-01-29 16:19:11 +07:00

126 lines
3 KiB
Text

// 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"
}