UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteResources.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "IO/IoHash.h"
9#include "UnifiedBuffer.h"
11#include "SceneManagement.h"
15#include "NaniteDefinitions.h"
16#include "NaniteInterface.h"
17#include "Templates/DontCopy.h"
18#include "VertexFactory.h"
19#include "Matrix3x4.h"
20#include "SkeletalMeshTypes.h"
21
23#if PLATFORM_WINDOWS
24#define NANITE_ENABLE_DEBUG_RENDERING (!(UE_BUILD_SHIPPING || UE_BUILD_TEST) || WITH_EDITOR)
25#else
26#define NANITE_ENABLE_DEBUG_RENDERING 0
27#endif
28
30
33
35
38
41
43struct FSkelMeshSection;
44
45namespace UE::DerivedData { class FRequestOwner; }
46
47namespace Nanite
48{
49
72
73// These are expected to match up
74static_assert(NANITE_HIERARCHY_NODE_SLICE_SIZE_DWORDS == sizeof(FPackedHierarchyNode) / 4);
75
77{
78 uint32 Mask = (1u << NumBits) - 1u;
79 return (Value >> Offset) & Mask;
80}
81
83{
84 uint32 Mask = (1u << NumBits) - 1u;
85 check(Bits <= Mask);
86 Mask <<= Offset;
87 Value = (Value & ~Mask) | (Bits << Offset);
88}
89
90
91// Packed Cluster as it is used by the GPU
93{
94 // TODO: Repack. Assuming we don't want to support larger page sizes than 128KB, we can encode offsets as 15bit dword offsets.
95
96 // Members needed for rasterization
97 uint32 NumVerts_PositionOffset; // NumVerts:14, PositionOffset:18
98 uint32 NumTris_IndexOffset; // NumTris:8, IndexOffset: 24
100 uint32 ColorBits_GroupIndex; // R:4, G:4, B:4, A:4. (GroupIndex&0xFFFF) is for debug visualization only.
101
103 uint32 BitsPerIndex_PosPrecision_PosBits_NormalPrecision_TangentPrecision; // BitsPerIndex:4, PosPrecision: 5, PosBits:5.5.5, NormalPrecision: 4, TangentPrecision: 4
104
105 // Members needed for culling
107
110
112 uint32 Flags_NumClusterBoneInfluences; // ClusterFlags:4, NumClusterBoneInfluences: 5
113
114 // Members needed by materials
115 uint32 AttributeOffset_BitsPerAttribute; // AttributeOffset: 22, BitsPerAttribute: 10
116 uint32 DecodeInfoOffset_HasTangents_Skinning_NumUVs_ColorMode; // DecodeInfoOffset: 22, bTangents: 1, bSkinning: 1, NumUVs: 3, ColorMode: 2
117 uint32 UVBitOffsets; // Bit offsets of UV sets relative to beginning of UV data.
118 // UV0 Offset: 8, UV1 Offset: 8, UV2 Offset: 8, UV3 Offset: 8
120
121 uint32 ExtendedDataOffset_Num; // ExtendedDataOffset: 22, Num: 10
122 uint32 BrickDataOffset_Num; // BrickDataOffset: 22, Num: 10, VOXELTODO: Reuse PositionOffset for BrickDataOffset?
125
127
130
131 uint32 GetNumTris() const { return GetBits(NumTris_IndexOffset, 8, 0); }
133
141
144
145
148
151
154
162
165
168
174
179
180 void SetGroupIndex(uint32 GroupIndex) { SetBits(ColorBits_GroupIndex, GroupIndex & 0xFFFFu, 16, 16); }
181
184
187
189 {
191 if (NumMaterialRanges <= 3)
192 {
193 check(BatchInfo.Num() <= 4);
194 FMemory::Memcpy(VertReuseBatchInfo, BatchInfo.GetData(), BatchInfo.Num() * sizeof(uint32));
195 }
196 else
197 {
198 check((GpuPageOffset & 0x3) == 0);
201 }
202 }
203};
204
215
217{
219
235
236
237 FORCEINLINE bool IsEmpty() const { return GetNumPagesOrRanges() == 0; }
242
243 FORCEINLINE bool operator==(FPageRangeKey Other) const { return Value == Other.Value; }
244 FORCEINLINE bool operator!=(FPageRangeKey Other) const { return Value != Other.Value; }
245
246 bool RemoveRootPages(uint32 NumRootPages)
247 {
248 if (!IsEmpty() && !IsMultiRange())
249 {
251 uint32 NumPages = GetNumPagesOrRanges();
252 if (StartPage < NumRootPages)
253 {
254 NumPages = (uint32)FMath::Max((int32)NumPages - (int32)(NumRootPages - StartPage), 0);
255 *this = FPageRangeKey(NumRootPages, NumPages, false, true);
256 return true;
257 }
258 }
259 return false;
260 }
261};
262
268
270{
271 None = 0x0,
272
273 // If set, collision is enabled for this section.
274 EnableCollision = 1 << 1,
275
276 // If set, this section will cast a shadow.
277 CastShadow = 1 << 2, // Shared
278
279 // If set, this section will be visible in ray tracing effects.
280 VisibleInRayTracing = 1 << 3, // Shared
281
282 // If set, this section will affect lighting methods that use distance fields.
284
285 // If set, this section will be considered opaque in ray tracing effects.
286 ForceOpaque = 1 << 5,
287
288 // If set, this section is selected.
289 Selected = 1 << 6, // Skel
290
291 // If set, this selection will recompute tangents at runtime.
292 RecomputeTangents = 1 << 7, // Skel
293
294 // If set, this section will store bone indices as 16 bit (as opposed to 8 bit).
295 Use16BitBoneIndices = 1 << 8, // Skel
296
297 // If set, this section will not be rendered.
298 Disabled = 1 << 9, // Skel
299};
301
302// Note: Must match MAX_STATIC_TEXCOORDS
303#define MAX_MESH_DATA_TEXCOORDS 8
304
305#if WITH_EDITOR
306
308{
309 // Max # of bones used to skin the vertices in this section
310 uint32 MaxBoneInfluences;
311
313 ESkinVertexColorChannel RecomputeTangentsVertexMaskChannel;
314
315 // The soft vertices of this section.
317
320
321 // The bones which are used by the vertices of this section. Indices of bones in the USkeletalMesh::RefSkeleton array
322 TArray<uint16> BoneMap;
323
333 TArray<TArray<FMeshToMeshVertData>> ClothMappingDataLODs;
334
336 FClothingSectionData ClothingData;
337
338 // INDEX_NONE if not set
339 int16 CorrespondClothAssetIndex;
340
341 /*
342 * The LOD index at which any generated lower quality LODs will include this section.
343 * A value of -1 mean the section will always be include when generating a LOD
344 */
346
347 /*
348 * This represent the original section index in the imported data. The original data is chunk per material,
349 * we use this index to store user section modification. The user cannot change a BONE chunked section data,
350 * since the BONE chunk can be per-platform. Do not use this value to index the Sections array, only the user
351 * section data should be index by this value.
352 */
354
355 /*
356 * If this section was produce because of BONE chunking, the parent section index will be valid.
357 * If the section is not the result of skin vertex chunking, this value will be INDEX_NONE.
358 * Use this value to know if the section was BONE chunked:
359 * if(ChunkedParentSectionIndex != INDEX_NONE) will be true if the section is BONE chunked
360 */
362};
363
364#endif // WITH_EDITOR
365
367{
370
372 uint32 FirstIndex; // BaseIndex
374 uint32 MinVertexIndex; // BaseVertexIndex
376
378
379#if WITH_EDITOR
381#endif
382
383#if WITH_EDITORONLY_DATA
384 // The UV channel density in LocalSpaceUnit / UV Unit.
386
387 // The weights to apply to the UV density, based on the area.
388 float Weights[MAX_MESH_DATA_TEXCOORDS];
389#endif
390};
391
392class FMeshDataSectionArray : public TArray<FMeshDataSection, TInlineAllocator<1>>
393{
395public:
396 using Super::Super;
397};
398
401
402#if WITH_EDITOR
403
406
407#endif // WITH_EDITOR
408
410{
411 // Persistent State
412 TArray< uint8 > RootData; // Root pages are loaded on resource load, so we always have something to draw.
413 FByteBulkData StreamablePages; // Remaining pages are streamed on demand.
421 TArray< FPageRangeKey > PageRangeLookup; // Dictionary of page ranges relevant to streaming requests and fixups
432
433 // Runtime State
443
444#if WITH_EDITOR
445 FString ResourceName;
448private:
450
451 enum class EDDCRebuildState : uint8
452 {
453 Initial,
455 Pending,
456 Succeeded,
457 Failed,
458 };
459 static bool IsInitialState(EDDCRebuildState State)
460 {
461 return State == EDDCRebuildState::Initial || State == EDDCRebuildState::InitialAfterFailed;
462 }
463
464 struct FDDCRebuildState
465 {
466 std::atomic<EDDCRebuildState> State = EDDCRebuildState::Initial;
467
468 FDDCRebuildState() = default;
470 FDDCRebuildState& operator=(const FDDCRebuildState&) { check(IsInitialState(EDDCRebuildState::Initial)); return *this; }
471 };
472
474
479public:
481
482 UE_DEPRECATED(5.1, "Use RebuildBulkDataFromCacheAsync instead.")
484
485 ENGINE_API bool HasBuildFromDDCError() const;
486 ENGINE_API void SetHasBuildFromDDCError(bool bHasError);
487
493 ENGINE_API bool RebuildBulkDataFromCacheAsync(const UObject* Owner, bool& bFailed);
494#endif
495
498
499 ENGINE_API void Serialize(FArchive& Ar, UObject* Owner, bool bCooked);
500 ENGINE_API bool HasStreamingData() const;
501
503 bool IsRootPage(uint32 PageIndex) const { return PageIndex < NumRootPages; }
504
507 template<typename TFunc>
508 bool TrueForAllPages(FPageRangeKey PageRangeKey, const TFunc& Func, bool bStreamingPagesOnly = false) const;
509 template<typename TFunc>
510 void ForEachPage(FPageRangeKey PageRangeKey, const TFunc& Func, bool bStreamingPagesOnly = false) const;
512
513private:
514 ENGINE_API void SerializeInternal(FArchive& Ar, UObject* Owner, bool bCooked);
515};
516
517template<typename TFunc>
519{
521 {
522 if (!PageRangeKey.HasStreamingPages())
523 {
524 return true;
525 }
526 PageRangeKey.RemoveRootPages(NumRootPages);
527 }
528
529 if (PageRangeKey.IsMultiRange())
530 {
531 const uint32 NumRanges = PageRangeKey.GetNumPagesOrRanges();
532 for (uint32 i = 0; i < NumRanges; i++)
533 {
534 const FPageRangeKey PageRange = PageRangeLookup[PageRangeKey.GetStartIndex() + i];
535 check(!PageRange.IsEmpty() && !PageRange.IsMultiRange()); // sanity check valid range of pages
537 {
538 return false;
539 }
540 }
541 }
542 else
543 {
544 uint32 StartPage = PageRangeKey.GetStartIndex();
545 uint32 NumPages = PageRangeKey.GetNumPagesOrRanges();
546 for (uint32 i = 0; i < NumPages; ++i)
547 {
548 const uint32 PageIndex = StartPage + i;
549 if (!Func(PageIndex))
550 {
551 return false;
552 }
553 }
554 }
555
556 return true;
557}
558
559template<typename TFunc>
561{
562 TrueForAllPages(PageRangeKey, [&Func](uint32 PageIndex) { Func(PageIndex); return true; }, bStreamingPagesOnly);
563}
564
566{
567public:
568 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
569 virtual void ReleaseRHI() override;
570
571 FNaniteVertexFactory* GetVertexFactory() { return VertexFactory; }
572
573private:
574 FNaniteVertexFactory* VertexFactory = nullptr;
575};
576
577} // namespace Nanite
578
581
584
587
588template <>
589struct TIsZeroConstructType<Nanite::FMeshDataSectionArray> : TIsZeroConstructType<TArray<Nanite::FMeshDataSection, TInlineAllocator<1>>>
590{
591};
592
593template <>
594struct TIsContiguousContainer<Nanite::FMeshDataSectionArray> : TIsContiguousContainer<TArray<Nanite::FMeshDataSection, TInlineAllocator<1>>>
595{
596};
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
@ Skinning
Definition HairStrandsInterface.h:201
#define LLM_DECLARE_TAG_API(...)
Definition LowLevelMemTracker.h:1117
UE::Math::TBoxSphereBounds< float, float > FBoxSphereBounds3f
Definition MathFwd.h:137
@ Num
Definition MetalRHIPrivate.h:234
ENGINE_API void InitNaniteResources(TPimplPtr< Nanite::FResources > &InResources, bool bRecreate=false)
Definition NaniteResources.cpp:3559
#define MAX_MESH_DATA_TEXCOORDS
Definition NaniteResources.h:303
ENGINE_API void ClearNaniteResources(TPimplPtr< Nanite::FResources > &InResources)
Definition NaniteResources.cpp:3553
ENGINE_API void GetNaniteResourcesSizeEx(const TPimplPtr< Nanite::FResources > &InResources, FResourceSizeEx &CumulativeResourceSize)
Definition NaniteResources.cpp:3589
ENGINE_API uint64 GetNaniteResourcesSize(const TPimplPtr< Nanite::FResources > &InResources)
Definition NaniteResources.cpp:3567
#define MAX_uint32
Definition NumericLimits.h:21
#define DECLARE_GPU_STAT_NAMED_EXTERN(StatName, NameString)
Definition RealtimeGPUProfiler.h:260
ESkinVertexColorChannel
Definition SkeletalMeshTypes.h:38
uint32 Offset
Definition VulkanMemory.cpp:4033
bool Failed
Definition binka_ue_decode_test.cpp:18
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NaniteVertexFactory.h:15
Definition RHICommandList.h:455
Definition RenderResource.h:37
Definition StaticMeshResources.h:404
Definition NaniteResources.h:393
Definition NaniteResources.h:566
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition NaniteResources.cpp:3242
FNaniteVertexFactory * GetVertexFactory()
Definition NaniteResources.h:571
virtual void ReleaseRHI() override
Definition NaniteResources.cpp:3252
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
Definition UnrealString.h.inl:34
Definition Object.h:95
Definition SkinnedMeshComponent.h:50
EMeshDataSectionFlags
Definition NaniteResources.h:270
void SetBits(uint32 &Value, uint32 Bits, uint32 NumBits, uint32 Offset)
Definition NaniteResources.h:82
FMeshDataSectionArray BuildMeshSections(const FStaticMeshSectionArray &InSections)
Definition NaniteResources.cpp:3264
FStaticMeshSectionArray BuildStaticMeshSections(const FMeshDataSectionArray &InSections)
Definition NaniteResources.cpp:3319
uint32 GetBits(uint32 Value, uint32 NumBits, uint32 Offset)
Definition NaniteResources.h:76
Definition DerivedData.cpp:40
Definition SkeletalMeshTypes.h:141
Definition IoHash.h:33
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition EngineTypes.h:3040
Definition ResourceSize.h:31
Definition StaticMeshResources.h:202
Definition NaniteResources.h:264
uint32 ViewId
Definition NaniteResources.h:266
uint32 InstanceId
Definition NaniteResources.h:265
Definition NaniteResources.h:367
EMeshDataSectionFlags Flags
Definition NaniteResources.h:377
uint32 NumTriangles
Definition NaniteResources.h:373
uint32 MinVertexIndex
Definition NaniteResources.h:374
uint32 FirstIndex
Definition NaniteResources.h:372
uint32 MaxVertexIndex
Definition NaniteResources.h:375
int32 MaterialIndex
Definition NaniteResources.h:369
Definition NaniteResources.h:93
uint32 LODErrorAndEdgeLength
Definition NaniteResources.h:109
uint32 GetPositionOffset() const
Definition NaniteResources.h:129
void SetBitsPerAttribute(uint32 Bits)
Definition NaniteResources.h:167
FVector3f BoxBoundsExtent
Definition NaniteResources.h:111
void SetNumVerts(uint32 NumVerts)
Definition NaniteResources.h:149
void SetPosPrecision(int32 Precision)
Definition NaniteResources.h:156
void SetDecodeInfoOffset(uint32 Offset)
Definition NaniteResources.h:169
uint32 Dummy0
Definition NaniteResources.h:123
void SetColorBitsR(uint32 NumBits)
Definition NaniteResources.h:175
uint32 GetFlags() const
Definition NaniteResources.h:142
void SetBrickDataOffset(uint32 Offset)
Definition NaniteResources.h:185
void SetGroupIndex(uint32 GroupIndex)
Definition NaniteResources.h:180
uint32 GetPosBitsY() const
Definition NaniteResources.h:137
uint32 Flags_NumClusterBoneInfluences
Definition NaniteResources.h:112
void SetExtendedDataOffset(uint32 Offset)
Definition NaniteResources.h:182
int32 GetPosPrecision() const
Definition NaniteResources.h:135
uint32 GetIndexOffset() const
Definition NaniteResources.h:132
void SetNormalPrecision(uint32 NumBits)
Definition NaniteResources.h:160
void SetPosBitsY(uint32 NumBits)
Definition NaniteResources.h:158
uint32 BitsPerIndex_PosPrecision_PosBits_NormalPrecision_TangentPrecision
Definition NaniteResources.h:103
void SetBrickDataNum(uint32 Num)
Definition NaniteResources.h:186
uint32 GetNumVerts() const
Definition NaniteResources.h:128
void SetPosBitsX(uint32 NumBits)
Definition NaniteResources.h:157
FSphere3f LODBounds
Definition NaniteResources.h:106
void SetVertResourceBatchInfo(TArray< uint32 > &BatchInfo, uint32 GpuPageOffset, uint32 NumMaterialRanges)
Definition NaniteResources.h:188
uint32 GetNumClusterBoneInfluences() const
Definition NaniteResources.h:143
FVector3f BoxBoundsCenter
Definition NaniteResources.h:108
uint32 GetTangentPrecision() const
Definition NaniteResources.h:140
uint32 VertReuseBatchInfo[4]
Definition NaniteResources.h:126
uint32 GetPosBitsZ() const
Definition NaniteResources.h:138
void SetNumTris(uint32 NumTris)
Definition NaniteResources.h:152
void SetTangentPrecision(uint32 NumBits)
Definition NaniteResources.h:161
void SetExtendedDataNum(uint32 Num)
Definition NaniteResources.h:183
uint32 PackedMaterialInfo
Definition NaniteResources.h:119
void SetAttributeOffset(uint32 Offset)
Definition NaniteResources.h:166
uint32 NumVerts_PositionOffset
Definition NaniteResources.h:97
FIntVector PosStart
Definition NaniteResources.h:102
void SetPositionOffset(uint32 Offset)
Definition NaniteResources.h:150
uint32 ExtendedDataOffset_Num
Definition NaniteResources.h:121
void SetBitsPerIndex(uint32 BitsPerIndex)
Definition NaniteResources.h:155
uint32 GetAttributeOffset() const
Definition NaniteResources.h:146
uint32 NumTris_IndexOffset
Definition NaniteResources.h:98
uint32 DecodeInfoOffset_HasTangents_Skinning_NumUVs_ColorMode
Definition NaniteResources.h:116
void SetHasTangents(bool bHasTangents)
Definition NaniteResources.h:170
uint32 GetPosBitsX() const
Definition NaniteResources.h:136
void SetColorMode(uint32 Mode)
Definition NaniteResources.h:173
void SetFlags(uint32 Flags)
Definition NaniteResources.h:163
void SetIndexOffset(uint32 Offset)
Definition NaniteResources.h:153
void SetHasSkinning(bool bSkinning)
Definition NaniteResources.h:171
uint32 UVBitOffsets
Definition NaniteResources.h:117
uint32 GetBitsPerAttribute() const
Definition NaniteResources.h:147
uint32 ColorMin
Definition NaniteResources.h:99
void SetNumUVs(uint32 Num)
Definition NaniteResources.h:172
uint32 GetNumTris() const
Definition NaniteResources.h:131
void SetPosBitsZ(uint32 NumBits)
Definition NaniteResources.h:159
void SetColorBitsG(uint32 NumBits)
Definition NaniteResources.h:176
uint32 Dummy1
Definition NaniteResources.h:124
void SetColorBitsB(uint32 NumBits)
Definition NaniteResources.h:177
uint32 BrickDataOffset_Num
Definition NaniteResources.h:122
uint32 AttributeOffset_BitsPerAttribute
Definition NaniteResources.h:115
void SetColorBitsA(uint32 NumBits)
Definition NaniteResources.h:178
uint32 ColorBits_GroupIndex
Definition NaniteResources.h:100
void SetNumClusterBoneInfluences(uint32 N)
Definition NaniteResources.h:164
uint32 GetNormalPrecision() const
Definition NaniteResources.h:139
uint32 GetBitsPerIndex() const
Definition NaniteResources.h:134
Definition NaniteResources.h:51
FVector3f BoxBoundsExtent
Definition NaniteResources.h:62
uint32 MinLODError_MaxParentLODError
Definition NaniteResources.h:57
uint32 ChildStartReference
Definition NaniteResources.h:63
FVector4f LODBounds[NANITE_MAX_BVH_NODE_FANOUT]
Definition NaniteResources.h:52
struct Nanite::FPackedHierarchyNode::@1232 Misc2[NANITE_MAX_BVH_NODE_FANOUT]
FVector3f BoxBoundsCenter
Definition NaniteResources.h:56
uint32 ResourcePageRangeKey
Definition NaniteResources.h:68
uint32 GroupPartSize_AssemblyPartIndex
Definition NaniteResources.h:69
struct Nanite::FPackedHierarchyNode::@1231 Misc1[NANITE_MAX_BVH_NODE_FANOUT]
struct Nanite::FPackedHierarchyNode::@1230 Misc0[NANITE_MAX_BVH_NODE_FANOUT]
Definition NaniteResources.h:217
FORCEINLINE bool operator==(FPageRangeKey Other) const
Definition NaniteResources.h:243
FORCEINLINE bool IsEmpty() const
Definition NaniteResources.h:237
FORCEINLINE FPageRangeKey(uint32 StartIndex, uint32 Count, bool bMultiRange, bool bHasStreamingPages)
Definition NaniteResources.h:222
FORCEINLINE FPageRangeKey(uint32 InValue)
Definition NaniteResources.h:221
uint32 Value
Definition NaniteResources.h:218
bool RemoveRootPages(uint32 NumRootPages)
Definition NaniteResources.h:246
FORCEINLINE FPageRangeKey()
Definition NaniteResources.h:220
FORCEINLINE bool HasStreamingPages() const
Definition NaniteResources.h:241
FORCEINLINE bool operator!=(FPageRangeKey Other) const
Definition NaniteResources.h:244
FORCEINLINE uint32 GetNumPagesOrRanges() const
Definition NaniteResources.h:238
FORCEINLINE uint32 GetStartIndex() const
Definition NaniteResources.h:239
FORCEINLINE bool IsMultiRange() const
Definition NaniteResources.h:240
Definition NaniteResources.h:206
uint32 DependenciesStart
Definition NaniteResources.h:210
uint16 DependenciesNum
Definition NaniteResources.h:211
uint32 PageSize
Definition NaniteResources.h:209
uint8 Flags
Definition NaniteResources.h:213
uint32 BulkOffset
Definition NaniteResources.h:207
uint8 MaxHierarchyDepth
Definition NaniteResources.h:212
uint32 BulkSize
Definition NaniteResources.h:208
Definition NaniteResources.h:410
TArray< uint8 > RootData
Definition NaniteResources.h:412
uint64 VoxelMaterialsMask
Definition NaniteResources.h:431
uint32 NumInputVertices
Definition NaniteResources.h:428
TArray< FPageRangeKey > PageRangeLookup
Definition NaniteResources.h:421
ENGINE_API bool ReleaseResources()
Definition NaniteResources.cpp:298
TArray< FPackedHierarchyNode > HierarchyNodes
Definition NaniteResources.h:415
uint32 NumClusters
Definition NaniteResources.h:429
uint32 RuntimeResourceID
Definition NaniteResources.h:434
int32 NormalPrecision
Definition NaniteResources.h:425
void ForEachPage(FPageRangeKey PageRangeKey, const TFunc &Func, bool bStreamingPagesOnly=false) const
Definition NaniteResources.h:560
uint32 NumHierarchyDwords
Definition NaniteResources.h:440
uint32 NumRootPages
Definition NaniteResources.h:423
ENGINE_API bool HasStreamingData() const
Definition NaniteResources.cpp:391
TArray< uint32 > AssemblyBoneAttachmentData
Definition NaniteResources.h:420
uint32 ResourceFlags
Definition NaniteResources.h:430
bool IsRootPage(uint32 PageIndex) const
Definition NaniteResources.h:503
FByteBulkData StreamablePages
Definition NaniteResources.h:413
uint32 HierarchyOffset
Definition NaniteResources.h:435
TArray< FPageStreamingState > PageStreamingStates
Definition NaniteResources.h:417
TArray< uint32 > HierarchyRootOffsets
Definition NaniteResources.h:416
TArray< FMatrix3x4 > AssemblyTransforms
Definition NaniteResources.h:419
bool TrueForAllPages(FPageRangeKey PageRangeKey, const TFunc &Func, bool bStreamingPagesOnly=false) const
Definition NaniteResources.h:518
uint32 NumHierarchyNodes
Definition NaniteResources.h:439
TArray< uint16 > PageDependencies
Definition NaniteResources.h:418
uint32 NumInputTriangles
Definition NaniteResources.h:427
ENGINE_API void InitResources(const UObject *Owner)
Definition NaniteResources.cpp:269
uint32 PersistentHash
Definition NaniteResources.h:442
FBoxSphereBounds3f MeshBounds
Definition NaniteResources.h:422
int32 TangentPrecision
Definition NaniteResources.h:426
uint32 NumResidentClusters
Definition NaniteResources.h:441
int32 PositionPrecision
Definition NaniteResources.h:424
int32 RootPageIndex
Definition NaniteResources.h:437
void GetResourceSizeEx(FResourceSizeEx &CumulativeResourceSize) const
Definition NaniteResources.cpp:532
TArray< uint16 > ImposterAtlas
Definition NaniteResources.h:414
ENGINE_API bool IsValidPageRangeKey(FPageRangeKey PageRangeKey) const
Definition NaniteResources.cpp:547
uint32 AssemblyTransformOffset
Definition NaniteResources.h:436
int32 ImposterIndex
Definition NaniteResources.h:438
Definition DontCopy.h:13
Definition IsContiguousContainer.h:16
Definition UnrealTypeTraits.h:172
Definition PimplPtr.h:50