157 lines
4.9 KiB
Plaintext
157 lines
4.9 KiB
Plaintext
Shader "Hidden/PostProcessing/FinalPass"
|
|
{
|
|
HLSLINCLUDE
|
|
|
|
#pragma multi_compile __ FXAA FXAA_LOW
|
|
#pragma multi_compile __ FXAA_KEEP_ALPHA FXAA_NO_ALPHA
|
|
|
|
#pragma vertex VertUVTransform
|
|
#pragma fragment Frag
|
|
|
|
#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/StdLib.hlsl"
|
|
#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/Colors.hlsl"
|
|
#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/Builtins/Dithering.hlsl"
|
|
|
|
// PS3 and XBOX360 aren't supported in Unity anymore, only use the PC variant
|
|
#define FXAA_PC 1
|
|
|
|
#if FXAA_KEEP_ALPHA || FXAA_NO_ALPHA
|
|
// Luma hasn't been encoded in alpha
|
|
#define FXAA_GREEN_AS_LUMA 1
|
|
#else
|
|
// Luma is encoded in alpha after the first Uber pass
|
|
#define FXAA_GREEN_AS_LUMA 0
|
|
#endif
|
|
|
|
#if FXAA_LOW
|
|
#define FXAA_QUALITY__PRESET 12
|
|
#define FXAA_QUALITY_SUBPIX 1.0
|
|
#define FXAA_QUALITY_EDGE_THRESHOLD 0.166
|
|
#define FXAA_QUALITY_EDGE_THRESHOLD_MIN 0.0625
|
|
#else
|
|
#define FXAA_QUALITY__PRESET 28
|
|
#define FXAA_QUALITY_SUBPIX 1.0
|
|
#define FXAA_QUALITY_EDGE_THRESHOLD 0.063
|
|
#define FXAA_QUALITY_EDGE_THRESHOLD_MIN 0.0312
|
|
#endif
|
|
|
|
#include "FastApproximateAntialiasing.hlsl"
|
|
|
|
TEXTURE2D_SAMPLER2D(_MainTex, sampler_MainTex);
|
|
float4 _MainTex_TexelSize;
|
|
|
|
float4 Frag(VaryingsDefault i) : SV_Target
|
|
{
|
|
half4 color = 0.0;
|
|
|
|
// Fast Approximate Anti-aliasing
|
|
#if FXAA || FXAA_LOW
|
|
{
|
|
#if FXAA_HLSL_4 || FXAA_HLSL_5
|
|
FxaaTex mainTex;
|
|
mainTex.tex = _MainTex;
|
|
mainTex.smpl = sampler_MainTex;
|
|
#else
|
|
FxaaTex mainTex = _MainTex;
|
|
#endif
|
|
|
|
color = FxaaPixelShader(
|
|
i.texcoord, // pos
|
|
0.0, // fxaaConsolePosPos (unused)
|
|
mainTex, // tex
|
|
mainTex, // fxaaConsole360TexExpBiasNegOne (unused)
|
|
mainTex, // fxaaConsole360TexExpBiasNegTwo (unused)
|
|
_MainTex_TexelSize.xy, // fxaaQualityRcpFrame
|
|
0.0, // fxaaConsoleRcpFrameOpt (unused)
|
|
0.0, // fxaaConsoleRcpFrameOpt2 (unused)
|
|
0.0, // fxaaConsole360RcpFrameOpt2 (unused)
|
|
FXAA_QUALITY_SUBPIX,
|
|
FXAA_QUALITY_EDGE_THRESHOLD,
|
|
FXAA_QUALITY_EDGE_THRESHOLD_MIN,
|
|
0.0, // fxaaConsoleEdgeSharpness (unused)
|
|
0.0, // fxaaConsoleEdgeThreshold (unused)
|
|
0.0, // fxaaConsoleEdgeThresholdMin (unused)
|
|
0.0 // fxaaConsole360ConstDir (unused)
|
|
);
|
|
|
|
#if FXAA_KEEP_ALPHA
|
|
{
|
|
color.a = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.texcoordStereo).a;
|
|
}
|
|
#endif
|
|
}
|
|
#else
|
|
{
|
|
color = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.texcoordStereo);
|
|
}
|
|
#endif
|
|
|
|
color.rgb = Dither(color.rgb, i.texcoord);
|
|
return color;
|
|
}
|
|
|
|
ENDHLSL
|
|
|
|
SubShader
|
|
{
|
|
Cull Off ZWrite Off ZTest Always
|
|
|
|
Pass
|
|
{
|
|
HLSLPROGRAM
|
|
#pragma exclude_renderers gles vulkan webgpu switch
|
|
|
|
#pragma multi_compile __ STEREO_INSTANCING_ENABLED STEREO_DOUBLEWIDE_TARGET
|
|
#pragma target 5.0
|
|
|
|
ENDHLSL
|
|
}
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Cull Off ZWrite Off ZTest Always
|
|
|
|
Pass
|
|
{
|
|
HLSLPROGRAM
|
|
#pragma exclude_renderers gles vulkan webgpu switch
|
|
|
|
#pragma multi_compile __ STEREO_INSTANCING_ENABLED STEREO_DOUBLEWIDE_TARGET
|
|
#pragma target 3.0
|
|
|
|
ENDHLSL
|
|
}
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Cull Off ZWrite Off ZTest Always
|
|
|
|
Pass
|
|
{
|
|
HLSLPROGRAM
|
|
#pragma only_renderers gles3
|
|
|
|
#pragma multi_compile __ STEREO_INSTANCING_ENABLED STEREO_DOUBLEWIDE_TARGET
|
|
#pragma target 3.0
|
|
|
|
ENDHLSL
|
|
}
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Cull Off ZWrite Off ZTest Always
|
|
|
|
Pass
|
|
{
|
|
HLSLPROGRAM
|
|
#pragma only_renderers gles vulkan webgpu switch
|
|
|
|
#pragma multi_compile __ STEREO_DOUBLEWIDE_TARGET //not supporting STEREO_INSTANCING_ENABLED
|
|
ENDHLSL
|
|
}
|
|
}
|
|
}
|