bVisualizeIrradianceSamples
bVisualizeIrradianceSamples
#Overview
name: bVisualizeIrradianceSamples
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 7
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of bVisualizeIrradianceSamples is to enable visualization of irradiance samples for debugging purposes in the Unreal Engine’s lighting system. This setting variable is primarily used in the irradiance caching component of the global illumination system.
The Unreal Engine subsystems that rely on this setting variable are mainly the lighting and rendering systems, specifically the static lighting and lightmass components. This is evident from the file locations where the variable is referenced, such as UnrealLightmass and the Lightmass exporter.
The value of this variable is set in the configuration file, as seen in the Lightmass.cpp file where it’s read using GConfig->GetBool(). It’s typically defined in the GLightmassIni configuration file.
This variable interacts with other irradiance caching settings, such as bShowGradientsOnly and bUseIrradianceGradients. It’s often used in conjunction with debug-related variables and conditional statements.
Developers must be aware that this variable is primarily for debugging purposes. Enabling it may have performance implications and should not be used in production builds. It’s particularly useful when troubleshooting lighting issues or optimizing the irradiance caching system.
Best practices when using this variable include:
- Only enable it during development and debugging phases.
- Use it in conjunction with other debugging tools and variables to get a comprehensive view of the irradiance caching system.
- Disable it before finalizing the lighting build for production to ensure optimal performance.
- Be mindful of its impact on performance, especially in complex scenes with many irradiance samples.
- Use it to verify the placement and influence of irradiance cache samples when fine-tuning lighting settings.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseLightmass.ini:210, section: [DevOptions.IrradianceCache]
- INI Section:
DevOptions.IrradianceCache
- Raw value:
True
- 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:2403
Scope (from outer to inner):
file
function void FLightmassExporter::WriteSceneSettings
Source code excerpt:
VERIFYLIGHTMASSINI(GConfig->GetBool(TEXT("DevOptions.IrradianceCache"), TEXT("bShowGradientsOnly"), bConfigBool, GLightmassIni));
Scene.IrradianceCachingSettings.bShowGradientsOnly = bConfigBool;
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));
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/FinalGather.cpp:1696
Scope (from outer to inner):
file
namespace Lightmass
function FFinalGatherSample FStaticLightingSystem::CachePointIncomingRadiance
Source code excerpt:
#if ALLOW_LIGHTMAP_SAMPLE_DEBUGGING
if (IrradianceCachingSettings.bVisualizeIrradianceSamples && Mapping == Scene.DebugMapping && GeneralSettings.ViewSingleBounceNumber == BounceNumber)
{
const float DistanceToDebugTexelSq = FVector3f(Scene.DebugInput.Position - Vertex.WorldPosition).SizeSquared();
FDebugLightingCacheRecord TempRecord;
TempRecord.bNearSelectedTexel = DistanceToDebugTexelSq < NewRecord.BoundingRadius * NewRecord.BoundingRadius;
TempRecord.Radius = NewRecord.Radius;
TempRecord.Vertex.VertexPosition = Vertex.WorldPosition;
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/LightingCache.cpp:11
Scope (from outer to inner):
file
namespace Lightmass
function FLightingCacheBase::FLightingCacheBase
Source code excerpt:
bUseIrradianceGradients(InSystem.IrradianceCachingSettings.bUseIrradianceGradients),
bShowGradientsOnly(InSystem.IrradianceCachingSettings.bShowGradientsOnly),
bVisualizeIrradianceSamples(InSystem.IrradianceCachingSettings.bVisualizeIrradianceSamples),
BounceNumber(InBounceNumber),
NextRecordId(0),
System(InSystem)
{
InterpolationAngleNormalization = 1.0f / FMath::Sqrt(1.0f - FMath::Cos(InSystem.IrradianceCachingSettings.InterpolationMaxAngle * (float)PI / 180.0f));
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/LightingCache.h:132
Scope (from outer to inner):
file
namespace Lightmass
class class FLightingCacheBase
Source code excerpt:
const bool bUseIrradianceGradients;
const bool bShowGradientsOnly;
const bool bVisualizeIrradianceSamples;
const int32 BounceNumber;
int32 NextRecordId;
mutable FIrradianceCacheStats Stats;
const class FStaticLightingSystem& System;
/** Initialization constructor. */
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/LightingCache.h:449
Scope (from outer to inner):
file
namespace Lightmass
function bool TLightingCache<SampleType>::InterpolateLighting
Source code excerpt:
}
if (bVisualizeIrradianceSamples && bDebugThisSample && BounceNumber == 1)
{
for (int32 i = 0; i < DebugCacheRecords.Num(); i++)
{
FDebugLightingCacheRecord& CurrentRecord = DebugCacheRecords[i];
if (CurrentRecord.RecordId == LightingRecord.Id)
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Private/Lighting/LightingCache.h:486
Scope (from outer to inner):
file
namespace Lightmass
function bool TLightingCache<SampleType>::InterpolateLighting
Source code excerpt:
}
if (bVisualizeIrradianceSamples && bDebugThisSample && BounceNumber == 1)
{
for (int32 i = 0; i < DebugCacheRecords.Num(); i++)
{
FDebugLightingCacheRecord& CurrentRecord = DebugCacheRecords[i];
if (CurrentRecord.RecordId == LightingRecord.Id)
#Loc: <Workspace>/Engine/Source/Programs/UnrealLightmass/Public/SceneExport.h:726
Scope (from outer to inner):
file
namespace Lightmass
class class FIrradianceCachingSettings
Source code excerpt:
/** Debugging - whether to draw debug elements in the editor showing which irradiance cache samples were used to shade the selected texel. */
bool bVisualizeIrradianceSamples;
/** 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;