UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ViewData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7//#include "Nanite/NaniteShared.h"
8
9class FViewInfo;
10class FRDGBuilder;
11class FScene;
12class FGPUScene;
13
14namespace Nanite
15{
16 struct FPackedView;
17 struct FPackedViewParams;
18}
19
21{
22
24 // InViews represents the scene renderer primary views (passed to FRendererViewDataManager constructor), and are named "InViews" to be compatible with Nanite conventions (see GetNaniteView),
25 // The buffer may also contain all the non-primary views but these are not generally accessible.
28 // Number of scene renderer primary views.
29 SHADER_PARAMETER(uint32, NumSceneRendererPrimaryViews)
30 // Stride between each bit vector in the per-view bit masks in dwords.
31 SHADER_PARAMETER(uint32, InstanceMaskWordStride)
33
39
40
48
49
52 SHADER_PARAMETER(uint32, NumSceneRendererPrimaryViews)
53 SHADER_PARAMETER(uint32, NumCullingViews)
55
56}
57
58DECLARE_SCENE_UB_STRUCT(RendererViewData::FParameters, ViewData, RENDERER_API)
59
60
64{
65public:
70
71 bool IsEnabled() const { return bIsEnabled; }
72
78 int32 RegisterView(const Nanite::FPackedViewParams& Params);
79
80 // Allocate space for views ahead of time prior to calling RegisterView.
81 void AllocateViews(int32 NumViews);
82
86 void InitInstanceState(FRDGBuilder& GraphBuilder);
87
92 RendererViewData::FCullingShaderParameters GetCullingParameters(FRDGBuilder& GraphBuilder);
93
96 RendererViewData::FWriterParameters GetWriterShaderParameters(FRDGBuilder& GraphBuilder) const { return WriterShaderParameters; }
97
98 void FlushRegisteredViews(FRDGBuilder& GraphBuilder);
99
100 const TArray<FViewInfo*> &GetRegisteredPrimaryViews() const { return SceneRendererPrimaryViews; }
101
102 int32 GetNumCullingViews() const { return NumRegisteredViews.load(std::memory_order_relaxed); }
103
104
105private:
106
107 // Register a primary view
108 int32 RegisterPrimaryView(const FViewInfo& ViewInfo);
109
110 FRendererViewDataManager() = delete;
112
113 const FScene& Scene;
114 const FGPUScene& GPUScene;
115 FSceneUniformBuffer& SceneUniforms;
116 TArray<FViewInfo*> &SceneRendererPrimaryViews;
117
118 std::atomic_int32_t NumRegisteredViews = {0};
119 TArray<Nanite::FPackedView> CullingViews;
120 bool bIsEnabled;
121
122 FRDGBuffer* CullingViewsRDG = nullptr;
123 FRDGBuffer* PrimaryViewsRDG = nullptr;
124 int32 NumSceneRendererPrimaryViews = 0;
125 int32 InstanceMaskWordStride = 0;
126 // Non view index strided buffer of bits, one per instance that is deforming (animating or something like that), indexed by InstanceId.
127 // Initialized to zero each frame & updated by interested scene extensions / systems.
128 // Also in the same buffer laid out after the above
129 // 1. counter of number of instances marked &
130 FRDGBuffer* DeformingInstanceViewMaskRDG = nullptr;
131 FRDGBuffer* PersistentIdToIndexMapRDG = nullptr;
132
133 RendererViewData::FCullingShaderParameters CullingShaderParameters;
134 RendererViewData::FParameters ShaderParameters;
135 RendererViewData::FWriterParameters WriterShaderParameters;
136};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_SCENE_UB_STRUCT(StructType, FieldName, PrefixKeywords)
Definition SceneUniformBuffer.h:87
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define SHADER_PARAMETER_RDG_BUFFER_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1812
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GPUScene.h:217
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition ViewData.h:64
RendererViewData::FWriterParameters GetWriterShaderParameters(FRDGBuilder &GraphBuilder) const
Definition ViewData.h:96
const TArray< FViewInfo * > & GetRegisteredPrimaryViews() const
Definition ViewData.h:100
bool IsEnabled() const
Definition ViewData.h:71
int32 GetNumCullingViews() const
Definition ViewData.h:102
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition Array.h:670
Definition SkinnedMeshComponent.h:50
Definition ViewData.h:21
Definition NaniteShared.h:143