UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteCullRaster.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#include "NaniteSceneProxy.h"
7#include "NaniteVisibility.h"
9
11class FViewFamilyInfo;
13
21
22namespace Nanite
23{
24
26{
27 // Only rasterize using fixed function hardware.
28 HardwareOnly = 0,
29
30 // Rasterize large triangles with hardware, small triangles with software (compute).
32
33 // Rasterize large triangles with hardware, overlapped with rasterizing small triangles with software (compute).
35};
36
41{
42 // Default mode outputting both ID and depth
44
45 // Rasterize only depth to 32 bit buffer
47};
48
49enum class EPipeline : uint8
50{
51 Primary,
52 Shadows,
53 Lumen,
55 MaterialCache
56};
57
64
84
86{
96
97 FRDGBufferRef ViewsBuffer = nullptr;
98 FRDGBufferRef VisibleClustersSWHW = nullptr;
99 FRDGBufferRef AssemblyTransforms = nullptr;
100 FRDGBufferRef AssemblyMeta = nullptr;
101 FRDGBufferRef RasterBinMeta = nullptr;
102
103 FRDGTextureRef VisBuffer64 = nullptr;
104 FRDGTextureRef DbgBuffer64 = nullptr;
105 FRDGTextureRef DbgBuffer32 = nullptr;
106
107 FRDGTextureRef ShadingMask = nullptr;
108
109 FRDGBufferRef ClearTileArgs = nullptr;
110 FRDGBufferRef ClearTileBuffer = nullptr;
111
112 FNaniteVisibilityQuery* VisibilityQuery = nullptr;
113
115};
116
118 const FSceneTexturesConfig& SceneTexturesConfig,
119 const FMaterial& Material,
121 EShaderPlatform ShaderPlatform,
122 int32 PSOCollectorIndex,
124
126 FRDGBuilder& GraphBuilder,
127 const FSharedContext& SharedContext,
128 const FViewFamilyInfo& ViewFamily,
129 FIntPoint TextureSize,
131 EOutputBufferMode RasterMode = EOutputBufferMode::VisBuffer,
132 bool bClearTarget = true,
133 bool bAsyncCompute = true,
135 uint32 NumRects = 0,
137 bool bCustomPass = false,
138 bool bVisualize = false,
139 bool bVisualizeOverdraw = false,
140 bool bEnableAssemblyMeta = false
141);
142
167
172{
173 uint32 NumChunks = 0;
174 FRDGBufferRef ExplicitChunkDraws = nullptr; // Buffer of FInstanceCullingGroupWork
175 FRDGBufferRef InstanceIds = nullptr; // Buffer of instance ids indexed by ExplicitChunkDraws elements.
176};
177
179{
180public:
182 FRDGBuilder& GraphBuilder,
183 const FScene& Scene,
184 const FViewInfo& SceneView,
185 FSceneUniformBuffer& SceneUniformBuffer,
186 const FSharedContext& SharedContext,
187 const FRasterContext& RasterContext,
188 const FConfiguration& Configuration,
189 const FIntRect& ViewRect,
190 const FRDGTextureRef PrevHZB,
191 FVirtualShadowMapArray* VirtualShadowMapArray = nullptr );
192
193 IRenderer() = default;
194 virtual ~IRenderer() = default;
195
196 // NOTE: NumViews is not used if InViewDrawRanges is provided; can be set to 0
197 virtual void DrawGeometry(
198 FNaniteRasterPipelines& RasterPipelines,
199 const FNaniteVisibilityQuery* VisibilityQuery,
200 FRDGBufferRef ViewsBuffer,
202 int32 NumViews,
206
210 virtual void DrawGeometry(
211 FNaniteRasterPipelines& RasterPipelines,
212 const FNaniteVisibilityQuery* VisibilityQuery,
216
220 inline void DrawGeometry(FNaniteRasterPipelines& RasterPipelines,
221 const FNaniteVisibilityQuery* VisibilityQuery,
223 {
224 DrawGeometry(RasterPipelines, VisibilityQuery, ViewArray, nullptr, nullptr);
225 }
226
230 inline void DrawGeometry(FNaniteRasterPipelines& RasterPipelines,
231 const FNaniteVisibilityQuery* VisibilityQuery,
233 const TConstArrayView<FInstanceDraw> &InstanceDraws)
234 {
235 DrawGeometry(RasterPipelines, VisibilityQuery, ViewArray, nullptr, &InstanceDraws);
236 }
237
242 inline void DrawGeometry(FNaniteRasterPipelines& RasterPipelines,
243 const FNaniteVisibilityQuery* VisibilityQuery,
246 {
247 DrawGeometry(RasterPipelines, VisibilityQuery, ViewArray, OptionalSceneInstanceCullingQuery, nullptr);
248 }
249
251};
252
253} // namespace Nanite
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
EShaderPlatform
Definition RHIShaderPlatform.h:11
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_RDG_TEXTURE_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1788
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GlobalShader.h:173
Definition MaterialShared.h:2058
Definition NaniteShared.h:717
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition SceneCullingRenderer.h:80
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1970
Definition SceneRendering.h:1132
Definition VirtualShadowMapArray.h:291
Definition NaniteShared.h:99
Definition NaniteCullRaster.h:179
void DrawGeometry(FNaniteRasterPipelines &RasterPipelines, const FNaniteVisibilityQuery *VisibilityQuery, const FPackedViewArray &ViewArray)
Definition NaniteCullRaster.h:220
virtual ~IRenderer()=default
virtual void DrawGeometry(FNaniteRasterPipelines &RasterPipelines, const FNaniteVisibilityQuery *VisibilityQuery, FRDGBufferRef ViewsBuffer, FRDGBufferRef InViewDrawRanges, int32 NumViews, FSceneInstanceCullingQuery *OptionalSceneInstanceCullingQuery, const TConstArrayView< FInstanceDraw > *OptionalInstanceDraws, const FExplicitChunkDrawInfo *OptionalExplicitChunkDrawInfo)=0
void DrawGeometry(FNaniteRasterPipelines &RasterPipelines, const FNaniteVisibilityQuery *VisibilityQuery, const FPackedViewArray &ViewArray, const TConstArrayView< FInstanceDraw > &InstanceDraws)
Definition NaniteCullRaster.h:230
IRenderer()=default
virtual void ExtractResults(FRasterResults &RasterResults)=0
void DrawGeometry(FNaniteRasterPipelines &RasterPipelines, const FNaniteVisibilityQuery *VisibilityQuery, const FPackedViewArray &ViewArray, FSceneInstanceCullingQuery *OptionalSceneInstanceCullingQuery)
Definition NaniteCullRaster.h:242
virtual void DrawGeometry(FNaniteRasterPipelines &RasterPipelines, const FNaniteVisibilityQuery *VisibilityQuery, const FPackedViewArray &ViewArray, FSceneInstanceCullingQuery *OptionalSceneInstanceCullingQuery, const TConstArrayView< FInstanceDraw > *OptionalInstanceDraws)=0
Definition Array.h:670
Definition UniquePtr.h:107
Type
Definition RHIFeatureLevel.h:20
Definition DeferredShadingRenderer.cpp:316
Definition SkinnedMeshComponent.h:50
FRasterContext InitRasterContext(FRDGBuilder &GraphBuilder, const FSharedContext &SharedContext, const FViewFamilyInfo &ViewFamily, FIntPoint TextureSize, FIntRect TextureRect, EOutputBufferMode RasterMode, bool bClearTarget, bool bAsyncCompute, FRDGBufferSRVRef RectMinMaxBufferSRV, uint32 NumRects, FRDGTextureRef ExternalDepthBuffer, bool bCustomPass, bool bVisualize, bool bVisualizeOverdraw, bool bEnableAssemblyMeta)
Definition NaniteCullRaster.cpp:6121
EFilterFlags
Definition NaniteSceneProxy.h:194
EOutputBufferMode
Definition NaniteCullRaster.h:41
ERasterScheduling
Definition NaniteCullRaster.h:26
EPipeline
Definition NaniteCullRaster.h:50
void CollectRasterPSOInitializers(const FSceneTexturesConfig &SceneTexturesConfig, const FMaterial &RasterMaterial, const FPSOPrecacheParams &PreCacheParams, EShaderPlatform ShaderPlatform, int32 PSOCollectorIndex, TArray< FPSOPrecacheData > &PSOInitializers)
Definition NaniteCullRaster.cpp:3011
Definition NaniteVisibility.cpp:54
Definition PSOPrecache.h:30
Definition SceneTexturesConfig.h:114
Definition NaniteCullRaster.h:144
uint32 bDrawOnlyRootGeometry
Definition NaniteCullRaster.h:151
uint32 bTwoPassOcclusion
Definition NaniteCullRaster.h:145
uint32 bExtractStats
Definition NaniteCullRaster.h:162
uint32 bForceHWRaster
Definition NaniteCullRaster.h:149
uint32 bIsLumenCapture
Definition NaniteCullRaster.h:155
uint32 bExtractVSMPerformanceFeedback
Definition NaniteCullRaster.h:161
uint32 bIsMaterialCache
Definition NaniteCullRaster.h:156
uint32 bSupportsMultiplePasses
Definition NaniteCullRaster.h:148
uint32 bIsGameView
Definition NaniteCullRaster.h:157
uint32 bIsReflectionCapture
Definition NaniteCullRaster.h:154
uint32 bUpdateStreaming
Definition NaniteCullRaster.h:146
uint32 bEditorShowFlag
Definition NaniteCullRaster.h:158
uint32 bGameShowFlag
Definition NaniteCullRaster.h:159
EFilterFlags HiddenFilterFlags
Definition NaniteCullRaster.h:163
uint32 bPrimaryContext
Definition NaniteCullRaster.h:150
uint32 bIsShadowPass
Definition NaniteCullRaster.h:152
uint32 bDisableProgrammable
Definition NaniteCullRaster.h:160
uint32 bIsSceneCapture
Definition NaniteCullRaster.h:153
uint32 bDrawOnlyRayTracingFarField
Definition NaniteCullRaster.h:147
Definition NaniteCullRaster.h:172
Definition NaniteCullRaster.h:66
bool bEnableAssemblyMeta
Definition NaniteCullRaster.h:82
FRDGTextureRef DbgBuffer32
Definition NaniteCullRaster.h:77
bool VisualizeActive
Definition NaniteCullRaster.h:79
FIntPoint TextureSize
Definition NaniteCullRaster.h:68
FVector2f RcpViewSize
Definition NaniteCullRaster.h:67
FRDGTextureRef DbgBuffer64
Definition NaniteCullRaster.h:76
bool bCustomPass
Definition NaniteCullRaster.h:81
FRasterParameters Parameters
Definition NaniteCullRaster.h:72
FRDGTextureRef DepthBuffer
Definition NaniteCullRaster.h:74
bool VisualizeModeOverdraw
Definition NaniteCullRaster.h:80
FRDGTextureRef VisBuffer64
Definition NaniteCullRaster.h:75
ERasterScheduling RasterScheduling
Definition NaniteCullRaster.h:70
EOutputBufferMode RasterMode
Definition NaniteCullRaster.h:69
Definition NaniteCullRaster.h:86
uint32 MaxPatchesPerGroup
Definition NaniteCullRaster.h:91
uint32 MaxVisibleClusters
Definition NaniteCullRaster.h:88
uint32 RenderFlags
Definition NaniteCullRaster.h:94
uint32 MaxNodes
Definition NaniteCullRaster.h:90
uint32 MaxCandidatePatches
Definition NaniteCullRaster.h:89
FIntVector4 PageConstants
Definition NaniteCullRaster.h:87
float InvDiceRate
Definition NaniteCullRaster.h:93
TArray< FVisualizeResult, TInlineAllocator< 32 > > Visualizations
Definition NaniteCullRaster.h:114
uint32 MeshPass
Definition NaniteCullRaster.h:92
uint32 DebugFlags
Definition NaniteCullRaster.h:95
Definition NaniteCullRaster.h:59
EPipeline Pipeline
Definition NaniteCullRaster.h:62
FGlobalShaderMap * ShaderMap
Definition NaniteCullRaster.h:60
ERHIFeatureLevel::Type FeatureLevel
Definition NaniteCullRaster.h:61
Definition IntPoint.h:25