Files
UnrealEngine/Engine/Source/Runtime/Renderer/Internal/MaterialCache/MaterialCachePrimitiveData.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

42 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MaterialCacheMeshProcessor.h"
#include "PrimitiveComponentId.h"
class FPrimitiveSceneProxy;
struct FMaterialCachePrimitiveCachedLayerCommands
{
FMaterialCachePrimitiveCachedLayerCommands() = default;
/** No copy or move construction */
UE_NONCOPYABLE(FMaterialCachePrimitiveCachedLayerCommands);
TArray<FMaterialCacheMeshDrawCommand> StaticMeshBatchCommands;
TOptional<FMaterialCacheLayerShadingCSCommand> NaniteLayerShadingCommand;
TOptional<FMaterialCacheLayerShadingCSCommand> VertexInvariantShadingCommand;
};
struct FMaterialCachePrimitiveCachedTagCommands
{
/** Lifetime of material tied to the proxy, any change invalidates the proxy, in turn clearing the cache */
TMap<UMaterialInterface*, TUniquePtr<FMaterialCachePrimitiveCachedLayerCommands>> Layers;
};
struct FMaterialCachePrimitiveCachedCommands
{
/** All cached material layers for a given teg */
TMap<FGuid, FMaterialCachePrimitiveCachedTagCommands> Tags;
};
struct FMaterialCachePrimitiveData
{
/** Proxy tied to the primitive */
FPrimitiveSceneProxy* Proxy = nullptr;
/** All cached commands */
FMaterialCachePrimitiveCachedCommands CachedCommands;
};