// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "ASESampleShaders/RimLight" { Properties { // Color property for material inspector, default to white _Color("Main Color", Color) = (1,1,1,1) _Intensity("Intensity", range(0,10)) = 1 _MKGlowPower("Emission Power", range(0,10)) = 0 _MKGlowColor("Emission Color", color) = (1.0,0.95,0.8,1.0) _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 { //Tags{ "Queue" = "AlphaTest" "IgnoreProjector" = "False" "RenderType" = "Transparent" "RenderType" = "MKGlow" } Stencil { Ref 255 ReadMask[_StencilMask] Comp[_StencilComp] } //Pass //{ // ZWrite On // //ZTest LEqual // ColorMask 0 //} Tags{ "Queue" = "AlphaTest-1" "IgnoreProjector" = "False" "RenderType" = "Transparent" "RenderType" = "MKGlow" } Pass { Cull Front ZTest LEqual ZWrite Off Blend One OneMinusSrcAlpha CGPROGRAM #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 v2f vert(appdata i) { v2f o; o.vertex = UnityObjectToClipPos(i.vertex); o.uv = i.uv; return o; } // color from the material fixed4 _Color; float _Intensity; fixed4 _MKGlowColor; float _MKGlowPower; sampler2D _Albedo; float _CutOff; // pixel shader, no inputs needed fixed4 frag(v2f i) : SV_Target { //_Color.rgb *= _Intensity; //_Color.rgb *= _Color.a; //_Color.rgb *= _Intensity; //_Color *= _Intensity; //_MKGlowColor = _Color; //_MKGlowPower = _Intensity; float alpha = tex2D(_Albedo, i.uv); if(alpha <= _CutOff) discard; _Color.rgb *= _Intensity; return _Color; // just return it } ENDCG } } }