43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
Shader "Hidden/Bansonic/GlobalAfterimage"
|
|
{
|
|
SubShader
|
|
{
|
|
Tags { "RenderPipeline" = "UniversalPipeline" }
|
|
ZWrite Off
|
|
Cull Off
|
|
ZTest Always
|
|
|
|
Pass
|
|
{
|
|
Name "GlobalAfterimage"
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vert
|
|
#pragma fragment Frag
|
|
#pragma target 4.5
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
|
|
|
|
float _AfterimageOpacity;
|
|
float _AfterimageScale;
|
|
TEXTURE2D(_SnapshotTex);
|
|
SAMPLER(sampler_SnapshotTex);
|
|
|
|
half4 Frag(Varyings input) : SV_Target
|
|
{
|
|
float2 uv = input.texcoord;
|
|
half4 baseColor = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, uv);
|
|
|
|
float safeScale = max(_AfterimageScale, 1.0);
|
|
float2 scaledUv = (uv - 0.5) / safeScale + 0.5;
|
|
float inside = step(0.0, scaledUv.x) * step(0.0, scaledUv.y) * step(scaledUv.x, 1.0) * step(scaledUv.y, 1.0);
|
|
half4 snapshot = SAMPLE_TEXTURE2D(_SnapshotTex, sampler_SnapshotTex, saturate(scaledUv));
|
|
float alpha = saturate(_AfterimageOpacity) * inside;
|
|
return lerp(baseColor, snapshot, alpha);
|
|
}
|
|
ENDHLSL
|
|
}
|
|
}
|
|
}
|