RenderQuadShader.shader 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // Simple shader for e.g. a Quad that renders a RenderTexture.
  2. // Texture color is multiplied by a color property, mostly for alpha fadeout.
  3. Shader "Spine/RenderQuad" {
  4. Properties{
  5. _Color("Color", Color) = (1,1,1,1)
  6. [NoScaleOffset] _MainTex("MainTex", 2D) = "white" {}
  7. _Cutoff("Shadow alpha cutoff", Range(0,1)) = 0.1
  8. [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0
  9. [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default
  10. }
  11. SubShader{
  12. Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" "PreviewType" = "Plane" }
  13. Blend One OneMinusSrcAlpha
  14. Cull Off
  15. ZWrite Off
  16. Lighting Off
  17. Stencil {
  18. Ref[_StencilRef]
  19. Comp[_StencilComp]
  20. Pass Keep
  21. }
  22. Pass {
  23. Name "Normal"
  24. CGPROGRAM
  25. #pragma vertex vert
  26. #pragma fragment frag
  27. #include "UnityCG.cginc"
  28. sampler2D _MainTex;
  29. float4 _Color;
  30. struct VertexInput {
  31. float4 vertex : POSITION;
  32. float2 uv : TEXCOORD0;
  33. float4 vertexColor : COLOR;
  34. };
  35. struct VertexOutput {
  36. float4 pos : SV_POSITION;
  37. float2 uv : TEXCOORD0;
  38. float4 vertexColor : COLOR;
  39. };
  40. VertexOutput vert(VertexInput v) {
  41. VertexOutput o = (VertexOutput)0;
  42. o.uv = v.uv;
  43. o.vertexColor = v.vertexColor;
  44. o.pos = UnityObjectToClipPos(v.vertex);
  45. return o;
  46. }
  47. float4 frag(VertexOutput i) : SV_Target {
  48. float4 texColor = tex2D(_MainTex,i.uv);
  49. _Color.rgb *= _Color.a;
  50. return texColor * _Color;
  51. }
  52. ENDCG
  53. }
  54. Pass {
  55. Name "Caster"
  56. Tags { "LightMode" = "ShadowCaster" }
  57. Offset 1, 1
  58. ZWrite On
  59. ZTest LEqual
  60. Fog { Mode Off }
  61. Cull Off
  62. Lighting Off
  63. CGPROGRAM
  64. #pragma vertex vert
  65. #pragma fragment frag
  66. #pragma multi_compile_shadowcaster
  67. #pragma fragmentoption ARB_precision_hint_fastest
  68. #include "UnityCG.cginc"
  69. sampler2D _MainTex;
  70. fixed _Cutoff;
  71. struct VertexOutput {
  72. V2F_SHADOW_CASTER;
  73. float4 uvAndAlpha : TEXCOORD1;
  74. };
  75. VertexOutput vert(appdata_base v, float4 vertexColor : COLOR) {
  76. VertexOutput o;
  77. o.uvAndAlpha = v.texcoord;
  78. o.uvAndAlpha.a = vertexColor.a;
  79. TRANSFER_SHADOW_CASTER(o)
  80. return o;
  81. }
  82. float4 frag(VertexOutput i) : SV_Target {
  83. fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
  84. clip(texcol.a* i.uvAndAlpha.a - _Cutoff);
  85. SHADOW_CASTER_FRAGMENT(i)
  86. }
  87. ENDCG
  88. }
  89. }
  90. FallBack "Diffuse"
  91. }