You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			149 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
		
		
			
		
	
	
			149 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
| 
											2 years ago
										 | // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' | ||
|  | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' | ||
|  | 
 | ||
|  | Shader "FairyGUI/Text" | ||
|  | { | ||
|  |     Properties | ||
|  |     { | ||
|  |         _MainTex ("Alpha (A)", 2D) = "white" {} | ||
|  | 
 | ||
|  |         _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 | ||
|  | 
 | ||
|  |         _ColorMask ("Color Mask", Float) = 15 | ||
|  | 
 | ||
|  |         _BlendSrcFactor ("Blend SrcFactor", Float) = 5 | ||
|  |         _BlendDstFactor ("Blend DstFactor", Float) = 10 | ||
|  |     } | ||
|  | 
 | ||
|  |     SubShader | ||
|  |     { | ||
|  |         LOD 100 | ||
|  | 
 | ||
|  |         Tags | ||
|  |         { | ||
|  |             "Queue" = "Transparent" | ||
|  |             "IgnoreProjector" = "True" | ||
|  |             "RenderType" = "Transparent" | ||
|  |         } | ||
|  | 
 | ||
|  |         Stencil | ||
|  |         { | ||
|  |             Ref [_Stencil] | ||
|  |             Comp [_StencilComp] | ||
|  |             Pass [_StencilOp]  | ||
|  |             ReadMask [_StencilReadMask] | ||
|  |             WriteMask [_StencilWriteMask] | ||
|  |         } | ||
|  | 
 | ||
|  |         Cull Off | ||
|  |         Lighting Off | ||
|  |         ZWrite Off | ||
|  |         Fog { Mode Off } | ||
|  |         Blend [_BlendSrcFactor] [_BlendDstFactor] | ||
|  |         ColorMask [_ColorMask] | ||
|  | 
 | ||
|  |         Pass | ||
|  |         { | ||
|  |             CGPROGRAM | ||
|  |                 #pragma multi_compile NOT_GRAYED GRAYED | ||
|  |                 #pragma multi_compile NOT_CLIPPED CLIPPED SOFT_CLIPPED | ||
|  |                 #pragma vertex vert | ||
|  |                 #pragma fragment frag | ||
|  | 
 | ||
|  |                 #include "UnityCG.cginc" | ||
|  | 
 | ||
|  |                 struct appdata_t | ||
|  |                 { | ||
|  |                     float4 vertex : POSITION; | ||
|  |                     fixed4 color : COLOR; | ||
|  |                     float4 texcoord : TEXCOORD0; | ||
|  |                 }; | ||
|  | 
 | ||
|  |                 struct v2f | ||
|  |                 { | ||
|  |                     float4 vertex : SV_POSITION; | ||
|  |                     fixed4 color : COLOR; | ||
|  |                     float4 texcoord : TEXCOORD0; | ||
|  | 
 | ||
|  |                     #ifdef CLIPPED | ||
|  |                     float2 clipPos : TEXCOORD1; | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     #ifdef SOFT_CLIPPED | ||
|  |                     float2 clipPos : TEXCOORD1; | ||
|  |                     #endif | ||
|  |                 }; | ||
|  | 
 | ||
|  |                 sampler2D _MainTex; | ||
|  | 
 | ||
|  |                 #ifdef CLIPPED | ||
|  |                 float4 _ClipBox = float4(-2, -2, 0, 0); | ||
|  |                 #endif | ||
|  | 
 | ||
|  |                 #ifdef SOFT_CLIPPED | ||
|  |                 float4 _ClipBox = float4(-2, -2, 0, 0); | ||
|  |                 float4 _ClipSoftness = float4(0, 0, 0, 0); | ||
|  |                 #endif | ||
|  | 
 | ||
|  |                 v2f vert (appdata_t v) | ||
|  |                 { | ||
|  |                     v2f o; | ||
|  |                     o.vertex = UnityObjectToClipPos(v.vertex); | ||
|  |                     o.texcoord = v.texcoord; | ||
|  |                     #if !defined(UNITY_COLORSPACE_GAMMA) && (UNITY_VERSION >= 550) | ||
|  |                     o.color.rgb = GammaToLinearSpace(v.color.rgb); | ||
|  |                     o.color.a = v.color.a; | ||
|  |                     #else | ||
|  |                     o.color = v.color; | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     #ifdef CLIPPED | ||
|  |                     o.clipPos = mul(unity_ObjectToWorld, v.vertex).xy * _ClipBox.zw + _ClipBox.xy; | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     #ifdef SOFT_CLIPPED | ||
|  |                     o.clipPos = mul(unity_ObjectToWorld, v.vertex).xy * _ClipBox.zw + _ClipBox.xy; | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     return o; | ||
|  |                 } | ||
|  | 
 | ||
|  |                 fixed4 frag (v2f i) : SV_Target | ||
|  |                 { | ||
|  |                     fixed4 col = i.color; | ||
|  |                     col.a *= tex2D(_MainTex, i.texcoord).a; | ||
|  | 
 | ||
|  |                     #ifdef GRAYED | ||
|  |                     fixed grey = dot(col.rgb, fixed3(0.299, 0.587, 0.114));   | ||
|  |                     col.rgb = fixed3(grey, grey, grey); | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     #ifdef SOFT_CLIPPED | ||
|  |                     float2 factor = float2(0,0); | ||
|  |                     if(i.clipPos.x<0) | ||
|  |                         factor.x = (1.0-abs(i.clipPos.x)) * _ClipSoftness.x; | ||
|  |                     else | ||
|  |                         factor.x = (1.0-i.clipPos.x) * _ClipSoftness.z; | ||
|  |                     if(i.clipPos.y<0) | ||
|  |                         factor.y = (1.0-abs(i.clipPos.y)) * _ClipSoftness.w; | ||
|  |                     else | ||
|  |                         factor.y = (1.0-i.clipPos.y) * _ClipSoftness.y; | ||
|  |                     col.a *= clamp(min(factor.x, factor.y), 0.0, 1.0); | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     #ifdef CLIPPED | ||
|  |                     float2 factor = abs(i.clipPos); | ||
|  |                     col.a *= step(max(factor.x, factor.y), 1); | ||
|  |                     #endif | ||
|  | 
 | ||
|  |                     return col; | ||
|  |                 } | ||
|  |             ENDCG | ||
|  |         } | ||
|  |     } | ||
|  | } |