r.Lumen.ScreenProbeGather.IntegrationTileClassification
r.Lumen.ScreenProbeGather.IntegrationTileClassification
#Overview
name: r.Lumen.ScreenProbeGather.IntegrationTileClassification
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Whether to use tile classification during diffuse integration. Tile Classification splits compute dispatches by VGPRs for better occupancy, but can introduce errors if implemented incorrectly.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of r.Lumen.ScreenProbeGather.IntegrationTileClassification is to control the use of tile classification during diffuse integration in Lumen’s screen probe gathering process. This setting is part of Unreal Engine 5’s Lumen global illumination system, specifically within the screen probe gathering subsystem.
This variable is primarily used in the Lumen rendering module, as evidenced by its location in the LumenScreenProbeGather.cpp file. It directly affects the screen probe integration process, which is a crucial part of Lumen’s real-time global illumination system.
The value of this variable is set through the Unreal Engine console variable system, as indicated by the FAutoConsoleVariableRef declaration. It can be modified at runtime, allowing for dynamic adjustments to the rendering process.
The associated C++ variable GLumenScreenProbeIntegrationTileClassification interacts directly with this console variable, sharing the same value. This variable is used in the code to determine whether tile classification should be applied during the integration process.
Developers should be aware that:
- Tile classification splits compute dispatches by VGPRs (Vector General Purpose Registers) for better occupancy.
- While it can improve performance, it may introduce errors if implemented incorrectly.
- The setting is marked with ECVF_Scalability, indicating it affects the scalability of the rendering process.
Best practices when using this variable include:
- Testing thoroughly to ensure no visual artifacts are introduced when enabled.
- Considering the performance impact on different hardware configurations.
- Using it in conjunction with other Lumen settings for optimal results.
Regarding the associated variable GLumenScreenProbeIntegrationTileClassification:
- Its purpose is to provide a quick, in-code reference to the console variable’s value.
- It’s used directly in the rendering code to determine whether to apply tile classification.
- It’s initialized with a default value of 1, meaning tile classification is enabled by default.
- Developers can modify this variable through the console command system, which will automatically update the associated C++ variable.
When working with this variable, developers should consider its impact on the entire Lumen screen probe gathering process and test thoroughly across different scenarios and hardware configurations to ensure optimal performance and visual quality.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/Lumen/LumenScreenProbeGather.cpp:115
Scope: file
Source code excerpt:
int32 GLumenScreenProbeIntegrationTileClassification = 1;
FAutoConsoleVariableRef CVarLumenScreenProbeIntegrationTileClassification(
TEXT("r.Lumen.ScreenProbeGather.IntegrationTileClassification"),
GLumenScreenProbeIntegrationTileClassification,
TEXT("Whether to use tile classification during diffuse integration. Tile Classification splits compute dispatches by VGPRs for better occupancy, but can introduce errors if implemented incorrectly."),
ECVF_Scalability | ECVF_RenderThreadSafe
);
int32 GLumenScreenProbeSupportTwoSidedFoliageBackfaceDiffuse = 1;
#Associated Variable and Callsites
This variable is associated with another variable named GLumenScreenProbeIntegrationTileClassification
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/Lumen/LumenScreenProbeGather.cpp:113
Scope: file
Source code excerpt:
);
int32 GLumenScreenProbeIntegrationTileClassification = 1;
FAutoConsoleVariableRef CVarLumenScreenProbeIntegrationTileClassification(
TEXT("r.Lumen.ScreenProbeGather.IntegrationTileClassification"),
GLumenScreenProbeIntegrationTileClassification,
TEXT("Whether to use tile classification during diffuse integration. Tile Classification splits compute dispatches by VGPRs for better occupancy, but can introduce errors if implemented incorrectly."),
ECVF_Scalability | ECVF_RenderThreadSafe
);
int32 GLumenScreenProbeSupportTwoSidedFoliageBackfaceDiffuse = 1;
FAutoConsoleVariableRef CVarLumenScreenProbeSupportBackfaceDiffuse(
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/Lumen/LumenScreenProbeGather.cpp:1092
Scope (from outer to inner):
file
function void InterpolateAndIntegrate
Source code excerpt:
{
const bool bApplyShortRangeAO = ScreenSpaceBentNormalParameters.UseShortRangeAO != 0 && LumenScreenProbeGather::ApplyShortRangeAODuringIntegration();
const bool bUseTileClassification = GLumenScreenProbeIntegrationTileClassification != 0 && LumenScreenProbeGather::GetDiffuseIntegralMethod() != 2;
const bool bSupportBackfaceDiffuse = BackfaceDiffuseIndirect != nullptr;
const int32 RoughSpecularSamplingMode = GLumenScreenProbeRoughSpecularSamplingMode > 0 ? 1 : 0;
LumenReflections::FCompositeParameters ReflectionsCompositeParameters;
LumenReflections::SetupCompositeParameters(View, ReflectionsCompositeParameters);