bVisualizeIrradiancePhotonCalculation
bVisualizeIrradiancePhotonCalculation
#Overview
name: bVisualizeIrradiancePhotonCalculation
The value of this variable can be defined or overridden in .ini config files. 1
.ini config file referencing this setting variable.
It is referenced in 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of bVisualizeIrradiancePhotonCalculation is to enable visualization of irradiance photon calculations in the Unreal Engine 5’s lighting system, specifically for the photon mapping process used in global illumination.
This setting variable is primarily used in the Lightmass subsystem, which is responsible for precomputed lighting in Unreal Engine. It is referenced in both the editor-side code (UnrealEd module) and the Lightmass standalone program.
The value of this variable is set from the Lightmass configuration file (GLightmassIni) in the FLightmassExporter::WriteSceneSettings function. It is read from the “DevOptions.PhotonMapping” section of the config file.
This variable interacts with other photon mapping settings, such as bVisualizePhotonImportanceSamples and bEmitPhotonsOutsideImportanceVolume. It is part of the FPhotonMappingSettings struct, which contains various parameters for controlling the photon mapping process.
Developers should be aware that this is primarily a debugging feature. When enabled, it will visualize the irradiance photon calculation process, which can be helpful for understanding and troubleshooting lighting issues, but may impact performance.
Best practices for using this variable include:
- Use it only during development and debugging, not in production builds.
- Combine it with other visualization tools and settings (like ViewSingleBounceNumber) for a comprehensive understanding of the lighting system.
- Be prepared for potential performance impacts when enabled, especially in complex scenes.
- Use it in conjunction with the Lightmass Importance Volume to focus on specific areas of interest in the scene.
Remember to disable this setting before final builds or performance-critical testing, as it is intended for development and debugging purposes only.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseLightmass.ini:175, section: [DevOptions.PhotonMapping]
- INI Section:
DevOptions.PhotonMapping
- Raw value:
False
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Lightmass/Lightmass.cpp:2363
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
VERIFYLIGHTMASSINI(GConfig->GetBool(TEXT("DevOptions.PhotonMapping"), TEXT("bVisualizePhotonImportanceSamples"), bConfigBool, GLightmassIni));
Scene.PhotonMappingSettings.bVisualizePhotonImportanceSamples = bConfigBool;
VERIFYLIGHTMASSINI(GConfig->GetBool(TEXT("DevOptions.PhotonMapping"), TEXT("bVisualizeIrradiancePhotonCalculation"), bConfigBool, GLightmassIni));
Scene.PhotonMappingSettings.bVisualizeIrradiancePhotonCalculation = bConfigBool;
VERIFYLIGHTMASSINI(GConfig->GetBool(TEXT("DevOptions.PhotonMapping"), TEXT("bEmitPhotonsOutsideImportanceVolume"), bConfigBool, GLightmassIni));
Scene.PhotonMappingSettings.bEmitPhotonsOutsideImportanceVolume = bConfigBool;
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("ConeFilterConstant"), Scene.PhotonMappingSettings.ConeFilterConstant, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetInt(TEXT("DevOptions.PhotonMapping"), TEXT("NumIrradianceCalculationPhotons"), Scene.PhotonMappingSettings.NumIrradianceCalculationPhotons, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("FinalGatherImportanceSampleFraction"), Scene.PhotonMappingSettings.FinalGatherImportanceSampleFraction, GLightmassIni));
float FinalGatherImportanceSampleConeAngle;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/PhotonMapping.cpp:1359
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::CalculateIrradiancePhotons
Source code excerpt:
}
if (PhotonMappingSettings.bVisualizeIrradiancePhotonCalculation && Scene.DebugMapping)
{
float ClosestIrradiancePhotonDistSq = FLT_MAX;
// Skip direct irradiance photons if viewing indirect bounces
const int32 ArrayStart = GeneralSettings.ViewSingleBounceNumber > 0 ? NumPhotonWorkRanges : 0;
// Skip indirect irradiance photons if viewing direct only
const int32 ArrayEnd = GeneralSettings.ViewSingleBounceNumber == 0 ? NumPhotonWorkRanges : IrradiancePhotons.Num();
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/PhotonMapping.cpp:1507
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::CalculateIrradiancePhotonsWorkRange
Source code excerpt:
}
const bool bDebugThisPhoton = PhotonMappingSettings.bVisualizeIrradiancePhotonCalculation
&& DebugIrradiancePhotonCalculationArrayIndex == WorkRange.IrradiancePhotonArrayIndex
&& DebugIrradiancePhotonCalculationPhotonIndex == PhotonIndex;
FLinearColor AccumulatedIrradiance(FLinearColor::Black);
// Only add direct contribution if we are final gathering and at least one bounce is required,
if (((PhotonMappingSettings.bUseFinalGathering && GeneralSettings.NumIndirectLightingBounces > 0)
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:618
Scope (from outer to inner):
file
namespace Lightmass
class class FPhotonMappingSettings
Source code excerpt:
* Which photon map search the nodes come from depends on ViewSingleBounceNumber.
*/
bool bVisualizeIrradiancePhotonCalculation;
/**
* Debugging - whether to emit any photons outside the importance volume, if one exists.
* If this is false, nothing outside the volume will bounce lighting and will be lit with direct lighting only.
*/
bool bEmitPhotonsOutsideImportanceVolume;