UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MetalState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MetalState.h: Metal state definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "MetalRHIPrivate.h"
10#include "RHI.h"
11#include "RHIResources.h"
12
14{
15public:
16
22
23 MTL::SamplerState* State;
24#if !PLATFORM_MAC
25 MTL::SamplerState* NoAnisoState;
26#endif
27#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
28 FRHIDescriptorHandle BindlessHandle;
29
30 // TODO: Do we need to support NoAnisoState too? (or is it some leftover we don't care about anymore?)
31 virtual FRHIDescriptorHandle GetBindlessHandle() const override final { return BindlessHandle; }
32#endif
33
35};
36
51
69
71{
72public:
73
79
80 virtual bool GetInitializer(FBlendStateInitializerRHI& Init) override final;
81
83 {
84 MTL::RenderPipelineColorAttachmentDescriptor* BlendState;
86 };
90
91private:
92 // this tracks blend settings (in a bit flag) into a unique key that uses few bits, for PipelineState MRT setup
93 static TMap<uint32, uint8> BlendSettingsToUniqueKeyMap;
94 static uint8 NextKey;
95 static FCriticalSection Mutex;
96};
97
98template<>
103template<>
108template<>
113template<>
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
void Init()
Definition LockFreeList.h:4
@ MaxSimultaneousRenderTargets
Definition RHIDefinitions.h:287
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition RHI.h:403
Definition MetalState.h:71
virtual bool GetInitializer(FBlendStateInitializerRHI &Init) override final
Definition MetalState.cpp:509
bool bUseIndependentRenderTargetBlendStates
Definition MetalState.h:88
bool bUseAlphaToCoverage
Definition MetalState.h:89
~FMetalBlendState()
Definition MetalState.cpp:505
FBlendPerMRT RenderTargetStates[MaxSimultaneousRenderTargets]
Definition MetalState.h:87
Definition MetalState.h:53
bool bIsStencilWriteEnabled
Definition MetalState.h:67
~FMetalDepthStencilState()
Definition MetalState.cpp:422
bool bIsDepthWriteEnabled
Definition MetalState.h:66
MTL::DepthStencilState * State
Definition MetalState.h:65
virtual bool GetInitializer(FDepthStencilStateInitializerRHI &Init) override final
Definition MetalState.cpp:426
FDepthStencilStateInitializerRHI Initializer
Definition MetalState.h:64
Definition MetalDevice.h:102
Definition MetalState.h:38
virtual bool GetInitializer(FRasterizerStateInitializerRHI &Init) override final
Definition MetalState.cpp:339
~FMetalRasterizerState()
Definition MetalState.cpp:334
FRasterizerStateInitializerRHI State
Definition MetalState.h:49
Definition MetalState.h:14
~FMetalSamplerState()
Definition MetalState.cpp:319
FMetalDevice & Device
Definition MetalState.h:34
MTL::SamplerState * NoAnisoState
Definition MetalState.h:25
MTL::SamplerState * State
Definition MetalState.h:23
Definition RHIResources.h:696
Definition RHIResources.h:686
Definition RHIResources.h:679
Definition RHIResources.h:671
virtual FRHIDescriptorHandle GetBindlessHandle() const
Definition RHIResources.h:675
Definition UnrealString.h.inl:34
Definition MetalState.h:83
uint8 BlendStateKey
Definition MetalState.h:85
MTL::RenderPipelineColorAttachmentDescriptor * BlendState
Definition MetalState.h:84
Definition RHIDefinitions.h:1401
Definition RHI.h:278
Definition RHI.h:232
FMetalBlendState TConcreteType
Definition MetalState.h:116
FMetalDepthStencilState TConcreteType
Definition MetalState.h:111
FMetalRasterizerState TConcreteType
Definition MetalState.h:106
FMetalSamplerState TConcreteType
Definition MetalState.h:101
Definition MetalRHIPrivate.h:204