7#include "RayTracingBuiltInResources.h"
113 return ReferencedUniformBuffers;
118 return HitGroupIndexingMode;
123 return ShaderBindingMode;
138 struct FVulkanShaderTableAllocation
140 FVulkanShaderTableAllocation()
146 bool bUseLocalRecord =
false;
156 bool bIsDirty =
true;
160 static void ReleaseLocalBuffer(
FVulkanDevice& Device, FVulkanShaderTableAllocation& Alloc);
167 FVulkanShaderTableAllocation Miss;
168 FVulkanShaderTableAllocation HitGroup;
169 FVulkanShaderTableAllocation Callable;
178 const uint32 HandleSizeAligned;
284 return bIsPartialPipeline;
310 const bool bIsPartialPipeline;
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
ENoInit
Definition CoreMiscDefines.h:158
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EShaderFrequency
Definition RHIDefinitions.h:202
ERayTracingHitGroupIndexingMode
Definition RHIResources.h:3628
uint64 FRayTracingAccelerationStructureAddress
Definition RHIResources.h:3725
ERayTracingShaderBindingMode
Definition RHIResources.h:3620
Definition RHIDefinitions.h:95
Definition NameTypes.h:617
Definition RHIResources.h:1581
Definition RHICommandList.h:455
FRayTracingAccelerationStructureSize SizeInfo
Definition RHIResources.h:3722
Definition RHIResources.h:3729
FRayTracingGeometryInitializer Initializer
Definition RHIResources.h:3749
Definition RHIResources.h:1115
Definition RHIResources.h:3755
Definition RHIResources.h:3863
Definition RHIResources.h:5023
Definition VulkanResources.h:837
Definition VulkanCommandBuffer.h:43
Definition VulkanContext.h:241
Definition VulkanDevice.h:279
Definition VulkanQuery.h:49
Definition VulkanRayTracing.h:320
bool TryGetResults(uint32 NumResults)
Definition VulkanRayTracing.cpp:1759
TArray< uint64 > QueryOutput
Definition VulkanRayTracing.h:328
void EndBatch(FVulkanCommandListContext &CommandContext)
Definition VulkanRayTracing.cpp:1746
FVulkanSyncPointRef SyncPoint
Definition VulkanRayTracing.h:329
Definition VulkanRayTracing.h:334
void RequestCompact(FVulkanRayTracingGeometry *InRTGeometry)
Definition VulkanRayTracing.cpp:1789
bool ReleaseRequest(FVulkanRayTracingGeometry *InRTGeometry)
Definition VulkanRayTracing.cpp:1801
~FVulkanRayTracingCompactionRequestHandler()
Definition VulkanRayTracing.cpp:1783
Definition VulkanRayTracing.h:182
TRefCountPtr< FVulkanBuffer > AccelerationStructureBuffer
Definition VulkanRayTracing.h:207
VkDeviceAddress Address
Definition VulkanRayTracing.h:206
void SetupInlineGeometryParameters(uint32 GeometrySegmentIndex, FVulkanRayTracingGeometryParameters &Parameters) const
Definition VulkanRayTracing.cpp:609
static constexpr uint32 IndicesPerPrimitive
Definition VulkanRayTracing.h:184
void RemoveCompactionRequest()
Definition VulkanRayTracing.cpp:478
bool bHasPendingCompactionRequests
Definition VulkanRayTracing.h:208
FRHIDescriptorHandle HitGroupSystemIndexView
Definition VulkanRayTracing.h:215
TArray< FRHIDescriptorHandle > HitGroupSystemVertexViews
Definition VulkanRayTracing.h:214
FName OwnerName
Definition VulkanRayTracing.h:218
~FVulkanRayTracingGeometry()
Definition VulkanRayTracing.cpp:438
void ReleaseBindlessHandles()
Definition VulkanRayTracing.cpp:592
virtual FRayTracingAccelerationStructureAddress GetAccelerationStructureAddress(uint64 GPUIndex) const final override
Definition VulkanRayTracing.h:190
VkAccelerationStructureKHR Handle
Definition VulkanRayTracing.h:205
uint64 AccelerationStructureCompactedSize
Definition VulkanRayTracing.h:209
TArray< FVulkanHitGroupSystemParameters > HitGroupSystemParameters
Definition VulkanRayTracing.h:213
void CompactAccelerationStructure(FVulkanCommandBuffer &CmdBuffer, uint64 InSizeAfterCompaction)
Definition VulkanRayTracing.cpp:489
FDebugName DebugName
Definition VulkanRayTracing.h:217
FVulkanDevice *const Device
Definition VulkanRayTracing.h:211
FRayTracingGeometryInitializer Initializer
Definition RHIResources.h:3749
void SetupHitGroupSystemParameters()
Definition VulkanRayTracing.cpp:550
Definition VulkanRayTracing.h:270
VkPipeline GetPipeline() const
Definition VulkanRayTracing.h:277
const FVulkanRayTracingShader * GetVulkanShader(EShaderFrequency Frequency, int32 ShaderIndex) const
Definition VulkanRayTracing.cpp:1724
bool IsPartialPipeline() const
Definition VulkanRayTracing.h:282
~FVulkanRayTracingPipelineState()
Definition VulkanRayTracing.cpp:1677
const TArray< uint8 > & GetShaderHandles(EShaderFrequency Frequency) const
Definition VulkanRayTracing.cpp:1734
friend FVulkanRayTracingScene
Definition VulkanRayTracing.h:316
int32 GetVulkanShaderNum(EShaderFrequency Frequency) const
Definition VulkanRayTracing.cpp:1729
VulkanResourceFrameCounter FrameCounter
Definition VulkanRayTracing.h:313
UE_NONCOPYABLE(FVulkanRayTracingPipelineState)
int32 GetShaderIndex(const FVulkanRayTracingShader *Shader) const
Definition VulkanRayTracing.cpp:1707
friend FVulkanCommandListContext
Definition VulkanRayTracing.h:315
Definition VulkanRayTracing.h:222
~FVulkanRayTracingScene()
Definition VulkanRayTracing.cpp:705
TRefCountPtr< FVulkanBuffer > AccelerationStructureBuffer
Definition VulkanRayTracing.h:260
void BindBuffer(FRHIBuffer *InBuffer, uint32 InBufferOffset)
Definition VulkanRayTracing.cpp:715
TUniquePtr< FVulkanView > View
Definition VulkanRayTracing.h:256
bool IsBuilt() const
Definition VulkanRayTracing.h:233
const FRayTracingSceneInitializer Initializer
Definition VulkanRayTracing.h:242
TArray< TRefCountPtr< FRHIRayTracingGeometry > > ReferencedGeometries
Definition VulkanRayTracing.h:246
bool bBuilt
Definition VulkanRayTracing.h:262
uint32 NumInstances
Definition VulkanRayTracing.h:258
const FRayTracingSceneInitializer & GetInitializer() const override final
Definition VulkanRayTracing.h:229
FVulkanDevice & Device
Definition VulkanRayTracing.h:240
Definition VulkanRayTracing.h:69
ERayTracingShaderBindingMode GetShaderBindingMode() const
Definition VulkanRayTracing.h:121
void SetInlineGeometryParameters(uint32 SegmentIndex, const void *InData, uint32 InDataSize)
Definition VulkanRayTracing.cpp:991
virtual FRHISizeAndStride GetInlineBindingDataSizeAndStride() const override final
Definition VulkanRayTracing.cpp:1008
void Commit(FVulkanCommandListContext &Context, FRHIBuffer *InlineBindingDataBuffer)
Definition VulkanRayTracing.cpp:1015
ERayTracingHitGroupIndexingMode GetHitGroupIndexingMode() const
Definition VulkanRayTracing.h:116
~FVulkanRayTracingShaderTable()
Definition VulkanRayTracing.cpp:898
const VkStridedDeviceAddressRegionKHR * GetRegion(EShaderFrequency Frequency)
Definition VulkanRayTracing.cpp:947
void AddUBRef(FRHIUniformBuffer *UB)
Definition VulkanRayTracing.h:106
VkStridedDeviceAddressRegionKHR CommitRayGenShader(FVulkanCommandListContext &Context, uint32 SrcHandleIndex, TConstArrayView< uint8 > SrcHandleData)
Definition VulkanRayTracing.cpp:962
void SetLocalShaderParameters(EShaderFrequency Frequency, uint32 RecordIndex, uint32 InOffsetWithinRootSignature, const T &Parameters)
Definition VulkanRayTracing.h:83
void SetSlot(EShaderFrequency Frequency, uint32 DstSlot, uint32 SrcHandleIndex, TConstArrayView< uint8 > SrcHandleData)
Definition VulkanRayTracing.cpp:954
FVulkanDevice & GetDevice()
Definition VulkanRayTracing.h:126
void ReleaseLocalBuffers()
Definition VulkanRayTracing.cpp:903
TArrayView< TRefCountPtr< FRHIUniformBuffer > > GetUBRefs()
Definition VulkanRayTracing.h:111
static constexpr uint32 MaxBindingWorkers
Definition VulkanRayTracing.h:134
void SetLooseParameterData(EShaderFrequency Frequency, uint32 RecordIndex, const void *InData, uint32 InDataSize)
Definition VulkanRayTracing.h:90
Definition VulkanResources.h:292
Definition VulkanSubmission.h:54
Definition ArrayView.h:139
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
Definition UniquePtr.h:107
Definition VulkanMemory.h:418
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition RHIDefinitions.h:1401
Definition RHIResources.h:47
Definition RHIResources.h:3496
Definition RHIResources.h:3669
Definition RHIResources.h:3635
Definition VulkanRayTracing.h:55
VkAccelerationStructureBuildGeometryInfoKHR GeometryInfo
Definition VulkanRayTracing.h:64
FVkRtBLASBuildData()
Definition VulkanRayTracing.h:56
VkAccelerationStructureBuildSizesInfoKHR SizesInfo
Definition VulkanRayTracing.h:65
TArray< VkAccelerationStructureBuildRangeInfoKHR, TInlineAllocator< 1 > > Ranges
Definition VulkanRayTracing.h:63
TArray< VkAccelerationStructureGeometryKHR, TInlineAllocator< 1 > > Segments
Definition VulkanRayTracing.h:62
Definition VulkanRayTracing.h:41
VkAccelerationStructureBuildGeometryInfoKHR GeometryInfo
Definition VulkanRayTracing.h:50
FVkRtTLASBuildData()
Definition VulkanRayTracing.h:42
VkAccelerationStructureGeometryKHR Geometry
Definition VulkanRayTracing.h:49
VkAccelerationStructureBuildSizesInfoKHR SizesInfo
Definition VulkanRayTracing.h:51
Definition VulkanRayTracing.h:28
uint32 BindlessHitGroupSystemVertexBuffer
Definition VulkanRayTracing.h:32
uint32 BindlessUniformBuffers[32]
Definition VulkanRayTracing.h:34
FHitGroupSystemRootConstants RootConstants
Definition VulkanRayTracing.h:29
uint32 BindlessHitGroupSystemIndexBuffer
Definition VulkanRayTracing.h:31
Definition VulkanRayTracing.cpp:352
Definition VulkanPipeline.h:643