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