ProjectorTest.shader 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Upgrade NOTE: replaced '_Projector' with 'unity_Projector'
  2. // Upgrade NOTE: replaced '_ProjectorClip' with 'unity_ProjectorClip'
  3. Shader "Projector/Test" {
  4. Properties {
  5. _Color ("Main Color", Color) = (1,1,1,1)
  6. _ShadowTex ("Cookie", 2D) = "" {}
  7. _FalloffTex ("FallOff", 2D) = "" {}
  8. }
  9. Subshader {
  10. Tags {"Queue"="Transparent"}
  11. Pass {
  12. ZWrite Off
  13. ColorMask RGB
  14. Blend DstColor One
  15. Offset -1, -1
  16. CGPROGRAM
  17. #pragma vertex vert
  18. #pragma fragment frag
  19. #pragma multi_compile_fog
  20. #include "UnityCG.cginc"
  21. struct v2f {
  22. float4 uvShadow : TEXCOORD0;
  23. float4 uvFalloff : TEXCOORD1;
  24. UNITY_FOG_COORDS(2)
  25. float4 pos : SV_POSITION;
  26. };
  27. float4x4 unity_Projector;
  28. float4x4 unity_ProjectorClip;
  29. v2f vert (float4 vertex : POSITION)
  30. {
  31. v2f o;
  32. o.pos = UnityObjectToClipPos(vertex);
  33. o.uvShadow = mul (unity_Projector, vertex);
  34. o.uvFalloff = mul (unity_ProjectorClip, vertex);
  35. UNITY_TRANSFER_FOG(o,o.pos);
  36. return o;
  37. }
  38. fixed4 _Color;
  39. sampler2D _ShadowTex;
  40. sampler2D _FalloffTex;
  41. fixed4 frag (v2f i) : SV_Target
  42. {
  43. fixed4 texS = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow));
  44. texS.rgb *= _Color.rgb;
  45. texS.a = 1.0-texS.a;
  46. fixed4 texF = tex2Dproj (_FalloffTex, UNITY_PROJ_COORD(i.uvFalloff));
  47. fixed4 res = texS * texF.a;
  48. UNITY_APPLY_FOG_COLOR(i.fogCoord, res, fixed4(0,0,0,0));
  49. return res;
  50. }
  51. ENDCG
  52. }
  53. }
  54. }