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

Classes

class  FClearTracesCS
 
class  FScreenProbeTraceScreenTexturesCS
 
class  FScreenProbeCompactTracesCS
 
class  FSetupCompactedTracesIndirectArgsCS
 
class  FScreenProbeTraceMeshSDFsCS
 
class  FScreenProbeTraceVoxelsCS
 
class  FScreenProbeSetupVisualizeTracesCS
 

Enumerations

enum class  ECompactedTracingIndirectArgs {
  NumTracesDiv64 = 0 * sizeof(FRHIDispatchIndirectParameters) , NumTracesDiv32 = 1 * sizeof(FRHIDispatchIndirectParameters) , NumLightSampleTracesDiv64 = 2 * sizeof(FRHIDispatchIndirectParameters) , NumLightSampleTracesDiv32 = 3 * sizeof(FRHIDispatchIndirectParameters) ,
  MAX = 4
}
 

Functions

FAutoConsoleVariableRef GVarLumenScreenProbeGatherScreenTraces (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces"), GLumenScreenProbeGatherScreenTraces, TEXT("Whether to trace against the screen before falling back to other tracing methods."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTraces (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal"), GLumenScreenProbeGatherHierarchicalScreenTraces, TEXT("Whether to use HZB tracing for SSGI instead of fixed step count intersection. HZB tracing is much more accurate, in particular not missing thin features, but is about ~3x slower."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.FullResDepth"), GLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth, TEXT("Whether the HZB traversal should go all the way down to the full resolution depth, which is more accurate but adds incoherency to the inner loop."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.SkipFoliageHits"), GLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits, TEXT("Whether to allow screen traces to hit Subsurface and TwoSided Foliage shading models. Can be used to work around aliasing from high frequency grass geometry."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.MaxIterations"), GLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations, TEXT("Max iterations for HZB tracing."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherRelativeDepthThickness (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.RelativeDepthThickness"), GLumenScreenProbeGatherRelativeDepthThickness, TEXT("Determines depth thickness of objects hit by HZB tracing, as a relative depth threshold."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHistoryDepthTestRelativeThickness (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.HistoryDepthTestRelativeThickness"), GLumenScreenProbeGatherHistoryDepthTestRelativeThickness, TEXT("Distance between HZB trace hit and previous frame scene depth from which to allow hits, as a relative depth threshold."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.NumThicknessStepsToDetermineCertainty"), GLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty, TEXT("Number of linear search steps to determine if a hit feature is thin and should be ignored."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherVisualizeTraces (TEXT("r.Lumen.ScreenProbeGather.VisualizeTraces"), GLumenScreenProbeGatherVisualizeTraces, TEXT("Whether to visualize traces for the center screen probe, useful for debugging"), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherVisualizeTracesFreeze (TEXT("r.Lumen.ScreenProbeGather.VisualizeTracesFreeze"), GLumenScreenProbeGatherVisualizeTracesFreeze, TEXT("Whether to freeze updating the visualize trace data. Note that no changes to cvars or shaders will propagate until unfrozen."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHairStrands_VoxelTrace (TEXT("r.Lumen.ScreenProbeGather.HairStrands.VoxelTrace"), GLumenScreenProbeGatherHairStrands_VoxelTrace, TEXT("Whether to trace against hair voxel structure for hair casting shadow onto opaques."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeGatherHairStrands_ScreenTrace (TEXT("r.Lumen.ScreenProbeGather.HairStrands.ScreenTrace"), GLumenScreenProbeGatherHairStrands_ScreenTrace, TEXT("Whether to trace against hair depth for hair casting shadow onto opaques."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarLumenScreenProbeGatherScreenTraceMinimumOccupancy (TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.MinimumOccupancy"), GLumenScreenProbeGatherScreenTracesMinimumOccupancy, TEXT("Minimum number of threads still tracing before aborting the trace. Can be used for scalability to abandon traces that have a disproportionate cost."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
bool SupportsHairScreenTraces ()
 
 IMPLEMENT_GLOBAL_SHADER (FClearTracesCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ClearTracesCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeTraceScreenTexturesCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ScreenProbeTraceScreenTexturesCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeCompactTracesCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ScreenProbeCompactTracesCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FSetupCompactedTracesIndirectArgsCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "SetupCompactedTracesIndirectArgsCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeTraceMeshSDFsCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ScreenProbeTraceMeshSDFsCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeTraceVoxelsCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ScreenProbeTraceVoxelsCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeSetupVisualizeTracesCS, "/Engine/Private/Lumen/LumenScreenProbeTracing.usf", "ScreenProbeSetupVisualizeTraces", SF_Compute)
 
void SetupVisualizeTraces (FRDGBuilder &GraphBuilder, const FSceneTextures &SceneTextures, const FScene *Scene, const FViewInfo &View, const FScreenProbeParameters &ScreenProbeParameters, ERDGPassFlags ComputePassFlags)
 
void GetScreenProbeVisualizeTracesBuffer (TRefCountPtr< FRDGPooledBuffer > &VisualizeTracesData)
 
void TraceScreenProbes (FRDGBuilder &GraphBuilder, const FScene *Scene, const FViewInfo &View, const FLumenSceneFrameTemporaries &FrameTemporaries, bool bTraceMeshObjects, const FSceneTextures &SceneTextures, FRDGTextureRef LightingChannelsTexture, const LumenRadianceCache::FRadianceCacheInterpolationParameters &RadianceCacheParameters, FScreenProbeParameters &ScreenProbeParameters, FLumenMeshSDFGridParameters &MeshSDFGridParameters, ERDGPassFlags ComputePassFlags)
 

Variables

int32 GLumenScreenProbeGatherScreenTraces = 1
 
int32 GLumenScreenProbeGatherHierarchicalScreenTraces = 1
 
int32 GLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth = 1
 
int32 GLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits = 1
 
int32 GLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations = 50
 
float GLumenScreenProbeGatherRelativeDepthThickness = .02f
 
float GLumenScreenProbeGatherHistoryDepthTestRelativeThickness = 0.005f
 
int32 GLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty = 4
 
int32 GLumenScreenProbeGatherVisualizeTraces = 0
 
int32 GLumenScreenProbeGatherVisualizeTracesFreeze = 0
 
int32 GLumenScreenProbeGatherHairStrands_VoxelTrace = 1
 
int32 GLumenScreenProbeGatherHairStrands_ScreenTrace = 0
 
int32 GLumenScreenProbeGatherScreenTracesMinimumOccupancy = 0
 
TRefCountPtr< FRDGPooledBufferGVisualizeTracesData
 

Enumeration Type Documentation

◆ ECompactedTracingIndirectArgs

Enumerator
NumTracesDiv64 
NumTracesDiv32 
NumLightSampleTracesDiv64 
NumLightSampleTracesDiv32 
MAX 

Function Documentation

◆ CVarLumenScreenProbeGatherScreenTraceMinimumOccupancy()

FAutoConsoleVariableRef CVarLumenScreenProbeGatherScreenTraceMinimumOccupancy ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.MinimumOccupancy")  ,
GLumenScreenProbeGatherScreenTracesMinimumOccupancy  ,
TEXT("Minimum number of threads still tracing before aborting the trace. Can be used for scalability to abandon traces that have a disproportionate cost." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GetScreenProbeVisualizeTracesBuffer()

void GetScreenProbeVisualizeTracesBuffer ( TRefCountPtr< FRDGPooledBuffer > &  VisualizeTracesData)

◆ GVarLumenScreenProbeGatherHairStrands_ScreenTrace()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHairStrands_ScreenTrace ( TEXT("r.Lumen.ScreenProbeGather.HairStrands.ScreenTrace")  ,
GLumenScreenProbeGatherHairStrands_ScreenTrace  ,
TEXT("Whether to trace against hair depth for hair casting shadow onto opaques." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHairStrands_VoxelTrace()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHairStrands_VoxelTrace ( TEXT("r.Lumen.ScreenProbeGather.HairStrands.VoxelTrace")  ,
GLumenScreenProbeGatherHairStrands_VoxelTrace  ,
TEXT("Whether to trace against hair voxel structure for hair casting shadow onto opaques." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHierarchicalScreenTraces()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTraces ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal")  ,
GLumenScreenProbeGatherHierarchicalScreenTraces  ,
TEXT("Whether to use HZB tracing for SSGI instead of fixed step count intersection. HZB tracing is much more accurate, in particular not missing thin features, but is about ~3x slower." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.FullResDepth")  ,
GLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth  ,
TEXT("Whether the HZB traversal should go all the way down to the full resolution depth, which is more accurate but adds incoherency to the inner loop." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.MaxIterations")  ,
GLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations  ,
TEXT("Max iterations for HZB tracing." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.SkipFoliageHits")  ,
GLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits  ,
TEXT("Whether to allow screen traces to hit Subsurface and TwoSided Foliage shading models. Can be used to work around aliasing from high frequency grass geometry." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherHistoryDepthTestRelativeThickness()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherHistoryDepthTestRelativeThickness ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.HistoryDepthTestRelativeThickness")  ,
GLumenScreenProbeGatherHistoryDepthTestRelativeThickness  ,
TEXT("Distance between HZB trace hit and previous frame scene depth from which to allow hits, as a relative depth threshold." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.NumThicknessStepsToDetermineCertainty")  ,
GLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty  ,
TEXT("Number of linear search steps to determine if a hit feature is thin and should be ignored." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherRelativeDepthThickness()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherRelativeDepthThickness ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.RelativeDepthThickness")  ,
GLumenScreenProbeGatherRelativeDepthThickness  ,
TEXT("Determines depth thickness of objects hit by HZB tracing, as a relative depth threshold." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherScreenTraces()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherScreenTraces ( TEXT("r.Lumen.ScreenProbeGather.ScreenTraces")  ,
GLumenScreenProbeGatherScreenTraces  ,
TEXT("Whether to trace against the screen before falling back to other tracing methods." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherVisualizeTraces()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherVisualizeTraces ( TEXT("r.Lumen.ScreenProbeGather.VisualizeTraces")  ,
GLumenScreenProbeGatherVisualizeTraces  ,
TEXT("Whether to visualize traces for the center screen probe, useful for debugging" ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeGatherVisualizeTracesFreeze()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherVisualizeTracesFreeze ( TEXT("r.Lumen.ScreenProbeGather.VisualizeTracesFreeze")  ,
GLumenScreenProbeGatherVisualizeTracesFreeze  ,
TEXT("Whether to freeze updating the visualize trace data. Note that no changes to cvars or shaders will propagate until unfrozen." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ IMPLEMENT_GLOBAL_SHADER() [1/7]

IMPLEMENT_GLOBAL_SHADER ( FClearTracesCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ClearTracesCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/7]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeCompactTracesCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ScreenProbeCompactTracesCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/7]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeSetupVisualizeTracesCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ScreenProbeSetupVisualizeTraces"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [4/7]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeTraceMeshSDFsCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ScreenProbeTraceMeshSDFsCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [5/7]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeTraceScreenTexturesCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ScreenProbeTraceScreenTexturesCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [6/7]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeTraceVoxelsCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"ScreenProbeTraceVoxelsCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [7/7]

IMPLEMENT_GLOBAL_SHADER ( FSetupCompactedTracesIndirectArgsCS  ,
"/Engine/Private/Lumen/LumenScreenProbeTracing.usf"  ,
"SetupCompactedTracesIndirectArgsCS"  ,
SF_Compute   
)

◆ SetupVisualizeTraces()

void SetupVisualizeTraces ( FRDGBuilder GraphBuilder,
const FSceneTextures SceneTextures,
const FScene Scene,
const FViewInfo View,
const FScreenProbeParameters ScreenProbeParameters,
ERDGPassFlags  ComputePassFlags 
)

◆ SupportsHairScreenTraces()

bool SupportsHairScreenTraces ( )

◆ TraceScreenProbes()

void TraceScreenProbes ( FRDGBuilder GraphBuilder,
const FScene Scene,
const FViewInfo View,
const FLumenSceneFrameTemporaries FrameTemporaries,
bool  bTraceMeshObjects,
const FSceneTextures SceneTextures,
FRDGTextureRef  LightingChannelsTexture,
const LumenRadianceCache::FRadianceCacheInterpolationParameters RadianceCacheParameters,
FScreenProbeParameters ScreenProbeParameters,
FLumenMeshSDFGridParameters MeshSDFGridParameters,
ERDGPassFlags  ComputePassFlags 
)

Variable Documentation

◆ GLumenScreenProbeGatherHairStrands_ScreenTrace

int32 GLumenScreenProbeGatherHairStrands_ScreenTrace = 0

◆ GLumenScreenProbeGatherHairStrands_VoxelTrace

int32 GLumenScreenProbeGatherHairStrands_VoxelTrace = 1

◆ GLumenScreenProbeGatherHierarchicalScreenTraces

int32 GLumenScreenProbeGatherHierarchicalScreenTraces = 1

◆ GLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth

int32 GLumenScreenProbeGatherHierarchicalScreenTracesFullResDepth = 1

◆ GLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations

int32 GLumenScreenProbeGatherHierarchicalScreenTracesMaxIterations = 50

◆ GLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits

int32 GLumenScreenProbeGatherHierarchicalScreenTracesSkipFoliageHits = 1

◆ GLumenScreenProbeGatherHistoryDepthTestRelativeThickness

float GLumenScreenProbeGatherHistoryDepthTestRelativeThickness = 0.005f

◆ GLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty

int32 GLumenScreenProbeGatherNumThicknessStepsToDetermineCertainty = 4

◆ GLumenScreenProbeGatherRelativeDepthThickness

float GLumenScreenProbeGatherRelativeDepthThickness = .02f

◆ GLumenScreenProbeGatherScreenTraces

int32 GLumenScreenProbeGatherScreenTraces = 1

◆ GLumenScreenProbeGatherScreenTracesMinimumOccupancy

int32 GLumenScreenProbeGatherScreenTracesMinimumOccupancy = 0

◆ GLumenScreenProbeGatherVisualizeTraces

int32 GLumenScreenProbeGatherVisualizeTraces = 0

◆ GLumenScreenProbeGatherVisualizeTracesFreeze

int32 GLumenScreenProbeGatherVisualizeTracesFreeze = 0

◆ GVisualizeTracesData

TRefCountPtr<FRDGPooledBuffer> GVisualizeTracesData