UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialCacheRenderer.cpp File Reference

Classes

struct  FMaterialCacheGenericCSPrimitiveBatch
 
struct  FMaterialCacheGenericCSMaterialBatch
 
struct  FMaterialCacheGenericCSBatch
 
struct  FMaterialCacheStaticMeshCommand
 
struct  FMaterialCacheHardwareLayerRenderData
 
struct  FMaterialCacheNaniteLayerRenderData
 
struct  FMaterialCacheNaniteRenderData
 
struct  FMaterialCacheVertexInvariantLayerRenderData
 
struct  FMaterialCachePageInfo
 
struct  FMaterialCachePageCollection
 
struct  FMaterialCacheLayerRenderData
 
struct  FMaterialCacheABuffer
 
struct  FMaterialCacheRenderData
 
struct  FMaterialCacheHardwareContext
 
struct  FMaterialCacheNaniteContext
 
struct  FMaterialCacheVertexInvariantContext
 
struct  FMaterialCachePageAllocation
 

Enumerations

enum class  EMaterialCacheRenderPath { HardwareRaster , NaniteRaster , VertexInvariant , Count }
 
enum class  EMaterialCacheABufferTileLayout { Horizontal , Sliced }
 

Functions

 IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT (FMaterialCacheUniformParameters, "MaterialCachePass", SceneTextures)
 
 DECLARE_GPU_STAT (MaterialCacheCompositePages)
 
 DECLARE_GPU_STAT (MaterialCacheFinalize)
 
FMaterialCacheGenericCSPrimitiveBatchMaterialCacheAllocateGenericCSShadePage (FSceneRendererBase *Renderer, const FMaterialCachePendingEntry &Entry, const FMaterialCachePendingPageEntry &Page, const FMaterialRenderProxy *MaterialRenderProxy, const FPrimitiveSceneProxy *PrimitiveSceneProxy, FMaterialCacheGenericCSBatch &RenderData, FMaterialCachePageAllocation PageAllocation)
 
void MaterialCacheAllocateNaniteRasterPage (FSceneRendererBase *Renderer, FRDGBuilder &GraphBuilder, const FGuid &TagGuid, const FMaterialCachePendingEntry &Entry, const FMaterialCachePendingPageEntry &Page, FMaterialCacheStackEntry StackEntry, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialCacheVirtualTextureRenderProxy *CacheProxy, const FPrimitiveSceneInfo *PrimitiveSceneInfo, FMaterialCachePrimitiveData *PrimitiveData, FMaterialCacheNaniteRenderData &RenderData, FMaterialCacheNaniteLayerRenderData &LayerRenderData, FMaterialCachePageAllocation PageAllocation)
 
void MaterialCacheAllocateVertexInvariantPage (FSceneRendererBase *Renderer, FRDGBuilder &GraphBuilder, const FGuid &TagGuid, const FMaterialCachePendingEntry &Entry, const FMaterialCachePendingPageEntry &Page, FMaterialCacheStackEntry StackEntry, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FPrimitiveSceneInfo *PrimitiveSceneInfo, FMaterialCachePrimitiveData *PrimitiveData, FMaterialCacheVertexInvariantLayerRenderData &RenderData, FMaterialCachePageAllocation PageAllocation)
 
void MaterialCacheAllocateHardwareRasterPage (FSceneRendererBase *Renderer, const FGuid &TagGuid, const FMaterialCachePendingEntry &Entry, const FMaterialCachePendingPageEntry &Page, FMaterialCacheStackEntry StackEntry, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialCacheVirtualTextureRenderProxy *CacheProxy, const FPrimitiveSceneInfo *PrimitiveSceneInfo, FMaterialCachePrimitiveData *PrimitiveData, FMaterialCacheHardwareLayerRenderData &RenderData, FMaterialCachePageAllocation PageAllocation)
 
void CreatePageIndirectionBuffer (FRDGBuilder &GraphBuilder, FMaterialCacheGenericCSBatch &Batch)
 
void MaterialCacheEnqueuePages (FRDGBuilder &GraphBuilder, const FMaterialCacheTagLayout &TagLayout, const FMaterialCacheSetup &Setup, const TArrayView< FMaterialCachePageEntry > &Pages)
 
void MaterialCacheRenderPages (FRDGBuilder &GraphBuilder)
 

Variables

bool GMaterialCacheStaticMeshEnableViewportFromVS = true
 
bool GMaterialCacheVertexInvariantEnable = true
 
bool GMaterialCacheCommandCaching = false
 

Enumeration Type Documentation

◆ EMaterialCacheABufferTileLayout

Enumerator
Horizontal 
Sliced 

◆ EMaterialCacheRenderPath

Enumerator
HardwareRaster 

Standard hardware rasterization unwrap path Batches to a single mesh command set per layer

NaniteRaster 

Nanite rasterization unwrap path All pages shader the same rasterization context / vis-buffer, a single stack shares the same page vis-region Shading is parallel per layer, batched by material then primitive

VertexInvariant 

Shade-only path, enabled when the material doesn't make use of non-uv derived vertex data

Count 

Function Documentation

◆ CreatePageIndirectionBuffer()

void CreatePageIndirectionBuffer ( FRDGBuilder GraphBuilder,
FMaterialCacheGenericCSBatch Batch 
)

◆ DECLARE_GPU_STAT() [1/2]

DECLARE_GPU_STAT ( MaterialCacheCompositePages  )

◆ DECLARE_GPU_STAT() [2/2]

DECLARE_GPU_STAT ( MaterialCacheFinalize  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT()

IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT ( FMaterialCacheUniformParameters  ,
"MaterialCachePass"  ,
SceneTextures   
)

Array declarations not supported for this type, lay them out manually

◆ MaterialCacheAllocateGenericCSShadePage()

FMaterialCacheGenericCSPrimitiveBatch & MaterialCacheAllocateGenericCSShadePage ( FSceneRendererBase Renderer,
const FMaterialCachePendingEntry Entry,
const FMaterialCachePendingPageEntry Page,
const FMaterialRenderProxy MaterialRenderProxy,
const FPrimitiveSceneProxy PrimitiveSceneProxy,
FMaterialCacheGenericCSBatch RenderData,
FMaterialCachePageAllocation  PageAllocation 
)

◆ MaterialCacheAllocateHardwareRasterPage()

void MaterialCacheAllocateHardwareRasterPage ( FSceneRendererBase Renderer,
const FGuid TagGuid,
const FMaterialCachePendingEntry Entry,
const FMaterialCachePendingPageEntry Page,
FMaterialCacheStackEntry  StackEntry,
const FPrimitiveSceneProxy PrimitiveSceneProxy,
const FMaterialCacheVirtualTextureRenderProxy CacheProxy,
const FPrimitiveSceneInfo PrimitiveSceneInfo,
FMaterialCachePrimitiveData PrimitiveData,
FMaterialCacheHardwareLayerRenderData RenderData,
FMaterialCachePageAllocation  PageAllocation 
)

◆ MaterialCacheAllocateNaniteRasterPage()

void MaterialCacheAllocateNaniteRasterPage ( FSceneRendererBase Renderer,
FRDGBuilder GraphBuilder,
const FGuid TagGuid,
const FMaterialCachePendingEntry Entry,
const FMaterialCachePendingPageEntry Page,
FMaterialCacheStackEntry  StackEntry,
const FPrimitiveSceneProxy PrimitiveSceneProxy,
const FMaterialCacheVirtualTextureRenderProxy CacheProxy,
const FPrimitiveSceneInfo PrimitiveSceneInfo,
FMaterialCachePrimitiveData PrimitiveData,
FMaterialCacheNaniteRenderData RenderData,
FMaterialCacheNaniteLayerRenderData LayerRenderData,
FMaterialCachePageAllocation  PageAllocation 
)

◆ MaterialCacheAllocateVertexInvariantPage()

void MaterialCacheAllocateVertexInvariantPage ( FSceneRendererBase Renderer,
FRDGBuilder GraphBuilder,
const FGuid TagGuid,
const FMaterialCachePendingEntry Entry,
const FMaterialCachePendingPageEntry Page,
FMaterialCacheStackEntry  StackEntry,
const FPrimitiveSceneProxy PrimitiveSceneProxy,
const FPrimitiveSceneInfo PrimitiveSceneInfo,
FMaterialCachePrimitiveData PrimitiveData,
FMaterialCacheVertexInvariantLayerRenderData RenderData,
FMaterialCachePageAllocation  PageAllocation 
)

◆ MaterialCacheEnqueuePages()

void MaterialCacheEnqueuePages ( FRDGBuilder GraphBuilder,
const FMaterialCacheTagLayout TagLayout,
const FMaterialCacheSetup Setup,
const TArrayView< FMaterialCachePageEntry > &  Pages 
)

Enqueue a set of pages for rendering

◆ MaterialCacheRenderPages()

void MaterialCacheRenderPages ( FRDGBuilder GraphBuilder)

Process all enqueued pages

Variable Documentation

◆ GMaterialCacheCommandCaching

bool GMaterialCacheCommandCaching = false

◆ GMaterialCacheStaticMeshEnableViewportFromVS

bool GMaterialCacheStaticMeshEnableViewportFromVS = true

◆ GMaterialCacheVertexInvariantEnable

bool GMaterialCacheVertexInvariantEnable = true