56 check((BufferIndex & 0xFFFFFFFE) == 0);
57 return KeyBufferUAVs[BufferIndex];
66 check((BufferIndex & 0xFFFFFFFE) == 0);
67 return VertexBuffers[BufferIndex];
220 float BufferSlack = 2.f;
222 int32 FrameCountBeforeShrinking = 100;
224 int32 MinBufferSize = 8192;
257 int32 AllocatedCount = 0;
278 struct FDynamicValueBuffer
283 FValueBufferArray ValueBuffers;
286 int32 NumFramesRequiringShrinking = 0;
317 inline int32 GetUsedCount()
const {
return ValueBuffers.Num() ? ValueBuffers.Last().UsedCount : 0; }
319 inline int32 GetAllocatedCount()
const {
return ValueBuffers.Num() ? ValueBuffers.Last().AllocatedCount : 0; }
332 enum class ESortBatchProcessingOrder :
uint32
335 KeyGenAndSortAfterPreRender = 1,
336 KeyGenAfterPreRenderAndSortAfterPostRenderOpaque = 2,
337 KeyGenAndSortAfterPostRenderOpaque = 3,
350 int32 NumElements = 0;
360 FDynamicValueBuffer* DynamicValueBuffer =
nullptr;
366 ESortBatchProcessingOrder ProcessingOrder = ESortBatchProcessingOrder::Undefined;
369 void UpdateProcessingOrder();
389 inline int32 GetUsedValueCount()
const {
return DynamicValueBuffer ? DynamicValueBuffer->GetUsedCount() : 0; }
391 inline int32 GetAllocatedValueCount()
const {
return DynamicValueBuffer ? DynamicValueBuffer->GetAllocatedCount() : 0; }
491 void FinalizeSortBatches();
497 void ReleaseSortBuffers();
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_SixParams(DelegateName, Param1Type, Param2Type, Param3Type, Param4Type, Param5Type, Param6Type)
Definition DelegateCombinations.h:93
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ENGINE_API void CopyUIntBufferToTargets(FRHICommandList &RHICmdList, ERHIFeatureLevel::Type FeatureLevel, FRHIShaderResourceView *SourceSRV, FRHIUnorderedAccessView *const *TargetUAVs, int32 *TargetSizes, int32 StartingOffset, int32 NumTargets)
Definition GPUSortManager.cpp:205
EGPUSortFlags
Definition GPUSortManager.h:95
@ SortAfterPostRenderOpaque
@ KeyGenAfterPostRenderOpaque
Definition GPUSortManager.h:167
FPostPreRenderEvent PostPreRenderEvent
Definition GPUSortManager.h:451
FPostPreRenderEvent PostPostRenderEvent
Definition GPUSortManager.h:457
DECLARE_EVENT_OneParam(FGPUSortManager, FPostPreRenderEvent, FRHICommandListImmediate &)
DECLARE_EVENT_OneParam(FGPUSortManager, FPostPostRenderEvent, FRHICommandListImmediate &)
Definition NameTypes.h:617
Definition GPUSortManager.h:39
FGPUSortBuffers GetSortBuffers()
Definition ParticleSortingGPU.cpp:251
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ParticleSortingGPU.cpp:187
virtual void ReleaseRHI() override
Definition ParticleSortingGPU.cpp:234
void SetBufferSize(int32 InBufferSize)
Definition GPUSortManager.h:42
int32 GetSize()
Definition GPUSortManager.h:71
FRHIUnorderedAccessView * GetKeyBufferUAV(int32 BufferIndex)
Definition GPUSortManager.h:54
FRHIBuffer * GetSortedVertexBufferRHI(int32 BufferIndex)
Definition GPUSortManager.h:64
Definition RenderGraphBuilder.h:49
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHICommandList.h:3819
Definition RHIResources.h:3304
Definition RHIResources.h:3294
Definition RefCounting.h:252
Definition RenderResource.h:37
Definition RenderResource.h:474
virtual RENDERCORE_API void ReleaseRHI() override
Definition RenderResource.cpp:556
Definition IndirectArray.h:20
Definition ContainerAllocationPolicies.h:894
Type
Definition RHIFeatureLevel.h:20
Definition GPUSortManager.h:172
FShaderResourceViewRHIRef BufferSRV
Definition GPUSortManager.h:174
Definition GPUSortManager.h:185
uint32 SortKeyMask
Definition GPUSortManager.h:194
FUintVector4 SortKeyParams
Definition GPUSortManager.h:196
uint32 ElementKeyMask
Definition GPUSortManager.h:192
uint32 ElementKeyShift
Definition GPUSortManager.h:193