TwirlEffect.shader 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "Hidden/Twirt Effect Shader" {
  3. Properties {
  4. _MainTex ("Base (RGB)", 2D) = "white" {}
  5. }
  6. SubShader {
  7. Pass {
  8. ZTest Always Cull Off ZWrite Off
  9. CGPROGRAM
  10. #pragma vertex vert
  11. #pragma fragment frag
  12. #include "UnityCG.cginc"
  13. uniform sampler2D _MainTex;
  14. uniform float4 _MainTex_TexelSize;
  15. uniform float4 _CenterRadius;
  16. uniform float4x4 _RotationMatrix;
  17. struct v2f {
  18. float4 pos : SV_POSITION;
  19. float2 uv : TEXCOORD0;
  20. };
  21. v2f vert( appdata_img v )
  22. {
  23. v2f o;
  24. o.pos = UnityObjectToClipPos (v.vertex);
  25. o.uv = v.texcoord - _CenterRadius.xy;
  26. return o;
  27. }
  28. float4 frag (v2f i) : SV_Target
  29. {
  30. float2 offset = i.uv;
  31. float2 distortedOffset = MultiplyUV (_RotationMatrix, offset.xy);
  32. float2 tmp = offset / _CenterRadius.zw;
  33. float t = min (1, length(tmp));
  34. offset = lerp (distortedOffset, offset, t);
  35. offset += _CenterRadius.xy;
  36. return tex2D(_MainTex, offset);
  37. }
  38. ENDCG
  39. }
  40. }
  41. Fallback off
  42. }