実際にやってみると視点を動かすとメッシュが消える場合がある。そのような場合はBoundingBoxを大きくすると解決する。
BoundingBoxを小さくしてもそれが視界内に入ってる限り描写されるので、BoundingBoxの設定で一定範囲に入った場合のみ表示する、というようなことは出来ない。やるなら_WorldSpaceCameraPosなどで距離を取る必要がある
GrabPass等と組み合わせれば視界を歪ませるなども可能
UnityのオブジェクトのQuadに張り付ける
Shader "Custom/ViewHack2" { Properties{ _MainTex("MainTex",2D) = "white"{} _Size("Size",Range(0.1,1)) = 1 } SubShader{ Tags{"Queue" = "Transparent" "RenderType" = "Transparent" "DisableBatching"="true"} Blend SrcAlpha OneMinusSrcAlpha Pass{ ZTest always Cull Front 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; }; float _Size; v2f vert(appdata v){ v2f o; //プロジェクション座標系で考える(x,yが-1~1で表される) o.pos = float4(v.vertex.xy*2.0*_Size,1,1); o.uv = v.uv; return o; } sampler2D _MainTex; float4 frag(v2f i) :SV_Target { //テクスチャの上下が裏返るので return tex2D(_MainTex,float4(i.uv.x,1-i.uv.y,0,0)); } ENDCG }//Pass }//SubShader FallBack "Diffuse" }