Shader "Custom/AfterImage" { Properties { _Color("Color", Color) = (1, 0, 0, 1) _Alpha("Alpha", Float) = 1 _RimLightMul("RimLightMul", Range(0, 10)) = 0.5 _RimLightPow("RimLightPow", Range(0, 10)) = 1.5 _Intensity("Intensity", Range(0, 10)) = 1 } SubShader { Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } LOD 100 Pass { Name "FORWARD" Tags { "LightMode" = "UniversalForward" } Blend SrcAlpha OneMinusSrcAlpha ZWrite Off Cull Off HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" struct Attributes { float4 positionOS : POSITION; float3 normalOS : NORMAL; }; struct Varyings { float4 positionHCS : SV_POSITION; float3 viewDirWS : TEXCOORD0; float3 normalWS : TEXCOORD1; }; float4 _Color; float _Alpha; float _RimLightMul; float _RimLightPow; float _Intensity; Varyings vert(Attributes IN) { Varyings OUT; float3 positionWS = TransformObjectToWorld(IN.positionOS.xyz); float3 normalWS = TransformObjectToWorldNormal(IN.normalOS); OUT.positionHCS = TransformWorldToHClip(positionWS); OUT.viewDirWS = normalize(_WorldSpaceCameraPos - positionWS); OUT.normalWS = normalize(normalWS); return OUT; } half4 frag(Varyings IN) : SV_Target { float NdotV = saturate(dot(IN.normalWS, IN.viewDirWS)); float rim = pow((1.0 - NdotV) * _RimLightMul, _RimLightPow); float3 color = _Color.rgb + _Intensity; float alpha = saturate(_Alpha * rim * _Color.a); return float4(color, alpha); } ENDHLSL } } FallBack Off }