LightingOnlyBrightness

LightingOnlyBrightness

#Overview

name: LightingOnlyBrightness

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 9 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of LightingOnlyBrightness is to control the color and intensity of lighting in specific rendering modes within Unreal Engine 5. It is primarily used for visualization and debugging purposes in the rendering system.

This setting variable is utilized by several Unreal Engine subsystems and modules, including:

  1. The core rendering system
  2. The MovieRenderPipeline plugin
  3. The nDisplay plugin
  4. The UnrealEd module (for editor viewport rendering)
  5. The static lighting system

The value of this variable is set as a global config property in the UEngine class, as seen in the Engine.h file. It is of type FLinearColor, which means it contains red, green, and blue components.

LightingOnlyBrightness interacts with other variables and flags, particularly:

  1. EngineShowFlags.OverrideDiffuseAndSpecular
  2. EngineShowFlags.LightingOnlyOverride
  3. EngineShowFlags.ReflectionOverride

These flags determine when and how the LightingOnlyBrightness value is applied to the rendering process.

Developers should be aware that:

  1. This variable affects multiple rendering modes, including lighting-only, diffuse and specular overrides, and volumetric lightmap visualization.
  2. Changes to this variable will impact the appearance of scenes when using these specific rendering modes.
  3. It’s primarily used for debugging and visualization purposes, not for final rendering quality.

Best practices when using this variable include:

  1. Use it judiciously and mainly for debugging or specific visualization needs.
  2. Be aware of its impact on different rendering modes and adjust accordingly.
  3. Remember to reset it to default values when not needed to avoid unintended effects on other parts of the rendering pipeline.
  4. Consider the interaction with other rendering flags and settings when modifying this value.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:202, section: [/Script/Engine.Engine]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineRenderPasses/Private/MoviePipelineImagePassBase.cpp:419

Scope (from outer to inner):

file
function     void UMoviePipelineImagePassBase::SetupViewForViewModeOverride

Source code excerpt:

	else if (View->Family->EngineShowFlags.OverrideDiffuseAndSpecular)
	{
		View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
		View->SpecularOverrideParameter = FVector4f(.1f, .1f, .1f, 0.0f);
	}
	else if (View->Family->EngineShowFlags.LightingOnlyOverride)
	{
		View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
		View->SpecularOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
	}
	else if (View->Family->EngineShowFlags.ReflectionOverride)
	{
		View->DiffuseOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
		View->SpecularOverrideParameter = FVector4f(1, 1, 1, 0.0f);

#Loc: <Workspace>/Engine/Plugins/Runtime/nDisplay/Source/DisplayCluster/Private/Game/EngineClasses/Basics/DisplayClusterViewportClient.cpp:606

Scope (from outer to inner):

file
function     void UDisplayClusterViewportClient::Draw

Source code excerpt:

					else if (View->Family->EngineShowFlags.OverrideDiffuseAndSpecular)
					{
						View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
						View->SpecularOverrideParameter = FVector4f(.1f, .1f, .1f, 0.0f);
					}
					else if (View->Family->EngineShowFlags.LightingOnlyOverride)
					{
						View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
						View->SpecularOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
					}
					else if (View->Family->EngineShowFlags.ReflectionOverride)
					{
						View->DiffuseOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
						View->SpecularOverrideParameter = FVector4f(1, 1, 1, 0.0f);

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:4028

Scope (from outer to inner):

file
function     void FEditorViewportClient::SetupViewForRendering

Source code excerpt:

	else if (ViewFamily.EngineShowFlags.OverrideDiffuseAndSpecular)
	{
		View.DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
		View.SpecularOverrideParameter = FVector4f(.1f, .1f, .1f, 0.0f);
	}
	else if (ViewFamily.EngineShowFlags.LightingOnlyOverride)
	{
		View.DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
		View.SpecularOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
	}
	else if (ViewFamily.EngineShowFlags.ReflectionOverride)
	{
		View.DiffuseOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
		View.SpecularOverrideParameter = FVector4f(1, 1, 1, 0.0f);

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/StaticLightingSystem/StaticLightingDebug.cpp:626

Scope (from outer to inner):

file
function     void DrawStaticLightingDebugInfo

Source code excerpt:

		{
			const FDebugVolumeLightingSample& CurrentSample = GDebugStaticLightingInfo.VolumeLightingSamples[SampleIndex];
			PDI->DrawPoint(FVector4(CurrentSample.Position), CurrentSample.AverageIncidentRadiance * GEngine->LightingOnlyBrightness, 12.0f, SDPG_World);
		}

		for (int32 RayIndex = 0; RayIndex < GDebugStaticLightingInfo.PrecomputedVisibilityRays.Num(); RayIndex++)
		{
			const FDebugStaticLightingRay& CurrentRay = GDebugStaticLightingInfo.PrecomputedVisibilityRays[RayIndex];
			const FColor RayColor = CurrentRay.bHit ? (CurrentRay.bPositive ? FColor(255,255,150) : FColor(150,150,150)) : FColor(50,50,255);

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Engine/Engine.h:1188

Scope (from outer to inner):

file
class        class UEngine : public UObject , public FExec

Source code excerpt:

	/** Color used for the lighting only render mode */
	UPROPERTY(globalconfig)
	FLinearColor LightingOnlyBrightness;

	/** The colors used to render shader complexity. */
	UPROPERTY(globalconfig)
	TArray<FLinearColor> ShaderComplexityColors;

	/** The colors used to render quad complexity. */

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/GameViewportClient.cpp:1620

Scope (from outer to inner):

file
function     void UGameViewportClient::Draw

Source code excerpt:

					else if (View->Family->EngineShowFlags.OverrideDiffuseAndSpecular)
					{
						View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
						View->SpecularOverrideParameter = FVector4f(.1f, .1f, .1f, 0.0f);
					}
					else if (View->Family->EngineShowFlags.LightingOnlyOverride)
					{
						View->DiffuseOverrideParameter = FVector4f(GEngine->LightingOnlyBrightness.R, GEngine->LightingOnlyBrightness.G, GEngine->LightingOnlyBrightness.B, 0.0f);
						View->SpecularOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
					}
					else if (View->Family->EngineShowFlags.ReflectionOverride)
					{
						View->DiffuseOverrideParameter = FVector4f(0.f, 0.f, 0.f, 0.f);
						View->SpecularOverrideParameter = FVector4f(1, 1, 1, 0.0f);

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PrimitiveDrawingUtils.cpp:1638

Scope (from outer to inner):

file
function     void ApplyViewModeOverrides

Source code excerpt:

				auto LightingOnlyMaterialInstance = new FColoredMaterialRenderProxy(
					RenderProxy,
					GEngine->LightingOnlyBrightness
				);

				Mesh.MaterialRenderProxy = LightingOnlyMaterialInstance;
				Collector.RegisterOneFrameMaterialProxy(LightingOnlyMaterialInstance);
			}
			else

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PrimitiveDrawingUtils.cpp:1649

Scope (from outer to inner):

file
function     void ApplyViewModeOverrides

Source code excerpt:

				auto LightingDensityMaterialInstance = new FLightingDensityMaterialRenderProxy(
					RenderProxy,
					GEngine->LightingOnlyBrightness,
					LMResolution
					);

				Mesh.MaterialRenderProxy = LightingDensityMaterialInstance;
				Collector.RegisterOneFrameMaterialProxy(LightingDensityMaterialInstance);
			}

#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/VisualizeVolumetricLightmap.cpp:137

Scope (from outer to inner):

file
function     void FDeferredShadingSceneRenderer::VisualizeVolumetricLightmap

Source code excerpt:

			if (!ViewFamily.EngineShowFlags.Materials)
			{
				DiffuseColorValue = FVector3f(GEngine->LightingOnlyBrightness);
			}
			PassParameters->Common.DiffuseColor = DiffuseColorValue;
		}

		TShaderMapRef<FVisualizeVolumetricLightmapVS> VertexShader(View.ShaderMap);
		TShaderMapRef<FVisualizeVolumetricLightmapPS> PixelShader(View.ShaderMap);