イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

Shader 距離判定による限定視界ジャック

自分にだけ見える視界ジャック

Quadに貼り付けて使う

Shader "Custom/Menu" {
	Properties{
		_MainTex("MainTex",2D) = "white"{}

	}
	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;
			};

			v2f vert(appdata v){
				v2f o;
				//プロジェクション座標系で考える(x,yが-1~1で表される)
				o.pos = float4(v.vertex.xy*2.0,1,1);
				o.uv = v.uv;
				return o;
			}

			sampler2D _MainTex;

			float4 frag(v2f i) :SV_Target {
				float3 center = mul(unity_ObjectToWorld,float4(0,0,0,1)).xyz;
				if(length(_WorldSpaceCameraPos-center) > 0.1) clip(-1);
				//テクスチャの上下が裏返るので
				return tex2D(_MainTex,float4(i.uv.x,1-i.uv.y,0,0));
			}
			ENDCG
		}//Pass
	}//SubShader
	FallBack "Diffuse"
}