tex2DProjはgpos.xy/gpos.wを行ってtex2Dを使うのと同じ。 w除算した場合の範囲は0~1
https://twitter.com/arumogina/status/1245004048849223685
Shader "Custom/GrabPassBase" { SubShader{ //透明部分のあるテクスチャを使う場合 Tags{"Queue" = "Transparent" "RenderType" = "Transparent"} Blend SrcAlpha OneMinusSrcAlpha GrabPass { "_GrabTexture" } Pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex:POSITION; float4 uv:TEXCOORD0; }; struct v2f { float4 pos:SV_POSITION; float4 uv:TEXCOORD0; float4 gpos:TEXCOORD1; }; v2f vert(appdata v){ v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.gpos = ComputeGrabScreenPos(o.pos); o.uv = v.uv; return o; } sampler2D _MainTex; sampler2D _GrabTexture; float4 frag(v2f i) :SV_Target { return tex2Dproj(_GrabTexture,i.gpos); } ENDCG }//Pass }//SubShader FallBack "Diffuse" }