Last active
October 9, 2018 16:53
-
-
Save TheStoneBook/26ee5f11eda2b5ced5e74e95c49ccc63 to your computer and use it in GitHub Desktop.
【Unity2D】遮蔽物と重なった部分をシルエットにするシェーダー【Shader】
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Shader "Unlit/Stencil" | |
{ | |
Properties | |
{ | |
_MainTex ("Texture", 2D) = "white" {} | |
} | |
SubShader | |
{ | |
Tags { "RenderType"="Opaque" } | |
LOD 100 | |
Pass | |
{ | |
Stencil//ステンシルテスト | |
{ | |
Ref 1 | |
Comp Always | |
Pass Replace | |
} | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
struct appdata | |
{ | |
float4 vertex : POSITION; | |
float2 uv : TEXCOORD0; | |
}; | |
struct v2f | |
{ | |
float2 uv : TEXCOORD0; | |
float4 vertex : SV_POSITION; | |
}; | |
sampler2D _MainTex; | |
v2f vert (appdata v) | |
{ | |
v2f o; | |
o.vertex = UnityObjectToClipPos(v.vertex); | |
o.uv=v.uv; | |
return o; | |
} | |
fixed4 frag (v2f i) : SV_Target | |
{ | |
fixed4 col = tex2D(_MainTex, i.uv); | |
return col; | |
} | |
ENDCG | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Shader "Unlit/StencilSilhouetteObj" | |
{ | |
Properties | |
{ | |
_MainTex ("Texture", 2D) = "white" {} | |
} | |
SubShader | |
{ | |
Tags { "RenderType"="Opaque" } | |
LOD 100 | |
Blend SrcAlpha OneMinusSrcAlpha | |
Pass//Ref 1のマテリアルと重なったら黒く塗り潰す | |
{ | |
Stencil//ステンシルテスト | |
{ | |
Ref 1 | |
Comp Equal | |
} | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
struct appdata | |
{ | |
float4 vertex : POSITION; | |
float2 uv : TEXCOORD0; | |
}; | |
struct v2f | |
{ | |
float2 uv : TEXCOORD0; | |
float4 vertex : SV_POSITION; | |
}; | |
sampler2D _MainTex; | |
v2f vert (appdata v) | |
{ | |
v2f o; | |
o.vertex = UnityObjectToClipPos(v.vertex); | |
o.uv = v.uv; | |
return o; | |
} | |
fixed4 frag (v2f i) : SV_Target | |
{ | |
fixed alpha=tex2D(_MainTex, i.uv).a; | |
fixed4 col = fixed4(0,0,0,alpha); | |
return col; | |
} | |
ENDCG | |
} | |
Pass | |
{ | |
Stencil//ステンシルテスト | |
{ | |
Ref 0//オブジェクト部分じゃないとこは0 | |
Comp Equal | |
} | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
struct appdata | |
{ | |
float4 vertex : POSITION; | |
float2 uv : TEXCOORD0; | |
}; | |
struct v2f | |
{ | |
float2 uv : TEXCOORD0; | |
float4 vertex : SV_POSITION; | |
}; | |
sampler2D _MainTex; | |
v2f vert (appdata v) | |
{ | |
v2f o; | |
o.vertex = UnityObjectToClipPos(v.vertex); | |
o.uv = v.uv; | |
return o; | |
} | |
fixed4 frag (v2f i) : SV_Target | |
{ | |
fixed4 col = tex2D(_MainTex, i.uv); | |
return col; | |
} | |
ENDCG | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment