UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DistanceFieldObjectCulling.cpp File Reference

Classes

class  FCullObjectsForViewCS
 
class  FBuildTileConesCS
 
class  FObjectCullVS
 
class  FObjectCullPS
 
class  FComputeCulledTilesStartOffsetCS
 

Functions

FAutoConsoleVariableRef CVarMaxDistanceFieldObjectsPerCullTile (TEXT("r.AOAverageObjectsPerCullTile"), GAverageDistanceFieldObjectsPerCullTile, TEXT("Determines how much memory should be allocated in distance field object culling data structures. Too much = memory waste, too little = flickering due to buffer overflow."), ECVF_RenderThreadSafe|ECVF_ReadOnly)
 
 IMPLEMENT_GLOBAL_SHADER (FCullObjectsForViewCS, "/Engine/Private/DistanceFieldObjectCulling.usf", "CullObjectsForViewCS", SF_Compute)
 
void CullObjectsToView (FRDGBuilder &GraphBuilder, const FScene &Scene, const FViewInfo &View, const FDistanceFieldAOParameters &Parameters, FDistanceFieldCulledObjectBufferParameters &CulledObjectBufferParameters)
 
 IMPLEMENT_GLOBAL_SHADER (FBuildTileConesCS, "/Engine/Private/DistanceFieldObjectCulling.usf", "BuildTileConesMain", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FObjectCullVS, "/Engine/Private/DistanceFieldObjectCulling.usf", "ObjectCullVS", SF_Vertex)
 
 IMPLEMENT_GLOBAL_SHADER (FObjectCullPS, "/Engine/Private/DistanceFieldObjectCulling.usf", "ObjectCullPS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER (FComputeCulledTilesStartOffsetCS, "/Engine/Private/DistanceFieldObjectCulling.usf", "ComputeCulledTilesStartOffsetCS", SF_Compute)
 
void ScatterTilesToObjects (FRDGBuilder &GraphBuilder, bool bCountingPass, const FViewInfo &View, const FDistanceFieldSceneData &DistanceFieldSceneData, FIntPoint TileListGroupSize, const FDistanceFieldAOParameters &Parameters, FRDGBufferRef ObjectIndirectArguments, const FDistanceFieldCulledObjectBufferParameters &CulledObjectBufferParameters, const FTileIntersectionParameters &TileIntersectionParameters, const FSceneTextures &SceneTextures)
 
FIntPoint GetTileListGroupSizeForView (const FViewInfo &View)
 
void BuildTileObjectLists (FRDGBuilder &GraphBuilder, const FScene &Scene, const FViewInfo &View, const FSceneTextures &SceneTextures, FRDGBufferRef ObjectIndirectArguments, const FDistanceFieldCulledObjectBufferParameters &CulledObjectBufferParameters, FTileIntersectionParameters TileIntersectionParameters, FRDGTextureRef DistanceFieldNormal, const FDistanceFieldAOParameters &Parameters)
 

Variables

int32 GAOScatterTileCulling = 1
 
FAutoConsoleVariableRef CVarAOScatterTileCulling (TEXT("r.AOScatterTileCulling"), GAOScatterTileCulling, TEXT("Whether to use the rasterizer for binning occluder objects into screenspace tiles."), ECVF_RenderThreadSafe)
 
int32 GAverageDistanceFieldObjectsPerCullTile = 512
 
const uint32 ComputeStartOffsetGroupSize = 64
 

Function Documentation

◆ BuildTileObjectLists()

void BuildTileObjectLists ( FRDGBuilder GraphBuilder,
const FScene Scene,
const FViewInfo View,
const FSceneTextures SceneTextures,
FRDGBufferRef  ObjectIndirectArguments,
const FDistanceFieldCulledObjectBufferParameters CulledObjectBufferParameters,
FTileIntersectionParameters  TileIntersectionParameters,
FRDGTextureRef  DistanceFieldNormal,
const FDistanceFieldAOParameters Parameters 
)

◆ CullObjectsToView()

void CullObjectsToView ( FRDGBuilder GraphBuilder,
const FScene Scene,
const FViewInfo View,
const FDistanceFieldAOParameters Parameters,
FDistanceFieldCulledObjectBufferParameters CulledObjectBufferParameters 
)

◆ CVarMaxDistanceFieldObjectsPerCullTile()

FAutoConsoleVariableRef CVarMaxDistanceFieldObjectsPerCullTile ( TEXT("r.AOAverageObjectsPerCullTile")  ,
GAverageDistanceFieldObjectsPerCullTile  ,
TEXT("Determines how much memory should be allocated in distance field object culling data structures. Too much = memory waste, too little = flickering due to buffer overflow." ,
ECVF_RenderThreadSafe ECVF_ReadOnly 
)

◆ GetTileListGroupSizeForView()

FIntPoint GetTileListGroupSizeForView ( const FViewInfo View)

◆ IMPLEMENT_GLOBAL_SHADER() [1/5]

IMPLEMENT_GLOBAL_SHADER ( FBuildTileConesCS  ,
"/Engine/Private/DistanceFieldObjectCulling.usf"  ,
"BuildTileConesMain"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/5]

IMPLEMENT_GLOBAL_SHADER ( FComputeCulledTilesStartOffsetCS  ,
"/Engine/Private/DistanceFieldObjectCulling.usf"  ,
"ComputeCulledTilesStartOffsetCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/5]

IMPLEMENT_GLOBAL_SHADER ( FCullObjectsForViewCS  ,
"/Engine/Private/DistanceFieldObjectCulling.usf"  ,
"CullObjectsForViewCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [4/5]

IMPLEMENT_GLOBAL_SHADER ( FObjectCullPS  ,
"/Engine/Private/DistanceFieldObjectCulling.usf"  ,
"ObjectCullPS"  ,
SF_Pixel   
)

◆ IMPLEMENT_GLOBAL_SHADER() [5/5]

IMPLEMENT_GLOBAL_SHADER ( FObjectCullVS  ,
"/Engine/Private/DistanceFieldObjectCulling.usf"  ,
"ObjectCullVS"  ,
SF_Vertex   
)

◆ ScatterTilesToObjects()

void ScatterTilesToObjects ( FRDGBuilder GraphBuilder,
bool  bCountingPass,
const FViewInfo View,
const FDistanceFieldSceneData DistanceFieldSceneData,
FIntPoint  TileListGroupSize,
const FDistanceFieldAOParameters Parameters,
FRDGBufferRef  ObjectIndirectArguments,
const FDistanceFieldCulledObjectBufferParameters CulledObjectBufferParameters,
const FTileIntersectionParameters TileIntersectionParameters,
const FSceneTextures SceneTextures 
)

Variable Documentation

◆ ComputeStartOffsetGroupSize

const uint32 ComputeStartOffsetGroupSize = 64

◆ CVarAOScatterTileCulling

FAutoConsoleVariableRef CVarAOScatterTileCulling(TEXT("r.AOScatterTileCulling"), GAOScatterTileCulling, TEXT("Whether to use the rasterizer for binning occluder objects into screenspace tiles."), ECVF_RenderThreadSafe) ( TEXT("r.AOScatterTileCulling")  ,
GAOScatterTileCulling  ,
TEXT("Whether to use the rasterizer for binning occluder objects into screenspace tiles." ,
ECVF_RenderThreadSafe   
)

◆ GAOScatterTileCulling

int32 GAOScatterTileCulling = 1

◆ GAverageDistanceFieldObjectsPerCullTile

int32 GAverageDistanceFieldObjectsPerCullTile = 512