added a way for the player to die and respawn, reconfigured test level
ALSO installed TMP but it has been giving me ISSUES
This commit is contained in:
		
							
								
								
									
										143
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										143
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
Shader "TextMeshPro/Bitmap Custom Atlas" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_MainTex		("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_FaceTex		("Font Texture", 2D) = "white" {}
 | 
			
		||||
	[HDR]_FaceColor	("Text Color", Color) = (1,1,1,1)
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX	("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY	("Vertex OffsetY", float) = 0
 | 
			
		||||
	_MaskSoftnessX	("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY	("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_Padding		("Padding", float) = 0
 | 
			
		||||
 | 
			
		||||
	_StencilComp("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader{
 | 
			
		||||
 | 
			
		||||
	Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref[_Stencil]
 | 
			
		||||
		Comp[_StencilComp]
 | 
			
		||||
		Pass[_StencilOp]
 | 
			
		||||
		ReadMask[_StencilReadMask]
 | 
			
		||||
		WriteMask[_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	Blend SrcAlpha OneMinusSrcAlpha
 | 
			
		||||
	ColorMask[_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex vert
 | 
			
		||||
		#pragma fragment frag
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
 | 
			
		||||
		struct appdata_t {
 | 
			
		||||
			float4 vertex		: POSITION;
 | 
			
		||||
			fixed4 color		: COLOR;
 | 
			
		||||
			float2 texcoord0	: TEXCOORD0;
 | 
			
		||||
			float2 texcoord1	: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		struct v2f {
 | 
			
		||||
			float4	vertex		: SV_POSITION;
 | 
			
		||||
			fixed4	color		: COLOR;
 | 
			
		||||
			float2	texcoord0	: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1	: TEXCOORD1;
 | 
			
		||||
			float4	mask		: TEXCOORD2;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uniform	sampler2D 	_MainTex;
 | 
			
		||||
		uniform	sampler2D 	_FaceTex;
 | 
			
		||||
		uniform float4		_FaceTex_ST;
 | 
			
		||||
		uniform	fixed4		_FaceColor;
 | 
			
		||||
 | 
			
		||||
		uniform float		_VertexOffsetX;
 | 
			
		||||
		uniform float		_VertexOffsetY;
 | 
			
		||||
		uniform float4		_ClipRect;
 | 
			
		||||
		uniform float		_MaskSoftnessX;
 | 
			
		||||
		uniform float		_MaskSoftnessY;
 | 
			
		||||
 | 
			
		||||
		float2 UnpackUV(float uv)
 | 
			
		||||
		{
 | 
			
		||||
			float2 output;
 | 
			
		||||
			output.x = floor(uv / 4096);
 | 
			
		||||
			output.y = uv - 4096 * output.x;
 | 
			
		||||
 | 
			
		||||
			return output * 0.001953125;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		v2f vert (appdata_t v)
 | 
			
		||||
		{
 | 
			
		||||
			float4 vert = v.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
			vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
 | 
			
		||||
 | 
			
		||||
			float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert));
 | 
			
		||||
 | 
			
		||||
			fixed4 faceColor = v.color;
 | 
			
		||||
			faceColor *= _FaceColor;
 | 
			
		||||
 | 
			
		||||
			v2f OUT;
 | 
			
		||||
			OUT.vertex = vPosition;
 | 
			
		||||
			OUT.color = faceColor;
 | 
			
		||||
			OUT.texcoord0 = v.texcoord0;
 | 
			
		||||
			OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex);
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
 | 
			
		||||
 | 
			
		||||
			// Clamp _ClipRect to 16bit.
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
 | 
			
		||||
			return OUT;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fixed4 frag (v2f IN) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			fixed4 color = tex2D(_MainTex, IN.texcoord0) * tex2D(_FaceTex, IN.texcoord1) * IN.color;
 | 
			
		||||
 | 
			
		||||
			// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
			#if UNITY_UI_CLIP_RECT
 | 
			
		||||
				half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
 | 
			
		||||
				color *= m.x * m.y;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNITY_UI_ALPHACLIP
 | 
			
		||||
				clip(color.a - 0.001);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return color;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 48bb5f55d8670e349b6e614913f9d910
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										145
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										145
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,145 @@
 | 
			
		||||
Shader "TextMeshPro/Mobile/Bitmap" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_MainTex		("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	[HDR]_Color		("Text Color", Color) = (1,1,1,1)
 | 
			
		||||
	_DiffusePower	("Diffuse Power", Range(1.0,4.0)) = 1.0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY("Vertex OffsetY", float) = 0
 | 
			
		||||
	_MaskSoftnessX("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
 | 
			
		||||
	_StencilComp("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
 | 
			
		||||
	Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref[_Stencil]
 | 
			
		||||
		Comp[_StencilComp]
 | 
			
		||||
		Pass[_StencilOp]
 | 
			
		||||
		ReadMask[_StencilReadMask]
 | 
			
		||||
		WriteMask[_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	Blend SrcAlpha OneMinusSrcAlpha
 | 
			
		||||
	ColorMask[_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex vert
 | 
			
		||||
		#pragma fragment frag
 | 
			
		||||
		#pragma fragmentoption ARB_precision_hint_fastest
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
 | 
			
		||||
		struct appdata_t {
 | 
			
		||||
			float4 vertex : POSITION;
 | 
			
		||||
			fixed4 color : COLOR;
 | 
			
		||||
			float2 texcoord0 : TEXCOORD0;
 | 
			
		||||
			float2 texcoord1 : TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		struct v2f {
 | 
			
		||||
			float4 vertex		: POSITION;
 | 
			
		||||
			fixed4 color		: COLOR;
 | 
			
		||||
			float2 texcoord0	: TEXCOORD0;
 | 
			
		||||
			float4 mask			: TEXCOORD2;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		sampler2D 	_MainTex;
 | 
			
		||||
		fixed4		_Color;
 | 
			
		||||
		float		_DiffusePower;
 | 
			
		||||
 | 
			
		||||
		uniform float		_VertexOffsetX;
 | 
			
		||||
		uniform float		_VertexOffsetY;
 | 
			
		||||
		uniform float4		_ClipRect;
 | 
			
		||||
		uniform float		_MaskSoftnessX;
 | 
			
		||||
		uniform float		_MaskSoftnessY;
 | 
			
		||||
 | 
			
		||||
		v2f vert (appdata_t v)
 | 
			
		||||
		{
 | 
			
		||||
			v2f OUT;
 | 
			
		||||
			float4 vert = v.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
			vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
 | 
			
		||||
 | 
			
		||||
			OUT.vertex = UnityPixelSnap(UnityObjectToClipPos(vert));
 | 
			
		||||
			OUT.color = v.color;
 | 
			
		||||
			OUT.color *= _Color;
 | 
			
		||||
			OUT.color.rgb *= _DiffusePower;
 | 
			
		||||
			OUT.texcoord0 = v.texcoord0;
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = OUT.vertex.w;
 | 
			
		||||
			//pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
 | 
			
		||||
 | 
			
		||||
			// Clamp _ClipRect to 16bit.
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
 | 
			
		||||
			return OUT;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fixed4 frag (v2f IN) : COLOR
 | 
			
		||||
		{
 | 
			
		||||
			fixed4 color = fixed4(IN.color.rgb, IN.color.a * tex2D(_MainTex, IN.texcoord0).a);
 | 
			
		||||
 | 
			
		||||
			// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
			#if UNITY_UI_CLIP_RECT
 | 
			
		||||
				half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
 | 
			
		||||
				color *= m.x * m.y;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNITY_UI_ALPHACLIP
 | 
			
		||||
				clip(color.a - 0.001);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return color;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
	Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
 | 
			
		||||
	Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off }
 | 
			
		||||
	Blend SrcAlpha OneMinusSrcAlpha
 | 
			
		||||
	BindChannels {
 | 
			
		||||
		Bind "Color", color
 | 
			
		||||
		Bind "Vertex", vertex
 | 
			
		||||
		Bind "TexCoord", texcoord0
 | 
			
		||||
	}
 | 
			
		||||
	Pass {
 | 
			
		||||
		SetTexture [_MainTex] {
 | 
			
		||||
			constantColor [_Color] combine constant * primary, constant * texture
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 1e3b057af24249748ff873be7fafee47
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										143
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										143
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
Shader "TextMeshPro/Bitmap" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_MainTex		("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_FaceTex		("Font Texture", 2D) = "white" {}
 | 
			
		||||
	[HDR]_FaceColor	("Text Color", Color) = (1,1,1,1)
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX	("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY	("Vertex OffsetY", float) = 0
 | 
			
		||||
	_MaskSoftnessX	("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY	("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
 | 
			
		||||
	_StencilComp("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader{
 | 
			
		||||
 | 
			
		||||
	Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref[_Stencil]
 | 
			
		||||
		Comp[_StencilComp]
 | 
			
		||||
		Pass[_StencilOp]
 | 
			
		||||
		ReadMask[_StencilReadMask]
 | 
			
		||||
		WriteMask[_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	Blend SrcAlpha OneMinusSrcAlpha
 | 
			
		||||
	ColorMask[_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex vert
 | 
			
		||||
		#pragma fragment frag
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
 | 
			
		||||
		struct appdata_t {
 | 
			
		||||
			float4 vertex		: POSITION;
 | 
			
		||||
			fixed4 color		: COLOR;
 | 
			
		||||
			float2 texcoord0	: TEXCOORD0;
 | 
			
		||||
			float2 texcoord1	: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		struct v2f {
 | 
			
		||||
			float4	vertex		: SV_POSITION;
 | 
			
		||||
			fixed4	color		: COLOR;
 | 
			
		||||
			float2	texcoord0	: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1	: TEXCOORD1;
 | 
			
		||||
			float4	mask		: TEXCOORD2;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uniform	sampler2D 	_MainTex;
 | 
			
		||||
		uniform	sampler2D 	_FaceTex;
 | 
			
		||||
		uniform float4		_FaceTex_ST;
 | 
			
		||||
		uniform	fixed4		_FaceColor;
 | 
			
		||||
 | 
			
		||||
		uniform float		_VertexOffsetX;
 | 
			
		||||
		uniform float		_VertexOffsetY;
 | 
			
		||||
		uniform float4		_ClipRect;
 | 
			
		||||
		uniform float		_MaskSoftnessX;
 | 
			
		||||
		uniform float		_MaskSoftnessY;
 | 
			
		||||
 | 
			
		||||
		float2 UnpackUV(float uv)
 | 
			
		||||
		{
 | 
			
		||||
			float2 output;
 | 
			
		||||
			output.x = floor(uv / 4096);
 | 
			
		||||
			output.y = uv - 4096 * output.x;
 | 
			
		||||
 | 
			
		||||
			return output * 0.001953125;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		v2f vert (appdata_t v)
 | 
			
		||||
		{
 | 
			
		||||
			float4 vert = v.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
			vert.xy += (vert.w * 0.5) / _ScreenParams.xy;
 | 
			
		||||
 | 
			
		||||
			float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert));
 | 
			
		||||
 | 
			
		||||
			fixed4 faceColor = v.color;
 | 
			
		||||
			faceColor *= _FaceColor;
 | 
			
		||||
 | 
			
		||||
			v2f OUT;
 | 
			
		||||
			OUT.vertex = vPosition;
 | 
			
		||||
			OUT.color = faceColor;
 | 
			
		||||
			OUT.texcoord0 = v.texcoord0;
 | 
			
		||||
			OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex);
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1]));
 | 
			
		||||
 | 
			
		||||
			// Clamp _ClipRect to 16bit.
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
 | 
			
		||||
			return OUT;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fixed4 frag (v2f IN) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			fixed4 color = tex2D(_MainTex, IN.texcoord0);
 | 
			
		||||
			color = fixed4 (tex2D(_FaceTex, IN.texcoord1).rgb * IN.color.rgb, IN.color.a * color.a);
 | 
			
		||||
 | 
			
		||||
			// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
			#if UNITY_UI_CLIP_RECT
 | 
			
		||||
				half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
 | 
			
		||||
				color *= m.x * m.y;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNITY_UI_ALPHACLIP
 | 
			
		||||
				clip(color.a - 0.001);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return color;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 128e987d567d4e2c824d754223b3f3b0
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										317
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										317
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,317 @@
 | 
			
		||||
Shader "TextMeshPro/Distance Field Overlay" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_FaceTex			("Face Texture", 2D) = "white" {}
 | 
			
		||||
	_FaceUVSpeedX		("Face UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_FaceUVSpeedY		("Face UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	[HDR]_FaceColor		("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineTex			("Outline Texture", 2D) = "white" {}
 | 
			
		||||
	_OutlineUVSpeedX	("Outline UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineUVSpeedY	("Outline UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0, 1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_Bevel				("Bevel", Range(0,1)) = 0.5
 | 
			
		||||
	_BevelOffset		("Bevel Offset", Range(-0.5,0.5)) = 0
 | 
			
		||||
	_BevelWidth			("Bevel Width", Range(-.5,0.5)) = 0
 | 
			
		||||
	_BevelClamp			("Bevel Clamp", Range(0,1)) = 0
 | 
			
		||||
	_BevelRoundness		("Bevel Roundness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_LightAngle			("Light Angle", Range(0.0, 6.2831853)) = 3.1416
 | 
			
		||||
	[HDR]_SpecularColor	("Specular", Color) = (1,1,1,1)
 | 
			
		||||
	_SpecularPower		("Specular", Range(0,4)) = 2.0
 | 
			
		||||
	_Reflectivity		("Reflectivity", Range(5.0,15.0)) = 10
 | 
			
		||||
	_Diffuse			("Diffuse", Range(0,1)) = 0.5
 | 
			
		||||
	_Ambient			("Ambient", Range(1,0)) = 0.5
 | 
			
		||||
 | 
			
		||||
	_BumpMap 			("Normal map", 2D) = "bump" {}
 | 
			
		||||
	_BumpOutline		("Bump Outline", Range(0,1)) = 0
 | 
			
		||||
	_BumpFace			("Bump Face", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_ReflectFaceColor	("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
	_ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
	_Cube 				("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
 | 
			
		||||
	_EnvMatrixRotation	("Texture Rotation", vector) = (0, 0, 0, 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor	("Border Color", Color) = (0,0,0, 0.5)
 | 
			
		||||
	_UnderlayOffsetX	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_GlowColor		("Color", Color) = (0, 1, 0, 0.5)
 | 
			
		||||
	_GlowOffset			("Offset", Range(-1,1)) = 0
 | 
			
		||||
	_GlowInner			("Inner", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowOuter			("Outer", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowPower			("Falloff", Range(1, 0)) = 0.75
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = 0.5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_MainTex			("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_TextureWidth		("Texture Width", float) = 512
 | 
			
		||||
	_TextureHeight		("Texture Height", float) = 512
 | 
			
		||||
	_GradientScale		("Gradient Scale", float) = 5.0
 | 
			
		||||
	_ScaleX				("Scale X", float) = 1.0
 | 
			
		||||
	_ScaleY				("Scale Y", float) = 1.0
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_MaskCoord			("Mask Coordinates", vector) = (0, 0, 32767, 32767)
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
 | 
			
		||||
	Tags
 | 
			
		||||
  {
 | 
			
		||||
		"Queue"="Overlay"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest Always
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma target 3.0
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ BEVEL_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
		#pragma shader_feature __ GLOW_ON
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
		#include "TMPro.cginc"
 | 
			
		||||
 | 
			
		||||
		struct vertex_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			float4	position		: POSITION;
 | 
			
		||||
			float3	normal			: NORMAL;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	texcoord0		: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1		: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		struct pixel_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
			float4	position		: SV_POSITION;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	atlas			: TEXCOORD0;		// Atlas
 | 
			
		||||
			float4	param			: TEXCOORD1;		// alphaClip, scale, bias, weight
 | 
			
		||||
			float4	mask			: TEXCOORD2;		// Position in object space(xy), pixel Size(zw)
 | 
			
		||||
			float3	viewDir			: TEXCOORD3;
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			float4	texcoord2		: TEXCOORD4;		// u,v, scale, bias
 | 
			
		||||
			fixed4	underlayColor	: COLOR1;
 | 
			
		||||
		#endif
 | 
			
		||||
			float4 textures			: TEXCOORD5;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		// Used by Unity internally to handle Texture Tiling and Offset.
 | 
			
		||||
		float4 _FaceTex_ST;
 | 
			
		||||
		float4 _OutlineTex_ST;
 | 
			
		||||
 | 
			
		||||
		pixel_t VertShader(vertex_t input)
 | 
			
		||||
		{
 | 
			
		||||
			pixel_t output;
 | 
			
		||||
 | 
			
		||||
			UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
			UNITY_TRANSFER_INSTANCE_ID(input,output);
 | 
			
		||||
			UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
			float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
			float4 vert = input.position;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
			float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
 | 
			
		||||
			float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
			scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
			if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
 | 
			
		||||
			float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
			weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
			float bias =(.5 - weight) + (.5 / scale);
 | 
			
		||||
 | 
			
		||||
			float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA);
 | 
			
		||||
 | 
			
		||||
		#if GLOW_ON
 | 
			
		||||
			alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight;
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			float4 underlayColor = _UnderlayColor;
 | 
			
		||||
			underlayColor.rgb *= underlayColor.a;
 | 
			
		||||
 | 
			
		||||
			float bScale = scale;
 | 
			
		||||
			bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
 | 
			
		||||
			float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
 | 
			
		||||
 | 
			
		||||
			float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
			float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
			float2 bOffset = float2(x, y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			// Generate UV for the Masking Texture
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
			// Support for texture tiling and offset
 | 
			
		||||
			float2 textureUV = UnpackUV(input.texcoord1.x);
 | 
			
		||||
			float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
 | 
			
		||||
			float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			output.position = vPosition;
 | 
			
		||||
			output.color = input.color;
 | 
			
		||||
			output.atlas =	input.texcoord0;
 | 
			
		||||
			output.param =	float4(alphaClip, scale, bias, weight);
 | 
			
		||||
			output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
			output.viewDir =	mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
 | 
			
		||||
			#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias);
 | 
			
		||||
			output.underlayColor =	underlayColor;
 | 
			
		||||
			#endif
 | 
			
		||||
			output.textures = float4(faceUV, outlineUV);
 | 
			
		||||
 | 
			
		||||
			return output;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
			float c = tex2D(_MainTex, input.atlas).a;
 | 
			
		||||
 | 
			
		||||
		#ifndef UNDERLAY_ON
 | 
			
		||||
			clip(c - input.param.x);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			float	scale	= input.param.y;
 | 
			
		||||
			float	bias	= input.param.z;
 | 
			
		||||
			float	weight	= input.param.w;
 | 
			
		||||
			float	sd = (bias - c) * scale;
 | 
			
		||||
 | 
			
		||||
			float outline = (_OutlineWidth * _ScaleRatioA) * scale;
 | 
			
		||||
			float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
 | 
			
		||||
 | 
			
		||||
			half4 faceColor = _FaceColor;
 | 
			
		||||
			half4 outlineColor = _OutlineColor;
 | 
			
		||||
 | 
			
		||||
			faceColor.rgb *= input.color.rgb;
 | 
			
		||||
 | 
			
		||||
			faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
 | 
			
		||||
			outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
 | 
			
		||||
 | 
			
		||||
			faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
 | 
			
		||||
 | 
			
		||||
		#if BEVEL_ON
 | 
			
		||||
			float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
 | 
			
		||||
			float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
 | 
			
		||||
 | 
			
		||||
			float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
 | 
			
		||||
			bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
 | 
			
		||||
			n = normalize(n- bump);
 | 
			
		||||
 | 
			
		||||
			float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
 | 
			
		||||
 | 
			
		||||
			float3 col = GetSpecular(n, light);
 | 
			
		||||
			faceColor.rgb += col*faceColor.a;
 | 
			
		||||
			faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
 | 
			
		||||
			faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
 | 
			
		||||
 | 
			
		||||
			fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
 | 
			
		||||
			faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_ON
 | 
			
		||||
			float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
 | 
			
		||||
			faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_INNER
 | 
			
		||||
			float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
 | 
			
		||||
			faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if GLOW_ON
 | 
			
		||||
			float4 glowColor = GetGlowColor(sd, scale);
 | 
			
		||||
			faceColor.rgb += glowColor.rgb * glowColor.a;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
		#if UNITY_UI_CLIP_RECT
 | 
			
		||||
			half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
 | 
			
		||||
			faceColor *= m.x * m.y;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNITY_UI_ALPHACLIP
 | 
			
		||||
			clip(faceColor.a - 0.001);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			return faceColor * input.color.a;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Fallback "TextMeshPro/Mobile/Distance Field"
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: dd89cf5b9246416f84610a006f916af7
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										310
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										310
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,310 @@
 | 
			
		||||
Shader "TextMeshPro/Distance Field SSD" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
    _FaceTex            ("Face Texture", 2D) = "white" {}
 | 
			
		||||
    _FaceUVSpeedX       ("Face UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
    _FaceUVSpeedY       ("Face UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
    [HDR]_FaceColor     ("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
    _FaceDilate         ("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
    [HDR]_OutlineColor  ("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
    _OutlineTex         ("Outline Texture", 2D) = "white" {}
 | 
			
		||||
    _OutlineUVSpeedX    ("Outline UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
    _OutlineUVSpeedY    ("Outline UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
    _OutlineWidth       ("Outline Thickness", Range(0, 1)) = 0
 | 
			
		||||
    _OutlineSoftness    ("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
    _Bevel              ("Bevel", Range(0,1)) = 0.5
 | 
			
		||||
    _BevelOffset        ("Bevel Offset", Range(-0.5,0.5)) = 0
 | 
			
		||||
    _BevelWidth         ("Bevel Width", Range(-.5,0.5)) = 0
 | 
			
		||||
    _BevelClamp         ("Bevel Clamp", Range(0,1)) = 0
 | 
			
		||||
    _BevelRoundness     ("Bevel Roundness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
    _LightAngle         ("Light Angle", Range(0.0, 6.2831853)) = 3.1416
 | 
			
		||||
    [HDR]_SpecularColor ("Specular", Color) = (1,1,1,1)
 | 
			
		||||
    _SpecularPower      ("Specular", Range(0,4)) = 2.0
 | 
			
		||||
    _Reflectivity       ("Reflectivity", Range(5.0,15.0)) = 10
 | 
			
		||||
    _Diffuse            ("Diffuse", Range(0,1)) = 0.5
 | 
			
		||||
    _Ambient            ("Ambient", Range(1,0)) = 0.5
 | 
			
		||||
 | 
			
		||||
    _BumpMap            ("Normal map", 2D) = "bump" {}
 | 
			
		||||
    _BumpOutline        ("Bump Outline", Range(0,1)) = 0
 | 
			
		||||
    _BumpFace           ("Bump Face", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
    _ReflectFaceColor   ("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
    _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
    _Cube               ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
 | 
			
		||||
    _EnvMatrixRotation  ("Texture Rotation", vector) = (0, 0, 0, 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5)
 | 
			
		||||
    _UnderlayOffsetX    ("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
    _UnderlayOffsetY    ("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
    _UnderlayDilate     ("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
    _UnderlaySoftness   ("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
    [HDR]_GlowColor     ("Color", Color) = (0, 1, 0, 0.5)
 | 
			
		||||
    _GlowOffset         ("Offset", Range(-1,1)) = 0
 | 
			
		||||
    _GlowInner          ("Inner", Range(0,1)) = 0.05
 | 
			
		||||
    _GlowOuter          ("Outer", Range(0,1)) = 0.05
 | 
			
		||||
    _GlowPower          ("Falloff", Range(1, 0)) = 0.75
 | 
			
		||||
 | 
			
		||||
    _WeightNormal       ("Weight Normal", float) = 0
 | 
			
		||||
    _WeightBold         ("Weight Bold", float) = 0.5
 | 
			
		||||
 | 
			
		||||
    _ShaderFlags        ("Flags", float) = 0
 | 
			
		||||
    _ScaleRatioA        ("Scale RatioA", float) = 1
 | 
			
		||||
    _ScaleRatioB        ("Scale RatioB", float) = 1
 | 
			
		||||
    _ScaleRatioC        ("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
    _MainTex            ("Font Atlas", 2D) = "white" {}
 | 
			
		||||
    _TextureWidth       ("Texture Width", float) = 512
 | 
			
		||||
    _TextureHeight      ("Texture Height", float) = 512
 | 
			
		||||
    _GradientScale      ("Gradient Scale", float) = 5.0
 | 
			
		||||
    _ScaleX             ("Scale X", float) = 1.0
 | 
			
		||||
    _ScaleY             ("Scale Y", float) = 1.0
 | 
			
		||||
    _PerspectiveFilter  ("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
    _Sharpness          ("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
    _VertexOffsetX      ("Vertex OffsetX", float) = 0
 | 
			
		||||
    _VertexOffsetY      ("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
    _MaskCoord          ("Mask Coordinates", vector) = (0, 0, 32767, 32767)
 | 
			
		||||
    _ClipRect           ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
    _MaskSoftnessX      ("Mask SoftnessX", float) = 0
 | 
			
		||||
    _MaskSoftnessY      ("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
    _StencilComp        ("Stencil Comparison", Float) = 8
 | 
			
		||||
    _Stencil            ("Stencil ID", Float) = 0
 | 
			
		||||
    _StencilOp          ("Stencil Operation", Float) = 0
 | 
			
		||||
    _StencilWriteMask   ("Stencil Write Mask", Float) = 255
 | 
			
		||||
    _StencilReadMask    ("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
    _CullMode           ("Cull Mode", Float) = 0
 | 
			
		||||
    _ColorMask          ("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
    Tags
 | 
			
		||||
    {
 | 
			
		||||
        "Queue" = "Transparent"
 | 
			
		||||
        "IgnoreProjector" = "True"
 | 
			
		||||
        "RenderType" = "Transparent"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Stencil
 | 
			
		||||
    {
 | 
			
		||||
        Ref[_Stencil]
 | 
			
		||||
        Comp[_StencilComp]
 | 
			
		||||
        Pass[_StencilOp]
 | 
			
		||||
        ReadMask[_StencilReadMask]
 | 
			
		||||
        WriteMask[_StencilWriteMask]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Cull[_CullMode]
 | 
			
		||||
    ZWrite Off
 | 
			
		||||
    Lighting Off
 | 
			
		||||
    Fog { Mode Off }
 | 
			
		||||
    ZTest[unity_GUIZTestMode]
 | 
			
		||||
    Blend One OneMinusSrcAlpha
 | 
			
		||||
    ColorMask[_ColorMask]
 | 
			
		||||
 | 
			
		||||
    Pass {
 | 
			
		||||
        CGPROGRAM
 | 
			
		||||
        #pragma target 3.0
 | 
			
		||||
        #pragma vertex VertShader
 | 
			
		||||
        #pragma fragment PixShader
 | 
			
		||||
        #pragma shader_feature __ BEVEL_ON
 | 
			
		||||
        #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
        #pragma shader_feature __ GLOW_ON
 | 
			
		||||
        #pragma shader_feature __ FORCE_LINEAR
 | 
			
		||||
 | 
			
		||||
        #pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
        #pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
        #include "UnityCG.cginc"
 | 
			
		||||
        #include "UnityUI.cginc"
 | 
			
		||||
        #include "TMPro_Properties.cginc"
 | 
			
		||||
        #include "TMPro.cginc"
 | 
			
		||||
 | 
			
		||||
        struct vertex_t {
 | 
			
		||||
            UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
            float4	position        : POSITION;
 | 
			
		||||
            float3	normal          : NORMAL;
 | 
			
		||||
            float4	color           : COLOR;
 | 
			
		||||
            float2	texcoord0       : TEXCOORD0;
 | 
			
		||||
            float2	texcoord1       : TEXCOORD1;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        struct pixel_t {
 | 
			
		||||
            UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
            UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
            float4	position        : SV_POSITION;
 | 
			
		||||
            float4	color           : COLOR;
 | 
			
		||||
            float2	atlas           : TEXCOORD0;
 | 
			
		||||
            float	weight          : TEXCOORD1;
 | 
			
		||||
            float2	mask            : TEXCOORD2;		// Position in object space(xy)
 | 
			
		||||
            float3	viewDir         : TEXCOORD3;
 | 
			
		||||
 | 
			
		||||
        #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
            float2	texcoord2       : TEXCOORD4;
 | 
			
		||||
            float4	underlayColor   : COLOR1;
 | 
			
		||||
        #endif
 | 
			
		||||
            float4 textures         : TEXCOORD5;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        // Used by Unity internally to handle Texture Tiling and Offset.
 | 
			
		||||
        float4 _FaceTex_ST;
 | 
			
		||||
        float4 _OutlineTex_ST;
 | 
			
		||||
 | 
			
		||||
        float4 SRGBToLinear(float4 rgba) {
 | 
			
		||||
            return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pixel_t VertShader(vertex_t input)
 | 
			
		||||
        {
 | 
			
		||||
            pixel_t output;
 | 
			
		||||
 | 
			
		||||
            UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
            UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
            UNITY_TRANSFER_INSTANCE_ID(input,output);
 | 
			
		||||
            UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
            float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
            float4 vert = input.position;
 | 
			
		||||
            vert.x += _VertexOffsetX;
 | 
			
		||||
            vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
            float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
            float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
            weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
        #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
            float4 underlayColor = _UnderlayColor;
 | 
			
		||||
            underlayColor.rgb *= underlayColor.a;
 | 
			
		||||
 | 
			
		||||
            float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
            float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
            float2 bOffset = float2(x, y);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
            // Generate UV for the Masking Texture
 | 
			
		||||
            float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
 | 
			
		||||
            // Support for texture tiling and offset
 | 
			
		||||
            float2 textureUV = UnpackUV(input.texcoord1.x);
 | 
			
		||||
            float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
 | 
			
		||||
            float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
 | 
			
		||||
 | 
			
		||||
            float4 color = input.color;
 | 
			
		||||
        #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA)
 | 
			
		||||
            color = SRGBToLinear(input.color);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
            output.position = vPosition;
 | 
			
		||||
            output.color = color;
 | 
			
		||||
            output.atlas = input.texcoord0;
 | 
			
		||||
            output.weight = weight;
 | 
			
		||||
            output.mask = half2(vert.xy * 2 - clampedRect.xy - clampedRect.zw);
 | 
			
		||||
            output.viewDir = mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
 | 
			
		||||
        #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
            output.texcoord2 = input.texcoord0 + bOffset;
 | 
			
		||||
            output.underlayColor = underlayColor;
 | 
			
		||||
        #endif
 | 
			
		||||
            output.textures = float4(faceUV, outlineUV);
 | 
			
		||||
 | 
			
		||||
            return output;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
        {
 | 
			
		||||
            UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
            float c = tex2D(_MainTex, input.atlas).a;
 | 
			
		||||
 | 
			
		||||
            float2 pixelSize = float2(ddx(input.atlas.y), ddy(input.atlas.y));
 | 
			
		||||
            pixelSize *= _TextureWidth * .75;
 | 
			
		||||
            float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
 | 
			
		||||
            float weight = input.weight;
 | 
			
		||||
            float bias = (.5 - weight) + (.5 / scale);
 | 
			
		||||
            float sd = (bias - c) * scale;
 | 
			
		||||
 | 
			
		||||
            float outline = (_OutlineWidth * _ScaleRatioA) * scale;
 | 
			
		||||
            float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
 | 
			
		||||
 | 
			
		||||
            half4 faceColor = _FaceColor;
 | 
			
		||||
            half4 outlineColor = _OutlineColor;
 | 
			
		||||
 | 
			
		||||
            faceColor.rgb *= input.color.rgb;
 | 
			
		||||
 | 
			
		||||
            faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
 | 
			
		||||
            outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
 | 
			
		||||
 | 
			
		||||
            faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
 | 
			
		||||
 | 
			
		||||
        #if BEVEL_ON
 | 
			
		||||
            float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
 | 
			
		||||
            float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
 | 
			
		||||
 | 
			
		||||
            float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
 | 
			
		||||
            bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
 | 
			
		||||
            n = normalize(n - bump);
 | 
			
		||||
 | 
			
		||||
            float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
 | 
			
		||||
 | 
			
		||||
            float3 col = GetSpecular(n, light);
 | 
			
		||||
            faceColor.rgb += col * faceColor.a;
 | 
			
		||||
            faceColor.rgb *= 1 - (dot(n, light) * _Diffuse);
 | 
			
		||||
            faceColor.rgb *= lerp(_Ambient, 1, n.z * n.z);
 | 
			
		||||
 | 
			
		||||
            fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
 | 
			
		||||
            faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
            float bScale = scale;
 | 
			
		||||
            bScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * bScale);
 | 
			
		||||
            float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if UNDERLAY_ON
 | 
			
		||||
            float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale;
 | 
			
		||||
            faceColor += input.underlayColor * saturate(d - bBias) * (1 - faceColor.a);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if UNDERLAY_INNER
 | 
			
		||||
            float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale;
 | 
			
		||||
            faceColor += input.underlayColor * (1 - saturate(d - bBias)) * saturate(1 - sd) * (1 - faceColor.a);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if GLOW_ON
 | 
			
		||||
            float4 glowColor = GetGlowColor(sd, scale);
 | 
			
		||||
            faceColor.rgb += glowColor.rgb * glowColor.a;
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
            // Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
        #if UNITY_UI_CLIP_RECT
 | 
			
		||||
            float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale));
 | 
			
		||||
            half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW);
 | 
			
		||||
            faceColor *= m.x * m.y;
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
        #if UNITY_UI_ALPHACLIP
 | 
			
		||||
            clip(faceColor.a - 0.001);
 | 
			
		||||
        #endif
 | 
			
		||||
 | 
			
		||||
            return faceColor * input.color.a;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ENDCG
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Fallback "TextMeshPro/Mobile/Distance Field"
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 14eb328de4b8eb245bb7cea29e4ac00b
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										247
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										247
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,247 @@
 | 
			
		||||
// Simplified SDF shader:
 | 
			
		||||
// - No Shading Option (bevel / bump / env map)
 | 
			
		||||
// - No Glow Option
 | 
			
		||||
// - Softness is applied on both side of the outline
 | 
			
		||||
 | 
			
		||||
Shader "TextMeshPro/Mobile/Distance Field - Masking" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	[HDR]_FaceColor		("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0,1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor	("Border Color", Color) = (0,0,0,.5)
 | 
			
		||||
	_UnderlayOffsetX 	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY 	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness 	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = .5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_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
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
	_MaskTex			("Mask Texture", 2D) = "white" {}
 | 
			
		||||
	_MaskInverse		("Inverse", float) = 0
 | 
			
		||||
	_MaskEdgeColor		("Edge Color", Color) = (1,1,1,1)
 | 
			
		||||
	_MaskEdgeSoftness	("Edge Softness", Range(0, 1)) = 0.01
 | 
			
		||||
	_MaskWipeControl	("Wipe Position", Range(0, 1)) = 0.5
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
	Tags
 | 
			
		||||
	{
 | 
			
		||||
		"Queue"="Transparent"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ OUTLINE_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
 | 
			
		||||
		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;
 | 
			
		||||
			fixed4	outlineColor	: COLOR1;
 | 
			
		||||
			float4	texcoord0		: TEXCOORD0;			// Texture UV, Mask UV
 | 
			
		||||
			half4	param			: TEXCOORD1;			// Scale(x), BiasIn(y), BiasOut(z), Bias(w)
 | 
			
		||||
			half4	mask			: TEXCOORD2;			// Position in clip space(xy), Softness(zw)
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			float4	texcoord1		: TEXCOORD3;			// Texture UV, alpha, reserved
 | 
			
		||||
			half2	underlayParam	: TEXCOORD4;			// Scale(x), Bias(y)
 | 
			
		||||
		#endif
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		float _MaskWipeControl;
 | 
			
		||||
		float _MaskEdgeSoftness;
 | 
			
		||||
		fixed4 _MaskEdgeColor;
 | 
			
		||||
		bool _MaskInverse;
 | 
			
		||||
 | 
			
		||||
		pixel_t VertShader(vertex_t input)
 | 
			
		||||
		{
 | 
			
		||||
			float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
			float4 vert = input.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
			float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
 | 
			
		||||
 | 
			
		||||
			float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
			scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
			if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
 | 
			
		||||
			float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
			weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
			float layerScale = scale;
 | 
			
		||||
 | 
			
		||||
			scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
 | 
			
		||||
			float bias = (0.5 - weight) * scale - 0.5;
 | 
			
		||||
			float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
 | 
			
		||||
 | 
			
		||||
			float opacity = input.color.a;
 | 
			
		||||
					#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
					opacity = 1.0;
 | 
			
		||||
					#endif
 | 
			
		||||
 | 
			
		||||
			fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
 | 
			
		||||
			faceColor.rgb *= faceColor.a;
 | 
			
		||||
 | 
			
		||||
			fixed4 outlineColor = _OutlineColor;
 | 
			
		||||
			outlineColor.a *= opacity;
 | 
			
		||||
			outlineColor.rgb *= outlineColor.a;
 | 
			
		||||
			outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
 | 
			
		||||
			layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
 | 
			
		||||
			float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
 | 
			
		||||
 | 
			
		||||
			float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
			float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
			float2 layerOffset = float2(x, y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			// Generate UV for the Masking Texture
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
			// Structure for pixel shader
 | 
			
		||||
			pixel_t output = {
 | 
			
		||||
				vPosition,
 | 
			
		||||
				faceColor,
 | 
			
		||||
				outlineColor,
 | 
			
		||||
				float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y),
 | 
			
		||||
				half4(scale, bias - outline, bias + outline, bias),
 | 
			
		||||
				half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)),
 | 
			
		||||
			#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
				float4(input.texcoord0 + layerOffset, input.color.a, 0),
 | 
			
		||||
				half2(layerScale, layerBias),
 | 
			
		||||
			#endif
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			return output;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// PIXEL SHADER
 | 
			
		||||
		fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
 | 
			
		||||
			half4 c = input.faceColor * saturate(d - input.param.w);
 | 
			
		||||
 | 
			
		||||
		#ifdef OUTLINE_ON
 | 
			
		||||
			c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
 | 
			
		||||
			c *= saturate(d - input.param.y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_ON
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_INNER
 | 
			
		||||
			half sd = saturate(d - input.param.z);
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
		//#if UNITY_UI_CLIP_RECT
 | 
			
		||||
			half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
 | 
			
		||||
			c *= m.x * m.y;
 | 
			
		||||
		//#endif
 | 
			
		||||
 | 
			
		||||
		float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a);
 | 
			
		||||
		float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl;
 | 
			
		||||
		a = saturate(t / _MaskEdgeSoftness);
 | 
			
		||||
		c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a);
 | 
			
		||||
		c *= a;
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			c *= input.texcoord1.z;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
    #if UNITY_UI_ALPHACLIP
 | 
			
		||||
			clip(c.a - 0.001);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			return c;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: bc1ede39bf3643ee8e493720e4259791
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										240
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										240
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,240 @@
 | 
			
		||||
// Simplified SDF shader:
 | 
			
		||||
// - No Shading Option (bevel / bump / env map)
 | 
			
		||||
// - No Glow Option
 | 
			
		||||
// - Softness is applied on both side of the outline
 | 
			
		||||
 | 
			
		||||
Shader "TextMeshPro/Mobile/Distance Field Overlay" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	[HDR]_FaceColor		("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0,1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor	("Border Color", Color) = (0,0,0,.5)
 | 
			
		||||
	_UnderlayOffsetX 	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY 	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness 	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = .5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_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
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
	Tags
 | 
			
		||||
  {
 | 
			
		||||
		"Queue"="Overlay"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest Always
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ OUTLINE_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
 | 
			
		||||
		struct vertex_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			float4	vertex			: POSITION;
 | 
			
		||||
			float3	normal			: NORMAL;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	texcoord0		: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1		: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		struct pixel_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
			float4	vertex			: SV_POSITION;
 | 
			
		||||
			fixed4	faceColor		: COLOR;
 | 
			
		||||
			fixed4	outlineColor	: COLOR1;
 | 
			
		||||
			float4	texcoord0		: TEXCOORD0;			// Texture UV, Mask UV
 | 
			
		||||
			half4	param			: TEXCOORD1;			// Scale(x), BiasIn(y), BiasOut(z), Bias(w)
 | 
			
		||||
			half4	mask			: TEXCOORD2;			// Position in clip space(xy), Softness(zw)
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			float4	texcoord1		: TEXCOORD3;			// Texture UV, alpha, reserved
 | 
			
		||||
			half2	underlayParam	: TEXCOORD4;			// Scale(x), Bias(y)
 | 
			
		||||
		#endif
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		pixel_t VertShader(vertex_t input)
 | 
			
		||||
		{
 | 
			
		||||
			pixel_t output;
 | 
			
		||||
 | 
			
		||||
			UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
			UNITY_TRANSFER_INSTANCE_ID(input, output);
 | 
			
		||||
			UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
			float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
			float4 vert = input.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
			float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
 | 
			
		||||
 | 
			
		||||
			float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
			scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
			if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
 | 
			
		||||
			float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
			weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
			float layerScale = scale;
 | 
			
		||||
 | 
			
		||||
			scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
 | 
			
		||||
			float bias = (0.5 - weight) * scale - 0.5;
 | 
			
		||||
			float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
 | 
			
		||||
 | 
			
		||||
			float opacity = input.color.a;
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
				opacity = 1.0;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
 | 
			
		||||
			faceColor.rgb *= faceColor.a;
 | 
			
		||||
 | 
			
		||||
			fixed4 outlineColor = _OutlineColor;
 | 
			
		||||
			outlineColor.a *= opacity;
 | 
			
		||||
			outlineColor.rgb *= outlineColor.a;
 | 
			
		||||
			outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
 | 
			
		||||
			float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
 | 
			
		||||
 | 
			
		||||
			float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
			float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
			float2 layerOffset = float2(x, y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			// Generate UV for the Masking Texture
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
			// Populate structure for pixel shader
 | 
			
		||||
			output.vertex = vPosition;
 | 
			
		||||
			output.faceColor = faceColor;
 | 
			
		||||
			output.outlineColor = outlineColor;
 | 
			
		||||
			output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y);
 | 
			
		||||
			output.param = half4(scale, bias - outline, bias + outline, bias);
 | 
			
		||||
			output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
			#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0);
 | 
			
		||||
			output.underlayParam = half2(layerScale, layerBias);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return output;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// PIXEL SHADER
 | 
			
		||||
		fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
			half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
 | 
			
		||||
			half4 c = input.faceColor * saturate(d - input.param.w);
 | 
			
		||||
 | 
			
		||||
		#ifdef OUTLINE_ON
 | 
			
		||||
			c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
 | 
			
		||||
			c *= saturate(d - input.param.y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_ON
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_INNER
 | 
			
		||||
			half sd = saturate(d - input.param.z);
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
		#if UNITY_UI_CLIP_RECT
 | 
			
		||||
			half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
 | 
			
		||||
			c *= m.x * m.y;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			c *= input.texcoord1.z;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
    #if UNITY_UI_ALPHACLIP
 | 
			
		||||
			clip(c.a - 0.001);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			return c;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: a02a7d8c237544f1962732b55a9aebf1
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										106
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										106
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
// Simplified SDF shader:
 | 
			
		||||
// - No Shading Option (bevel / bump / env map)
 | 
			
		||||
// - No Glow Option
 | 
			
		||||
// - Softness is applied on both side of the outline
 | 
			
		||||
 | 
			
		||||
Shader "TextMeshPro/Mobile/Distance Field SSD" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	[HDR]_FaceColor		("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0,1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor		("Border Color", Color) = (0,0,0,.5)
 | 
			
		||||
	_UnderlayOffsetX 	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY 	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness 	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = .5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_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
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
	_MaskTex			("Mask Texture", 2D) = "white" {}
 | 
			
		||||
	_MaskInverse		("Inverse", float) = 0
 | 
			
		||||
	_MaskEdgeColor		("Edge Color", Color) = (1,1,1,1)
 | 
			
		||||
	_MaskEdgeSoftness	("Edge Softness", Range(0, 1)) = 0.01
 | 
			
		||||
	_MaskWipeControl	("Wipe Position", Range(0, 1)) = 0.5
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
    _CullMode           ("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
	Tags {
 | 
			
		||||
		"Queue"="Transparent"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ OUTLINE_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
 | 
			
		||||
		#include "TMPro_Mobile.cginc"
 | 
			
		||||
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: c8d12adcee749c344b8117cf7c7eb912
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										240
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										240
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,240 @@
 | 
			
		||||
// Simplified SDF shader:
 | 
			
		||||
// - No Shading Option (bevel / bump / env map)
 | 
			
		||||
// - No Glow Option
 | 
			
		||||
// - Softness is applied on both side of the outline
 | 
			
		||||
 | 
			
		||||
Shader "TextMeshPro/Mobile/Distance Field" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	[HDR]_FaceColor     ("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0,1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor	("Border Color", Color) = (0,0,0,.5)
 | 
			
		||||
	_UnderlayOffsetX 	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY 	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness 	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = .5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_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
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
	Tags
 | 
			
		||||
	{
 | 
			
		||||
		"Queue"="Transparent"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ OUTLINE_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
 | 
			
		||||
		struct vertex_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			float4	vertex			: POSITION;
 | 
			
		||||
			float3	normal			: NORMAL;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	texcoord0		: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1		: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		struct pixel_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
			float4	vertex			: SV_POSITION;
 | 
			
		||||
			fixed4	faceColor		: COLOR;
 | 
			
		||||
			fixed4	outlineColor	: COLOR1;
 | 
			
		||||
			float4	texcoord0		: TEXCOORD0;			// Texture UV, Mask UV
 | 
			
		||||
			half4	param			: TEXCOORD1;			// Scale(x), BiasIn(y), BiasOut(z), Bias(w)
 | 
			
		||||
			half4	mask			: TEXCOORD2;			// Position in clip space(xy), Softness(zw)
 | 
			
		||||
			#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			float4	texcoord1		: TEXCOORD3;			// Texture UV, alpha, reserved
 | 
			
		||||
			half2	underlayParam	: TEXCOORD4;			// Scale(x), Bias(y)
 | 
			
		||||
			#endif
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		pixel_t VertShader(vertex_t input)
 | 
			
		||||
		{
 | 
			
		||||
			pixel_t output;
 | 
			
		||||
 | 
			
		||||
			UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
			UNITY_TRANSFER_INSTANCE_ID(input, output);
 | 
			
		||||
			UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
			float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
			float4 vert = input.vertex;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
			float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
 | 
			
		||||
 | 
			
		||||
			float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
			scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
			if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
 | 
			
		||||
			float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
			weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
			float layerScale = scale;
 | 
			
		||||
 | 
			
		||||
			scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
 | 
			
		||||
			float bias = (0.5 - weight) * scale - 0.5;
 | 
			
		||||
			float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale;
 | 
			
		||||
 | 
			
		||||
			float opacity = input.color.a;
 | 
			
		||||
			#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			opacity = 1.0;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor;
 | 
			
		||||
			faceColor.rgb *= faceColor.a;
 | 
			
		||||
 | 
			
		||||
			fixed4 outlineColor = _OutlineColor;
 | 
			
		||||
			outlineColor.a *= opacity;
 | 
			
		||||
			outlineColor.rgb *= outlineColor.a;
 | 
			
		||||
			outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2))));
 | 
			
		||||
 | 
			
		||||
			#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
 | 
			
		||||
			float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
 | 
			
		||||
 | 
			
		||||
			float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
			float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
			float2 layerOffset = float2(x, y);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			// Generate UV for the Masking Texture
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
			// Populate structure for pixel shader
 | 
			
		||||
			output.vertex = vPosition;
 | 
			
		||||
			output.faceColor = faceColor;
 | 
			
		||||
			output.outlineColor = outlineColor;
 | 
			
		||||
			output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y);
 | 
			
		||||
			output.param = half4(scale, bias - outline, bias + outline, bias);
 | 
			
		||||
			output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
			#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0);
 | 
			
		||||
			output.underlayParam = half2(layerScale, layerBias);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return output;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		// PIXEL SHADER
 | 
			
		||||
		fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
			half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x;
 | 
			
		||||
			half4 c = input.faceColor * saturate(d - input.param.w);
 | 
			
		||||
 | 
			
		||||
			#ifdef OUTLINE_ON
 | 
			
		||||
			c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z));
 | 
			
		||||
			c *= saturate(d - input.param.y);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNDERLAY_ON
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNDERLAY_INNER
 | 
			
		||||
			half sd = saturate(d - input.param.z);
 | 
			
		||||
			d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x;
 | 
			
		||||
			c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
			#if UNITY_UI_CLIP_RECT
 | 
			
		||||
			half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
 | 
			
		||||
			c *= m.x * m.y;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
			c *= input.texcoord1.z;
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			#if UNITY_UI_ALPHACLIP
 | 
			
		||||
			clip(c.a - 0.001);
 | 
			
		||||
			#endif
 | 
			
		||||
 | 
			
		||||
			return c;
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: fe393ace9b354375a9cb14cdbbc28be4
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										138
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										138
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,138 @@
 | 
			
		||||
// Simplified version of the SDF Surface shader :
 | 
			
		||||
// - No support for Bevel, Bump or envmap
 | 
			
		||||
// - Diffuse only lighting
 | 
			
		||||
// - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH.
 | 
			
		||||
 | 
			
		||||
Shader "TextMeshPro/Mobile/Distance Field (Surface)" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_FaceTex			("Fill Texture", 2D) = "white" {}
 | 
			
		||||
	[HDR]_FaceColor		("Fill Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineTex			("Outline Texture", 2D) = "white" {}
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0, 1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_GlowColor		("Color", Color) = (0, 1, 0, 0.5)
 | 
			
		||||
	_GlowOffset			("Offset", Range(-1,1)) = 0
 | 
			
		||||
	_GlowInner			("Inner", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowOuter			("Outer", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowPower			("Falloff", Range(1, 0)) = 0.75
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = 0.5
 | 
			
		||||
 | 
			
		||||
	// Should not be directly exposed to the user
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_MainTex			("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_TextureWidth		("Texture Width", float) = 512
 | 
			
		||||
	_TextureHeight		("Texture Height", float) = 512
 | 
			
		||||
	_GradientScale		("Gradient Scale", float) = 5.0
 | 
			
		||||
	_ScaleX				("Scale X", float) = 1.0
 | 
			
		||||
	_ScaleY				("Scale Y", float) = 1.0
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	//_MaskCoord		("Mask Coords", vector) = (0,0,0,0)
 | 
			
		||||
	//_MaskSoftness		("Mask Softness", float) = 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
 | 
			
		||||
	Tags {
 | 
			
		||||
		"Queue"="Transparent"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	LOD 300
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
 | 
			
		||||
	CGPROGRAM
 | 
			
		||||
	#pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap
 | 
			
		||||
	#pragma target 3.0
 | 
			
		||||
	#pragma shader_feature __ GLOW_ON
 | 
			
		||||
 | 
			
		||||
	#include "TMPro_Properties.cginc"
 | 
			
		||||
	#include "TMPro.cginc"
 | 
			
		||||
 | 
			
		||||
	half _FaceShininess;
 | 
			
		||||
	half _OutlineShininess;
 | 
			
		||||
 | 
			
		||||
	struct Input
 | 
			
		||||
	{
 | 
			
		||||
		fixed4	color		: COLOR;
 | 
			
		||||
		float2	uv_MainTex;
 | 
			
		||||
		float2	uv2_FaceTex;
 | 
			
		||||
		float2  uv2_OutlineTex;
 | 
			
		||||
		float2	param;					// Weight, Scale
 | 
			
		||||
		float3	viewDirEnv;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	#include "TMPro_Surface.cginc"
 | 
			
		||||
 | 
			
		||||
	ENDCG
 | 
			
		||||
 | 
			
		||||
	// Pass to render object as a shadow caster
 | 
			
		||||
	Pass
 | 
			
		||||
	{
 | 
			
		||||
		Name "Caster"
 | 
			
		||||
		Tags { "LightMode" = "ShadowCaster" }
 | 
			
		||||
		Offset 1, 1
 | 
			
		||||
 | 
			
		||||
		Fog {Mode Off}
 | 
			
		||||
		ZWrite On ZTest LEqual Cull Off
 | 
			
		||||
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex vert
 | 
			
		||||
		#pragma fragment frag
 | 
			
		||||
		#pragma multi_compile_shadowcaster
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
 | 
			
		||||
		struct v2f {
 | 
			
		||||
			V2F_SHADOW_CASTER;
 | 
			
		||||
			float2	uv			: TEXCOORD1;
 | 
			
		||||
			float2	uv2			: TEXCOORD3;
 | 
			
		||||
			float	alphaClip	: TEXCOORD2;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uniform float4 _MainTex_ST;
 | 
			
		||||
		uniform float4 _OutlineTex_ST;
 | 
			
		||||
		float _OutlineWidth;
 | 
			
		||||
		float _FaceDilate;
 | 
			
		||||
		float _ScaleRatioA;
 | 
			
		||||
 | 
			
		||||
		v2f vert( appdata_base v )
 | 
			
		||||
		{
 | 
			
		||||
			v2f o;
 | 
			
		||||
			TRANSFER_SHADOW_CASTER(o)
 | 
			
		||||
			o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
 | 
			
		||||
			o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
 | 
			
		||||
			o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
 | 
			
		||||
			return o;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		uniform sampler2D _MainTex;
 | 
			
		||||
 | 
			
		||||
		float4 frag(v2f i) : COLOR
 | 
			
		||||
		{
 | 
			
		||||
			fixed4 texcol = tex2D(_MainTex, i.uv).a;
 | 
			
		||||
			clip(texcol.a - i.alphaClip);
 | 
			
		||||
			SHADOW_CASTER_FRAGMENT(i)
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 85187c2149c549c5b33f0cdb02836b17
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										158
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										158
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,158 @@
 | 
			
		||||
Shader "TextMeshPro/Distance Field (Surface)" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_FaceTex			("Fill Texture", 2D) = "white" {}
 | 
			
		||||
	_FaceUVSpeedX		("Face UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_FaceUVSpeedY		("Face UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	[HDR]_FaceColor		("Fill Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineTex			("Outline Texture", 2D) = "white" {}
 | 
			
		||||
	_OutlineUVSpeedX	("Outline UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineUVSpeedY	("Outline UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0, 1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_Bevel				("Bevel", Range(0,1)) = 0.5
 | 
			
		||||
	_BevelOffset		("Bevel Offset", Range(-0.5,0.5)) = 0
 | 
			
		||||
	_BevelWidth			("Bevel Width", Range(-.5,0.5)) = 0
 | 
			
		||||
	_BevelClamp			("Bevel Clamp", Range(0,1)) = 0
 | 
			
		||||
	_BevelRoundness		("Bevel Roundness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_BumpMap 			("Normalmap", 2D) = "bump" {}
 | 
			
		||||
	_BumpOutline		("Bump Outline", Range(0,1)) = 0.5
 | 
			
		||||
	_BumpFace			("Bump Face", Range(0,1)) = 0.5
 | 
			
		||||
 | 
			
		||||
	_ReflectFaceColor	    ("Face Color", Color) = (0,0,0,1)
 | 
			
		||||
	_ReflectOutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_Cube 					("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
 | 
			
		||||
	_EnvMatrixRotation  	("Texture Rotation", vector) = (0, 0, 0, 0)
 | 
			
		||||
	[HDR]_SpecColor		    ("Specular Color", Color) = (0,0,0,1)
 | 
			
		||||
 | 
			
		||||
	_FaceShininess		("Face Shininess", Range(0,1)) = 0
 | 
			
		||||
	_OutlineShininess	("Outline Shininess", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_GlowColor		("Color", Color) = (0, 1, 0, 0.5)
 | 
			
		||||
	_GlowOffset			("Offset", Range(-1,1)) = 0
 | 
			
		||||
	_GlowInner			("Inner", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowOuter			("Outer", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowPower			("Falloff", Range(1, 0)) = 0.75
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = 0.5
 | 
			
		||||
 | 
			
		||||
	// Should not be directly exposed to the user
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_MainTex			("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_TextureWidth		("Texture Width", float) = 512
 | 
			
		||||
	_TextureHeight		("Texture Height", float) = 512
 | 
			
		||||
	_GradientScale		("Gradient Scale", float) = 5.0
 | 
			
		||||
	_ScaleX				("Scale X", float) = 1.0
 | 
			
		||||
	_ScaleY				("Scale Y", float) = 1.0
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	//_MaskCoord		("Mask Coords", vector) = (0,0,0,0)
 | 
			
		||||
	//_MaskSoftness		("Mask Softness", float) = 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
 | 
			
		||||
	Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
 | 
			
		||||
 | 
			
		||||
	LOD 300
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
 | 
			
		||||
	CGPROGRAM
 | 
			
		||||
	#pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap
 | 
			
		||||
	#pragma target 3.0
 | 
			
		||||
	#pragma shader_feature __ GLOW_ON
 | 
			
		||||
	#pragma glsl
 | 
			
		||||
 | 
			
		||||
	#include "TMPro_Properties.cginc"
 | 
			
		||||
	#include "TMPro.cginc"
 | 
			
		||||
 | 
			
		||||
	half _FaceShininess;
 | 
			
		||||
	half _OutlineShininess;
 | 
			
		||||
 | 
			
		||||
	struct Input
 | 
			
		||||
	{
 | 
			
		||||
		fixed4	color			: COLOR;
 | 
			
		||||
		float2	uv_MainTex;
 | 
			
		||||
		float2	uv2_FaceTex;
 | 
			
		||||
		float2  uv2_OutlineTex;
 | 
			
		||||
		float2	param;						// Weight, Scale
 | 
			
		||||
		float3	viewDirEnv;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	#define BEVEL_ON 1
 | 
			
		||||
	#include "TMPro_Surface.cginc"
 | 
			
		||||
 | 
			
		||||
	ENDCG
 | 
			
		||||
 | 
			
		||||
	// Pass to render object as a shadow caster
 | 
			
		||||
	Pass
 | 
			
		||||
	{
 | 
			
		||||
		Name "Caster"
 | 
			
		||||
		Tags { "LightMode" = "ShadowCaster" }
 | 
			
		||||
		Offset 1, 1
 | 
			
		||||
 | 
			
		||||
		Fog {Mode Off}
 | 
			
		||||
		ZWrite On
 | 
			
		||||
		ZTest LEqual
 | 
			
		||||
		Cull Off
 | 
			
		||||
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma vertex vert
 | 
			
		||||
		#pragma fragment frag
 | 
			
		||||
		#pragma multi_compile_shadowcaster
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
 | 
			
		||||
		struct v2f {
 | 
			
		||||
			V2F_SHADOW_CASTER;
 | 
			
		||||
			float2	uv			: TEXCOORD1;
 | 
			
		||||
			float2	uv2			: TEXCOORD3;
 | 
			
		||||
			float	alphaClip	: TEXCOORD2;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uniform float4 _MainTex_ST;
 | 
			
		||||
		uniform float4 _OutlineTex_ST;
 | 
			
		||||
		float _OutlineWidth;
 | 
			
		||||
		float _FaceDilate;
 | 
			
		||||
		float _ScaleRatioA;
 | 
			
		||||
 | 
			
		||||
		v2f vert( appdata_base v )
 | 
			
		||||
		{
 | 
			
		||||
			v2f o;
 | 
			
		||||
			TRANSFER_SHADOW_CASTER(o)
 | 
			
		||||
			o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
 | 
			
		||||
			o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex);
 | 
			
		||||
			o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2;
 | 
			
		||||
			return o;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		uniform sampler2D _MainTex;
 | 
			
		||||
 | 
			
		||||
		float4 frag(v2f i) : COLOR
 | 
			
		||||
		{
 | 
			
		||||
			fixed4 texcol = tex2D(_MainTex, i.uv).a;
 | 
			
		||||
			clip(texcol.a - i.alphaClip);
 | 
			
		||||
			SHADOW_CASTER_FRAGMENT(i)
 | 
			
		||||
		}
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: f7ada0af4f174f0694ca6a487b8f543d
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										317
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										317
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,317 @@
 | 
			
		||||
Shader "TextMeshPro/Distance Field" {
 | 
			
		||||
 | 
			
		||||
Properties {
 | 
			
		||||
	_FaceTex			("Face Texture", 2D) = "white" {}
 | 
			
		||||
	_FaceUVSpeedX		("Face UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_FaceUVSpeedY		("Face UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	[HDR]_FaceColor		("Face Color", Color) = (1,1,1,1)
 | 
			
		||||
	_FaceDilate			("Face Dilate", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_OutlineColor	("Outline Color", Color) = (0,0,0,1)
 | 
			
		||||
	_OutlineTex			("Outline Texture", 2D) = "white" {}
 | 
			
		||||
	_OutlineUVSpeedX	("Outline UV Speed X", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineUVSpeedY	("Outline UV Speed Y", Range(-5, 5)) = 0.0
 | 
			
		||||
	_OutlineWidth		("Outline Thickness", Range(0, 1)) = 0
 | 
			
		||||
	_OutlineSoftness	("Outline Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_Bevel				("Bevel", Range(0,1)) = 0.5
 | 
			
		||||
	_BevelOffset		("Bevel Offset", Range(-0.5,0.5)) = 0
 | 
			
		||||
	_BevelWidth			("Bevel Width", Range(-.5,0.5)) = 0
 | 
			
		||||
	_BevelClamp			("Bevel Clamp", Range(0,1)) = 0
 | 
			
		||||
	_BevelRoundness		("Bevel Roundness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_LightAngle			("Light Angle", Range(0.0, 6.2831853)) = 3.1416
 | 
			
		||||
	[HDR]_SpecularColor	("Specular", Color) = (1,1,1,1)
 | 
			
		||||
	_SpecularPower		("Specular", Range(0,4)) = 2.0
 | 
			
		||||
	_Reflectivity		("Reflectivity", Range(5.0,15.0)) = 10
 | 
			
		||||
	_Diffuse			("Diffuse", Range(0,1)) = 0.5
 | 
			
		||||
	_Ambient			("Ambient", Range(1,0)) = 0.5
 | 
			
		||||
 | 
			
		||||
	_BumpMap 			("Normal map", 2D) = "bump" {}
 | 
			
		||||
	_BumpOutline		("Bump Outline", Range(0,1)) = 0
 | 
			
		||||
	_BumpFace			("Bump Face", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_ReflectFaceColor	("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
	_ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1)
 | 
			
		||||
	_Cube 				("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ }
 | 
			
		||||
	_EnvMatrixRotation	("Texture Rotation", vector) = (0, 0, 0, 0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	[HDR]_UnderlayColor	("Border Color", Color) = (0,0,0, 0.5)
 | 
			
		||||
	_UnderlayOffsetX	("Border OffsetX", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayOffsetY	("Border OffsetY", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlayDilate		("Border Dilate", Range(-1,1)) = 0
 | 
			
		||||
	_UnderlaySoftness	("Border Softness", Range(0,1)) = 0
 | 
			
		||||
 | 
			
		||||
	[HDR]_GlowColor			("Color", Color) = (0, 1, 0, 0.5)
 | 
			
		||||
	_GlowOffset			("Offset", Range(-1,1)) = 0
 | 
			
		||||
	_GlowInner			("Inner", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowOuter			("Outer", Range(0,1)) = 0.05
 | 
			
		||||
	_GlowPower			("Falloff", Range(1, 0)) = 0.75
 | 
			
		||||
 | 
			
		||||
	_WeightNormal		("Weight Normal", float) = 0
 | 
			
		||||
	_WeightBold			("Weight Bold", float) = 0.5
 | 
			
		||||
 | 
			
		||||
	_ShaderFlags		("Flags", float) = 0
 | 
			
		||||
	_ScaleRatioA		("Scale RatioA", float) = 1
 | 
			
		||||
	_ScaleRatioB		("Scale RatioB", float) = 1
 | 
			
		||||
	_ScaleRatioC		("Scale RatioC", float) = 1
 | 
			
		||||
 | 
			
		||||
	_MainTex			("Font Atlas", 2D) = "white" {}
 | 
			
		||||
	_TextureWidth		("Texture Width", float) = 512
 | 
			
		||||
	_TextureHeight		("Texture Height", float) = 512
 | 
			
		||||
	_GradientScale		("Gradient Scale", float) = 5.0
 | 
			
		||||
	_ScaleX				("Scale X", float) = 1.0
 | 
			
		||||
	_ScaleY				("Scale Y", float) = 1.0
 | 
			
		||||
	_PerspectiveFilter	("Perspective Correction", Range(0, 1)) = 0.875
 | 
			
		||||
	_Sharpness			("Sharpness", Range(-1,1)) = 0
 | 
			
		||||
 | 
			
		||||
	_VertexOffsetX		("Vertex OffsetX", float) = 0
 | 
			
		||||
	_VertexOffsetY		("Vertex OffsetY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_MaskCoord			("Mask Coordinates", vector) = (0, 0, 32767, 32767)
 | 
			
		||||
	_ClipRect			("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
	_MaskSoftnessX		("Mask SoftnessX", float) = 0
 | 
			
		||||
	_MaskSoftnessY		("Mask SoftnessY", float) = 0
 | 
			
		||||
 | 
			
		||||
	_StencilComp		("Stencil Comparison", Float) = 8
 | 
			
		||||
	_Stencil			("Stencil ID", Float) = 0
 | 
			
		||||
	_StencilOp			("Stencil Operation", Float) = 0
 | 
			
		||||
	_StencilWriteMask	("Stencil Write Mask", Float) = 255
 | 
			
		||||
	_StencilReadMask	("Stencil Read Mask", Float) = 255
 | 
			
		||||
 | 
			
		||||
	_CullMode			("Cull Mode", Float) = 0
 | 
			
		||||
	_ColorMask			("Color Mask", Float) = 15
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SubShader {
 | 
			
		||||
 | 
			
		||||
	Tags
 | 
			
		||||
	{
 | 
			
		||||
		"Queue"="Transparent"
 | 
			
		||||
		"IgnoreProjector"="True"
 | 
			
		||||
		"RenderType"="Transparent"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Stencil
 | 
			
		||||
	{
 | 
			
		||||
		Ref [_Stencil]
 | 
			
		||||
		Comp [_StencilComp]
 | 
			
		||||
		Pass [_StencilOp]
 | 
			
		||||
		ReadMask [_StencilReadMask]
 | 
			
		||||
		WriteMask [_StencilWriteMask]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Cull [_CullMode]
 | 
			
		||||
	ZWrite Off
 | 
			
		||||
	Lighting Off
 | 
			
		||||
	Fog { Mode Off }
 | 
			
		||||
	ZTest [unity_GUIZTestMode]
 | 
			
		||||
	Blend One OneMinusSrcAlpha
 | 
			
		||||
	ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
	Pass {
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
		#pragma target 3.0
 | 
			
		||||
		#pragma vertex VertShader
 | 
			
		||||
		#pragma fragment PixShader
 | 
			
		||||
		#pragma shader_feature __ BEVEL_ON
 | 
			
		||||
		#pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER
 | 
			
		||||
		#pragma shader_feature __ GLOW_ON
 | 
			
		||||
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
		#pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
 | 
			
		||||
		#include "UnityCG.cginc"
 | 
			
		||||
		#include "UnityUI.cginc"
 | 
			
		||||
		#include "TMPro_Properties.cginc"
 | 
			
		||||
		#include "TMPro.cginc"
 | 
			
		||||
 | 
			
		||||
		struct vertex_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			float4	position		: POSITION;
 | 
			
		||||
			float3	normal			: NORMAL;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	texcoord0		: TEXCOORD0;
 | 
			
		||||
			float2	texcoord1		: TEXCOORD1;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		struct pixel_t {
 | 
			
		||||
			UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
			float4	position		: SV_POSITION;
 | 
			
		||||
			fixed4	color			: COLOR;
 | 
			
		||||
			float2	atlas			: TEXCOORD0;		// Atlas
 | 
			
		||||
			float4	param			: TEXCOORD1;		// alphaClip, scale, bias, weight
 | 
			
		||||
			float4	mask			: TEXCOORD2;		// Position in object space(xy), pixel Size(zw)
 | 
			
		||||
			float3	viewDir			: TEXCOORD3;
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			float4	texcoord2		: TEXCOORD4;		// u,v, scale, bias
 | 
			
		||||
			fixed4	underlayColor	: COLOR1;
 | 
			
		||||
		#endif
 | 
			
		||||
			float4 textures			: TEXCOORD5;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		// Used by Unity internally to handle Texture Tiling and Offset.
 | 
			
		||||
		float4 _FaceTex_ST;
 | 
			
		||||
		float4 _OutlineTex_ST;
 | 
			
		||||
 | 
			
		||||
		pixel_t VertShader(vertex_t input)
 | 
			
		||||
		{
 | 
			
		||||
			pixel_t output;
 | 
			
		||||
 | 
			
		||||
			UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
			UNITY_TRANSFER_INSTANCE_ID(input,output);
 | 
			
		||||
			UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
			float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
			float4 vert = input.position;
 | 
			
		||||
			vert.x += _VertexOffsetX;
 | 
			
		||||
			vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
			float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
			float2 pixelSize = vPosition.w;
 | 
			
		||||
			pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
 | 
			
		||||
			float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
			scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
			if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
 | 
			
		||||
			float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
			weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
			float bias =(.5 - weight) + (.5 / scale);
 | 
			
		||||
 | 
			
		||||
			float alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _OutlineSoftness * _ScaleRatioA);
 | 
			
		||||
 | 
			
		||||
		#if GLOW_ON
 | 
			
		||||
			alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight;
 | 
			
		||||
 | 
			
		||||
		#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			float4 underlayColor = _UnderlayColor;
 | 
			
		||||
			underlayColor.rgb *= underlayColor.a;
 | 
			
		||||
 | 
			
		||||
			float bScale = scale;
 | 
			
		||||
			bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale);
 | 
			
		||||
			float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale);
 | 
			
		||||
 | 
			
		||||
			float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
			float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
			float2 bOffset = float2(x, y);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			// Generate UV for the Masking Texture
 | 
			
		||||
			float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
			float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
			// Support for texture tiling and offset
 | 
			
		||||
			float2 textureUV = UnpackUV(input.texcoord1.x);
 | 
			
		||||
			float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex);
 | 
			
		||||
			float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			output.position = vPosition;
 | 
			
		||||
			output.color = input.color;
 | 
			
		||||
			output.atlas =	input.texcoord0;
 | 
			
		||||
			output.param =	float4(alphaClip, scale, bias, weight);
 | 
			
		||||
			output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy));
 | 
			
		||||
			output.viewDir =	mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz);
 | 
			
		||||
			#if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
			output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias);
 | 
			
		||||
			output.underlayColor =	underlayColor;
 | 
			
		||||
			#endif
 | 
			
		||||
			output.textures = float4(faceUV, outlineUV);
 | 
			
		||||
 | 
			
		||||
			return output;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		fixed4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
		{
 | 
			
		||||
			UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
			float c = tex2D(_MainTex, input.atlas).a;
 | 
			
		||||
 | 
			
		||||
		#ifndef UNDERLAY_ON
 | 
			
		||||
			clip(c - input.param.x);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
			float	scale	= input.param.y;
 | 
			
		||||
			float	bias	= input.param.z;
 | 
			
		||||
			float	weight	= input.param.w;
 | 
			
		||||
			float	sd = (bias - c) * scale;
 | 
			
		||||
 | 
			
		||||
			float outline = (_OutlineWidth * _ScaleRatioA) * scale;
 | 
			
		||||
			float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
 | 
			
		||||
 | 
			
		||||
			half4 faceColor = _FaceColor;
 | 
			
		||||
			half4 outlineColor = _OutlineColor;
 | 
			
		||||
 | 
			
		||||
			faceColor.rgb *= input.color.rgb;
 | 
			
		||||
 | 
			
		||||
			faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y);
 | 
			
		||||
			outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
 | 
			
		||||
 | 
			
		||||
			faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
 | 
			
		||||
 | 
			
		||||
		#if BEVEL_ON
 | 
			
		||||
			float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0);
 | 
			
		||||
			float3 n = GetSurfaceNormal(input.atlas, weight, dxy);
 | 
			
		||||
 | 
			
		||||
			float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz;
 | 
			
		||||
			bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
 | 
			
		||||
			n = normalize(n- bump);
 | 
			
		||||
 | 
			
		||||
			float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0));
 | 
			
		||||
 | 
			
		||||
			float3 col = GetSpecular(n, light);
 | 
			
		||||
			faceColor.rgb += col*faceColor.a;
 | 
			
		||||
			faceColor.rgb *= 1-(dot(n, light)*_Diffuse);
 | 
			
		||||
			faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z);
 | 
			
		||||
 | 
			
		||||
			fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n));
 | 
			
		||||
			faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_ON
 | 
			
		||||
			float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
 | 
			
		||||
			faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNDERLAY_INNER
 | 
			
		||||
			float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z;
 | 
			
		||||
			faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if GLOW_ON
 | 
			
		||||
			float4 glowColor = GetGlowColor(sd, scale);
 | 
			
		||||
			faceColor.rgb += glowColor.rgb * glowColor.a;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		// Alternative implementation to UnityGet2DClipping with support for softness.
 | 
			
		||||
		#if UNITY_UI_CLIP_RECT
 | 
			
		||||
			half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw);
 | 
			
		||||
			faceColor *= m.x * m.y;
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
		#if UNITY_UI_ALPHACLIP
 | 
			
		||||
			clip(faceColor.a - 0.001);
 | 
			
		||||
		#endif
 | 
			
		||||
 | 
			
		||||
  		return faceColor * input.color.a;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ENDCG
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Fallback "TextMeshPro/Mobile/Distance Field"
 | 
			
		||||
CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 68e6db2ebdc24f95958faec2be5558d6
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										116
									
								
								Assets/TextMesh Pro/Shaders/TMP_Sprite.shader
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										116
									
								
								Assets/TextMesh Pro/Shaders/TMP_Sprite.shader
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
Shader "TextMeshPro/Sprite"
 | 
			
		||||
{
 | 
			
		||||
	Properties
 | 
			
		||||
	{
 | 
			
		||||
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
 | 
			
		||||
		_Color ("Tint", Color) = (1,1,1,1)
 | 
			
		||||
		
 | 
			
		||||
		_StencilComp ("Stencil Comparison", Float) = 8
 | 
			
		||||
		_Stencil ("Stencil ID", Float) = 0
 | 
			
		||||
		_StencilOp ("Stencil Operation", Float) = 0
 | 
			
		||||
		_StencilWriteMask ("Stencil Write Mask", Float) = 255
 | 
			
		||||
		_StencilReadMask ("Stencil Read Mask", Float) = 255
 | 
			
		||||
		
 | 
			
		||||
		_CullMode ("Cull Mode", Float) = 0
 | 
			
		||||
		_ColorMask ("Color Mask", Float) = 15
 | 
			
		||||
		_ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767)
 | 
			
		||||
 | 
			
		||||
		[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SubShader
 | 
			
		||||
	{
 | 
			
		||||
		Tags
 | 
			
		||||
		{ 
 | 
			
		||||
			"Queue"="Transparent" 
 | 
			
		||||
			"IgnoreProjector"="True" 
 | 
			
		||||
			"RenderType"="Transparent" 
 | 
			
		||||
			"PreviewType"="Plane"
 | 
			
		||||
			"CanUseSpriteAtlas"="True"
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		Stencil
 | 
			
		||||
		{
 | 
			
		||||
			Ref [_Stencil]
 | 
			
		||||
			Comp [_StencilComp]
 | 
			
		||||
			Pass [_StencilOp] 
 | 
			
		||||
			ReadMask [_StencilReadMask]
 | 
			
		||||
			WriteMask [_StencilWriteMask]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Cull [_CullMode]
 | 
			
		||||
		Lighting Off
 | 
			
		||||
		ZWrite Off
 | 
			
		||||
		ZTest [unity_GUIZTestMode]
 | 
			
		||||
		Blend SrcAlpha OneMinusSrcAlpha
 | 
			
		||||
		ColorMask [_ColorMask]
 | 
			
		||||
 | 
			
		||||
		Pass
 | 
			
		||||
		{
 | 
			
		||||
            Name "Default"
 | 
			
		||||
		CGPROGRAM
 | 
			
		||||
			#pragma vertex vert
 | 
			
		||||
			#pragma fragment frag
 | 
			
		||||
            #pragma target 2.0
 | 
			
		||||
 | 
			
		||||
			#include "UnityCG.cginc"
 | 
			
		||||
			#include "UnityUI.cginc"
 | 
			
		||||
 | 
			
		||||
            #pragma multi_compile __ UNITY_UI_CLIP_RECT
 | 
			
		||||
            #pragma multi_compile __ UNITY_UI_ALPHACLIP
 | 
			
		||||
			
 | 
			
		||||
			struct appdata_t
 | 
			
		||||
			{
 | 
			
		||||
				float4 vertex   : POSITION;
 | 
			
		||||
				float4 color    : COLOR;
 | 
			
		||||
				float2 texcoord : TEXCOORD0;
 | 
			
		||||
                UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			struct v2f
 | 
			
		||||
			{
 | 
			
		||||
				float4 vertex   : SV_POSITION;
 | 
			
		||||
				fixed4 color    : COLOR;
 | 
			
		||||
                float2 texcoord  : TEXCOORD0;
 | 
			
		||||
				float4 worldPosition : TEXCOORD1;
 | 
			
		||||
                UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
			};
 | 
			
		||||
			
 | 
			
		||||
            sampler2D _MainTex;
 | 
			
		||||
			fixed4 _Color;
 | 
			
		||||
			fixed4 _TextureSampleAdd;
 | 
			
		||||
			float4 _ClipRect;
 | 
			
		||||
            float4 _MainTex_ST;
 | 
			
		||||
 | 
			
		||||
            v2f vert(appdata_t v)
 | 
			
		||||
			{
 | 
			
		||||
				v2f OUT;
 | 
			
		||||
                UNITY_SETUP_INSTANCE_ID(v);
 | 
			
		||||
                UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
 | 
			
		||||
                OUT.worldPosition = v.vertex;
 | 
			
		||||
				OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
 | 
			
		||||
 | 
			
		||||
                OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
 | 
			
		||||
				
 | 
			
		||||
                OUT.color = v.color * _Color;
 | 
			
		||||
				return OUT;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			fixed4 frag(v2f IN) : SV_Target
 | 
			
		||||
			{
 | 
			
		||||
				half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
 | 
			
		||||
				
 | 
			
		||||
                #ifdef UNITY_UI_CLIP_RECT
 | 
			
		||||
					color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
 | 
			
		||||
				#endif
 | 
			
		||||
 | 
			
		||||
				#ifdef UNITY_UI_ALPHACLIP
 | 
			
		||||
					clip (color.a - 0.001);
 | 
			
		||||
				#endif
 | 
			
		||||
 | 
			
		||||
				return color;
 | 
			
		||||
			}
 | 
			
		||||
		ENDCG
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: cf81c85f95fe47e1a27f6ae460cf182c
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										84
									
								
								Assets/TextMesh Pro/Shaders/TMPro.cginc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								Assets/TextMesh Pro/Shaders/TMPro.cginc
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
float2 UnpackUV(float uv)
 | 
			
		||||
{ 
 | 
			
		||||
	float2 output;
 | 
			
		||||
	output.x = floor(uv / 4096);
 | 
			
		||||
	output.y = uv - 4096 * output.x;
 | 
			
		||||
 | 
			
		||||
	return output * 0.001953125;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness)
 | 
			
		||||
{
 | 
			
		||||
	half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness));
 | 
			
		||||
	half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline));
 | 
			
		||||
 | 
			
		||||
	faceColor.rgb *= faceColor.a;
 | 
			
		||||
	outlineColor.rgb *= outlineColor.a;
 | 
			
		||||
 | 
			
		||||
	faceColor = lerp(faceColor, outlineColor, outlineAlpha);
 | 
			
		||||
 | 
			
		||||
	faceColor *= faceAlpha;
 | 
			
		||||
 | 
			
		||||
	return faceColor;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float3 GetSurfaceNormal(float4 h, float bias)
 | 
			
		||||
{
 | 
			
		||||
	bool raisedBevel = step(1, fmod(_ShaderFlags, 2));
 | 
			
		||||
 | 
			
		||||
	h += bias+_BevelOffset;
 | 
			
		||||
 | 
			
		||||
	float bevelWidth = max(.01, _OutlineWidth+_BevelWidth);
 | 
			
		||||
 | 
			
		||||
  // Track outline
 | 
			
		||||
	h -= .5;
 | 
			
		||||
	h /= bevelWidth;
 | 
			
		||||
	h = saturate(h+.5);
 | 
			
		||||
 | 
			
		||||
	if(raisedBevel) h = 1 - abs(h*2.0 - 1.0);
 | 
			
		||||
	h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness);
 | 
			
		||||
	h = min(h, 1.0-_BevelClamp);
 | 
			
		||||
	h *= _Bevel * bevelWidth * _GradientScale * -2.0;
 | 
			
		||||
 | 
			
		||||
	float3 va = normalize(float3(1.0, 0.0, h.y - h.x));
 | 
			
		||||
	float3 vb = normalize(float3(0.0, -1.0, h.w - h.z));
 | 
			
		||||
 | 
			
		||||
	return cross(va, vb);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float3 GetSurfaceNormal(float2 uv, float bias, float3 delta)
 | 
			
		||||
{
 | 
			
		||||
	// Read "height field"
 | 
			
		||||
  float4 h = {tex2D(_MainTex, uv - delta.xz).a,
 | 
			
		||||
				tex2D(_MainTex, uv + delta.xz).a,
 | 
			
		||||
				tex2D(_MainTex, uv - delta.zy).a,
 | 
			
		||||
				tex2D(_MainTex, uv + delta.zy).a};
 | 
			
		||||
 | 
			
		||||
	return GetSurfaceNormal(h, bias);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float3 GetSpecular(float3 n, float3 l)
 | 
			
		||||
{
 | 
			
		||||
	float spec = pow(max(0.0, dot(n, l)), _Reflectivity);
 | 
			
		||||
	return _SpecularColor.rgb * spec * _SpecularPower;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float4 GetGlowColor(float d, float scale)
 | 
			
		||||
{
 | 
			
		||||
	float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale;
 | 
			
		||||
	float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale;
 | 
			
		||||
	glow = saturate(abs(glow/(1.0 + t)));
 | 
			
		||||
	glow = 1.0-pow(glow, _GlowPower);
 | 
			
		||||
	glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel
 | 
			
		||||
	return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float4 BlendARGB(float4 overlying, float4 underlying)
 | 
			
		||||
{
 | 
			
		||||
	overlying.rgb *= overlying.a;
 | 
			
		||||
	underlying.rgb *= underlying.a;
 | 
			
		||||
	float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb);
 | 
			
		||||
	float alpha = underlying.a + (1-underlying.a)*overlying.a;
 | 
			
		||||
	return float4(blended, alpha);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro.cginc.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro.cginc.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 407bc68d299748449bbf7f48ee690f8d
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										157
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										157
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,157 @@
 | 
			
		||||
struct vertex_t {
 | 
			
		||||
    UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
    float4	position		: POSITION;
 | 
			
		||||
    float3	normal			: NORMAL;
 | 
			
		||||
    float4	color			: COLOR;
 | 
			
		||||
    float2	texcoord0		: TEXCOORD0;
 | 
			
		||||
    float2	texcoord1		: TEXCOORD1;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct pixel_t {
 | 
			
		||||
    UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
			
		||||
    UNITY_VERTEX_OUTPUT_STEREO
 | 
			
		||||
    float4	position		: SV_POSITION;
 | 
			
		||||
    float4	faceColor		: COLOR;
 | 
			
		||||
    float4	outlineColor	: COLOR1;
 | 
			
		||||
    float4	texcoord0		: TEXCOORD0;
 | 
			
		||||
    float4	param			: TEXCOORD1;		// weight, scaleRatio
 | 
			
		||||
    float2	mask			: TEXCOORD2;
 | 
			
		||||
    #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
    float4	texcoord2		: TEXCOORD3;
 | 
			
		||||
    float4	underlayColor	: COLOR2;
 | 
			
		||||
    #endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
float4 SRGBToLinear(float4 rgba) {
 | 
			
		||||
    return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pixel_t VertShader(vertex_t input)
 | 
			
		||||
{
 | 
			
		||||
    pixel_t output;
 | 
			
		||||
 | 
			
		||||
    UNITY_INITIALIZE_OUTPUT(pixel_t, output);
 | 
			
		||||
    UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
    UNITY_TRANSFER_INSTANCE_ID(input, output);
 | 
			
		||||
    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 | 
			
		||||
 | 
			
		||||
    float bold = step(input.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
    float4 vert = input.position;
 | 
			
		||||
    vert.x += _VertexOffsetX;
 | 
			
		||||
    vert.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
    float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
 | 
			
		||||
    float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0;
 | 
			
		||||
    weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5;
 | 
			
		||||
 | 
			
		||||
    // Generate UV for the Masking Texture
 | 
			
		||||
    float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
 | 
			
		||||
    float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
 | 
			
		||||
 | 
			
		||||
    float4 color = input.color;
 | 
			
		||||
    #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA)
 | 
			
		||||
    color = SRGBToLinear(input.color);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    float opacity = color.a;
 | 
			
		||||
    #if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
    opacity = 1.0;
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    float4 faceColor = float4(color.rgb, opacity) * _FaceColor;
 | 
			
		||||
    faceColor.rgb *= faceColor.a;
 | 
			
		||||
 | 
			
		||||
    float4 outlineColor = _OutlineColor;
 | 
			
		||||
    outlineColor.a *= opacity;
 | 
			
		||||
    outlineColor.rgb *= outlineColor.a;
 | 
			
		||||
 | 
			
		||||
    output.position = vPosition;
 | 
			
		||||
    output.faceColor = faceColor;
 | 
			
		||||
    output.outlineColor = outlineColor;
 | 
			
		||||
    output.texcoord0 = float4(input.texcoord0.xy, maskUV.xy);
 | 
			
		||||
    output.param = float4(0.5 - weight, 1.3333 * _GradientScale * (_Sharpness + 1) / _TextureWidth, _OutlineWidth * _ScaleRatioA * 0.5, 0);
 | 
			
		||||
 | 
			
		||||
    float2 mask = float2(0, 0);
 | 
			
		||||
    #if UNITY_UI_CLIP_RECT
 | 
			
		||||
    mask = vert.xy * 2 - clampedRect.xy - clampedRect.zw;
 | 
			
		||||
    #endif
 | 
			
		||||
    output.mask = mask;
 | 
			
		||||
 | 
			
		||||
    #if (UNDERLAY_ON || UNDERLAY_INNER)
 | 
			
		||||
    float4 underlayColor = _UnderlayColor;
 | 
			
		||||
    underlayColor.rgb *= underlayColor.a;
 | 
			
		||||
 | 
			
		||||
    float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth;
 | 
			
		||||
    float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight;
 | 
			
		||||
 | 
			
		||||
    output.texcoord2 = float4(input.texcoord0 + float2(x, y), input.color.a, 0);
 | 
			
		||||
    output.underlayColor = underlayColor;
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    return output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float4 PixShader(pixel_t input) : SV_Target
 | 
			
		||||
{
 | 
			
		||||
    UNITY_SETUP_INSTANCE_ID(input);
 | 
			
		||||
 | 
			
		||||
    float d = tex2D(_MainTex, input.texcoord0.xy).a;
 | 
			
		||||
 | 
			
		||||
    float2 UV = input.texcoord0.xy;
 | 
			
		||||
    float scale = rsqrt(abs(ddx(UV.x) * ddy(UV.y) - ddy(UV.x) * ddx(UV.y))) * input.param.y;
 | 
			
		||||
 | 
			
		||||
    #if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
    float layerScale = scale;
 | 
			
		||||
    layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale);
 | 
			
		||||
    float layerBias = input.param.x * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale);
 | 
			
		||||
 | 
			
		||||
    float4 faceColor = input.faceColor * saturate((d - input.param.x) * scale + 0.5);
 | 
			
		||||
 | 
			
		||||
    #ifdef OUTLINE_ON
 | 
			
		||||
    float4 outlineColor = lerp(input.faceColor, input.outlineColor, sqrt(min(1.0, input.param.z * scale * 2)));
 | 
			
		||||
    faceColor = lerp(outlineColor, input.faceColor, saturate((d - input.param.x - input.param.z) * scale + 0.5));
 | 
			
		||||
    faceColor *= saturate((d - input.param.x + input.param.z) * scale + 0.5);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if UNDERLAY_ON
 | 
			
		||||
    d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale;
 | 
			
		||||
    faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - layerBias) * (1 - faceColor.a);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if UNDERLAY_INNER
 | 
			
		||||
    float bias = input.param.x * scale - 0.5;
 | 
			
		||||
    float sd = saturate(d * scale - bias - input.param.z);
 | 
			
		||||
    d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale;
 | 
			
		||||
    faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - layerBias)) * sd * (1 - faceColor.a);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #ifdef MASKING
 | 
			
		||||
    float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a);
 | 
			
		||||
    float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl;
 | 
			
		||||
    a = saturate(t / _MaskEdgeSoftness);
 | 
			
		||||
    faceColor.rgb = lerp(_MaskEdgeColor.rgb * faceColor.a, faceColor.rgb, a);
 | 
			
		||||
    faceColor *= a;
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    // Alternative implementation to UnityGet2DClipping with support for softness
 | 
			
		||||
    #if UNITY_UI_CLIP_RECT
 | 
			
		||||
    float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale));
 | 
			
		||||
    float2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW);
 | 
			
		||||
    faceColor *= m.x * m.y;
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if (UNDERLAY_ON | UNDERLAY_INNER)
 | 
			
		||||
    faceColor *= input.texcoord2.z;
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    #if UNITY_UI_ALPHACLIP
 | 
			
		||||
    clip(faceColor.a - 0.001);
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    return faceColor;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: c334973cef89a9840b0b0c507e0377ab
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										85
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										85
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
// UI Editable properties
 | 
			
		||||
uniform sampler2D	_FaceTex;					// Alpha : Signed Distance
 | 
			
		||||
uniform float		_FaceUVSpeedX;
 | 
			
		||||
uniform float		_FaceUVSpeedY;
 | 
			
		||||
uniform fixed4		_FaceColor;					// RGBA : Color + Opacity
 | 
			
		||||
uniform float		_FaceDilate;				// v[ 0, 1]
 | 
			
		||||
uniform float		_OutlineSoftness;			// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform sampler2D	_OutlineTex;				// RGBA : Color + Opacity
 | 
			
		||||
uniform float		_OutlineUVSpeedX;
 | 
			
		||||
uniform float		_OutlineUVSpeedY;
 | 
			
		||||
uniform fixed4		_OutlineColor;				// RGBA : Color + Opacity
 | 
			
		||||
uniform float		_OutlineWidth;				// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform float		_Bevel;						// v[ 0, 1]
 | 
			
		||||
uniform float		_BevelOffset;				// v[-1, 1]
 | 
			
		||||
uniform float		_BevelWidth;				// v[-1, 1]
 | 
			
		||||
uniform float		_BevelClamp;				// v[ 0, 1]
 | 
			
		||||
uniform float		_BevelRoundness;			// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform sampler2D	_BumpMap;					// Normal map
 | 
			
		||||
uniform float		_BumpOutline;				// v[ 0, 1]
 | 
			
		||||
uniform float		_BumpFace;					// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform samplerCUBE	_Cube;						// Cube / sphere map
 | 
			
		||||
uniform fixed4 		_ReflectFaceColor;			// RGB intensity
 | 
			
		||||
uniform fixed4		_ReflectOutlineColor;
 | 
			
		||||
//uniform float		_EnvTiltX;					// v[-1, 1]
 | 
			
		||||
//uniform float		_EnvTiltY;					// v[-1, 1]
 | 
			
		||||
uniform float3      _EnvMatrixRotation;
 | 
			
		||||
uniform float4x4	_EnvMatrix;
 | 
			
		||||
 | 
			
		||||
uniform fixed4		_SpecularColor;				// RGB intensity
 | 
			
		||||
uniform float		_LightAngle;				// v[ 0,Tau]
 | 
			
		||||
uniform float		_SpecularPower;				// v[ 0, 1]
 | 
			
		||||
uniform float		_Reflectivity;				// v[ 5, 15]
 | 
			
		||||
uniform float		_Diffuse;					// v[ 0, 1]
 | 
			
		||||
uniform float		_Ambient;					// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform fixed4		_UnderlayColor;				// RGBA : Color + Opacity
 | 
			
		||||
uniform float		_UnderlayOffsetX;			// v[-1, 1]
 | 
			
		||||
uniform float		_UnderlayOffsetY;			// v[-1, 1]
 | 
			
		||||
uniform float		_UnderlayDilate;			// v[-1, 1]
 | 
			
		||||
uniform float		_UnderlaySoftness;			// v[ 0, 1]
 | 
			
		||||
 | 
			
		||||
uniform fixed4 		_GlowColor;					// RGBA : Color + Intesity
 | 
			
		||||
uniform float 		_GlowOffset;				// v[-1, 1]
 | 
			
		||||
uniform float 		_GlowOuter;					// v[ 0, 1]
 | 
			
		||||
uniform float 		_GlowInner;					// v[ 0, 1]
 | 
			
		||||
uniform float 		_GlowPower;					// v[ 1, 1/(1+4*4)]
 | 
			
		||||
 | 
			
		||||
// API Editable properties
 | 
			
		||||
uniform float 		_ShaderFlags;
 | 
			
		||||
uniform float		_WeightNormal;
 | 
			
		||||
uniform float		_WeightBold;
 | 
			
		||||
 | 
			
		||||
uniform float		_ScaleRatioA;
 | 
			
		||||
uniform float		_ScaleRatioB;
 | 
			
		||||
uniform float		_ScaleRatioC;
 | 
			
		||||
 | 
			
		||||
uniform float		_VertexOffsetX;
 | 
			
		||||
uniform float		_VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
//uniform float		_UseClipRect;
 | 
			
		||||
uniform float		_MaskID;
 | 
			
		||||
uniform sampler2D	_MaskTex;
 | 
			
		||||
uniform float4		_MaskCoord;
 | 
			
		||||
uniform float4		_ClipRect;	// bottom left(x,y) : top right(z,w)
 | 
			
		||||
//uniform float		_MaskWipeControl;
 | 
			
		||||
//uniform float		_MaskEdgeSoftness;
 | 
			
		||||
//uniform fixed4		_MaskEdgeColor;
 | 
			
		||||
//uniform bool		_MaskInverse;
 | 
			
		||||
 | 
			
		||||
uniform float		_MaskSoftnessX;
 | 
			
		||||
uniform float		_MaskSoftnessY;
 | 
			
		||||
 | 
			
		||||
// Font Atlas properties
 | 
			
		||||
uniform sampler2D	_MainTex;
 | 
			
		||||
uniform float		_TextureWidth;
 | 
			
		||||
uniform float		_TextureHeight;
 | 
			
		||||
uniform float 		_GradientScale;
 | 
			
		||||
uniform float		_ScaleX;
 | 
			
		||||
uniform float		_ScaleY;
 | 
			
		||||
uniform float		_PerspectiveFilter;
 | 
			
		||||
uniform float		_Sharpness;
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 3997e2241185407d80309a82f9148466
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										101
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										101
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
void VertShader(inout appdata_full v, out Input data)
 | 
			
		||||
{
 | 
			
		||||
	v.vertex.x += _VertexOffsetX;
 | 
			
		||||
	v.vertex.y += _VertexOffsetY;
 | 
			
		||||
 | 
			
		||||
	UNITY_INITIALIZE_OUTPUT(Input, data);
 | 
			
		||||
 | 
			
		||||
	float bold = step(v.texcoord1.y, 0);
 | 
			
		||||
 | 
			
		||||
	// Generate normal for backface
 | 
			
		||||
	float3 view = ObjSpaceViewDir(v.vertex);
 | 
			
		||||
	v.normal *= sign(dot(v.normal, view));
 | 
			
		||||
 | 
			
		||||
#if USE_DERIVATIVE
 | 
			
		||||
	data.param.y = 1;
 | 
			
		||||
#else
 | 
			
		||||
	float4 vert = v.vertex;
 | 
			
		||||
	float4 vPosition = UnityObjectToClipPos(vert);
 | 
			
		||||
	float2 pixelSize = vPosition.w;
 | 
			
		||||
 | 
			
		||||
	pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy);
 | 
			
		||||
	float scale = rsqrt(dot(pixelSize, pixelSize));
 | 
			
		||||
	scale *= abs(v.texcoord1.y) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
	scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
 | 
			
		||||
	data.param.y = scale;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; // 
 | 
			
		||||
 | 
			
		||||
	v.texcoord1.xy = UnpackUV(v.texcoord1.x);
 | 
			
		||||
	data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PixShader(Input input, inout SurfaceOutput o)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#if USE_DERIVATIVE
 | 
			
		||||
	float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y));
 | 
			
		||||
	pixelSize *= _TextureWidth * .75;
 | 
			
		||||
	float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1);
 | 
			
		||||
#else
 | 
			
		||||
	float scale = input.param.y;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// Signed distance
 | 
			
		||||
	float c = tex2D(_MainTex, input.uv_MainTex).a;
 | 
			
		||||
	float sd = (.5 - c - input.param.x) * scale + .5;
 | 
			
		||||
	float outline = _OutlineWidth*_ScaleRatioA * scale;
 | 
			
		||||
	float softness = _OutlineSoftness*_ScaleRatioA * scale;
 | 
			
		||||
 | 
			
		||||
	// Color & Alpha
 | 
			
		||||
	float4 faceColor = _FaceColor;
 | 
			
		||||
	float4 outlineColor = _OutlineColor;
 | 
			
		||||
	faceColor *= input.color;
 | 
			
		||||
	outlineColor.a *= input.color.a;
 | 
			
		||||
	faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y));
 | 
			
		||||
	outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y));
 | 
			
		||||
	faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
 | 
			
		||||
	faceColor.rgb /= max(faceColor.a, 0.0001);
 | 
			
		||||
 | 
			
		||||
#if BEVEL_ON
 | 
			
		||||
	float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0);
 | 
			
		||||
 | 
			
		||||
	float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a,
 | 
			
		||||
					tex2D(_MainTex, input.uv_MainTex + delta.xz).a,
 | 
			
		||||
					tex2D(_MainTex, input.uv_MainTex - delta.zy).a,
 | 
			
		||||
					tex2D(_MainTex, input.uv_MainTex + delta.zy).a };
 | 
			
		||||
 | 
			
		||||
	// Face Normal
 | 
			
		||||
	float3 n = GetSurfaceNormal(smp4x, input.param.x);
 | 
			
		||||
 | 
			
		||||
	// Bumpmap
 | 
			
		||||
	float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz;
 | 
			
		||||
	bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
 | 
			
		||||
	bump = lerp(float3(0, 0, 1), bump, faceColor.a);
 | 
			
		||||
	n = normalize(n - bump);
 | 
			
		||||
 | 
			
		||||
	// Cubemap reflection
 | 
			
		||||
	fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n)));
 | 
			
		||||
	float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
 | 
			
		||||
#else
 | 
			
		||||
	float3 n = float3(0, 0, -1);
 | 
			
		||||
	float3 emission = float3(0, 0, 0);
 | 
			
		||||
#endif
 | 
			
		||||
	
 | 
			
		||||
#if GLOW_ON
 | 
			
		||||
	float4 glowColor = GetGlowColor(sd, scale);
 | 
			
		||||
	glowColor.a *= input.color.a;
 | 
			
		||||
	emission += glowColor.rgb*glowColor.a;
 | 
			
		||||
	faceColor = BlendARGB(glowColor, faceColor);
 | 
			
		||||
	faceColor.rgb /= max(faceColor.a, 0.0001);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// Set Standard output structure
 | 
			
		||||
	o.Albedo = faceColor.rgb;
 | 
			
		||||
	o.Normal = -n;
 | 
			
		||||
	o.Emission = emission;
 | 
			
		||||
	o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5));
 | 
			
		||||
	o.Gloss = 1;
 | 
			
		||||
	o.Alpha = faceColor.a;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d930090c0cd643c7b55f19a38538c162
 | 
			
		||||
ShaderImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  defaultTextures: []
 | 
			
		||||
  nonModifiableTextures: []
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
		Reference in New Issue
	
	Block a user