UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteShared.cpp File Reference
#include "NaniteShared.h"
#include "RHI.h"
#include "RenderUtils.h"
#include "SceneUtils.h"
#include "ScenePrivate.h"
#include "Rendering/NaniteStreamingManager.h"
#include "SceneRelativeViewMatrices.h"
#include "UnrealEngine.h"

Namespaces

namespace  Nanite
 

Macros

#define MAX_CLUSTERS   (16 * 1024 * 1024)
 

Functions

 DEFINE_LOG_CATEGORY (LogNanite)
 
 DEFINE_GPU_STAT (NaniteDebug)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (NaniteRaster)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT (FNaniteRasterUniformParameters, "NaniteRaster", NaniteRaster)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (NaniteShading)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT (FNaniteShadingUniformParameters, "NaniteShading", NaniteShading)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (NaniteRayTracing)
 
 IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT (FNaniteRayTracingUniformParameters, "NaniteRayTracing", NaniteRayTracing)
 
void Nanite::SetCullingViewOverrides (FViewInfo const *InCullingView, Nanite::FPackedViewParams &InOutParams)
 
FPackedView Nanite::CreatePackedView (const FPackedViewParams &Params)
 
FPackedViewParams Nanite::CreateViewParamsFromViewInfo (const FViewInfo &View, FIntPoint RasterContextSize, uint32 Flags, uint32 StreamingPriorityCategory, float MinBoundsRadius, float MaxPixelsPerEdgeMultipler, const FIntRect *InHZBTestViewRect)
 
FPackedView Nanite::CreatePackedViewFromViewInfo (const FViewInfo &View, FIntPoint RasterContextSize, uint32 Flags, uint32 StreamingPriorityCategory, float MinBoundsRadius, float MaxPixelsPerEdgeMultipler, const FIntRect *InHZBTestViewRect, bool bUseCurrentPreTranslationForHZB)
 
bool Nanite::ShouldDrawSceneViewsInOneNanitePass (const FViewInfo &View)
 
bool ShouldRenderNanite (const FScene *Scene, const FViewInfo &View, bool bCheckForAtomicSupport)
 
bool WouldRenderNanite (const FScene *Scene, const FViewInfo &View, bool bCheckForAtomicSupport, bool bCheckForProjectSetting)
 
bool UseComputeDepthExport ()
 

Variables

TAutoConsoleVariable< floatCVarNaniteMaxPixelsPerEdge
 
TAutoConsoleVariable< floatCVarNaniteMinPixelsPerEdgeHW
 
int32 GNaniteExportDepth = 1
 
int32 GNaniteMaxNodes = 2 * 1048576
 
FAutoConsoleVariableRef CVarNaniteMaxNodes (TEXT("r.Nanite.MaxNodes"), GNaniteMaxNodes, TEXT("Maximum number of Nanite nodes traversed during a culling pass."), ECVF_RenderThreadSafe)
 
int32 GNaniteMaxCandidateClusters = 16 * 1048576
 
FAutoConsoleVariableRef CVarNaniteMaxCandidateClusters (TEXT("r.Nanite.MaxCandidateClusters"), GNaniteMaxCandidateClusters, TEXT("Maximum number of Nanite clusters before cluster culling."), ECVF_RenderThreadSafe)
 
int32 GNaniteMaxVisibleClusters = 4 * 1048576
 
FAutoConsoleVariableRef CVarNaniteMaxVisibleClusters (TEXT("r.Nanite.MaxVisibleClusters"), GNaniteMaxVisibleClusters, TEXT("Maximum number of visible Nanite clusters."), ECVF_RenderThreadSafe)
 
int32 GNaniteMaxCandidatePatches = 2 * 1048576
 
FAutoConsoleVariableRef CVarNaniteMaxCandidatePatches (TEXT("r.Nanite.MaxCandidatePatches"), GNaniteMaxCandidatePatches, TEXT("Maximum number of Nanite patches considered for splitting."), ECVF_RenderThreadSafe)
 
int32 GNaniteMaxVisiblePatches = 2 * 1048576
 
FAutoConsoleVariableRef CVarNaniteMaxVisiblePatches (TEXT("r.Nanite.MaxVisiblePatches"), GNaniteMaxVisiblePatches, TEXT("Maximum number of visible Nanite patches."), ECVF_RenderThreadSafe)
 
int32 GNaniteMaxVisibleAssemblyParts = 256 * 1024
 
FAutoConsoleVariableRef CVarNaniteMaxVisibleAssemblyParts (TEXT("r.Nanite.MaxVisibleAssemblyParts"), GNaniteMaxVisibleAssemblyParts, TEXT("Maximum number of visible Nanite assembly parts."), ECVF_RenderThreadSafe)
 
TGlobalResource< FGlobalResourcesNanite::GGlobalResources
 

Macro Definition Documentation

◆ MAX_CLUSTERS

#define MAX_CLUSTERS   (16 * 1024 * 1024)

Function Documentation

◆ DEFINE_GPU_STAT()

DEFINE_GPU_STAT ( NaniteDebug  )

◆ DEFINE_LOG_CATEGORY()

DEFINE_LOG_CATEGORY ( LogNanite  )

◆ IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT()

IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT ( FNaniteRayTracingUniformParameters  ,
"NaniteRayTracing"  ,
NaniteRayTracing   
)

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT() [1/3]

IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT ( NaniteRaster  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT() [2/3]

IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT ( NaniteRayTracing  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT() [3/3]

IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT ( NaniteShading  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT() [1/2]

IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT ( FNaniteRasterUniformParameters  ,
"NaniteRaster"  ,
NaniteRaster   
)

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT() [2/2]

IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT ( FNaniteShadingUniformParameters  ,
"NaniteShading"  ,
NaniteShading   
)

◆ ShouldRenderNanite()

bool ShouldRenderNanite ( const FScene Scene,
const FViewInfo View,
bool  bCheckForAtomicSupport 
)

◆ UseComputeDepthExport()

bool UseComputeDepthExport ( )

◆ WouldRenderNanite()

bool WouldRenderNanite ( const FScene Scene,
const FViewInfo View,
bool  bCheckForAtomicSupport = true,
bool  bCheckForProjectSetting = true 
)

Checks whether Nanite would be rendered in this view. Used to give a visual warning about the project settings that can disable Nanite.

Variable Documentation

◆ CVarNaniteMaxCandidateClusters

FAutoConsoleVariableRef CVarNaniteMaxCandidateClusters(TEXT("r.Nanite.MaxCandidateClusters"), GNaniteMaxCandidateClusters, TEXT("Maximum number of Nanite clusters before cluster culling."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxCandidateClusters")  ,
GNaniteMaxCandidateClusters  ,
TEXT("Maximum number of Nanite clusters before cluster culling." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMaxCandidatePatches

FAutoConsoleVariableRef CVarNaniteMaxCandidatePatches(TEXT("r.Nanite.MaxCandidatePatches"), GNaniteMaxCandidatePatches, TEXT("Maximum number of Nanite patches considered for splitting."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxCandidatePatches")  ,
GNaniteMaxCandidatePatches  ,
TEXT("Maximum number of Nanite patches considered for splitting." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMaxNodes

FAutoConsoleVariableRef CVarNaniteMaxNodes(TEXT("r.Nanite.MaxNodes"), GNaniteMaxNodes, TEXT("Maximum number of Nanite nodes traversed during a culling pass."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxNodes")  ,
GNaniteMaxNodes  ,
TEXT("Maximum number of Nanite nodes traversed during a culling pass." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMaxPixelsPerEdge

TAutoConsoleVariable<float> CVarNaniteMaxPixelsPerEdge
extern

◆ CVarNaniteMaxVisibleAssemblyParts

FAutoConsoleVariableRef CVarNaniteMaxVisibleAssemblyParts(TEXT("r.Nanite.MaxVisibleAssemblyParts"), GNaniteMaxVisibleAssemblyParts, TEXT("Maximum number of visible Nanite assembly parts."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxVisibleAssemblyParts")  ,
GNaniteMaxVisibleAssemblyParts  ,
TEXT("Maximum number of visible Nanite assembly parts." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMaxVisibleClusters

FAutoConsoleVariableRef CVarNaniteMaxVisibleClusters(TEXT("r.Nanite.MaxVisibleClusters"), GNaniteMaxVisibleClusters, TEXT("Maximum number of visible Nanite clusters."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxVisibleClusters")  ,
GNaniteMaxVisibleClusters  ,
TEXT("Maximum number of visible Nanite clusters." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMaxVisiblePatches

FAutoConsoleVariableRef CVarNaniteMaxVisiblePatches(TEXT("r.Nanite.MaxVisiblePatches"), GNaniteMaxVisiblePatches, TEXT("Maximum number of visible Nanite patches."), ECVF_RenderThreadSafe) ( TEXT("r.Nanite.MaxVisiblePatches")  ,
GNaniteMaxVisiblePatches  ,
TEXT("Maximum number of visible Nanite patches." ,
ECVF_RenderThreadSafe   
)

◆ CVarNaniteMinPixelsPerEdgeHW

TAutoConsoleVariable<float> CVarNaniteMinPixelsPerEdgeHW
extern

◆ GNaniteExportDepth

int32 GNaniteExportDepth = 1

◆ GNaniteMaxCandidateClusters

int32 GNaniteMaxCandidateClusters = 16 * 1048576

◆ GNaniteMaxCandidatePatches

int32 GNaniteMaxCandidatePatches = 2 * 1048576

◆ GNaniteMaxNodes

int32 GNaniteMaxNodes = 2 * 1048576

◆ GNaniteMaxVisibleAssemblyParts

int32 GNaniteMaxVisibleAssemblyParts = 256 * 1024

◆ GNaniteMaxVisibleClusters

int32 GNaniteMaxVisibleClusters = 4 * 1048576

◆ GNaniteMaxVisiblePatches

int32 GNaniteMaxVisiblePatches = 2 * 1048576