UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Lumen.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "EngineDefines.h"
7#include "Math/Vector.h"
8#include "RHIShaderPlatform.h"
9
10class FScene;
11class FSceneView;
13class FViewFamilyInfo;
14class FViewInfo;
15struct FEngineShowFlags;
16enum class EDiffuseIndirectMethod;
18enum EPixelFormat : uint8;
19
20extern bool ShouldRenderLumenDiffuseGI(const FScene* Scene, const FSceneView& View, bool bSkipTracingDataCheck = false, bool bSkipProjectCheck = false);
21extern bool ShouldRenderLumenReflections(const FSceneView& View, bool bSkipTracingDataCheck = false, bool bSkipProjectCheck = false, bool bIncludeStandalone = true);
22extern bool ShouldRenderLumenReflectionsWater(const FViewInfo& View, bool bSkipTracingDataCheck = false, bool bSkipProjectCheck = false);
23extern bool ShouldRenderLumenDirectLighting(const FScene* Scene, const FSceneView& View);
24extern bool ShouldRenderAOWithLumenGI();
26
27
28class FLumenSceneData;
29
30inline double BoxSurfaceArea(FVector Extent)
31{
32 return 2.0 * (Extent.X * Extent.Y + Extent.Y * Extent.Z + Extent.Z * Extent.X);
33}
34
35namespace Lumen
36{
37 // Must match usf
38 constexpr uint32 PhysicalPageSize = 128;
39 constexpr uint32 VirtualPageSize = PhysicalPageSize - 1; // 0.5 texel border around page
41 constexpr uint32 MinResLevel = 3; // 2^3 = MinCardResolution
42 constexpr uint32 MaxResLevel = 11; // 2^11 = 2048 texels
43 constexpr uint32 SubAllocationResLevel = 7; // log2(PHYSICAL_PAGE_SIZE)
45 constexpr uint32 CardTileSize = 8;
47 constexpr uint32 NumDistanceBuckets = 16;
48
49 constexpr float MaxTraceDistance = 0.5f * UE_OLD_WORLD_MAX;
50
52 {
53 Cards,
55 Voxels,
56 MAX
57 };
58
60
61 float GetMaxTraceDistance(const FViewInfo& View);
62 bool IsLumenFeatureAllowedForView(const FScene* Scene, const FSceneView& View, bool bSkipTracingDataCheck = false, bool bSkipProjectCheck = false);
63 bool ShouldVisualizeScene(const FEngineShowFlags& ShowFlags);
65 bool ShouldHandleSkyLight(const FScene* Scene, const FSceneViewFamily& ViewFamily);
66
69
70 // Global Distance Field
74
75 // Features
76 bool UseAsyncCompute(const FViewFamilyInfo& ViewFamily);
77 bool UseWaveOps(EShaderPlatform ShaderPlatform);
82
83 // Surface cache
86
87 // Software ray tracing
89 bool UseMeshSDFTracing(const FEngineShowFlags& EngineShowFlags);
90 bool UseGlobalSDFTracing(const FEngineShowFlags& EngineShowFlags);
92 bool UseGlobalSDFObjectGrid(const FSceneViewFamily& ViewFamily);
93 bool UseHeightfieldTracing(const FSceneViewFamily& ViewFamily, const FLumenSceneData& LumenSceneData);
96 bool IsUsingGlobalSDF(const FSceneViewFamily& ViewFamily);
98
99 // Hardware ray tracing
102 bool UseHardwareRayTracing(const FSceneViewFamily& ViewFamily);
106 bool UseReSTIRGather(const FSceneViewFamily& ViewFamily, EShaderPlatform ShaderPlatform);
110 bool UseHardwareRayTracedRadiosity(const FSceneViewFamily& ViewFamily);
111 bool UseHardwareRayTracedVisualize(const FSceneViewFamily& ViewFamily);
112 bool IsUsingRayTracingLightingGrid(const FSceneViewFamily& ViewFamily, const FViewInfo& View, EDiffuseIndirectMethod DiffuseIndirectMethod);
113
116
118
119 bool UseHardwareInlineRayTracing(const FSceneViewFamily& ViewFamily);
120
127
129
130 bool UseFarField(const FSceneViewFamily& ViewFamily);
134 float GetNearFieldSceneRadius(const FViewInfo& View, bool bUseFarField);
135
137
139 void Shutdown();
140
141 bool WriteWarnings(const FScene* Scene, const FEngineShowFlags& ShowFlags, const TArray<FViewInfo>& Views, FScreenMessageWriter* Writer);
142
145};
146
148
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EDiffuseIndirectMethod
Definition DeferredShadingRenderer.h:291
#define UE_OLD_WORLD_MAX
Definition EngineDefines.h:37
#define LLM_DECLARE_TAG(...)
Definition LowLevelMemTracker.h:1116
int32 GLumenFastCameraMode
Definition LumenSceneRendering.cpp:36
bool ShouldRenderLumenDiffuseGI(const FScene *Scene, const FSceneView &View, bool bSkipTracingDataCheck=false, bool bSkipProjectCheck=false)
Definition LumenDiffuseIndirect.cpp:291
bool ShouldRenderAOWithLumenGI()
Definition LumenDiffuseIndirect.cpp:310
bool ShouldRenderLumenReflectionsWater(const FViewInfo &View, bool bSkipTracingDataCheck=false, bool bSkipProjectCheck=false)
Definition SingleLayerWaterRendering.cpp:317
bool ShouldRenderLumenDirectLighting(const FScene *Scene, const FSceneView &View)
Definition LumenDiffuseIndirect.cpp:303
double BoxSurfaceArea(FVector Extent)
Definition Lumen.h:30
bool ShouldUseStereoLumenOptimizations()
Definition LumenDiffuseIndirect.cpp:316
bool ShouldRenderLumenReflections(const FSceneView &View, bool bSkipTracingDataCheck=false, bool bSkipProjectCheck=false, bool bIncludeStandalone=true)
Definition LumenReflections.cpp:750
EPixelFormat
Definition PixelFormat.h:16
EShaderPlatform
Definition RHIShaderPlatform.h:11
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition LumenSceneData.h:1002
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1970
Definition SceneRendering.h:1132
Definition Array.h:670
Definition DeferredShadingRenderer.cpp:316
uint32 GetMeshCardDistanceBin(float Distance)
Definition Lumen.cpp:281
bool IsSurfaceCacheFrozen()
Definition LumenSceneRendering.cpp:283
bool UseFarFieldOcclusionOnly()
Definition LumenScene.cpp:84
bool AnyLumenHardwareInlineRayTracingPassEnabled(const FScene *Scene, const FViewInfo &View)
Definition Lumen.cpp:198
int32 GetNumGlobalDFClipmaps(const FSceneView &View)
Definition LumenScene.cpp:209
constexpr uint32 MinResLevel
Definition Lumen.h:41
FVector GetLumenSceneViewOrigin(const FViewInfo &View, int32 ClipmapIndex)
Definition LumenScene.cpp:219
bool UseHardwareRayTracedShortRangeAO(const FSceneViewFamily &ViewFamily)
Definition LumenShortRangeAOHardwareRayTracing.cpp:42
constexpr uint32 CardTileSize
Definition Lumen.h:45
float GetHeightfieldReceiverBias()
Definition LumenHeightfields.cpp:47
bool IsUsingGlobalSDF(const FSceneViewFamily &ViewFamily)
Definition LumenDiffuseIndirect.cpp:223
bool UseGlobalSDFObjectGrid(const FSceneViewFamily &ViewFamily)
Definition Lumen.cpp:260
void Shutdown()
Definition LumenReflections.cpp:2329
float GetMaxTraceDistance(const FViewInfo &View)
Definition LumenDiffuseIndirect.cpp:229
constexpr uint32 MinCardResolution
Definition Lumen.h:40
bool UseHardwareRayTracedRadianceCache(const FSceneViewFamily &ViewFamily)
Definition LumenRadianceCacheHardwareRayTracing.cpp:43
ESurfaceCacheSampling
Definition Lumen.h:122
bool ShouldHandleSkyLight(const FScene *Scene, const FSceneViewFamily &ViewFamily)
Definition Lumen.cpp:226
bool UseHardwareRayTracedSceneLighting(const FSceneViewFamily &ViewFamily)
Definition LumenSceneLighting.cpp:83
int32 GetGlobalDFResolution()
Definition LumenScene.cpp:199
constexpr uint32 NumResLevels
Definition Lumen.h:44
ETracingPermutation
Definition Lumen.h:52
bool UseHardwareRayTracing(const FSceneViewFamily &ViewFamily)
Definition LumenHardwareRayTracingCommon.cpp:175
bool ShouldVisualizeHardwareRayTracing(const FSceneViewFamily &ViewFamily)
Definition LumenVisualizeHardwareRayTracing.cpp:88
float GetHardwareRayTracingPullbackBias()
bool UseAsyncCompute(const FViewFamilyInfo &ViewFamily)
Definition Lumen.cpp:80
bool IsUsingRayTracingLightingGrid(const FSceneViewFamily &ViewFamily, const FViewInfo &View, EDiffuseIndirectMethod DiffuseIndirectMethod)
Definition LumenHardwareRayTracingCommon.cpp:217
constexpr uint32 NumDistanceBuckets
Definition Lumen.h:47
bool AnyLumenHardwareRayTracingPassEnabled()
constexpr uint32 PhysicalPageSize
Definition Lumen.h:38
bool UseFarField(const FSceneViewFamily &ViewFamily)
Definition LumenScene.cpp:78
bool UseReSTIRGather(const FSceneViewFamily &ViewFamily, EShaderPlatform ShaderPlatform)
Definition LumenReSTIRGather.cpp:286
constexpr uint32 VirtualPageSize
Definition Lumen.h:39
bool UseHardwareRayTracedRadiosity(const FSceneViewFamily &ViewFamily)
Definition LumenRadiosity.cpp:246
bool UseHeightfieldTracing(const FSceneViewFamily &ViewFamily, const FLumenSceneData &LumenSceneData)
Definition LumenHeightfields.cpp:35
bool UseHardwareRayTracedDirectLighting(const FSceneViewFamily &ViewFamily)
Definition LumenSceneDirectLightingHardwareRayTracing.cpp:63
float GetGlobalDFClipmapExtent(int32 ClipmapIndex)
Definition LumenScene.cpp:204
void DebugResetSurfaceCache()
Definition LumenSceneRendering.cpp:278
constexpr uint32 CardTileShadowDownsampleFactorDwords
Definition Lumen.h:46
bool ShouldRenderRadiosityHardwareRayTracing(const FSceneViewFamily &ViewFamily)
Definition LumenRadiosity.cpp:257
bool ShouldPrecachePSOs(EShaderPlatform Platform)
Definition LumenDiffuseIndirect.cpp:234
float GetCachedLightingPreExposure()
Definition Lumen.cpp:127
bool UseThreadGroupSize32()
Definition Lumen.cpp:101
bool UseGlobalSDFSimpleCoverageBasedExpand()
Definition LumenDiffuseIndirect.cpp:218
bool UseWaveOps(EShaderPlatform ShaderPlatform)
Definition Lumen.cpp:94
constexpr uint32 SubAllocationResLevel
Definition Lumen.h:43
bool IsSurfaceCacheUpdateFrameFrozen()
Definition LumenSceneRendering.cpp:288
bool UseHardwareRayTracedReflections(const FSceneViewFamily &ViewFamily)
Definition LumenReflectionHardwareRayTracing.cpp:68
constexpr uint32 MaxResLevel
Definition Lumen.h:42
float GetNearFieldMaxTraceDistanceDitherScale(bool bUseFarField)
Definition LumenScene.cpp:94
FVector3f GetLightingQuantizationError()
Definition Lumen.cpp:122
bool UseHardwareInlineRayTracing(const FSceneViewFamily &ViewFamily)
Definition LumenHardwareRayTracingCommon.cpp:321
bool UseMeshSDFTracing(const FEngineShowFlags &EngineShowFlags)
Definition LumenDiffuseIndirect.cpp:206
float GetNearFieldSceneRadius(const FViewInfo &View, bool bUseFarField)
Definition LumenScene.cpp:99
bool UseGlobalSDFTracing(const FEngineShowFlags &EngineShowFlags)
Definition LumenDiffuseIndirect.cpp:213
bool UseHeightfieldTracingForVoxelLighting(const FLumenSceneData &LumenSceneData)
Definition LumenHeightfields.cpp:28
bool SupportsMultipleClosureEvaluation(EShaderPlatform ShaderPlatform)
Definition Lumen.cpp:208
constexpr float MaxTraceDistance
Definition Lumen.h:49
float GetFarFieldMaxTraceDistance()
Definition LumenScene.cpp:89
bool WriteWarnings(const FScene *Scene, const FEngineShowFlags &ShowFlags, const TArray< FViewInfo > &Views, FScreenMessageWriter *Writer)
Definition Lumen.cpp:288
bool UseHardwareRayTracedScreenProbeGather(const FSceneViewFamily &ViewFamily)
Definition LumenScreenProbeHardwareRayTracing.cpp:54
bool ShouldVisualizeScene(const FEngineShowFlags &ShowFlags)
Definition LumenVisualize.cpp:290
bool IsSoftwareRayTracingSupported()
Definition Lumen.cpp:243
int32 GetHeightfieldMaxTracingSteps()
Definition LumenHeightfields.cpp:42
bool ShouldUpdateLumenSceneViewOrigin()
Definition LumenScene.cpp:214
bool IsLumenFeatureAllowedForView(const FScene *Scene, const FSceneView &View, bool bSkipTracingDataCheck=false, bool bSkipProjectCheck=false)
Definition Lumen.cpp:248
EPixelFormat GetLightingDataFormat()
Definition Lumen.cpp:106
bool UseHardwareRayTracedVisualize(const FSceneViewFamily &ViewFamily)
Definition LumenVisualizeHardwareRayTracing.cpp:77
bool IsUsingDistanceFieldRepresentationBit(const FViewInfo &View)
Definition Lumen.cpp:219
Definition ShowFlags.h:56
Definition CanvasTypes.h:854
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62