NumIrradianceCalculationPhotons
NumIrradianceCalculationPhotons
#Overview
name: NumIrradianceCalculationPhotons
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 5
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of NumIrradianceCalculationPhotons is to control the number of photons used in irradiance calculations for photon mapping in Unreal Engine’s lighting system. This setting is crucial for balancing the quality and performance of global illumination calculations.
This setting variable is primarily used in the Lightmass subsystem, which is responsible for static lighting calculations in Unreal Engine. It’s specifically utilized in the photon mapping process, which is a key component of global illumination.
The value of this variable is set in the Lightmass configuration file (GLightmassIni). It’s read from the configuration file in the FLightmassExporter::WriteSceneSettings function, which suggests that it’s a user-configurable setting.
NumIrradianceCalculationPhotons interacts with other photon mapping settings, such as DirectPhotonSearchDistance and IndirectPhotonSearchDistance. It’s used in conjunction with these variables to determine how many photons to consider when calculating irradiance for both direct and indirect lighting.
Developers should be aware that this variable directly impacts the quality and performance of lighting calculations. A higher value will result in more accurate lighting but will increase computation time, while a lower value will be faster but may lead to less accurate or noisier lighting results.
Best practices when using this variable include:
- Balancing quality and performance based on project needs.
- Adjusting it in conjunction with other photon mapping settings for optimal results.
- Testing different values to find the sweet spot for your specific scene.
- Consider increasing this value for final builds or important visualizations, while using a lower value during development for faster iteration times.
- Be mindful of how changes to this value affect both visual quality and build times for your project.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseLightmass.ini:179, section: [DevOptions.PhotonMapping]
- INI Section:
DevOptions.PhotonMapping
- Raw value:
400
- 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:2368
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
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;
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("FinalGatherImportanceSampleConeAngle"), FinalGatherImportanceSampleConeAngle, GLightmassIni));
Scene.PhotonMappingSettings.FinalGatherImportanceSampleCosConeAngle = FMath::Cos(FMath::Clamp(FinalGatherImportanceSampleConeAngle, 0.0f, 90.0f) * (float)PI / 180.0f);
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("IndirectPhotonEmitDiskRadius"), Scene.PhotonMappingSettings.IndirectPhotonEmitDiskRadius, GLightmassIni));
float IndirectPhotonEmitConeAngleDegrees;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/PhotonMapping.cpp:1521
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::CalculateIrradiancePhotonsWorkRange
Source code excerpt:
DirectPhotonMap,
NumPhotonsEmittedDirect,
PhotonMappingSettings.NumIrradianceCalculationPhotons,
PhotonMappingSettings.DirectPhotonSearchDistance,
CurrentIrradiancePhoton,
bDebugThisPhoton && GeneralSettings.ViewSingleBounceNumber == 0,
TempFoundPhotons,
OutStats);
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/PhotonMapping.cpp:1547
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::CalculateIrradiancePhotonsWorkRange
Source code excerpt:
FirstBouncePhotonMap,
NumPhotonsEmittedFirstBounce,
PhotonMappingSettings.NumIrradianceCalculationPhotons,
PhotonMappingSettings.IndirectPhotonSearchDistance,
CurrentIrradiancePhoton,
bDebugThisPhoton && GeneralSettings.ViewSingleBounceNumber == 1,
TempFoundPhotons,
OutStats);
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/PhotonMapping.cpp:1571
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::CalculateIrradiancePhotonsWorkRange
Source code excerpt:
SecondBouncePhotonMap,
NumPhotonsEmittedSecondBounce,
PhotonMappingSettings.NumIrradianceCalculationPhotons,
PhotonMappingSettings.IndirectPhotonSearchDistance,
CurrentIrradiancePhoton,
bDebugThisPhoton && GeneralSettings.ViewSingleBounceNumber > 1,
TempFoundPhotons,
OutStats);
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:630
Scope (from outer to inner):
file
namespace Lightmass
class class FPhotonMappingSettings
Source code excerpt:
/** Number of photons to find in each photon map when calculating irradiance for an irradiance photon. */
int32 NumIrradianceCalculationPhotons;
/**
* Fraction of NumHemisphereSamples to use for importance sampling instead of uniform sampling the final gather.
* If this fraction is close to 1, no uniform samples will be done and irradiance caching will be forced off as a result.
* If this is 0, only uniform samples will be taken.
*/