UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteCoarseMeshStreamingManager.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"
6#include "ContentStreaming.h"
7
9class ULevel;
10namespace Nanite { using CoarseMeshStreamingHandle = int16; }
11
12namespace Nanite
13{
15{
16public:
17
19
20 // IStreamingManager interface
21 virtual void UpdateResourceStreaming(float DeltaTime, bool bProcessEverything = false) override;
22 virtual int32 BlockTillAllRequestsFinished(float TimeLimit = 0.0f, bool bLogResults = false) override;
23 virtual void CancelForcedResources() override;
24
25 virtual void NotifyActorDestroyed(AActor* Actor) override;
26 virtual void NotifyPrimitiveDetached(const UPrimitiveComponent* Primitive) override;
27 virtual void NotifyPrimitiveUpdated(const UPrimitiveComponent* Primitive) override;
28 virtual void NotifyPrimitiveUpdated_Concurrent(const UPrimitiveComponent* Primitive) override;
29
30 virtual void AddLevel(class ULevel* Level) override;
31 virtual void RemoveLevel(class ULevel* Level) override;
32
33 virtual void NotifyLevelChange() override {}
34 virtual void SetDisregardWorldResourcesForFrames(int32 NumFrames) override {}
35 virtual void NotifyLevelOffset(class ULevel* Level, const FVector& Offset) override {}
36 // End IStreamingManager interface
37
41
44
47
50
51#if WITH_EDITOR
53 ENGINE_API static bool CheckStreamingMode();
55#endif // WITH_EDITOR
56
57private:
58
59 enum class ENotifyMode
60 {
62 Unregister,
63 };
64 void ProcessNotifiedActor(const AActor* Actor, ENotifyMode NotifyMode);
65
67 void RegisterComponent(const UPrimitiveComponent* Primitive, bool bCheckStaticMeshChanged);
68 void UnregisterComponent(const UPrimitiveComponent* Primitive);
69 void UnregisterComponentInternal(const UPrimitiveComponent* Primitive, UStreamableRenderAsset* RenderAsset);
70
72 void ForceStreamIn();
73 void ForceStreamOut();
74
75 // General update lock
76 FCriticalSection UpdateCS;
77
78 // Render assets which don't have valid resources anymore
79 TArray<CoarseMeshStreamingHandle> ReleasedRenderAssets;
80
81 // Used streamable handles collected from all the last rendering update rounds
82 TSet<CoarseMeshStreamingHandle> UsedStreamableHandles;
83 TArray<CoarseMeshStreamingHandle> TmpUsedStreamableHandles;
84
85 enum class EResourceState
86 {
88 RequestStreamIn,
89 StreamingIn,
90 Loaded,
91 RequestStreamOut,
92 StreamingOut,
93 };
94
95 // Registered streamable render assets
96 struct FRegisteredRenderAsset
97 {
98 // Unique handle for the regisered assets - used as index into RegisteredRenderAssets for fast retrieval
100
101 // Actual streamable render asset on which the stream in/out operations will be called
102 UStreamableRenderAsset* RenderAsset = nullptr;
103
104 // All the components using the render asset and need to be informed on stream in/out requests
105 //TArray<const UPrimitiveComponent*> PrimitiveComponents;
106
107 // Cache streaming size
108 uint32 StreamingSize = 0;
109
110 // Last used tick index - used for stream out order
111 uint64 LastUsedTickIndex = 0;
112
113 // Current state of the resource
114 EResourceState ResourceState = EResourceState::Unloaded;
115 };
116 TSparseArray<FRegisteredRenderAsset> RegisteredRenderAssets;
119
120 TArray<ULevel*> RegisteredLevels;
123 TMap<const UPrimitiveComponent*, UStreamableRenderAsset*> ComponentToRenderAssetLookUpMap;
124
125 uint64 TotalRequestedRenderAssetSize = 0;
126 uint64 TotalLoadedRenderAssetSize = 0;
127 uint64 TickCount = 0;
128
129#if WITH_EDITOR
131#endif // WITH_EDITOR
132};
133
134} // namespace Nanite
135
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FRDGImportedBuffer Register(FRDGBuilder &GraphBuilder, const FRDGExternalBuffer &In, ERDGImportedBufferFlags Flags, ERDGUnorderedAccessViewFlags UAVFlags)
Definition HairStrandsInterface.cpp:94
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition NaniteCoarseMeshStreamingManager.h:15
virtual void NotifyLevelChange() override
Definition NaniteCoarseMeshStreamingManager.h:33
ENGINE_API void AddUsedStreamingHandles(TArray< CoarseMeshStreamingHandle > &UsedHandles)
Definition NaniteCoarseMeshStreamingManager.cpp:492
FCoarseMeshStreamingManager()
Definition NaniteCoarseMeshStreamingManager.cpp:51
virtual void RemoveLevel(class ULevel *Level) override
Definition NaniteCoarseMeshStreamingManager.cpp:120
ENGINE_API void UpdateResourceStates()
Definition NaniteCoarseMeshStreamingManager.cpp:500
virtual void NotifyPrimitiveUpdated(const UPrimitiveComponent *Primitive) override
Definition NaniteCoarseMeshStreamingManager.cpp:89
virtual void CancelForcedResources() override
Definition NaniteCoarseMeshStreamingManager.cpp:74
virtual void SetDisregardWorldResourcesForFrames(int32 NumFrames) override
Definition NaniteCoarseMeshStreamingManager.h:34
virtual void UpdateResourceStreaming(float DeltaTime, bool bProcessEverything=false) override
Definition NaniteCoarseMeshStreamingManager.cpp:386
void UnregisterRenderAsset(UStreamableRenderAsset *RenderAsset)
Definition NaniteCoarseMeshStreamingManager.cpp:175
virtual void AddLevel(class ULevel *Level) override
Definition NaniteCoarseMeshStreamingManager.cpp:101
virtual void NotifyPrimitiveUpdated_Concurrent(const UPrimitiveComponent *Primitive) override
Definition NaniteCoarseMeshStreamingManager.cpp:95
virtual void NotifyLevelOffset(class ULevel *Level, const FVector &Offset) override
Definition NaniteCoarseMeshStreamingManager.h:35
virtual void NotifyActorDestroyed(AActor *Actor) override
Definition NaniteCoarseMeshStreamingManager.cpp:79
void RequestUpdateCachedRenderState(const UStreamableRenderAsset *RenderAsset)
Definition NaniteCoarseMeshStreamingManager.cpp:362
virtual int32 BlockTillAllRequestsFinished(float TimeLimit=0.0f, bool bLogResults=false) override
Definition NaniteCoarseMeshStreamingManager.cpp:67
virtual void NotifyPrimitiveDetached(const UPrimitiveComponent *Primitive) override
Definition NaniteCoarseMeshStreamingManager.cpp:84
void RegisterRenderAsset(UStreamableRenderAsset *RenderAsset)
Definition NaniteCoarseMeshStreamingManager.cpp:143
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SparseArray.h:524
Definition Level.h:423
Definition StreamableRenderAsset.h:37
Definition SkinnedMeshComponent.h:50
int16 CoarseMeshStreamingHandle
Definition PrimitiveSceneProxy.h:55
Definition ContentStreaming.h:161