123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
- // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
- // FairyGUI/Text 从该shader修改而来
- Shader "XGame/Text Shader"
- {
- 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;
- CBUFFER_START(UnityPerMaterial)
- #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
- CBUFFER_END
- 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 *= tex2D(_MainTex, i.texcoord);
- #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
- }
- }
- //
- Fallback "FairyGUI/Text"
- }
|