Project_WL/Assets/ThirdParty/AfterImageAsset/2. Shader/AfterImage.shader

73 lines
2.2 KiB
Plaintext

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
}