NumImportanceSearchPhotons
NumImportanceSearchPhotons
#Overview
name: NumImportanceSearchPhotons
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 NumImportanceSearchPhotons is to control the number of importance photons used in the photon mapping process for global illumination calculations in Unreal Engine 5’s lighting system.
This setting variable is primarily used by the Lightmass subsystem, which is responsible for pre-computed lighting in Unreal Engine. It’s specifically part of the photon mapping settings used in the global illumination calculations.
The value of this variable is typically set in the Lightmass configuration file (GLightmassIni). It’s read from the “DevOptions.PhotonMapping” section of this configuration file.
NumImportanceSearchPhotons interacts with other photon mapping settings, such as MinImportancePhotonSearchDistance and MaxImportancePhotonSearchDistance. It’s also scaled by NumImportanceSearchPhotonsScale, which is read from a quality-specific section of the configuration file.
Developers should be aware that this variable directly impacts the quality and performance of the global illumination calculation. A higher number of importance search photons can lead to more accurate lighting results but at the cost of increased computation time.
Best practices when using this variable include:
- Adjusting it based on the scale and complexity of your scene.
- Balancing it with other photon mapping settings for optimal results.
- Testing different values to find the best trade-off between lighting quality and build time for your specific project.
- Considering the target platform’s performance capabilities when setting this value.
It’s important to note that changes to this variable will require rebuilding the lighting to take effect, which can be a time-consuming process for large scenes.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseLightmass.ini:189, section: [DevOptions.PhotonMapping]
- INI Section:
DevOptions.PhotonMapping
- Raw value:
10
- 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:2379
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("MaxImportancePhotonSearchDistance"), Scene.PhotonMappingSettings.MaxImportancePhotonSearchDistance, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("MinImportancePhotonSearchDistance"), Scene.PhotonMappingSettings.MinImportancePhotonSearchDistance, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetInt(TEXT("DevOptions.PhotonMapping"), TEXT("NumImportanceSearchPhotons"), Scene.PhotonMappingSettings.NumImportanceSearchPhotons, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("OutsideImportanceVolumeDensityScale"), Scene.PhotonMappingSettings.OutsideImportanceVolumeDensityScale, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("DirectPhotonDensity"), Scene.PhotonMappingSettings.DirectPhotonDensity, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("DirectIrradiancePhotonDensity"), Scene.PhotonMappingSettings.DirectIrradiancePhotonDensity, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("DirectPhotonSearchDistance"), Scene.PhotonMappingSettings.DirectPhotonSearchDistance, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("IndirectPhotonPathDensity"), Scene.PhotonMappingSettings.IndirectPhotonPathDensity, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.PhotonMapping"), TEXT("IndirectPhotonDensity"), Scene.PhotonMappingSettings.IndirectPhotonDensity, GLightmassIni));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Lightmass/Lightmass.cpp:2446
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
float NumImportanceSearchPhotonsScale;
VERIFYLIGHTMASSINI(GConfig->GetFloat(QualitySectionNames[QualityLevel], TEXT("NumImportanceSearchPhotonsScale"), NumImportanceSearchPhotonsScale, GLightmassIni));
Scene.PhotonMappingSettings.NumImportanceSearchPhotons = FMath::TruncToInt(Scene.PhotonMappingSettings.NumImportanceSearchPhotons * NumImportanceSearchPhotonsScale);
float NumDirectPhotonsScale;
VERIFYLIGHTMASSINI(GConfig->GetFloat(QualitySectionNames[QualityLevel], TEXT("NumDirectPhotonsScale"), NumDirectPhotonsScale, GLightmassIni));
Scene.PhotonMappingSettings.DirectPhotonDensity = Scene.PhotonMappingSettings.DirectPhotonDensity * NumDirectPhotonsScale;
Scene.PhotonMappingSettings.DirectIrradiancePhotonDensity = Scene.PhotonMappingSettings.DirectIrradiancePhotonDensity * NumDirectPhotonsScale;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/FinalGather.cpp:37
Scope (from outer to inner):
file
namespace Lightmass
function void FStaticLightingSystem::GatherVolumeImportancePhotonDirections
Source code excerpt:
FirstBouncePhotonSegmentMap,
WorldPosition,
PhotonMappingSettings.NumImportanceSearchPhotons,
PhotonMappingSettings.MinImportancePhotonSearchDistance,
PhotonMappingSettings.MaxImportancePhotonSearchDistance,
FoundPhotonSegments,
bDebugThisSample);
FirstHemisphereImportancePhotonDirections.Empty(FoundPhotonSegments.Num());
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/FinalGather.cpp:1559
Scope (from outer to inner):
file
namespace Lightmass
function FFinalGatherSample FStaticLightingSystem::CachePointIncomingRadiance
Source code excerpt:
Vertex.WorldPosition,
Vertex.TriangleNormal,
PhotonMappingSettings.NumImportanceSearchPhotons,
PhotonMappingSettings.MinImportancePhotonSearchDistance,
PhotonMappingSettings.MaxImportancePhotonSearchDistance,
bDebugThisTexel,
false,
FoundPhotons,
DummyStats);
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:659
Scope (from outer to inner):
file
namespace Lightmass
class class FPhotonMappingSettings
Source code excerpt:
/** Number of importance photons to find at each irradiance cache sample that will be used to guide the final gather. */
int32 NumImportanceSearchPhotons;
/** Scales the density at which to gather photons outside of the importance volume, if one exists. */
float OutsideImportanceVolumeDensityScale;
/**
* Density of direct photons to emit per light, in number of photons per million surface area units.