diff options
Diffstat (limited to 'Assets/Art/Shaders/Effects/RimLight 1.shader')
-rw-r--r-- | Assets/Art/Shaders/Effects/RimLight 1.shader | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/Assets/Art/Shaders/Effects/RimLight 1.shader b/Assets/Art/Shaders/Effects/RimLight 1.shader index eb751153..bcf6609c 100644 --- a/Assets/Art/Shaders/Effects/RimLight 1.shader +++ b/Assets/Art/Shaders/Effects/RimLight 1.shader @@ -15,6 +15,8 @@ Shader "ASESampleShaders/RimLight" _StencilMask("Mask Layer", Range(0, 255)) = 1 [Enum(CompareFunction)] _StencilComp("Mask Mode", Int) = 6 + _Albedo("Albedo", 2D) = "white" {} + _CutOff("Alpha CutOff", Float) = 0.5 } SubShader { @@ -36,7 +38,7 @@ Shader "ASESampleShaders/RimLight" Tags{ "Queue" = "AlphaTest-1" "IgnoreProjector" = "False" "RenderType" = "Transparent" "RenderType" = "MKGlow" } Pass { - Cull Back + Cull Front ZTest LEqual ZWrite Off Blend One OneMinusSrcAlpha @@ -44,13 +46,29 @@ Shader "ASESampleShaders/RimLight" #pragma vertex vert #pragma fragment frag + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + + struct v2f + { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + // vertex shader // this time instead of using "appdata" struct, just spell inputs manually, // and instead of returning v2f struct, also just return a single output // float4 clip position - float4 vert(float4 vertex : POSITION) : SV_POSITION + v2f vert(appdata i) { - return UnityObjectToClipPos(vertex); + v2f o; + o.vertex = UnityObjectToClipPos(i.vertex); + o.uv = i.uv; + return o; } // color from the material @@ -58,8 +76,12 @@ Shader "ASESampleShaders/RimLight" float _Intensity; fixed4 _MKGlowColor; float _MKGlowPower; + + sampler2D _Albedo; + float _CutOff; + // pixel shader, no inputs needed - fixed4 frag() : SV_Target + fixed4 frag(v2f i) : SV_Target { //_Color.rgb *= _Intensity; //_Color.rgb *= _Color.a; @@ -69,7 +91,10 @@ Shader "ASESampleShaders/RimLight" //_MKGlowColor = _Color; //_MKGlowPower = _Intensity; - + float alpha = tex2D(_Albedo, i.uv); + if(alpha <= _CutOff) + discard; + _Color.rgb *= _Intensity; return _Color; // just return it } ENDCG |