UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MapBuildDataRegistry.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
7#pragma once
8
9#include "CoreMinimal.h"
11#include "UObject/Object.h"
12#include "Misc/Guid.h"
13#include "Engine/EngineTypes.h"
14#include "SceneTypes.h"
16#include "RenderCommandFence.h"
17#include "LightMap.h"
18#include "Engine/TextureCube.h"
19#include "MapBuildDataRegistry.generated.h"
20
25
27
28#define UE_LOG_MAPBUILDATA_ENABLED 0
29
30#if UE_LOG_MAPBUILDATA_ENABLED
31#define UE_LOG_MAPBUILDDATA(...) UE_LOG(LogMapBuildDataRegistry, __VA_ARGS__)
32#else
33#define UE_LOG_MAPBUILDDATA(...)
34#endif
35
37{
40
45
47 {
48 // @warning BulkSerialize: FPerInstanceLightmapData is serialized as memory dump
49 // See TArray::BulkSerialize for detailed description of implied limitations.
50 Ar << InstanceData.LightmapUVBias << InstanceData.ShadowmapUVBias;
51 return Ar;
52 }
53};
54
86
88{
89public:
90
92
97 inline bool IsDefault()
98 {
99 return Data.Num() == 0;
100 }
101};
102
128
130{
131public:
132
135
139
144 inline bool IsDefault()
145 {
146 return Id == FGuid();
147 }
148};
149
172
174{
175public:
176
179
183
188 inline bool IsDefault()
189 {
190 return Id == FGuid();
191 }
192};
193
195{
196public:
199
202
204 CubemapSize(0),
205 AverageBrightness(0.0f),
206 bUploadedFinal(false)
207 {}
208
210 {
211 return bUploadedFinal;
212 }
213
215 {
216 check(!bUploadedFinal);
217
218 // In the editor we need this data for serialization
219 if (!GIsEditor)
220 {
223 CubemapSize = 0;
224 bUploadedFinal = true;
225 }
226 }
227
228private:
229 bool bUploadedFinal;
230};
231
233{
234public:
235
236 // Stored redundantly to support stats after discarding data
238
242
244
245 size_t GetAllocatedSize() const
246 {
247 return AllocatedSize;
248 }
249
251
260
262
265
268};
269
271{
272public:
273
276
281 inline bool IsDefault()
282 {
283 return Id == FGuid();
284 }
285};
286
288{
289public:
290 bool bDummy = false;
291};
292
293UCLASS(MinimalAPI)
295{
297public:
298
300 UPROPERTY(Category=Lighting, VisibleAnywhere)
302
303 //~ Begin UObject Interface
306#if WITH_EDITORONLY_DATA
308#endif
309
310 static void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
311 ENGINE_API virtual void BeginDestroy() override;
312 ENGINE_API virtual bool IsReadyForFinishDestroy() override;
313 ENGINE_API virtual void FinishDestroy() override;
314 //~ End UObject Interface
315
320 ENGINE_API FMeshMapBuildData& AllocateMeshBuildData(const FGuid& MeshId, bool bMarkDirty);
321 ENGINE_API const FMeshMapBuildData* GetMeshBuildData(FGuid MeshId) const;
322 ENGINE_API FMeshMapBuildData* GetMeshBuildData(FGuid MeshId);
323 ENGINE_API FMeshMapBuildData* GetMeshBuildDataDuringBuild(FGuid MeshId);
324
329 ENGINE_API FPrecomputedLightVolumeData& AllocateLevelPrecomputedLightVolumeBuildData(const FGuid& LevelId);
330 ENGINE_API void AddLevelPrecomputedLightVolumeBuildData(const FGuid& LevelId, FPrecomputedLightVolumeData* InData);
331 ENGINE_API const FPrecomputedLightVolumeData* GetLevelPrecomputedLightVolumeBuildData(FGuid LevelId) const;
332 ENGINE_API FPrecomputedLightVolumeData* GetLevelPrecomputedLightVolumeBuildData(FGuid LevelId);
333
338 ENGINE_API FPrecomputedVolumetricLightmapData& AllocateLevelPrecomputedVolumetricLightmapBuildData(const FGuid& LevelId);
339 ENGINE_API void AddLevelPrecomputedVolumetricLightmapBuildData(const FGuid& LevelId, FPrecomputedVolumetricLightmapData* InData);
340 ENGINE_API const FPrecomputedVolumetricLightmapData* GetLevelPrecomputedVolumetricLightmapBuildData(FGuid LevelId) const;
341 ENGINE_API FPrecomputedVolumetricLightmapData* GetLevelPrecomputedVolumetricLightmapBuildData(FGuid LevelId);
342
347 ENGINE_API FLightComponentMapBuildData& FindOrAllocateLightBuildData(FGuid LightId, bool bMarkDirty);
348 ENGINE_API const FLightComponentMapBuildData* GetLightBuildData(FGuid LightId) const;
349 ENGINE_API FLightComponentMapBuildData* GetLightBuildData(FGuid LightId);
350
355 ENGINE_API FReflectionCaptureMapBuildData& AllocateReflectionCaptureBuildData(const FGuid& CaptureId, bool bMarkDirty);
356 ENGINE_API const FReflectionCaptureMapBuildData* GetReflectionCaptureBuildData(FGuid CaptureId) const;
357 ENGINE_API FReflectionCaptureMapBuildData* GetReflectionCaptureBuildData(FGuid CaptureId);
358
363 ENGINE_API FSkyAtmosphereMapBuildData& FindOrAllocateSkyAtmosphereBuildData(const FGuid& Guid);
367 ENGINE_API const FSkyAtmosphereMapBuildData* GetSkyAtmosphereBuildData(const FGuid& Guid) const;
368 ENGINE_API void ClearSkyAtmosphereBuildData();
369
370 ENGINE_API void InvalidateStaticLighting(UWorld* World, bool bRecreateRenderState = true, const TSet<FGuid>* ResourcesToKeep = nullptr);
371 ENGINE_API void InvalidateSurfaceLightmaps(UWorld* World, bool bRecreateRenderState = true, const TSet<FGuid>* ResourcesToKeep = nullptr);
372 ENGINE_API void InvalidateReflectionCaptures(const TSet<FGuid>* ResourcesToKeep = nullptr);
373
374 ENGINE_API bool IsLegacyBuildData() const;
375
376 ENGINE_API bool IsLightingValid(ERHIFeatureLevel::Type InFeatureLevel) const;
377
379 ENGINE_API void SetupLightmapResourceClusters();
380
381 ENGINE_API void GetLightmapResourceClusterStats(int32& NumMeshes, int32& NumClusters) const;
382
384 ENGINE_API void InitializeClusterRenderingResources(ERHIFeatureLevel::Type InFeatureLevel);
385
390 ENGINE_API void HandleLegacyEncodedCubemapData();
391
399
401 ENGINE_API static UMapBuildDataRegistry* Get(const AActor* Actor);
402
404 ENGINE_API static UMapBuildDataRegistry* Get(ULevel* OwnerLevel, UWorld* World);
405
406 FVolumetricLightMapGridDesc* GetVolumetricLightMapGridDesc() { return VolumetricLightMapGridDesc; }
407 ENGINE_API void SetVolumetricLightMapGridDesc(FVolumetricLightMapGridDesc* GridDesc);
408
409#if WITH_EDITOR
412#else
413 void RemoveRegistry(UMapBuildDataRegistry* Registry);
414#endif
415
416
417private:
418#if WITH_EDITOR
420#endif
421
422 void ReleaseResources(const TSet<FGuid>* ResourcesToKeep = nullptr);
423 void EmptyLevelData(const TSet<FGuid>* ResourcesToKeep = nullptr);
424 void CleanupTransientOverrideMapBuildData();
425
426 TMap<FGuid, FMeshMapBuildData> MeshBuildData;
427 TMap<FGuid, FPrecomputedLightVolumeData*> LevelPrecomputedLightVolumeBuildData;
428 TMap<FGuid, FPrecomputedVolumetricLightmapData*> LevelPrecomputedVolumetricLightmapBuildData;
430 TMap<FGuid, FReflectionCaptureMapBuildData> ReflectionCaptureBuildData;
431 TMap<FGuid, FSkyAtmosphereMapBuildData> SkyAtmosphereBuildData;
432
433 bool bSetupResourceClusters;
434 TArray<FLightmapResourceCluster> LightmapResourceClusters;
435
436 FRenderCommandFence DestroyFence;
437
438 FVolumetricLightMapGridDesc* VolumetricLightMapGridDesc;
439
440 UMapBuildDataRegistry* FindRegistryWorldPartition(const AActor* Actor);
441
442#if WITH_EDITOR
445#else
446 FCriticalSection PackagesToMapBuildDataLock;
447 TMap<UPackage*, UMapBuildDataRegistry*> PackagesToMapBuildData;
448#endif
449};
450
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
#define GIsEditor
Definition CoreGlobals.h:233
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ELightingBuildQuality
Definition EngineTypes.h:996
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
ENGINE_API FUObjectAnnotationSparse< FLightComponentLegacyMapBuildData, true > GLightComponentsWithLegacyBuildData
Definition MapBuildData.cpp:1402
ENGINE_API FUObjectAnnotationSparse< FLevelLegacyMapBuildData, true > GLevelsWithLegacyBuildData
Definition MapBuildData.cpp:1401
ENGINE_API FUObjectAnnotationSparse< FReflectionCaptureMapBuildLegacyData, true > GReflectionCapturesWithLegacyBuildData
Definition MapBuildData.cpp:1403
ENGINE_API FUObjectAnnotationSparse< FMeshMapBuildLegacyData, true > GComponentsWithLegacyLightmaps
Definition MapBuildData.cpp:1400
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition Actor.h:257
Definition Archive.h:1208
Definition MapBuildDataRegistry.h:130
FGuid Id
Definition MapBuildDataRegistry.h:133
FLevelLegacyMapBuildData()
Definition MapBuildDataRegistry.h:136
FPrecomputedLightVolumeData * Data
Definition MapBuildDataRegistry.h:134
bool IsDefault()
Definition MapBuildDataRegistry.h:144
Definition MapBuildDataRegistry.h:174
FLightComponentLegacyMapBuildData()
Definition MapBuildDataRegistry.h:180
FGuid Id
Definition MapBuildDataRegistry.h:177
bool IsDefault()
Definition MapBuildDataRegistry.h:188
FLightComponentMapBuildData * Data
Definition MapBuildDataRegistry.h:178
Definition MapBuildDataRegistry.h:151
ENGINE_API void FinalizeLoad()
Definition MapBuildData.cpp:297
FLightComponentMapBuildData()
Definition MapBuildDataRegistry.h:154
FStaticShadowDepthMapData DepthMap
Definition MapBuildDataRegistry.h:168
friend FArchive & operator<<(FArchive &Ar, FLightComponentMapBuildData &ShadowMap)
Definition MapBuildData.cpp:302
int32 ShadowMapChannel
Definition MapBuildDataRegistry.h:166
ENGINE_API ~FLightComponentMapBuildData()
Definition MapBuildData.cpp:292
Definition LightMap.h:609
Definition MapBuildDataRegistry.h:56
friend ENGINE_API FArchive & operator<<(FArchive &Ar, FMeshMapBuildData &MeshMapBuildData)
Definition MapBuildData.cpp:47
ENGINE_API void AddReferencedObjects(FReferenceCollector &Collector)
Definition MapBuildData.cpp:262
bool IsDefault()
Definition MapBuildDataRegistry.h:73
static const FMeshMapBuildData DefaultAnnotation
Definition MapBuildDataRegistry.h:84
FLightMapRef LightMap
Definition MapBuildDataRegistry.h:58
const FLightmapResourceCluster * ResourceCluster
Definition MapBuildDataRegistry.h:62
FShadowMapRef ShadowMap
Definition MapBuildDataRegistry.h:59
ENGINE_API ~FMeshMapBuildData()
Definition MapBuildData.cpp:259
TArray< FPerInstanceLightmapData > PerInstanceLightmapData
Definition MapBuildDataRegistry.h:61
TArray< FGuid > IrrelevantLights
Definition MapBuildDataRegistry.h:60
ENGINE_API FMeshMapBuildData()
Definition MapBuildData.cpp:254
Definition MapBuildDataRegistry.h:88
bool IsDefault()
Definition MapBuildDataRegistry.h:97
TArray< TPair< FGuid, FMeshMapBuildData * > > Data
Definition MapBuildDataRegistry.h:91
Definition PrecomputedLightVolume.h:98
Definition PrecomputedVolumetricLightmap.h:148
Definition UObjectGlobals.h:2492
Definition MapBuildDataRegistry.h:195
bool HasBeenUploadedFinal() const
Definition MapBuildDataRegistry.h:209
int32 CubemapSize
Definition MapBuildDataRegistry.h:197
float AverageBrightness
Definition MapBuildDataRegistry.h:198
TArray< uint8 > FullHDRCapturedData
Definition MapBuildDataRegistry.h:200
FReflectionCaptureData()
Definition MapBuildDataRegistry.h:203
void OnDataUploadedToGPUFinal()
Definition MapBuildDataRegistry.h:214
TArray< uint8 > EncodedHDRCapturedData
Definition MapBuildDataRegistry.h:201
Definition MapBuildDataRegistry.h:233
size_t GetAllocatedSize() const
Definition MapBuildDataRegistry.h:245
bool IsDefault()
Definition MapBuildDataRegistry.h:256
size_t AllocatedSize
Definition MapBuildDataRegistry.h:237
FReflectionCaptureMapBuildData()
Definition MapBuildDataRegistry.h:239
ENGINE_API ~FReflectionCaptureMapBuildData()
Definition MapBuildData.cpp:376
static const FReflectionCaptureMapBuildData DefaultAnnotation
Definition MapBuildDataRegistry.h:267
ENGINE_API void FinalizeLoad()
Definition MapBuildData.cpp:381
ENGINE_API void AddReferencedObjects(FReferenceCollector &Collector)
Definition MapBuildData.cpp:436
friend ENGINE_API FArchive & operator<<(FArchive &Ar, FReflectionCaptureMapBuildData &ReflectionCaptureMapBuildData)
Definition MapBuildData.cpp:315
Definition MapBuildDataRegistry.h:271
FReflectionCaptureMapBuildData * MapBuildData
Definition MapBuildDataRegistry.h:275
bool IsDefault()
Definition MapBuildDataRegistry.h:281
FGuid Id
Definition MapBuildDataRegistry.h:274
Definition RenderCommandFence.h:15
Definition MapBuildDataRegistry.h:288
bool bDummy
Definition MapBuildDataRegistry.h:290
Definition MapBuildDataRegistry.h:104
int32 ShadowMapSizeY
Definition MapBuildDataRegistry.h:110
friend FArchive & operator<<(FArchive &Ar, FStaticShadowDepthMapData &ShadowMap)
Definition MapBuildData.cpp:282
ENGINE_API void Empty()
Definition MapBuildData.cpp:275
size_t GetAllocatedSize() const
Definition MapBuildDataRegistry.h:122
FStaticShadowDepthMapData()
Definition MapBuildDataRegistry.h:114
int32 ShadowMapSizeX
Definition MapBuildDataRegistry.h:109
FMatrix WorldToLight
Definition MapBuildDataRegistry.h:107
TArray< FFloat16 > DepthSamples
Definition MapBuildDataRegistry.h:112
Definition UObjectAnnotation.h:33
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition ActorComponent.h:152
Definition Class.h:3793
Definition Level.h:423
Definition MapBuildDataRegistry.h:295
FVolumetricLightMapGridDesc * GetVolumetricLightMapGridDesc()
Definition MapBuildDataRegistry.h:406
Definition Object.h:95
Definition World.h:918
Type
Definition RHIFeatureLevel.h:20
@ false
Definition radaudio_common.h:23
Definition AssetCompilingManager.h:25
Definition Guid.h:109
Definition MapBuildDataRegistry.h:37
friend FArchive & operator<<(FArchive &Ar, FPerInstanceLightmapData &InstanceData)
Definition MapBuildDataRegistry.h:46
FVector2f LightmapUVBias
Definition MapBuildDataRegistry.h:38
FVector2f ShadowmapUVBias
Definition MapBuildDataRegistry.h:39
FPerInstanceLightmapData()
Definition MapBuildDataRegistry.h:41
Definition VolumetricLightmapGrid.h:36