93 template <
typename TShaderClass>
98 typename TShaderClass::FParameters* Parameters)
const
100 GetShaderParameters(GraphBuilder, Parameters->LoadBalancerParameters);
116template <
typename InAllocatorType = FDefaultAllocator>
124 Data->Batches.Empty(NumBatches);
125 Data->Items.Empty(NumItems);
168 return Data->Items.IsEmpty();
221 return Data->Batches;
232 template <
typename AllocatorType>
235 Data->Batches.Append(
Other.GetBatches().GetData(),
Other.GetBatches().Num());
236 Data->Items.Append(
Other.GetItems().GetData(),
Other.GetItems().Num());
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ERDGInitialDataFlags
Definition RenderGraphDefinitions.h:274
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
Definition InstanceCullingLoadBalancer.h:17
FIntVector GetWrappedCsGroupCount(TConstArrayView< FPackedBatch > Batches, int32 NumGroupsPerBatch) const
Definition InstanceCullingLoadBalancer.cpp:37
static constexpr uint32 ThreadGroupSize
Definition InstanceCullingLoadBalancer.h:19
FGPUData Upload(FRDGBuilder &GraphBuilder, TConstArrayView< FPackedBatch > Batches, TConstArrayView< FPackedItem > Items, ERDGInitialDataFlags RDGInitialDataFlags, int32 NumGroupsPerBatch) const
Definition InstanceCullingLoadBalancer.cpp:25
static constexpr uint32 NumInstancesItemBits
Definition InstanceCullingLoadBalancer.h:26
FPackedItem PackItem(uint32 InstanceDataOffset, uint32 NumInstances, uint32 Payload, uint32 BatchPrefixSum)
Definition InstanceCullingLoadBalancer.h:50
FPackedBatch PackBatch(uint32 FirstItem, uint32 NumItems)
Definition InstanceCullingLoadBalancer.h:35
static constexpr uint32 PrefixBits
Definition InstanceCullingLoadBalancer.h:22
static constexpr uint32 PrefixBitMask
Definition InstanceCullingLoadBalancer.h:24
static constexpr uint32 NumInstancesItemMask
Definition InstanceCullingLoadBalancer.h:27
static void SetShaderDefines(FShaderCompilerEnvironment &OutEnvironment)
Definition InstanceCullingLoadBalancer.cpp:7
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
ObjectType * AllocObject(TArgs &&... Args)
Definition RenderGraphBuilder.inl:158
Definition RenderGraphEvent.h:38
Definition RenderGraphPass.h:217
Definition InstanceCullingLoadBalancer.h:118
void Add(uint32 InstanceDataOffset, uint32 NumInstanceDataEntries, uint32 Payload)
Definition InstanceCullingLoadBalancer.h:131
const TArray< FPackedItem, AllocatorType > & GetItems() const
Definition InstanceCullingLoadBalancer.h:224
FGPUData UploadFinalized(FRDGBuilder &GraphBuilder, int32 NumGroupsPerBatch=1) const
Definition InstanceCullingLoadBalancer.h:184
uint32 CurrentBatchFirstItem
Definition InstanceCullingLoadBalancer.h:257
uint32 CurrentBatchPrefixSum
Definition InstanceCullingLoadBalancer.h:254
const TArray< FPackedBatch, AllocatorType > & GetBatches() const
Definition InstanceCullingLoadBalancer.h:218
TRefCountPtr< FData > Data
Definition InstanceCullingLoadBalancer.h:252
uint32 CurrentBatchNumItems
Definition InstanceCullingLoadBalancer.h:255
bool IsEmpty() const
Definition InstanceCullingLoadBalancer.h:166
FIntVector GetWrappedCsGroupCount(int32 NumGroupsPerBatch=1) const
Definition InstanceCullingLoadBalancer.h:213
void ReserveStorage(int32 NumBatches, int32 NumItems)
Definition InstanceCullingLoadBalancer.h:122
void AppendData(const TInstanceCullingLoadBalancer< AllocatorType > &Other)
Definition InstanceCullingLoadBalancer.h:233
uint32 CurrentBatchPackedPrefixSum
Definition InstanceCullingLoadBalancer.h:256
FGPUData Upload(FRDGBuilder &GraphBuilder, int32 NumGroupsPerBatch=1)
Definition InstanceCullingLoadBalancer.h:171
bool HasSingleInstanceItemsOnly() const
Definition InstanceCullingLoadBalancer.h:240
void FinalizeBatches()
Definition InstanceCullingLoadBalancer.h:199
uint32 TotalInstances
Definition InstanceCullingLoadBalancer.h:258
InAllocatorType AllocatorType
Definition InstanceCullingLoadBalancer.h:120
uint32 GetTotalNumInstances() const
Definition InstanceCullingLoadBalancer.h:230
Definition RefCounting.h:454
Definition RefCounting.h:355
FIntVector GetGroupCountWrapped(const int32 TargetGroupCount)
Definition RenderGraphUtils.h:398
FRDGPassRef AddPass(FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *Parameters, FIntVector GroupCount)
Definition RenderGraphUtils.h:550
Definition InstanceCullingLoadBalancer.h:79
FIntVector GetWrappedCsGroupCount() const
Definition InstanceCullingLoadBalancer.h:104
FRDGPassRef AddPass(FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, const TShaderRef< TShaderClass > &ComputeShader, typename TShaderClass::FParameters *Parameters) const
Definition InstanceCullingLoadBalancer.h:94
Definition InstanceCullingLoadBalancer.h:31
uint32 FirstItem_NumItems
Definition InstanceCullingLoadBalancer.h:32
Definition InstanceCullingLoadBalancer.h:44
uint32 Payload_BatchPrefixOffset
Definition InstanceCullingLoadBalancer.h:48
uint32 InstanceDataOffset_NumInstances
Definition InstanceCullingLoadBalancer.h:46
Definition ShaderCore.h:544
Definition InstanceCullingLoadBalancer.h:247
TArray< FPackedItem, AllocatorType > Items
Definition InstanceCullingLoadBalancer.h:249
TArray< FPackedBatch, AllocatorType > Batches
Definition InstanceCullingLoadBalancer.h:248