UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PSOPrecacheMaterial.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 PSOPrecacheMaterial.h
5=============================================================================*/
6
7#pragma once
8
9#include "PSOPrecache.h"
10#include "SceneUtils.h"
11
14class FMaterial;
17enum class EVertexInputStreamType : uint8;
18
19
24{
25public:
26
28 virtual ~IPSOCollector() {}
29
30 UE_DEPRECATED(5.2, "Call CollectPSOInitializers with FPSOPrecacheVertexFactoryData instead.")
32 {
33 FPSOPrecacheVertexFactoryData VertexFactoryData;
34 VertexFactoryData.VertexFactoryType = VertexFactoryType;
35 return CollectPSOInitializers(SceneTexturesConfig, Material, VertexFactoryData, PreCacheParams, PSOInitializers);
36 }
37
38 // Collect all PSO for given material, vertex factory & params
40
41 // PSO Collector index used for stats tracking
43};
44
48typedef IPSOCollector* (*PSOCollectorCreateFunction)(ERHIFeatureLevel::Type InFeatureLevel);
49
54{
55public:
56 constexpr static uint32 MaxPSOCollectorCount = 64;
57
58 static int32 GetPSOCollectorCount(EShadingPath ShadingPath) { return PSOCollectorCount[(uint32)ShadingPath]; }
60 {
62 uint32 ShadingPathIdx = (uint32)ShadingPath;
63 return PSOCollectors[ShadingPathIdx][Index].CreateFunction;
64 }
65 static const TCHAR* GetName(EShadingPath ShadingPath, int32 Index)
66 {
67 if (Index == INDEX_NONE)
68 {
69 return TEXT("Unknown");
70 }
72 uint32 ShadingPathIdx = (uint32)ShadingPath;
73 return PSOCollectors[ShadingPathIdx][Index].Name;
74 }
75 static ENGINE_API int32 GetIndex(EShadingPath ShadingPath, const TCHAR* Name);
76
77private:
78
79 // Have to used fixed size array instead of TArray because of order of initialization of static member variables
80 static inline int32 PSOCollectorCount[(uint32)EShadingPath::Num] = {0,0};
81
82 struct FPSOCollectorData
83 {
84 PSOCollectorCreateFunction CreateFunction;
85 const TCHAR* Name = nullptr;
86 };
87 static ENGINE_API FPSOCollectorData PSOCollectors[(uint32)EShadingPath::Num][MaxPSOCollectorCount];
88
90};
91
96{
97public:
99 : ShadingPath(InShadingPath)
100 {
101 uint32 ShadingPathIdx = (uint32)ShadingPath;
102
103 Index = FPSOCollectorCreateManager::PSOCollectorCount[ShadingPathIdx];
105
106 FPSOCollectorCreateManager::PSOCollectors[ShadingPathIdx][Index].CreateFunction = InCreateFunction;
107 FPSOCollectorCreateManager::PSOCollectors[ShadingPathIdx][Index].Name = InName;
108 FPSOCollectorCreateManager::PSOCollectorCount[ShadingPathIdx]++;
109 }
110
112 {
113 uint32 ShadingPathIdx = (uint32)ShadingPath;
114 FPSOCollectorCreateManager::PSOCollectors[ShadingPathIdx][Index].CreateFunction = nullptr;
115 FPSOCollectorCreateManager::PSOCollectors[ShadingPathIdx][Index].Name = nullptr;
116 }
117
118 int32 GetIndex() const { return Index; }
119
120private:
121 EShadingPath ShadingPath;
123};
124
129
134
139
144
149
154
159
164
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
ENGINE_API FPSOPrecacheDataArray GetMaterialPSOPrecacheData(FMaterialPSOPrecacheRequestID RequestID)
Definition PSOPrecacheMaterial.cpp:770
ENGINE_API FMaterialPSOPrecacheParams GetMaterialPSOPrecacheParams(FMaterialPSOPrecacheRequestID RequestID)
Definition PSOPrecacheMaterial.cpp:765
ENGINE_API void PreloadMaterialShaderMap(const FMaterial *Material, FGraphEventArray &OutGraphEvents)
Definition PSOPrecacheMaterial.cpp:716
IPSOCollector *(* PSOCollectorCreateFunction)(ERHIFeatureLevel::Type InFeatureLevel)
Definition PSOPrecacheMaterial.h:48
ENGINE_API void ReleasePSOPrecacheData(const TArray< FMaterialPSOPrecacheRequestID > &MaterialPSORequestIDs)
Definition PSOPrecacheMaterial.cpp:726
ENGINE_API void BoostPSOPriority(EPSOPrecachePriority NewPri, const TArray< FMaterialPSOPrecacheRequestID > &MaterialPSORequestIDs)
Definition PSOPrecacheMaterial.cpp:734
ENGINE_API void ClearMaterialPSORequests()
Definition PSOPrecacheMaterial.cpp:744
ENGINE_API void PrecacheMaterialPSOs(const FMaterialInterfacePSOPrecacheParamsList &PSOPrecacheParamsList, TArray< FMaterialPSOPrecacheRequestID > &OutMaterialPSOPrecacheRequestIDs, FGraphEventArray &OutGraphEvents)
Definition PSOPrecacheMaterial.cpp:705
uint32 FMaterialPSOPrecacheRequestID
Definition ParticleSystem.h:114
EPSOPrecachePriority
Definition PipelineStateCache.h:33
EShadingPath
Definition SceneUtils.h:24
EVertexInputStreamType
Definition VertexFactory.h:128
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIResources.h:4572
Definition MaterialShared.h:2058
Definition PSOPrecacheMaterial.h:54
static const TCHAR * GetName(EShadingPath ShadingPath, int32 Index)
Definition PSOPrecacheMaterial.h:65
static int32 GetPSOCollectorCount(EShadingPath ShadingPath)
Definition PSOPrecacheMaterial.h:58
static PSOCollectorCreateFunction GetCreateFunction(EShadingPath ShadingPath, int32 Index)
Definition PSOPrecacheMaterial.h:59
static ENGINE_API int32 GetIndex(EShadingPath ShadingPath, const TCHAR *Name)
Definition PSOPrecacheMaterial.cpp:40
static constexpr uint32 MaxPSOCollectorCount
Definition PSOPrecacheMaterial.h:56
Definition RHIResources.h:1018
Definition PSOPrecacheMaterial.h:96
~FRegisterPSOCollectorCreateFunction()
Definition PSOPrecacheMaterial.h:111
FRegisterPSOCollectorCreateFunction(PSOCollectorCreateFunction InCreateFunction, EShadingPath InShadingPath, const TCHAR *InName)
Definition PSOPrecacheMaterial.h:98
int32 GetIndex() const
Definition PSOPrecacheMaterial.h:118
Definition VertexFactory.h:314
Definition PSOPrecacheMaterial.h:24
IPSOCollector(int32 InPSOCollectorIndex)
Definition PSOPrecacheMaterial.h:27
virtual void CollectPSOInitializers(const FSceneTexturesConfig &SceneTexturesConfig, const FMaterial &Material, const FPSOPrecacheVertexFactoryData &VertexFactoryData, const FPSOPrecacheParams &PreCacheParams, TArray< FPSOPrecacheData > &PSOInitializers)=0
virtual ~IPSOCollector()
Definition PSOPrecacheMaterial.h:28
int32 PSOCollectorIndex
Definition PSOPrecacheMaterial.h:42
void CollectPSOInitializers(const FSceneTexturesConfig &SceneTexturesConfig, const FMaterial &Material, const FVertexFactoryType *VertexFactoryType, const FPSOPrecacheParams &PreCacheParams, TArray< FPSOPrecacheData > &PSOInitializers)
Definition PSOPrecacheMaterial.h:31
Definition Array.h:670
Type
Definition RHIFeatureLevel.h:20
const TCHAR * Name
Definition OodleDataCompression.cpp:30
U16 Index
Definition radfft.cpp:71
Definition PSOPrecache.h:278
Definition PSOPrecache.h:226
Definition PSOPrecache.h:30
Definition PSOPrecache.h:150
const FVertexFactoryType * VertexFactoryType
Definition PSOPrecache.h:155
Definition SceneTexturesConfig.h:114