UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InstanceCullingManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include "Async/Mutex.h"
10
12
13class FGPUScene;
14
15namespace Nanite
16{
17 struct FPackedView;
18 struct FPackedViewParams;
19}
20
25
38
40
45{
46public:
51
53
54 bool IsEnabled() const { return bIsEnabled; }
55
56 // Register a non-primary view for culling, returns integer ID of the view.
58
59 // Allocate space for views ahead of time prior to calling RegisterView.
60 void AllocateViews(int32 NumViews);
61
63
64 static bool AllowBatchedBuildRenderingCommands(const FGPUScene& GPUScene);
65
74 void BeginDeferredCulling(FRDGBuilder& GraphBuilder);
75
76
78 bool IsDeferredCullingActive() const { return DeferredContext != nullptr; }
79
80 // Reference to a buffer owned by FInstanceCullingOcclusionQueryRenderer
83
85
86 // to support merging of multiple contexts with different HZBs, we use separate bins (LoadBalancers) in the InstanceCullingDeferredContext
87 // bin 0 is reserved for UnCulled batches. Bins >= 1 are for the different HZBs.
89
90 void SetDummyCullingParams(FRDGBuilder& GraphBuilder, FInstanceCullingDrawParams& Parameters);
91
92private:
94
95 // Polulated by FInstanceCullingContext::BuildRenderingCommandsDeferred, used to hold instance culling related data that needs to be passed around
96 FInstanceCullingDeferredContext* DeferredContext = nullptr;
97
98 FInstanceCullingManager() = delete;
100
101 const FScene& Scene;
102 const FGPUScene& GPUScene;
103 FSceneUniformBuffer& SceneUniforms;
104 FRendererViewDataManager& ViewDataManager;
105
106 bool bIsEnabled;
107
109};
110
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
EBatchProcessingMode
Definition InstanceCullingContext.h:59
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
Definition GPUScene.h:217
Definition InstanceCullingContext.h:74
Definition InstanceCullingContext.cpp:621
Definition InstanceCullingManager.h:45
int32 GetBinIndex(EBatchProcessingMode Mode, const TRefCountPtr< IPooledRenderTarget > &HZB)
Definition InstanceCullingManager.cpp:56
static bool AllowBatchedBuildRenderingCommands(const FGPUScene &GPUScene)
Definition InstanceCullingManager.cpp:95
EPixelFormat InstanceOcclusionQueryBufferFormat
Definition InstanceCullingManager.h:82
~FInstanceCullingManager()
Definition InstanceCullingManager.cpp:41
void AllocateViews(int32 NumViews)
Definition InstanceCullingManager.cpp:45
void SetDummyCullingParams(FRDGBuilder &GraphBuilder, FInstanceCullingDrawParams &Parameters)
Definition InstanceCullingManager.cpp:82
FRDGBufferRef InstanceOcclusionQueryBuffer
Definition InstanceCullingManager.h:81
bool IsEnabled() const
Definition InstanceCullingManager.h:54
int32 RegisterView(const Nanite::FPackedViewParams &Params)
Definition InstanceCullingManager.cpp:50
TArray< TRefCountPtr< IPooledRenderTarget > > ViewPrevHZBs
Definition InstanceCullingManager.h:84
void BeginDeferredCulling(FRDGBuilder &GraphBuilder)
Definition InstanceCullingManager.cpp:100
const TRDGUniformBufferRef< FInstanceCullingGlobalUniforms > GetDummyInstanceCullingUniformBuffer() const
Definition InstanceCullingManager.h:62
bool IsDeferredCullingActive() const
Definition InstanceCullingManager.h:78
Definition InstanceCullingManager.h:22
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition ViewData.h:64
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition Array.h:670
Definition InstanceCullingLoadBalancer.h:118
Definition RenderGraphResources.h:251
Definition RefCounting.h:454
Definition SkinnedMeshComponent.h:50
Definition InstanceCullingManager.h:30
FInstanceCullingDrawParams Parameters
Definition InstanceCullingManager.h:31
void GetDrawParameters(FInstanceCullingDrawParams &OutParams) const
Definition InstanceCullingManager.h:33
Definition NaniteShared.h:143