2021-09-09 20:42:29 -04:00

33 lines
1.4 KiB
Plaintext

// Each #kernel tells which function to compile; you can have many kernels
#pragma kernel FXAA
#pragma multi_compile _ ENABLE_ALPHA
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/FXAA.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/PostProcessDefines.hlsl"
RW_TEXTURE2D_X(CTYPE, _OutputTexture);
TEXTURE2D_X(_InputTexture);
[numthreads(8,8,1)]
void FXAA(uint3 dispatchThreadId : SV_DispatchThreadID)
{
UNITY_XR_ASSIGN_VIEW_INDEX(dispatchThreadId.z);
uint2 positionSS = dispatchThreadId.xy;
float2 positionNDC = positionSS * _ScreenSize.zw + (0.5 * _ScreenSize.zw);
CTYPE outColor = Load(_InputTexture, positionSS, 0, 0).CTYPE_SWIZZLE;
CTYPE beforeFXAA = outColor;
RunFXAA(_InputTexture, s_linear_clamp_sampler, outColor, positionSS, positionNDC);
#if defined(ENABLE_ALPHA)
// When alpha processing is enabled, FXAA should not affect pixels with zero alpha
outColor.xyz = outColor.a > 0 ? outColor.xyz : beforeFXAA.xyz;
#endif
_OutputTexture[COORD_TEXTURE2D_X(positionSS)] = outColor;
}