1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| Shader "HHF/Tutorial/UI" { Properties { [PerRendererData]_MainTex("MainTex",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
[Toggle]_GrayEnabled("Gray Enabled",int) = 0 }
SubShader { Tags{"Queue" = "Transparent"} Blend SrcAlpha OneMinusSrcAlpha ColorMask [_ColorMask] Stencil { Ref [_Stencil] Comp [_StencilComp] Pass [_StencilOp] ReadMask [_StencilReadMask] WriteMask [_StencilWriteMask] }
Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile _ UNITY_UI_CLIP_RECT #pragma multi_compile _ _GRAYENABLED_ON #include "UnityCG.cginc" #include "UnityUI.cginc"
struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; fixed4 color:COLOR; };
struct v2f { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; fixed4 color:COLOR; float4 positionOS:TEXCOORD1; };
sampler2D _MainTex; float4 _ClipRect;
v2f vert (appdata v) { v2f o; o.positionCS = UnityObjectToClipPos(v.vertex); o.uv = v.uv; o.color = v.color; o.positionOS = v.vertex;
return o; }
fixed4 frag (v2f i) : SV_Target { fixed4 c; fixed4 mainTex = tex2D(_MainTex,i.uv); c = mainTex; c *= i.color;
#if UNITY_UI_CLIP_RECT
c.a *= UnityGet2DClipping(i.positionOS, _ClipRect); #endif
#if _GRAYENABLED_ON
c.rgb = Luminance(c.rgb); #endif
return c; } ENDCG } } }
|