97 UE_DEPRECATED(5.4,
"Use constructor which provides pass name as first argument")
116 const TCHAR* PassName,
241 int32 NumMeshDrawCommands,
360#if MESH_DRAW_COMMAND_STATS
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
@ InPlace
Definition CoreMiscDefines.h:162
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
FMeshDrawCommandOverrideArgs GetMeshDrawCommandOverrideArgs(const FInstanceCullingDrawParams &InstanceCullingDrawParams)
Definition InstanceCullingContext.cpp:94
EInstanceCullingMode
Definition InstanceCullingContext.h:45
EBatchProcessingMode
Definition InstanceCullingContext.h:59
EInstanceCullingFlags
Definition InstanceCullingContext.h:51
@ NoInstanceOrderPreservation
ERHIAccess
Definition RHIAccess.h:11
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define RDG_BUFFER_ACCESS(MemberName, Access)
Definition ShaderParameterMacros.h:1923
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER_RDG_UNIFORM_BUFFER(StructType, MemberName)
Definition ShaderParameterMacros.h:1823
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
#define DECLARE_UNIFORM_BUFFER_STRUCT(StructTypeName, PrefixKeywords)
Definition ShaderParameterStructDeclaration.h:10
Definition GPUScene.h:217
Definition GlobalShader.h:173
Definition InstanceCullingContext.h:74
TArray< FPayloadData, SceneRenderingAllocator > PayloadData
Definition InstanceCullingContext.h:338
EBatchProcessingMode SingleInstanceProcessingMode
Definition InstanceCullingContext.h:353
EInstanceCullingMode GetInstanceCullingMode() const
Definition InstanceCullingContext.h:208
FInstanceCullingContext()
Definition InstanceCullingContext.h:95
uint32 NumCompactionInstances
Definition InstanceCullingContext.h:343
void BuildRenderingCommands(FRDGBuilder &GraphBuilder, const FGPUScene &GPUScene, int32 InDynamicInstanceIdOffset, int32 InDynamicInstanceIdNum, FInstanceCullingResult &Results)
Definition InstanceCullingContext.cpp:674
static void SetDeferredContextCullingParams(const FInstanceCullingDeferredContext &DeferredContext, FInstanceCullingDrawParams &Parameters)
Definition InstanceCullingContext.cpp:1354
bool IsInstanceOrderPreservationEnabled() const
Definition InstanceCullingContext.cpp:244
void AddInstancesToDrawCommand(uint32 IndirectArgsOffset, int32 InstanceDataOffset, uint32 RunOffset, uint32 NumInstances, EInstanceFlags InstanceFlags)
Definition InstanceCullingContext.cpp:306
static constexpr uint32 IndirectArgsNumWords
Definition InstanceCullingContext.h:90
void ResetCommands(int32 MaxNumCommands)
Definition InstanceCullingContext.cpp:230
TArray< int32, TInlineAllocator< 6, SceneRenderingAllocator > > ViewIds
Definition InstanceCullingContext.h:247
EAsyncProcessingMode
Definition InstanceCullingContext.h:262
EInstanceCullingMode InstanceCullingMode
Definition InstanceCullingContext.h:250
SyncPrerequisitesFuncType SyncPrerequisitesFunc
Definition InstanceCullingContext.h:258
TArray< uint32, SceneRenderingAllocator > CompactionBlockDataIndices
Definition InstanceCullingContext.h:342
void BeginAsyncSetup(SyncPrerequisitesFuncType &&InSyncPrerequisitesFunc)
Definition InstanceCullingContext.cpp:280
void SetupDrawCommands(FMeshCommandOneFrameArray &VisibleMeshDrawCommandsInOut, bool bCompactIdenticalCommands, const FScene *Scene, int32 &MaxInstancesOut, int32 &VisibleMeshDrawCommandsNumOut, int32 &NewPassVisibleMeshDrawCommandsNumOut)
Definition InstanceCullingContext.cpp:1442
TArray< uint32, SceneRenderingAllocator > InstanceIdOffsets
Definition InstanceCullingContext.h:339
uint32 StepInstanceDataOffsetBytes(uint32 NumStepDraws) const
Definition InstanceCullingContext.cpp:148
TRefCountPtr< IPooledRenderTarget > PrevHZB
Definition InstanceCullingContext.h:248
EInstanceFlags
Definition InstanceCullingContext.h:77
@ DynamicInstanceDataOffset
void WaitForSetupTask()
Definition InstanceCullingContext.cpp:285
static FInstanceCullingDeferredContext * CreateDeferredContext(FRDGBuilder &GraphBuilder, const FGPUScene &GPUScene, FInstanceCullingManager &InstanceCullingManager)
Definition InstanceCullingContext.cpp:1034
EShaderPlatform ShaderPlatform
Definition InstanceCullingContext.h:246
int32 DynamicInstanceIdNum
Definition InstanceCullingContext.h:256
EInstanceCullingFlags Flags
Definition InstanceCullingContext.h:251
int32 DynamicInstanceIdOffset
Definition InstanceCullingContext.h:255
static void AddClearIndirectArgInstanceCountPass(FRDGBuilder &GraphBuilder, FGlobalShaderMap *ShaderMap, FRDGBufferRef DrawIndirectArgsBuffer, TFunction< int32()> NumIndirectArgsCallback=TFunction< int32()>())
Definition InstanceCullingContext.cpp:1393
TArray< FCompactionData, SceneRenderingAllocator > DrawCommandCompactionData
Definition InstanceCullingContext.h:341
FInstanceCullingManager * InstanceCullingManager
Definition InstanceCullingContext.h:245
LoadBalancerArray LoadBalancers
Definition InstanceCullingContext.h:347
void SetDynamicPrimitiveInstanceOffsets(int32 InDynamicInstanceIdOffset, int32 InDynamicInstanceIdNum)
Definition InstanceCullingContext.cpp:294
uint32 GetInstanceIdNumElements() const
Definition InstanceCullingContext.cpp:163
void AddInstanceRunsToDrawCommand(uint32 IndirectArgsOffset, int32 InstanceDataOffset, const uint32 *Runs, uint32 NumRuns, EInstanceFlags InstanceFlags, uint32 MaxBatchSize)
Definition InstanceCullingContext.cpp:390
static bool IsGPUCullingEnabled()
Definition InstanceCullingContext.cpp:209
TArray< FUintVector2, SceneRenderingAllocator > DrawCommandDescs
Definition InstanceCullingContext.h:337
uint32 AllocateIndirectArgs(const FMeshDrawCommand *MeshDrawCommand)
Definition InstanceCullingContext.cpp:250
static RENDERER_API FUniformBufferStaticSlot GetStaticUniformBufferSlot(EShaderPlatform ShaderPlatform)
Definition InstanceCullingContext.cpp:115
uint32 TotalInstances
Definition InstanceCullingContext.h:253
bool HasCullingCommands() const
Definition InstanceCullingContext.cpp:693
FUniformBufferStaticSlot InstanceCullingStaticSlot
Definition InstanceCullingContext.h:356
static constexpr uint32 UniformViewInstanceStride[2]
Definition InstanceCullingContext.h:84
bool IsEnabled() const
Definition InstanceCullingContext.h:137
bool bUsesUniformBufferView
Definition InstanceCullingContext.h:358
void BuildRenderingCommandsInternal(FRDGBuilder &GraphBuilder, const FGPUScene &GPUScene, EAsyncProcessingMode AsyncProcessingMode, FInstanceCullingDrawParams *InstanceCullingDrawParams)
Definition InstanceCullingContext.cpp:698
TStaticArray< FInstanceProcessingGPULoadBalancer *, static_cast< uint32 >(EBatchProcessingMode::Num)> LoadBalancerArray
Definition InstanceCullingContext.h:345
static bool IsOcclusionCullingEnabled()
Definition InstanceCullingContext.cpp:214
bool bIsEnabled
Definition InstanceCullingContext.h:249
RENDERER_API ~FInstanceCullingContext()
Definition InstanceCullingContext.cpp:219
static constexpr uint32 CompactionBlockNumInstances
Definition InstanceCullingContext.h:91
TArray< FMeshDrawCommandInfo, SceneRenderingAllocator > MeshDrawCommandInfos
Definition InstanceCullingContext.h:335
static RENDERER_API uint32 GetInstanceIdBufferStride(EShaderPlatform ShaderPlatform)
Definition InstanceCullingContext.cpp:136
void SubmitDrawCommands(const FMeshCommandOneFrameArray &VisibleMeshDrawCommands, const FGraphicsMinimalPipelineStateSet &GraphicsMinimalPipelineStateSet, const FMeshDrawCommandOverrideArgs &OverrideArgs, int32 StartIndex, int32 NumMeshDrawCommands, uint32 InstanceFactor, FRHICommandList &RHICmdList) const
Definition InstanceCullingContext.cpp:1673
static RENDERER_API const TRDGUniformBufferRef< FInstanceCullingGlobalUniforms > CreateDummyInstanceCullingUniformBuffer(FRDGBuilder &GraphBuilder)
Definition InstanceCullingContext.cpp:609
TArray< FRHIDrawIndexedIndirectParameters, SceneRenderingAllocator > IndirectArgs
Definition InstanceCullingContext.h:336
Definition InstanceCullingContext.cpp:621
Definition InstanceCullingManager.h:45
Definition InstanceCullingManager.h:22
Definition MeshPassProcessor.h:1223
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:3819
Definition ScenePrivate.h:2875
Definition ArrayView.h:139
Definition RefCounting.h:454
Definition InstanceCullingContext.h:307
static const uint32 NumViewBits
Definition InstanceCullingContext.h:308
uint32 NumInstances_NumViews
Definition InstanceCullingContext.h:310
FCompactionData(uint32 InNumInstances, uint32 InNumViews, uint32 InBlockOffset, uint32 InIndirectArgsIndex, uint32 InSrcInstanceIdOffset, uint32 InDestInstanceIdOffset)
Definition InstanceCullingContext.h:317
uint32 BlockOffset
Definition InstanceCullingContext.h:311
uint32 DestInstanceIdOffset
Definition InstanceCullingContext.h:314
FCompactionData()=default
uint32 IndirectArgsIndex
Definition InstanceCullingContext.h:312
uint32 SrcInstanceIdOffset
Definition InstanceCullingContext.h:313
Definition InstanceCullingContext.h:271
uint32 BatchDataStride
Definition InstanceCullingContext.h:280
uint32 NumBatches
Definition InstanceCullingContext.h:279
uint32 bUseIndirect
Definition InstanceCullingContext.h:273
uint32 InstanceDataByteOffset
Definition InstanceCullingContext.h:277
uint32 IndirectArgsOffsetOrNumInstances
Definition InstanceCullingContext.h:275
Definition InstanceCullingContext.h:284
uint32 CompactionDataIndex
Definition InstanceCullingContext.h:288
uint32 InstanceDataOffset
Definition InstanceCullingContext.h:286
uint32 bDynamicInstanceDataOffset_IndirectArgsIndex
Definition InstanceCullingContext.h:285
FPayloadData(bool bInDynamicInstanceDataOffset, uint32 InIndirectArgsIndex, uint32 InInstanceDataOffset, uint32 InRunInstanceOffset, uint32 InCompactionDataIndex)
Definition InstanceCullingContext.h:291
uint32 RunInstanceOffset
Definition InstanceCullingContext.h:287
Definition InstanceCullingManager.h:30
Definition MeshPassProcessor.h:1176
Definition RendererInterface.h:494