// 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; }