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

Classes

class  FScreenProbeComputeBRDFProbabilityDensityFunctionCS
 
class  FScreenProbeComputeLightingProbabilityDensityFunctionCS
 
class  FScreenProbeGenerateRaysCS
 

Namespaces

namespace  LumenScreenProbeGather
 

Functions

FAutoConsoleVariableRef GVarLumenScreenProbeGatherImportanceSampling (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample"), GLumenScreenProbeImportanceSampling, TEXT("Whether to use Importance Sampling to generate probe trace directions."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSamplingNumLevels (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.NumLevels"), GLumenScreenProbeImportanceSamplingNumLevels, TEXT("Number of refinement levels to use for screen probe importance sampling. Currently only supported by the serial reference path in ScreenProbeGenerateRaysCS."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSampleIncomingLighting (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.IncomingLighting"), GLumenScreenProbeImportanceSampleIncomingLighting, TEXT("Whether to Importance Sample incoming lighting to generate probe trace directions. When disabled, only the BRDF will be importance sampled."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSampleProbeRadianceHistory (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.ProbeRadianceHistory"), GLumenScreenProbeImportanceSampleProbeRadianceHistory, TEXT("Whether to Importance Sample incoming lighting from last frame's filtered traces to generate probe trace directions. When disabled, the Radiance Cache will be used instead."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarLumenScreenProbeBRDFOctahedronResolution (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.BRDFOctahedronResolution"), GLumenScreenProbeBRDFOctahedronResolution, TEXT("Resolution of the BRDF PDF octahedron per probe."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSamplingMinPDFToTrace (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.MinPDFToTrace"), GLumenScreenProbeImportanceSamplingMinPDFToTrace, TEXT("Minimum normalized BRDF PDF to trace rays for. Larger values cause black corners, but reduce noise as more rays are able to be reassigned to an important direction."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeComputeBRDFProbabilityDensityFunctionCS, "/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf", "ScreenProbeComputeBRDFProbabilityDensityFunctionCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeComputeLightingProbabilityDensityFunctionCS, "/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf", "ScreenProbeComputeLightingProbabilityDensityFunctionCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FScreenProbeGenerateRaysCS, "/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf", "ScreenProbeGenerateRaysCS", SF_Compute)
 
int32 LumenScreenProbeGather::IsProbeTracingResolutionSupportedForImportanceSampling (int32 TracingResolution)
 
bool LumenScreenProbeGather::UseImportanceSampling (const FViewInfo &View)
 
void GenerateBRDF_PDF (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSceneTextures &SceneTextures, FRDGTextureRef &BRDFProbabilityDensityFunction, FRDGBufferSRVRef &BRDFProbabilityDensityFunctionSH, FScreenProbeParameters &ScreenProbeParameters, ERDGPassFlags ComputePassFlags)
 
void GenerateImportanceSamplingRays (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSceneTextures &SceneTextures, const LumenRadianceCache::FRadianceCacheInterpolationParameters &RadianceCacheParameters, FRDGTextureRef BRDFProbabilityDensityFunction, FRDGBufferSRVRef BRDFProbabilityDensityFunctionSH, FScreenProbeParameters &ScreenProbeParameters, ERDGPassFlags ComputePassFlags)
 

Variables

int32 GLumenScreenProbeImportanceSampling = 1
 
int32 GLumenScreenProbeImportanceSamplingNumLevels = 1
 
int32 GLumenScreenProbeImportanceSampleIncomingLighting = 1
 
int32 GLumenScreenProbeImportanceSampleProbeRadianceHistory = 1
 
int32 GLumenScreenProbeBRDFOctahedronResolution = 8
 
float GLumenScreenProbeImportanceSamplingMinPDFToTrace = .1f
 
float GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold = 30
 
FAutoConsoleVariableRef CVarLumenScreenProbeImportanceSamplingHistoryDistanceThreshold (TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.HistoryDistanceThreshold"), GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold, TEXT(""), ECVF_RenderThreadSafe)
 
int32 GLumenScreenProbeGatherReferenceMode
 

Function Documentation

◆ CVarLumenScreenProbeBRDFOctahedronResolution()

FAutoConsoleVariableRef CVarLumenScreenProbeBRDFOctahedronResolution ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.BRDFOctahedronResolution")  ,
GLumenScreenProbeBRDFOctahedronResolution  ,
TEXT("Resolution of the BRDF PDF octahedron per probe." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GenerateBRDF_PDF()

void GenerateBRDF_PDF ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FSceneTextures SceneTextures,
FRDGTextureRef BRDFProbabilityDensityFunction,
FRDGBufferSRVRef BRDFProbabilityDensityFunctionSH,
FScreenProbeParameters ScreenProbeParameters,
ERDGPassFlags  ComputePassFlags 
)

◆ GenerateImportanceSamplingRays()

void GenerateImportanceSamplingRays ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FSceneTextures SceneTextures,
const LumenRadianceCache::FRadianceCacheInterpolationParameters RadianceCacheParameters,
FRDGTextureRef  BRDFProbabilityDensityFunction,
FRDGBufferSRVRef  BRDFProbabilityDensityFunctionSH,
FScreenProbeParameters ScreenProbeParameters,
ERDGPassFlags  ComputePassFlags 
)

◆ GVarLumenScreenProbeGatherImportanceSampling()

FAutoConsoleVariableRef GVarLumenScreenProbeGatherImportanceSampling ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample")  ,
GLumenScreenProbeImportanceSampling  ,
TEXT("Whether to use Importance Sampling to generate probe trace directions." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeImportanceSampleIncomingLighting()

FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSampleIncomingLighting ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.IncomingLighting")  ,
GLumenScreenProbeImportanceSampleIncomingLighting  ,
TEXT("Whether to Importance Sample incoming lighting to generate probe trace directions. When disabled, only the BRDF will be importance sampled." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeImportanceSampleProbeRadianceHistory()

FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSampleProbeRadianceHistory ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.ProbeRadianceHistory")  ,
GLumenScreenProbeImportanceSampleProbeRadianceHistory  ,
TEXT("Whether to Importance Sample incoming lighting from last frame's filtered traces to generate probe trace directions. When disabled, the Radiance Cache will be used instead." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeImportanceSamplingMinPDFToTrace()

FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSamplingMinPDFToTrace ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.MinPDFToTrace")  ,
GLumenScreenProbeImportanceSamplingMinPDFToTrace  ,
TEXT("Minimum normalized BRDF PDF to trace rays for. Larger values cause black corners, but reduce noise as more rays are able to be reassigned to an important direction." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ GVarLumenScreenProbeImportanceSamplingNumLevels()

FAutoConsoleVariableRef GVarLumenScreenProbeImportanceSamplingNumLevels ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.NumLevels")  ,
GLumenScreenProbeImportanceSamplingNumLevels  ,
TEXT("Number of refinement levels to use for screen probe importance sampling. Currently only supported by the serial reference path in ScreenProbeGenerateRaysCS." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ IMPLEMENT_GLOBAL_SHADER() [1/3]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeComputeBRDFProbabilityDensityFunctionCS  ,
"/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf"  ,
"ScreenProbeComputeBRDFProbabilityDensityFunctionCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/3]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeComputeLightingProbabilityDensityFunctionCS  ,
"/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf"  ,
"ScreenProbeComputeLightingProbabilityDensityFunctionCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/3]

IMPLEMENT_GLOBAL_SHADER ( FScreenProbeGenerateRaysCS  ,
"/Engine/Private/Lumen/LumenScreenProbeImportanceSampling.usf"  ,
"ScreenProbeGenerateRaysCS"  ,
SF_Compute   
)

Variable Documentation

◆ CVarLumenScreenProbeImportanceSamplingHistoryDistanceThreshold

FAutoConsoleVariableRef CVarLumenScreenProbeImportanceSamplingHistoryDistanceThreshold(TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.HistoryDistanceThreshold"), GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold, TEXT(""), ECVF_RenderThreadSafe) ( TEXT("r.Lumen.ScreenProbeGather.ImportanceSample.HistoryDistanceThreshold")  ,
GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold  ,
TEXT("")  ,
ECVF_RenderThreadSafe   
)

◆ GLumenScreenProbeBRDFOctahedronResolution

int32 GLumenScreenProbeBRDFOctahedronResolution = 8

◆ GLumenScreenProbeGatherReferenceMode

int32 GLumenScreenProbeGatherReferenceMode
extern

◆ GLumenScreenProbeImportanceSampleIncomingLighting

int32 GLumenScreenProbeImportanceSampleIncomingLighting = 1

◆ GLumenScreenProbeImportanceSampleProbeRadianceHistory

int32 GLumenScreenProbeImportanceSampleProbeRadianceHistory = 1

◆ GLumenScreenProbeImportanceSampling

int32 GLumenScreenProbeImportanceSampling = 1

◆ GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold

float GLumenScreenProbeImportanceSamplingHistoryDistanceThreshold = 30

◆ GLumenScreenProbeImportanceSamplingMinPDFToTrace

float GLumenScreenProbeImportanceSamplingMinPDFToTrace = .1f

◆ GLumenScreenProbeImportanceSamplingNumLevels

int32 GLumenScreenProbeImportanceSamplingNumLevels = 1