UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PostProcessAmbientOcclusion.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 PostProcessAmbientOcclusion.h: Post processing ambient occlusion implementation.
5=============================================================================*/
6
7#pragma once
8
9#include "ScreenPass.h"
10#include "UniformBuffer.h"
11#include "RendererInterface.h"
12#include "HZB.h"
13
14class FViewInfo;
15
17
18enum class ESSAOType
19{
20 // pixel shader
21 EPS,
22 // non async compute shader
23 ECS,
24 // async compute shader
26};
27
28enum class EGTAOType
29{
30 // Not on (use legacy if at all)
31 EOff,
32
33 // Async compute shader where the Horizon Search and Inner Integrate are combined and the spatial filter is run on the Async Pipe
34 // Temporal and Upsample are run on the GFX Pipe as Temporal requires velocity Buffer
36
37 // Async compute shader where the Horizon Search is run on the Async compute pipe
38 // Integrate, Spatial, Temporal and Upsample are run on the GFX pipe as these require GBuffer channels
40
41 // Non async version where all passes are run on the GFX Pipe
43};
44
55
57
59
61
79
80
82{
83public:
84
85 // Utility functions for deciding AO logic.
86 // for render thread
87 // @return usually in 0..100 range but could be outside, combines the view with the cvar setting
88 static float GetAmbientOcclusionQualityRT(const FSceneView& View);
89
90 // @return returns actual shader quality level to use. 0-4 currently.
92
93 // @return whether AmbientOcclusion should run a compute shader.
94 static bool IsAmbientOcclusionCompute(const ERHIFeatureLevel::Type FeatureLevel);
95
99
100 static bool IsBasePassAmbientOcclusionRequired(const FViewInfo& View);
102
103 // @return 0:off, 0..3
105
106 static EGTAOType GetGTAOPassType(const FViewInfo& View, uint32 Levels);
107};
108
109// SSAO
110
125
127 FRDGBuilder& GraphBuilder,
128 const FViewInfo& View,
129 const FSSAOCommonParameters& CommonParameters,
131
133 FRDGBuilder& GraphBuilder,
134 const FViewInfo& View,
135 const FSSAOCommonParameters& CommonParameters,
136 const FScreenPassTexture& Input0,
139
141 FRDGBuilder& GraphBuilder,
142 const FViewInfo& View,
143 const FSSAOCommonParameters& CommonParameters,
144 const FScreenPassTexture& Input0,
148
149// GTAO
150
165
170
172 FRDGBuilder& GraphBuilder,
173 const FViewInfo& View,
174 const FGTAOCommonParameters& CommonParameters,
177
179 FRDGBuilder& GraphBuilder,
180 const FViewInfo& View,
181 const FGTAOCommonParameters& CommonParameters,
183 FScreenPassTexture HorizonsTexture);
184
186 FRDGBuilder& GraphBuilder,
187 const FViewInfo& View,
188 const FGTAOCommonParameters& CommonParameters,
190
198
200 FRDGBuilder& GraphBuilder,
201 const FViewInfo& View,
202 const FGTAOCommonParameters& CommonParameters,
206 FScreenPassTexture HistoryColor,
208
210 FRDGBuilder& GraphBuilder,
211 const FViewInfo& View,
212 const FGTAOCommonParameters& CommonParameters,
214 FScreenPassTexture InputDepth,
216
218 FRDGBuilder& GraphBuilder,
219 const FViewInfo& View,
223
226 SHADER_PARAMETER(FIntPoint, TextureSize)
229
231{
232 SSAO,
233 GTAO,
234};
235
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FGTAOTemporalOutputs AddGTAOTemporalPass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FGTAOCommonParameters &CommonParameters, FScreenPassTexture Input, FScreenPassTexture SceneDepth, FScreenPassTexture SceneVelocity, FScreenPassTexture HistoryColor, FScreenPassTextureViewport HistoryViewport)
Definition PostProcessAmbientOcclusion.cpp:1405
EAOTechnique
Definition PostProcessAmbientOcclusion.h:231
FScreenPassTexture AddGTAOSpatialFilter(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FGTAOCommonParameters &CommonParameters, FScreenPassTexture Input, FScreenPassTexture InputDepth, FScreenPassRenderTarget SuggestedOutput=FScreenPassRenderTarget())
Definition PostProcessAmbientOcclusion.cpp:1533
FGTAOHorizonSearchOutputs AddGTAOHorizonSearchPass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FGTAOCommonParameters &CommonParameters, FScreenPassTexture SceneDepth, FScreenPassRenderTarget HorizonOutput)
Definition PostProcessAmbientOcclusion.cpp:1313
EGTAOType
Definition PostProcessAmbientOcclusion.h:29
@ EAsyncHorizonSearch
@ EAsyncCombinedSpatial
EGTAOPass
Definition PostProcessAmbientOcclusion.h:46
@ EGTAOPass_Upsample
Definition PostProcessAmbientOcclusion.h:53
@ EGTAOPass_HorizonSearchIntegrate
Definition PostProcessAmbientOcclusion.h:49
@ EGTAOPass_None
Definition PostProcessAmbientOcclusion.h:47
@ EGTAOPass_SpatialFilter
Definition PostProcessAmbientOcclusion.h:51
@ EGTAOPass_TemporalFilter
Definition PostProcessAmbientOcclusion.h:52
@ EGTAOPass_Integrate
Definition PostProcessAmbientOcclusion.h:50
@ EGTAOPass_HorizonSearch
Definition PostProcessAmbientOcclusion.h:48
FGTAOHorizonSearchOutputs AddGTAOHorizonSearchIntegratePass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FGTAOCommonParameters &CommonParameters, FScreenPassTexture SceneDepth)
Definition PostProcessAmbientOcclusion.cpp:1122
FHZBParameters GetHZBParametersForAO(FRDGBuilder &GraphBuilder, const FViewInfo &View, FIntPoint InputTextureSize, EAOTechnique AOTechnique)
Definition PostProcessAmbientOcclusion.cpp:476
FScreenPassTexture AddAmbientOcclusionStepPass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSSAOCommonParameters &CommonParameters, const FScreenPassTexture &Input0, const FScreenPassTexture &Input1, const FScreenPassTexture &Input2)
Definition PostProcessAmbientOcclusion.cpp:1021
END_SHADER_PARAMETER_STRUCT()
FRDGTextureRef GetScreenSpaceAOFallback(const FRDGSystemTextures &SystemTextures)
Definition PostProcessAmbientOcclusion.cpp:325
FRDGTextureDesc GetScreenSpaceAOTextureDesc(ERHIFeatureLevel::Type FeatureLevel, FIntPoint Extent)
Definition PostProcessAmbientOcclusion.cpp:310
FScreenPassTexture AddGTAOInnerIntegratePass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FGTAOCommonParameters &CommonParameters, FScreenPassTexture SceneDepth, FScreenPassTexture HorizonsTexture)
Definition PostProcessAmbientOcclusion.cpp:1216
FScreenPassTexture AddAmbientOcclusionSetupPass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSSAOCommonParameters &CommonParameters, FScreenPassTexture Input)
Definition PostProcessAmbientOcclusion.cpp:540
FScreenPassTexture AddGTAOUpsamplePass(FRDGBuilder &GraphBuilder, const FViewInfo &View, FScreenPassTexture Input, FScreenPassTexture SceneDepth, FScreenPassRenderTarget Output)
Definition PostProcessAmbientOcclusion.cpp:1638
ESSAOType
Definition PostProcessAmbientOcclusion.h:19
FScreenPassTexture AddAmbientOcclusionFinalPass(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSSAOCommonParameters &CommonParameters, const FScreenPassTexture &Input0, const FScreenPassTexture &Input1, const FScreenPassTexture &Input2, FScreenPassRenderTarget FinalOutput)
Definition PostProcessAmbientOcclusion.cpp:1043
FRDGTextureRef CreateScreenSpaceAOTexture(FRDGBuilder &GraphBuilder, ERHIFeatureLevel::Type FeatureLevel, FIntPoint Extent)
Definition PostProcessAmbientOcclusion.cpp:320
EAsyncComputeBudget
Definition RHIDefinitions.h:1317
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PostProcessAmbientOcclusion.h:63
bool IsFinalPass(EGTAOPass)
uint32 FinalPass
Definition PostProcessAmbientOcclusion.h:66
bool bUseNormals
Definition PostProcessAmbientOcclusion.h:69
uint32 DownsampleFactor
Definition PostProcessAmbientOcclusion.h:67
bool bHalfRes
Definition PostProcessAmbientOcclusion.h:70
EGTAOType GTAOType
Definition PostProcessAmbientOcclusion.h:65
FGTAOContext(EGTAOType Type)
bool bHasSpatialFilter
Definition PostProcessAmbientOcclusion.h:71
bool bHasTemporalFilter
Definition PostProcessAmbientOcclusion.h:72
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition PostProcessAmbientOcclusion.h:82
static EAsyncComputeBudget GetAmbientOcclusionAsyncComputeBudget()
Definition PostProcessAmbientOcclusion.cpp:196
static EGTAOType GetGTAOPassType(const FViewInfo &View, uint32 Levels)
Definition PostProcessAmbientOcclusion.cpp:284
static bool IsAmbientOcclusionCompute(const ERHIFeatureLevel::Type FeatureLevel)
Definition PostProcessAmbientOcclusion.cpp:181
static bool IsAmbientOcclusionAsyncCompute(const FViewInfo &View, uint32 AOPassCount)
Definition PostProcessAmbientOcclusion.cpp:209
static float GetAmbientOcclusionQualityRT(const FSceneView &View)
Definition PostProcessAmbientOcclusion.cpp:157
static int32 GetAmbientOcclusionShaderLevel(const FSceneView &View)
Definition PostProcessAmbientOcclusion.cpp:171
static bool IsBasePassAmbientOcclusionRequired(const FViewInfo &View)
Definition PostProcessAmbientOcclusion.cpp:203
static float GetAmbientOcclusionStepMipLevelFactor()
Definition PostProcessAmbientOcclusion.cpp:191
static int32 GetNumAmbientOcclusionLevels()
Definition PostProcessAmbientOcclusion.cpp:186
static uint32 ComputeAmbientOcclusionPassCount(const FViewInfo &View)
Definition PostProcessAmbientOcclusion.cpp:236
Definition SceneView.h:1425
Definition ScreenPass.h:136
Definition SceneRendering.h:1132
Definition RenderGraphResources.h:251
Type
Definition RHIFeatureLevel.h:20
Definition PostProcessAmbientOcclusion.h:152
FScreenPassTextureViewport SceneTexturesViewport
Definition PostProcessAmbientOcclusion.h:154
FScreenPassTexture SceneVelocity
Definition PostProcessAmbientOcclusion.h:157
TRDGUniformBufferRef< FSceneTextureUniformParameters > SceneTexturesUniformBuffer
Definition PostProcessAmbientOcclusion.h:153
int32 ShaderQuality
Definition PostProcessAmbientOcclusion.h:161
EGTAOType GTAOType
Definition PostProcessAmbientOcclusion.h:163
uint32 DownscaleFactor
Definition PostProcessAmbientOcclusion.h:162
FIntRect DownsampledViewRect
Definition PostProcessAmbientOcclusion.h:159
FScreenPassTexture SceneDepth
Definition PostProcessAmbientOcclusion.h:156
Definition PostProcessAmbientOcclusion.h:167
FScreenPassTexture Color
Definition PostProcessAmbientOcclusion.h:168
Definition PostProcessAmbientOcclusion.h:192
FIntRect ViewportRect
Definition PostProcessAmbientOcclusion.h:196
FScreenPassRenderTarget OutputAO
Definition PostProcessAmbientOcclusion.h:193
FIntPoint TargetExtent
Definition PostProcessAmbientOcclusion.h:195
Definition SystemTextures.h:13
Definition RenderGraphDefinitions.h:627
Definition PostProcessAmbientOcclusion.h:112
FScreenPassTexture SceneDepth
Definition PostProcessAmbientOcclusion.h:117
FScreenPassTextureViewport SceneTexturesViewport
Definition PostProcessAmbientOcclusion.h:114
TRDGUniformBufferRef< FSceneTextureUniformParameters > SceneTexturesUniformBuffer
Definition PostProcessAmbientOcclusion.h:113
FScreenPassTexture GBufferA
Definition PostProcessAmbientOcclusion.h:116
uint32 Levels
Definition PostProcessAmbientOcclusion.h:119
bool bNeedSmoothingPass
Definition PostProcessAmbientOcclusion.h:123
int32 ShaderQuality
Definition PostProcessAmbientOcclusion.h:120
ESSAOType FullscreenType
Definition PostProcessAmbientOcclusion.h:122
ESSAOType DownscaleType
Definition PostProcessAmbientOcclusion.h:121
Definition ScreenPass.h:83
Definition ScreenPass.h:41
Definition IntPoint.h:25