title: How to draw outside sprites boundaries with Unity's shaders?
body: <p>I'm learning how to make shader in Unity and I have a question about shaders applied on sprites.</p>
  
  <p>I made a shader which modifies a sprite to create a distortion effect:</p>
  
  <p><a href="https://i.stack.imgur.com/FWVIf.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/FWVIf.png" alt="cat with distortion effect"></a></p>
  
  <p>But, as you can see on the picture linked above, my sprite is cut on the boundaries of the sprite.</p>
  
  <p>Is there any way to avoid this cut and draw the missing part ?</p>
  
  <p>My shader : </p>
  
  <pre><code>Shader "Shader101/testShader"
  {
      Properties
      {
          _MainTex( "Texture", 2D ) = "white" {}
          _DisplaceTex( "Displacement Texture", 2D ) = "white" {}
          _Power("Power", Range(-0.4, 0.4)) = 0
      }
  
      SubShader
      {
          Tags
          {
              "Queue" = "Transparent"
          }
  
          Pass
          {
              Blend SrcAlpha OneMinusSrcAlpha
  
              CGPROGRAM
              #pragma vertex vert
              #pragma fragment frag
  
              #include "UnityCG.cginc"
  
              struct appdata
              {
                  float4 vertex : POSITION;
                  float2 uv : TEXCOORD0;
              };
  
              struct v2f
              {
                  float4 vertex : SV_POSITION;
                  float2 uv : TEXCOORD0;
              };
  
              v2f vert (appdata v)
              {
                  v2f o;
                  o.vertex = mul( UNITY_MATRIX_MVP, v.vertex);
                  o.uv = v.uv;
                  return o;
              }
  
              sampler2D _MainTex;
              sampler2D _DisplaceTex;
              float _Power;
  
              fixed4 frag (v2f i) : SV_Target
              {
                  float2 distuv = float2( 0, i.uv.y + _Time.x * 2 );
  
                  float2 wave = tex2D( _DisplaceTex, distuv * 5  ).xy;
                  wave = (( wave * 2 ) - 1) * _Power - 0.25;
  
                  float4 color = tex2D( _MainTex, i.uv + float2(wave.y, 0) );
                  return color;
              }
              ENDCG
          }
      }
  }
  </code></pre>
  
  <p>Sorry for my poor english :|</p>
  
  <p>Thank you </p>