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

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

Shader SpeiaGrab

f:id:arumogina:20190610032221p:plain

 

Shader "Custom/SepiaStencil" {
	Properties {
		_Color ("Color", Color) = (1,1,1,1)
	 	_SepiaIntensity ("SepiaIntensity", Range(0, 1)) = 0
	}
	SubShader {

		Tags {"Queue"="Transparent" "RenderType"="Transparent" }

		GrabPass { "_GrabPassTexture" }

		Cull Back
		LOD 200

		Pass{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			struct appdata {
				half4 vertex : POSITION;
			};

			struct v2f {
				half4 vertex : SV_POSITION;
				half4 grabPos :TEXCOORD0;
			};

			v2f vert (appdata v){
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.grabPos = ComputeGrabScreenPos(o.vertex);
				return o;
			}

			half4 _Color;
			sampler2D _GrabPassTexture;
			float _SepiaIntensity;

			fixed4 frag(v2f i) : SV_Target{
				half2 uv = half2(i.grabPos.x / i.grabPos.w, i.grabPos.y / i.grabPos.w);
				fixed4 col = tex2D(_GrabPassTexture,uv);
				fixed4 c = fixed4(0,0,0,0);
				c.r = dot(col.rgb, half3(0.393, 0.769, 0.189));
				c.g = dot(col.rgb, half3(0.349, 0.686, 0.168));
				c.b = dot(col.rgb, half3(0.272, 0.534, 0.131));
				col.rgb = lerp(col,c,_SepiaIntensity);
				return col;
			}
			ENDCG
		}//Pass
	}//SubShader
	FallBack "Diffuse"
}