RecordRadiusScale
RecordRadiusScale
#Overview
name: RecordRadiusScale
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 6
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of RecordRadiusScale is to control the radius of irradiance cache records in Unreal Engine 5’s lightmass system. It is a scaling factor that directly affects sample placement and quality in the irradiance caching process, which is part of the global illumination calculations.
This setting variable is primarily used in the lightmass system, which is responsible for pre-computed lighting in Unreal Engine. It is specifically part of the irradiance caching settings, which is a technique used to optimize global illumination calculations.
The value of this variable is set in the Lightmass configuration file (GLightmassIni). It is read from the “DevOptions.IrradianceCache” section of this configuration file.
RecordRadiusScale interacts with other irradiance caching settings, such as MaxRecordRadius and DistanceSmoothFactor. It’s also affected by the StaticLightingLevelScale, which scales the RecordRadiusScale based on the level’s scale.
Developers should be aware that this variable directly impacts the quality and performance of lightmass calculations. A larger value will result in fewer, larger irradiance cache samples, which can be faster to compute but may result in less accurate lighting. A smaller value will create more, smaller samples, potentially increasing accuracy but also increasing computation time.
Best practices when using this variable include:
- Adjusting it in conjunction with other irradiance caching settings for optimal results.
- Testing different values to find the right balance between performance and quality for your specific scene.
- Considering the scale of your level when setting this value, as it’s affected by the StaticLightingLevelScale.
- Being mindful that changes to this value will require a full lightmass rebuild to take effect.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseLightmass.ini:211, section: [DevOptions.IrradianceCache]
- INI Section:
DevOptions.IrradianceCache
- Raw value:
.8
- 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:2405
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
VERIFYLIGHTMASSINI(GConfig->GetBool(TEXT("DevOptions.IrradianceCache"), TEXT("bVisualizeIrradianceSamples"), bConfigBool, GLightmassIni));
Scene.IrradianceCachingSettings.bVisualizeIrradianceSamples = bConfigBool;
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("RecordRadiusScale"), Scene.IrradianceCachingSettings.RecordRadiusScale, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("InterpolationMaxAngle"), Scene.IrradianceCachingSettings.InterpolationMaxAngle, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("PointBehindRecordMaxAngle"), Scene.IrradianceCachingSettings.PointBehindRecordMaxAngle, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("DistanceSmoothFactor"), Scene.IrradianceCachingSettings.DistanceSmoothFactor, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("AngleSmoothFactor"), Scene.IrradianceCachingSettings.AngleSmoothFactor, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("SkyOcclusionSmoothnessReduction"), Scene.IrradianceCachingSettings.SkyOcclusionSmoothnessReduction, GLightmassIni));
VERIFYLIGHTMASSINI(GConfig->GetFloat(TEXT("DevOptions.IrradianceCache"), TEXT("MaxRecordRadius"), Scene.IrradianceCachingSettings.MaxRecordRadius, GLightmassIni));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Lightmass/Lightmass.cpp:2471
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
float RecordRadiusScaleScale;
VERIFYLIGHTMASSINI(GConfig->GetFloat(QualitySectionNames[QualityLevel], TEXT("RecordRadiusScaleScale"), RecordRadiusScaleScale, GLightmassIni));
Scene.IrradianceCachingSettings.RecordRadiusScale = Scene.IrradianceCachingSettings.RecordRadiusScale * RecordRadiusScaleScale;
float InterpolationMaxAngleScale;
VERIFYLIGHTMASSINI(GConfig->GetFloat(QualitySectionNames[QualityLevel], TEXT("InterpolationMaxAngleScale"), InterpolationMaxAngleScale, GLightmassIni));
Scene.IrradianceCachingSettings.InterpolationMaxAngle = Scene.IrradianceCachingSettings.InterpolationMaxAngle * InterpolationMaxAngleScale;
float IrradianceCacheSmoothFactor;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/ImportExport/LightmassScene.cpp:526
Scope (from outer to inner):
file
namespace Lightmass
function void FScene::ApplyStaticLightingScale
Source code excerpt:
ShadowSettings.StaticShadowDepthMapTransitionSampleDistanceX *= SceneConstants.StaticLightingLevelScale;
ShadowSettings.StaticShadowDepthMapTransitionSampleDistanceY *= SceneConstants.StaticLightingLevelScale;
IrradianceCachingSettings.RecordRadiusScale *= SceneConstants.StaticLightingLevelScale;
IrradianceCachingSettings.MaxRecordRadius *= SceneConstants.StaticLightingLevelScale;
// Photon mapping does not scale down properly, so this is disabled
/*
PhotonMappingSettings.IndirectPhotonEmitDiskRadius *= SceneConstants.StaticLightingLevelScale;
PhotonMappingSettings.MaxImportancePhotonSearchDistance *= SceneConstants.StaticLightingLevelScale;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/LightingCache.h:192
Scope (from outer to inner):
file
namespace Lightmass
class class TLightingCache : public FLightingCacheBase
class class FRecord
function FRecord
Source code excerpt:
{
// Clamp to be larger than the texel
Radius = FMath::Clamp(GatherInfo.MinDistance, SampleRadius, IrradianceCachingSettings.MaxRecordRadius) * IrradianceCachingSettings.RecordRadiusScale;
// Use a larger radius to interpolate, which smooths the error
InterpolationRadius = Radius * FMath::Max(IrradianceCachingSettings.DistanceSmoothFactor * GeneralSettings.IndirectLightingSmoothness, 1.0f);
BoundingRadius = FMath::Max(Radius, InterpolationRadius);
BackfacingHitsFraction = GatherInfo.BackfacingHitsFraction;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:729
Scope (from outer to inner):
file
namespace Lightmass
class class FIrradianceCachingSettings
Source code excerpt:
/** Scale applied to the radius of irradiance cache records. This directly affects sample placement and therefore quality. */
float RecordRadiusScale;
/** Maximum angle between a record and the point being shaded allowed for the record to contribute. */
float InterpolationMaxAngle;
/**
* Maximum angle from the plane defined by the average normal of a record and the point being shaded
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:741
Scope (from outer to inner):
file
namespace Lightmass
class class FIrradianceCachingSettings
Source code excerpt:
/**
* How much to increase RecordRadiusScale for the shading pass.
* This effectively filters the irradiance on flat surfaces.
*/
float DistanceSmoothFactor;
/**
* How much to increase InterpolationMaxAngle for the shading pass.
* This effectively filters the irradiance on curved surfaces.
*/
float AngleSmoothFactor;