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

Go to the source code of this file.

Classes

class  FDebugName
 
struct  FRHIResourceTableEntry
 
struct  FRHIDescriptorHandle
 
struct  FScreenResolutionRHI
 
struct  FShaderCodeValidationStride
 
struct  FShaderCodeValidationType
 
struct  FShaderCodeValidationUBSize
 

Namespaces

namespace  ERHIShadingPath
 

Macros

#define USE_STATIC_SHADER_PLATFORM_ENUMS   0
 
#define SHADER_PARAMETER_STRUCT_ALIGNMENT   16
 
#define SHADER_PARAMETER_ARRAY_ELEMENT_ALIGNMENT   16
 
#define RHI_RAW_VIEW_ALIGNMENT   16
 
#define SHADER_PARAMETER_POINTER_ALIGNMENT   sizeof(uint64)
 
#define PLATFORM_DISPATCH_INDIRECT_ARGUMENT_BOUNDARY_SIZE   0
 
#define USE_STATIC_SHADER_PLATFORM_INFO   0
 
#define RHI_USE_RESOURCE_DEBUG_NAME   1
 
#define RHI_USE_SYNC_POINT_DEBUG_NAME   1
 
#define RHI_RAYTRACING   0
 
#define RHI_NEW_GPU_PROFILER   1
 
#define GPUPROFILERTRACE_ENABLED   0
 
#define HAS_GPU_STATS   ((STATS || CSV_PROFILER_STATS || GPUPROFILERTRACE_ENABLED) && (!UE_BUILD_SHIPPING))
 
#define BUF_None   EBufferUsageFlags::None
 
#define BUF_Static   EBufferUsageFlags::Static
 
#define BUF_Dynamic   EBufferUsageFlags::Dynamic
 
#define BUF_Volatile   EBufferUsageFlags::Volatile
 
#define BUF_UnorderedAccess   EBufferUsageFlags::UnorderedAccess
 
#define BUF_ByteAddressBuffer   EBufferUsageFlags::ByteAddressBuffer
 
#define BUF_SourceCopy   EBufferUsageFlags::SourceCopy
 
#define BUF_StreamOutput   EBufferUsageFlags::StreamOutput
 
#define BUF_DrawIndirect   EBufferUsageFlags::DrawIndirect
 
#define BUF_ShaderResource   EBufferUsageFlags::ShaderResource
 
#define BUF_KeepCPUAccessible   EBufferUsageFlags::KeepCPUAccessible
 
#define BUF_FastVRAM   EBufferUsageFlags::FastVRAM
 
#define BUF_Transient   EBufferUsageFlags::Transient
 
#define BUF_Shared   EBufferUsageFlags::Shared
 
#define BUF_AccelerationStructure   EBufferUsageFlags::AccelerationStructure
 
#define BUF_RayTracingScratch   EBufferUsageFlags::RayTracingScratch
 
#define BUF_VertexBuffer   EBufferUsageFlags::VertexBuffer
 
#define BUF_IndexBuffer   EBufferUsageFlags::IndexBuffer
 
#define BUF_StructuredBuffer   EBufferUsageFlags::StructuredBuffer
 
#define BUF_AnyDynamic   EBufferUsageFlags::AnyDynamic
 
#define BUF_MultiGPUAllocate   EBufferUsageFlags::MultiGPUAllocate
 
#define BUF_MultiGPUGraphIgnore   EBufferUsageFlags::MultiGPUGraphIgnore
 
#define BUF_NullResource   EBufferUsageFlags::NullResource
 
#define BUF_UniformBuffer   EBufferUsageFlags::UniformBuffer
 
#define BUF_ReservedResource   EBufferUsageFlags::ReservedResource
 
#define TexCreate_None   ETextureCreateFlags::None
 
#define TexCreate_RenderTargetable   ETextureCreateFlags::RenderTargetable
 
#define TexCreate_ResolveTargetable   ETextureCreateFlags::ResolveTargetable
 
#define TexCreate_DepthStencilTargetable   ETextureCreateFlags::DepthStencilTargetable
 
#define TexCreate_ShaderResource   ETextureCreateFlags::ShaderResource
 
#define TexCreate_SRGB   ETextureCreateFlags::SRGB
 
#define TexCreate_CPUWritable   ETextureCreateFlags::CPUWritable
 
#define TexCreate_NoTiling   ETextureCreateFlags::NoTiling
 
#define TexCreate_VideoDecode   ETextureCreateFlags::VideoDecode
 
#define TexCreate_Dynamic   ETextureCreateFlags::Dynamic
 
#define TexCreate_InputAttachmentRead   ETextureCreateFlags::InputAttachmentRead
 
#define TexCreate_Foveation   ETextureCreateFlags::Foveation
 
#define TexCreate_3DTiling   ETextureCreateFlags::Tiling3D
 
#define TexCreate_Memoryless   ETextureCreateFlags::Memoryless
 
#define TexCreate_GenerateMipCapable   ETextureCreateFlags::GenerateMipCapable
 
#define TexCreate_FastVRAMPartialAlloc   ETextureCreateFlags::FastVRAMPartialAlloc
 
#define TexCreate_DisableSRVCreation   ETextureCreateFlags::DisableSRVCreation
 
#define TexCreate_DisableDCC   ETextureCreateFlags::DisableDCC
 
#define TexCreate_UAV   ETextureCreateFlags::UAV
 
#define TexCreate_Presentable   ETextureCreateFlags::Presentable
 
#define TexCreate_CPUReadback   ETextureCreateFlags::CPUReadback
 
#define TexCreate_OfflineProcessed   ETextureCreateFlags::OfflineProcessed
 
#define TexCreate_FastVRAM   ETextureCreateFlags::FastVRAM
 
#define TexCreate_HideInVisualizeTexture   ETextureCreateFlags::HideInVisualizeTexture
 
#define TexCreate_Virtual   ETextureCreateFlags::Virtual
 
#define TexCreate_TargetArraySlicesIndependently   ETextureCreateFlags::TargetArraySlicesIndependently
 
#define TexCreate_Shared   ETextureCreateFlags::Shared
 
#define TexCreate_NoFastClear   ETextureCreateFlags::NoFastClear
 
#define TexCreate_DepthStencilResolveTarget   ETextureCreateFlags::DepthStencilResolveTarget
 
#define TexCreate_Streamable   ETextureCreateFlags::Streamable
 
#define TexCreate_NoFastClearFinalize   ETextureCreateFlags::NoFastClearFinalize
 
#define TexCreate_ReduceMemoryWithTilingMode   ETextureCreateFlags::ReduceMemoryWithTilingMode
 
#define TexCreate_Transient   ETextureCreateFlags::Transient
 
#define TexCreate_AtomicCompatible   ETextureCreateFlags::AtomicCompatible
 
#define TexCreate_External   ETextureCreateFlags::External
 
#define TexCreate_MultiGPUGraphIgnore   ETextureCreateFlags::MultiGPUGraphIgnore
 
#define TexCreate_ReservedResource   ETextureCreateFlags::ReservedResource
 
#define TexCreate_ImmediateCommit   ETextureCreateFlags::ImmediateCommit
 
#define TexCreate_Invalid   ETextureCreateFlags::Invalid
 
#define TexCreate_LossyCompression   ETextureCreateFlags::LossyCompression
 
#define TexCreate_LossyCompressionLowBitrate   ETextureCreateFlags::LossyCompressionLowBitrate
 
#define GEOMETRY_SHADER(GeometryShader)   nullptr
 

Typedefs

using FUniformBufferStaticSlot = uint8
 

Enumerations

enum class  ERHIInterfaceType {
  Hidden , Null , D3D11 , D3D12 ,
  Vulkan , Metal , Agx , OpenGL
}
 
enum class  ERHIFeatureSupport : uint8 {
  Unsupported , RuntimeDependent , RuntimeGuaranteed , Num ,
  NumBits = 2
}
 
enum class  ERHIStaticShaderBindingLayoutSupport : uint8 { Unsupported , RayTracingOnly , AllShaderTypes , NumBits = 2 }
 
enum  EShaderFrequency : uint8 {
  SF_Vertex = 0 , SF_Mesh = 1 , SF_Amplification = 2 , SF_Pixel = 3 ,
  SF_Geometry = 4 , SF_Compute = 5 , SF_RayGen = 6 , SF_RayMiss = 7 ,
  SF_RayHitGroup = 8 , SF_RayCallable = 9 , SF_WorkGraphRoot = 10 , SF_WorkGraphComputeNode = 11 ,
  SF_NumFrequencies = 12 , SF_NumGraphicsFrequencies = 5 , SF_NumStandardFrequencies = 6 , SF_NumBits = 4
}
 
enum  ERenderQueryType { RQT_Undefined , RQT_Occlusion , RQT_AbsoluteTime }
 
enum  { MAX_TEXTURE_MIP_COUNT = 15 }
 
enum  { MAX_MESH_LOD_COUNT = 8 }
 
enum  { MaxVertexElementCount = 17 , MaxVertexElementCount_NumBits = 5 }
 
enum  { ShaderArrayElementAlignBytes = 16 }
 
enum  { MaxSimultaneousRenderTargets = 8 , MaxSimultaneousRenderTargets_NumBits = 3 }
 
enum  { UE_DEPRECATED =(5.6, "Do not use MaxSimultaneousUAVs, this is now device reported by GRHIGlobals.MaxSimultaneousUAVs") = 8 }
 
enum class  ERHIZBuffer { FarPlane = 0 , NearPlane = 1 , IsInverted = (int32)((int32)ERHIZBuffer::FarPlane < (int32)ERHIZBuffer::NearPlane) }
 
enum  ERHIShadingPath::Type : int { ERHIShadingPath::Deferred , ERHIShadingPath::Forward , ERHIShadingPath::Mobile , ERHIShadingPath::Num }
 
enum  ESamplerFilter {
  SF_Point , SF_Bilinear , SF_Trilinear , SF_AnisotropicPoint ,
  SF_AnisotropicLinear , ESamplerFilter_Num , ESamplerFilter_NumBits = 3
}
 
enum  ESamplerAddressMode {
  AM_Wrap , AM_Clamp , AM_Mirror , AM_Border ,
  ESamplerAddressMode_Num , ESamplerAddressMode_NumBits = 2
}
 
enum  ESamplerCompareFunction { SCF_Never , SCF_Less }
 
enum  ERasterizerFillMode {
  FM_Point , FM_Wireframe , FM_Solid , ERasterizerFillMode_Num ,
  ERasterizerFillMode_NumBits = 2
}
 
enum  ERasterizerCullMode {
  CM_None , CM_CW , CM_CCW , ERasterizerCullMode_Num ,
  ERasterizerCullMode_NumBits = 2
}
 
enum class  ERasterizerDepthClipMode : uint8 { DepthClip , DepthClamp , Num , NumBits = 1 }
 
enum  EColorWriteMask {
  CW_RED = 0x01 , CW_GREEN = 0x02 , CW_BLUE = 0x04 , CW_ALPHA = 0x08 ,
  CW_NONE = 0 , CW_RGB = CW_RED | CW_GREEN | CW_BLUE , CW_RGBA = CW_RED | CW_GREEN | CW_BLUE | CW_ALPHA , CW_RG = CW_RED | CW_GREEN ,
  CW_BA = CW_BLUE | CW_ALPHA , EColorWriteMask_NumBits = 4
}
 
enum  ECompareFunction {
  CF_Less , CF_LessEqual , CF_Greater , CF_GreaterEqual ,
  CF_Equal , CF_NotEqual , CF_Never , CF_Always ,
  ECompareFunction_Num , ECompareFunction_NumBits = 3 , CF_DepthNearOrEqual = (((int32)ERHIZBuffer::IsInverted != 0) ? CF_GreaterEqual : CF_LessEqual) , CF_DepthNear = (((int32)ERHIZBuffer::IsInverted != 0) ? CF_Greater : CF_Less) ,
  CF_DepthFartherOrEqual = (((int32)ERHIZBuffer::IsInverted != 0) ? CF_LessEqual : CF_GreaterEqual) , CF_DepthFarther = (((int32)ERHIZBuffer::IsInverted != 0) ? CF_Less : CF_Greater)
}
 
enum  EStencilMask {
  SM_Default , SM_255 , SM_1 , SM_2 ,
  SM_4 , SM_8 , SM_16 , SM_32 ,
  SM_64 , SM_128 , SM_Count
}
 
enum  EStencilOp {
  SO_Keep , SO_Zero , SO_Replace , SO_SaturatedIncrement ,
  SO_SaturatedDecrement , SO_Invert , SO_Increment , SO_Decrement ,
  EStencilOp_Num , EStencilOp_NumBits = 3
}
 
enum  EBlendOperation {
  BO_Add , BO_Subtract , BO_Min , BO_Max ,
  BO_ReverseSubtract , EBlendOperation_Num , EBlendOperation_NumBits = 3
}
 
enum  EBlendFactor {
  BF_Zero , BF_One , BF_SourceColor , BF_InverseSourceColor ,
  BF_SourceAlpha , BF_InverseSourceAlpha , BF_DestAlpha , BF_InverseDestAlpha ,
  BF_DestColor , BF_InverseDestColor , BF_ConstantBlendFactor , BF_InverseConstantBlendFactor ,
  BF_Source1Color , BF_InverseSource1Color , BF_Source1Alpha , BF_InverseSource1Alpha ,
  EBlendFactor_Num , EBlendFactor_NumBits = 4
}
 
enum  EVertexElementType {
  VET_None , VET_Float1 , VET_Float2 , VET_Float3 ,
  VET_Float4 , VET_PackedNormal , VET_UByte4 , VET_UByte4N ,
  VET_Color , VET_Short2 , VET_Short4 , VET_Short2N ,
  VET_Half2 , VET_Half4 , VET_Short4N , VET_UShort2 ,
  VET_UShort4 , VET_UShort2N , VET_UShort4N , VET_URGB10A2N ,
  VET_UInt , VET_MAX , VET_NumBits = 5
}
 
enum  ECubeFace : uint32 {
  CubeFace_PosX = 0 , CubeFace_NegX , CubeFace_PosY , CubeFace_NegY ,
  CubeFace_PosZ , CubeFace_NegZ , CubeFace_MAX
}
 
enum  EUniformBufferUsage { UniformBuffer_SingleDraw = 0 , UniformBuffer_SingleFrame , UniformBuffer_MultiFrame }
 
enum class  EUniformBufferValidation { None , ValidateResources }
 
enum class  EShaderCodeResourceBindingType : uint8 {
  Invalid , SamplerState , Texture2D , Texture2DArray ,
  Texture2DMS , Texture3D , TextureCube , TextureCubeArray ,
  TextureMetadata , Buffer , StructuredBuffer , ByteAddressBuffer ,
  RaytracingAccelerationStructure , RWTexture2D , RWTexture2DArray , RWTexture3D ,
  RWTextureCube , RWTextureMetadata , RWBuffer , RWStructuredBuffer ,
  RWByteAddressBuffer , RasterizerOrderedTexture2D , ResourceCollection , MAX
}
 
enum  EUniformBufferBaseType : uint8 {
  UBMT_INVALID , UBMT_BOOL , UBMT_INT32 , UBMT_UINT32 ,
  UBMT_FLOAT32 , UBMT_TEXTURE , UBMT_SRV , UBMT_UAV ,
  UBMT_SAMPLER , UBMT_RDG_TEXTURE , UBMT_RDG_TEXTURE_ACCESS , UBMT_RDG_TEXTURE_ACCESS_ARRAY ,
  UBMT_RDG_TEXTURE_SRV , UBMT_RDG_TEXTURE_NON_PIXEL_SRV , UBMT_RDG_TEXTURE_UAV , UBMT_RDG_BUFFER_ACCESS ,
  UBMT_RDG_BUFFER_ACCESS_ARRAY , UBMT_RDG_BUFFER_SRV , UBMT_RDG_BUFFER_UAV , UBMT_RDG_UNIFORM_BUFFER ,
  UBMT_NESTED_STRUCT , UBMT_INCLUDED_STRUCT , UBMT_REFERENCED_STRUCT , UBMT_RENDER_TARGET_BINDING_SLOTS ,
  UBMT_RESOURCE_COLLECTION , EUniformBufferBaseType_Num , EUniformBufferBaseType_NumBits = 5
}
 
enum class  EUniformBufferBindingFlags : uint8 { Shader = 1 << 0 , Static = 1 << 1 , StaticAndShader = Static | Shader }
 
enum class  ERHIUniformBufferFlags : uint8 {
  None = 0 , NoEmulatedUniformBuffer = 1 << 0 , NeedsReflectedMembers = 1 << 1 , HasNonGraphOutputs = 1 << 2 ,
  UniformView = 1 << 3
}
 
enum  { MAX_UNIFORM_BUFFER_STATIC_SLOTS = 255 }
 
enum  EResourceLockMode { RLM_ReadOnly , RLM_WriteOnly , RLM_WriteOnly_NoOverwrite , RLM_Num }
 
enum  ERangeCompressionMode { RCM_UNorm , RCM_SNorm , RCM_MinMaxNorm , RCM_MinMax }
 
enum class  EPrimitiveTopologyType : uint8 {
  Triangle , Patch , Line , Point ,
  Num , NumBits = 2
}
 
enum  EPrimitiveType {
  PT_TriangleList , PT_TriangleStrip , PT_LineList , PT_QuadList ,
  PT_PointList , PT_RectList , PT_Num , PT_NumBits = 3
}
 
enum  EVRSAxisShadingRate : uint8 { VRSASR_1X = 0x0 , VRSASR_2X = 0x1 , VRSASR_4X = 0x2 }
 
enum  EVRSShadingRate : uint8 {
  VRSSR_1x1 = (VRSASR_1X << 2) + VRSASR_1X , VRSSR_1x2 = (VRSASR_1X << 2) + VRSASR_2X , VRSSR_2x1 = (VRSASR_2X << 2) + VRSASR_1X , VRSSR_2x2 = (VRSASR_2X << 2) + VRSASR_2X ,
  VRSSR_2x4 = (VRSASR_2X << 2) + VRSASR_4X , VRSSR_4x2 = (VRSASR_4X << 2) + VRSASR_2X , VRSSR_4x4 = (VRSASR_4X << 2) + VRSASR_4X , VRSSR_Last = VRSSR_4x4
}
 
enum  EVRSRateCombiner : uint8 {
  VRSRB_Passthrough , VRSRB_Override , VRSRB_Min , VRSRB_Max ,
  VRSRB_Sum
}
 
enum  EVRSImageDataType : uint8 { VRSImage_NotSupported , VRSImage_Palette , VRSImage_Fractional }
 
enum class  EBufferUsageFlags : uint32 {
  None = 0 , Static = 1 << 0 , Dynamic = 1 << 1 , Volatile = 1 << 2 ,
  UnorderedAccess = 1 << 3 , ByteAddressBuffer = 1 << 4 , SourceCopy = 1 << 5 , UNUSED_BIT_6 = 1 << 6 ,
  DrawIndirect = 1 << 7 , ShaderResource = 1 << 8 , KeepCPUAccessible = 1 << 9 , FastVRAM = 1 << 10 ,
  NNE = 1 << 11 , Shared = 1 << 12 , AccelerationStructure = 1 << 13 , VertexBuffer = 1 << 14 ,
  IndexBuffer = 1 << 15 , StructuredBuffer = 1 << 16 , MultiGPUAllocate = 1 << 17 , MultiGPUGraphIgnore = 1 << 18 ,
  RayTracingScratch = (1 << 19) | UnorderedAccess , NullResource = 1 << 20 , UniformBuffer = 1 << 21 , ReservedResource = 1 << 22 ,
  AnyDynamic = (Dynamic | Volatile)
}
 
enum class  EGpuVendorId : uint32 {
  Unknown = 0xffffffff , NotQueried = 0 , Amd = 0x1002 , ImgTec = 0x1010 ,
  Nvidia = 0x10DE , Arm = 0x13B5 , Broadcom = 0x14E4 , Qualcomm = 0x5143 ,
  Intel = 0x8086 , Apple = 0x106B , Vivante = 0x7a05 , VeriSilicon = 0x1EB1 ,
  SamsungAMD = 0x144D , Microsoft = 0x1414 , Kazan = 0x10003 , Codeplay = 0x10004 ,
  Mesa = 0x10005
}
 
enum  ERHIResourceType : uint8 {
  RRT_None , RRT_SamplerState , RRT_RasterizerState , RRT_DepthStencilState ,
  RRT_BlendState , RRT_VertexDeclaration , RRT_VertexShader , RRT_MeshShader ,
  RRT_AmplificationShader , RRT_PixelShader , RRT_GeometryShader , RRT_RayTracingShader ,
  RRT_ComputeShader , RRT_GraphicsPipelineState , RRT_ComputePipelineState , RRT_RayTracingPipelineState ,
  RRT_BoundShaderState , RRT_UniformBufferLayout , RRT_UniformBuffer , RRT_Buffer ,
  RRT_Texture , UE_DEPRECATED =(5.6, "Do not use MaxSimultaneousUAVs, this is now device reported by GRHIGlobals.MaxSimultaneousUAVs") = 8 , UE_DEPRECATED =(5.6, "Do not use MaxSimultaneousUAVs, this is now device reported by GRHIGlobals.MaxSimultaneousUAVs") = 8 , UE_DEPRECATED =(5.6, "Do not use MaxSimultaneousUAVs, this is now device reported by GRHIGlobals.MaxSimultaneousUAVs") = 8 ,
  UE_DEPRECATED =(5.6, "Do not use MaxSimultaneousUAVs, this is now device reported by GRHIGlobals.MaxSimultaneousUAVs") = 8 , RRT_TextureReference , RRT_TimestampCalibrationQuery , RRT_GPUFence ,
  RRT_RenderQuery , RRT_RenderQueryPool , RRT_Viewport , RRT_UnorderedAccessView ,
  RRT_ShaderResourceView , RRT_RayTracingAccelerationStructure , RRT_RayTracingShaderBindingTable , RRT_StagingBuffer ,
  RRT_CustomPresent , RRT_ShaderLibrary , RRT_ShaderBundle , RRT_WorkGraphShader ,
  RRT_WorkGraphPipelineState , RRT_StreamSourceSlot , RRT_ResourceCollection , RRT_Num
}
 
enum class  ETextureDimension : uint8 {
  Texture2D , Texture2DArray , Texture3D , TextureCube ,
  TextureCubeArray
}
 
enum class  ETextureCreateFlags : uint64 {
  None = 0 , RenderTargetable = 1ull << 0 , ResolveTargetable = 1ull << 1 , DepthStencilTargetable = 1ull << 2 ,
  ShaderResource = 1ull << 3 , SRGB = 1ull << 4 , CPUWritable = 1ull << 5 , NoTiling = 1ull << 6 ,
  VideoDecode = 1ull << 7 , Dynamic = 1ull << 8 , InputAttachmentRead = 1ull << 9 , Foveation = 1ull << 10 ,
  Tiling3D = 1ull << 11 , Memoryless = 1ull << 12 , FastVRAMPartialAlloc = 1ull << 14 , DisableSRVCreation = 1ull << 15 ,
  DisableDCC = 1ull << 16 , UAV = 1ull << 17 , Presentable = 1ull << 18 , CPUReadback = 1ull << 19 ,
  OfflineProcessed = 1ull << 20 , FastVRAM = 1ull << 21 , HideInVisualizeTexture = 1ull << 22 , Virtual = 1ull << 23 ,
  TargetArraySlicesIndependently = 1ull << 24 , Shared = 1ull << 25 , NoFastClear = 1ull << 26 , DepthStencilResolveTarget = 1ull << 27 ,
  Streamable = 1ull << 28 , NoFastClearFinalize = 1ull << 29 , Atomic64Compatible = 1ull << 30 , ReduceMemoryWithTilingMode = 1ull << 31 ,
  AtomicCompatible = 1ull << 33 , External = 1ull << 34 , MultiGPUGraphIgnore = 1ull << 35 , ReservedResource = 1ull << 37 ,
  ImmediateCommit = 1ull << 38 , ForceIntoNonStreamingMemoryTracking = 1ull << 39 , Invalid = 1ull << 40 , LossyCompression = 1ull << 41 ,
  LossyCompressionLowBitrate = 1ull << 42
}
 
enum  EAsyncComputePriority { AsyncComputePriority_Default = 0 , AsyncComputePriority_High }
 
enum  ETextureReallocationStatus { TexRealloc_Succeeded = 0 , TexRealloc_Failed , TexRealloc_InProgress }
 
enum class  ERenderTargetLoadAction : uint8 {
  ENoAction , ELoad , EClear , Num ,
  NumBits = 2
}
 
enum class  ERenderTargetStoreAction : uint8 {
  ENoAction , EStore , EMultisampleResolve , Num ,
  NumBits = 2
}
 
enum class  ESimpleRenderTargetMode {
  EExistingColorAndDepth , EUninitializedColorAndDepth , EUninitializedColorExistingDepth , EUninitializedColorClearDepth ,
  EClearColorExistingDepth , EClearColorAndDepth , EExistingContents_NoDepthStore , EExistingColorAndClearDepth ,
  EExistingColorAndDepthAndClearStencil
}
 
enum class  EClearDepthStencil { Depth , Stencil , DepthStencil }
 
enum class  EAsyncComputeBudget {
  ELeast_0 , EGfxHeavy_1 , EBalanced_2 , EComputeHeavy_3 ,
  EAll_4
}
 
enum class  ESyncComputeBudget { Default , Balanced , ComputeHeavy }
 
enum class  ERHIDescriptorHeapType : uint8 {
  Standard , Sampler , RenderTarget , DepthStencil ,
  Count , Invalid = MAX_uint8
}
 
enum class  ERHIDescriptorType : uint8 {
  BufferSRV , BufferUAV , TypedBufferSRV , TypedBufferUAV ,
  TextureSRV , TextureUAV , CBV , Sampler ,
  AccelerationStructure , Invalid
}
 
enum class  ERHIDescriptorTypeMask : uint16 {
  None = 0 , BufferSRV = (1 << static_cast<int32>(ERHIDescriptorType::BufferSRV)) , BufferUAV = (1 << static_cast<int32>(ERHIDescriptorType::BufferUAV)) , TypedBufferSRV = (1 << static_cast<int32>(ERHIDescriptorType::TypedBufferSRV)) ,
  TypedBufferUAV = (1 << static_cast<int32>(ERHIDescriptorType::TypedBufferUAV)) , TextureSRV = (1 << static_cast<int32>(ERHIDescriptorType::TextureSRV)) , TextureUAV = (1 << static_cast<int32>(ERHIDescriptorType::TextureUAV)) , CBV = (1 << static_cast<int32>(ERHIDescriptorType::CBV)) ,
  Sampler = (1 << static_cast<int32>(ERHIDescriptorType::Sampler)) , AccelerationStructure = (1 << static_cast<int32>(ERHIDescriptorType::AccelerationStructure)) , SRV = (BufferSRV | TypedBufferSRV | TextureSRV) , UAV = (BufferUAV | TypedBufferUAV | TextureUAV) ,
  Standard = (SRV | UAV | CBV | AccelerationStructure)
}
 
enum class  ERHIBindlessConfiguration { Disabled , RayTracing , Minimal , All }
 
enum class  EColorSpaceAndEOTF {
  EUnknown = 0 , EColorSpace_Rec709 = 1 , EColorSpace_Rec2020 = 2 , EColorSpace_DCIP3 = 3 ,
  EEColorSpace_MASK = 0xf , EEOTF_Linear = 1 << 4 , EEOTF_sRGB = 2 << 4 , EEOTF_PQ = 3 << 4 ,
  EEOTF_MASK = 0xf << 4 , ERec709_sRGB = EColorSpace_Rec709 | EEOTF_sRGB , ERec709_Linear = EColorSpace_Rec709 | EEOTF_Linear , ERec2020_PQ = EColorSpace_Rec2020 | EEOTF_PQ ,
  ERec2020_Linear = EColorSpace_Rec2020 | EEOTF_Linear , EDCIP3_PQ = EColorSpace_DCIP3 | EEOTF_PQ , EDCIP3_Linear = EColorSpace_DCIP3 | EEOTF_Linear
}
 
enum class  ERHITransitionCreateFlags {
  None = 0 , NoFence = 1 << 0 , NoSplit = 1 << 1 , AllowDuringRenderPass = 1 << 2 ,
  AllowDecayPipelines = 1 << 3
}
 
enum class  EResourceTransitionFlags : uint8 {
  None = 0 , MaintainCompression = 1 << 0 , IgnoreAfterState = 1 << 1 , Last = IgnoreAfterState ,
  Mask = (Last << 1) - 1
}
 
enum class  ERequestedGPUCrash : uint8 {
  None = 0 , Type_Hang = 1 << 0 , Type_PageFault = 1 << 1 , Type_PlatformBreak = 1 << 2 ,
  Type_Assert = 1 << 3 , Type_CmdListCorruption = 1 << 4 , Queue_Direct = 1 << 5 , Queue_Compute = 1 << 6
}
 

Functions

RHI_API DECLARE_LOG_CATEGORY_EXTERN (LogRHI, Log, VeryVerbose)
 
bool IsValidGraphicsFrequency (EShaderFrequency InShaderFrequency)
 
bool IsComputeShaderFrequency (EShaderFrequency ShaderFrequency)
 
bool IsResourceBindingTypeSRV (EShaderCodeResourceBindingType Type)
 
 ENUM_CLASS_FLAGS (EUniformBufferBindingFlags)
 
 ENUM_CLASS_FLAGS (ERHIUniformBufferFlags)
 
bool IsUniformBufferStaticSlotValid (const FUniformBufferStaticSlot Slot)
 
 ENUM_CLASS_FLAGS (EBufferUsageFlags)
 
 ENUM_CLASS_FLAGS (ETextureCreateFlags)
 
 ENUM_CLASS_FLAGS (ERHIDescriptorTypeMask)
 
constexpr ERHIDescriptorTypeMask RHIDescriptorTypeMaskFromType (ERHIDescriptorType InType)
 
bool IsBindlessDisabled (ERHIBindlessConfiguration Configuration)
 
bool IsBindlessEnabledForOnlyRayTracing (ERHIBindlessConfiguration Configuration)
 
bool IsBindlessEnabledForRayTracing (ERHIBindlessConfiguration Configuration)
 
bool IsBindlessEnabledForAnyGraphics (ERHIBindlessConfiguration Configuration)
 
bool IsBindlessFullyEnabled (ERHIBindlessConfiguration Configuration)
 
 ENUM_CLASS_FLAGS (ERHITransitionCreateFlags)
 
 ENUM_CLASS_FLAGS (EResourceTransitionFlags)
 
 ENUM_CLASS_FLAGS (ERequestedGPUCrash)
 
bool IsRDGTextureReferenceShaderParameterType (EUniformBufferBaseType BaseType)
 
bool IsRDGBufferReferenceShaderParameterType (EUniformBufferBaseType BaseType)
 
bool IsRDGResourceAccessType (EUniformBufferBaseType BaseType)
 
bool IsRDGResourceReferenceShaderParameterType (EUniformBufferBaseType BaseType)
 
bool IsShaderParameterTypeReadOnlyRHIResource (EUniformBufferBaseType BaseType)
 
bool IsShaderParameterTypeRHIResource (EUniformBufferBaseType BaseType)
 
bool IsShaderParameterTypeForUniformBufferLayout (EUniformBufferBaseType BaseType)
 
bool IsShaderParameterTypeIgnoredByRHI (EUniformBufferBaseType BaseType)
 
EGpuVendorId RHIConvertToGpuVendorId (uint32 VendorId)
 
bool IsGeometryPipelineShaderFrequency (EShaderFrequency Frequency)
 
bool IsRayTracingShaderFrequency (EShaderFrequency Frequency)
 
bool IsWorkGraphShaderFrequency (EShaderFrequency Frequency)
 
ERHIResourceType GetRHIResourceType (ETextureDimension)
 

Macro Definition Documentation

◆ BUF_AccelerationStructure

#define BUF_AccelerationStructure   EBufferUsageFlags::AccelerationStructure

◆ BUF_AnyDynamic

#define BUF_AnyDynamic   EBufferUsageFlags::AnyDynamic

◆ BUF_ByteAddressBuffer

#define BUF_ByteAddressBuffer   EBufferUsageFlags::ByteAddressBuffer

◆ BUF_DrawIndirect

#define BUF_DrawIndirect   EBufferUsageFlags::DrawIndirect

◆ BUF_Dynamic

◆ BUF_FastVRAM

#define BUF_FastVRAM   EBufferUsageFlags::FastVRAM

◆ BUF_IndexBuffer

#define BUF_IndexBuffer   EBufferUsageFlags::IndexBuffer

◆ BUF_KeepCPUAccessible

#define BUF_KeepCPUAccessible   EBufferUsageFlags::KeepCPUAccessible

◆ BUF_MultiGPUAllocate

#define BUF_MultiGPUAllocate   EBufferUsageFlags::MultiGPUAllocate

◆ BUF_MultiGPUGraphIgnore

#define BUF_MultiGPUGraphIgnore   EBufferUsageFlags::MultiGPUGraphIgnore

◆ BUF_None

◆ BUF_NullResource

#define BUF_NullResource   EBufferUsageFlags::NullResource

◆ BUF_RayTracingScratch

#define BUF_RayTracingScratch   EBufferUsageFlags::RayTracingScratch

◆ BUF_ReservedResource

#define BUF_ReservedResource   EBufferUsageFlags::ReservedResource

◆ BUF_ShaderResource

#define BUF_ShaderResource   EBufferUsageFlags::ShaderResource

◆ BUF_Shared

◆ BUF_SourceCopy

#define BUF_SourceCopy   EBufferUsageFlags::SourceCopy

◆ BUF_Static

◆ BUF_StreamOutput

#define BUF_StreamOutput   EBufferUsageFlags::StreamOutput

◆ BUF_StructuredBuffer

#define BUF_StructuredBuffer   EBufferUsageFlags::StructuredBuffer

◆ BUF_Transient

#define BUF_Transient   EBufferUsageFlags::Transient

◆ BUF_UniformBuffer

#define BUF_UniformBuffer   EBufferUsageFlags::UniformBuffer

◆ BUF_UnorderedAccess

#define BUF_UnorderedAccess   EBufferUsageFlags::UnorderedAccess

◆ BUF_VertexBuffer

#define BUF_VertexBuffer   EBufferUsageFlags::VertexBuffer

◆ BUF_Volatile

#define BUF_Volatile   EBufferUsageFlags::Volatile

◆ GEOMETRY_SHADER

#define GEOMETRY_SHADER (   GeometryShader)    nullptr

◆ GPUPROFILERTRACE_ENABLED

#define GPUPROFILERTRACE_ENABLED   0

◆ HAS_GPU_STATS

◆ PLATFORM_DISPATCH_INDIRECT_ARGUMENT_BOUNDARY_SIZE

#define PLATFORM_DISPATCH_INDIRECT_ARGUMENT_BOUNDARY_SIZE   0

◆ RHI_NEW_GPU_PROFILER

#define RHI_NEW_GPU_PROFILER   1

◆ RHI_RAW_VIEW_ALIGNMENT

#define RHI_RAW_VIEW_ALIGNMENT   16

The alignment in bytes for rhi buffers.

◆ RHI_RAYTRACING

#define RHI_RAYTRACING   0

◆ RHI_USE_RESOURCE_DEBUG_NAME

#define RHI_USE_RESOURCE_DEBUG_NAME   1

◆ RHI_USE_SYNC_POINT_DEBUG_NAME

#define RHI_USE_SYNC_POINT_DEBUG_NAME   1

◆ SHADER_PARAMETER_ARRAY_ELEMENT_ALIGNMENT

#define SHADER_PARAMETER_ARRAY_ELEMENT_ALIGNMENT   16

The alignment in bytes between elements of array shader parameters.

◆ SHADER_PARAMETER_POINTER_ALIGNMENT

#define SHADER_PARAMETER_POINTER_ALIGNMENT   sizeof(uint64)

◆ SHADER_PARAMETER_STRUCT_ALIGNMENT

#define SHADER_PARAMETER_STRUCT_ALIGNMENT   16

Alignment of the shader parameters struct is required to be 16-byte boundaries.

◆ TexCreate_3DTiling

#define TexCreate_3DTiling   ETextureCreateFlags::Tiling3D

◆ TexCreate_AtomicCompatible

#define TexCreate_AtomicCompatible   ETextureCreateFlags::AtomicCompatible

◆ TexCreate_CPUReadback

#define TexCreate_CPUReadback   ETextureCreateFlags::CPUReadback

◆ TexCreate_CPUWritable

#define TexCreate_CPUWritable   ETextureCreateFlags::CPUWritable

◆ TexCreate_DepthStencilResolveTarget

#define TexCreate_DepthStencilResolveTarget   ETextureCreateFlags::DepthStencilResolveTarget

◆ TexCreate_DepthStencilTargetable

#define TexCreate_DepthStencilTargetable   ETextureCreateFlags::DepthStencilTargetable

◆ TexCreate_DisableDCC

#define TexCreate_DisableDCC   ETextureCreateFlags::DisableDCC

◆ TexCreate_DisableSRVCreation

#define TexCreate_DisableSRVCreation   ETextureCreateFlags::DisableSRVCreation

◆ TexCreate_Dynamic

#define TexCreate_Dynamic   ETextureCreateFlags::Dynamic

◆ TexCreate_External

#define TexCreate_External   ETextureCreateFlags::External

◆ TexCreate_FastVRAM

#define TexCreate_FastVRAM   ETextureCreateFlags::FastVRAM

◆ TexCreate_FastVRAMPartialAlloc

#define TexCreate_FastVRAMPartialAlloc   ETextureCreateFlags::FastVRAMPartialAlloc

◆ TexCreate_Foveation

#define TexCreate_Foveation   ETextureCreateFlags::Foveation

◆ TexCreate_GenerateMipCapable

#define TexCreate_GenerateMipCapable   ETextureCreateFlags::GenerateMipCapable

◆ TexCreate_HideInVisualizeTexture

#define TexCreate_HideInVisualizeTexture   ETextureCreateFlags::HideInVisualizeTexture

◆ TexCreate_ImmediateCommit

#define TexCreate_ImmediateCommit   ETextureCreateFlags::ImmediateCommit

◆ TexCreate_InputAttachmentRead

#define TexCreate_InputAttachmentRead   ETextureCreateFlags::InputAttachmentRead

◆ TexCreate_Invalid

#define TexCreate_Invalid   ETextureCreateFlags::Invalid

◆ TexCreate_LossyCompression

#define TexCreate_LossyCompression   ETextureCreateFlags::LossyCompression

◆ TexCreate_LossyCompressionLowBitrate

#define TexCreate_LossyCompressionLowBitrate   ETextureCreateFlags::LossyCompressionLowBitrate

◆ TexCreate_Memoryless

#define TexCreate_Memoryless   ETextureCreateFlags::Memoryless

◆ TexCreate_MultiGPUGraphIgnore

#define TexCreate_MultiGPUGraphIgnore   ETextureCreateFlags::MultiGPUGraphIgnore

◆ TexCreate_NoFastClear

#define TexCreate_NoFastClear   ETextureCreateFlags::NoFastClear

◆ TexCreate_NoFastClearFinalize

#define TexCreate_NoFastClearFinalize   ETextureCreateFlags::NoFastClearFinalize

◆ TexCreate_None

#define TexCreate_None   ETextureCreateFlags::None

◆ TexCreate_NoTiling

#define TexCreate_NoTiling   ETextureCreateFlags::NoTiling

◆ TexCreate_OfflineProcessed

#define TexCreate_OfflineProcessed   ETextureCreateFlags::OfflineProcessed

◆ TexCreate_Presentable

#define TexCreate_Presentable   ETextureCreateFlags::Presentable

◆ TexCreate_ReduceMemoryWithTilingMode

#define TexCreate_ReduceMemoryWithTilingMode   ETextureCreateFlags::ReduceMemoryWithTilingMode

◆ TexCreate_RenderTargetable

#define TexCreate_RenderTargetable   ETextureCreateFlags::RenderTargetable

◆ TexCreate_ReservedResource

#define TexCreate_ReservedResource   ETextureCreateFlags::ReservedResource

◆ TexCreate_ResolveTargetable

#define TexCreate_ResolveTargetable   ETextureCreateFlags::ResolveTargetable

◆ TexCreate_ShaderResource

#define TexCreate_ShaderResource   ETextureCreateFlags::ShaderResource

◆ TexCreate_Shared

#define TexCreate_Shared   ETextureCreateFlags::Shared

◆ TexCreate_SRGB

#define TexCreate_SRGB   ETextureCreateFlags::SRGB

◆ TexCreate_Streamable

#define TexCreate_Streamable   ETextureCreateFlags::Streamable

◆ TexCreate_TargetArraySlicesIndependently

#define TexCreate_TargetArraySlicesIndependently   ETextureCreateFlags::TargetArraySlicesIndependently

◆ TexCreate_Transient

#define TexCreate_Transient   ETextureCreateFlags::Transient

◆ TexCreate_UAV

#define TexCreate_UAV   ETextureCreateFlags::UAV

◆ TexCreate_VideoDecode

#define TexCreate_VideoDecode   ETextureCreateFlags::VideoDecode

◆ TexCreate_Virtual

#define TexCreate_Virtual   ETextureCreateFlags::Virtual

◆ USE_STATIC_SHADER_PLATFORM_ENUMS

#define USE_STATIC_SHADER_PLATFORM_ENUMS   0

◆ USE_STATIC_SHADER_PLATFORM_INFO

#define USE_STATIC_SHADER_PLATFORM_INFO   0

Typedef Documentation

◆ FUniformBufferStaticSlot

Numerical type used to store the static slot indices.

Enumeration Type Documentation

◆ anonymous enum

Maximum number of miplevels in a texture.

Enumerator
MAX_TEXTURE_MIP_COUNT 

◆ anonymous enum

Maximum number of static/skeletal mesh LODs

Enumerator
MAX_MESH_LOD_COUNT 

◆ anonymous enum

The maximum number of vertex elements which can be used by a vertex declaration.

Enumerator
MaxVertexElementCount 
MaxVertexElementCount_NumBits 

◆ anonymous enum

The alignment in bytes between elements of array shader parameters.

Enumerator
ShaderArrayElementAlignBytes 

◆ anonymous enum

The number of render-targets that may be simultaneously written to.

Enumerator
MaxSimultaneousRenderTargets 
MaxSimultaneousRenderTargets_NumBits 

◆ anonymous enum

The number of UAVs that may be simultaneously bound to a shader.

Enumerator
UE_DEPRECATED 

◆ anonymous enum

Enumerator
MAX_UNIFORM_BUFFER_STATIC_SLOTS 

The maximum number of static slots allowed.

◆ EAsyncComputeBudget

enum class EAsyncComputeBudget
strong

Hint to the driver on how to load balance async compute work. On some platforms this may be a priority, on others actually masking out parts of the GPU for types of work.

Enumerator
ELeast_0 
EGfxHeavy_1 
EBalanced_2 
EComputeHeavy_3 
EAll_4 

◆ EAsyncComputePriority

Enumerator
AsyncComputePriority_Default 
AsyncComputePriority_High 

◆ EBlendFactor

Enumerator
BF_Zero 
BF_One 
BF_SourceColor 
BF_InverseSourceColor 
BF_SourceAlpha 
BF_InverseSourceAlpha 
BF_DestAlpha 
BF_InverseDestAlpha 
BF_DestColor 
BF_InverseDestColor 
BF_ConstantBlendFactor 
BF_InverseConstantBlendFactor 
BF_Source1Color 
BF_InverseSource1Color 
BF_Source1Alpha 
BF_InverseSource1Alpha 
EBlendFactor_Num 
EBlendFactor_NumBits 

◆ EBlendOperation

Enumerator
BO_Add 
BO_Subtract 
BO_Min 
BO_Max 
BO_ReverseSubtract 
EBlendOperation_Num 
EBlendOperation_NumBits 

◆ EBufferUsageFlags

enum class EBufferUsageFlags : uint32
strong

Resource usage flags - for vertex and index buffers.

Enumerator
None 
Static 

The buffer will be written to once.

Dynamic 

The buffer will be written to occasionally, GPU read only, CPU write only. The data lifetime is until the next update, or the buffer is destroyed.

Volatile 

The buffer's data will have a lifetime of one frame. It MUST be written to each frame, or a new one created each frame.

UnorderedAccess 

Allows an unordered access view to be created for the buffer.

ByteAddressBuffer 

Create a byte address buffer, which is basically a structured buffer with a uint32 type.

SourceCopy 

Buffer that the GPU will use as a source for a copy.

UNUSED_BIT_6 
DrawIndirect 

Create a buffer which contains the arguments used by DispatchIndirect or DrawIndirect.

ShaderResource 

Create a buffer that can be bound as a shader resource. This is only needed for buffer types which wouldn't ordinarily be used as a shader resource, like a vertex buffer.

KeepCPUAccessible 

Request that this buffer is directly CPU accessible.

FastVRAM 

Buffer should go in fast vram (hint only). Requires BUF_Transient

NNE 

Buffer is used by NNE. DirectML requires NNE resources to be in single device memory heaps when multi-GPU is active.

Shared 

Create a buffer that can be shared with an external RHI or process.

AccelerationStructure 

Buffer contains opaque ray tracing acceleration structure data. Resources with this flag can't be bound directly to any shader stage and only can be used with ray tracing APIs. This flag is mutually exclusive with all other buffer flags except Static and ReservedResource.

VertexBuffer 
IndexBuffer 
StructuredBuffer 
MultiGPUAllocate 

Buffer memory is allocated independently for multiple GPUs, rather than shared via driver aliasing

MultiGPUGraphIgnore 

Tells the render graph to not bother transferring across GPUs in multi-GPU scenarios. Useful for cases where a buffer is read back to the CPU (such as streaming request buffers), or written to each frame by CPU (such as indirect arg buffers), and the other GPU doesn't actually care about the data.

RayTracingScratch 

Allows buffer to be used as a scratch buffer for building ray tracing acceleration structure, which implies unordered access. Only changes the buffer alignment and can be combined with other flags.

NullResource 

The buffer is a placeholder for streaming, and does not contain an underlying GPU resource.

UniformBuffer 

Buffer can be used as uniform buffer on platforms that do support uniform buffer objects.

ReservedResource 

EXPERIMENTAL: Allow the buffer to be created as a reserved (AKA tiled/sparse/virtual) resource internally, without physical memory backing. May not be used with Dynamic and other buffer flags that prevent the resource from being allocated in local GPU memory.

AnyDynamic 

◆ EClearDepthStencil

enum class EClearDepthStencil
strong
Enumerator
Depth 
Stencil 
DepthStencil 

◆ EColorSpaceAndEOTF

enum class EColorSpaceAndEOTF
strong
Enumerator
EUnknown 
EColorSpace_Rec709 
EColorSpace_Rec2020 
EColorSpace_DCIP3 
EEColorSpace_MASK 
EEOTF_Linear 
EEOTF_sRGB 
EEOTF_PQ 
EEOTF_MASK 
ERec709_sRGB 
ERec709_Linear 
ERec2020_PQ 
ERec2020_Linear 
EDCIP3_PQ 
EDCIP3_Linear 

◆ EColorWriteMask

Enumerator
CW_RED 
CW_GREEN 
CW_BLUE 
CW_ALPHA 
CW_NONE 
CW_RGB 
CW_RGBA 
CW_RG 
CW_BA 
EColorWriteMask_NumBits 

◆ ECompareFunction

Enumerator
CF_Less 
CF_LessEqual 
CF_Greater 
CF_GreaterEqual 
CF_Equal 
CF_NotEqual 
CF_Never 
CF_Always 
ECompareFunction_Num 
ECompareFunction_NumBits 
CF_DepthNearOrEqual 
CF_DepthNear 
CF_DepthFartherOrEqual 
CF_DepthFarther 

◆ ECubeFace

Enumerator
CubeFace_PosX 
CubeFace_NegX 
CubeFace_PosY 
CubeFace_NegY 
CubeFace_PosZ 
CubeFace_NegZ 
CubeFace_MAX 

◆ EGpuVendorId

enum class EGpuVendorId : uint32
strong
Enumerator
Unknown 
NotQueried 
Amd 
ImgTec 
Nvidia 
Arm 
Broadcom 
Qualcomm 
Intel 
Apple 
Vivante 
VeriSilicon 
SamsungAMD 
Microsoft 
Kazan 
Codeplay 
Mesa 

◆ EPrimitiveTopologyType

Enumerator
Triangle 
Patch 
Line 
Point 
Num 
NumBits 

◆ EPrimitiveType

Enumerator
PT_TriangleList 
PT_TriangleStrip 
PT_LineList 
PT_QuadList 
PT_PointList 
PT_RectList 
PT_Num 
PT_NumBits 

◆ ERangeCompressionMode

limited to 8 types in FReadSurfaceDataFlags

Enumerator
RCM_UNorm 
RCM_SNorm 
RCM_MinMaxNorm 
RCM_MinMax 

◆ ERasterizerCullMode

Enumerator
CM_None 
CM_CW 
CM_CCW 
ERasterizerCullMode_Num 
ERasterizerCullMode_NumBits 

◆ ERasterizerDepthClipMode

Enumerator
DepthClip 
DepthClamp 
Num 
NumBits 

◆ ERasterizerFillMode

Enumerator
FM_Point 
FM_Wireframe 
FM_Solid 
ERasterizerFillMode_Num 
ERasterizerFillMode_NumBits 

◆ ERenderQueryType

Enumerator
RQT_Undefined 
RQT_Occlusion 
RQT_AbsoluteTime 

◆ ERenderTargetLoadAction

Action to take when a render target is set.

Enumerator
ENoAction 
ELoad 
EClear 
Num 
NumBits 

◆ ERenderTargetStoreAction

Action to take when a render target is unset or at the end of a pass.

Enumerator
ENoAction 
EStore 
EMultisampleResolve 
Num 
NumBits 

◆ ERequestedGPUCrash

enum class ERequestedGPUCrash : uint8
strong
Enumerator
None 
Type_Hang 
Type_PageFault 
Type_PlatformBreak 
Type_Assert 
Type_CmdListCorruption 
Queue_Direct 
Queue_Compute 

◆ EResourceLockMode

Enumerator
RLM_ReadOnly 
RLM_WriteOnly 
RLM_WriteOnly_NoOverwrite 
RLM_Num 

◆ EResourceTransitionFlags

Enumerator
None 
MaintainCompression 
IgnoreAfterState 
Last 
Mask 

◆ ERHIBindlessConfiguration

Enumerator
Disabled 
RayTracing 
Minimal 
All 

◆ ERHIDescriptorHeapType

Enumerator
Standard 
Sampler 
RenderTarget 
DepthStencil 
Count 
Invalid 

◆ ERHIDescriptorType

enum class ERHIDescriptorType : uint8
strong
Enumerator
BufferSRV 
BufferUAV 
TypedBufferSRV 
TypedBufferUAV 
TextureSRV 
TextureUAV 
CBV 
Sampler 
AccelerationStructure 
Invalid 

◆ ERHIDescriptorTypeMask

Enumerator
None 
BufferSRV 
BufferUAV 
TypedBufferSRV 
TypedBufferUAV 
TextureSRV 
TextureUAV 
CBV 
Sampler 
AccelerationStructure 
SRV 
UAV 
Standard 

◆ ERHIFeatureSupport

enum class ERHIFeatureSupport : uint8
strong
Enumerator
Unsupported 
RuntimeDependent 
RuntimeGuaranteed 
Num 
NumBits 

◆ ERHIInterfaceType

enum class ERHIInterfaceType
strong
Enumerator
Hidden 
Null 
D3D11 
D3D12 
Vulkan 
Metal 
Agx 
OpenGL 

◆ ERHIResourceType

An enumeration of the different RHI reference types.

Enumerator
RRT_None 
RRT_SamplerState 
RRT_RasterizerState 
RRT_DepthStencilState 
RRT_BlendState 
RRT_VertexDeclaration 
RRT_VertexShader 
RRT_MeshShader 
RRT_AmplificationShader 
RRT_PixelShader 
RRT_GeometryShader 
RRT_RayTracingShader 
RRT_ComputeShader 
RRT_GraphicsPipelineState 
RRT_ComputePipelineState 
RRT_RayTracingPipelineState 
RRT_BoundShaderState 
RRT_UniformBufferLayout 
RRT_UniformBuffer 
RRT_Buffer 
RRT_Texture 
UE_DEPRECATED 
UE_DEPRECATED 
UE_DEPRECATED 
UE_DEPRECATED 
RRT_TextureReference 
RRT_TimestampCalibrationQuery 
RRT_GPUFence 
RRT_RenderQuery 
RRT_RenderQueryPool 
RRT_Viewport 
RRT_UnorderedAccessView 
RRT_ShaderResourceView 
RRT_RayTracingAccelerationStructure 
RRT_RayTracingShaderBindingTable 
RRT_StagingBuffer 
RRT_CustomPresent 
RRT_ShaderLibrary 
RRT_ShaderBundle 
RRT_WorkGraphShader 
RRT_WorkGraphPipelineState 
RRT_StreamSourceSlot 
RRT_ResourceCollection 
RRT_Num 

◆ ERHIStaticShaderBindingLayoutSupport

Enumerator
Unsupported 
RayTracingOnly 
AllShaderTypes 
NumBits 

◆ ERHITransitionCreateFlags

Enumerator
None 
NoFence 
NoSplit 
AllowDuringRenderPass 
AllowDecayPipelines 

◆ ERHIUniformBufferFlags

Flags for Uniform Buffers

Enumerator
None 
NoEmulatedUniformBuffer 

Whether to force a real uniform buffer when using emulated uniform buffers

NeedsReflectedMembers 

Signals if the uniform buffer members need to be included in shader reflection

HasNonGraphOutputs 

Whether this layout may contain non-render-graph outputs (e.g. RHI UAVs).

UniformView 

This struct is a view into uniform buffer object, on platforms that support UBO

◆ ERHIZBuffer

enum class ERHIZBuffer
strong
Enumerator
FarPlane 
NearPlane 
IsInverted 

◆ ESamplerAddressMode

Enumerator
AM_Wrap 
AM_Clamp 
AM_Mirror 
AM_Border 

Not supported on all platforms

ESamplerAddressMode_Num 
ESamplerAddressMode_NumBits 

◆ ESamplerCompareFunction

Enumerator
SCF_Never 
SCF_Less 

◆ ESamplerFilter

Enumerator
SF_Point 
SF_Bilinear 
SF_Trilinear 
SF_AnisotropicPoint 
SF_AnisotropicLinear 
ESamplerFilter_Num 
ESamplerFilter_NumBits 

◆ EShaderCodeResourceBindingType

The USF binding type for a resource in a shader.

Enumerator
Invalid 
SamplerState 
Texture2D 
Texture2DArray 
Texture2DMS 
Texture3D 
TextureCube 
TextureCubeArray 
TextureMetadata 
Buffer 
StructuredBuffer 
ByteAddressBuffer 
RaytracingAccelerationStructure 
RWTexture2D 
RWTexture2DArray 
RWTexture3D 
RWTextureCube 
RWTextureMetadata 
RWBuffer 
RWStructuredBuffer 
RWByteAddressBuffer 
RasterizerOrderedTexture2D 
ResourceCollection 
MAX 

◆ EShaderFrequency

Enumerator
SF_Vertex 
SF_Mesh 
SF_Amplification 
SF_Pixel 
SF_Geometry 
SF_Compute 
SF_RayGen 
SF_RayMiss 
SF_RayHitGroup 
SF_RayCallable 
SF_WorkGraphRoot 
SF_WorkGraphComputeNode 
SF_NumFrequencies 
SF_NumGraphicsFrequencies 
SF_NumStandardFrequencies 
SF_NumBits 

◆ ESimpleRenderTargetMode

Common render target use cases

Enumerator
EExistingColorAndDepth 
EUninitializedColorAndDepth 
EUninitializedColorExistingDepth 
EUninitializedColorClearDepth 
EClearColorExistingDepth 
EClearColorAndDepth 
EExistingContents_NoDepthStore 
EExistingColorAndClearDepth 
EExistingColorAndDepthAndClearStencil 

◆ EStencilMask

Enumerator
SM_Default 
SM_255 
SM_1 
SM_2 
SM_4 
SM_8 
SM_16 
SM_32 
SM_64 
SM_128 
SM_Count 

◆ EStencilOp

Enumerator
SO_Keep 
SO_Zero 
SO_Replace 
SO_SaturatedIncrement 
SO_SaturatedDecrement 
SO_Invert 
SO_Increment 
SO_Decrement 
EStencilOp_Num 
EStencilOp_NumBits 

◆ ESyncComputeBudget

enum class ESyncComputeBudget
strong

Hint to control how to balance GPU resources between graphics and synchronous compute workloads. On some platforms, compute shaders may run with higher occupancy when they don't need to share resources with graphics. Compute-heavy mode may prevent async compute queue workloads from running concurrently with main queue work.

Enumerator
Default 
Balanced 
ComputeHeavy 

◆ ETextureCreateFlags

Flags used for texture creation

Enumerator
None 
RenderTargetable 
ResolveTargetable 
DepthStencilTargetable 
ShaderResource 
SRGB 
CPUWritable 
NoTiling 
VideoDecode 
Dynamic 
InputAttachmentRead 
Foveation 

Texture represents a foveation attachment

Tiling3D 
Memoryless 
FastVRAMPartialAlloc 
DisableSRVCreation 
DisableDCC 
UAV 
Presentable 
CPUReadback 
OfflineProcessed 
FastVRAM 
HideInVisualizeTexture 
Virtual 
TargetArraySlicesIndependently 
Shared 
NoFastClear 
DepthStencilResolveTarget 
Streamable 
NoFastClearFinalize 
Atomic64Compatible 

Texture needs to support atomic operations

ReduceMemoryWithTilingMode 
AtomicCompatible 

Texture needs to support atomic operations

External 

Texture should be allocated for external access. Vulkan only

MultiGPUGraphIgnore 

Don't automatically transfer across GPUs in multi-GPU scenarios. For example, if you are transferring it yourself manually.

ReservedResource 

EXPERIMENTAL: Allow the texture to be created as a reserved (AKA tiled/sparse/virtual) resource internally, without physical memory backing. May not be used with Dynamic and other buffer flags that prevent the resource from being allocated in local GPU memory.

ImmediateCommit 

EXPERIMENTAL: Used with ReservedResource flag to immediately allocate and commit memory on creation. May use N small physical memory allocations instead of a single large one.

ForceIntoNonStreamingMemoryTracking 

Don't lump this texture with streaming memory when tracking total texture allocation sizes

Invalid 

Textures marked with this are meant to be immediately evicted after creation for intentionally crashing the GPU with a page fault.

LossyCompression 
LossyCompressionLowBitrate 

◆ ETextureDimension

enum class ETextureDimension : uint8
strong

Describes the dimension of a texture.

Enumerator
Texture2D 
Texture2DArray 
Texture3D 
TextureCube 
TextureCubeArray 

◆ ETextureReallocationStatus

Async texture reallocation status, returned by RHIGetReallocateTexture2DStatus().

Enumerator
TexRealloc_Succeeded 
TexRealloc_Failed 
TexRealloc_InProgress 

◆ EUniformBufferBaseType

The base type of a value in a shader parameter structure.

Enumerator
UBMT_INVALID 
UBMT_BOOL 
UBMT_INT32 
UBMT_UINT32 
UBMT_FLOAT32 
UBMT_TEXTURE 
UBMT_SRV 
UBMT_UAV 
UBMT_SAMPLER 
UBMT_RDG_TEXTURE 
UBMT_RDG_TEXTURE_ACCESS 
UBMT_RDG_TEXTURE_ACCESS_ARRAY 
UBMT_RDG_TEXTURE_SRV 
UBMT_RDG_TEXTURE_NON_PIXEL_SRV 
UBMT_RDG_TEXTURE_UAV 
UBMT_RDG_BUFFER_ACCESS 
UBMT_RDG_BUFFER_ACCESS_ARRAY 
UBMT_RDG_BUFFER_SRV 
UBMT_RDG_BUFFER_UAV 
UBMT_RDG_UNIFORM_BUFFER 
UBMT_NESTED_STRUCT 
UBMT_INCLUDED_STRUCT 
UBMT_REFERENCED_STRUCT 
UBMT_RENDER_TARGET_BINDING_SLOTS 
UBMT_RESOURCE_COLLECTION 
EUniformBufferBaseType_Num 
EUniformBufferBaseType_NumBits 

◆ EUniformBufferBindingFlags

The list of flags declaring which binding models are allowed for a uniform buffer layout.

Enumerator
Shader 

If set, the uniform buffer can be bound as an RHI shader parameter on an RHI shader (i.e. RHISetShaderUniformBuffer).

Static 

If set, the uniform buffer can be bound globally through a static slot (i.e. RHISetStaticUniformBuffers).

StaticAndShader 

If set, the uniform buffer can be bound globally or per-shader, depending on the use case. Only one binding model should be used at a time, and RHI validation will emit an error if both are used for a particular uniform buffer at the same time. This is designed for difficult cases where a fixed single binding model would produce an unnecessary maintenance burden. Using this disables some RHI validation errors for global bindings, so use with care.

◆ EUniformBufferUsage

Enumerator
UniformBuffer_SingleDraw 
UniformBuffer_SingleFrame 
UniformBuffer_MultiFrame 

◆ EUniformBufferValidation

Enumerator
None 
ValidateResources 

◆ EVertexElementType

Enumerator
VET_None 
VET_Float1 
VET_Float2 
VET_Float3 
VET_Float4 
VET_PackedNormal 
VET_UByte4 
VET_UByte4N 
VET_Color 
VET_Short2 
VET_Short4 
VET_Short2N 
VET_Half2 
VET_Half4 
VET_Short4N 
VET_UShort2 
VET_UShort4 
VET_UShort2N 
VET_UShort4N 
VET_URGB10A2N 
VET_UInt 
VET_MAX 
VET_NumBits 

◆ EVRSAxisShadingRate

Enumerator
VRSASR_1X 
VRSASR_2X 
VRSASR_4X 

◆ EVRSImageDataType

Enumerator
VRSImage_NotSupported 
VRSImage_Palette 
VRSImage_Fractional 

◆ EVRSRateCombiner

Enumerator
VRSRB_Passthrough 
VRSRB_Override 
VRSRB_Min 
VRSRB_Max 
VRSRB_Sum 

◆ EVRSShadingRate

Enumerator
VRSSR_1x1 
VRSSR_1x2 
VRSSR_2x1 
VRSSR_2x2 
VRSSR_2x4 
VRSSR_4x2 
VRSSR_4x4 
VRSSR_Last 

Function Documentation

◆ DECLARE_LOG_CATEGORY_EXTERN()

RHI_API DECLARE_LOG_CATEGORY_EXTERN ( LogRHI  ,
Log  ,
VeryVerbose   
)

RHI Logging.

◆ ENUM_CLASS_FLAGS() [1/8]

ENUM_CLASS_FLAGS ( EBufferUsageFlags  )

◆ ENUM_CLASS_FLAGS() [2/8]

ENUM_CLASS_FLAGS ( ERequestedGPUCrash  )

◆ ENUM_CLASS_FLAGS() [3/8]

ENUM_CLASS_FLAGS ( EResourceTransitionFlags  )

◆ ENUM_CLASS_FLAGS() [4/8]

ENUM_CLASS_FLAGS ( ERHIDescriptorTypeMask  )

◆ ENUM_CLASS_FLAGS() [5/8]

ENUM_CLASS_FLAGS ( ERHITransitionCreateFlags  )

◆ ENUM_CLASS_FLAGS() [6/8]

ENUM_CLASS_FLAGS ( ERHIUniformBufferFlags  )

◆ ENUM_CLASS_FLAGS() [7/8]

ENUM_CLASS_FLAGS ( ETextureCreateFlags  )

◆ ENUM_CLASS_FLAGS() [8/8]

ENUM_CLASS_FLAGS ( EUniformBufferBindingFlags  )

◆ GetRHIResourceType()

ERHIResourceType GetRHIResourceType ( ETextureDimension  )
inline

◆ IsBindlessDisabled()

bool IsBindlessDisabled ( ERHIBindlessConfiguration  Configuration)
inline

◆ IsBindlessEnabledForAnyGraphics()

bool IsBindlessEnabledForAnyGraphics ( ERHIBindlessConfiguration  Configuration)
inline

◆ IsBindlessEnabledForOnlyRayTracing()

bool IsBindlessEnabledForOnlyRayTracing ( ERHIBindlessConfiguration  Configuration)
inline

◆ IsBindlessEnabledForRayTracing()

bool IsBindlessEnabledForRayTracing ( ERHIBindlessConfiguration  Configuration)
inline

◆ IsBindlessFullyEnabled()

bool IsBindlessFullyEnabled ( ERHIBindlessConfiguration  Configuration)
inline

◆ IsComputeShaderFrequency()

bool IsComputeShaderFrequency ( EShaderFrequency  ShaderFrequency)
inline

◆ IsGeometryPipelineShaderFrequency()

bool IsGeometryPipelineShaderFrequency ( EShaderFrequency  Frequency)
inline

◆ IsRayTracingShaderFrequency()

bool IsRayTracingShaderFrequency ( EShaderFrequency  Frequency)
inline

◆ IsRDGBufferReferenceShaderParameterType()

bool IsRDGBufferReferenceShaderParameterType ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type references an RDG buffer.

◆ IsRDGResourceAccessType()

bool IsRDGResourceAccessType ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type is for RDG access and not actually for shaders.

◆ IsRDGResourceReferenceShaderParameterType()

bool IsRDGResourceReferenceShaderParameterType ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type is a reference onto a RDG resource.

◆ IsRDGTextureReferenceShaderParameterType()

bool IsRDGTextureReferenceShaderParameterType ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type references an RDG texture.

◆ IsResourceBindingTypeSRV()

bool IsResourceBindingTypeSRV ( EShaderCodeResourceBindingType  Type)
inline

◆ IsShaderParameterTypeForUniformBufferLayout()

bool IsShaderParameterTypeForUniformBufferLayout ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type needs to be passdown to RHI through FRHIUniformBufferLayout when creating an uniform buffer.

◆ IsShaderParameterTypeIgnoredByRHI()

bool IsShaderParameterTypeIgnoredByRHI ( EUniformBufferBaseType  BaseType)
inline

Returns whether the shader parameter type in FRHIUniformBufferLayout is actually ignored by the RHI.

◆ IsShaderParameterTypeReadOnlyRHIResource()

bool IsShaderParameterTypeReadOnlyRHIResource ( EUniformBufferBaseType  BaseType)
inline

◆ IsShaderParameterTypeRHIResource()

bool IsShaderParameterTypeRHIResource ( EUniformBufferBaseType  BaseType)
inline

◆ IsUniformBufferStaticSlotValid()

bool IsUniformBufferStaticSlotValid ( const FUniformBufferStaticSlot  Slot)
inline

Returns whether a static uniform buffer slot index is valid.

◆ IsValidGraphicsFrequency()

bool IsValidGraphicsFrequency ( EShaderFrequency  InShaderFrequency)
inline

◆ IsWorkGraphShaderFrequency()

bool IsWorkGraphShaderFrequency ( EShaderFrequency  Frequency)
inline

◆ RHIConvertToGpuVendorId()

EGpuVendorId RHIConvertToGpuVendorId ( uint32  VendorId)
inline

◆ RHIDescriptorTypeMaskFromType()

constexpr ERHIDescriptorTypeMask RHIDescriptorTypeMaskFromType ( ERHIDescriptorType  InType)
inlineconstexpr