UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalGraphicsPipelineState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MetalGraphicsPipelineState.h: Metal RHI graphics pipeline state class.
5=============================================================================*/
6
7#pragma once
8
9#include "RHIResources.h"
10#include "MetalState.h"
16
18{
19 friend class FMetalDynamicRHI;
20
21public:
23
25 {
26 switch (Frequency)
27 {
28 case SF_Vertex: return VertexShader;
29 case SF_Pixel: return PixelShader;
30
31 case SF_Geometry:
32#if PLATFORM_SUPPORTS_GEOMETRY_SHADERS
33 return GeometryShader;
34#else
35 return nullptr;
36#endif
37
38 case SF_Mesh:
39#if PLATFORM_SUPPORTS_MESH_SHADERS
40 return MeshShader;
41#else
42 return nullptr;
43#endif
44
46#if PLATFORM_SUPPORTS_MESH_SHADERS
47 return AmplificationShader;
48#else
49 return nullptr;
50#endif
51
52 default: return nullptr;
53 }
54 }
55
57
60
64#if PLATFORM_SUPPORTS_GEOMETRY_SHADERS
66#endif
67#if PLATFORM_SUPPORTS_MESH_SHADERS
70#endif
71
75
77 {
78 return Initializer.PrimitiveType;
79 }
80
81 bool GetDepthBounds() const
82 {
83 return Initializer.bDepthBounds;
84 }
85
86#if METAL_USE_METAL_SHADER_CONVERTER
88#endif
89
90private:
91 // This can only be created through the RHI to make sure Compile() is called.
93
94 // Compiles the underlying gpu pipeline objects. This must be called before usage.
95 bool Compile();
96
97 // Needed to runtime refine shaders currently.
99
100 FMetalShaderPipelinePtr PipelineState;
101};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Amplification
Definition RHIDefinitions.h:205
@ SF_Vertex
Definition RHIDefinitions.h:203
@ SF_Mesh
Definition RHIDefinitions.h:204
@ SF_Geometry
Definition RHIDefinitions.h:207
@ SF_Pixel
Definition RHIDefinitions.h:206
EPrimitiveType
Definition RHIDefinitions.h:822
Definition RHIResources.h:4572
Definition MetalDynamicRHI.h:74
Definition MetalGraphicsPipelineState.h:18
FRHIGraphicsShader * GetShader(EShaderFrequency Frequency) const override
Definition MetalGraphicsPipelineState.h:24
bool GetDepthBounds() const
Definition MetalGraphicsPipelineState.h:81
EPrimitiveType GetPrimitiveType()
Definition MetalGraphicsPipelineState.h:76
TRefCountPtr< FMetalVertexShader > VertexShader
Definition MetalGraphicsPipelineState.h:62
TRefCountPtr< FMetalDepthStencilState > DepthStencilState
Definition MetalGraphicsPipelineState.h:73
TRefCountPtr< FMetalVertexDeclaration > VertexDeclaration
Definition MetalGraphicsPipelineState.h:59
TRefCountPtr< FMetalRasterizerState > RasterizerState
Definition MetalGraphicsPipelineState.h:74
FMetalShaderPipelinePtr GetPipeline()
Definition MetalGraphicsPipelineState.cpp:52
virtual ~FMetalGraphicsPipelineState()
Definition MetalGraphicsPipelineState.cpp:43
TRefCountPtr< FMetalPixelShader > PixelShader
Definition MetalGraphicsPipelineState.h:63
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition Array.h:670
Definition RefCounting.h:454