UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteRayTracing.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "NaniteShared.h"
6
7#include "CoreMinimal.h"
8#include "SpanAllocator.h"
11#include "RHIGPUReadback.h"
12
13#include "MeshPassProcessor.h"
14
16
17#if RHI_RAYTRACING
18
19class FScene;
21
22namespace Nanite
23{
25 {
26 public:
29
30 void Initialize();
31 void Shutdown();
32
33 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
34 virtual void ReleaseRHI() override;
35
36 void Add(FPrimitiveSceneInfo* SceneInfo);
37 void Remove(FPrimitiveSceneInfo* SceneInfo);
38 void AddVisiblePrimitive(const FPrimitiveSceneInfo* SceneInfo);
39
41
42 void Update();
43
45
46 // Dispatch compute shader to stream out mesh data for resources with update requests.
47 void ProcessUpdateRequests(FRDGBuilder& GraphBuilder, FSceneUniformBuffer &SceneUniformBuffer);
48
49 // Commit pending BLAS builds. This allocates a transient scratch buffer internally.
50 bool ProcessBuildRequests(FRDGBuilder& GraphBuilder);
51
52 void EndFrame();
53
55 {
56 return GraphBuilder.CreateSRV(GraphBuilder.RegisterExternalBuffer(AuxiliaryDataBuffer));
57 }
58
60
61 bool CheckModeChanged();
62 float GetCutError() const;
63
65 {
66 return UniformBuffer;
67 }
68
69 FRHIUniformBuffer* GetUniformBufferRHI(FRDGBuilder& GraphBuilder)
70 {
71 return GraphBuilder.ConvertToExternalUniformBuffer(GetUniformBuffer());
72 }
73
74 void UpdateUniformBuffer(FRDGBuilder& GraphBuilder, bool bShouldRenderNanite);
75
76 private:
77
78 struct FInternalData
79 {
81 uint32 ResourceId;
82 uint32 HierarchyOffset;
83 uint32 NumClusters;
84 uint32 NumNodes;
85 uint32 NumVertices;
86 uint32 NumTriangles;
87 uint32 NumMaterials;
88 uint32 NumSegments;
89
90 bool bAssembly;
91
92 uint32 NumResidentClusters;
94
95 uint32 PrimitiveId;
96
97 TArray<uint32> SegmentMapping;
98
99 FDebugName DebugName;
100
102
103 uint32 AuxiliaryDataOffset = INDEX_NONE;
105
108 bool bUpdating = false;
109 };
110
111 struct FPendingBuild
112 {
115 };
116
119
120 TSet<uint32> UpdateRequests;
122 TSet<const FPrimitiveSceneInfo*> VisiblePrimitives;
123
125
128
130
133
134 struct FReadbackData
135 {
138
139 TArray<uint32> Entries;
140 };
141
142 TArray<FReadbackData> ReadbackBuffers;
143 uint32 ReadbackBuffersWriteIndex;
144 uint32 ReadbackBuffersNumPending;
145
146 // Geometries to be built this frame
149
150 // Geometries pending BLAS build due to r.RayTracing.Nanite.MaxBlasBuildsPerFrame throttling
152
154
155 const uint32 MaxReadbackBuffers = 4;
156
157 ERayTracingMode bPrevMode = ERayTracingMode::Fallback;
158 ERayTracingMode bCurrentMode = ERayTracingMode::Fallback;
159
160 bool bUpdating = false;
161 bool bInitialized = false;
162
163#if !UE_BUILD_SHIPPING
164 FDelegateHandle ScreenMessageDelegate;
165
169
173#endif // UE_BUILD_SHIPPING
174 };
175
177
178} // namespace Nanite
179
180#endif // RHI_RAYTRACING
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
ERayTracingMode
Definition RenderResource.h:27
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIDefinitions.h:95
Definition IDelegateInstance.h:14
Definition PrimitiveSceneInfo.h:266
Definition RenderGraphResources.h:1426
Definition RenderGraphBuilder.h:49
RENDERCORE_API FRDGBufferRef RegisterExternalBuffer(const TRefCountPtr< FRDGPooledBuffer > &ExternalPooledBuffer, ERDGBufferFlags Flags=ERDGBufferFlags::None)
Definition RenderGraphBuilder.cpp:1111
RENDERCORE_API FRHIUniformBuffer * ConvertToExternalUniformBuffer(FRDGUniformBufferRef UniformBuffer)
Definition RenderGraphBuilder.cpp:744
FRDGTextureSRVRef CreateSRV(const FRDGTextureSRVDesc &Desc)
Definition RenderGraphBuilder.inl:102
Definition RHICommandList.h:455
Definition RHIGPUReadback.h:116
Definition RHIResources.h:3729
Definition RHIResources.h:1232
Definition RenderResource.h:37
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SpanAllocator.h:15
Definition Array.h:670
Definition RenderResource.h:543
Definition UnrealString.h.inl:34
Definition RenderGraphResources.h:251
Definition SparseArray.h:524
Definition SkinnedMeshComponent.h:50
Definition IntPoint.h:25