UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalRayTracing.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*==============================================================================
4 MetalRayTracing.h: MetalRT Implementation
5==============================================================================*/
6
7#pragma once
8
9#include "MetalRHIPrivate.h"
10#include "MetalResources.h"
11#include "RayTracingBuiltInResources.h"
12
13#if METAL_RHI_RAYTRACING
14
16{
17 uint32 BindlessHitGroupSystemIndexBuffer;
18 uint32 BindlessHitGroupSystemVertexBuffer;
19
21};
22
24{
25public:
28
30 void ReleaseDescriptors();
31
37 void RebuildDescriptors();
38
39 void RemoveCompactionRequest();
40
43
44 MTL::PrimitiveAccelerationStructureDescriptor* AccelerationStructureDescriptor = nullptr;
45
46 bool bHasPendingCompactionRequests;
48
49 static constexpr uint32 IndicesPerPrimitive = 3; // Triangle geometry only
50
52 {
54 }
55
57 void SetupHitGroupSystemParameters();
58 void ReleaseBindlessHandles();
59
60 TArray<FMetalHitGroupSystemParameters> HitGroupSystemParameters;
61
62private:
63 FMetalDevice& Device;
64
66
69
70 TArray<FRHIDescriptorHandle> HitGroupSystemVertexViews;
71 FRHIDescriptorHandle HitGroupSystemIndexView;
72
73 NS::Array* GeometryDescriptors = nullptr;
74};
75
77{
78public:
80 virtual ~FMetalRayTracingScene();
81
82 void BindBuffer(FRHIBuffer* InBuffer, uint32 InBufferOffset);
85 FMetalRHIBuffer* ScratchBuffer, uint32 ScratchOffset,
86 FMetalRHIBuffer* InstanceBuffer, uint32 InstanceOffset,
87 FMetalRHIBuffer* HitGroupContributionsBuffer, uint32 HitGroupContributionsBufferOffset,
88 uint32 NumInstances);
89
90 inline const FRayTracingSceneInitializer& GetInitializer() const override final { return Initializer; }
91
92 // Unique list of geometries referenced by all instances in this scene.
93 // Any referenced geometry is kept alive while the scene is alive.
95
97 {
98 check(AccelerationStructureBuffer && AccelerationStructureBuffer->AccelerationStructure);
99 return AccelerationStructureBuffer->AccelerationStructure;
100 }
101
102private:
103 friend class FMetalRHICommandContext;
104
105private:
106 FMetalDevice& Device;
107
110
112 FMetalRHIBuffer* AccelerationStructureBuffer;
113};
114#endif // METAL_RHI_RAYTRACING
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint64 FRayTracingAccelerationStructureAddress
Definition RHIResources.h:3725
void BuildAccelerationStructure(FVulkanCommandListContext &CommandContext, FVulkanRayTracingScene &Scene, FVulkanBuffer *InScratchBuffer, uint32 InScratchOffset, FVulkanBuffer *InInstanceBuffer, uint32 InInstanceOffset, uint32 NumInstances, EAccelerationStructureBuildMode BuildMode)
Definition VulkanRayTracing.cpp:757
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MetalDevice.h:102
Definition MetalResources.h:365
Definition MetalRHIContext.h:48
Definition RHIResources.h:1581
Definition RHICommandList.h:455
FRayTracingAccelerationStructureSize SizeInfo
Definition RHIResources.h:3722
Definition RHIResources.h:3729
FRayTracingGeometryInitializer Initializer
Definition RHIResources.h:3749
virtual FRayTracingAccelerationStructureAddress GetAccelerationStructureAddress(uint64 GPUIndex) const =0
Definition RHIResources.h:3755
virtual const FRayTracingSceneInitializer & GetInitializer() const =0
Definition Array.h:670
Definition RHIDefinitions.h:1401
Definition RHIResources.h:3496
Definition RHIResources.h:3669