Diligent Engine
 
Loading...
Searching...
No Matches
Diligent Namespace Reference

Graphics engine namespace. More...

Classes

struct  AdapterMemoryInfo
 Device memory properties. More...
 
class  AndroidAppBase
 Base class for Android applications. More...
 
struct  AndroidFileSystem
 Android file system implementation. More...
 
struct  APIInfo
 Diligent API Info. This structure can be used to verify API compatibility. More...
 
class  AppBase
 
class  AsyncPipelineState
 Async pipeline state waits until all shaders are loaded before initializing the internal pipeline state. More...
 
class  AsyncTaskBase
 Base implementation of the IAsyncTask interface. More...
 
struct  AttachmentReference
 Attachment reference description. More...
 
class  BasicFileStream
 Basic file stream implementation. More...
 
struct  BasicFileSystem
 Basic platform-specific file system functions. More...
 
struct  BasicPlatformDebug
 Basic platform-specific debug functions. More...
 
struct  BasicPlatformMisc
 Basic platform-specific miscellaneous functions. More...
 
struct  BeginRenderPassAttribs
 BeginRenderPass command attributes. More...
 
struct  BindingTableVk
 This structure contains the data that can be used as input arguments for vkCmdTraceRaysKHR() command. More...
 
struct  BindSparseResourceMemoryAttribs
 Attributes of the IDeviceContext::BindSparseResourceMemory() command. More...
 
struct  BLASBoundingBoxDesc
 Defines bottom level acceleration structure axis-aligned bounding boxes description. More...
 
struct  BLASBuildBoundingBoxData
 AABB geometry data description. More...
 
struct  BLASBuildTriangleData
 Triangle geometry data description. More...
 
struct  BLASTriangleDesc
 Defines bottom level acceleration structure triangles description. More...
 
struct  BlendStateDesc
 Blend state description. More...
 
class  Bloom
 Implements bloom post-process effect. More...
 
class  BottomLevelASBase
 Template class implementing base functionality of the bottom-level acceleration structure object. More...
 
class  BottomLevelASD3D12Impl
 Bottom-level acceleration structure object implementation in Direct3D12 backend. More...
 
struct  BottomLevelASDesc
 Bottom-level AS description. More...
 
struct  BottomLevelASDescX
 C++ wrapper over BottomLevelASDesc. More...
 
class  BoundBoxRenderer
 Bounding box renderer. More...
 
struct  Box
 Box. More...
 
class  BufferBase
 Template class implementing base functionality of the buffer object. More...
 
class  BufferD3D11Impl
 Buffer object implementation in Direct3D11 backend. More...
 
class  BufferD3D12Impl
 Buffer object implementation in Direct3D12 backend. More...
 
struct  BufferData
 Describes the buffer initial data. More...
 
struct  BufferDesc
 Buffer description. More...
 
struct  BufferFormat
 Buffer format description. More...
 
class  BufferGLImpl
 Buffer object implementation in OpenGL backend. More...
 
struct  BufferProperties
 Buffer properties. More...
 
struct  BufferSuballocatorCreateInfo
 Buffer suballocator create information. More...
 
struct  BufferSuballocatorUsageStats
 Buffer suballocator usage stats. More...
 
struct  BufferToTextureCopyInfo
 Information required to perform a copy operation between a buffer and a texture. More...
 
class  BufferViewBase
 Template class implementing base functionality of the buffer view object. More...
 
class  BufferViewD3D11Impl
 Buffer view implementation in Direct3D11 backend. More...
 
class  BufferViewD3D12Impl
 Buffer view implementation in Direct3D12 backend. More...
 
struct  BufferViewDesc
 Buffer view description. More...
 
class  BufferViewGLImpl
 Buffer view implementation in OpenGL backend. More...
 
class  BufferViewVkImpl
 Buffer view implementation in Vulkan backend. More...
 
class  BufferViewWebGPUImpl
 Buffer view implementation in WebGPU backend. More...
 
class  BufferVkImpl
 Buffer object implementation in Vulkan backend. More...
 
class  BufferWebGPUImpl
 Buffer implementation in WebGPU backend. More...
 
struct  BuildBLASAttribs
 This structure is used by IDeviceContext::BuildBLAS(). More...
 
struct  BuildTLASAttribs
 This structure is used by IDeviceContext::BuildTLAS(). More...
 
class  BytecodeCacheImpl
 Implementation of IBytecodeCache. More...
 
class  ComErrorDesc
 Helper class that provides description of a COM error. More...
 
class  CommandLineParser
 
class  CommandListBase
 Template class implementing base functionality of the command list object. More...
 
class  CommandListD3D11Impl
 Command list implementation in Direct3D11 backend. More...
 
class  CommandListD3D12Impl
 Command list implementation in Direct3D12 backend. More...
 
class  CommandListVkImpl
 Command list implementation in Vulkan backend. More...
 
class  CommandQueueD3D12Impl
 Implementation of the Diligent::ICommandQueueD3D12 interface. More...
 
struct  CommandQueueInfo
 Command queue properties. More...
 
class  CommandQueueVkImpl
 Implementation of the Diligent::ICommandQueueVk interface. More...
 
struct  CompoundShaderSourceFactoryCreateInfo
 Compound shader source factory create info. More...
 
struct  CompoundShaderSourceFactoryCreateInfoX
 C++ wrapper over PipelineResourceSignatureDesc. More...
 
struct  ComputeImageDifferenceAttribs
 Attributes for ComputeImageDifference function. More...
 
struct  ComputeMipLevelAttribs
 ComputeMipLevel function attributes. More...
 
struct  ComputePipelineNotation
 Compute pipeline state notation. More...
 
struct  ComputePipelineStateCreateInfo
 Compute pipeline state description. More...
 
struct  ComputePipelineStateCreateInfoX
 C++ wrapper over ComputePipelineStateCreateInfo. More...
 
struct  ComputeShaderProperties
 Compute Shader Properties. More...
 
class  CoordinateGridRenderer
 Coordinate grid renderer. More...
 
struct  CopyBLASAttribs
 This structure is used by IDeviceContext::CopyBLAS(). More...
 
struct  CopyPixelsAttribs
 Parameters of the CopyPixels function. More...
 
struct  CopyTextureAttribs
 Defines copy texture command attributes. More...
 
struct  CopyTLASAttribs
 This structure is used by IDeviceContext::CopyTLAS(). More...
 
struct  CubeGeometryPrimitiveAttributes
 Cube geometry primitive attributes. More...
 
struct  D3D11ResourceBindPoints
 Resource binding points in all shader stages. More...
 
struct  D3D11ResourceRangeCounters
 Shader resource counters for one specific resource range. More...
 
class  D3D12ResourceBase
 Base implementation of a D3D12 resource. More...
 
class  DataBlobImpl
 Base interface for a data blob. More...
 
class  DearchiverBase
 Class implementing base functionality of the dearchiver. More...
 
struct  DearchiverCreateInfo
 Dearchiver create information. More...
 
class  DearchiverD3D11Impl
 Dearchiver object implementation in Direct3D11 backend. More...
 
class  DearchiverD3D12Impl
 Dearchiver object implementation in Direct3D12 backend. More...
 
class  DearchiverGLImpl
 Dearchiver object implementation in OpenGL backend. More...
 
class  DearchiverVkImpl
 Dearchiver object implementation in Vulkan backend. More...
 
class  DearchiverWebGPUImpl
 Dearchiver object implementation in WebGPU backend. More...
 
class  DefaultRawMemoryAllocator
 Default raw memory allocator. More...
 
class  DepthOfField
 Implements depth-of-field post-process effect. More...
 
class  DepthRangeCalculator
 
struct  DepthStencilClearValue
 Defines optimized depth-stencil clear value. More...
 
struct  DepthStencilStateDesc
 Depth stencil state description. More...
 
class  DeviceContextBase
 Base implementation of the device context. More...
 
struct  DeviceContextCommandCounters
 Device context command counters. More...
 
class  DeviceContextD3D11Impl
 Device context implementation in Direct3D11 backend. More...
 
class  DeviceContextD3D12Impl
 Device context implementation in Direct3D12 backend. More...
 
struct  DeviceContextDesc
 Device context description. More...
 
class  DeviceContextGLImpl
 Device context implementation in OpenGL backend. More...
 
class  DeviceContextNextGenBase
 Base implementation of the device context for next-generation backends. More...
 
struct  DeviceContextStats
 Device context statistics. More...
 
class  DeviceContextVkImpl
 Device context implementation in Vulkan backend. More...
 
class  DeviceContextWebGPUImpl
 Device context implementation in WebGPU backend. More...
 
struct  DeviceFeatures
 Describes the device features. More...
 
struct  DeviceFeaturesVk
 Vulkan-specific device features. More...
 
class  DeviceMemoryBase
 Template class implementing base functionality of the device memory object. More...
 
struct  DeviceMemoryCreateInfo
 Device memory create information. More...
 
class  DeviceMemoryD3D11Impl
 Device memory object implementation in Direct3D11 backend. More...
 
class  DeviceMemoryD3D12Impl
 Device memory object implementation in Direct3D12 backend. More...
 
struct  DeviceMemoryDesc
 Device memory description. More...
 
struct  DeviceMemoryRangeD3D12
 This structure is returned by IDeviceMemoryD3D12::GetRange() More...
 
struct  DeviceMemoryRangeVk
 This structure is returned by IDeviceMemoryVk::GetRange() More...
 
class  DeviceMemoryVkImpl
 Device memory object implementation in Vulkan backend. More...
 
class  DeviceObjectArchive
 Device object archive object. More...
 
struct  DeviceObjectAttribs
 Describes common device object attributes. More...
 
class  DeviceObjectBase
 Template class implementing base functionality of the device object. More...
 
struct  DispatchComputeAttribs
 Describes dispatch command arguments. More...
 
struct  DispatchComputeIndirectAttribs
 Describes dispatch command arguments. More...
 
struct  DispatchTileAttribs
 Describes tile dispatch command arguments. More...
 
struct  DisplayModeAttribs
 Display mode attributes. More...
 
struct  DrawAttribs
 Defines the draw command attributes. More...
 
struct  DrawCommandProperties
 Draw command properties. More...
 
struct  DrawIndexedAttribs
 Defines the indexed draw command attributes. More...
 
struct  DrawIndexedIndirectAttribs
 Defines the indexed indirect draw command attributes. More...
 
struct  DrawIndirectAttribs
 Defines the indirect draw command attributes. More...
 
struct  DrawMeshAttribs
 Defines the mesh draw command attributes. More...
 
struct  DrawMeshIndirectAttribs
 Defines the mesh indirect draw command attributes. More...
 
class  DurationQueryHelper
 Helper class to manage duration queries. More...
 
class  DynamicAtlasManager
 Dynamic 2D atlas manager. More...
 
class  DynamicBuffer
 Dynamically resizable buffer. More...
 
struct  DynamicBufferCreateInfo
 Dynamic buffer create information. More...
 
class  DynamicLinearAllocator
 Implementation of a linear allocator on fixed memory pages. More...
 
class  DynamicStaleResourceWrapper
 Helper class that wraps stale resources of different types. More...
 
class  DynamicTextureArray
 Dynamically resizable texture 2D array. More...
 
struct  DynamicTextureArrayCreateInfo
 Dynamic texture array create information. More...
 
struct  DynamicTextureAtlasCreateInfo
 Dynamic texture atlas create information. More...
 
struct  DynamicTextureAtlasUsageStats
 Dynamic texture atlas usage stats. More...
 
class  EmscriptenAppBase
 Base class for Emscripten applications. More...
 
struct  EngineCreateInfo
 Engine creation information. More...
 
struct  EngineD3D11CreateInfo
 Attributes specific to D3D11 engine. More...
 
struct  EngineD3D12CreateInfo
 Attributes specific to D3D12 engine. More...
 
class  EngineFactoryBase
 Template class implementing base functionality of the engine factory. More...
 
class  EngineFactoryD3D11Impl
 Engine factory for D3D11 implementation. More...
 
class  EngineFactoryD3D12Impl
 Engine factory for D3D12 implementation. More...
 
class  EngineFactoryOpenGLImpl
 Engine factory for OpenGL implementation. More...
 
class  EngineFactoryWebGPUImpl
 Engine factory for WebGPU implementation. More...
 
struct  EngineGLCreateInfo
 Attributes of the OpenGL-based engine implementation. More...
 
struct  EngineMtlCreateInfo
 Attributes of the Metal-based engine implementation. More...
 
struct  EngineVkCreateInfo
 Attributes specific to Vulkan engine. More...
 
struct  EngineWebGPUCreateInfo
 Attributes of the WebGPU-based engine implementation. More...
 
class  EnvMapRenderer
 Environment map renderer. More...
 
class  EpipolarLightScattering
 Implements the epipolar light scattering post-process effect. More...
 
struct  ExpandPixelsAttribs
 Parameters of the ExpandPixels function. More...
 
class  FastRand
 
class  FastRandInt
 Generates an integer random number in [Min, Max] range. More...
 
class  FastRandReal
 Generates a real random number in [Min, Max] range. More...
 
class  FenceBase
 Template class implementing base functionality of the fence object. More...
 
class  FenceD3D11Impl
 Fence implementation in Direct3D11 backend. More...
 
class  FenceD3D12Impl
 Fence implementation in Direct3D12 backend. More...
 
struct  FenceDesc
 Fence description. More...
 
class  FenceGLImpl
 Fence object implementation in OpenGL backend. More...
 
class  FenceVkImpl
 Fence implementation in Vulkan backend. More...
 
class  FenceWebGPUImpl
 Fence object implementation in WebGPU backend. More...
 
class  FixedBlockMemoryAllocator
 Memory allocator that allocates memory in a fixed-size chunks. More...
 
class  FixedLinearAllocator
 Implementation of a linear allocator on a fixed-size memory page. More...
 
class  FramebufferBase
 Template class implementing base functionality of the framebuffer object. More...
 
class  FramebufferD3D11Impl
 Render pass implementation in Direct3D11 backend. More...
 
class  FramebufferD3D12Impl
 Render pass implementation in Direct3D12 backend. More...
 
struct  FramebufferDesc
 Framebuffer description. More...
 
struct  FramebufferDescX
 C++ wrapper over FramebufferDesc. More...
 
class  FramebufferGLImpl
 Framebuffer implementation in OpenGL backend. More...
 
class  FramebufferVkImpl
 Framebuffer implementation in Vulkan backend. More...
 
class  FramebufferWebGPUImpl
 Render pass implementation in WebGPU backend. More...
 
struct  FullScreenModeDesc
 
class  GBuffer
 G-buffer manages a set of render targets. More...
 
struct  GeometryPrimitiveAttributes
 Geometry primitive attributes. More...
 
struct  GeometryPrimitiveBuffersCreateInfo
 Geometry primitive buffers creation info. More...
 
struct  GeometryPrimitiveInfo
 Geometry primitive info. More...
 
class  GLProgramCache
 Program cached contains linked programs for the given combination of shaders and resource layouts. More...
 
class  GLTF_PBR_Renderer
 Implementation of a GLTF PBR renderer. More...
 
class  GPUCompletionAwaitQueue
 Helper class that facilitates asynchronous waiting for the GPU completion. More...
 
struct  GraphicsAdapterInfo
 Graphics adapter properties. More...
 
struct  GraphicsPipelineDesc
 Graphics pipeline state description. More...
 
struct  GraphicsPipelineNotation
 Graphics pipeline state notation. More...
 
struct  GraphicsPipelineStateCreateInfo
 Graphics pipeline state initialization information. More...
 
struct  GraphicsPipelineStateCreateInfoX
 C++ wrapper over GraphicsPipelineStateCreateInfo. More...
 
struct  HashMapStringKey
 
class  HLSL2GLSLConverterImpl
 HLSL to GLSL shader source code converter implementation. More...
 
class  HLSL2GLSLConverterObject
 Implementation of the Diligent::IHLSL2GLSLConverter interface. More...
 
struct  HLSLShaderResourceDesc
 HLSL resource description. More...
 
struct  IArchiver
 Render state object archiver interface. More...
 
struct  IArchiverFactory
 Archiver factory interface. More...
 
struct  IAsyncTask
 Asynchronous task interface. More...
 
struct  IBottomLevelAS
 Bottom-level AS interface. More...
 
struct  IBottomLevelASD3D12
 Exposes Direct3D12-specific functionality of a bottom-level acceleration structure object. More...
 
struct  IBottomLevelASMtl
 Exposes Metal-specific functionality of a bottom-level acceleration structure object. More...
 
struct  IBottomLevelASVk
 Exposes Vulkan-specific functionality of a Bottom-level acceleration structure object. More...
 
struct  IBuffer
 Buffer interface. More...
 
struct  IBufferD3D11
 Exposes Direct3D11-specific functionality of a buffer object. More...
 
struct  IBufferD3D12
 Exposes Direct3D12-specific functionality of a buffer object. More...
 
struct  IBufferGL
 Exposes OpenGL-specific functionality of a buffer object. More...
 
struct  IBufferMtl
 Exposes Metal-specific functionality of a buffer object. More...
 
struct  IBufferSuballocation
 Buffer suballocation. More...
 
struct  IBufferSuballocator
 Buffer suballocator. More...
 
struct  IBufferView
 Buffer view interface. More...
 
struct  IBufferViewD3D11
 Exposes Direct3D11-specific functionality of a buffer view object. More...
 
struct  IBufferViewD3D12
 Exposes Direct3D12-specific functionality of a buffer view object. More...
 
struct  IBufferViewGL
 Exposes OpenGL-specific functionality of a buffer view object. More...
 
struct  IBufferViewMtl
 Exposes Metal-specific functionality of a buffer view object. More...
 
struct  IBufferViewVk
 Exposes Vulkan-specific functionality of a buffer view object. More...
 
struct  IBufferViewWebGPU
 Exposes WebGPU-specific functionality of a buffer view object. More...
 
struct  IBufferVk
 Exposes Vulkan-specific functionality of a buffer object. More...
 
struct  IBufferWebGPU
 Exposes WebGPU-specific functionality of a buffer object. More...
 
struct  IBytecodeCache
 Byte code cache interface. More...
 
class  ICommandList
 Command list interface. More...
 
struct  ICommandQueue
 Command queue interface. More...
 
struct  ICommandQueueD3D12
 Command queue interface. More...
 
struct  ICommandQueueMtl
 Command queue interface. More...
 
struct  ICommandQueueVk
 Command queue interface. More...
 
struct  IDataBlob
 Binary data blob. More...
 
struct  IDearchiver
 Dearchiver interface. More...
 
struct  IDeviceContext
 Device context interface. More...
 
struct  IDeviceContextD3D11
 Exposes Direct3D11-specific functionality of a device context. More...
 
struct  IDeviceContextD3D12
 Exposes Direct3D12-specific functionality of a device context. More...
 
struct  IDeviceContextGL
 Exposes OpenGL-specific functionality of a device context. More...
 
struct  IDeviceContextMtl
 Exposes Metal-specific functionality of a device context. More...
 
struct  IDeviceContextVk
 Exposes Vulkan-specific functionality of a device context. More...
 
struct  IDeviceContextWebGPU
 Exposes WebGPU-specific functionality of a device context. More...
 
struct  IDeviceMemory
 Device memory interface. More...
 
struct  IDeviceMemoryD3D11
 Exposes Direct3D11-specific functionality of a device memory object. More...
 
struct  IDeviceMemoryD3D12
 Exposes Direct3D12-specific functionality of a device memory object. More...
 
struct  IDeviceMemoryMtl
 Exposes Metal-specific functionality of a device memory object. More...
 
struct  IDeviceMemoryVk
 Exposes Vulkan-specific functionality of a device memory object. More...
 
struct  IDeviceObject
 Base interface for all objects created by the render device Diligent::IRenderDevice. More...
 
class  IDXCompiler
 DXC compiler interface. More...
 
struct  IDynamicTextureAtlas
 Dynamic texture atlas. More...
 
struct  IEngineFactory
 Engine factory base interface. More...
 
struct  IEngineFactoryD3D11
 Engine factory for Direct3D11 rendering backend. More...
 
struct  IEngineFactoryD3D12
 Engine factory for Direct3D12 rendering backend. More...
 
struct  IEngineFactoryOpenGL
 Engine factory for OpenGL rendering backend. More...
 
struct  IEngineFactoryWebGPU
 Engine factory for WebGPU rendering backend. More...
 
struct  IFence
 Fence interface. More...
 
class  IFenceD3D11
 Exposes Direct3D11-specific functionality of a fence object. More...
 
struct  IFenceD3D12
 Exposes Direct3D12-specific functionality of a fence object. More...
 
struct  IFenceGL
 Exposes OpenGL-specific functionality of a fence object. More...
 
struct  IFenceMtl
 Exposes Metal-specific functionality of a fence object. More...
 
struct  IFenceVk
 Exposes Vulkan-specific functionality of a fence object. More...
 
struct  IFenceWebGPU
 Exposes WebGPU-specific functionality of a fence object. More...
 
struct  IFileStream
 Base interface for a file stream. More...
 
class  IFramebuffer
 Framebuffer interface. More...
 
struct  IFramebufferVk
 Exposes Vulkan-specific functionality of a Framebuffer object. More...
 
struct  IHLSL2GLSLConverter
 HLSL to GLSL converter interface. More...
 
struct  Image
 Implementation of a 2D image. More...
 
struct  ImageDesc
 Image description. More...
 
struct  ImageDiffInfo
 Image difference information. More...
 
struct  ImageLoadInfo
 Image loading information. More...
 
struct  IMemoryAllocator
 Base interface for a raw memory allocator. More...
 
class  ImGuiImplDiligent
 ImGui renderer for Diligent Engine. More...
 
struct  ImmediateContextCreateInfo
 Immediate device context create info. More...
 
struct  ImmutableSamplerDesc
 Immutable sampler description. More...
 
struct  InputLayoutDesc
 Layout description. More...
 
struct  InputLayoutDescX
 C++ wrapper over InputLayoutDesc. More...
 
struct  InstanceMatrix
 Row-major 4x3 matrix. More...
 
struct  INTERFACE_ID
 Unique interface identifier. More...
 
struct  IObject
 Base interface for all dynamic objects in the engine. More...
 
class  IOSAppBase
 Base class for iOS applications. More...
 
struct  IPipelineResourceSignature
 Pipeline resource signature interface. More...
 
struct  IPipelineState
 Pipeline state interface. More...
 
struct  IPipelineStateCache
 Pipeline state cache interface. More...
 
struct  IPipelineStateCacheD3D12
 Exposes Direct3D12-specific functionality of a pipeline state cache object. More...
 
struct  IPipelineStateCacheMtl
 Exposes Metal-specific functionality of a pipeline state cache object. More...
 
struct  IPipelineStateCacheVk
 Exposes Vulkan-specific functionality of a pipeline state cache object. More...
 
struct  IPipelineStateD3D11
 Exposes Direct3D11-specific functionality of a pipeline state object. More...
 
struct  IPipelineStateD3D12
 Exposes Direct3D12-specific functionality of a pipeline state object. More...
 
struct  IPipelineStateGL
 Exposes OpenGL-specific functionality of a pipeline state object. More...
 
struct  IPipelineStateMtl
 Exposes Metal-specific functionality of a pipeline state object. More...
 
struct  IPipelineStateVk
 Exposes Vulkan-specific functionality of a pipeline state object. More...
 
struct  IPipelineStateWebGPU
 Exposes WebGPU-specific functionality of a pipeline state object. More...
 
struct  IQuery
 Query interface. More...
 
struct  IQueryD3D11
 Exposes Direct3D11-specific functionality of a Query object. More...
 
struct  IQueryD3D12
 Exposes Direct3D12-specific functionality of a Query object. More...
 
struct  IQueryGL
 Exposes OpenGL-specific functionality of a Query object. More...
 
struct  IQueryMtl
 Exposes Metal-specific functionality of a Query object. More...
 
struct  IQueryVk
 Exposes Vulkan-specific functionality of a Query object. More...
 
struct  IQueryWebGPU
 Exposes WebGPU-specific functionality of a query object. More...
 
struct  IRasterizationRateMapMtl
 Exposes Metal-specific functionality of a rasterization rate map object. More...
 
class  IReferenceCounters
 
struct  IRenderDevice
 Render device interface. More...
 
struct  IRenderDeviceD3D11
 Exposes Direct3D11-specific functionality of a render device. More...
 
struct  IRenderDeviceD3D12
 Exposes Direct3D12-specific functionality of a render device. More...
 
struct  IRenderDeviceGL
 Exposes OpenGL-specific functionality of a render device. More...
 
struct  IRenderDeviceGLES
 Interface to the render device object implemented in OpenGLES. More...
 
struct  IRenderDeviceMtl
 Exposes Metal-specific functionality of a render device. More...
 
struct  IRenderDeviceVk
 Exposes Vulkan-specific functionality of a render device. More...
 
struct  IRenderDeviceWebGPU
 Exposes WebGPU-specific functionality of a render device. More...
 
class  IRenderPass
 Render pass interface. More...
 
struct  IRenderPassVk
 Exposes Vulkan-specific functionality of a RenderPass object. More...
 
struct  IRenderStateCache
 Render state cache interface. More...
 
struct  IRenderStateNotationLoader
 Render state notation loader interface. More...
 
struct  IRenderStateNotationParser
 Render state notation parser interface. More...
 
struct  IResourceMapping
 Resource mapping. More...
 
struct  ISampler
 Texture sampler interface. More...
 
struct  ISamplerD3D11
 Exposes Direct3D11-specific functionality of a sampler object. More...
 
struct  ISamplerD3D12
 Exposes Direct3D12-specific functionality of a sampler object. More...
 
struct  ISamplerGL
 Exposes OpenGL-specific functionality of a sampler object. More...
 
struct  ISamplerMtl
 Exposes Metal-specific functionality of a sampler object. More...
 
struct  ISamplerVk
 Exposes Vulkan-specific functionality of a sampler object. More...
 
struct  ISamplerWebGPU
 Exposes WebGPU-specific functionality of a sampler object. More...
 
struct  ISerializationDevice
 Serialization device interface. More...
 
struct  ISerializedPipelineState
 Serialized pipeline state interface. More...
 
struct  ISerializedShader
 Serialized shader interface. More...
 
struct  IShader
 Shader interface. More...
 
struct  IShaderBindingTable
 Shader binding table interface. More...
 
struct  IShaderBindingTableD3D12
 Exposes Direct3D12-specific functionality of a shader binding table object. More...
 
struct  IShaderBindingTableVk
 Exposes Vulkan-specific functionality of a Shader binding table object. More...
 
struct  IShaderD3D
 Exposes Direct3D-specific functionality of a shader object. More...
 
struct  IShaderD3D11
 Exposes Direct3D11-specific functionality of a shader object. More...
 
struct  IShaderD3D12
 Exposes Direct3D12-specific functionality of a shader object. More...
 
struct  IShaderGL
 Exposes OpenGL-specific functionality of a shader object. More...
 
struct  IShaderMtl
 Exposes Metal-specific functionality of a shader object. More...
 
struct  IShaderResourceBinding
 Shader resource binding interface. More...
 
struct  IShaderResourceBindingD3D11
 Exposes Direct3D11-specific functionality of a shader resource binding object. More...
 
struct  IShaderResourceBindingD3D12
 Exposes Direct3D12-specific functionality of a shader resource binding. More...
 
struct  IShaderResourceBindingGL
 Exposes OpenGL-specific functionality of a shader resource binding object. More...
 
struct  IShaderResourceBindingMtl
 Exposes Metal-specific functionality of a shader resource binding object. More...
 
struct  IShaderResourceBindingVk
 Exposes Vulkan-specific functionality of a shader resource binding object. More...
 
struct  IShaderResourceBindingWebGPU
 Exposes WebGPU-specific functionality of a shader resource binding object. More...
 
struct  IShaderResourceVariable
 Shader resource variable. More...
 
class  IShaderResourceVariableD3D
 Interface to the Direct3D ShaderResourceVariable resource variable. More...
 
struct  IShaderSourceInputStreamFactory
 Shader source stream factory interface. More...
 
class  IShaderVk
 Exposes Vulkan-specific functionality of a shader object. More...
 
class  IShaderWebGPU
 Exposes WebGPU-specific functionality of a shader object. More...
 
struct  ISwapChain
 Swap chain interface. More...
 
struct  ISwapChainD3D11
 Exposes Direct3D11-specific functionality of a swap chain. More...
 
struct  ISwapChainD3D12
 Exposes Direct3D12-specific functionality of a swap chain. More...
 
struct  ISwapChainGL
 Exposes OpenGL-specific functionality of a swap chain. More...
 
struct  ISwapChainMtl
 Exposes Metal-specific functionality of a swap chain. More...
 
struct  ISwapChainVk
 Exposes Vulkan-specific functionality of a swap chain. More...
 
struct  ISwapChainWebGPU
 Exposes WebGPU-specific functionality of a swap chain. More...
 
struct  ITexture
 Texture interface. More...
 
struct  ITextureAtlasSuballocation
 Dynamic texture atlas suballocation. More...
 
struct  ITextureD3D11
 Exposes Direct3D11-specific functionality of a texture object. More...
 
struct  ITextureD3D12
 Exposes Direct3D12-specific functionality of a texture object. More...
 
struct  ITextureGL
 Exposes OpenGL-specific functionality of a texture object. More...
 
struct  ITextureLoader
 Texture loader object. More...
 
struct  ITextureMtl
 Exposes Metal-specific functionality of a texture object. More...
 
class  ITextureUploader
 Asynchronous texture uploader. More...
 
struct  ITextureView
 Texture view interface. More...
 
struct  ITextureViewD3D11
 Exposes Direct3D11-specific functionality of a texture view object. More...
 
struct  ITextureViewD3D12
 Exposes Direct3D12-specific functionality of a texture view object. More...
 
struct  ITextureViewGL
 Exposes OpenGL-specific functionality of a texture view object. More...
 
struct  ITextureViewMtl
 Exposes Metal-specific functionality of a texture view object. More...
 
struct  ITextureViewVk
 Exposes Vulkan-specific functionality of a texture view object. More...
 
struct  ITextureViewWebGPU
 Exposes WebGPU-specific functionality of a texture view object. More...
 
struct  ITextureVk
 Exposes Vulkan-specific functionality of a texture object. More...
 
struct  ITextureWebGPU
 Exposes WebGPU-specific functionality of a texture object. More...
 
struct  IThreadPool
 Thread pool interface. More...
 
struct  ITopLevelAS
 Top-level AS interface. More...
 
struct  ITopLevelASD3D12
 Exposes Direct3D12-specific functionality of a top-level acceleration structure object. More...
 
struct  ITopLevelASMtl
 Exposes Metal-specific functionality of a top-level acceleration structure object. More...
 
struct  ITopLevelASVk
 Exposes Vulkan-specific functionality of a Top-level acceleration structure object. More...
 
struct  IVertexPool
 Vertex pool interface. More...
 
struct  IVertexPoolAllocation
 Vertex pool allocation. More...
 
struct  LayoutElement
 Description of a single element of the input layout. More...
 
struct  LinearTexFilterSampleInfo
 
class  LinuxAppBase
 Base class for iOS applications. More...
 
struct  LoadPipelineStateInfo
 Pipeline state load info. More...
 
struct  LoadRenderPassInfo
 Render pass load info. More...
 
struct  LoadResourceSignatureInfo
 Resource signature load info. More...
 
struct  LoadShaderInfo
 Shader load info. More...
 
class  LRUCache
 A thread-safe and exception-safe LRU cache. More...
 
class  MacOSAppBase
 Base class for MacOS applications. More...
 
class  MapHelper
 Facilitates resource mapping. More...
 
struct  MappedTextureSubresource
 Describes the data for one mapped subresource. More...
 
class  MemoryFileStream
 Memory file stream implementation. More...
 
struct  MemoryShaderSourceFactoryCreateInfo
 Memory shader source factory create info. More...
 
struct  MemoryShaderSourceFactoryCreateInfoX
 C++ wrapper over MemoryShaderSourceFactoryCreateInfo. More...
 
struct  MemoryShaderSourceFileInfo
 Shader source file info. More...
 
struct  MeshShaderProperties
 Mesh Shader Properties. More...
 
struct  MipLevelProperties
 Describes the mip level properties. More...
 
struct  MultiDrawAttribs
 MultiDraw command attributes. More...
 
class  MultiDrawAttribsX
 C++ wrapper over MultiDrawAttribs. More...
 
struct  MultiDrawIndexedAttribs
 MultiDraw command attributes. More...
 
class  MultiDrawIndexedAttribsX
 C++ wrapper over MultiDrawIndexedAttribs. More...
 
struct  MultiDrawIndexedItem
 Multi-draw indexed command item. More...
 
struct  MultiDrawItem
 Multi-draw command item. More...
 
struct  NDCAttribs
 Normalized device coordinates attributes. More...
 
class  ObjectBase
 Template class implementing base functionality for an object. More...
 
class  ObjectsRegistry
 
struct  OpenXRAttribs
 OpenXR attributes. More...
 
struct  OptimizedClearValue
 Defines optimized clear value. More...
 
class  PipelineLayoutVk
 Implementation of the Diligent::PipelineLayoutVk class. More...
 
class  PipelineLayoutWebGPU
 Implementation of the Diligent::PipelineLayoutWebGPU class. More...
 
struct  PipelineResourceBinding
 Pipeline resource binding. More...
 
struct  PipelineResourceBindingAttribs
 Contains attributes to calculate pipeline resource bindings. More...
 
struct  PipelineResourceDesc
 Pipeline resource description. More...
 
struct  PipelineResourceLayoutDesc
 Pipeline layout description. More...
 
struct  PipelineResourceLayoutDescX
 C++ wrapper over PipelineResourceSignatureDesc. More...
 
class  PipelineResourceSignatureBase
 Template class implementing base functionality of the pipeline resource signature object. More...
 
class  PipelineResourceSignatureD3D11Impl
 Implementation of the Diligent::PipelineResourceSignatureD3D11Impl class. More...
 
class  PipelineResourceSignatureD3D12Impl
 Implementation of the Diligent::PipelineResourceSignatureD3D12Impl class. More...
 
struct  PipelineResourceSignatureDesc
 Pipeline resource signature description. More...
 
class  PipelineResourceSignatureDescWrapper
 Helper class that wraps the pipeline resource signature description. More...
 
struct  PipelineResourceSignatureDescX
 C++ wrapper over PipelineResourceSignatureDesc. More...
 
class  PipelineResourceSignatureGLImpl
 Implementation of the Diligent::PipelineResourceSignatureGLImpl class. More...
 
struct  PipelineResourceSignatureInternalData
 Pipeline resource signature internal data required for serialization/deserialization. More...
 
class  PipelineResourceSignatureVkImpl
 Implementation of the Diligent::PipelineResourceSignatureVkImpl class. More...
 
class  PipelineResourceSignatureWebGPUImpl
 Implementation of the Diligent::PipelineResourceSignatureWebGPUImpl class. More...
 
struct  PipelineStateArchiveInfo
 Pipeline state archive info. More...
 
class  PipelineStateBase
 Template class implementing base functionality of the pipeline state object. More...
 
class  PipelineStateCacheBase
 Template class implementing base functionality of the pipeline state cache object. More...
 
struct  PipelineStateCacheCreateInfo
 Pipeline state pbject cache create info. More...
 
class  PipelineStateCacheD3D12Impl
 Pipeline state cache implementation in Direct3D12 backend. More...
 
struct  PipelineStateCacheDesc
 Pipeline state cache description. More...
 
class  PipelineStateCacheVkImpl
 Pipeline state cache object implementation in Vulkan backend. More...
 
struct  PipelineStateCreateInfo
 Pipeline state creation attributes. More...
 
struct  PipelineStateCreateInfoX
 C++ wrapper over PipelineStateCreateInfo. More...
 
class  PipelineStateD3D11Impl
 Pipeline state object implementation in Direct3D11 backend. More...
 
class  PipelineStateD3D12Impl
 Pipeline state object implementation in Direct3D12 backend. More...
 
struct  PipelineStateDesc
 Pipeline state description. More...
 
class  PipelineStateGLImpl
 Pipeline state object implementation in OpenGL backend. More...
 
struct  PipelineStateNotation
 Pipeline state notation. More...
 
struct  PipelineStateUnpackInfo
 Pipeline state unpack parameters. More...
 
class  PipelineStateVkImpl
 Pipeline state object implementation in Vulkan backend. More...
 
class  PipelineStateWebGPUImpl
 Pipeline state object implementation in WebGPU backend. More...
 
struct  Plane3D
 
class  Polygon2DTriangulator
 
class  Polygon3DTriangulator
 3D polygon triangulator. More...
 
struct  PremultiplyAlphaAttribs
 Parameters of the PremultiplyAlpha function. More...
 
class  ProxyDataBlob
 Implementation of the proxy data blob that does not own the data. More...
 
class  ProxyPipelineState
 Proxy pipeline state delegates all calls to the internal pipeline object. More...
 
class  QueryBase
 Template class implementing base functionality of the query object. More...
 
class  QueryD3D11Impl
 Query implementation in Direct3D11 backend. More...
 
class  QueryD3D12Impl
 Query implementation in Direct3D12 backend. More...
 
struct  QueryDataBinaryOcclusion
 Binary occlusion query data. More...
 
struct  QueryDataDuration
 Duration query data. More...
 
struct  QueryDataOcclusion
 Occlusion query data. More...
 
struct  QueryDataPipelineStatistics
 Pipeline statistics query data. More...
 
struct  QueryDataTimestamp
 Timestamp query data. More...
 
struct  QueryDesc
 Query description. More...
 
class  QueryGLImpl
 Query object implementation in OpenGL backend. More...
 
class  QueryVkImpl
 Query implementation in Vulkan backend. More...
 
class  QueryWebGPUImpl
 Query implementation in WebGPU backend. More...
 
struct  RasterizationRateLayerDesc
 Rasterization rate map layer description. More...
 
struct  RasterizationRateMapCreateInfo
 Rasterization rate map create info. More...
 
struct  RasterizationRateMapDesc
 Rasterization rate map description. More...
 
struct  RasterizerStateDesc
 Rasterizer state description. More...
 
struct  RayTracingGeneralShaderGroup
 Ray tracing general shader group description. More...
 
struct  RayTracingPipelineDesc
 This structure describes the ray tracing pipeline state and is part of the RayTracingPipelineStateCreateInfo structure. More...
 
struct  RayTracingPipelineNotation
 Ray tracing pipeline state notation. More...
 
struct  RayTracingPipelineStateCreateInfo
 Ray tracing pipeline state initialization information. More...
 
struct  RayTracingPipelineStateCreateInfoX
 C++ wrapper over RayTracingPipelineStateCreateInfo. More...
 
struct  RayTracingProceduralHitShaderGroup
 Ray tracing procedural hit shader group description. More...
 
struct  RayTracingProperties
 Ray tracing properties. More...
 
struct  RayTracingTriangleHitShaderGroup
 Ray tracing triangle hit shader group description. More...
 
struct  Rect
 Describes the rectangle. More...
 
class  RefCntAutoPtr
 Template class that implements reference counting. More...
 
struct  RefCntContainer
 Template struct that wraps an object of type Type into a reference-counted container. More...
 
class  RefCntWeakPtr
 Implementation of weak pointer. More...
 
class  RefCountedObject
 Base class for all reference counting objects. More...
 
class  ReloadablePipelineState
 
class  ReloadableShader
 
class  RenderDeviceBase
 Base implementation of a render device. More...
 
class  RenderDeviceD3D11Impl
 Render device implementation in Direct3D11 backend. More...
 
class  RenderDeviceD3D12Impl
 Render device implementation in Direct3D12 backend. More...
 
class  RenderDeviceD3DBase
 Base implementation of a D3D render device. More...
 
class  RenderDeviceGLImpl
 Render device implementation in OpenGL backend. More...
 
struct  RenderDeviceInfo
 Render device information. More...
 
class  RenderDeviceNextGenBase
 Base implementation of the render device for next-generation backends. More...
 
struct  RenderDeviceShaderVersionInfo
 Render device shader version information. More...
 
class  RenderDeviceVkImpl
 Render device implementation in Vulkan backend. More...
 
class  RenderDeviceWebGPUImpl
 Render device implementation in WebGPU backend. More...
 
class  RenderDeviceWithCache
 C++ wrapper over IRenderDevice and IRenderStateCache. More...
 
class  RenderDeviceX
 C++ wrapper over IRenderDevice. More...
 
struct  RenderPassAttachmentDesc
 Render pass attachment description. More...
 
class  RenderPassBase
 Template class implementing base functionality of the render pass object. More...
 
class  RenderPassD3D11Impl
 Render pass implementation in Direct3D11 backend. More...
 
class  RenderPassD3D12Impl
 Render pass implementation in Direct3D12 backend. More...
 
struct  RenderPassDesc
 Render pass description. More...
 
struct  RenderPassDescX
 C++ wrapper over Diligent::RenderPassDesc. More...
 
class  RenderPassGLImpl
 Render pass implementation in OpenGL backend. More...
 
struct  RenderPassUnpackInfo
 Render pass unpack parameters. More...
 
class  RenderPassVkImpl
 Render pass implementation in Vulkan backend. More...
 
class  RenderPassWebGPUImpl
 Render pass implementation in WebGPU backend. More...
 
struct  RenderStateCacheCreateInfo
 Render state cache create information. More...
 
class  RenderStateCacheImpl
 Implementation of IRenderStateCache. More...
 
struct  RenderStateNotationLoaderCreateInfo
 Render state notation loader initialization info. More...
 
class  RenderStateNotationLoaderImpl
 Implementation of IRenderStateNotationLoader. More...
 
struct  RenderStateNotationParserCreateInfo
 Render state notation parser initialization information. More...
 
class  RenderStateNotationParserImpl
 Implementation of IRenderStateNotationParser. More...
 
struct  RenderStateNotationParserInfo
 Render state notation parser info. More...
 
struct  RenderTargetBlendDesc
 Describes a blend state for a single render target. More...
 
struct  ResolveTextureSubresourceAttribs
 Describes multi-sampled texture resolve command arguments. More...
 
class  ResourceD3D11Base
 Base implementation of a D3D11 resource. More...
 
struct  ResourceMappingCreateInfo
 Resource mapping create information. More...
 
struct  ResourceMappingEntry
 Describes the resource mapping object entry. More...
 
class  ResourceMappingImpl
 Implementation of the resource mapping. More...
 
class  ResourceRegistry
 Helper class that facilitates resource management. More...
 
class  ResourceReleaseQueue
 Facilitates safe resource destruction in D3D12 and Vulkan. More...
 
struct  ResourceSignatureArchiveInfo
 Pipeline resource signature archive info. More...
 
struct  ResourceSignatureUnpackInfo
 Resource signature unpack parameters. More...
 
struct  ResourceTileMappingsD3D12
 This structure is used by ICommandQueueD3D12::UpdateTileMappings(). More...
 
class  RingBuffer
 Implementation of a ring buffer. The class is not thread-safe. More...
 
class  RootParamsManager
 Container for root parameters. More...
 
class  RootSignatureCacheD3D12
 Root signature cache that deduplicates RootSignatureD3D12 objects. More...
 
class  RootSignatureD3D12
 Implementation of the Diligent::RootSignature class. More...
 
struct  RTGeneralShaderGroupNotation
 Ray tracing general shader group notation. More...
 
struct  RTProceduralHitShaderGroupNotation
 Ray tracing procedural hit shader group notation. More...
 
struct  RTTriangleHitShaderGroupNotation
 Ray tracing triangle hit shader group notation. More...
 
struct  SampleDesc
 Sample description. More...
 
class  SamplerBase
 Template class implementing base functionality of the sampler object. More...
 
class  SamplerD3D11Impl
 Sampler implementation in Direct3D11 backend. More...
 
class  SamplerD3D12Impl
 Sampler object implementation in Direct3D12 backend. More...
 
struct  SamplerDesc
 Sampler description. More...
 
class  SamplerGLImpl
 Sampler implementation in OpenGL backend. More...
 
struct  SamplerProperties
 Texture sampler properties. More...
 
class  SamplerVkImpl
 Sampler object object implementation in Vulkan backend. More...
 
class  SamplerWebGPUImpl
 Sampler implementation in WebGPU backend. More...
 
class  ScopedDebugGroup
 Helper class to manage scoped debug group. More...
 
class  ScopedQueryHelper
 Helper class to manage scoped queries. More...
 
struct  ScratchBufferSizes
 Defines the scratch buffer info for acceleration structure. More...
 
class  ScreenSpaceAmbientOcclusion
 Implements screen-space ambient occlusion post-process effect. More...
 
class  ScreenSpaceReflection
 Implements screen-space reflection post-process effect. More...
 
struct  SerializationDeviceCreateInfo
 Serialization device creation information. More...
 
struct  SerializationDeviceD3D11Info
 Serialization device attributes for Direct3D11 backend. More...
 
struct  SerializationDeviceD3D12Info
 Serialization device attributes for Direct3D12 backend. More...
 
struct  SerializationDeviceGLInfo
 Serialization device attributes for OpenGL backend. More...
 
struct  SerializationDeviceMtlInfo
 Serialization device attributes for Metal backend. More...
 
struct  SerializationDeviceVkInfo
 Serialization device attributes for Vulkan backend. More...
 
struct  SetRenderTargetsAttribs
 SetRenderTargetsExt command attributes. More...
 
struct  ShaderArchiveInfo
 Shader archive info. More...
 
class  ShaderBase
 Template class implementing base functionality of the shader object. More...
 
class  ShaderBindingTableBase
 Template class implementing base functionality of the shader binding table object. More...
 
class  ShaderBindingTableD3D12Impl
 Shader binding table object implementation in Direct3D12 backend. More...
 
struct  ShaderBindingTableDesc
 Shader binding table description. More...
 
struct  ShaderCodeBufferDesc
 Describes a shader constant buffer. More...
 
struct  ShaderCodeVariableDesc
 Describes the shader code variable. More...
 
struct  ShaderCreateInfo
 Shader creation attributes. More...
 
class  ShaderD3D11Impl
 Shader implementation in Direct3D11 backend. More...
 
class  ShaderD3D12Impl
 Implementation of a shader object in Direct3D12 backend. More...
 
class  ShaderD3DBase
 Base implementation of a D3D shader. More...
 
struct  ShaderDesc
 Shader description. More...
 
class  ShaderGLImpl
 Shader object implementation in OpenGL backend. More...
 
struct  ShaderIncludePreprocessInfo
 Shader include preprocess info. More...
 
struct  ShaderMacro
 Shader Macro. More...
 
struct  ShaderMacroArray
 Shader macro array. More...
 
class  ShaderResourceBindingBase
 Template class implementing base functionality of the shader resource binding. More...
 
class  ShaderResourceBindingD3D11Impl
 Implementation of shader resource binding object in Direct3D11 backend. More...
 
class  ShaderResourceBindingD3D12Impl
 Implementation of the Diligent::IShaderResourceBindingD3D12 interface. More...
 
class  ShaderResourceBindingGLImpl
 Shader resource binding object implementation in OpenGL backend. More...
 
class  ShaderResourceBindingVkImpl
 Implementation of the Diligent::IShaderResourceBindingVk interface. More...
 
class  ShaderResourceBindingWebGPUImpl
 Shader resource binding object implementation in OpenGL backend. More...
 
class  ShaderResourceCacheD3D11
 The class implements a cache that holds resources bound to all shader stages. More...
 
struct  ShaderResourceDesc
 Shader resource description. More...
 
struct  ShaderResourceHashKey
 Hash map key that identifies shader resource by its name and shader stages. More...
 
class  ShaderResources
 Diligent::ShaderResources class. More...
 
class  ShaderResourcesD3D11
 Diligent::ShaderResourcesD3D11 class. More...
 
class  ShaderResourcesD3D12
 Diligent::ShaderResourcesD3D12 class. More...
 
struct  ShaderResourceVariableDesc
 Describes shader variable. More...
 
class  ShaderResourceVariableX
 C++ wrapper over IShaderResourceVariable. More...
 
struct  ShaderSourceFileSubstitueInfo
 Shader source file substitute info. More...
 
struct  ShaderUnpackInfo
 Shader unpack parameters. More...
 
struct  ShaderVariableBase
 Base implementation of a shader variable. More...
 
class  ShaderVariableManagerD3D11
 Diligent::ShaderVariableManagerD3D11 class. More...
 
class  ShaderVkImpl
 Shader object object implementation in Vulkan backend. More...
 
class  ShaderWebGPUImpl
 Shader implementation in WebGPU backend. More...
 
struct  ShadingRateAttachment
 Shading rate attachment description. More...
 
struct  ShadingRateMode
 Combination of a shading rate and supported multi-sampling mode. More...
 
struct  ShadingRateProperties
 Shading rate properties. More...
 
class  ShadowMapManager
 Shadow map manager. More...
 
struct  SparseBufferMemoryBindInfo
 Defines the sparse buffer memory binding information. More...
 
struct  SparseBufferMemoryBindRange
 Defines the sparse buffer memory binding range. More...
 
struct  SparseBufferProperties
 Describes the sparse buffer properties. More...
 
struct  SparseResourceProperties
 Sparse memory properties. More...
 
struct  SparseTextureFormatInfo
 This structure is returned by IRenderDevice::GetSparseTextureFormatInfo() More...
 
struct  SparseTextureMemoryBindInfo
 Sparse texture memory binding information. More...
 
struct  SparseTextureMemoryBindRange
 Defines the sparse texture memory binding range. More...
 
struct  SparseTextureProperties
 Describes the sparse texture properties. More...
 
struct  SphereGeometryPrimitiveAttributes
 Sphere geometry primitive attributes. More...
 
class  SPIRVShaderResources
 Diligent::SPIRVShaderResources class. More...
 
struct  StateTransitionDesc
 Resource state transition barrier description. More...
 
class  StaticStaleResourceWrapper
 Helper class that wraps stale resources of the same type. More...
 
struct  StencilOpDesc
 Describes stencil operations that are performed based on the results of depth test. More...
 
class  StringDataBlobImpl
 String data blob implementation. More...
 
class  StringPool
 Implementation of a simple fixed-size string pool. More...
 
struct  SubpassDependencyDesc
 Subpass dependency description. More...
 
struct  SubpassDesc
 Render pass subpass description. More...
 
struct  SubpassDescX
 C++ wrapper over Diligent::SubpassDesc struct. More...
 
class  SuperResolution
 Implements super-resolution post-process effect. More...
 
class  SwapChainBase
 Base implementation of the swap chain. More...
 
class  SwapChainD3D11Impl
 Swap chain implementation in Direct3D11 backend. More...
 
class  SwapChainD3D12Impl
 Swap chain implementation in Direct3D12 backend. More...
 
class  SwapChainD3DBase
 Base implementation of a D3D swap chain. More...
 
struct  SwapChainDesc
 Swap chain description. More...
 
class  SwapChainGLBase
 Base implementation of a swap chain for OpenGL. More...
 
class  SwapChainGLImpl
 Swap chain implementation in OpenGL backend. More...
 
class  SwapChainGLIOS
 Implementation of the Diligent::ISwapChainGL interface on IOS. More...
 
class  SwapChainVkImpl
 Swap chain implementation in Vulkan backend. More...
 
class  SwapChainWebGPUImpl
 Swap chain implementation in WebGPU backend. More...
 
class  TemporalAntiAliasing
 Implements temporal anti-aliasing. More...
 
class  Texture1D_D3D11
 Implementation of a 1D texture in Direct3D11 backend. More...
 
class  Texture1D_GL
 1D texture implementation in OpenGL backend. More...
 
class  Texture1DArray_GL
 1D texture array implementation in OpenGL backend. More...
 
class  Texture2D_D3D11
 Implementation of a 2D texture in Direct3D11 backend. More...
 
class  Texture2D_GL
 2D texture implementation in OpenGL backend. More...
 
class  Texture2DArray_GL
 2D texture array implementation in OpenGL backend. More...
 
class  Texture3D_D3D11
 Implementation of a 3D texture in Direct3D11 backend. More...
 
class  Texture3D_GL
 3D texture implementation in OpenGL backend. More...
 
class  TextureBase
 Base implementation of the ITexture interface. More...
 
class  TextureBaseD3D11
 Base implementation of a texture object in Direct3D11 backend. More...
 
class  TextureBaseGL
 Base implementation of a texture object in OpenGL backend. More...
 
struct  TextureComponentMapping
 Defines the per-channel texutre component mapping. More...
 
class  TextureCube_GL
 Cube texture implementation in OpenGL backend. More...
 
class  TextureCubeArray_GL
 Cube array texture implementation in OpenGL backend. More...
 
class  TextureD3D12Impl
 Implementation of a texture object in Direct3D12 backend. More...
 
struct  TextureData
 Describes the initial data to store in the texture. More...
 
struct  TextureDesc
 Texture description. More...
 
struct  TextureFormatAttribs
 Describes invariant texture format attributes. More...
 
struct  TextureFormatInfo
 Basic texture format description. More...
 
struct  TextureFormatInfoExt
 Extended texture format information. More...
 
class  TextureLoaderImpl
 Implementation of ITextureLoader. More...
 
struct  TextureLoadInfo
 Texture loading information. More...
 
struct  TextureProperties
 Texture properties. More...
 
struct  TextureSubResData
 Describes data for one subresource. More...
 
struct  TextureUploaderDesc
 Texture uploader description. More...
 
struct  TextureUploaderStats
 Texture uploader statistics. More...
 
class  TextureViewBase
 Template class implementing base functionality of the texture view interface. More...
 
class  TextureViewD3D11Impl
 Texture view implementation in Direct3D11 backend. More...
 
class  TextureViewD3D12Impl
 Texture view object implementation in Direct3D12 backend. More...
 
struct  TextureViewDesc
 Texture view description. More...
 
class  TextureViewGLImpl
 Texture view implementation in OpenGL backend. More...
 
class  TextureViewVkImpl
 Texture view implementation in Vulkan backend. More...
 
class  TextureViewWebGPUImpl
 Texture view implementation in WebGPU backend. More...
 
class  TextureVkImpl
 Texture object implementation in Vulkan backend. More...
 
class  TextureWebGPUImpl
 Texture implementation in WebGPU backend. More...
 
struct  ThreadPoolCreateInfo
 Thread pool create information. More...
 
struct  TilePipelineDesc
 Tile pipeline state description. More...
 
struct  TilePipelineNotation
 Tile pipeline state notation. More...
 
struct  TilePipelineStateCreateInfo
 Tile pipeline state initialization information. More...
 
struct  TilePipelineStateCreateInfoX
 C++ wrapper over TilePipelineStateCreateInfo. More...
 
struct  TLASBuildInfo
 Defines TLAS state that was used in the last build. More...
 
struct  TLASBuildInstanceData
 This structure is used by BuildTLASAttribs. More...
 
struct  TLASInstanceDesc
 Top-level AS instance description. More...
 
class  TopLevelASBase
 Template class implementing base functionality of the top-level acceleration structure object. More...
 
class  TopLevelASD3D12Impl
 Top-level acceleration structure object implementation in Direct3D12 backend. More...
 
struct  TopLevelASDesc
 Top-level AS description. More...
 
struct  TraceRaysAttribs
 This structure is used by IDeviceContext::TraceRays(). More...
 
struct  TraceRaysIndirectAttribs
 This structure is used by IDeviceContext::TraceRaysIndirect(). More...
 
class  TVOSAppBase
 Base class for tvOS applications. More...
 
struct  UpdateIndirectRTBufferAttribs
 This structure is used by IDeviceContext::UpdateSBT(). More...
 
struct  UploadBufferDesc
 Upload buffer description. More...
 
class  USD_Renderer
 Implementation of a GLTF PBR renderer. More...
 
class  UWPAppBase
 Base class for UWP applications. More...
 
struct  VALUE_TYPE2CType
 Template structure to convert VALUE_TYPE enumeration into C-type. More...
 
struct  VALUE_TYPE2CType< VT_FLOAT16 >
 VALUE_TYPE2CType<> template specialization for half-precision 16-bit floating-point value type. More...
 
struct  VALUE_TYPE2CType< VT_FLOAT32 >
 VALUE_TYPE2CType<> template specialization for full-precision 32-bit floating-point value type. More...
 
struct  VALUE_TYPE2CType< VT_FLOAT64 >
 VALUE_TYPE2CType<> template specialization for double-precision 64-bit floating-point value type. More...
 
struct  VALUE_TYPE2CType< VT_INT16 >
 VALUE_TYPE2CType<> template specialization for 16-bit integer value type. More...
 
struct  VALUE_TYPE2CType< VT_INT32 >
 VALUE_TYPE2CType<> template specialization for 32-bit integer value type. More...
 
struct  VALUE_TYPE2CType< VT_INT8 >
 VALUE_TYPE2CType<> template specialization for 8-bit integer value type. More...
 
struct  VALUE_TYPE2CType< VT_UINT16 >
 VALUE_TYPE2CType<> template specialization for 16-bit unsigned-integer value type. More...
 
struct  VALUE_TYPE2CType< VT_UINT32 >
 VALUE_TYPE2CType<> template specialization for 32-bit unsigned-integer value type. More...
 
struct  VALUE_TYPE2CType< VT_UINT8 >
 VALUE_TYPE2CType<> template specialization for 8-bit unsigned-integer value type. More...
 
class  VectorFieldRenderer
 Renders 2D vector field (e.g. motion vectors). More...
 
struct  Version
 Version. More...
 
struct  VertexPoolCreateInfo
 Vertex pool create information. More...
 
struct  VertexPoolDesc
 Vertex pool description. More...
 
struct  VertexPoolElementDesc
 Vertex pool element description. More...
 
struct  VertexPoolUsageStats
 Vertex pool usage stats. More...
 
struct  VertexStreamInfo
 Describes input vertex stream. More...
 
struct  Viewport
 Describes the viewport. More...
 
struct  VulkanDescriptorPoolSize
 Descriptor pool size. More...
 
struct  WaveOpProperties
 Wave operation properties. More...
 
struct  WebGPUResourceAttribs
 WebGPU-specific resource attributes. More...
 
class  WebGPUResourceBase
 Base implementation of a WebGPU resource. More...
 
class  WGSLShaderResources
 Diligent::WGSLShaderResources class. More...
 
class  Win32AppBase
 Base class for Win32 applications. More...
 
struct  WriteBLASCompactedSizeAttribs
 This structure is used by IDeviceContext::WriteBLASCompactedSize(). More...
 
struct  WriteTLASCompactedSizeAttribs
 This structure is used by IDeviceContext::WriteTLASCompactedSize(). More...
 

Typedefs

typedef struct Diligent::ShaderCodeVariableDesc ShaderCodeVariableDesc
 Describes the shader code variable.
 
typedef struct Diligent::ShaderCodeBufferDesc ShaderCodeBufferDesc
 Describes a shader constant buffer.
 
using D3D11ShaderResourceCounters = std::array<D3D11ResourceRangeCounters, D3D11_RESOURCE_RANGE_COUNT>
 Resource counters for all shader stages and all resource types.
 
typedef void(DILIGENT_CALL_TYPE * ReloadGraphicsPipelineCallbackType) (const char *PipelineName, GraphicsPipelineDesc &GraphicsDesc, void *pUserData)
 Type of the callback function called by the IRenderStateCache::Reload method.
 
typedef float Float32
 32-bit float
 
typedef double Float64
 64-bit float
 
typedef int64_t Int64
 64-bit signed integer
 
typedef int32_t Int32
 32-bit signed integer
 
typedef int16_t Int16
 16-bit signed integer
 
typedef int8_t Int8
 8-bit signed integer
 
typedef uint64_t Uint64
 64-bit unsigned integer
 
typedef uint32_t Uint32
 32-bit unsigned integer
 
typedef uint16_t Uint16
 16-bit unsigned integer
 
typedef uint8_t Uint8
 8-bit unsigned integer
 
typedef size_t SizeType
 Size type.
 
typedef void * PVoid
 Pointer to void.
 
typedef const void * CPVoid
 Pointer to const void.
 
typedef bool Bool
 Boolean.
 
using String = std::basic_string<Char>
 String variable.
 
typedef void(DILIGENT_CALL_TYPE * DebugMessageCallbackType) (enum DEBUG_MESSAGE_SEVERITY Severity, const Char *Message, const Char *Function, const Char *File, int Line)
 Type of the debug message callback function.
 

Enumerations

enum class  BoxVisibility { Invisible , Intersecting , FullyVisible }
 Bounding box visibility. More...
 
enum  TRIANGULATE_POLYGON_RESULT : Uint32 {
  TRIANGULATE_POLYGON_RESULT_OK = 0 , TRIANGULATE_POLYGON_RESULT_TOO_FEW_VERTS = 1u << 0u , TRIANGULATE_POLYGON_RESULT_VERTS_COLLINEAR = 1u << 1u , TRIANGULATE_POLYGON_RESULT_INVALID_CONVEX = 1u << 2u ,
  TRIANGULATE_POLYGON_RESULT_INVALID_EAR = 1u << 3u , TRIANGULATE_POLYGON_RESULT_NO_EAR_FOUND = 1u << 4u
}
 Triangulation result flags returned by the polygon triangulator. More...
 
enum  GEOMETRY_PRIMITIVE_VERTEX_FLAGS : Uint32 {
  GEOMETRY_PRIMITIVE_VERTEX_FLAG_NONE = 0u , GEOMETRY_PRIMITIVE_VERTEX_FLAG_POSITION = 1u << 0u , GEOMETRY_PRIMITIVE_VERTEX_FLAG_NORMAL = 1u << 1u , GEOMETRY_PRIMITIVE_VERTEX_FLAG_TEXCOORD = 1u << 2u ,
  GEOMETRY_PRIMITIVE_VERTEX_FLAG_LAST = GEOMETRY_PRIMITIVE_VERTEX_FLAG_TEXCOORD , GEOMETRY_PRIMITIVE_VERTEX_FLAG_ALL , GEOMETRY_PRIMITIVE_VERTEX_FLAG_POS_NORM , GEOMETRY_PRIMITIVE_VERTEX_FLAG_POS_TEX
}
 Geometry primitive vertex flags. More...
 
enum  GEOMETRY_PRIMITIVE_TYPE : Uint32 { GEOMETRY_PRIMITIVE_TYPE_UNDEFINED = 0u , GEOMETRY_PRIMITIVE_TYPE_CUBE , GEOMETRY_PRIMITIVE_TYPE_SPHERE , GEOMETRY_PRIMITIVE_TYPE_COUNT }
 Geometry primitive types. More...
 
enum  ASYNC_TASK_STATUS : Uint32 {
  ASYNC_TASK_STATUS_UNKNOWN , ASYNC_TASK_STATUS_NOT_STARTED , ASYNC_TASK_STATUS_RUNNING , ASYNC_TASK_STATUS_CANCELLED ,
  ASYNC_TASK_STATUS_COMPLETE
}
 Asynchronous task status. More...
 
enum  ARCHIVE_DEVICE_DATA_FLAGS : Uint32 {
  ARCHIVE_DEVICE_DATA_FLAG_NONE = 0u , ARCHIVE_DEVICE_DATA_FLAG_D3D11 = 1u << 0u , ARCHIVE_DEVICE_DATA_FLAG_D3D12 = 1u << 1u , ARCHIVE_DEVICE_DATA_FLAG_GL = 1u << 2u ,
  ARCHIVE_DEVICE_DATA_FLAG_GLES = 1u << 3u , ARCHIVE_DEVICE_DATA_FLAG_VULKAN = 1u << 4u , ARCHIVE_DEVICE_DATA_FLAG_METAL_MACOS = 1u << 5u , ARCHIVE_DEVICE_DATA_FLAG_METAL_IOS = 1u << 6u ,
  ARCHIVE_DEVICE_DATA_FLAG_WEBGPU = 1u << 7u , ARCHIVE_DEVICE_DATA_FLAG_LAST = ARCHIVE_DEVICE_DATA_FLAG_WEBGPU , ARCHIVE_DEVICE_DATA_FLAG_ALL = ARCHIVE_DEVICE_DATA_FLAG_LAST * 2 - 1
}
 Flags that indicate which device data will be serialized. More...
 
enum  PSO_CREATE_INTERNAL_FLAGS : Uint32 { }
 Internal PSO create flags. More...
 
enum class  ResourceCacheContentType : Uint8 { Signature , SRB }
 The type of the content that is stored in the shader resource cache. More...
 
enum  BLEND_FACTOR : Int8 {
  BLEND_FACTOR_UNDEFINED = 0 , BLEND_FACTOR_ZERO , BLEND_FACTOR_ONE , BLEND_FACTOR_SRC_COLOR ,
  BLEND_FACTOR_INV_SRC_COLOR , BLEND_FACTOR_SRC_ALPHA , BLEND_FACTOR_INV_SRC_ALPHA , BLEND_FACTOR_DEST_ALPHA ,
  BLEND_FACTOR_INV_DEST_ALPHA , BLEND_FACTOR_DEST_COLOR , BLEND_FACTOR_INV_DEST_COLOR , BLEND_FACTOR_SRC_ALPHA_SAT ,
  BLEND_FACTOR_BLEND_FACTOR , BLEND_FACTOR_INV_BLEND_FACTOR , BLEND_FACTOR_SRC1_COLOR , BLEND_FACTOR_INV_SRC1_COLOR ,
  BLEND_FACTOR_SRC1_ALPHA , BLEND_FACTOR_INV_SRC1_ALPHA , BLEND_FACTOR_NUM_FACTORS
}
 Blend factors. More...
 
enum  BLEND_OPERATION : Int8 {
  BLEND_OPERATION_UNDEFINED = 0 , BLEND_OPERATION_ADD , BLEND_OPERATION_SUBTRACT , BLEND_OPERATION_REV_SUBTRACT ,
  BLEND_OPERATION_MIN , BLEND_OPERATION_MAX , BLEND_OPERATION_NUM_OPERATIONS
}
 Blending operation. More...
 
enum  COLOR_MASK : Uint8 {
  COLOR_MASK_NONE = 0u , COLOR_MASK_RED = 1u << 0u , COLOR_MASK_GREEN = 1u << 1u , COLOR_MASK_BLUE = 1u << 2u ,
  COLOR_MASK_ALPHA = 1u << 3u , COLOR_MASK_RGB = COLOR_MASK_RED | COLOR_MASK_GREEN | COLOR_MASK_BLUE , COLOR_MASK_ALL = (COLOR_MASK_RGB | COLOR_MASK_ALPHA)
}
 Color component write flags. More...
 
enum  LOGIC_OPERATION : Int8 {
  LOGIC_OP_CLEAR = 0 , LOGIC_OP_SET , LOGIC_OP_COPY , LOGIC_OP_COPY_INVERTED ,
  LOGIC_OP_NOOP , LOGIC_OP_INVERT , LOGIC_OP_AND , LOGIC_OP_NAND ,
  LOGIC_OP_OR , LOGIC_OP_NOR , LOGIC_OP_XOR , LOGIC_OP_EQUIV ,
  LOGIC_OP_AND_REVERSE , LOGIC_OP_AND_INVERTED , LOGIC_OP_OR_REVERSE , LOGIC_OP_OR_INVERTED ,
  LOGIC_OP_NUM_OPERATIONS
}
 Logic operation. More...
 
enum  RAYTRACING_BUILD_AS_FLAGS : Uint8 {
}
 Defines acceleration structures build flags. More...
 
enum  BUFFER_MODE : Uint8 {
  BUFFER_MODE_UNDEFINED = 0 , BUFFER_MODE_FORMATTED , BUFFER_MODE_STRUCTURED , BUFFER_MODE_RAW ,
  BUFFER_MODE_NUM_MODES
}
 Describes the buffer access mode. More...
 
enum  MISC_BUFFER_FLAGS : Uint8 { MISC_BUFFER_FLAG_NONE = 0 , MISC_BUFFER_FLAG_SPARSE_ALIASING = 1u << 0 }
 Miscellaneous buffer flags. More...
 
enum  PSO_ARCHIVE_FLAGS : Uint32 { PSO_ARCHIVE_FLAG_NONE = 0u , PSO_ARCHIVE_FLAG_STRIP_REFLECTION = 1u << 0 , PSO_ARCHIVE_FLAG_DO_NOT_PACK_SIGNATURES = 1u << 1 }
 Pipeline state archive flags. More...
 
enum  PSO_UNPACK_FLAGS : Uint32 { PSO_UNPACK_FLAG_NONE = 0u , PSO_UNPACK_FLAG_NO_VALIDATION = 1u << 0 }
 Pipeline state unpack flags. More...
 
enum  STENCIL_OP : Int8 {
  STENCIL_OP_UNDEFINED = 0 , STENCIL_OP_KEEP = 1 , STENCIL_OP_ZERO = 2 , STENCIL_OP_REPLACE = 3 ,
  STENCIL_OP_INCR_SAT = 4 , STENCIL_OP_DECR_SAT = 5 , STENCIL_OP_INVERT = 6 , STENCIL_OP_INCR_WRAP = 7 ,
  STENCIL_OP_DECR_WRAP = 8 , STENCIL_OP_NUM_OPS
}
 Stencil operation. More...
 
enum  DRAW_FLAGS : Uint8 {
  DRAW_FLAG_NONE = 0u , DRAW_FLAG_VERIFY_STATES = 1u << 0u , DRAW_FLAG_VERIFY_DRAW_ATTRIBS = 1u << 1u , DRAW_FLAG_VERIFY_ALL = DRAW_FLAG_VERIFY_STATES | DRAW_FLAG_VERIFY_DRAW_ATTRIBS ,
  DRAW_FLAG_DYNAMIC_RESOURCE_BUFFERS_INTACT = 1u << 2u
}
 Draw command flags. More...
 
enum  RESOURCE_STATE_TRANSITION_MODE : Uint8 { RESOURCE_STATE_TRANSITION_MODE_NONE = 0 , RESOURCE_STATE_TRANSITION_MODE_TRANSITION , RESOURCE_STATE_TRANSITION_MODE_VERIFY }
 Defines resource state transition mode performed by various commands. More...
 
enum  CLEAR_DEPTH_STENCIL_FLAGS : Uint32 { CLEAR_DEPTH_FLAG_NONE = 0x00 , CLEAR_DEPTH_FLAG = 0x01 , CLEAR_STENCIL_FLAG = 0x02 }
 Defines which parts of the depth-stencil buffer to clear. More...
 
enum  SET_VERTEX_BUFFERS_FLAGS : Uint8 { SET_VERTEX_BUFFERS_FLAG_NONE = 0x00 , SET_VERTEX_BUFFERS_FLAG_RESET = 0x01 }
 Defines allowed flags for IDeviceContext::SetVertexBuffers() function. More...
 
enum  RAYTRACING_INSTANCE_FLAGS : Uint8 {
  RAYTRACING_INSTANCE_NONE = 0 , RAYTRACING_INSTANCE_TRIANGLE_FACING_CULL_DISABLE = 0x01 , RAYTRACING_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x02 , RAYTRACING_INSTANCE_FORCE_OPAQUE = 0x04 ,
  RAYTRACING_INSTANCE_FORCE_NO_OPAQUE = 0x08 , RAYTRACING_INSTANCE_FLAG_LAST = RAYTRACING_INSTANCE_FORCE_NO_OPAQUE
}
 TLAS instance flags that are used in IDeviceContext::BuildTLAS(). More...
 
enum  COPY_AS_MODE : Uint8 { COPY_AS_MODE_CLONE = 0 , COPY_AS_MODE_COMPACT , COPY_AS_MODE_LAST = COPY_AS_MODE_COMPACT }
 Defines acceleration structure copy mode. More...
 
enum  RAYTRACING_GEOMETRY_FLAGS : Uint8 { RAYTRACING_GEOMETRY_FLAG_NONE = 0 , RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x01 , RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANY_HIT_INVOCATION = 0x02 , RAYTRACING_GEOMETRY_FLAG_LAST = RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANY_HIT_INVOCATION }
 Defines geometry flags for ray tracing. More...
 
enum  STATE_TRANSITION_FLAGS : Uint8 { STATE_TRANSITION_FLAG_NONE = 0 , STATE_TRANSITION_FLAG_UPDATE_STATE = 1u << 0 , STATE_TRANSITION_FLAG_DISCARD_CONTENT = 1u << 1 , STATE_TRANSITION_FLAG_ALIASING = 1u << 2 }
 Resource state transition flags. More...
 
enum  DEVICE_MEMORY_TYPE : Uint8 { DEVICE_MEMORY_TYPE_UNDEFINED = 0 , DEVICE_MEMORY_TYPE_SPARSE = 1 }
 Describes the device memory type. More...
 
enum  FENCE_TYPE : Uint8 { FENCE_TYPE_CPU_WAIT_ONLY = 0 , FENCE_TYPE_GENERAL = 1 , FENCE_TYPE_LAST = FENCE_TYPE_GENERAL }
 Describes the fence type. More...
 
enum  VALUE_TYPE : Uint8 {
  VT_UNDEFINED = 0 , VT_INT8 , VT_INT16 , VT_INT32 ,
  VT_UINT8 , VT_UINT16 , VT_UINT32 , VT_FLOAT16 ,
  VT_FLOAT32 , VT_FLOAT64 , VT_NUM_TYPES
}
 Value type. More...
 
enum  SHADER_TYPE : Uint32 {
  SHADER_TYPE_UNKNOWN = 0x0000 , SHADER_TYPE_VERTEX = 0x0001 , SHADER_TYPE_PIXEL = 0x0002 , SHADER_TYPE_GEOMETRY = 0x0004 ,
  SHADER_TYPE_HULL = 0x0008 , SHADER_TYPE_DOMAIN = 0x0010 , SHADER_TYPE_COMPUTE = 0x0020 , SHADER_TYPE_AMPLIFICATION = 0x0040 ,
  SHADER_TYPE_MESH = 0x0080 , SHADER_TYPE_RAY_GEN = 0x0100 , SHADER_TYPE_RAY_MISS = 0x0200 , SHADER_TYPE_RAY_CLOSEST_HIT = 0x0400 ,
  SHADER_TYPE_RAY_ANY_HIT = 0x0800 , SHADER_TYPE_RAY_INTERSECTION = 0x1000 , SHADER_TYPE_CALLABLE = 0x2000 , SHADER_TYPE_TILE = 0x4000 ,
  SHADER_TYPE_LAST = SHADER_TYPE_TILE , SHADER_TYPE_VS_PS , SHADER_TYPE_ALL_GRAPHICS , SHADER_TYPE_ALL_MESH ,
  SHADER_TYPE_ALL_RAY_TRACING , SHADER_TYPE_ALL = SHADER_TYPE_LAST * 2 - 1
}
 Describes the shader type. More...
 
enum  BIND_FLAGS : Uint32 {
  BIND_NONE = 0 , BIND_VERTEX_BUFFER = 1u << 0u , BIND_INDEX_BUFFER = 1u << 1u , BIND_UNIFORM_BUFFER = 1u << 2u ,
  BIND_SHADER_RESOURCE = 1u << 3u , BIND_STREAM_OUTPUT = 1u << 4u , BIND_RENDER_TARGET = 1u << 5u , BIND_DEPTH_STENCIL = 1u << 6u ,
  BIND_UNORDERED_ACCESS = 1u << 7u , BIND_INDIRECT_DRAW_ARGS = 1u << 8u , BIND_INPUT_ATTACHMENT = 1u << 9u , BIND_RAY_TRACING = 1u << 10u ,
  BIND_SHADING_RATE = 1u << 11u , BIND_FLAG_LAST = BIND_SHADING_RATE
}
 Resource binding flags. More...
 
enum  USAGE : Uint8 {
  USAGE_IMMUTABLE = 0 , USAGE_DEFAULT , USAGE_DYNAMIC , USAGE_STAGING ,
  USAGE_UNIFIED , USAGE_SPARSE , USAGE_NUM_USAGES
}
 Resource usage. More...
 
enum  CPU_ACCESS_FLAGS : Uint8 { CPU_ACCESS_NONE = 0u , CPU_ACCESS_READ = 1u << 0u , CPU_ACCESS_WRITE = 1u << 1u , CPU_ACCESS_FLAG_LAST = CPU_ACCESS_WRITE }
 Allowed CPU access mode flags when mapping a resource. More...
 
enum  MAP_TYPE : Uint8 { MAP_READ = 0x01 , MAP_WRITE = 0x02 , MAP_READ_WRITE = 0x03 }
 Resource mapping type. More...
 
enum  MAP_FLAGS : Uint8 { MAP_FLAG_NONE = 0x000 , MAP_FLAG_DO_NOT_WAIT = 0x001 , MAP_FLAG_DISCARD = 0x002 , MAP_FLAG_NO_OVERWRITE = 0x004 }
 Special map flags. More...
 
enum  RESOURCE_DIMENSION : Uint8 {
  RESOURCE_DIM_UNDEFINED = 0 , RESOURCE_DIM_BUFFER , RESOURCE_DIM_TEX_1D , RESOURCE_DIM_TEX_1D_ARRAY ,
  RESOURCE_DIM_TEX_2D , RESOURCE_DIM_TEX_2D_ARRAY , RESOURCE_DIM_TEX_3D , RESOURCE_DIM_TEX_CUBE ,
  RESOURCE_DIM_TEX_CUBE_ARRAY , RESOURCE_DIM_NUM_DIMENSIONS
}
 Describes resource dimension. More...
 
enum  TEXTURE_VIEW_TYPE : Uint8 {
  TEXTURE_VIEW_UNDEFINED = 0 , TEXTURE_VIEW_SHADER_RESOURCE , TEXTURE_VIEW_RENDER_TARGET , TEXTURE_VIEW_DEPTH_STENCIL ,
  TEXTURE_VIEW_READ_ONLY_DEPTH_STENCIL , TEXTURE_VIEW_UNORDERED_ACCESS , TEXTURE_VIEW_SHADING_RATE , TEXTURE_VIEW_NUM_VIEWS
}
 Texture view type. More...
 
enum  BUFFER_VIEW_TYPE : Uint8 { BUFFER_VIEW_UNDEFINED = 0 , BUFFER_VIEW_SHADER_RESOURCE , BUFFER_VIEW_UNORDERED_ACCESS , BUFFER_VIEW_NUM_VIEWS }
 Buffer view type. More...
 
enum  TEXTURE_FORMAT : Uint16 {
  TEX_FORMAT_UNKNOWN = 0 , TEX_FORMAT_RGBA32_TYPELESS , TEX_FORMAT_RGBA32_FLOAT , TEX_FORMAT_RGBA32_UINT ,
  TEX_FORMAT_RGBA32_SINT , TEX_FORMAT_RGB32_TYPELESS , TEX_FORMAT_RGB32_FLOAT , TEX_FORMAT_RGB32_UINT ,
  TEX_FORMAT_RGB32_SINT , TEX_FORMAT_RGBA16_TYPELESS , TEX_FORMAT_RGBA16_FLOAT , TEX_FORMAT_RGBA16_UNORM ,
  TEX_FORMAT_RGBA16_UINT , TEX_FORMAT_RGBA16_SNORM , TEX_FORMAT_RGBA16_SINT , TEX_FORMAT_RG32_TYPELESS ,
  TEX_FORMAT_RG32_FLOAT , TEX_FORMAT_RG32_UINT , TEX_FORMAT_RG32_SINT , TEX_FORMAT_R32G8X24_TYPELESS ,
  TEX_FORMAT_D32_FLOAT_S8X24_UINT , TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS , TEX_FORMAT_X32_TYPELESS_G8X24_UINT , TEX_FORMAT_RGB10A2_TYPELESS ,
  TEX_FORMAT_RGB10A2_UNORM , TEX_FORMAT_RGB10A2_UINT , TEX_FORMAT_R11G11B10_FLOAT , TEX_FORMAT_RGBA8_TYPELESS ,
  TEX_FORMAT_RGBA8_UNORM , TEX_FORMAT_RGBA8_UNORM_SRGB , TEX_FORMAT_RGBA8_UINT , TEX_FORMAT_RGBA8_SNORM ,
  TEX_FORMAT_RGBA8_SINT , TEX_FORMAT_RG16_TYPELESS , TEX_FORMAT_RG16_FLOAT , TEX_FORMAT_RG16_UNORM ,
  TEX_FORMAT_RG16_UINT , TEX_FORMAT_RG16_SNORM , TEX_FORMAT_RG16_SINT , TEX_FORMAT_R32_TYPELESS ,
  TEX_FORMAT_D32_FLOAT , TEX_FORMAT_R32_FLOAT , TEX_FORMAT_R32_UINT , TEX_FORMAT_R32_SINT ,
  TEX_FORMAT_R24G8_TYPELESS , TEX_FORMAT_D24_UNORM_S8_UINT , TEX_FORMAT_R24_UNORM_X8_TYPELESS , TEX_FORMAT_X24_TYPELESS_G8_UINT ,
  TEX_FORMAT_RG8_TYPELESS , TEX_FORMAT_RG8_UNORM , TEX_FORMAT_RG8_UINT , TEX_FORMAT_RG8_SNORM ,
  TEX_FORMAT_RG8_SINT , TEX_FORMAT_R16_TYPELESS , TEX_FORMAT_R16_FLOAT , TEX_FORMAT_D16_UNORM ,
  TEX_FORMAT_R16_UNORM , TEX_FORMAT_R16_UINT , TEX_FORMAT_R16_SNORM , TEX_FORMAT_R16_SINT ,
  TEX_FORMAT_R8_TYPELESS , TEX_FORMAT_R8_UNORM , TEX_FORMAT_R8_UINT , TEX_FORMAT_R8_SNORM ,
  TEX_FORMAT_R8_SINT , TEX_FORMAT_A8_UNORM , TEX_FORMAT_R1_UNORM , TEX_FORMAT_RGB9E5_SHAREDEXP ,
  TEX_FORMAT_RG8_B8G8_UNORM , TEX_FORMAT_G8R8_G8B8_UNORM , TEX_FORMAT_BC1_TYPELESS , TEX_FORMAT_BC1_UNORM ,
  TEX_FORMAT_BC1_UNORM_SRGB , TEX_FORMAT_BC2_TYPELESS , TEX_FORMAT_BC2_UNORM , TEX_FORMAT_BC2_UNORM_SRGB ,
  TEX_FORMAT_BC3_TYPELESS , TEX_FORMAT_BC3_UNORM , TEX_FORMAT_BC3_UNORM_SRGB , TEX_FORMAT_BC4_TYPELESS ,
  TEX_FORMAT_BC4_UNORM , TEX_FORMAT_BC4_SNORM , TEX_FORMAT_BC5_TYPELESS , TEX_FORMAT_BC5_UNORM ,
  TEX_FORMAT_BC5_SNORM , TEX_FORMAT_B5G6R5_UNORM , TEX_FORMAT_B5G5R5A1_UNORM , TEX_FORMAT_BGRA8_UNORM ,
  TEX_FORMAT_BGRX8_UNORM , TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM , TEX_FORMAT_BGRA8_TYPELESS , TEX_FORMAT_BGRA8_UNORM_SRGB ,
  TEX_FORMAT_BGRX8_TYPELESS , TEX_FORMAT_BGRX8_UNORM_SRGB , TEX_FORMAT_BC6H_TYPELESS , TEX_FORMAT_BC6H_UF16 ,
  TEX_FORMAT_BC6H_SF16 , TEX_FORMAT_BC7_TYPELESS , TEX_FORMAT_BC7_UNORM , TEX_FORMAT_BC7_UNORM_SRGB ,
  TEX_FORMAT_ETC2_RGB8_UNORM , TEX_FORMAT_ETC2_RGB8_UNORM_SRGB , TEX_FORMAT_ETC2_RGB8A1_UNORM , TEX_FORMAT_ETC2_RGB8A1_UNORM_SRGB ,
  TEX_FORMAT_ETC2_RGBA8_UNORM , TEX_FORMAT_ETC2_RGBA8_UNORM_SRGB , TEX_FORMAT_NUM_FORMATS
}
 Texture formats. More...
 
enum  FILTER_TYPE : Uint8 {
  FILTER_TYPE_UNKNOWN = 0 , FILTER_TYPE_POINT , FILTER_TYPE_LINEAR , FILTER_TYPE_ANISOTROPIC ,
  FILTER_TYPE_COMPARISON_POINT , FILTER_TYPE_COMPARISON_LINEAR , FILTER_TYPE_COMPARISON_ANISOTROPIC , FILTER_TYPE_MINIMUM_POINT ,
  FILTER_TYPE_MINIMUM_LINEAR , FILTER_TYPE_MINIMUM_ANISOTROPIC , FILTER_TYPE_MAXIMUM_POINT , FILTER_TYPE_MAXIMUM_LINEAR ,
  FILTER_TYPE_MAXIMUM_ANISOTROPIC , FILTER_TYPE_NUM_FILTERS
}
 Filter type. More...
 
enum  TEXTURE_ADDRESS_MODE : Uint8 {
  TEXTURE_ADDRESS_UNKNOWN = 0 , TEXTURE_ADDRESS_WRAP = 1 , TEXTURE_ADDRESS_MIRROR = 2 , TEXTURE_ADDRESS_CLAMP = 3 ,
  TEXTURE_ADDRESS_BORDER = 4 , TEXTURE_ADDRESS_MIRROR_ONCE = 5 , TEXTURE_ADDRESS_NUM_MODES
}
 Texture address mode. More...
 
enum  COMPARISON_FUNCTION : Uint8 {
  COMPARISON_FUNC_UNKNOWN = 0 , COMPARISON_FUNC_NEVER , COMPARISON_FUNC_LESS , COMPARISON_FUNC_EQUAL ,
  COMPARISON_FUNC_LESS_EQUAL , COMPARISON_FUNC_GREATER , COMPARISON_FUNC_NOT_EQUAL , COMPARISON_FUNC_GREATER_EQUAL ,
  COMPARISON_FUNC_ALWAYS , COMPARISON_FUNC_NUM_FUNCTIONS
}
 Comparison function. More...
 
enum  PRIMITIVE_TOPOLOGY : Uint8 {
  PRIMITIVE_TOPOLOGY_UNDEFINED = 0 , PRIMITIVE_TOPOLOGY_TRIANGLE_LIST , PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP , PRIMITIVE_TOPOLOGY_POINT_LIST ,
  PRIMITIVE_TOPOLOGY_LINE_LIST , PRIMITIVE_TOPOLOGY_LINE_STRIP , PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ , PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ ,
  PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ , PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ , PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST ,
  PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST , PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES
}
 Input primitive topology. More...
 
enum  MEMORY_PROPERTIES : Uint32 { MEMORY_PROPERTY_UNKNOWN = 0x00 , MEMORY_PROPERTY_HOST_COHERENT = 0x01 }
 Memory property flags. More...
 
enum  ADAPTER_TYPE : Uint8 {
  ADAPTER_TYPE_UNKNOWN = 0 , ADAPTER_TYPE_SOFTWARE , ADAPTER_TYPE_INTEGRATED , ADAPTER_TYPE_DISCRETE ,
  ADAPTER_TYPE_COUNT
}
 Hardware adapter type. More...
 
enum  SCALING_MODE { SCALING_MODE_UNSPECIFIED = 0 , SCALING_MODE_CENTERED = 1 , SCALING_MODE_STRETCHED = 2 }
 
enum  SCANLINE_ORDER { SCANLINE_ORDER_UNSPECIFIED = 0 , SCANLINE_ORDER_PROGRESSIVE = 1 , SCANLINE_ORDER_UPPER_FIELD_FIRST = 2 , SCANLINE_ORDER_LOWER_FIELD_FIRST = 3 }
 
enum  SWAP_CHAIN_USAGE_FLAGS : Uint32 {
  SWAP_CHAIN_USAGE_NONE = 0u , SWAP_CHAIN_USAGE_RENDER_TARGET = 1u << 0 , SWAP_CHAIN_USAGE_SHADER_RESOURCE = 1u << 1 , SWAP_CHAIN_USAGE_INPUT_ATTACHMENT = 1u << 2 ,
  SWAP_CHAIN_USAGE_COPY_SOURCE = 1u << 3 , SWAP_CHAIN_USAGE_LAST = SWAP_CHAIN_USAGE_COPY_SOURCE
}
 Defines allowed swap chain usage flags. More...
 
enum  SURFACE_TRANSFORM : Uint32 {
  SURFACE_TRANSFORM_OPTIMAL = 0 , SURFACE_TRANSFORM_IDENTITY , SURFACE_TRANSFORM_ROTATE_90 , SURFACE_TRANSFORM_ROTATE_180 ,
  SURFACE_TRANSFORM_ROTATE_270 , SURFACE_TRANSFORM_HORIZONTAL_MIRROR , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90 , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180 ,
  SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270
}
 The transform applied to the image content prior to presentation. More...
 
enum  QUERY_TYPE {
  QUERY_TYPE_UNDEFINED = 0 , QUERY_TYPE_OCCLUSION , QUERY_TYPE_BINARY_OCCLUSION , QUERY_TYPE_TIMESTAMP ,
  QUERY_TYPE_PIPELINE_STATISTICS , QUERY_TYPE_DURATION , QUERY_TYPE_NUM_TYPES
}
 Query type. More...
 
enum  RENDER_DEVICE_TYPE {
  RENDER_DEVICE_TYPE_UNDEFINED = 0 , RENDER_DEVICE_TYPE_D3D11 , RENDER_DEVICE_TYPE_D3D12 , RENDER_DEVICE_TYPE_GL ,
  RENDER_DEVICE_TYPE_GLES , RENDER_DEVICE_TYPE_VULKAN , RENDER_DEVICE_TYPE_METAL , RENDER_DEVICE_TYPE_WEBGPU ,
  RENDER_DEVICE_TYPE_COUNT
}
 Device type. More...
 
enum  DEVICE_FEATURE_STATE : Uint8 { DEVICE_FEATURE_STATE_DISABLED = 0 , DEVICE_FEATURE_STATE_ENABLED = 1 , DEVICE_FEATURE_STATE_OPTIONAL = 2 }
 Device feature state. More...
 
enum  ADAPTER_VENDOR : Uint8 {
  ADAPTER_VENDOR_UNKNOWN = 0 , ADAPTER_VENDOR_NVIDIA , ADAPTER_VENDOR_AMD , ADAPTER_VENDOR_INTEL ,
  ADAPTER_VENDOR_ARM , ADAPTER_VENDOR_QUALCOMM , ADAPTER_VENDOR_IMGTECH , ADAPTER_VENDOR_MSFT ,
  ADAPTER_VENDOR_APPLE , ADAPTER_VENDOR_MESA , ADAPTER_VENDOR_BROADCOM , ADAPTER_VENDOR_LAST = ADAPTER_VENDOR_BROADCOM
}
 Graphics adapter vendor. More...
 
enum  WAVE_FEATURE : Uint32
 Describes the wave feature types. More...
 
enum  VALIDATION_LEVEL : Uint8 { VALIDATION_LEVEL_DISABLED = 0 , VALIDATION_LEVEL_1 , VALIDATION_LEVEL_2 }
 Common validation levels that translate to specific settings for different backends. More...
 
enum  RAY_TRACING_CAP_FLAGS : Uint8 { RAY_TRACING_CAP_FLAG_NONE = 0x00 , RAY_TRACING_CAP_FLAG_STANDALONE_SHADERS = 0x01 , RAY_TRACING_CAP_FLAG_INLINE_RAY_TRACING = 0x02 , RAY_TRACING_CAP_FLAG_INDIRECT_RAY_TRACING = 0x04 }
 Ray tracing capability flags. More...
 
enum  VALIDATION_FLAGS : Uint32 { VALIDATION_FLAG_NONE = 0x00 , VALIDATION_FLAG_CHECK_SHADER_BUFFER_SIZE = 0x01 }
 Common validation options. More...
 
enum  COMMAND_QUEUE_TYPE : Uint8 {
  COMMAND_QUEUE_TYPE_UNKNOWN = 0 , COMMAND_QUEUE_TYPE_TRANSFER = 1u << 0 , COMMAND_QUEUE_TYPE_COMPUTE = (1u << 1) | COMMAND_QUEUE_TYPE_TRANSFER , COMMAND_QUEUE_TYPE_GRAPHICS = (1u << 2) | COMMAND_QUEUE_TYPE_COMPUTE ,
  COMMAND_QUEUE_TYPE_PRIMARY_MASK = COMMAND_QUEUE_TYPE_TRANSFER | COMMAND_QUEUE_TYPE_COMPUTE | COMMAND_QUEUE_TYPE_GRAPHICS , COMMAND_QUEUE_TYPE_SPARSE_BINDING = (1u << 3) , COMMAND_QUEUE_TYPE_MAX_BIT = COMMAND_QUEUE_TYPE_GRAPHICS
}
 Command queue type. More...
 
enum  QUEUE_PRIORITY : Uint8 {
  QUEUE_PRIORITY_UNKNOWN = 0 , QUEUE_PRIORITY_LOW , QUEUE_PRIORITY_MEDIUM , QUEUE_PRIORITY_HIGH ,
  QUEUE_PRIORITY_REALTIME , QUEUE_PRIORITY_LAST = QUEUE_PRIORITY_REALTIME
}
 Queue priority. More...
 
enum  SHADING_RATE_COMBINER : Uint8 {
  SHADING_RATE_COMBINER_PASSTHROUGH = 1 << 0 , SHADING_RATE_COMBINER_OVERRIDE = 1 << 1 , SHADING_RATE_COMBINER_MIN = 1 << 2 , SHADING_RATE_COMBINER_MAX = 1 << 3 ,
  SHADING_RATE_COMBINER_SUM = 1 << 4 , SHADING_RATE_COMBINER_MUL = 1 << 5 , SHADING_RATE_COMBINER_LAST = SHADING_RATE_COMBINER_MUL
}
 
enum  SHADING_RATE_FORMAT : Uint8 { SHADING_RATE_FORMAT_UNKNOWN = 0 , SHADING_RATE_FORMAT_PALETTE = 1 , SHADING_RATE_FORMAT_UNORM8 = 2 , SHADING_RATE_FORMAT_COL_ROW_FP32 = 3 }
 Shading rate texture format supported by the device. More...
 
enum  AXIS_SHADING_RATE : Uint8 { AXIS_SHADING_RATE_1X = 0x0 , AXIS_SHADING_RATE_2X = 0x1 , AXIS_SHADING_RATE_4X = 0x2 , AXIS_SHADING_RATE_MAX = AXIS_SHADING_RATE_4X }
 Specifies the base shading rate along a horizontal or vertical axis. More...
 
enum  SHADING_RATE : Uint8 {
  SHADING_RATE_1X1 = ((AXIS_SHADING_RATE_1X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_1X) , SHADING_RATE_1X2 = ((AXIS_SHADING_RATE_1X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_2X) , SHADING_RATE_1X4 = ((AXIS_SHADING_RATE_1X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_4X) , SHADING_RATE_2X1 = ((AXIS_SHADING_RATE_2X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_1X) ,
  SHADING_RATE_2X2 = ((AXIS_SHADING_RATE_2X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_2X) , SHADING_RATE_2X4 = ((AXIS_SHADING_RATE_2X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_4X) , SHADING_RATE_4X1 = ((AXIS_SHADING_RATE_4X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_1X) , SHADING_RATE_4X2 = ((AXIS_SHADING_RATE_4X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_2X) ,
  SHADING_RATE_4X4 = ((AXIS_SHADING_RATE_4X << DILIGENT_SHADING_RATE_X_SHIFT) | AXIS_SHADING_RATE_4X) , SHADING_RATE_MAX = SHADING_RATE_4X4
}
 Defines the shading rate for both axes. More...
 
enum  SAMPLE_COUNT : Uint8
 Defines the sample count.
 
enum  SHADING_RATE_CAP_FLAGS : Uint16 {
  SHADING_RATE_CAP_FLAG_NONE = 0 , SHADING_RATE_CAP_FLAG_PER_DRAW = 1u << 0 , SHADING_RATE_CAP_FLAG_PER_PRIMITIVE = 1u << 1 , SHADING_RATE_CAP_FLAG_TEXTURE_BASED = 1u << 2 ,
  SHADING_RATE_CAP_FLAG_SAMPLE_MASK = 1u << 3 , SHADING_RATE_CAP_FLAG_SHADER_SAMPLE_MASK = 1u << 4 , SHADING_RATE_CAP_FLAG_SHADER_DEPTH_STENCIL_WRITE = 1u << 5 , SHADING_RATE_CAP_FLAG_PER_PRIMITIVE_WITH_MULTIPLE_VIEWPORTS = 1u << 6 ,
  SHADING_RATE_CAP_FLAG_SAME_TEXTURE_FOR_WHOLE_RENDERPASS = 1u << 7 , SHADING_RATE_CAP_FLAG_TEXTURE_ARRAY = 1u << 8 , SHADING_RATE_CAP_FLAG_SHADING_RATE_SHADER_INPUT = 1u << 9 , SHADING_RATE_CAP_FLAG_ADDITIONAL_INVOCATIONS = 1u << 10 ,
  SHADING_RATE_CAP_FLAG_NON_SUBSAMPLED_RENDER_TARGET = 1u << 11 , SHADING_RATE_CAP_FLAG_SUBSAMPLED_RENDER_TARGET = 1u << 12
}
 Defines the shading rate capability flags. More...
 
enum  SHADING_RATE_TEXTURE_ACCESS : Uint8 { SHADING_RATE_TEXTURE_ACCESS_UNKNOWN = 0 , SHADING_RATE_TEXTURE_ACCESS_ON_GPU , SHADING_RATE_TEXTURE_ACCESS_ON_SUBMIT , SHADING_RATE_TEXTURE_ACCESS_ON_SET_RTV }
 Defines how the shading rate texture is accessed. More...
 
enum  DRAW_COMMAND_CAP_FLAGS : Uint16 {
  DRAW_COMMAND_CAP_FLAG_NONE = 0 , DRAW_COMMAND_CAP_FLAG_BASE_VERTEX = 1u << 0 , DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT = 1u << 1 , DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT_FIRST_INSTANCE = 1u << 2 ,
  DRAW_COMMAND_CAP_FLAG_NATIVE_MULTI_DRAW_INDIRECT = 1u << 3 , DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT_COUNTER_BUFFER = 1u << 4
}
 Defines the draw command capability flags. More...
 
enum  SPARSE_RESOURCE_CAP_FLAGS : Uint32 {
  SPARSE_RESOURCE_CAP_FLAG_NONE = 0 , SPARSE_RESOURCE_CAP_FLAG_SHADER_RESOURCE_RESIDENCY = 1u << 0 , SPARSE_RESOURCE_CAP_FLAG_BUFFER = 1u << 1 , SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2D = 1u << 2 ,
  SPARSE_RESOURCE_CAP_FLAG_TEXTURE_3D = 1u << 3 , SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2_SAMPLES = 1u << 4 , SPARSE_RESOURCE_CAP_FLAG_TEXTURE_4_SAMPLES = 1u << 5 , SPARSE_RESOURCE_CAP_FLAG_TEXTURE_8_SAMPLES = 1u << 6 ,
  SPARSE_RESOURCE_CAP_FLAG_TEXTURE_16_SAMPLES = 1u << 7 , SPARSE_RESOURCE_CAP_FLAG_ALIASED = 1u << 8 , SPARSE_RESOURCE_CAP_FLAG_STANDARD_2D_TILE_SHAPE = 1u << 9 , SPARSE_RESOURCE_CAP_FLAG_STANDARD_2DMS_TILE_SHAPE = 1u << 10 ,
  SPARSE_RESOURCE_CAP_FLAG_STANDARD_3D_TILE_SHAPE = 1u << 11 , SPARSE_RESOURCE_CAP_FLAG_ALIGNED_MIP_SIZE = 1u << 12 , SPARSE_RESOURCE_CAP_FLAG_NON_RESIDENT_STRICT = 1u << 13 , SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2D_ARRAY_MIP_TAIL = 1u << 14 ,
  SPARSE_RESOURCE_CAP_FLAG_BUFFER_STANDARD_BLOCK = 1u << 15 , SPARSE_RESOURCE_CAP_FLAG_NON_RESIDENT_SAFE = 1u << 16 , SPARSE_RESOURCE_CAP_FLAG_MIXED_RESOURCE_TYPE_SUPPORT = 1u << 17
}
 Sparse memory capability flags. More...
 
enum  D3D11_VALIDATION_FLAGS : Uint32 { D3D11_VALIDATION_FLAG_NONE = 0x00 , D3D11_VALIDATION_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE = 0x01 }
 Direct3D11-specific validation options. More...
 
enum  D3D12_VALIDATION_FLAGS : Uint32 { D3D12_VALIDATION_FLAG_NONE = 0x00 , D3D12_VALIDATION_FLAG_BREAK_ON_ERROR = 0x01 , D3D12_VALIDATION_FLAG_BREAK_ON_CORRUPTION = 0x02 , D3D12_VALIDATION_FLAG_ENABLE_GPU_BASED_VALIDATION = 0x04 }
 Direct3D12-specific validation flags. More...
 
enum  COMPONENT_TYPE : Uint8 {
  COMPONENT_TYPE_UNDEFINED , COMPONENT_TYPE_FLOAT , COMPONENT_TYPE_SNORM , COMPONENT_TYPE_UNORM ,
  COMPONENT_TYPE_UNORM_SRGB , COMPONENT_TYPE_SINT , COMPONENT_TYPE_UINT , COMPONENT_TYPE_DEPTH ,
  COMPONENT_TYPE_DEPTH_STENCIL , COMPONENT_TYPE_COMPOUND , COMPONENT_TYPE_COMPRESSED
}
 Describes texture format component type. More...
 
enum  RESOURCE_DIMENSION_SUPPORT : Uint32 {
  RESOURCE_DIMENSION_SUPPORT_NONE = 0 , RESOURCE_DIMENSION_SUPPORT_BUFFER = 1 << RESOURCE_DIM_BUFFER , RESOURCE_DIMENSION_SUPPORT_TEX_1D = 1 << RESOURCE_DIM_TEX_1D , RESOURCE_DIMENSION_SUPPORT_TEX_1D_ARRAY = 1 << RESOURCE_DIM_TEX_1D_ARRAY ,
  RESOURCE_DIMENSION_SUPPORT_TEX_2D = 1 << RESOURCE_DIM_TEX_2D , RESOURCE_DIMENSION_SUPPORT_TEX_2D_ARRAY = 1 << RESOURCE_DIM_TEX_2D_ARRAY , RESOURCE_DIMENSION_SUPPORT_TEX_3D = 1 << RESOURCE_DIM_TEX_3D , RESOURCE_DIMENSION_SUPPORT_TEX_CUBE = 1 << RESOURCE_DIM_TEX_CUBE ,
  RESOURCE_DIMENSION_SUPPORT_TEX_CUBE_ARRAY = 1 << RESOURCE_DIM_TEX_CUBE_ARRAY
}
 Describes device support of a particular resource dimension for a given texture format. More...
 
enum  SPARSE_TEXTURE_FLAGS : Uint8 { SPARSE_TEXTURE_FLAG_NONE = 0 , SPARSE_TEXTURE_FLAG_SINGLE_MIPTAIL = 1u << 0 , SPARSE_TEXTURE_FLAG_ALIGNED_MIP_SIZE = 1u << 1 , SPARSE_TEXTURE_FLAG_NONSTANDARD_BLOCK_SIZE = 1u << 2 , SPARSE_TEXTURE_FLAG_LAST = SPARSE_TEXTURE_FLAG_NONSTANDARD_BLOCK_SIZE }
 Describes the sparse texture packing mode. More...
 
enum  PIPELINE_STAGE_FLAGS : Uint32 {
  PIPELINE_STAGE_FLAG_UNDEFINED = 0x00000000 , PIPELINE_STAGE_FLAG_TOP_OF_PIPE = 0x00000001 , PIPELINE_STAGE_FLAG_DRAW_INDIRECT = 0x00000002 , PIPELINE_STAGE_FLAG_VERTEX_INPUT = 0x00000004 ,
  PIPELINE_STAGE_FLAG_VERTEX_SHADER = 0x00000008 , PIPELINE_STAGE_FLAG_HULL_SHADER = 0x00000010 , PIPELINE_STAGE_FLAG_DOMAIN_SHADER = 0x00000020 , PIPELINE_STAGE_FLAG_GEOMETRY_SHADER = 0x00000040 ,
  PIPELINE_STAGE_FLAG_PIXEL_SHADER = 0x00000080 , PIPELINE_STAGE_FLAG_EARLY_FRAGMENT_TESTS = 0x00000100 , PIPELINE_STAGE_FLAG_LATE_FRAGMENT_TESTS = 0x00000200 , PIPELINE_STAGE_FLAG_RENDER_TARGET = 0x00000400 ,
  PIPELINE_STAGE_FLAG_COMPUTE_SHADER = 0x00000800 , PIPELINE_STAGE_FLAG_TRANSFER = 0x00001000 , PIPELINE_STAGE_FLAG_BOTTOM_OF_PIPE = 0x00002000 , PIPELINE_STAGE_FLAG_HOST = 0x00004000 ,
  PIPELINE_STAGE_FLAG_CONDITIONAL_RENDERING = 0x00040000 , PIPELINE_STAGE_FLAG_SHADING_RATE_TEXTURE = 0x00400000 , PIPELINE_STAGE_FLAG_RAY_TRACING_SHADER = 0x00200000 , PIPELINE_STAGE_FLAG_ACCELERATION_STRUCTURE_BUILD = 0x02000000 ,
  PIPELINE_STAGE_FLAG_TASK_SHADER = 0x00080000 , PIPELINE_STAGE_FLAG_MESH_SHADER = 0x00100000 , PIPELINE_STAGE_FLAG_FRAGMENT_DENSITY_PROCESS = 0x00800000 , PIPELINE_STAGE_FLAG_DEFAULT = 0x80000000
}
 Pipeline stage flags. More...
 
enum  ACCESS_FLAGS : Uint32 {
  ACCESS_FLAG_NONE = 0x00000000 , ACCESS_FLAG_INDIRECT_COMMAND_READ = 0x00000001 , ACCESS_FLAG_INDEX_READ = 0x00000002 , ACCESS_FLAG_VERTEX_READ = 0x00000004 ,
  ACCESS_FLAG_UNIFORM_READ = 0x00000008 , ACCESS_FLAG_INPUT_ATTACHMENT_READ = 0x00000010 , ACCESS_FLAG_SHADER_READ = 0x00000020 , ACCESS_FLAG_SHADER_WRITE = 0x00000040 ,
  ACCESS_FLAG_RENDER_TARGET_READ = 0x00000080 , ACCESS_FLAG_RENDER_TARGET_WRITE = 0x00000100 , ACCESS_FLAG_DEPTH_STENCIL_READ = 0x00000200 , ACCESS_FLAG_DEPTH_STENCIL_WRITE = 0x00000400 ,
  ACCESS_FLAG_COPY_SRC = 0x00000800 , ACCESS_FLAG_COPY_DST = 0x00001000 , ACCESS_FLAG_HOST_READ = 0x00002000 , ACCESS_FLAG_HOST_WRITE = 0x00004000 ,
  ACCESS_FLAG_MEMORY_READ = 0x00008000 , ACCESS_FLAG_MEMORY_WRITE = 0x00010000 , ACCESS_FLAG_CONDITIONAL_RENDERING_READ = 0x00100000 , ACCESS_FLAG_SHADING_RATE_TEXTURE_READ = 0x00800000 ,
  ACCESS_FLAG_ACCELERATION_STRUCTURE_READ = 0x00200000 , ACCESS_FLAG_ACCELERATION_STRUCTURE_WRITE = 0x00400000 , ACCESS_FLAG_FRAGMENT_DENSITY_MAP_READ = 0x01000000 , ACCESS_FLAG_DEFAULT = 0x80000000
}
 Access flag. More...
 
enum  RESOURCE_STATE : Uint32 {
  RESOURCE_STATE_UNKNOWN = 0 , RESOURCE_STATE_UNDEFINED = 1u << 0 , RESOURCE_STATE_VERTEX_BUFFER = 1u << 1 , RESOURCE_STATE_CONSTANT_BUFFER = 1u << 2 ,
  RESOURCE_STATE_INDEX_BUFFER = 1u << 3 , RESOURCE_STATE_RENDER_TARGET = 1u << 4 , RESOURCE_STATE_UNORDERED_ACCESS = 1u << 5 , RESOURCE_STATE_DEPTH_WRITE = 1u << 6 ,
  RESOURCE_STATE_DEPTH_READ = 1u << 7 , RESOURCE_STATE_SHADER_RESOURCE = 1u << 8 , RESOURCE_STATE_STREAM_OUT = 1u << 9 , RESOURCE_STATE_INDIRECT_ARGUMENT = 1u << 10 ,
  RESOURCE_STATE_COPY_DEST = 1u << 11 , RESOURCE_STATE_COPY_SOURCE = 1u << 12 , RESOURCE_STATE_RESOLVE_DEST = 1u << 13 , RESOURCE_STATE_RESOLVE_SOURCE = 1u << 14 ,
  RESOURCE_STATE_INPUT_ATTACHMENT = 1u << 15 , RESOURCE_STATE_PRESENT = 1u << 16 , RESOURCE_STATE_BUILD_AS_READ = 1u << 17 , RESOURCE_STATE_BUILD_AS_WRITE = 1u << 18 ,
  RESOURCE_STATE_RAY_TRACING = 1u << 19 , RESOURCE_STATE_COMMON = 1u << 20 , RESOURCE_STATE_SHADING_RATE = 1u << 21 , RESOURCE_STATE_MAX_BIT = RESOURCE_STATE_SHADING_RATE ,
  RESOURCE_STATE_GENERIC_READ
}
 Resource usage state. More...
 
enum  STATE_TRANSITION_TYPE : Uint8 { STATE_TRANSITION_TYPE_IMMEDIATE = 0 , STATE_TRANSITION_TYPE_BEGIN , STATE_TRANSITION_TYPE_END }
 State transition barrier type. More...
 
enum  INPUT_ELEMENT_FREQUENCY : Uint8 { INPUT_ELEMENT_FREQUENCY_UNDEFINED = 0 , INPUT_ELEMENT_FREQUENCY_PER_VERTEX , INPUT_ELEMENT_FREQUENCY_PER_INSTANCE , INPUT_ELEMENT_FREQUENCY_NUM_FREQUENCIES }
 Input frequency. More...
 
enum  PIPELINE_RESOURCE_FLAGS : Uint8 {
  PIPELINE_RESOURCE_FLAG_NONE = 0 , PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS = 1u << 0 , PIPELINE_RESOURCE_FLAG_COMBINED_SAMPLER = 1u << 1 , PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER = 1u << 2 ,
  PIPELINE_RESOURCE_FLAG_RUNTIME_ARRAY = 1u << 3 , PIPELINE_RESOURCE_FLAG_GENERAL_INPUT_ATTACHMENT = 1u << 4 , PIPELINE_RESOURCE_FLAG_LAST = PIPELINE_RESOURCE_FLAG_GENERAL_INPUT_ATTACHMENT
}
 Pipeline resource property flags. More...
 
enum  WEB_GPU_BINDING_TYPE : Uint8 {
  WEB_GPU_BINDING_TYPE_DEFAULT = 0 , WEB_GPU_BINDING_TYPE_FILTERING_SAMPLER , WEB_GPU_BINDING_TYPE_NON_FILTERING_SAMPLER , WEB_GPU_BINDING_TYPE_COMPARISON_SAMPLER ,
  WEB_GPU_BINDING_TYPE_FLOAT_TEXTURE , WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE , WEB_GPU_BINDING_TYPE_DEPTH_TEXTURE , WEB_GPU_BINDING_TYPE_SINT_TEXTURE ,
  WEB_GPU_BINDING_TYPE_UINT_TEXTURE , WEB_GPU_BINDING_TYPE_FLOAT_TEXTURE_MS , WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE_MS , WEB_GPU_BINDING_TYPE_DEPTH_TEXTURE_MS ,
  WEB_GPU_BINDING_TYPE_SINT_TEXTURE_MS , WEB_GPU_BINDING_TYPE_UINT_TEXTURE_MS , WEB_GPU_BINDING_TYPE_WRITE_ONLY_TEXTURE_UAV , WEB_GPU_BINDING_TYPE_READ_ONLY_TEXTURE_UAV ,
  WEB_GPU_BINDING_TYPE_READ_WRITE_TEXTURE_UAV , WEB_GPU_BINDING_TYPE_COUNT
}
 WebGPU-specific resource binding types. More...
 
enum  SHADER_VARIABLE_FLAGS : Uint8 {
  SHADER_VARIABLE_FLAG_NONE = 0 , SHADER_VARIABLE_FLAG_NO_DYNAMIC_BUFFERS = 1u << 0 , SHADER_VARIABLE_FLAG_GENERAL_INPUT_ATTACHMENT_VK = 1u << 1 , SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU = 1u << 2 ,
  SHADER_VARIABLE_FLAG_NON_FILTERING_SAMPLER_WEBGPU = 1u << 3 , SHADER_VARIABLE_FLAG_LAST = SHADER_VARIABLE_FLAG_NON_FILTERING_SAMPLER_WEBGPU
}
 Shader variable property flags. More...
 
enum  PIPELINE_SHADING_RATE_FLAGS : Uint8 { PIPELINE_SHADING_RATE_FLAG_NONE = 0 , PIPELINE_SHADING_RATE_FLAG_PER_PRIMITIVE = 1u << 0u , PIPELINE_SHADING_RATE_FLAG_TEXTURE_BASED = 1u << 1u , PIPELINE_SHADING_RATE_FLAG_LAST = PIPELINE_SHADING_RATE_FLAG_TEXTURE_BASED }
 Pipeline state shading rate flags. More...
 
enum  PIPELINE_TYPE : Uint8 {
  PIPELINE_TYPE_GRAPHICS , PIPELINE_TYPE_COMPUTE , PIPELINE_TYPE_MESH , PIPELINE_TYPE_RAY_TRACING ,
  PIPELINE_TYPE_TILE , PIPELINE_TYPE_LAST = PIPELINE_TYPE_TILE , PIPELINE_TYPE_COUNT , PIPELINE_TYPE_INVALID = 0xFF
}
 Pipeline type. More...
 
enum  PSO_CREATE_FLAGS : Uint32 {
  PSO_CREATE_FLAG_NONE = 0u , PSO_CREATE_FLAG_IGNORE_MISSING_VARIABLES = 1u << 0u , PSO_CREATE_FLAG_IGNORE_MISSING_IMMUTABLE_SAMPLERS = 1u << 1u , PSO_CREATE_FLAG_DONT_REMAP_SHADER_RESOURCES = 1u << 2u ,
  PSO_CREATE_FLAG_ASYNCHRONOUS = 1u << 3u , PSO_CREATE_FLAG_LAST = PSO_CREATE_FLAG_ASYNCHRONOUS
}
 Pipeline state creation flags. More...
 
enum  PIPELINE_STATE_STATUS : Uint32 { PIPELINE_STATE_STATUS_UNINITIALIZED = 0 , PIPELINE_STATE_STATUS_COMPILING , PIPELINE_STATE_STATUS_READY , PIPELINE_STATE_STATUS_FAILED }
 Pipeline state status. More...
 
enum  PSO_CACHE_MODE : Uint8 { PSO_CACHE_MODE_LOAD = 1u << 0u , PSO_CACHE_MODE_STORE = 1u << 1u , PSO_CACHE_MODE_LOAD_STORE = PSO_CACHE_MODE_LOAD | PSO_CACHE_MODE_STORE }
 Pipeline state cache mode. More...
 
enum  PSO_CACHE_FLAGS : Uint8 { PSO_CACHE_FLAG_NONE = 0u , PSO_CACHE_FLAG_VERBOSE = 1u << 0u }
 Pipeline state cache flags. More...
 
enum  FILL_MODE : Int8 { FILL_MODE_UNDEFINED = 0 , FILL_MODE_WIREFRAME , FILL_MODE_SOLID , FILL_MODE_NUM_MODES }
 Fill mode. More...
 
enum  CULL_MODE : Int8 {
  CULL_MODE_UNDEFINED = 0 , CULL_MODE_NONE , CULL_MODE_FRONT , CULL_MODE_BACK ,
  CULL_MODE_NUM_MODES
}
 Cull mode. More...
 
enum  ATTACHMENT_LOAD_OP : Uint8 { ATTACHMENT_LOAD_OP_LOAD = 0 , ATTACHMENT_LOAD_OP_CLEAR , ATTACHMENT_LOAD_OP_DISCARD , ATTACHMENT_LOAD_OP_COUNT }
 
enum  ATTACHMENT_STORE_OP : Uint8 { ATTACHMENT_STORE_OP_STORE = 0 , ATTACHMENT_STORE_OP_DISCARD , ATTACHMENT_STORE_OP_COUNT }
 
enum  SAMPLER_FLAGS : Uint8 { SAMPLER_FLAG_NONE = 0 , SAMPLER_FLAG_SUBSAMPLED = 1u << 0 , SAMPLER_FLAG_SUBSAMPLED_COARSE_RECONSTRUCTION = 1u << 1 , SAMPLER_FLAG_LAST = SAMPLER_FLAG_SUBSAMPLED_COARSE_RECONSTRUCTION }
 Sampler flags. More...
 
enum  SHADER_SOURCE_LANGUAGE : Uint32 {
  SHADER_SOURCE_LANGUAGE_DEFAULT = 0 , SHADER_SOURCE_LANGUAGE_HLSL , SHADER_SOURCE_LANGUAGE_GLSL , SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM ,
  SHADER_SOURCE_LANGUAGE_MSL , SHADER_SOURCE_LANGUAGE_MSL_VERBATIM , SHADER_SOURCE_LANGUAGE_MTLB , SHADER_SOURCE_LANGUAGE_WGSL ,
  SHADER_SOURCE_LANGUAGE_COUNT
}
 Describes the shader source code language. More...
 
enum  SHADER_COMPILER : Uint32 { SHADER_COMPILER_DEFAULT = 0 , SHADER_COMPILER_GLSLANG , SHADER_COMPILER_DXC , SHADER_COMPILER_FXC , SHADER_COMPILER_LAST = SHADER_COMPILER_FXC , SHADER_COMPILER_COUNT }
 Describes the shader compiler that will be used to compile the shader source code. More...
 
enum  CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS : Uint32 { CREATE_SHADER_SOURCE_INPUT_STREAM_FLAG_NONE = 0x00 , CREATE_SHADER_SOURCE_INPUT_STREAM_FLAG_SILENT = 0x01 }
 Describes the flags that can be passed over to IShaderSourceInputStreamFactory::CreateInputStream2() function. More...
 
enum  SHADER_STATUS : Uint32 { SHADER_STATUS_UNINITIALIZED = 0 , SHADER_STATUS_COMPILING , SHADER_STATUS_READY , SHADER_STATUS_FAILED }
 Shader status. More...
 
enum  SHADER_COMPILE_FLAGS : Uint32 {
  SHADER_COMPILE_FLAG_NONE = 0 , SHADER_COMPILE_FLAG_ENABLE_UNBOUNDED_ARRAYS = 1u << 0u , SHADER_COMPILE_FLAG_SKIP_REFLECTION = 1u << 1u , SHADER_COMPILE_FLAG_ASYNCHRONOUS = 1u << 2u ,
  SHADER_COMPILE_FLAG_PACK_MATRIX_ROW_MAJOR = 1u << 3u , SHADER_COMPILE_FLAG_HLSL_TO_SPIRV_VIA_GLSL = 1u << 4u , SHADER_COMPILE_FLAG_LAST = SHADER_COMPILE_FLAG_HLSL_TO_SPIRV_VIA_GLSL
}
 Shader compilation flags. More...
 
enum  SHADER_RESOURCE_TYPE : Uint8 {
  SHADER_RESOURCE_TYPE_UNKNOWN = 0 , SHADER_RESOURCE_TYPE_CONSTANT_BUFFER , SHADER_RESOURCE_TYPE_TEXTURE_SRV , SHADER_RESOURCE_TYPE_BUFFER_SRV ,
  SHADER_RESOURCE_TYPE_TEXTURE_UAV , SHADER_RESOURCE_TYPE_BUFFER_UAV , SHADER_RESOURCE_TYPE_SAMPLER , SHADER_RESOURCE_TYPE_INPUT_ATTACHMENT ,
  SHADER_RESOURCE_TYPE_ACCEL_STRUCT , SHADER_RESOURCE_TYPE_LAST = SHADER_RESOURCE_TYPE_ACCEL_STRUCT
}
 Describes shader resource type. More...
 
enum  SHADER_CODE_BASIC_TYPE : Uint8 {
  SHADER_CODE_BASIC_TYPE_UNKNOWN , SHADER_CODE_BASIC_TYPE_VOID , SHADER_CODE_BASIC_TYPE_BOOL , SHADER_CODE_BASIC_TYPE_INT ,
  SHADER_CODE_BASIC_TYPE_INT8 , SHADER_CODE_BASIC_TYPE_INT16 , SHADER_CODE_BASIC_TYPE_INT64 , SHADER_CODE_BASIC_TYPE_UINT ,
  SHADER_CODE_BASIC_TYPE_UINT8 , SHADER_CODE_BASIC_TYPE_UINT16 , SHADER_CODE_BASIC_TYPE_UINT64 , SHADER_CODE_BASIC_TYPE_FLOAT ,
  SHADER_CODE_BASIC_TYPE_FLOAT16 , SHADER_CODE_BASIC_TYPE_DOUBLE , SHADER_CODE_BASIC_TYPE_MIN8FLOAT , SHADER_CODE_BASIC_TYPE_MIN10FLOAT ,
  SHADER_CODE_BASIC_TYPE_MIN16FLOAT , SHADER_CODE_BASIC_TYPE_MIN12INT , SHADER_CODE_BASIC_TYPE_MIN16INT , SHADER_CODE_BASIC_TYPE_MIN16UINT ,
  SHADER_CODE_BASIC_TYPE_STRING , SHADER_CODE_BASIC_TYPE_COUNT
}
 Describes the basic type of a shader code variable. More...
 
enum  SHADER_CODE_VARIABLE_CLASS : Uint8 {
  SHADER_CODE_VARIABLE_CLASS_UNKNOWN , SHADER_CODE_VARIABLE_CLASS_SCALAR , SHADER_CODE_VARIABLE_CLASS_VECTOR , SHADER_CODE_VARIABLE_CLASS_MATRIX_ROWS ,
  SHADER_CODE_VARIABLE_CLASS_MATRIX_COLUMNS , SHADER_CODE_VARIABLE_CLASS_STRUCT , SHADER_CODE_VARIABLE_CLASS_COUNT
}
 Describes the class of a shader code variable. More...
 
enum  VERIFY_SBT_FLAGS : Uint32 { VERIFY_SBT_FLAG_SHADER_ONLY = 0x1 , VERIFY_SBT_FLAG_SHADER_RECORD = 0x2 , VERIFY_SBT_FLAG_TLAS = 0x4 , VERIFY_SBT_FLAG_ALL }
 Defines shader binding table validation flags, see IShaderBindingTable::Verify(). More...
 
enum  SHADER_RESOURCE_VARIABLE_TYPE : Uint8 { SHADER_RESOURCE_VARIABLE_TYPE_STATIC = 0 , SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE , SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC , SHADER_RESOURCE_VARIABLE_TYPE_NUM_TYPES }
 Describes the type of the shader resource variable. More...
 
enum  SHADER_RESOURCE_VARIABLE_TYPE_FLAGS : Uint32 {
  SHADER_RESOURCE_VARIABLE_TYPE_FLAG_NONE = 0x00 , SHADER_RESOURCE_VARIABLE_TYPE_FLAG_STATIC = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_STATIC) , SHADER_RESOURCE_VARIABLE_TYPE_FLAG_MUTABLE = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE) , SHADER_RESOURCE_VARIABLE_TYPE_FLAG_DYNAMIC = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC) ,
  SHADER_RESOURCE_VARIABLE_TYPE_FLAG_MUT_DYN , SHADER_RESOURCE_VARIABLE_TYPE_FLAG_ALL
}
 Shader resource variable type flags. More...
 
enum  BIND_SHADER_RESOURCES_FLAGS : Uint32 {
  BIND_SHADER_RESOURCES_UPDATE_STATIC = SHADER_RESOURCE_VARIABLE_TYPE_FLAG_STATIC , BIND_SHADER_RESOURCES_UPDATE_MUTABLE = SHADER_RESOURCE_VARIABLE_TYPE_FLAG_MUTABLE , BIND_SHADER_RESOURCES_UPDATE_DYNAMIC = SHADER_RESOURCE_VARIABLE_TYPE_FLAG_DYNAMIC , BIND_SHADER_RESOURCES_UPDATE_ALL = SHADER_RESOURCE_VARIABLE_TYPE_FLAG_ALL ,
  BIND_SHADER_RESOURCES_KEEP_EXISTING = 0x08 , BIND_SHADER_RESOURCES_VERIFY_ALL_RESOLVED = 0x10 , BIND_SHADER_RESOURCES_ALLOW_OVERWRITE = 0x20
}
 Shader resource binding flags. More...
 
enum  SET_SHADER_RESOURCE_FLAGS : Uint32 { SET_SHADER_RESOURCE_FLAG_NONE = 0 , SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE = 1u << 0 }
 
enum  MISC_TEXTURE_FLAGS : Uint8 {
  MISC_TEXTURE_FLAG_NONE = 0u , MISC_TEXTURE_FLAG_GENERATE_MIPS = 1u << 0 , MISC_TEXTURE_FLAG_MEMORYLESS = 1u << 1 , MISC_TEXTURE_FLAG_SPARSE_ALIASING = 1u << 2 ,
  MISC_TEXTURE_FLAG_SUBSAMPLED = 1u << 3
}
 Miscellaneous texture flags. More...
 
enum  UAV_ACCESS_FLAG : Uint8 { UAV_ACCESS_UNSPECIFIED = 0x00 , UAV_ACCESS_FLAG_READ = 0x01 , UAV_ACCESS_FLAG_WRITE = 0x02 , UAV_ACCESS_FLAG_READ_WRITE = UAV_ACCESS_FLAG_READ | UAV_ACCESS_FLAG_WRITE , UAV_ACCESS_FLAG_LAST = UAV_ACCESS_FLAG_READ_WRITE }
 Describes allowed unordered access view mode. More...
 
enum  TEXTURE_VIEW_FLAGS : Uint8 { TEXTURE_VIEW_FLAG_NONE = 0 , TEXTURE_VIEW_FLAG_ALLOW_MIP_MAP_GENERATION = 1u << 0 , TEXTURE_VIEW_FLAG_LAST = TEXTURE_VIEW_FLAG_ALLOW_MIP_MAP_GENERATION }
 Texture view flags. More...
 
enum  TEXTURE_COMPONENT_SWIZZLE : Uint8 {
  TEXTURE_COMPONENT_SWIZZLE_IDENTITY = 0 , TEXTURE_COMPONENT_SWIZZLE_ZERO , TEXTURE_COMPONENT_SWIZZLE_ONE , TEXTURE_COMPONENT_SWIZZLE_R ,
  TEXTURE_COMPONENT_SWIZZLE_G , TEXTURE_COMPONENT_SWIZZLE_B , TEXTURE_COMPONENT_SWIZZLE_A , TEXTURE_COMPONENT_SWIZZLE_COUNT
}
 Texture component swizzle. More...
 
enum  HIT_GROUP_BINDING_MODE : Uint8 { HIT_GROUP_BINDING_MODE_PER_GEOMETRY = 0 , HIT_GROUP_BINDING_MODE_PER_INSTANCE , HIT_GROUP_BINDING_MODE_PER_TLAS , HIT_GROUP_BINDING_MODE_USER_DEFINED , HIT_GROUP_BINDING_MODE_LAST = HIT_GROUP_BINDING_MODE_USER_DEFINED }
 Defines hit group binding mode used by the top-level AS. More...
 
enum  MIP_FILTER_TYPE : Uint8 { MIP_FILTER_TYPE_DEFAULT = 0 , MIP_FILTER_TYPE_BOX_AVERAGE , MIP_FILTER_TYPE_MOST_FREQUENT }
 Coarse mip filter type. More...
 
enum  RENDER_STATE_CACHE_LOG_LEVEL : Uint8 { RENDER_STATE_CACHE_LOG_LEVEL_DISABLED , RENDER_STATE_CACHE_LOG_LEVEL_NORMAL , RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE }
 Render state cache logging level. More...
 
enum  FILE_DIALOG_FLAGS : Uint32 { }
 
enum  DEBUG_MESSAGE_SEVERITY { DEBUG_MESSAGE_SEVERITY_INFO = 0 , DEBUG_MESSAGE_SEVERITY_WARNING , DEBUG_MESSAGE_SEVERITY_ERROR , DEBUG_MESSAGE_SEVERITY_FATAL_ERROR }
 Describes debug message severity. More...
 
enum  IMGUI_COLOR_CONVERSION_MODE : Uint8 { IMGUI_COLOR_CONVERSION_MODE_AUTO = 0 , IMGUI_COLOR_CONVERSION_MODE_SRGB_TO_LINEAR , IMGUI_COLOR_CONVERSION_MODE_NONE }
 
enum  HOT_KEY_FLAGS : Uint32 { HOT_KEY_FLAG_NONE = 0 , HOT_KEY_FLAG_ALLOW_EXIT_ON_ESC = 1 << 0 , HOT_KEY_FLAG_ALLOW_FULL_SCREEN_SWITCH = 1 << 1 , HOT_KEY_FLAG_ALL = ~0u }
 Hot key handling flags. More...
 
enum  IMAGE_FILE_FORMAT : Uint8 {
  IMAGE_FILE_FORMAT_UNKNOWN = 0 , IMAGE_FILE_FORMAT_JPEG , IMAGE_FILE_FORMAT_PNG , IMAGE_FILE_FORMAT_TIFF ,
  IMAGE_FILE_FORMAT_DDS , IMAGE_FILE_FORMAT_KTX , IMAGE_FILE_FORMAT_SGI , IMAGE_FILE_FORMAT_HDR ,
  IMAGE_FILE_FORMAT_TGA
}
 Image file format. More...
 
enum  DECODE_JPEG_RESULT : Uint32 { DECODE_JPEG_RESULT_OK = 0 , DECODE_JPEG_RESULT_INVALID_ARGUMENTS , DECODE_JPEG_RESULT_INITIALIZATION_FAILED , DECODE_JPEG_RESULT_DECODING_ERROR }
 JPEG image decoding result. More...
 
enum  ENCODE_JPEG_RESULT : Uint32 { ENCODE_JPEG_RESULT_OK = 0 , ENCODE_JPEG_RESULT_INVALID_ARGUMENTS , ENCODE_JPEG_RESULT_INITIALIZATION_FAILED }
 JPEG image encoding result. More...
 
enum  DECODE_PNG_RESULT : Uint32 {
  DECODE_PNG_RESULT_OK = 0 , DECODE_PNG_RESULT_INVALID_ARGUMENTS , DECODE_PNG_RESULT_INVALID_SIGNATURE , DECODE_PNG_RESULT_INITIALIZATION_FAILED ,
  DECODE_PNG_RESULT_INVALID_BIT_DEPTH , DECODE_PNG_RESULT_DECODING_ERROR
}
 PNG decoding result. More...
 
enum  ENCODE_PNG_RESULT : Uint32 { ENCODE_PNG_RESULT_OK = 0 , ENCODE_PNG_RESULT_INVALID_ARGUMENTS , ENCODE_PNG_RESULT_INITIALIZATION_FAILED }
 PNG encoding result. More...
 
enum  TEXTURE_LOAD_MIP_FILTER : Uint8 { TEXTURE_LOAD_MIP_FILTER_DEFAULT = 0 , TEXTURE_LOAD_MIP_FILTER_BOX_AVERAGE , TEXTURE_LOAD_MIP_FILTER_MOST_FREQUENT }
 Coarse mip filter type. More...
 
enum  TEXTURE_LOAD_COMPRESS_MODE : Uint8 { TEXTURE_LOAD_COMPRESS_MODE_NONE = 0 , TEXTURE_LOAD_COMPRESS_MODE_BC , TEXTURE_LOAD_COMPRESS_MODE_BC_HIGH_QUAL }
 Texture compression mode. More...
 

Functions

void ExtractViewFrustumPlanesFromMatrix (const float4x4 &Matrix, ViewFrustum &Frustum, bool bIsOpenGL)
 
float3 GetBoxNearestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the nearest bounding box corner along the given direction.
 
float3 GetBoxFarthestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the farthest bounding box corner along the given direction.
 
BoxVisibility GetBoxVisibilityAgainstPlane (const Plane3D &Plane, const BoundBox &Box)
 
BoxVisibility GetBoxVisibilityAgainstPlane (const Plane3D &Plane, const OrientedBoundingBox &Box)
 
void GetFrustumMinimumBoundingSphere (float Proj_00, float Proj_11, float NearPlane, float FarPlane, float3 &Center, float &Radius)
 Returns the minimum bounding sphere of a view frustum.
 
bool IntersectRayBox3D (const float3 &RayOrigin, const float3 &RayDirection, float3 BoxMin, float3 BoxMax, float &EnterDist, float &ExitDist)
 Intersects a ray with 3D box and computes distances to intersections.
 
bool IntersectRayAABB (const float3 &RayOrigin, const float3 &RayDirection, const BoundBox &AABB, float &EnterDist, float &ExitDist)
 Intersects a ray with the axis-aligned bounding box and computes distances to intersections.
 
bool IntersectRayBox2D (const float2 &RayOrigin, const float2 &RayDirection, float2 BoxMin, float2 BoxMax, float &EnterDist, float &ExitDist)
 Intersects a 2D ray with the 2D axis-aligned bounding box and computes distances to intersections.
 
float IntersectRayTriangle (const float3 &V0, const float3 &V1, const float3 &V2, const float3 &RayOrigin, const float3 &RayDirection, bool CullBackFace=false)
 
template<typename TCallback>
void TraceLineThroughGrid (float2 f2Start, float2 f2End, int2 i2GridSize, TCallback Callback)
 Traces a 2D line through the square cell grid and enumerates all cells the line touches.
 
template<typename T, typename IntermediateType>
bool IsPointInsideTriangle (const Vector2< T > &V0, const Vector2< T > &V1, const Vector2< T > &V2, const Vector2< T > &Point, bool AllowEdges)
 Tests if a point is inside triangle.
 
template<typename T, class TCallback>
void RasterizeTriangle (Vector2< T > V0, Vector2< T > V1, Vector2< T > V2, TCallback Callback)
 Rasterizes a triangle and calls the callback function for every sample covered.
 
template<bool AllowTouch, typename T>
bool CheckBox2DBox2DOverlap (const Vector2< T > &Box0Min, const Vector2< T > &Box0Max, const Vector2< T > &Box1Min, const Vector2< T > &Box1Max)
 Checks if two 2D-boxes overlap.
 
template<bool AllowTouch, typename T>
bool CheckLineSectionOverlap (T Min0, T Max0, T Min1, T Max1)
 Checks if two 1D-line sections overlap.
 
void GetArray2DMinMaxValue (const float *pData, size_t StrideInFloats, Uint32 Width, Uint32 Height, float &MinValue, float &MaxValue)
 Computes the minimum and the maximum value in a 2D floating-point array.
 
template<typename T>
std::enable_if< std::is_integral< T >::value, T >::type ExtractLSB (T &bits)
 Returns the least-significant bit and clears it in the input argument.
 
template<typename T>
std::enable_if< std::is_enum< T >::value, T >::type ExtractLSB (T &bits)
 Returns the enum value representing the least-significant bit and clears it in the input argument.
 
template<typename T>
WrapToRange (T Value, T Min, T Range)
 Wraps Value to the range [Min, Min + Range)
 
template<typename T>
bool BasisFromDirection (const Vector3< T > &Dir, bool IsRightHanded, Vector3< T > &X, Vector3< T > &Y, Vector3< T > &Z)
 
template<typename CallbackType>
auto MakeCallback (CallbackType &&Callback)
 
template<TEXTURE_ADDRESS_MODE AddressMode, bool IsNormalizedCoord>
LinearTexFilterSampleInfo GetLinearTexFilterSampleInfo (Uint32 Width, float u)
 
template<typename SrcType, typename DstType, TEXTURE_ADDRESS_MODE AddressModeU, TEXTURE_ADDRESS_MODE AddressModeV, bool IsNormalizedCoord>
DstType FilterTexture2DBilinear (Uint32 Width, Uint32 Height, const SrcType *pData, size_t Stride, float u, float v)
 
template<typename SrcType, typename DstType>
DstType FilterTexture2DBilinearClamp (Uint32 Width, Uint32 Height, const SrcType *pData, size_t Stride, float u, float v)
 
template<typename SrcType, typename DstType>
DstType FilterTexture2DBilinearClampUC (Uint32 Width, Uint32 Height, const SrcType *pData, size_t Stride, float u, float v)
 
Uint32 GetGeometryPrimitiveVertexSize (GEOMETRY_PRIMITIVE_VERTEX_FLAGS VertexFlags)
 Returns the size of the geometry primitive vertex in bytes.
 
void CreateGeometryPrimitive (const GeometryPrimitiveAttributes &Attribs, IDataBlob **ppVertices, IDataBlob **ppIndices, GeometryPrimitiveInfo *pInfo=nullptr)
 
void ComputeImageDifference (const ComputeImageDifferenceAttribs &Attribs, ImageDiffInfo &ImageDiff)
 
size_t CountFloatNumberChars (const char *Str)
 
template<typename IterType, typename HandlerType>
void SplitLongString (IterType Start, IterType End, size_t MaxChunkLen, size_t NewLineSearchLen, HandlerType &&Handler)
 
template<typename IterType, typename HandlerType>
void SplitString (IterType Start, IterType End, const char *Delimiters, HandlerType &&Handler)
 
template<typename IterType>
std::vector< std::string > SplitString (IterType Start, IterType End, const char *Delimiters=nullptr)
 
template<typename Type>
size_t GetPrintWidth (Type Num, Type Base=10)
 Returns the print width of a number Num.
 
Uint64 PinWorkerThread (Uint32 ThreadId, Uint64 AllowedCoresMask)
 
template<typename HanlderType>
RefCntAutoPtr< IAsyncTaskEnqueueAsyncWork (IThreadPool *pThreadPool, IAsyncTask **ppPrerequisites, Uint32 NumPrerequisites, HanlderType Handler, float fPriority=0)
 
float LinearToGamma (float x)
 Converts linear color to gamma color space.
 
float GammaToLinear (float x)
 Converts gamma color to linear color space.
 
float LinearToGamma (Uint8 x)
 Converts linear color to gamma color space.
 
float GammaToLinear (Uint8 x)
 Converts gamma color to linear color space.
 
float FastLinearToGamma (float x)
 Converts linear color to gamma color space using fast approximation.
 
float FastGammaToLinear (float x)
 Converts gamma color to linear color space using fast approximation.
 
float3 LinearToSRGB (const float3 &RGB)
 Converts RGB color from linear to gamma color space.
 
float4 LinearToSRGBA (const float4 &RGBA)
 Converts RGBA color from linear to gamma color space.
 
float3 FastLinearToSRGB (const float3 &RGB)
 Converts RGB color from gamma to linear color space using fast approximation.
 
float4 FastLinearToSRGBA (const float4 &RGBA)
 Converts RGBA color from gamma to linear color space using fast approximation.
 
float3 SRGBToLinear (const float3 &SRGB)
 Converts RGB color from gamma to linear color space.
 
float4 SRGBAToLinear (const float4 &SRGBA)
 Converts RGBA color from gamma to linear color space.
 
float3 FastSRGBToLinear (const float3 &SRGB)
 Converts RGB color from gamma to linear color space using fast approximation.
 
float4 FastSRGBAToLinear (const float4 &SRGBA)
 Converts RGBA color from gamma to linear color space using fast approximation.
 
Uint32 GetValueSize (VALUE_TYPE Val)
 Returns the size of the specified value type.
 
const Char * GetValueTypeString (VALUE_TYPE Val)
 Returns the string representing the specified value type.
 
const TextureFormatAttribsGetTextureFormatAttribs (TEXTURE_FORMAT Format)
 Returns invariant texture format attributes, see TextureFormatAttribs for details.
 
COMPONENT_TYPE ValueTypeToComponentType (VALUE_TYPE ValType, bool IsNormalized, bool IsSRGB)
 Converts value type to component type.
 
VALUE_TYPE ComponentTypeToValueType (COMPONENT_TYPE CompType, Uint32 Size)
 Converts component type and size to value type.
 
TEXTURE_FORMAT TextureComponentAttribsToTextureFormat (COMPONENT_TYPE CompType, Uint32 ComponentSize, Uint32 NumComponents)
 Returns texture format for the specified component type, size and number of components.
 
TEXTURE_FORMAT GetDefaultTextureViewFormat (TEXTURE_FORMAT TextureFormat, TEXTURE_VIEW_TYPE ViewType, Uint32 BindFlags)
 Returns the default format for a specified texture view type.
 
TEXTURE_FORMAT GetDefaultTextureViewFormat (const TextureDesc &TexDesc, TEXTURE_VIEW_TYPE ViewType)
 Returns the default format for a specified texture view type.
 
const Char * GetTexViewTypeLiteralName (TEXTURE_VIEW_TYPE ViewType)
 
const Char * GetBufferViewTypeLiteralName (BUFFER_VIEW_TYPE ViewType)
 
const Char * GetShaderTypeLiteralName (SHADER_TYPE ShaderType)
 
String GetShaderStagesString (SHADER_TYPE ShaderStages)
 
const Char * GetShaderVariableTypeLiteralName (SHADER_RESOURCE_VARIABLE_TYPE VarType, bool bGetFullName=false)
 
const Char * GetShaderResourceTypeLiteralName (SHADER_RESOURCE_TYPE ResourceType, bool bGetFullName=false)
 
const Char * GetViewTypeLiteralName (TEXTURE_VIEW_TYPE TexViewType)
 
const Char * GetViewTypeLiteralName (BUFFER_VIEW_TYPE BuffViewType)
 
const Char * GetFilterTypeLiteralName (FILTER_TYPE FilterType, bool bGetFullName)
 
const Char * GetTextureAddressModeLiteralName (TEXTURE_ADDRESS_MODE AddressMode, bool bGetFullName)
 
const Char * GetComparisonFunctionLiteralName (COMPARISON_FUNCTION ComparisonFunc, bool bGetFullName)
 
const Char * GetStencilOpLiteralName (STENCIL_OP StencilOp)
 Returns the literal name of a stencil operation.
 
const Char * GetBlendFactorLiteralName (BLEND_FACTOR BlendFactor)
 Returns the literal name of a blend factor.
 
const Char * GetBlendOperationLiteralName (BLEND_OPERATION BlendOp)
 Returns the literal name of a blend operation.
 
const Char * GetFillModeLiteralName (FILL_MODE FillMode)
 Returns the literal name of a fill mode.
 
const Char * GetCullModeLiteralName (CULL_MODE CullMode, bool GetEnumString=false)
 Returns the literal name of a cull mode.
 
const Char * GetMapTypeString (MAP_TYPE MapType)
 Returns the string containing the map type.
 
const Char * GetUsageString (USAGE Usage)
 Returns the string containing the usage.
 
const Char * GetResourceDimString (RESOURCE_DIMENSION TexType)
 Returns the string containing the texture type.
 
const Char * GetBindFlagString (Uint32 BindFlag)
 Returns the string containing single bind flag.
 
String GetBindFlagsString (Uint32 BindFlags, const char *Delimiter="|")
 Returns the string containing the bind flags.
 
String GetCPUAccessFlagsString (Uint32 CpuAccessFlags)
 Returns the string containing the CPU access flags.
 
String GetTextureDescString (const TextureDesc &Desc)
 Returns the string containing the texture description.
 
String GetBufferFormatString (const BufferFormat &Fmt)
 Returns the string containing the buffer format description.
 
const Char * GetBufferModeString (BUFFER_MODE Mode)
 Returns the string containing the buffer mode description.
 
String GetBufferDescString (const BufferDesc &Desc)
 Returns the string containing the buffer description.
 
String GetShaderDescString (const ShaderDesc &Desc)
 Returns the string containing the shader description.
 
const Char * GetResourceStateFlagString (RESOURCE_STATE State)
 Returns the string containing the buffer mode description.
 
String GetCommandQueueTypeString (COMMAND_QUEUE_TYPE Type)
 Returns the string containing the command queue type.
 
const Char * GetFenceTypeString (FENCE_TYPE Type)
 Returns the string containing the fence type.
 
const Char * GetShaderStatusString (SHADER_STATUS ShaderStatus, bool GetEnumString=false)
 
const Char * GetPipelineStateStatusString (PIPELINE_STATE_STATUS PipelineStatus, bool GetEnumString=false)
 
template<typename TObjectDescType>
String GetObjectDescString (const TObjectDescType &)
 Helper template function that converts object description into a string.
 
template<>
String GetObjectDescString (const TextureDesc &TexDesc)
 Template specialization for texture description.
 
template<>
String GetObjectDescString (const BufferDesc &BuffDesc)
 Template specialization for buffer description.
 
const char * GetQueryTypeString (QUERY_TYPE QueryType)
 Returns the string representation of the QUERY_TYPE enum value (e.g. "QUERY_TYPE_OCCLUSION")
 
const char * GetSurfaceTransformString (SURFACE_TRANSFORM SrfTransform)
 Returns the string representation of the SURFACE_TRANSFORM enum value (e.g. "SURFACE_TRANSFORM_ROTATE_90")
 
const char * GetPipelineTypeString (PIPELINE_TYPE PipelineType)
 Returns the string representation of the PIPELINE_TYPE enum value (e.g. "PIPELINE_TYPE_COMPUTE")
 
const char * GetShaderCompilerTypeString (SHADER_COMPILER Compiler)
 Returns the string representation of the SHADER_COMPILER enum value (e.g. "SHADER_COMPILER_GLSLANG")
 
const char * GetArchiveDeviceDataFlagString (ARCHIVE_DEVICE_DATA_FLAGS Flag, bool bGetFullName=false)
 Returns the string representation of the ARCHIVE_DEVICE_DATA_FLAGS enum value.
 
const char * GetDeviceFeatureStateString (DEVICE_FEATURE_STATE State, bool bGetFullName=false)
 Returns the string representation of the DEVICE_FEATURE_STATE enum value.
 
const char * GetRenderDeviceTypeString (RENDER_DEVICE_TYPE DeviceType, bool GetEnumString=false)
 
const char * GetRenderDeviceTypeShortString (RENDER_DEVICE_TYPE DeviceType, bool Capital=false)
 
String GetShaderCodeBufferDescString (const ShaderCodeBufferDesc &Desc, size_t GlobalIdent=0, size_t MemberIdent=2)
 Returns the string containing the shader buffer description.
 
String GetShaderCodeVariableDescString (const ShaderCodeVariableDesc &Desc, size_t GlobalIdent=0, size_t MemberIdent=2)
 Returns the string containing the shader code variable description.
 
const char * GetInputElementFrequencyString (INPUT_ELEMENT_FREQUENCY Frequency)
 Returns the string representation of the input element frequency (e.g. "undefined")
 
String GetLayoutElementString (const LayoutElement &Element)
 Returns the string containing the layout element description.
 
PIPELINE_RESOURCE_FLAGS GetValidPipelineResourceFlags (SHADER_RESOURCE_TYPE ResourceType)
 Returns valid pipeline resource flags for the specified shader resource type.
 
PIPELINE_RESOURCE_FLAGS ShaderVariableFlagsToPipelineResourceFlags (SHADER_VARIABLE_FLAGS Flags)
 Converts shader variable flags to corresponding pipeline resource flags.
 
BIND_FLAGS SwapChainUsageFlagsToBindFlags (SWAP_CHAIN_USAGE_FLAGS SwapChainUsage)
 Returns bind flags for the specified swap chain usage flags.
 
Uint32 ComputeMipLevelsCount (Uint32 Width)
 Returns the number of mip levels for the specified texture dimensions.
 
Uint32 ComputeMipLevelsCount (Uint32 Width, Uint32 Height)
 Returns the number of mip levels for the specified texture dimensions.
 
Uint32 ComputeMipLevelsCount (Uint32 Width, Uint32 Height, Uint32 Depth)
 Returns the number of mip levels for the specified texture dimensions.
 
bool IsComparisonFilter (FILTER_TYPE FilterType)
 Checks if the specified filter type is a point filter.
 
bool IsAnisotropicFilter (FILTER_TYPE FilterType)
 Checks if the specified filter type is an anisotropic filter.
 
MipLevelProperties GetMipLevelProperties (const TextureDesc &TexDesc, Uint32 MipLevel)
 Returns mip level properties for the specified texture description and mip level.
 
Uint64 GetStagingTextureLocationOffset (const TextureDesc &TexDesc, Uint32 ArraySlice, Uint32 MipLevel, Uint32 Alignment, Uint32 LocationX, Uint32 LocationY, Uint32 LocationZ)
 
Uint64 GetStagingTextureSubresourceOffset (const TextureDesc &TexDesc, Uint32 ArraySlice, Uint32 MipLevel, Uint32 Alignment)
 
Uint64 GetStagingTextureDataSize (const TextureDesc &TexDesc, Uint32 Alignment=4)
 Returns the total memory size required to store the staging texture data.
 
void CopyTextureSubresource (const TextureSubResData &SrcSubres, Uint32 NumRows, Uint32 NumDepthSlices, Uint64 RowSize, void *pDstData, Uint64 DstRowStride, Uint64 DstDepthStride)
 Copies texture subresource data on the CPU.
 
TEXTURE_FORMAT UnormFormatToSRGB (TEXTURE_FORMAT Fmt)
 Converts UNORM format to a corresponding SRGB format.
 
TEXTURE_FORMAT SRGBFormatToUnorm (TEXTURE_FORMAT Fmt)
 Converts SRGB format to a corresponding UNORM format.
 
TEXTURE_FORMAT BCFormatToUncompressed (TEXTURE_FORMAT Fmt)
 Converts block-compressed format to a corresponding uncompressed format.
 
TEXTURE_FORMAT TypelessFormatToUnorm (TEXTURE_FORMAT Fmt)
 Converts typeless format to a corresponding UNORM format.
 
TEXTURE_FORMAT TypelessFormatToSRGB (TEXTURE_FORMAT Fmt)
 Converts typeless format to a corresponding SRGB format.
 
bool IsSRGBFormat (TEXTURE_FORMAT Fmt)
 Checks if the format is an SRGB format.
 
String GetTextureComponentMappingString (const TextureComponentMapping &Mapping)
 Converts texture component mapping to a string.
 
bool TextureComponentMappingFromString (const String &MappingStr, TextureComponentMapping &Mapping)
 Converts texture component mapping string to the mapping.
 
SparseTextureProperties GetStandardSparseTextureProperties (const TextureDesc &TexDesc)
 Returns the sparse texture properties assuming the standard tile shapes.
 
uint3 GetNumSparseTilesInBox (const Box &Region, const Uint32 TileSize[3])
 Returns the number of sparse memory tiles in the given box region.
 
uint3 GetNumSparseTilesInMipLevel (const TextureDesc &Desc, const Uint32 TileSize[3], Uint32 MipLevel)
 Returns the number of sparse memory tiles in the given texture mip level.
 
bool IsIdentityComponentMapping (const TextureComponentMapping &Mapping)
 Returns true if the Mapping defines an identity texture component swizzle.
 
std::vector< Uint32ResolveInputLayoutAutoOffsetsAndStrides (LayoutElement *pLayoutElements, Uint32 NumElements)
 
template<typename FeaturesType>
std::string GetDeviceFeaturesString (const FeaturesType &Features, size_t NumColumns, int Indent=4, int Spacing=4, Uint32 Flags=~0u)
 
void ValidateBottomLevelASDesc (const BottomLevelASDesc &Desc) noexcept(false)
 Validates bottom-level AS description and throws an exception in case of an error.
 
void CopyBLASGeometryDesc (const BottomLevelASDesc &SrcDesc, BottomLevelASDesc &DstDesc, FixedLinearAllocator &MemPool, const BLASNameToIndex *pSrcNameToIndex, BLASNameToIndex &DstNameToIndex) noexcept(false)
 Copies bottom-level AS geometry description using MemPool to allocate required space.
 
void ValidateBufferDesc (const BufferDesc &Desc, const IRenderDevice *pDevice) noexcept(false)
 Validates buffer description and throws an exception in case of an error.
 
void ValidateBufferInitData (const BufferDesc &Desc, const BufferData *pBuffData) noexcept(false)
 Validates initial buffer data parameters and throws an exception in case of an error.
 
void ValidateAndCorrectBufferViewDesc (const BufferDesc &BuffDesc, BufferViewDesc &ViewDesc, Uint32 StructuredBufferOffsetAlignment) noexcept(false)
 Validates and corrects buffer view description; throws an exception in case of an error.
 
void CreateDefaultShaderSourceStreamFactory (const Char *SearchDirectories, IShaderSourceInputStreamFactory **ppShaderSourceStreamFactory)
 
void ValidateDeviceMemoryDesc (const DeviceMemoryDesc &Desc, const IRenderDevice *pDevice) noexcept(false)
 Validates device memory description and throws an exception in case of an error.
 
void VerifyEngineCreateInfo (const EngineCreateInfo &EngineCI, const GraphicsAdapterInfo &AdapterInfo) noexcept(false)
 Validates engine create info EngineCI and throws an exception in case of an error.
 
void ValidatePipelineResourceSignatureDesc (const PipelineResourceSignatureDesc &Desc, const IRenderDevice *pDevice, RENDER_DEVICE_TYPE DeviceType) noexcept(false)
 
Uint32 FindImmutableSampler (const ImmutableSamplerDesc ImtblSamplers[], Uint32 NumImtblSamplers, SHADER_TYPE ShaderStages, const char *ResourceName, const char *SamplerSuffix)
 
Uint32 FindResource (const PipelineResourceDesc Resources[], Uint32 NumResources, SHADER_TYPE ShaderStage, const char *ResourceName)
 
bool PipelineResourceSignaturesCompatible (const PipelineResourceSignatureDesc &Desc0, const PipelineResourceSignatureDesc &Desc1, bool IgnoreSamplerDescriptions=false) noexcept
 Returns true if two pipeline resource signature descriptions are compatible, and false otherwise.
 
size_t CalculatePipelineResourceSignatureDescHash (const PipelineResourceSignatureDesc &Desc) noexcept
 Calculates hash of the pipeline resource signature description.
 
void ReserveSpaceForPipelineResourceSignatureDesc (FixedLinearAllocator &Allocator, const PipelineResourceSignatureDesc &Desc)
 Reserves space for pipeline resource signature description in the Allocator.
 
void CopyPipelineResourceSignatureDesc (FixedLinearAllocator &Allocator, const PipelineResourceSignatureDesc &SrcDesc, PipelineResourceSignatureDesc &DstDesc, std::array< Uint16, SHADER_RESOURCE_VARIABLE_TYPE_NUM_TYPES+1 > &ResourceOffsets)
 Copies pipeline resource signature description using the allocator.
 
void ValidatePipelineResourceCompatibility (const PipelineResourceDesc &ResDesc, SHADER_RESOURCE_TYPE Type, PIPELINE_RESOURCE_FLAGS ResourceFlags, Uint32 ArraySize, const char *ShaderName, const char *SignatureName) noexcept(false)
 
void CopyRTShaderGroupNames (std::unordered_map< HashMapStringKey, Uint32 > &NameToGroupIndex, const RayTracingPipelineStateCreateInfo &CreateInfo, FixedLinearAllocator &MemPool) noexcept
 Copies ray tracing shader group names and also initializes the mapping from the group name to its index.
 
ShaderResourceVariableDesc FindPipelineResourceLayoutVariable (const PipelineResourceLayoutDesc &LayoutDesc, const char *Name, SHADER_TYPE ShaderStage, const char *CombinedSamplerSuffix)
 
void ValidatePipelineStateCacheCreateInfo (const PipelineStateCacheCreateInfo &CreateInfo) noexcept(false)
 Validates PSO cache create info and throws an exception in case of an error.
 
DeviceFeatures EnableDeviceFeatures (const DeviceFeatures &SupportedFeatures, const DeviceFeatures &RequestedFeatures) noexcept(false)
 
COMPONENT_TYPE CheckSparseTextureFormatSupport (TEXTURE_FORMAT TexFormat, RESOURCE_DIMENSION Dimension, Uint32 SampleCount, const SparseResourceProperties &SparseRes) noexcept
 Checks sparse texture format support and returns the component type.
 
void ValidateSamplerDesc (const SamplerDesc &Desc, const IRenderDevice *pDevice) noexcept(false)
 Validates sampler description and throws an exception in case of an error.
 
void ValidateShaderBindingTableDesc (const ShaderBindingTableDesc &Desc, Uint32 ShaderGroupHandleSize, Uint32 MaxShaderRecordStride) noexcept(false)
 Validates SBT description and throws an exception in case of an error.
 
void ValidateTextureDesc (const TextureDesc &TexDesc, const IRenderDevice *pDevice) noexcept(false)
 Validates texture description and throws an exception in case of an error.
 
void ValidatedAndCorrectTextureViewDesc (const TextureDesc &TexDesc, TextureViewDesc &ViewDesc) noexcept(false)
 Validates and corrects texture view description; throws an exception in case of an error.
 
void ValidateUpdateTextureParams (const TextureDesc &TexDesc, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData)
 Validates update texture command parameters.
 
void ValidateCopyTextureParams (const CopyTextureAttribs &CopyAttribs)
 Validates copy texture command parameters.
 
void ValidateMapTextureParams (const TextureDesc &TexDesc, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, Uint32 MapFlags, const Box *pMapRegion)
 Validates map texture command parameters.
 
void ValidateTopLevelASDesc (const TopLevelASDesc &Desc) noexcept(false)
 Validates top-level AS description and throws an exception in case of an error.
 
bool PipelineResourcesCompatible (const PipelineResourceDesc &lhs, const PipelineResourceDesc &rhs)
 Returns true if two pipeline resources are compatible.
 
void VerifyD3DResourceMerge (const char *PSOName, const D3DShaderResourceAttribs &ExistingRes, const D3DShaderResourceAttribs &NewResAttribs) noexcept(false)
 Verifies that two pipeline resources are compatible and throws an exception in case of an error.
 
void ValidateShaderResourceBindings (const char *PSOName, const ShaderResources &Resources, const ResourceBinding::TMap &BindingsMap) noexcept(false)
 Verifies that shader resource bindings match the bindings map and throws an exception in case of an error.
 
void CreateBufferSuballocator (IRenderDevice *pDevice, const BufferSuballocatorCreateInfo &CreateInfo, IBufferSuballocator **ppBufferSuballocator)
 Creates a new buffer suballocator.
 
Uint32 ComputeTextureAtlasSuballocationAlignment (Uint32 Width, Uint32 Height, Uint32 MinAlignment)
 Computes the texture atlas suballocation alignment for the region of a given size.
 
void CreateDynamicTextureAtlas (IRenderDevice *pDevice, const DynamicTextureAtlasCreateInfo &CreateInfo, IDynamicTextureAtlas **ppAtlas)
 Creates a new dynamic texture atlas.
 
void CreateSparseTextureMtl (IRenderDevice *pDevice, const TextureDesc &TexDesc, IDeviceMemory *pMemory, ITexture **ppTexture)
 Creates a sparse texture in Metal backend.
 
ITextureViewGetDefaultSRV (ITexture *pTexture)
 Returns default shader resource view of a texture.
 
ITextureViewGetDefaultRTV (ITexture *pTexture)
 Returns default render target view of a texture.
 
ITextureViewGetDefaultDSV (ITexture *pTexture)
 Returns default depth-stencil view of a texture.
 
ITextureViewGetDefaultUAV (ITexture *pTexture)
 Returns default unordered access view of a texture.
 
IBufferViewGetDefaultSRV (IBuffer *pBuffer)
 Returns default shader resource view of a buffer.
 
IBufferViewGetDefaultUAV (IBuffer *pBuffer)
 Returns default unordered access view of a buffer.
 
ITextureViewGetTextureDefaultSRV (IObject *pTexture)
 Returns default shader resource view of a texture.
 
ITextureViewGetTextureDefaultRTV (IObject *pTexture)
 Returns default render target view of a texture.
 
ITextureViewGetTextureDefaultDSV (IObject *pTexture)
 Returns default depth-stencil view of a texture.
 
ITextureViewGetTextureDefaultUAV (IObject *pTexture)
 Returns default unordered access view of a texture.
 
IBufferViewGetBufferDefaultSRV (IObject *pBuffer)
 Returns default shader resource view of a buffer.
 
IBufferViewGetBufferDefaultUAV (IObject *pBuffer)
 Returns default unordered access view of a buffer.
 
const char * GetWebGPUEmulatedArrayIndexSuffix (IShader *pShader)
 
int64_t GetNativeTextureFormat (TEXTURE_FORMAT TexFormat, enum RENDER_DEVICE_TYPE DeviceType)
 Returns the native texture format (e.g. DXGI_FORMAT, VkFormat) for the given texture format and device type.
 
TEXTURE_FORMAT GetTextureFormatFromNative (int64_t NativeFormat, enum RENDER_DEVICE_TYPE DeviceType)
 Returns the texture format for the given native format (e.g. DXGI_FORMAT, VkFormat) and device type.
 
void CreateGeometryPrimitiveBuffers (IRenderDevice *pDevice, const GeometryPrimitiveAttributes &Attribs, const GeometryPrimitiveBuffersCreateInfo *pBufferCI, IBuffer **ppVertices, IBuffer **ppIndices, GeometryPrimitiveInfo *pInfo=nullptr)
 Creates vertex and index buffers for a geometry primitive (see Diligent::CreateGeometryPrimitive)
 
void CreateOffScreenSwapChain (IRenderDevice *pDevice, IDeviceContext *pContext, const SwapChainDesc &SCDesc, ISwapChain **ppSwapChain)
 Creates an off-screen swap chain.
 
void GetOpenXRGraphicsBinding (IRenderDevice *pDevice, IDeviceContext *pContext, IDataBlob **ppGraphicsBinding)
 Prepares OpenXR graphics binding for the specified device and context.
 
XrDebugUtilsMessengerEXT CreateOpenXRDebugUtilsMessenger (XrInstance xrInstance, XrDebugUtilsMessageSeverityFlagsEXT xrMessageSeverities)
 Creates OpenXR debug utils messenger.
 
XrResult DestroyOpenXRDebugUtilsMessenger (XrDebugUtilsMessengerEXT xrDebugUtilsMessenger)
 Destroys OpenXR debug utils messenger.
 
void AllocateOpenXRSwapchainImageData (RENDER_DEVICE_TYPE DeviceType, Uint32 ImageCount, IDataBlob **ppSwapchainImageData)
 
void GetOpenXRSwapchainImage (IRenderDevice *pDevice, const XrSwapchainImageBaseHeader *ImageData, Uint32 ImageIndex, const Diligent::TextureDesc &TexDesc, ITexture **ppImage)
 Returns the texture object that corresponds to the specified OpenXR swapchain image.
 
std::string GetRenderStateCacheFilePath (const char *CacheLocation, const char *AppName, RENDER_DEVICE_TYPE DeviceType)
 Returns the path to the render state cache file.
 
void CreateCompoundShaderSourceFactory (const CompoundShaderSourceFactoryCreateInfo &CreateInfo, IShaderSourceInputStreamFactory **ppFactory)
 Creates a compound shader source factory.
 
void CreateMemoryShaderSourceFactory (const MemoryShaderSourceFactoryCreateInfo &CreateInfo, IShaderSourceInputStreamFactory **ppFactory)
 
void CreateVertexPool (IRenderDevice *pDevice, const VertexPoolCreateInfo &CreateInfo, IVertexPool **ppVertexPool)
 Creates a new vertex pool.
 
void CreateDxcBlobWrapper (IDataBlob *pDataBlob, IDxcBlob **pDxcBlobWrapper)
 Creates a DXC blob wrapper around the provided data blob.
 
std::vector< std::pair< std::string, std::string > > GetGLSLExtensions (const char *Source, size_t SourceLen=0)
 
ShaderMacroArray GetShaderTypeMacros (SHADER_TYPE Type)
 
void AppendShaderMacros (std::string &Source, const ShaderMacroArray &Macros)
 
void AppendShaderTypeDefinitions (std::string &Source, SHADER_TYPE Type)
 
void AppendPlatformDefinition (std::string &Source)
 
void AppendShaderSourceLanguageDefinition (std::string &Source, SHADER_SOURCE_LANGUAGE Language)
 
SHADER_SOURCE_LANGUAGE ParseShaderSourceLanguageDefinition (const std::string &Source)
 
ShaderSourceFileData ReadShaderSourceFile (const char *SourceCode, size_t SourceLength, IShaderSourceInputStreamFactory *pShaderSourceStreamFactory, const char *FilePath) noexcept(false)
 Reads shader source code from a file or uses the one from the shader create info.
 
void AppendLine1Marker (std::string &Source, const char *FileName)
 
void AppendShaderSourceCode (std::string &Source, const ShaderCreateInfo &ShaderCI) noexcept(false)
 Appends shader source code to the source string.
 
bool ProcessShaderIncludes (const ShaderCreateInfo &ShaderCI, std::function< void(const ShaderIncludePreprocessInfo &)> IncludeHandler) noexcept
 
std::string UnrollShaderIncludes (const ShaderCreateInfo &ShaderCI) noexcept(false)
 Unrolls all include files into a single file.
 
std::vector< uint32_t > PatchImageFormats (const std::vector< uint32_t > &SPIRV, const std::unordered_map< HashMapStringKey, TEXTURE_FORMAT > &ImageFormats)
 
std::string GetWGSLResourceAlternativeName (const tint::Program &Program, const tint::inspector::ResourceBinding &Binding)
 
WGSLEmulatedResourceArrayElement GetWGSLEmulatedArrayElement (const std::string &Name, const std::string &Suffix)
 
void SetDebugMessageCallback (DebugMessageCallbackType DbgMessageCallback)
 Sets the debug message callback function.
 
float3 ReverseExpToneMap (const float3 &Color, float MiddleGray, float AverageLogLum)
 
bool ToneMappingUpdateUI (HLSL::ToneMappingAttribs &Attribs, float *AverageLogLum=nullptr)
 Adds tone mapping UI elements.
 
void DecompressBC1Block (const Uint8 *Bits, Uint8 *DstBuffer, Uint32 DstChannels=4)
 Decompresses BC1 block (4x4 RGB).
 
void DecompressBC3Block (const Uint8 *Bits, Uint8 *DstBuffer)
 Decompresses BC3 block (4x4 RGB+A).
 
void DecompressBC4Block (const Uint8 *Bits, Uint8 *DstBuffer, Uint32 DstChannels=1)
 Decompresses BC4 block (4x4 R).
 
void DecompressBC5Block (const Uint8 *Bits, Uint8 *DstBuffer, Uint32 DstChannels=2)
 Decompresses BC5 block (4x4 R+G).
 
IMAGE_FILE_FORMAT CreateImageFromFile (const Char *FilePath, Image **ppImage, IDataBlob **ppRawData=nullptr)
 Creates an image from file.
 
IMAGE_FILE_FORMAT CreateImageFromMemory (const void *pImageData, size_t DataSize, Image **ppImage)
 Creates an image from memory.
 
DECODE_JPEG_RESULT DecodeJpeg (const void *pSrcJpegBits, size_t JpegDataSize, IDataBlob *pDstPixels, ImageDesc *pDstImgDesc)
 Decodes jpeg image.
 
ENCODE_JPEG_RESULT EncodeJpeg (Uint8 *pSrcRGBPixels, Uint32 Width, Uint32 Height, int quality, IDataBlob *pDstJpegBits)
 Encodes an image jpeg PNG format.
 
DECODE_PNG_RESULT DecodePng (const void *pSrcPngBits, size_t PngDataSize, IDataBlob *pDstPixels, ImageDesc *pDstImgDesc)
 Decodes png image.
 
ENCODE_PNG_RESULT EncodePng (const Uint8 *pSrcPixels, Uint32 Width, Uint32 Height, Uint32 StrideInBytes, int PngColorType, IDataBlob *pDstPngBits)
 Encodes an image into PNG format.
 
bool LoadSGI (const void *pSGIData, size_t DataSize, IDataBlob *pDstPixels, ImageDesc *pDstImgDesc)
 Loads an SGI image.
 
void CreateTextureLoaderFromImage (struct Image *pSrcImage, const TextureLoadInfo &TexLoadInfo, ITextureLoader **ppLoader)
 Creates a texture loader from image.
 
void CreateTextureLoaderFromFile (const char *FilePath, IMAGE_FILE_FORMAT FileFormat, const TextureLoadInfo &TexLoadInfo, ITextureLoader **ppLoader)
 Creates a texture loader from file.
 
void CreateTextureLoaderFromMemory (const void *pData, size_t Size, bool MakeCopy, const TextureLoadInfo &TexLoadInfo, ITextureLoader **ppLoader)
 Creates a texture loader from memory.
 
void CreateTextureLoaderFromDataBlob (IDataBlob *pDataBlob, const TextureLoadInfo &TexLoadInfo, ITextureLoader **ppLoader)
 
size_t GetTextureLoaderMemoryRequirement (const void *pData, size_t Size, const TextureLoadInfo &TexLoadInfo)
 
bool SaveTextureAsDDS (const char *FilePath, const TextureDesc &Desc, const TextureData &TexData)
 Writes texture data as DDS file.
 
bool WriteDDSToStream (IFileStream *pFileStream, const TextureDesc &Desc, const TextureData &TexData)
 Writes texture as DDS to a file stream.
 
void CopyPixels (const CopyPixelsAttribs &Attribs)
 Copies texture pixels allowing changing the number of components.
 
void ExpandPixels (const ExpandPixelsAttribs &Attribs)
 Expands the texture pixels by repeating the last row and column.
 
void PremultiplyAlpha (const PremultiplyAlphaAttribs &Attribs)
 
void CreateTextureFromFile (const Char *FilePath, const TextureLoadInfo &TexLoadInfo, IRenderDevice *pDevice, ITexture **ppTexture)
 Creates a texture from file.
 

Detailed Description

Graphics engine namespace.

Unique identification structures.

Namespace for the OpenGL implementation of the graphics engine.

This file must be included after D3D11TypeDefinitions.h or D3D12TypeDefinitions.h.

The library uses Direct3D-style math:

  • Matrices are multiplied left to right in the order corresponding transforms are applied:
    • WorldViewProj = World * View * Proj
  • Vectors are row-vectors and multiplied by matrices as v * m:
    • ClipPos = WorldPos * WorldViewProj
  • Matrices are stored using row-major layout: m = {row0, row1, row2, row3}
    • Note that GL-style math libraries use column-vectors and column-major matrix layout. As a result, matrices that perform similar transforms use exactly the same element order. However, matrix multiplication order is reversed: M1_D3D * M2_D3D = M2_GL * M1_GL

Diligent Engine shaders always use column-major matrices for the purposes of data storage. This means that if you use D3D-style math in shaders (ClipPos = mul(WorldPos, WorldViewProj)), you need to transpose the host-side matrix before writing it to GPU memory.

If you use GL-style math in shaders (ClipPos = mul(WorldViewProj, WorldPos)), you do not need to transpose the host-side matrix and should write it to GPU memory as is. Since the matrix rows will be written to the GPU matrix columns, this will have the effect of transposing the matrix. Since mul(WorldViewProj, WorldPos) == mul(WorldPos, transpose(WorldViewProj)), the results will be consistent with D3D case.

Typedef Documentation

◆ DebugMessageCallbackType

typedef void(DILIGENT_CALL_TYPE * Diligent::DebugMessageCallbackType) (enum DEBUG_MESSAGE_SEVERITY Severity, const Char *Message, const Char *Function, const Char *File, int Line)

Type of the debug message callback function.

Parameters
[in]Severity- Message severity
[in]Message- Debug message
[in]Function- Name of the function or nullptr
[in]Function- File name or nullptr
[in]Line- Line number

Enumeration Type Documentation

◆ ACCESS_FLAGS

Access flag.

The flags mirror VkAccessFlags enum and only have effect in Vulkan backend.

Enumerator
ACCESS_FLAG_NONE 

No access.

ACCESS_FLAG_INDIRECT_COMMAND_READ 

Read access to indirect command data read as part of an indirect drawing or dispatch command.

ACCESS_FLAG_INDEX_READ 

Read access to an index buffer as part of an indexed drawing command.

ACCESS_FLAG_VERTEX_READ 

Read access to a vertex buffer as part of a drawing command.

ACCESS_FLAG_UNIFORM_READ 

Read access to a uniform buffer.

ACCESS_FLAG_INPUT_ATTACHMENT_READ 

Read access to an input attachment within a render pass during fragment shading.

ACCESS_FLAG_SHADER_READ 

Read access from a shader resource, formatted buffer, UAV.

ACCESS_FLAG_SHADER_WRITE 

Write access to a UAV.

ACCESS_FLAG_RENDER_TARGET_READ 

Read access to a color render target, such as via blending, logic operations, or via certain subpass load operations.

ACCESS_FLAG_RENDER_TARGET_WRITE 

Write access to a color render target, resolve, or depth/stencil resolve attachment during a render pass or via certain subpass load and store operations.

ACCESS_FLAG_DEPTH_STENCIL_READ 

Read access to a depth/stencil buffer, via depth or stencil operations or via certain subpass load operations

ACCESS_FLAG_DEPTH_STENCIL_WRITE 

Write access to a depth/stencil buffer, via depth or stencil operations or via certain subpass load and store operations

ACCESS_FLAG_COPY_SRC 

Read access to an texture or buffer in a copy operation.

ACCESS_FLAG_COPY_DST 

Write access to an texture or buffer in a copy operation.

ACCESS_FLAG_HOST_READ 

Read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.

ACCESS_FLAG_HOST_WRITE 

Write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory.

ACCESS_FLAG_MEMORY_READ 

All read accesses. It is always valid in any access mask, and is treated as equivalent to setting all READ access flags that are valid where it is used.

ACCESS_FLAG_MEMORY_WRITE 

All write accesses. It is always valid in any access mask, and is treated as equivalent to setting all WRITE access

ACCESS_FLAG_CONDITIONAL_RENDERING_READ 

Read access to a predicate as part of conditional rendering.

ACCESS_FLAG_SHADING_RATE_TEXTURE_READ 

Read access to a shading rate texture as part of a drawing command.

ACCESS_FLAG_ACCELERATION_STRUCTURE_READ 

Read access to an acceleration structure as part of a trace or build command.

ACCESS_FLAG_ACCELERATION_STRUCTURE_WRITE 

Write access to an acceleration structure or acceleration structure scratch buffer as part of a build command.

ACCESS_FLAG_FRAGMENT_DENSITY_MAP_READ 

Read access to a fragment density map attachment during dynamic fragment density map operations.

ACCESS_FLAG_DEFAULT 

Default access type that is determined by the resource state. For example, RESOURCE_STATE_RENDER_TARGET corresponds to ACCESS_FLAG_RENDER_TARGET_WRITE access type.

◆ ADAPTER_TYPE

Hardware adapter type.

Enumerator
ADAPTER_TYPE_UNKNOWN 

Adapter type is unknown.

ADAPTER_TYPE_SOFTWARE 

Software adapter.

ADAPTER_TYPE_INTEGRATED 

Integrated hardware adapter.

ADAPTER_TYPE_DISCRETE 

Discrete hardware adapter.

ADAPTER_TYPE_COUNT 

The total number of adapter types in the enumeration.

◆ ADAPTER_VENDOR

Graphics adapter vendor.

Enumerator
ADAPTER_VENDOR_UNKNOWN 

Adapter vendor is unknown.

ADAPTER_VENDOR_NVIDIA 

Adapter vendor is NVidia.

ADAPTER_VENDOR_AMD 

Adapter vendor is AMD.

ADAPTER_VENDOR_INTEL 

Adapter vendor is Intel.

ADAPTER_VENDOR_ARM 

Adapter vendor is ARM.

ADAPTER_VENDOR_QUALCOMM 

Adapter vendor is Qualcomm.

ADAPTER_VENDOR_IMGTECH 

Adapter vendor is Imagination Technologies.

ADAPTER_VENDOR_MSFT 

Adapter vendor is Microsoft (software rasterizer)

ADAPTER_VENDOR_APPLE 

Adapter vendor is Apple.

ADAPTER_VENDOR_MESA 

Adapter vendor is Mesa (software rasterizer)

ADAPTER_VENDOR_BROADCOM 

Adapter vendor is Broadcom (Raspberry Pi)

ADAPTER_VENDOR_LAST 

Special value that indicates the last vendor in the enumeration.

◆ ARCHIVE_DEVICE_DATA_FLAGS

Flags that indicate which device data will be serialized.

Enumerator
ARCHIVE_DEVICE_DATA_FLAG_NONE 

No data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_D3D11 

Direct3D11 device data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_D3D12 

Direct3D12 device data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_GL 

OpenGL device data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_GLES 

OpenGLES device data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_VULKAN 

Vulkan device data will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_METAL_MACOS 

Metal device data for MacOS will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_METAL_IOS 

Metal device data for iOS will be serialized.

ARCHIVE_DEVICE_DATA_FLAG_WEBGPU 

WebGPU device data will be serialized.

◆ ASYNC_TASK_STATUS

Asynchronous task status.

Enumerator
ASYNC_TASK_STATUS_UNKNOWN 

The asynchronous task status is unknown.

ASYNC_TASK_STATUS_NOT_STARTED 

The asynchronous task has not been started yet.

ASYNC_TASK_STATUS_RUNNING 

The asynchronous task is running.

ASYNC_TASK_STATUS_CANCELLED 

The asynchronous task was cancelled.

ASYNC_TASK_STATUS_COMPLETE 

The asynchronous task is complete.

◆ ATTACHMENT_LOAD_OP

Render pass attachment load operation Vulkan counterpart: VkAttachmentLoadOp. D3D12 counterpart: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE.

Enumerator
ATTACHMENT_LOAD_OP_LOAD 

The previous contents of the texture within the render area will be preserved. Vulkan counterpart: VK_ATTACHMENT_LOAD_OP_LOAD. D3D12 counterpart: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE.

ATTACHMENT_LOAD_OP_CLEAR 

The contents within the render area will be cleared to a uniform value, which is specified when a render pass instance is begun. Vulkan counterpart: VK_ATTACHMENT_LOAD_OP_CLEAR. D3D12 counterpart: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR.

ATTACHMENT_LOAD_OP_DISCARD 

The previous contents within the area need not be preserved; the contents of the attachment will be undefined inside the render area. Vulkan counterpart: VK_ATTACHMENT_LOAD_OP_DONT_CARE. D3D12 counterpart: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD.

ATTACHMENT_LOAD_OP_COUNT 

Special value indicating the number of load operations in the enumeration.

◆ ATTACHMENT_STORE_OP

Render pass attachment store operation Vulkan counterpart: VkAttachmentStoreOp. D3D12 counterpart: D3D12_RENDER_PASS_ENDING_ACCESS_TYPE.

Enumerator
ATTACHMENT_STORE_OP_STORE 

The contents generated during the render pass and within the render area are written to memory. Vulkan counterpart: VK_ATTACHMENT_STORE_OP_STORE. D3D12 counterpart: D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE.

ATTACHMENT_STORE_OP_DISCARD 

The contents within the render area are not needed after rendering, and may be discarded; the contents of the attachment will be undefined inside the render area. Vulkan counterpart: VK_ATTACHMENT_STORE_OP_DONT_CARE. D3D12 counterpart: D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD.

ATTACHMENT_STORE_OP_COUNT 

Special value indicating the number of store operations in the enumeration.

◆ AXIS_SHADING_RATE

Specifies the base shading rate along a horizontal or vertical axis.

Enumerator
AXIS_SHADING_RATE_1X 

Default shading rate.

AXIS_SHADING_RATE_2X 

2x resolution reduction per axis

AXIS_SHADING_RATE_4X 

4x resolution reduction per axis

AXIS_SHADING_RATE_MAX 

Maximum shading rate.

◆ BIND_FLAGS

Resource binding flags.

This enumeration describes which parts of the pipeline a resource can be bound to. It generally mirrors D3D11_BIND_FLAG enumeration. It is used by

Enumerator
BIND_NONE 

Undefined binding.

BIND_VERTEX_BUFFER 

A buffer can be bound as a vertex buffer.

BIND_INDEX_BUFFER 

A buffer can be bound as an index buffer.

BIND_UNIFORM_BUFFER 

A buffer can be bound as a uniform buffer.

Warning
This flag may not be combined with any other bind flag.
BIND_SHADER_RESOURCE 

A buffer or a texture can be bound as a shader resource.

BIND_STREAM_OUTPUT 

A buffer can be bound as a target for stream output stage.

BIND_RENDER_TARGET 

A texture can be bound as a render target.

BIND_DEPTH_STENCIL 

A texture can be bound as a depth-stencil target.

BIND_UNORDERED_ACCESS 

A buffer or a texture can be bound as an unordered access view.

BIND_INDIRECT_DRAW_ARGS 

A buffer can be bound as the source buffer for indirect draw commands.

BIND_INPUT_ATTACHMENT 

A texture can be used as render pass input attachment.

BIND_RAY_TRACING 

A texture can be used as shading rate texture.

A buffer can be used as a scratch buffer or as the source of primitive data for acceleration structure building.

◆ BIND_SHADER_RESOURCES_FLAGS

Shader resource binding flags.

Enumerator
BIND_SHADER_RESOURCES_UPDATE_STATIC 

Indicates that static shader variable bindings are to be updated.

BIND_SHADER_RESOURCES_UPDATE_MUTABLE 

Indicates that mutable shader variable bindings are to be updated.

BIND_SHADER_RESOURCES_UPDATE_DYNAMIC 

Indicates that dynamic shader variable bindings are to be updated.

BIND_SHADER_RESOURCES_UPDATE_ALL 

Indicates that all shader variable types (static, mutable and dynamic) are to be updated.

Note
If none of BIND_SHADER_RESOURCES_UPDATE_STATIC, BIND_SHADER_RESOURCES_UPDATE_MUTABLE, and BIND_SHADER_RESOURCES_UPDATE_DYNAMIC flags are set, all variable types are updated as if BIND_SHADER_RESOURCES_UPDATE_ALL was specified.
BIND_SHADER_RESOURCES_KEEP_EXISTING 

If this flag is specified, all existing bindings will be preserved and only unresolved ones will be updated. If this flag is not specified, every shader variable will be updated if the mapping contains corresponding resource.

BIND_SHADER_RESOURCES_VERIFY_ALL_RESOLVED 

If this flag is specified, all shader bindings are expected to be resolved after the call. If this is not the case, debug message will be displayed.

Note
Only these variables are verified that are being updated by setting BIND_SHADER_RESOURCES_UPDATE_STATIC, BIND_SHADER_RESOURCES_UPDATE_MUTABLE, and BIND_SHADER_RESOURCES_UPDATE_DYNAMIC flags.
BIND_SHADER_RESOURCES_ALLOW_OVERWRITE 

Allow overwriting static and mutable variables, see Diligent::SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE.

◆ BLEND_FACTOR

Blend factors.

This enumeration defines blend factors for alpha-blending. It generally mirrors D3D11_BLEND and D3D12_BLEND enumerations and is used by RenderTargetBlendDesc structure to define source and destination blend factors for color and alpha channels.

See also
D3D11_BLEND on MSDN, D3D12_BLEND on MSDN, glBlendFuncSeparate on OpenGL.org
Enumerator
BLEND_FACTOR_UNDEFINED 

Undefined blend factor.

BLEND_FACTOR_ZERO 

The blend factor is zero.
Direct3D counterpart: D3D11_BLEND_ZERO/D3D12_BLEND_ZERO. OpenGL counterpart: GL_ZERO.

BLEND_FACTOR_ONE 

The blend factor is one.
Direct3D counterpart: D3D11_BLEND_ONE/D3D12_BLEND_ONE. OpenGL counterpart: GL_ONE.

BLEND_FACTOR_SRC_COLOR 

The blend factor is RGB data from a pixel shader.
Direct3D counterpart: D3D11_BLEND_SRC_COLOR/D3D12_BLEND_SRC_COLOR. OpenGL counterpart: GL_SRC_COLOR.

BLEND_FACTOR_INV_SRC_COLOR 

The blend factor is 1-RGB, where RGB is the data from a pixel shader.
Direct3D counterpart: D3D11_BLEND_INV_SRC_COLOR/D3D12_BLEND_INV_SRC_COLOR. OpenGL counterpart: GL_ONE_MINUS_SRC_COLOR.

BLEND_FACTOR_SRC_ALPHA 

The blend factor is alpha (A) data from a pixel shader.
Direct3D counterpart: D3D11_BLEND_SRC_ALPHA/D3D12_BLEND_SRC_ALPHA. OpenGL counterpart: GL_SRC_ALPHA.

BLEND_FACTOR_INV_SRC_ALPHA 

The blend factor is 1-A, where A is alpha data from a pixel shader.
Direct3D counterpart: D3D11_BLEND_INV_SRC_ALPHA/D3D12_BLEND_INV_SRC_ALPHA. OpenGL counterpart: GL_ONE_MINUS_SRC_ALPHA.

BLEND_FACTOR_DEST_ALPHA 

The blend factor is alpha (A) data from a render target.
Direct3D counterpart: D3D11_BLEND_DEST_ALPHA/D3D12_BLEND_DEST_ALPHA. OpenGL counterpart: GL_DST_ALPHA.

BLEND_FACTOR_INV_DEST_ALPHA 

The blend factor is 1-A, where A is alpha data from a render target.
Direct3D counterpart: D3D11_BLEND_INV_DEST_ALPHA/D3D12_BLEND_INV_DEST_ALPHA. OpenGL counterpart: GL_ONE_MINUS_DST_ALPHA.

BLEND_FACTOR_DEST_COLOR 

The blend factor is RGB data from a render target.
Direct3D counterpart: D3D11_BLEND_DEST_COLOR/D3D12_BLEND_DEST_COLOR. OpenGL counterpart: GL_DST_COLOR.

BLEND_FACTOR_INV_DEST_COLOR 

The blend factor is 1-RGB, where RGB is the data from a render target.
Direct3D counterpart: D3D11_BLEND_INV_DEST_COLOR/D3D12_BLEND_INV_DEST_COLOR. OpenGL counterpart: GL_ONE_MINUS_DST_COLOR.

BLEND_FACTOR_SRC_ALPHA_SAT 

The blend factor is (f,f,f,1), where f = min(As, 1-Ad), As is alpha data from a pixel shader, and Ad is alpha data from a render target.
Direct3D counterpart: D3D11_BLEND_SRC_ALPHA_SAT/D3D12_BLEND_SRC_ALPHA_SAT. OpenGL counterpart: GL_SRC_ALPHA_SATURATE.

BLEND_FACTOR_BLEND_FACTOR 

The blend factor is the constant blend factor set with IDeviceContext::SetBlendFactors().
Direct3D counterpart: D3D11_BLEND_BLEND_FACTOR/D3D12_BLEND_BLEND_FACTOR. OpenGL counterpart: GL_CONSTANT_COLOR.

BLEND_FACTOR_INV_BLEND_FACTOR 

The blend factor is one minus constant blend factor set with IDeviceContext::SetBlendFactors().
Direct3D counterpart: D3D11_BLEND_INV_BLEND_FACTOR/D3D12_BLEND_INV_BLEND_FACTOR. OpenGL counterpart: GL_ONE_MINUS_CONSTANT_COLOR.

BLEND_FACTOR_SRC1_COLOR 

The blend factor is the second RGB data output from a pixel shader.
Direct3D counterpart: D3D11_BLEND_SRC1_COLOR/D3D12_BLEND_SRC1_COLOR. OpenGL counterpart: GL_SRC1_COLOR.

BLEND_FACTOR_INV_SRC1_COLOR 

The blend factor is 1-RGB, where RGB is the second RGB data output from a pixel shader.
Direct3D counterpart: D3D11_BLEND_INV_SRC1_COLOR/D3D12_BLEND_INV_SRC1_COLOR. OpenGL counterpart: GL_ONE_MINUS_SRC1_COLOR.

BLEND_FACTOR_SRC1_ALPHA 

The blend factor is the second alpha (A) data output from a pixel shader.
Direct3D counterpart: D3D11_BLEND_SRC1_ALPHA/D3D12_BLEND_SRC1_ALPHA. OpenGL counterpart: GL_SRC1_ALPHA.

BLEND_FACTOR_INV_SRC1_ALPHA 

The blend factor is 1-A, where A is the second alpha data output from a pixel shader.
Direct3D counterpart: D3D11_BLEND_INV_SRC1_ALPHA/D3D12_BLEND_INV_SRC1_ALPHA. OpenGL counterpart: GL_ONE_MINUS_SRC1_ALPHA.

BLEND_FACTOR_NUM_FACTORS 

Helper value that stores the total number of blend factors in the enumeration.

◆ BLEND_OPERATION

Blending operation.

This enumeration describes blending operation for RGB or Alpha channels and generally mirrors D3D11_BLEND_OP and D3D12_BLEND_OP enums. It is used by RenderTargetBlendDesc structure to define RGB and Alpha blending operations

See also
D3D11_BLEND_OP on MSDN, D3D12_BLEND_OP on MSDN, glBlendEquationSeparate on OpenGL.org
Enumerator
BLEND_OPERATION_UNDEFINED 

Undefined blend operation.

BLEND_OPERATION_ADD 

Add source and destination color components.
Direct3D counterpart: D3D11_BLEND_OP_ADD/D3D12_BLEND_OP_ADD. OpenGL counterpart: GL_FUNC_ADD.

BLEND_OPERATION_SUBTRACT 

Subtract destination color components from source color components.
Direct3D counterpart: D3D11_BLEND_OP_SUBTRACT/D3D12_BLEND_OP_SUBTRACT. OpenGL counterpart: GL_FUNC_SUBTRACT.

BLEND_OPERATION_REV_SUBTRACT 

Subtract source color components from destination color components.
Direct3D counterpart: D3D11_BLEND_OP_REV_SUBTRACT/D3D12_BLEND_OP_REV_SUBTRACT. OpenGL counterpart: GL_FUNC_REVERSE_SUBTRACT.

BLEND_OPERATION_MIN 

Compute the minimum of source and destination color components.
Direct3D counterpart: D3D11_BLEND_OP_MIN/D3D12_BLEND_OP_MIN. OpenGL counterpart: GL_MIN.

BLEND_OPERATION_MAX 

Compute the maximum of source and destination color components.
Direct3D counterpart: D3D11_BLEND_OP_MAX/D3D12_BLEND_OP_MAX. OpenGL counterpart: GL_MAX.

BLEND_OPERATION_NUM_OPERATIONS 

Helper value that stores the total number of blend operations in the enumeration.

◆ BoxVisibility

enum class Diligent::BoxVisibility
strong

Bounding box visibility.

Enumerator
Invisible 

Bounding box is guaranteed to be outside the view frustum

         .
     . ' |
 . '     |

| | . | ___ ' . | | | ' . |___|

Intersecting 

Bounding box intersects the frustum

         .
     . ' |
 . '     |

| | _.__ | | '|. | |____| ' .

FullyVisible 

Bounding box is fully inside the view frustum

         .
     . ' |
 . '___  |

| | | | . |___| | ' . | ' .

◆ BUFFER_MODE

Describes the buffer access mode.

This enumeration is used by BufferDesc structure.

Enumerator
BUFFER_MODE_UNDEFINED 

Undefined mode.

BUFFER_MODE_FORMATTED 

Formatted buffer. Access to the buffer will use format conversion operations. In this mode, ElementByteStride member of BufferDesc defines the buffer element size. Buffer views can use different formats, but the format size must match ElementByteStride.

BUFFER_MODE_STRUCTURED 

Structured buffer. In this mode, ElementByteStride member of BufferDesc defines the structure stride.

BUFFER_MODE_RAW 

Raw buffer. In this mode, the buffer is accessed as raw bytes. Formatted views of a raw buffer can also be created similar to formatted buffer. If formatted views are to be created, the ElementByteStride member of BufferDesc must specify the size of the format.

BUFFER_MODE_NUM_MODES 

Helper value storing the total number of modes in the enumeration.

◆ BUFFER_VIEW_TYPE

Buffer view type.

This enumeration describes allowed view types for a buffer view. It is used by BufferViewDesc structure.

Enumerator
BUFFER_VIEW_UNDEFINED 

Undefined view type.

BUFFER_VIEW_SHADER_RESOURCE 

A buffer view will define a shader resource view that will be used as the source for the shader read operations

BUFFER_VIEW_UNORDERED_ACCESS 

A buffer view will define an unordered access view that will be used for unordered read/write operations from the shaders

BUFFER_VIEW_NUM_VIEWS 

Helper value that stores that total number of buffer views.

◆ CLEAR_DEPTH_STENCIL_FLAGS

Defines which parts of the depth-stencil buffer to clear.

These flags are used by IDeviceContext::ClearDepthStencil().

Enumerator
CLEAR_DEPTH_FLAG_NONE 

Perform no clear.

CLEAR_DEPTH_FLAG 

Clear depth part of the buffer.

CLEAR_STENCIL_FLAG 

Clear stencil part of the buffer.

◆ COLOR_MASK

Color component write flags.

These flags are used by RenderTargetBlendDesc structure to define writable components of the render target

Enumerator
COLOR_MASK_NONE 

Do not store any components.

COLOR_MASK_RED 

Allow data to be stored in the red component.

COLOR_MASK_GREEN 

Allow data to be stored in the green component.

COLOR_MASK_BLUE 

Allow data to be stored in the blue component.

COLOR_MASK_ALPHA 

Allow data to be stored in the alpha component.

COLOR_MASK_RGB 

Allow data to be stored in all RGB components.

COLOR_MASK_ALL 

Allow data to be stored in all components.

◆ COMMAND_QUEUE_TYPE

Command queue type.

Enumerator
COMMAND_QUEUE_TYPE_UNKNOWN 

Queue type is unknown.

COMMAND_QUEUE_TYPE_TRANSFER 

Command queue that only supports memory transfer operations.

COMMAND_QUEUE_TYPE_COMPUTE 

Command queue that supports compute, ray tracing and transfer commands.

COMMAND_QUEUE_TYPE_GRAPHICS 

Command queue that supports graphics, compute, ray tracing and transfer commands.

COMMAND_QUEUE_TYPE_PRIMARY_MASK 

Mask to extract primary command queue type.

COMMAND_QUEUE_TYPE_SPARSE_BINDING 

Command queue that supports sparse binding commands.

See IDeviceContext::BindSparseResourceMemory().

◆ COMPARISON_FUNCTION

Comparison function.

This enumeration defines a comparison function. It generally mirrors D3D11_COMPARISON_FUNC/D3D12_COMPARISON_FUNC enum and is used by

Enumerator
COMPARISON_FUNC_UNKNOWN 

Unknown comparison function.

COMPARISON_FUNC_NEVER 

Comparison never passes.
Direct3D counterpart: D3D11_COMPARISON_NEVER/D3D12_COMPARISON_FUNC_NEVER. OpenGL counterpart: GL_NEVER.

COMPARISON_FUNC_LESS 

Comparison passes if the source data is less than the destination data.
Direct3D counterpart: D3D11_COMPARISON_LESS/D3D12_COMPARISON_FUNC_LESS. OpenGL counterpart: GL_LESS.

COMPARISON_FUNC_EQUAL 

Comparison passes if the source data is equal to the destination data.
Direct3D counterpart: D3D11_COMPARISON_EQUAL/D3D12_COMPARISON_FUNC_EQUAL. OpenGL counterpart: GL_EQUAL.

COMPARISON_FUNC_LESS_EQUAL 

Comparison passes if the source data is less than or equal to the destination data.
Direct3D counterpart: D3D11_COMPARISON_LESS_EQUAL/D3D12_COMPARISON_FUNC_LESS_EQUAL. OpenGL counterpart: GL_LEQUAL.

COMPARISON_FUNC_GREATER 

Comparison passes if the source data is greater than the destination data.
Direct3D counterpart: 3D11_COMPARISON_GREATER/D3D12_COMPARISON_FUNC_GREATER. OpenGL counterpart: GL_GREATER.

COMPARISON_FUNC_NOT_EQUAL 

Comparison passes if the source data is not equal to the destination data.
Direct3D counterpart: D3D11_COMPARISON_NOT_EQUAL/D3D12_COMPARISON_FUNC_NOT_EQUAL. OpenGL counterpart: GL_NOTEQUAL.

COMPARISON_FUNC_GREATER_EQUAL 

Comparison passes if the source data is greater than or equal to the destination data.
Direct3D counterpart: D3D11_COMPARISON_GREATER_EQUAL/D3D12_COMPARISON_FUNC_GREATER_EQUAL. OpenGL counterpart: GL_GEQUAL.

COMPARISON_FUNC_ALWAYS 

Comparison always passes.
Direct3D counterpart: D3D11_COMPARISON_ALWAYS/D3D12_COMPARISON_FUNC_ALWAYS. OpenGL counterpart: GL_ALWAYS.

COMPARISON_FUNC_NUM_FUNCTIONS 

Helper value that stores the total number of comparison functions in the enumeration.

◆ COMPONENT_TYPE

Describes texture format component type.

Enumerator
COMPONENT_TYPE_UNDEFINED 

Undefined component type.

COMPONENT_TYPE_FLOAT 

Floating point component type.

COMPONENT_TYPE_SNORM 

Signed-normalized-integer component type.

COMPONENT_TYPE_UNORM 

Unsigned-normalized-integer component type.

COMPONENT_TYPE_UNORM_SRGB 

Unsigned-normalized-integer sRGB component type.

COMPONENT_TYPE_SINT 

Signed-integer component type.

COMPONENT_TYPE_UINT 

Unsigned-integer component type.

COMPONENT_TYPE_DEPTH 

Depth component type.

COMPONENT_TYPE_DEPTH_STENCIL 

Depth-stencil component type.

COMPONENT_TYPE_COMPOUND 

Compound component type (example texture formats: TEX_FORMAT_R11G11B10_FLOAT or TEX_FORMAT_RGB9E5_SHAREDEXP)

COMPONENT_TYPE_COMPRESSED 

Compressed component type.

◆ COPY_AS_MODE

Defines acceleration structure copy mode.

These the flags used by IDeviceContext::CopyBLAS() and IDeviceContext::CopyTLAS().

Enumerator
COPY_AS_MODE_CLONE 

Creates a direct copy of the acceleration structure specified in pSrc into the one specified by pDst. The pDst acceleration structure must have been created with the same parameters as pSrc.

COPY_AS_MODE_COMPACT 

Creates a more compact version of an acceleration structure pSrc into pDst. The acceleration structure pDst must have been created with a CompactedSize corresponding to the one returned by IDeviceContext::WriteBLASCompactedSize() or IDeviceContext::WriteTLASCompactedSize() after the build of the acceleration structure specified by pSrc.

◆ CPU_ACCESS_FLAGS

Allowed CPU access mode flags when mapping a resource.

The enumeration is used by

  • BufferDesc to describe CPU access mode for a buffer
  • TextureDesc to describe CPU access mode for a texture
    Note
    Only USAGE_DYNAMIC resources can be mapped
Enumerator
CPU_ACCESS_NONE 

No CPU access.

CPU_ACCESS_READ 

A resource can be mapped for reading.

CPU_ACCESS_WRITE 

A resource can be mapped for writing.

◆ CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS

Describes the flags that can be passed over to IShaderSourceInputStreamFactory::CreateInputStream2() function.

Enumerator
CREATE_SHADER_SOURCE_INPUT_STREAM_FLAG_NONE 

No flag.

CREATE_SHADER_SOURCE_INPUT_STREAM_FLAG_SILENT 

Do not output any messages if the file is not found or other errors occur.

◆ CULL_MODE

Cull mode.

This enumeration defines which triangles are not drawn during the rasterization and mirrors D3D11_CULL_MODE/D3D12_CULL_MODE enum. It is used by RasterizerStateDesc structure to define the polygon cull mode.

Enumerator
CULL_MODE_UNDEFINED 

Undefined cull mode.

CULL_MODE_NONE 

Draw all triangles.
Direct3D counterpart: D3D11_CULL_NONE/D3D12_CULL_MODE_NONE. OpenGL counterpart: glDisable( GL_CULL_FACE ).

CULL_MODE_FRONT 

Do not draw triangles that are front-facing. Front- and back-facing triangles are determined by the RasterizerStateDesc::FrontCounterClockwise member.
Direct3D counterpart: D3D11_CULL_FRONT/D3D12_CULL_MODE_FRONT. OpenGL counterpart: GL_FRONT.

CULL_MODE_BACK 

Do not draw triangles that are back-facing. Front- and back-facing triangles are determined by the RasterizerStateDesc::FrontCounterClockwise member.
Direct3D counterpart: D3D11_CULL_BACK/D3D12_CULL_MODE_BACK. OpenGL counterpart: GL_BACK.

CULL_MODE_NUM_MODES 

Helper value that stores the total number of cull modes in the enumeration.

◆ D3D11_VALIDATION_FLAGS

Direct3D11-specific validation options.

Enumerator
D3D11_VALIDATION_FLAG_NONE 

Direct3D11-specific validation is disabled.

D3D11_VALIDATION_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE 

Verify that all committed context resources are relevant, i.e. they are consistent with the committed resource cache. This is very expensive and should only be used for engine debugging. This option is enabled in validation level 2 (see Diligent::VALIDATION_LEVEL).

Remarks
This flag only has effect in Debug/Development builds. This type of validation is never performed in Release builds.

◆ D3D12_VALIDATION_FLAGS

Direct3D12-specific validation flags.

Enumerator
D3D12_VALIDATION_FLAG_NONE 

Direct3D12-specific validation is disabled.

D3D12_VALIDATION_FLAG_BREAK_ON_ERROR 

Whether to break execution when D3D12 debug layer detects an error. This flag only has effect if validation is enabled (EngineCreateInfo.EnableValidation is true). This option is disabled by default in all validation levels.

D3D12_VALIDATION_FLAG_BREAK_ON_CORRUPTION 

Whether to break execution when D3D12 debug layer detects a memory corruption. This flag only has effect if validation is enabled (EngineCreateInfo.EnableValidation is true). This option is enabled by default when validation is enabled.

D3D12_VALIDATION_FLAG_ENABLE_GPU_BASED_VALIDATION 

Enable validation on the GPU timeline. See https://docs.microsoft.com/en-us/windows/win32/direct3d12/using-d3d12-debug-layer-gpu-based-validation This flag only has effect if validation is enabled (EngineCreateInfo.EnableValidation is true). This option is enabled in validation level 2 (see Diligent::VALIDATION_LEVEL).

Note
Enabling this option may slow things down a lot.

◆ DEBUG_MESSAGE_SEVERITY

Describes debug message severity.

Enumerator
DEBUG_MESSAGE_SEVERITY_INFO 

Information message.

DEBUG_MESSAGE_SEVERITY_WARNING 

Warning message.

DEBUG_MESSAGE_SEVERITY_ERROR 

Error, with potential recovery.

DEBUG_MESSAGE_SEVERITY_FATAL_ERROR 

Fatal error - recovery is not possible.

◆ DECODE_JPEG_RESULT

JPEG image decoding result.

Enumerator
DECODE_JPEG_RESULT_OK 

JPEG image was decoded successfully.

DECODE_JPEG_RESULT_INVALID_ARGUMENTS 

Invalid arguments (e.g. null pointer).

DECODE_JPEG_RESULT_INITIALIZATION_FAILED 

Failed to initialize the decoder.

DECODE_JPEG_RESULT_DECODING_ERROR 

An unexpected error occurred while decoding the file.

◆ DECODE_PNG_RESULT

PNG decoding result.

Enumerator
DECODE_PNG_RESULT_OK 

Decoding was successful.

DECODE_PNG_RESULT_INVALID_ARGUMENTS 

Invalid arguments (e.g. null pointer).

DECODE_PNG_RESULT_INVALID_SIGNATURE 

Invalid signature (the encoded file is not a PNG file).

DECODE_PNG_RESULT_INITIALIZATION_FAILED 

Failed to initialize the decoder.

DECODE_PNG_RESULT_INVALID_BIT_DEPTH 

Invalid bit depth.

DECODE_PNG_RESULT_DECODING_ERROR 

An unexpected error occurred while decoding the file.

◆ DEVICE_FEATURE_STATE

Device feature state.

Enumerator
DEVICE_FEATURE_STATE_DISABLED 

Device feature is disabled.

DEVICE_FEATURE_STATE_ENABLED 

Device feature is enabled.

If a feature is requested to be enabled during the initialization through EngineCreateInfo::Features, but is not supported by the device/driver/platform, the engine will fail to initialize.

DEVICE_FEATURE_STATE_OPTIONAL 

Device feature is optional.

During the initialization the engine will attempt to enable the feature. If the feature is not supported by the device/driver/platform, the engine will successfully be initialized, but the feature will be disabled. The actual feature state can be queried from DeviceCaps structure.

◆ DEVICE_MEMORY_TYPE

Describes the device memory type.

This enumeration is used by DeviceMemoryDesc structure.

Enumerator
DEVICE_MEMORY_TYPE_UNDEFINED 

Indicates that the memory type is not defined.

DEVICE_MEMORY_TYPE_SPARSE 

Indicates that memory will be used for sparse resources.

◆ DRAW_COMMAND_CAP_FLAGS

Defines the draw command capability flags.

Enumerator
DRAW_COMMAND_CAP_FLAG_NONE 

No draw command capabilities.

DRAW_COMMAND_CAP_FLAG_BASE_VERTEX 

Indicates that device supports non-zero base vertex for IDeviceContext::DrawIndexed().

DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT 

Indicates that device supports indirect draw/dispatch commands.

DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT_FIRST_INSTANCE 

Indicates that FirstInstanceLocation of the indirect draw command can be greater than zero.

DRAW_COMMAND_CAP_FLAG_NATIVE_MULTI_DRAW_INDIRECT 

Indicates that device natively supports indirect draw commands with DrawCount > 1. When this flag is not set, the commands will be emulated on the host, which will produce correct results, but will be slower.

DRAW_COMMAND_CAP_FLAG_DRAW_INDIRECT_COUNTER_BUFFER 

Indicates that IDeviceContext::DrawIndirect() and IDeviceContext::DrawIndexedIndirect() commands may take non-null counter buffer. If this flag is not set, the number of draw commands must be specified through the command attributes.

◆ DRAW_FLAGS

Draw command flags.

Enumerator
DRAW_FLAG_NONE 

No flags.

DRAW_FLAG_VERIFY_STATES 

Verify the state of index and vertex buffers (if any) used by the draw command. State validation is only performed in debug and development builds and the flag has no effect in release build.

DRAW_FLAG_VERIFY_DRAW_ATTRIBS 

Verify correctness of parameters passed to the draw command.

Remarks
This flag only has effect in debug and development builds. Verification is always disabled in release configuration.
DRAW_FLAG_VERIFY_ALL 

Perform all state validation checks

Remarks
This flag only has effect in debug and development builds. Verification is always disabled in release configuration.
DRAW_FLAG_DYNAMIC_RESOURCE_BUFFERS_INTACT 

Indicates that none of the dynamic resource buffers used by the draw command have been modified by the CPU since the last command.

This flag should be used to improve performance when an application issues a series of draw commands that use the same pipeline state and shader resources and no dynamic buffers (constant or bound as shader resources) are updated between the commands. Any buffer variable not created with SHADER_VARIABLE_FLAG_NO_DYNAMIC_BUFFERS or PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS flags is counted as dynamic. The flag has no effect on dynamic vertex and index buffers.

Details

D3D12 and Vulkan backends have to perform some work to make data in buffers available to draw commands. When a dynamic buffer is mapped, the engine allocates new memory and assigns a new GPU address to this buffer. When a draw command is issued, this GPU address needs to be used. By default the engine assumes that the CPU may map the buffer before any command (to write new transformation matrices for example) and that all GPU addresses need to always be refreshed. This is not always the case, and the application may use the flag to inform the engine that the data in the buffer stay intact to avoid extra work.
Note that after a new PSO is bound or an SRB is committed, the engine will always set all required buffer addresses/offsets regardless of the flag. The flag will only take effect on the second and subsequent draw calls that use the same PSO and SRB.
The flag has no effect in D3D11 and OpenGL backends.

Implementation details

Vulkan backend allocates VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC descriptors for all uniform (constant), buffers and VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptors for storage buffers. Note that HLSL structured buffers are mapped to read-only storage buffers in SPIRV and RW buffers are mapped to RW-storage buffers. By default, all dynamic descriptor sets that have dynamic buffers bound are updated every time a draw command is issued (see PipelineStateVkImpl::BindDescriptorSetsWithDynamicOffsets). When DRAW_FLAG_DYNAMIC_RESOURCE_BUFFERS_INTACT is specified, dynamic descriptor sets are only bound by the first draw command that uses the PSO and the SRB. The flag avoids binding descriptors with the same offsets if none of the dynamic offsets have changed.

Direct3D12 backend binds constant buffers to root views. By default the engine assumes that virtual GPU addresses of all dynamic buffers may change between the draw commands and always binds dynamic buffers to root views (see RootSignature::CommitRootViews). When DRAW_FLAG_DYNAMIC_RESOURCE_BUFFERS_INTACT is set, root views are only bound by the first draw command that uses the PSO + SRB pair. The flag avoids setting the same GPU virtual addresses when they stay unchanged.

◆ ENCODE_JPEG_RESULT

JPEG image encoding result.

Enumerator
ENCODE_JPEG_RESULT_OK 

Encoding finished successfully.

ENCODE_JPEG_RESULT_INVALID_ARGUMENTS 

Invalid arguments (e.g. null pointer).

ENCODE_JPEG_RESULT_INITIALIZATION_FAILED 

Failed to initialize the encoder.

◆ ENCODE_PNG_RESULT

PNG encoding result.

Enumerator
ENCODE_PNG_RESULT_OK 

Encoding finished successfully.

ENCODE_PNG_RESULT_INVALID_ARGUMENTS 

Invalid arguments (e.g. null pointer).

ENCODE_PNG_RESULT_INITIALIZATION_FAILED 

Failed to initialize the encoder.

◆ FENCE_TYPE

Describes the fence type.

This enumeration is used by FenceDesc structure.

Enumerator
FENCE_TYPE_CPU_WAIT_ONLY 

Basic fence that may be used for:

  • signaling the fence from GPU
  • waiting for the fence on CPU
FENCE_TYPE_GENERAL 

General fence that may be used for:

  • signaling the fence from GPU
  • waiting for the fence on CPU
  • waiting for the fence on GPU

If NativeFence feature is enabled (see Diligent::DeviceFeatures), the fence may also be used for:

  • signaling the fence on CPU
  • waiting on GPU for a value that will be enqueued for signal later

◆ FILE_DIALOG_FLAGS

Enumerator
FILE_DIALOG_FLAG_DONT_ADD_TO_RECENT 

Prevents the system from adding a link to the selected file in the file system directory that contains the user's most recently used documents.

FILE_DIALOG_FLAG_FILE_MUST_EXIST 

Only existing files can be opened.

FILE_DIALOG_FLAG_NO_CHANGE_DIR 

Restores the current directory to its original value if the user changed the directory while searching for files.

FILE_DIALOG_FLAG_OVERWRITE_PROMPT 

Causes the Save As dialog box to show a message box if the selected file already exists.

◆ FILL_MODE

Fill mode.

This enumeration determines the fill mode to use when rendering triangles and mirrors the D3D11_FILL_MODE/D3D12_FILL_MODE enum. It is used by RasterizerStateDesc structure to define the fill mode.

Enumerator
FILL_MODE_UNDEFINED 

Undefined fill mode.

FILL_MODE_WIREFRAME 

Rasterize triangles using wireframe fill.
Direct3D counterpart: D3D11_FILL_WIREFRAME/D3D12_FILL_MODE_WIREFRAME. OpenGL counterpart: GL_LINE.

FILL_MODE_SOLID 

Rasterize triangles using solid fill.
Direct3D counterpart: D3D11_FILL_SOLID/D3D12_FILL_MODE_SOLID. OpenGL counterpart: GL_FILL.

FILL_MODE_NUM_MODES 

Helper value that stores the total number of fill modes in the enumeration.

◆ FILTER_TYPE

Filter type.

This enumeration defines filter type. It is used by SamplerDesc structure to define min, mag and mip filters.

Note
On D3D11, comparison filters only work with textures that have the following formats: R32_FLOAT_X8X24_TYPELESS, R32_FLOAT, R24_UNORM_X8_TYPELESS, R16_UNORM.
Enumerator
FILTER_TYPE_UNKNOWN 

Unknown filter type.

FILTER_TYPE_POINT 

Point filtering.

FILTER_TYPE_LINEAR 

Linear filtering.

FILTER_TYPE_ANISOTROPIC 

Anisotropic filtering.

FILTER_TYPE_COMPARISON_POINT 

Comparison-point filtering.

FILTER_TYPE_COMPARISON_LINEAR 

Comparison-linear filtering.

FILTER_TYPE_COMPARISON_ANISOTROPIC 

Comparison-anisotropic filtering.

FILTER_TYPE_MINIMUM_POINT 

Minimum-point filtering (DX12 only)

FILTER_TYPE_MINIMUM_LINEAR 

Minimum-linear filtering (DX12 only)

FILTER_TYPE_MINIMUM_ANISOTROPIC 

Minimum-anisotropic filtering (DX12 only)

FILTER_TYPE_MAXIMUM_POINT 

Maximum-point filtering (DX12 only)

FILTER_TYPE_MAXIMUM_LINEAR 

Maximum-linear filtering (DX12 only)

FILTER_TYPE_MAXIMUM_ANISOTROPIC 

Maximum-anisotropic filtering (DX12 only)

FILTER_TYPE_NUM_FILTERS 

Helper value that stores the total number of filter types in the enumeration.

◆ GEOMETRY_PRIMITIVE_TYPE

Geometry primitive types.

Enumerator
GEOMETRY_PRIMITIVE_TYPE_UNDEFINED 

Geometry primitive type is undefined.

GEOMETRY_PRIMITIVE_TYPE_CUBE 

Cube geometry primitive type.

GEOMETRY_PRIMITIVE_TYPE_SPHERE 

Sphere geometry primitive type.

GEOMETRY_PRIMITIVE_TYPE_COUNT 

Geometry primitive type count.

◆ GEOMETRY_PRIMITIVE_VERTEX_FLAGS

Geometry primitive vertex flags.

Enumerator
GEOMETRY_PRIMITIVE_VERTEX_FLAG_NONE 

No flags.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_POSITION 

The geometry primitive vertex contains position.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_NORMAL 

The geometry primitive vertex contains normal.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_TEXCOORD 

The geometry primitive vertex contains texture coordinates.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_LAST 

Special value that indicates the last vertex flag.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_ALL 

Geometry primitive contains all vertex components.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_POS_NORM 

Geometry primitive vertex contains position and normal.

GEOMETRY_PRIMITIVE_VERTEX_FLAG_POS_TEX 

Geometry primitive vertex contains position and texture coordinates.

◆ HIT_GROUP_BINDING_MODE

Defines hit group binding mode used by the top-level AS.

Enumerator
HIT_GROUP_BINDING_MODE_PER_GEOMETRY 

Each geometry in every instance may use a unique hit shader group. In this mode, the SBT reserves space for each geometry in every instance in the TLAS and uses most memory. See IShaderBindingTable::BindHitGroupForGeometry().

HIT_GROUP_BINDING_MODE_PER_INSTANCE 

Each instance may use a unique hit shader group. In this mode, the SBT reserves one slot for each instance irrespective of how many geometries it contains, so it uses less memory. See IShaderBindingTable::BindHitGroupForInstance().

HIT_GROUP_BINDING_MODE_PER_TLAS 

All instances in each TLAS will use the same hit group. In this mode, the SBT reserves a single slot for one hit group for each TLAS and uses least memory. See IShaderBindingTable::BindHitGroupForTLAS().

HIT_GROUP_BINDING_MODE_USER_DEFINED 

The user must specify TLASBuildInstanceData::ContributionToHitGroupIndex and only use IShaderBindingTable::BindHitGroupByIndex().

◆ HOT_KEY_FLAGS

Hot key handling flags.

Enumerator
HOT_KEY_FLAG_NONE 

Disable all hot keys.

HOT_KEY_FLAG_ALLOW_EXIT_ON_ESC 

Allow exiting the app on Esc key.

HOT_KEY_FLAG_ALLOW_FULL_SCREEN_SWITCH 

Allow switching between full screen and windowed mode.

HOT_KEY_FLAG_ALL 

Enable all default hotkeys.

◆ IMAGE_FILE_FORMAT

Image file format.

Enumerator
IMAGE_FILE_FORMAT_UNKNOWN 

Unknown format.

IMAGE_FILE_FORMAT_JPEG 

The image is encoded in JPEG format.

IMAGE_FILE_FORMAT_PNG 

The image is encoded in PNG format.

IMAGE_FILE_FORMAT_TIFF 

The image is encoded in TIFF format.

IMAGE_FILE_FORMAT_DDS 

DDS file.

IMAGE_FILE_FORMAT_KTX 

KTX file.

IMAGE_FILE_FORMAT_SGI 

Silicon Graphics Image aka RGB file https://en.wikipedia.org/wiki/Silicon_Graphics_Image

◆ IMGUI_COLOR_CONVERSION_MODE

Conversion mode to apply to imgui colors.

Imgui colors are defined in sRGB space. Depending on the use case, they may need to be converted to linear space.

Enumerator
IMGUI_COLOR_CONVERSION_MODE_AUTO 

Select the color conversion mode automatically:

  • Use SRGB_TO_LINEAR mode for sRGB framebuffers
  • Use NONE mode for non-sRGB framebuffers
IMGUI_COLOR_CONVERSION_MODE_SRGB_TO_LINEAR 

Always perform srgb-to-linear conversion.

IMGUI_COLOR_CONVERSION_MODE_NONE 

Do not perform any color conversion.

◆ INPUT_ELEMENT_FREQUENCY

Input frequency.

Enumerator
INPUT_ELEMENT_FREQUENCY_UNDEFINED 

Frequency is undefined.

INPUT_ELEMENT_FREQUENCY_PER_VERTEX 

Input data is per-vertex data.

INPUT_ELEMENT_FREQUENCY_PER_INSTANCE 

Input data is per-instance data.

INPUT_ELEMENT_FREQUENCY_NUM_FREQUENCIES 

Helper value that stores the total number of frequencies in the enumeration.

◆ LOGIC_OPERATION

Logic operation.

This enumeration describes logic operation and generally mirrors D3D12_LOGIC_OP enum. It is used by RenderTargetBlendDesc structure to define logic operation. Only available on D3D12 engine

See also
D3D12_LOGIC_OP on MSDN
Enumerator
LOGIC_OP_CLEAR 

Clear the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_CLEAR.

LOGIC_OP_SET 

Set the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_SET.

LOGIC_OP_COPY 

Copy the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_COPY.

LOGIC_OP_COPY_INVERTED 

Perform an inverted-copy of the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_COPY_INVERTED.

LOGIC_OP_NOOP 

No operation is performed on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_NOOP.

LOGIC_OP_INVERT 

Invert the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_INVERT.

LOGIC_OP_AND 

Perform a logical AND operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_AND.

LOGIC_OP_NAND 

Perform a logical NAND operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_NAND.

LOGIC_OP_OR 

Perform a logical OR operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_OR.

LOGIC_OP_NOR 

Perform a logical NOR operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_NOR.

LOGIC_OP_XOR 

Perform a logical XOR operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_XOR.

LOGIC_OP_EQUIV 

Perform a logical equal operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_EQUIV.

LOGIC_OP_AND_REVERSE 

Perform a logical AND and reverse operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_AND_REVERSE.

LOGIC_OP_AND_INVERTED 

Perform a logical AND and invert operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_AND_INVERTED.

LOGIC_OP_OR_REVERSE 

Perform a logical OR and reverse operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_OR_REVERSE.

LOGIC_OP_OR_INVERTED 

Perform a logical OR and invert operation on the render target.
Direct3D12 counterpart: D3D12_LOGIC_OP_OR_INVERTED.

LOGIC_OP_NUM_OPERATIONS 

Helper value that stores the total number of logical operations in the enumeration.

◆ MAP_FLAGS

Special map flags.

Describes special arguments for a map operation. This enumeration is used by

  • IBuffer::Map to describe buffer mapping flags
  • ITexture::Map to describe texture mapping flags
Enumerator
MAP_FLAG_NONE 

No special flags.

MAP_FLAG_DO_NOT_WAIT 

Specifies that map operation should not wait until previous command that using the same resource completes. Map returns null pointer if the resource is still in use.
D3D11 counterpart: D3D11_MAP_FLAG_DO_NOT_WAIT

Note
OpenGL does not have corresponding flag, so a buffer will always be mapped
MAP_FLAG_DISCARD 

Previous contents of the resource will be undefined. This flag is only compatible with MAP_WRITE
D3D11 counterpart: D3D11_MAP_WRITE_DISCARD. OpenGL counterpart: GL_MAP_INVALIDATE_BUFFER_BIT

Note
OpenGL implementation may orphan a buffer instead
MAP_FLAG_NO_OVERWRITE 

The system will not synchronize pending operations before mapping the buffer. It is responsibility of the application to make sure that the buffer contents is not overwritten while it is in use by the GPU.
D3D11 counterpart: D3D11_MAP_WRITE_NO_OVERWRITE. OpenGL counterpart: GL_MAP_UNSYNCHRONIZED_BIT

◆ MAP_TYPE

Resource mapping type.

Describes how a mapped resource will be accessed. This enumeration generally mirrors D3D11_MAP enumeration. It is used by

  • IBuffer::Map to describe buffer mapping type
  • ITexture::Map to describe texture mapping type
Enumerator
MAP_READ 

The resource is mapped for reading.
D3D11 counterpart: D3D11_MAP_READ. OpenGL counterpart: GL_MAP_READ_BIT

MAP_WRITE 

The resource is mapped for writing.
D3D11 counterpart: D3D11_MAP_WRITE. OpenGL counterpart: GL_MAP_WRITE_BIT

MAP_READ_WRITE 

The resource is mapped for reading and writing.
D3D11 counterpart: D3D11_MAP_READ_WRITE. OpenGL counterpart: GL_MAP_WRITE_BIT | GL_MAP_READ_BIT

◆ MEMORY_PROPERTIES

Memory property flags.

Enumerator
MEMORY_PROPERTY_UNKNOWN 

Memory properties are unknown.

MEMORY_PROPERTY_HOST_COHERENT 

The device (GPU) memory is coherent with the host (CPU), meaning that CPU writes are automatically available to the GPU and vice versa. If memory is not coherent, it must be explicitly flushed after being modified by the CPU, or invalidated before being read by the CPU.

See also
IBuffer::GetMemoryProperties().

◆ MIP_FILTER_TYPE

Coarse mip filter type.

Enumerator
MIP_FILTER_TYPE_DEFAULT 

Default filter type: BOX_AVERAGE for UNORM/SNORM and FP formats, and MOST_FREQUENT for UINT/SINT formats.

MIP_FILTER_TYPE_BOX_AVERAGE 

2x2 box average.

MIP_FILTER_TYPE_MOST_FREQUENT 

Use the most frequent element from the 2x2 box. This filter does not introduce new values and should be used for integer textures that contain non-filterable data (e.g. indices).

◆ MISC_BUFFER_FLAGS

Miscellaneous buffer flags.

Enumerator
MISC_BUFFER_FLAG_NONE 

No special flags are set.

MISC_BUFFER_FLAG_SPARSE_ALIASING 

For a sparse buffer, allow binding the same memory region in different buffer ranges or in different sparse buffers.

◆ MISC_TEXTURE_FLAGS

Miscellaneous texture flags.

The enumeration is used by TextureDesc to describe misc texture flags

Enumerator
MISC_TEXTURE_FLAG_NONE 

No special flags are set.

MISC_TEXTURE_FLAG_GENERATE_MIPS 

Allow automatic mipmap generation with IDeviceContext::GenerateMips()

Note
A texture must be created with BIND_RENDER_TARGET bind flag.
MISC_TEXTURE_FLAG_MEMORYLESS 

The texture will be used as a transient framebuffer attachment.

Memoryless textures may only be used within a render pass in a framebuffer; the corresponding subpass load operation must be CLEAR or DISCARD, and the subpass store operation must be DISCARD.

MISC_TEXTURE_FLAG_SPARSE_ALIASING 

For sparse textures, allow binding the same memory range in different texture regions or in different sparse textures.

MISC_TEXTURE_FLAG_SUBSAMPLED 

The texture will be used as an intermediate render target for rendering with texture-based variable rate shading. Requires SHADING_RATE_CAP_FLAG_SUBSAMPLED_RENDER_TARGET capability.

Note
Copy operations are not supported for subsampled textures.

◆ PIPELINE_RESOURCE_FLAGS

Pipeline resource property flags.

Enumerator
PIPELINE_RESOURCE_FLAG_NONE 

Resource has no special properties.

PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS 

Indicates that dynamic buffers will never be bound to the resource variable. Applies to SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, SHADER_RESOURCE_TYPE_BUFFER_UAV, SHADER_RESOURCE_TYPE_BUFFER_SRV resources.

In Vulkan and Direct3D12 backends, dynamic buffers require extra work at run time. If an application knows it will never bind a dynamic buffer to the variable, it should use PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS flag to improve performance. This flag is not required and non-dynamic buffers will still work even if the flag is not used. It is an error to bind a dynamic buffer to resource that uses PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS flag.

PIPELINE_RESOURCE_FLAG_COMBINED_SAMPLER 

Indicates that a texture SRV will be combined with a sampler. Applies to SHADER_RESOURCE_TYPE_TEXTURE_SRV resources.

PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER 

Indicates that this variable will be used to bind formatted buffers. Applies to SHADER_RESOURCE_TYPE_BUFFER_UAV and SHADER_RESOURCE_TYPE_BUFFER_SRV resources.

In Vulkan backend formatted buffers require another descriptor type as opposed to structured buffers. If an application will be using formatted buffers with buffer UAVs and SRVs, it must specify the PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER flag.

PIPELINE_RESOURCE_FLAG_RUNTIME_ARRAY 

Indicates that resource is a run-time sized shader array (e.g. an array without a specific size).

PIPELINE_RESOURCE_FLAG_GENERAL_INPUT_ATTACHMENT 

Indicates that the resource is an input attachment in general layout, which allows simultaneously reading from the resource through the input attachment and writing to it via color or depth-stencil attachment.

Note
This flag is only valid in Vulkan.

◆ PIPELINE_SHADING_RATE_FLAGS

Pipeline state shading rate flags.

Enumerator
PIPELINE_SHADING_RATE_FLAG_NONE 

Shading rate is not used.

PIPELINE_SHADING_RATE_FLAG_PER_PRIMITIVE 

Indicates that the pipeline state will be used with per draw or per primitive shading rate. See IDeviceContext::SetShadingRate().

PIPELINE_SHADING_RATE_FLAG_TEXTURE_BASED 

Indicates that the pipeline state will be used with texture-based shading rate. See IDeviceContext::SetShadingRate() and IDeviceContext::SetRenderTargetsExt().

PIPELINE_SHADING_RATE_FLAG_LAST 

Special value that indicates the last flag in the enumeration.

◆ PIPELINE_STAGE_FLAGS

Pipeline stage flags.

These flags mirror VkPipelineStageFlagBits enum and only have effect in Vulkan backend.

Enumerator
PIPELINE_STAGE_FLAG_UNDEFINED 

Undefined stage.

PIPELINE_STAGE_FLAG_TOP_OF_PIPE 

The top of the pipeline.

PIPELINE_STAGE_FLAG_DRAW_INDIRECT 

The stage of the pipeline where Draw/DispatchIndirect data structures are consumed.

PIPELINE_STAGE_FLAG_VERTEX_INPUT 

The stage of the pipeline where vertex and index buffers are consumed.

PIPELINE_STAGE_FLAG_VERTEX_SHADER 

Vertex shader stage.

PIPELINE_STAGE_FLAG_HULL_SHADER 

Hull shader stage.

PIPELINE_STAGE_FLAG_DOMAIN_SHADER 

Domain shader stage.

PIPELINE_STAGE_FLAG_GEOMETRY_SHADER 

Geometry shader stage.

PIPELINE_STAGE_FLAG_PIXEL_SHADER 

Pixel shader stage.

PIPELINE_STAGE_FLAG_EARLY_FRAGMENT_TESTS 

The stage of the pipeline where early fragment tests (depth and stencil tests before fragment shading) are performed. This stage also includes subpass load operations for framebuffer attachments with a depth/stencil format.

PIPELINE_STAGE_FLAG_LATE_FRAGMENT_TESTS 

The stage of the pipeline where late fragment tests (depth and stencil tests after fragment shading) are performed. This stage also includes subpass store operations for framebuffer attachments with a depth/stencil format.

PIPELINE_STAGE_FLAG_RENDER_TARGET 

The stage of the pipeline after blending where the final color values are output from the pipeline. This stage also includes subpass load and store operations and multisample resolve operations for framebuffer attachments with a color or depth/stencil format.

PIPELINE_STAGE_FLAG_COMPUTE_SHADER 

Compute shader stage.

PIPELINE_STAGE_FLAG_TRANSFER 

The stage where all copy and outside-of-renderpass resolve and clear operations happen.

PIPELINE_STAGE_FLAG_BOTTOM_OF_PIPE 

The bottom of the pipeline.

PIPELINE_STAGE_FLAG_HOST 

A pseudo-stage indicating execution on the host of reads/writes of device memory. This stage is not invoked by any commands recorded in a command buffer.

PIPELINE_STAGE_FLAG_CONDITIONAL_RENDERING 

The stage of the pipeline where the predicate of conditional rendering is consumed.

PIPELINE_STAGE_FLAG_SHADING_RATE_TEXTURE 

The stage of the pipeline where the shading rate texture is read to determine the shading rate for portions of a rasterized primitive.

PIPELINE_STAGE_FLAG_RAY_TRACING_SHADER 

Ray tracing shader.

PIPELINE_STAGE_FLAG_ACCELERATION_STRUCTURE_BUILD 

Acceleration structure build shader.

PIPELINE_STAGE_FLAG_TASK_SHADER 

Task shader stage.

PIPELINE_STAGE_FLAG_MESH_SHADER 

Mesh shader stage.

PIPELINE_STAGE_FLAG_FRAGMENT_DENSITY_PROCESS 

The stage of the pipeline where the fragment density map is read to generate the fragment areas.

PIPELINE_STAGE_FLAG_DEFAULT 

Default pipeline stage that is determined by the resource state. For example, RESOURCE_STATE_RENDER_TARGET corresponds to PIPELINE_STAGE_FLAG_RENDER_TARGET pipeline stage.

◆ PIPELINE_STATE_STATUS

Pipeline state status.

Enumerator
PIPELINE_STATE_STATUS_UNINITIALIZED 

Initial state.

PIPELINE_STATE_STATUS_COMPILING 

The pipeline state is being compiled.

PIPELINE_STATE_STATUS_READY 

The pipeline state has been successfully compiled and is ready to be used.

PIPELINE_STATE_STATUS_FAILED 

The pipeline state compilation has failed.

◆ PIPELINE_TYPE

Pipeline type.

Enumerator
PIPELINE_TYPE_GRAPHICS 

Graphics pipeline, which is used by IDeviceContext::Draw(), IDeviceContext::DrawIndexed(), IDeviceContext::DrawIndirect(), IDeviceContext::DrawIndexedIndirect().

PIPELINE_TYPE_COMPUTE 

Compute pipeline, which is used by IDeviceContext::DispatchCompute(), IDeviceContext::DispatchComputeIndirect().

PIPELINE_TYPE_MESH 

Mesh pipeline, which is used by IDeviceContext::DrawMesh(), IDeviceContext::DrawMeshIndirect().

PIPELINE_TYPE_RAY_TRACING 

Ray tracing pipeline, which is used by IDeviceContext::TraceRays().

PIPELINE_TYPE_TILE 

Tile pipeline, which is used by IDeviceContext::DispatchTile().

PIPELINE_TYPE_LAST 

Special value that indicates the last pipeline type in the enumeration.

PIPELINE_TYPE_COUNT 

Number of pipeline types in the enumeration.

PIPELINE_TYPE_INVALID 

Invalid pipeline type.

◆ PRIMITIVE_TOPOLOGY

Input primitive topology.

This enumeration is used by GraphicsPipelineDesc structure to define input primitive topology.

Enumerator
PRIMITIVE_TOPOLOGY_UNDEFINED 

Undefined topology.

PRIMITIVE_TOPOLOGY_TRIANGLE_LIST 

Interpret the vertex data as a list of triangles.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST. OpenGL counterpart: GL_TRIANGLES.

PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP 

Interpret the vertex data as a triangle strip.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP. OpenGL counterpart: GL_TRIANGLE_STRIP.

PRIMITIVE_TOPOLOGY_POINT_LIST 

Interpret the vertex data as a list of points.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_POINTLIST. OpenGL counterpart: GL_POINTS.

PRIMITIVE_TOPOLOGY_LINE_LIST 

Interpret the vertex data as a list of lines.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_LINELIST. OpenGL counterpart: GL_LINES.

PRIMITIVE_TOPOLOGY_LINE_STRIP 

Interpret the vertex data as a line strip.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_LINESTRIP. OpenGL counterpart: GL_LINE_STRIP.

PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ 

Interpret the vertex data as a list of triangles with adjacency data.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ. OpenGL counterpart: GL_TRIANGLES_ADJACENCY.

PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ 

Interpret the vertex data as a triangle strip with adjacency data.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ. OpenGL counterpart: GL_TRIANGLE_STRIP_ADJACENCY.

PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ 

Interpret the vertex data as a list of lines with adjacency data.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ. OpenGL counterpart: GL_LINES_ADJACENCY.

PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ 

Interpret the vertex data as a line strip with adjacency data.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ. OpenGL counterpart: GL_LINE_STRIP_ADJACENCY.

PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of one control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of two control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of three control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of four control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of five control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of six control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of seven control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of eight control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of nine control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of ten control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 11 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 12 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 13 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 14 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 15 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 16 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 17 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 18 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 19 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 20 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 21 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 22 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 23 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 24 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 25 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 26 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 27 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 28 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 29 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 30 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 31 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST 

Interpret the vertex data as a list of 32 control point patches.
D3D counterpart: D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST. OpenGL counterpart: GL_PATCHES.

PRIMITIVE_TOPOLOGY_NUM_TOPOLOGIES 

Helper value that stores the total number of topologies in the enumeration.

◆ PSO_ARCHIVE_FLAGS

Pipeline state archive flags.

Enumerator
PSO_ARCHIVE_FLAG_NONE 

No flags are set.

PSO_ARCHIVE_FLAG_STRIP_REFLECTION 

By default, shader reflection information will be preserved during the PSO serialization. When this flag is specified, it will be stripped from the bytecode. This will reduce the binary size, but also make run-time checks not possible. Applications should generally use this flag for Release builds. TODO: this flag may need to be defined when archive is created to avoid situations where the same byte code is archived with and without reflection from different PSOs.

PSO_ARCHIVE_FLAG_DO_NOT_PACK_SIGNATURES 

Do not archive signatures used by the pipeline state.

Note
The flag only applies to explicit signatures. Implicit signatures are always packed.

◆ PSO_CACHE_FLAGS

Pipeline state cache flags.

Enumerator
PSO_CACHE_FLAG_NONE 

No flags.

PSO_CACHE_FLAG_VERBOSE 

Print diagnostic messages e.g. when PSO is not found in the cache.

◆ PSO_CACHE_MODE

Pipeline state cache mode.

Enumerator
PSO_CACHE_MODE_LOAD 

PSO cache will be used to load PSOs from it.

PSO_CACHE_MODE_STORE 

PSO cache will be used to store PSOs.

PSO_CACHE_MODE_LOAD_STORE 

PSO cache will be used to load and store PSOs.

◆ PSO_CREATE_FLAGS

Pipeline state creation flags.

Enumerator
PSO_CREATE_FLAG_NONE 

Null flag.

PSO_CREATE_FLAG_IGNORE_MISSING_VARIABLES 

Ignore missing variables.

By default, the engine outputs a warning for every variable provided as part of the pipeline resource layout description that is not found in any of the designated shader stages. Use this flag to silence these warnings.

PSO_CREATE_FLAG_IGNORE_MISSING_IMMUTABLE_SAMPLERS 

Ignore missing immutable samplers.

By default, the engine outputs a warning for every immutable sampler provided as part of the pipeline resource layout description that is not found in any of the designated shader stages. Use this flag to silence these warnings.

PSO_CREATE_FLAG_DONT_REMAP_SHADER_RESOURCES 

Do not remap shader resources when creating the pipeline.

Resource bindings in all shaders must match the bindings expected by the PSO's resource signatures.

PSO_CREATE_FLAG_ASYNCHRONOUS 

Create the pipeline state asynchronously.

When this flag is set to true and if the devices supports AsyncShaderCompilation feature, the pipeline will be created asynchronously in the background. An application should use the IPipelineState::GetStatus() method to check the pipeline status. If the device does not support asynchronous shader compilation, the flag is ignored and the pipeline is created synchronously.

◆ PSO_CREATE_INTERNAL_FLAGS

Internal PSO create flags.

Enumerator
PSO_CREATE_INTERNAL_FLAG_IMPLICIT_SIGNATURE0 

Pipeline resource signature 0 is the implicit signature created from the resource layout.

Note
This flag is used for PSO deserialization.
PSO_CREATE_INTERNAL_FLAG_NO_SHADER_REFLECTION 

Compiled shaders do not contain reflection information.

Note
This flag is used for PSO deserialization.

◆ PSO_UNPACK_FLAGS

Pipeline state unpack flags.

Enumerator
PSO_UNPACK_FLAG_NONE 

No flags are set.

PSO_UNPACK_FLAG_NO_VALIDATION 

Do not perform validation when unpacking the pipeline state. (TODO: maybe this flag is not needed as validation will not be performed if there is no reflection information anyway).

Remarks
Parameter validation will only be performed if the PSO was serialized without stripping the reflection. If reflection was stripped, validation will never be performed and this flag will have no effect.

◆ QUERY_TYPE

Query type.

Enumerator
QUERY_TYPE_UNDEFINED 

Query type is undefined.

QUERY_TYPE_OCCLUSION 

Gets the number of samples that passed the depth and stencil tests in between IDeviceContext::BeginQuery and IDeviceContext::EndQuery. IQuery::GetData fills a Diligent::QueryDataOcclusion struct.

QUERY_TYPE_BINARY_OCCLUSION 

Acts like QUERY_TYPE_OCCLUSION except that it returns simply a binary true/false result: false indicates that no samples passed depth and stencil testing, true indicates that at least one sample passed depth and stencil testing. IQuery::GetData fills a Diligent::QueryDataBinaryOcclusion struct.

QUERY_TYPE_TIMESTAMP 

Gets the GPU timestamp corresponding to IDeviceContext::EndQuery call. For this query type IDeviceContext::BeginQuery is disabled. IQuery::GetData fills a Diligent::QueryDataTimestamp struct.

QUERY_TYPE_PIPELINE_STATISTICS 

Gets pipeline statistics, such as the number of pixel shader invocations in between IDeviceContext::BeginQuery and IDeviceContext::EndQuery. IQuery::GetData fills a Diligent::QueryDataPipelineStatistics struct.

QUERY_TYPE_DURATION 

Gets the number of high-frequency counter ticks between IDeviceContext::BeginQuery and IDeviceContext::EndQuery calls. IQuery::GetData fills a Diligent::QueryDataDuration struct.

QUERY_TYPE_NUM_TYPES 

The number of query types in the enum.

◆ QUEUE_PRIORITY

Queue priority.

Enumerator
QUEUE_PRIORITY_UNKNOWN 

Queue priority is unknown.

QUEUE_PRIORITY_LOW 

Vulkan backend: VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT Direct3D12 backend: D3D12_COMMAND_QUEUE_PRIORITY_NORMAL

QUEUE_PRIORITY_MEDIUM 

Default queue priority. Vulkan backend: VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT Direct3D12 backend: D3D12_COMMAND_QUEUE_PRIORITY_NORMAL

QUEUE_PRIORITY_HIGH 

Vulkan backend: VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT Direct3D12 backend: D3D12_COMMAND_QUEUE_PRIORITY_HIGH

QUEUE_PRIORITY_REALTIME 

Additional system privileges required to use this priority, read documentation for specific platform. Vulkan backend: VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT Direct3D12 backend: D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME

QUEUE_PRIORITY_LAST 

Special value that indicates the last priority in the enumeration.

◆ RAY_TRACING_CAP_FLAGS

Ray tracing capability flags.

Enumerator
RAY_TRACING_CAP_FLAG_NONE 

No ray-tracing capabilities.

RAY_TRACING_CAP_FLAG_STANDALONE_SHADERS 

The device supports standalone ray tracing shaders (e.g. ray generation, closest hit, any hit, etc.)

When this feature is disabled, inline ray tracing may still be supported where rays can be traced from graphics or compute shaders.

RAY_TRACING_CAP_FLAG_INLINE_RAY_TRACING 

The device supports inline ray tracing in graphics or compute shaders.

RAY_TRACING_CAP_FLAG_INDIRECT_RAY_TRACING 

The device supports IDeviceContext::TraceRaysIndirect() command.

◆ RAYTRACING_BUILD_AS_FLAGS

Defines acceleration structures build flags.

Enumerator
RAYTRACING_BUILD_AS_ALLOW_UPDATE 

Indicates that the specified acceleration structure can be updated via IDeviceContext::BuildBLAS() or IDeviceContext::BuildTLAS(). With this flag, the acceleration structure may allocate more memory and take more time to build.

RAYTRACING_BUILD_AS_ALLOW_COMPACTION 

Indicates that the specified acceleration structure can act as the source for a copy acceleration structure command IDeviceContext::CopyBLAS() or IDeviceContext::CopyTLAS() with COPY_AS_MODE_COMPACT mode to produce a compacted acceleration structure. With this flag acceleration structure may allocate more memory and take more time on build.

RAYTRACING_BUILD_AS_PREFER_FAST_TRACE 

Indicates that the given acceleration structure build should prioritize trace performance over build time.

RAYTRACING_BUILD_AS_PREFER_FAST_BUILD 

Indicates that the given acceleration structure build should prioritize build time over trace performance.

RAYTRACING_BUILD_AS_LOW_MEMORY 

Indicates that this acceleration structure should minimize the size of the scratch memory and the final result build, potentially at the expense of build time or trace performance.

◆ RAYTRACING_GEOMETRY_FLAGS

Defines geometry flags for ray tracing.

Enumerator
RAYTRACING_GEOMETRY_FLAG_NONE 

No flags are set.

RAYTRACING_GEOMETRY_FLAG_OPAQUE 

Indicates that this geometry does not invoke the any-hit shaders even if present in a hit group.

RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANY_HIT_INVOCATION 

Indicates that the implementation must only call the any-hit shader a single time for each primitive in this geometry. If this bit is absent an implementation may invoke the any-hit shader more than once for this geometry.

◆ RAYTRACING_INSTANCE_FLAGS

TLAS instance flags that are used in IDeviceContext::BuildTLAS().

Enumerator
RAYTRACING_INSTANCE_NONE 

No flags are set.

RAYTRACING_INSTANCE_TRIANGLE_FACING_CULL_DISABLE 

Disables face culling for this instance.

RAYTRACING_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE 

Indicates that the front face of the triangle for culling purposes is the face that is counter clockwise in object space relative to the ray origin. Because the facing is determined in object space, an instance transform matrix does not change the winding, but a geometry transform does.

RAYTRACING_INSTANCE_FORCE_OPAQUE 

Causes this instance to act as though Diligent::RAYTRACING_GEOMETRY_FLAGS_OPAQUE were specified on all geometries referenced by this instance. This behavior can be overridden in the shader with ray flags.

RAYTRACING_INSTANCE_FORCE_NO_OPAQUE 

Causes this instance to act as though Diligent::RAYTRACING_GEOMETRY_FLAGS_OPAQUE were not specified on all geometries referenced by this instance. This behavior can be overridden in the shader with ray flags.

◆ RENDER_DEVICE_TYPE

Device type.

Enumerator
RENDER_DEVICE_TYPE_UNDEFINED 

Undefined device.

RENDER_DEVICE_TYPE_D3D11 

D3D11 device.

RENDER_DEVICE_TYPE_D3D12 

D3D12 device.

RENDER_DEVICE_TYPE_GL 

OpenGL device.

RENDER_DEVICE_TYPE_GLES 

OpenGLES device.

RENDER_DEVICE_TYPE_VULKAN 

Vulkan device.

RENDER_DEVICE_TYPE_METAL 

Metal device.

RENDER_DEVICE_TYPE_WEBGPU 

WebGPU device.

RENDER_DEVICE_TYPE_COUNT 

The total number of device types.

◆ RENDER_STATE_CACHE_LOG_LEVEL

Render state cache logging level.

Enumerator
RENDER_STATE_CACHE_LOG_LEVEL_DISABLED 

Logging is disabled.

RENDER_STATE_CACHE_LOG_LEVEL_NORMAL 

Normal logging level.

RENDER_STATE_CACHE_LOG_LEVEL_VERBOSE 

Verbose logging level.

◆ RESOURCE_DIMENSION

Describes resource dimension.

This enumeration is used by

Enumerator
RESOURCE_DIM_UNDEFINED 

Texture type undefined.

RESOURCE_DIM_BUFFER 

Buffer.

RESOURCE_DIM_TEX_1D 

One-dimensional texture.

RESOURCE_DIM_TEX_1D_ARRAY 

One-dimensional texture array.

RESOURCE_DIM_TEX_2D 

Two-dimensional texture.

RESOURCE_DIM_TEX_2D_ARRAY 

Two-dimensional texture array.

RESOURCE_DIM_TEX_3D 

Three-dimensional texture.

RESOURCE_DIM_TEX_CUBE 

Cube-map texture.

RESOURCE_DIM_TEX_CUBE_ARRAY 

Cube-map array texture.

RESOURCE_DIM_NUM_DIMENSIONS 

Helper value that stores the total number of texture types in the enumeration.

◆ RESOURCE_DIMENSION_SUPPORT

Describes device support of a particular resource dimension for a given texture format.

Enumerator
RESOURCE_DIMENSION_SUPPORT_NONE 

The device does not support any resources for this format.

RESOURCE_DIMENSION_SUPPORT_BUFFER 

Indicates if the device supports buffer resources for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_1D 

Indicates if the device supports 1D textures for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_1D_ARRAY 

Indicates if the device supports 1D texture arrays for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_2D 

Indicates if the device supports 2D textures for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_2D_ARRAY 

Indicates if the device supports 2D texture arrays for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_3D 

Indicates if the device supports 3D textures for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_CUBE 

Indicates if the device supports cube textures for a particular texture format.

RESOURCE_DIMENSION_SUPPORT_TEX_CUBE_ARRAY 

Indicates if the device supports cube texture arrays for a particular texture format.

◆ RESOURCE_STATE

Resource usage state.

Enumerator
RESOURCE_STATE_UNKNOWN 

The resource state is not known to the engine and is managed by the application.

RESOURCE_STATE_UNDEFINED 

The resource state is known to the engine, but is undefined. A resource is typically in an undefined state right after initialization.

RESOURCE_STATE_VERTEX_BUFFER 

The resource is accessed as a vertex buffer

Remarks
Supported contexts: graphics.
RESOURCE_STATE_CONSTANT_BUFFER 

The resource is accessed as a constant (uniform) buffer

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_INDEX_BUFFER 

The resource is accessed as an index buffer

Remarks
Supported contexts: graphics.
RESOURCE_STATE_RENDER_TARGET 

The resource is accessed as a render target

Remarks
Supported contexts: graphics.
RESOURCE_STATE_UNORDERED_ACCESS 

The resource is used for unordered access

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_DEPTH_WRITE 

The resource is used in a writable depth-stencil view or in clear operation

Remarks
Supported contexts: graphics.
RESOURCE_STATE_DEPTH_READ 

The resource is used in a read-only depth-stencil view

Remarks
Supported contexts: graphics.
RESOURCE_STATE_SHADER_RESOURCE 

The resource is accessed from a shader

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_STREAM_OUT 

The resource is used as the destination for stream output.

RESOURCE_STATE_INDIRECT_ARGUMENT 

The resource is used as an indirect draw/dispatch arguments buffer

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_COPY_DEST 

The resource is used as the destination in a copy operation

Remarks
Supported contexts: graphics, compute, transfer.
RESOURCE_STATE_COPY_SOURCE 

The resource is used as the source in a copy operation

Remarks
Supported contexts: graphics, compute, transfer.
RESOURCE_STATE_RESOLVE_DEST 

The resource is used as the destination in a resolve operation

Remarks
Supported contexts: graphics.
RESOURCE_STATE_RESOLVE_SOURCE 

The resource is used as the source in a resolve operation

Remarks
Supported contexts: graphics.
RESOURCE_STATE_INPUT_ATTACHMENT 

The resource is used as an input attachment in a render pass subpass

Remarks
Supported contexts: graphics.
RESOURCE_STATE_PRESENT 

The resource is used for present

Remarks
Supported contexts: graphics.
RESOURCE_STATE_BUILD_AS_READ 

The resource is used as vertex/index/instance buffer in an AS building operation or as an acceleration structure source in an AS copy operation.

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_BUILD_AS_WRITE 

The resource is used as the target for AS building or AS copy operations.

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_RAY_TRACING 

The resource is used as a top-level AS shader resource in a trace rays operation.

Remarks
Supported contexts: graphics, compute.
RESOURCE_STATE_COMMON 

The resource state is used for read operations, but access to the resource may be slower compared to the specialized state. A transition to the COMMON state is always a pipeline stall and can often induce a cache flush and render target decompress operation.

Remarks
In D3D12 backend, a resource must be in COMMON state for transition between graphics/compute queue and copy queue.
Supported contexts: graphics, compute, transfer.
RESOURCE_STATE_SHADING_RATE 

The resource is used as the source when variable shading rate rendering.

Remarks
Supported contexts: graphics.

◆ RESOURCE_STATE_TRANSITION_MODE

Defines resource state transition mode performed by various commands.

Refer to http://diligentgraphics.com/2018/12/09/resource-state-management/ for detailed explanation of resource state management in Diligent Engine.

Enumerator
RESOURCE_STATE_TRANSITION_MODE_NONE 

Perform no state transitions and no state validation. Resource states are not accessed (either read or written) by the command.

RESOURCE_STATE_TRANSITION_MODE_TRANSITION 

Transition resources to the states required by the specific command. Resources in unknown state are ignored.

Any method that uses this mode may alter the state of the resources it works with. As automatic state management is not thread-safe, no other thread is allowed to read or write the state of the resources being transitioned. If the application intends to use the same resources in other threads simultaneously, it needs to explicitly manage the states using IDeviceContext::TransitionResourceStates() method.

Note
If a resource is used in multiple threads by multiple contexts, there will be race condition accessing internal resource state. An application should use manual resource state management in this case.
RESOURCE_STATE_TRANSITION_MODE_VERIFY 

Do not transition, but verify that states are correct. No validation is performed if the state is unknown to the engine. This mode only has effect in debug and development builds. No validation is performed in release build.

Note
Any method that uses this mode will read the state of resources it works with. As automatic state management is not thread-safe, no other thread is allowed to alter the state of resources being used by the command. It is safe to read these states.

◆ ResourceCacheContentType

The type of the content that is stored in the shader resource cache.

Enumerator
Signature 

Static resources of a pipeline resource signature.

SRB 

Resources of a shader resource binding.

◆ SAMPLER_FLAGS

Sampler flags.

Enumerator
SAMPLER_FLAG_NONE 

No flags are set.

SAMPLER_FLAG_SUBSAMPLED 

Specifies that the sampler will read from a subsampled texture created with MISC_TEXTURE_FLAG_SUBSAMPLED flag. Requires SHADING_RATE_CAP_FLAG_SUBSAMPLED_RENDER_TARGET capability.

SAMPLER_FLAG_SUBSAMPLED_COARSE_RECONSTRUCTION 

Specifies that the GPU is allowed to use fast approximation when reconstructing full-resolution value from the subsampled texture accessed by the sampler. Requires SHADING_RATE_CAP_FLAG_SUBSAMPLED_RENDER_TARGET capability.

◆ SCALING_MODE

Flags indicating how an image is stretched to fit a given monitor's resolution.

See also
DXGI_MODE_SCALING enumeration on MSDN,
Enumerator
SCALING_MODE_UNSPECIFIED 

Unspecified scaling. D3D Counterpart: DXGI_MODE_SCALING_UNSPECIFIED.

SCALING_MODE_CENTERED 

Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display). D3D Counterpart: DXGI_MODE_SCALING_CENTERED.

SCALING_MODE_STRETCHED 

Specifies stretched scaling. D3D Counterpart: DXGI_MODE_SCALING_STRETCHED.

◆ SCANLINE_ORDER

Flags indicating the method the raster uses to create an image on a surface.

See also
DXGI_MODE_SCANLINE_ORDER enumeration on MSDN,
Enumerator
SCANLINE_ORDER_UNSPECIFIED 

Scanline order is unspecified D3D Counterpart: DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED.

SCANLINE_ORDER_PROGRESSIVE 

The image is created from the first scanline to the last without skipping any D3D Counterpart: DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE.

SCANLINE_ORDER_UPPER_FIELD_FIRST 

The image is created beginning with the upper field D3D Counterpart: DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST.

SCANLINE_ORDER_LOWER_FIELD_FIRST 

The image is created beginning with the lower field D3D Counterpart: DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST.

◆ SET_SHADER_RESOURCE_FLAGS

Flags used by IShaderResourceVariable::Set, IShaderResourceVariable::SetArray, and IShaderResourceVariable::SetBufferRange methods.

Enumerator
SET_SHADER_RESOURCE_FLAG_NONE 

No flags.

SET_SHADER_RESOURCE_FLAG_ALLOW_OVERWRITE 

Allow overwriting static and mutable variable bindings.

By default, static and mutable variables can't be changed once initialized to a non-null resource. This flag is required to explicitly allow overwriting the binding.

Overwriting static variables does not require synchronization with GPU and does not have effect on shader resource binding objects already created from the pipeline state or resource signature.

When overwriting a mutable variable binding in Direct3D12 and Vulkan, an application must ensure that the GPU is not accessing the SRB. This can be achieved using synchronization tools such as fences. Synchronization with GPU is not required in OpenGL, Direct3D11, and Metal backends.

◆ SET_VERTEX_BUFFERS_FLAGS

Defines allowed flags for IDeviceContext::SetVertexBuffers() function.

Enumerator
SET_VERTEX_BUFFERS_FLAG_NONE 

No extra operations.

SET_VERTEX_BUFFERS_FLAG_RESET 

Reset the vertex buffers to only the buffers specified in this call. All buffers previously bound to the pipeline will be unbound.

◆ SHADER_CODE_BASIC_TYPE

Describes the basic type of a shader code variable.

Enumerator
SHADER_CODE_BASIC_TYPE_UNKNOWN 

The type is unknown.

SHADER_CODE_BASIC_TYPE_VOID 

Void pointer.

SHADER_CODE_BASIC_TYPE_BOOL 

Boolean (bool).

SHADER_CODE_BASIC_TYPE_INT 

Integer (int).

SHADER_CODE_BASIC_TYPE_INT8 

8-bit integer (int8).

SHADER_CODE_BASIC_TYPE_INT16 

16-bit integer (int16).

SHADER_CODE_BASIC_TYPE_INT64 

64-bit integer (int64).

SHADER_CODE_BASIC_TYPE_UINT 

Unsigned integer (uint).

SHADER_CODE_BASIC_TYPE_UINT8 

8-bit unsigned integer (uint8).

SHADER_CODE_BASIC_TYPE_UINT16 

16-bit unsigned integer (uint16).

SHADER_CODE_BASIC_TYPE_UINT64 

64-bit unsigned integer (uint64).

SHADER_CODE_BASIC_TYPE_FLOAT 

Floating-point number (float).

SHADER_CODE_BASIC_TYPE_FLOAT16 

16-bit floating-point number (half).

SHADER_CODE_BASIC_TYPE_DOUBLE 

Double-precision (64-bit) floating-point number (double).

SHADER_CODE_BASIC_TYPE_MIN8FLOAT 

8-bit float (min8float).

SHADER_CODE_BASIC_TYPE_MIN10FLOAT 

10-bit float (min10float).

SHADER_CODE_BASIC_TYPE_MIN16FLOAT 

16-bit float (min16float).

SHADER_CODE_BASIC_TYPE_MIN12INT 

12-bit int (min12int).

SHADER_CODE_BASIC_TYPE_MIN16INT 

16-bit int (min16int).

SHADER_CODE_BASIC_TYPE_MIN16UINT 

16-bit unsigned int (min12uint).

SHADER_CODE_BASIC_TYPE_STRING 

String (string).

◆ SHADER_CODE_VARIABLE_CLASS

Describes the class of a shader code variable.

Enumerator
SHADER_CODE_VARIABLE_CLASS_UNKNOWN 

The variable class is unknown.

SHADER_CODE_VARIABLE_CLASS_SCALAR 

The variable is a scalar.

SHADER_CODE_VARIABLE_CLASS_VECTOR 

The variable is a vector.

SHADER_CODE_VARIABLE_CLASS_MATRIX_ROWS 

The variable is a row-major matrix.

SHADER_CODE_VARIABLE_CLASS_MATRIX_COLUMNS 

The variable is a column-major matrix.

SHADER_CODE_VARIABLE_CLASS_STRUCT 

The variable is a structure.

◆ SHADER_COMPILE_FLAGS

Shader compilation flags.

Enumerator
SHADER_COMPILE_FLAG_NONE 

No flags.

SHADER_COMPILE_FLAG_ENABLE_UNBOUNDED_ARRAYS 

Enable unbounded resource arrays (e.g. Texture2D g_Texture[]).

SHADER_COMPILE_FLAG_SKIP_REFLECTION 

Don't load shader reflection.

SHADER_COMPILE_FLAG_ASYNCHRONOUS 

Compile the shader asynchronously.

When this flag is set to true and if the devices supports AsyncShaderCompilation feature, the shader will be compiled asynchronously in the background. An application should use the IShader::GetStatus() method to check the shader status. If the device does not support asynchronous shader compilation, the flag is ignored and the shader is compiled synchronously.

SHADER_COMPILE_FLAG_PACK_MATRIX_ROW_MAJOR 

Pack matrices in row-major order.

By default, matrices are laid out in GPU memory in column-major order, which means that the first four values in a 4x4 matrix represent the first column, the next four values represent the second column, and so on.

If this flag is set, matrices are packed in row-major order, i.e. they are laid out in memory row-by-row.

SHADER_COMPILE_FLAG_HLSL_TO_SPIRV_VIA_GLSL 

Convert HLSL to GLSL when compiling HLSL shaders to SPIRV.

HLSL shaders can be compiled to SPIRV directly using either DXC or glslang. While glslang supports most HLSL 5.1 features, some Vulkan-specific functionality is missing. Notably, glslang does not support UAV texture format annotations (see https://github.com/KhronosGroup/glslang/issues/3790), for example:

[[vk::image_format("rgba8")]] RWTexture2D<float4> g_rwTexture;

This flag provides a workaround by converting HLSL to GLSL before compiling it to SPIRV. The converter supports specially formatted comments to specify UAV texture formats:

RWTexture2D<float4 /*format = rgba8*&zwj;/> g_rwTexture;

Another use case for this flag is to leverage GLSL-specific keywords in HLSL shaders, such as gl_DrawID for multi-draw or manually setting gl_PointSize.

This flag only takes effect when compiling HLSL to SPIRV with glslang. Since DXC does not support GLSL, this flag is ignored when SHADER_COMPILER_DXC is used.

◆ SHADER_COMPILER

Describes the shader compiler that will be used to compile the shader source code.

Enumerator
SHADER_COMPILER_DEFAULT 

Default compiler for specific language and API that is selected as follows:

  • Direct3D11: legacy HLSL compiler (FXC)
  • Direct3D12: legacy HLSL compiler (FXC)
  • OpenGL(ES) GLSL: native compiler
  • OpenGL(ES) HLSL: HLSL2GLSL converter and native compiler
  • Vulkan GLSL: built-in glslang
  • Vulkan HLSL: built-in glslang (with limited support for Shader Model 6.x)
  • Metal GLSL/HLSL: built-in glslang (HLSL with limited support for Shader Model 6.x)
  • Metal MSL: native compiler
SHADER_COMPILER_GLSLANG 

Built-in glslang compiler for GLSL and HLSL.

SHADER_COMPILER_DXC 

Modern HLSL compiler (DXC) for Direct3D12 and Vulkan with Shader Model 6.x support.

SHADER_COMPILER_FXC 

Legacy HLSL compiler (FXC) for Direct3D11 and Direct3D12 supporting shader models up to 5.1.

◆ SHADER_RESOURCE_TYPE

Describes shader resource type.

Enumerator
SHADER_RESOURCE_TYPE_UNKNOWN 

Shader resource type is unknown.

SHADER_RESOURCE_TYPE_CONSTANT_BUFFER 

Constant (uniform) buffer.

SHADER_RESOURCE_TYPE_TEXTURE_SRV 

Shader resource view of a texture (sampled image)

SHADER_RESOURCE_TYPE_BUFFER_SRV 

Shader resource view of a buffer (read-only storage image)

SHADER_RESOURCE_TYPE_TEXTURE_UAV 

Unordered access view of a texture (storage image)

SHADER_RESOURCE_TYPE_BUFFER_UAV 

Unordered access view of a buffer (storage buffer)

SHADER_RESOURCE_TYPE_SAMPLER 

Sampler (separate sampler)

SHADER_RESOURCE_TYPE_INPUT_ATTACHMENT 

Input attachment in a render pass.

SHADER_RESOURCE_TYPE_ACCEL_STRUCT 

Acceleration structure.

◆ SHADER_RESOURCE_VARIABLE_TYPE

Describes the type of the shader resource variable.

Enumerator
SHADER_RESOURCE_VARIABLE_TYPE_STATIC 

Shader resource bound to the variable is the same for all SRB instances. It must be set once directly through Pipeline State object.

SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE 

Shader resource bound to the variable is specific to the shader resource binding instance (see Diligent::IShaderResourceBinding). It must be set once through Diligent::IShaderResourceBinding interface. It cannot be set through Diligent::IPipelineState interface and cannot be change once bound.

SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC 

Shader variable binding is dynamic. It can be set multiple times for every instance of shader resource binding (see Diligent::IShaderResourceBinding). It cannot be set through Diligent::IPipelineState interface.

SHADER_RESOURCE_VARIABLE_TYPE_NUM_TYPES 

Total number of shader variable types.

◆ SHADER_RESOURCE_VARIABLE_TYPE_FLAGS

Shader resource variable type flags.

Enumerator
SHADER_RESOURCE_VARIABLE_TYPE_FLAG_NONE 

No flags.

SHADER_RESOURCE_VARIABLE_TYPE_FLAG_STATIC 

Static variable type flag.

SHADER_RESOURCE_VARIABLE_TYPE_FLAG_MUTABLE 

Mutable variable type flag.

SHADER_RESOURCE_VARIABLE_TYPE_FLAG_DYNAMIC 

Dynamic variable type flag.

SHADER_RESOURCE_VARIABLE_TYPE_FLAG_MUT_DYN 

Mutable and dynamic variable type flags.

SHADER_RESOURCE_VARIABLE_TYPE_FLAG_ALL 

All variable type flags.

◆ SHADER_SOURCE_LANGUAGE

Describes the shader source code language.

Enumerator
SHADER_SOURCE_LANGUAGE_DEFAULT 

Default language (GLSL for OpenGL/OpenGLES/Vulkan devices, HLSL for Direct3D11/Direct3D12 devices)

SHADER_SOURCE_LANGUAGE_HLSL 

The source language is HLSL.

SHADER_SOURCE_LANGUAGE_GLSL 

The source language is GLSL.

SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM 

The source language is GLSL that should be compiled verbatim.

By default the engine prepends GLSL shader source code with platform-specific definitions. For instance it adds appropriate #version directive (e.g. #version 430 core or #version 310 es) so that the same source will work on different versions of desktop OpenGL and OpenGLES. When SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM is used, the source code will be compiled as is. Note that shader macros are ignored when compiling GLSL verbatim in OpenGL backend, and an application should add the macro definitions to the source code.

SHADER_SOURCE_LANGUAGE_MSL 

The source language is Metal shading language (MSL)

SHADER_SOURCE_LANGUAGE_MSL_VERBATIM 

The source language is Metal shading language (MSL) that should be compiled verbatim.

Note that shader macros are ignored when compiling MSL verbatim, and an application should add the macro definitions to the source code.

SHADER_SOURCE_LANGUAGE_MTLB 

The source language is Metal bytecode.

SHADER_SOURCE_LANGUAGE_WGSL 

The source language is WebGPU shading language (WGSL)

◆ SHADER_STATUS

Shader status.

Enumerator
SHADER_STATUS_UNINITIALIZED 

Initial shader status.

SHADER_STATUS_COMPILING 

The shader is being compiled.

SHADER_STATUS_READY 

The shader has been successfully compiled and is ready to be used.

SHADER_STATUS_FAILED 

The shader compilation has failed.

◆ SHADER_TYPE

Describes the shader type.

Enumerator
SHADER_TYPE_UNKNOWN 

Unknown shader type.

SHADER_TYPE_VERTEX 

Vertex shader.

SHADER_TYPE_PIXEL 

Pixel (fragment) shader.

SHADER_TYPE_GEOMETRY 

Geometry shader.

SHADER_TYPE_HULL 

Hull (tessellation control) shader.

SHADER_TYPE_DOMAIN 

Domain (tessellation evaluation) shader.

SHADER_TYPE_COMPUTE 

Compute shader.

SHADER_TYPE_AMPLIFICATION 

Amplification (task) shader.

SHADER_TYPE_MESH 

Mesh shader.

SHADER_TYPE_RAY_GEN 

Ray generation shader.

SHADER_TYPE_RAY_MISS 

Ray miss shader.

SHADER_TYPE_RAY_CLOSEST_HIT 

Ray closest hit shader.

SHADER_TYPE_RAY_ANY_HIT 

Ray any hit shader.

SHADER_TYPE_RAY_INTERSECTION 

Ray intersection shader.

SHADER_TYPE_CALLABLE 

Callable shader.

SHADER_TYPE_TILE 

Tile shader (Only for Metal backend)

SHADER_TYPE_VS_PS 

Vertex and pixel shader stages.

SHADER_TYPE_ALL_GRAPHICS 

All graphics pipeline shader stages.

SHADER_TYPE_ALL_MESH 

All mesh shading pipeline stages.

SHADER_TYPE_ALL_RAY_TRACING 

All ray-tracing pipeline shader stages.

SHADER_TYPE_ALL 

All shader stages.

◆ SHADER_VARIABLE_FLAGS

Shader variable property flags.

Enumerator
SHADER_VARIABLE_FLAG_NONE 

Shader variable has no special properties.

SHADER_VARIABLE_FLAG_NO_DYNAMIC_BUFFERS 

Indicates that dynamic buffers will never be bound to the resource variable. Applies to Diligent::SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, Diligent::SHADER_RESOURCE_TYPE_BUFFER_UAV, Diligent::SHADER_RESOURCE_TYPE_BUFFER_SRV resources.

Remarks
This flag directly translates to the Diligent::PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS flag in the internal pipeline resource signature.
SHADER_VARIABLE_FLAG_GENERAL_INPUT_ATTACHMENT_VK 

Indicates that the resource is an input attachment in general layout, which allows simultaneously reading from the resource through the input attachment and writing to it via color or depth-stencil attachment.

Note
This flag is only valid in Vulkan.
SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU 

Indicates that the resource is an unfilterable-float texture.

Note
This flag is only valid in WebGPU and ignored in other backends.
SHADER_VARIABLE_FLAG_NON_FILTERING_SAMPLER_WEBGPU 

Indicates that the resource is a non-filtering sampler.

Note
This flag is only valid in WebGPU and ignored in other backends.
SHADER_VARIABLE_FLAG_LAST 

Special value that indicates the last flag in the enumeration.

◆ SHADING_RATE

Defines the shading rate for both axes.

Enumerator
SHADING_RATE_1X1 

Specifies no change to the shading rate.

SHADING_RATE_1X2 

Specifies default horizontal rate and 1/2 vertical shading rate.

SHADING_RATE_1X4 

Specifies default horizontal rate and 1/4 vertical shading rate.

SHADING_RATE_2X1 

Specifies 1/2 horizontal shading rate and default vertical rate.

SHADING_RATE_2X2 

Specifies 1/2 horizontal and 1/2 vertical shading rate.

SHADING_RATE_2X4 

Specifies 1/2 horizontal and 1/4 vertical shading rate.

SHADING_RATE_4X1 

Specifies 1/4 horizontal and default vertical rate.

SHADING_RATE_4X2 

Specifies 1/4 horizontal and 1/2 vertical rate.

SHADING_RATE_4X4 

Specifies 1/4 horizontal and 1/4 vertical shading rate.

SHADING_RATE_MAX 

Maximum shading rate value.

◆ SHADING_RATE_CAP_FLAGS

Defines the shading rate capability flags.

Enumerator
SHADING_RATE_CAP_FLAG_NONE 

No shading rate capabilities.

SHADING_RATE_CAP_FLAG_PER_DRAW 

Shading rate can be specified for the whole draw call using IDeviceContext::SetShadingRate().

SHADING_RATE_CAP_FLAG_PER_PRIMITIVE 

Shading rate can be specified in the vertex shader for each primitive and combined with the base rate. Use IDeviceContext::SetShadingRate() to set base rate and per-primitive combiner.

SHADING_RATE_CAP_FLAG_TEXTURE_BASED 

Shading rate is specified by a texture, each texel defines a shading rate for the tile. Supported tile size is specified in ShadingRateProperties::MinTileSize/MaxTileSize. Use IDeviceContext::SetShadingRate() to set the base rate and texture combiner. Use IDeviceContext::SetRenderTargetsExt() to set the shading rate texture.

SHADING_RATE_CAP_FLAG_SAMPLE_MASK 

Allows to set zero bits in GraphicsPipelineDesc::SampleMask with the enabled variable rate shading.

SHADING_RATE_CAP_FLAG_SHADER_SAMPLE_MASK 

Allows to get or set SampleMask in the shader with enabled variable rate shading.

  • HLSL: SV_Coverage
  • GLSL: gl_SampleMaskIn, gl_SampleMask.
SHADING_RATE_CAP_FLAG_SHADER_DEPTH_STENCIL_WRITE 

Allows to write depth and stencil from the pixel shader.

SHADING_RATE_CAP_FLAG_PER_PRIMITIVE_WITH_MULTIPLE_VIEWPORTS 

Allows to use per primitive shading rate when multiple viewports are used.

SHADING_RATE_CAP_FLAG_SAME_TEXTURE_FOR_WHOLE_RENDERPASS 

Shading rate attachment for render pass must be the same for all subpasses. See SubpassDesc::pShadingRateAttachment.

SHADING_RATE_CAP_FLAG_TEXTURE_ARRAY 

Allows to use texture 2D array for shading rate.

SHADING_RATE_CAP_FLAG_SHADING_RATE_SHADER_INPUT 

Allows to read current shading rate in the pixel shader.

  • HLSL: in SV_ShadingRate
  • GLSL: gl_ShadingRate.
SHADING_RATE_CAP_FLAG_ADDITIONAL_INVOCATIONS 

Indicates that driver may generate additional fragment shader invocations in order to make transitions between fragment areas with different shading rates more smooth.

SHADING_RATE_CAP_FLAG_NON_SUBSAMPLED_RENDER_TARGET 

Indicates that there are no additional requirements for render targets that are used in texture-based VRS rendering.

SHADING_RATE_CAP_FLAG_SUBSAMPLED_RENDER_TARGET 

Indicates that render targets that are used in texture-based VRS rendering must be created with Diligent::MISC_TEXTURE_FLAG_SUBSAMPLED flag. Intermediate targets must be scaled to the final resolution in a separate pass. Intermediate targets can only be sampled with an immutable sampler created with Diligent::SAMPLER_FLAG_SUBSAMPLED flag. If supported, rendering to the subsampled render targets may be more optimal.

Note
Both NON_SUBSAMPLED and SUBSAMPLED modes may be supported by a device.

◆ SHADING_RATE_COMBINER

Defines how shading rates coming from the different sources (base rate, primitive rate and VRS image rate) are combined. The combiner may be described by the following function:

ApplyCombiner(SHADING_RATE_COMBINER Combiner, SHADING_RATE OriginalRate, SHADING_RATE NewRate).

See IDeviceContext::SetShadingRate() for details.

Enumerator
SHADING_RATE_COMBINER_PASSTHROUGH 

Returns the original shading rate value:

  • for PrimitiveCombiner, returns BaseRate.
  • for TextureCombiner, returns PrimitiveRate.
SHADING_RATE_COMBINER_OVERRIDE 

Returns the new shading rate value:

  • for PrimitiveCombiner, returns PrimitiveRate.
  • for TextureCombiner, returns TextureRate.
SHADING_RATE_COMBINER_MIN 

Returns the minimum shading rate value:

  • for PrimitiveCombiner, returns Min(BaseRate, PrimitiveRate).
  • for TextureCombiner, returns Min(PrimitiveRate, TextureRate).
SHADING_RATE_COMBINER_MAX 

Returns the maximum shading rate value:

  • for PrimitiveCombiner, returns Max(BaseRate, PrimitiveRate).
  • for TextureCombiner, returns Max(PrimitiveRate, TextureRate).
SHADING_RATE_COMBINER_SUM 

Returns the sum of the shading rates:

  • for PrimitiveCombiner, returns BaseRate + PrimitiveRate.
  • for TextureCombiner, returns PrimitiveRate + TextureRate.
SHADING_RATE_COMBINER_MUL 

Returns the product of shading rates:

  • for PrimitiveCombiner, returns BaseRate * PrimitiveRate.
  • for TextureCombiner, returns PrimitiveRate * TextureRate.

◆ SHADING_RATE_FORMAT

Shading rate texture format supported by the device.

Enumerator
SHADING_RATE_FORMAT_UNKNOWN 

Variable rate shading is not supported.

SHADING_RATE_FORMAT_PALETTE 

Single-channel 8-bit surface that contains Diligent::SHADING_RATE values. Only 2D and 2D array textures with R8_UNORM format are allowed.

Remarks
Vulkan backend uses VK_KHR_fragment_shading_rate extension and GLSL_EXT_fragment_shading_rate extension for GLSL.
SHADING_RATE_FORMAT_UNORM8 

RG 8-bit UNORM texture that defines shading rate (0.5, 0.25 etc.) R channel is used for X axis, G channel is used for Y axis.

Remarks
Vulkan backend uses VK_EXT_fragment_density_map extension and GLSL_EXT_fragment_invocation_density extension for GLSL.
SHADING_RATE_FORMAT_COL_ROW_FP32 

This format is only used in Metal when shading rate is defined by column/row rates instead of a texture. The values are 32-bit floating point values in 0 to 1 range (0.5, 0.25 etc.).

◆ SHADING_RATE_TEXTURE_ACCESS

Defines how the shading rate texture is accessed.

Enumerator
SHADING_RATE_TEXTURE_ACCESS_UNKNOWN 

Shading rate texture access type is unknown.

SHADING_RATE_TEXTURE_ACCESS_ON_GPU 

Shading rate texture is accessed by the GPU when command buffer is executed.

SHADING_RATE_TEXTURE_ACCESS_ON_SUBMIT 

Shading rate texture is accessed by the CPU when command buffer is submitted for execution. An application is not allowed to modify the texture until the command buffer is executed by the GPU. Feneces or other synchronization methods must be used to control the access to the texture.

SHADING_RATE_TEXTURE_ACCESS_ON_SET_RTV 

Shading rate texture is accessed by the CPU when SetRenderTargetsEx or BeginRenderPass command is executed. An application is not allowed to modify the texture until the command buffer is executed by GPU. Feneces or other synchronization methods must be used to control the access to the texture.

◆ SPARSE_RESOURCE_CAP_FLAGS

Sparse memory capability flags.

Enumerator
SPARSE_RESOURCE_CAP_FLAG_NONE 

No sparse resource capabilities.

SPARSE_RESOURCE_CAP_FLAG_SHADER_RESOURCE_RESIDENCY 

Specifies whether texture operations that return resource residency information are supported in shader code.

Note
In Metal backend, MSL shader should be used.
SPARSE_RESOURCE_CAP_FLAG_BUFFER 

Specifies whether the device supports sparse buffers.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2D 

Specifies whether the device supports sparse 2D textures with 1 sample per pixel.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_3D 

Specifies whether the device supports sparse 3D textures.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2_SAMPLES 

Specifies whether the device supports sparse 2D textures with 2 samples per pixel.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_4_SAMPLES 

Specifies whether the device supports sparse 2D textures with 4 samples per pixel.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_8_SAMPLES 

Specifies whether the device supports sparse 2D textures with 8 samples per pixel.

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_16_SAMPLES 

Specifies whether the device supports sparse 2D textures with 16 samples per pixel.

SPARSE_RESOURCE_CAP_FLAG_ALIASED 

Specifies whether the device can correctly access memory aliased into multiple locations, and reading physical memory from multiple aliased locations will return the same value.

SPARSE_RESOURCE_CAP_FLAG_STANDARD_2D_TILE_SHAPE 

Specifies whether the device accesses single-sample 2D sparse textures using the standard sparse texture tile shapes.

Texel size Tile shape
8-Bit 256 x 256 x 1
16-Bit 256 x 128 x 1
32-Bit 128 x 128 x 1
64-Bit 128 x 64 x 1
128-Bit 64 x 64 x 1

If not present, call IRenderDevice::GetSparseTextureFormatInfo() to get the supported sparse tile dimensions.

SPARSE_RESOURCE_CAP_FLAG_STANDARD_2DMS_TILE_SHAPE 

Specifies whether the device accesses multi-sample 2D sparse textures using the standard sparse texture tile shapes.

Texel size Tile shape 2x Tile shape 4x Tile shape 8x Tile shape 16x
8-Bit 128 x 256 x 1 128 x 128 x 1 64 x 128 x 1 64 x 64 x 1
16-Bit 128 x 128 x 1 128 x 64 x 1 64 x 64 x 1 64 x 32 x 1
32-Bit 64 x 128 x 1 64 x 64 x 1 32 x 64 x 1 32 x 32 x 1
64-Bit 64 x 64 x 1 64 x 32 x 1 32 x 32 x 1 32 x 16 x 1
128-Bit 32 x 64 x 1 32 x 32 x 1 16 x 32 x 1 16 x 16 x 1

If not present, call IRenderDevice::GetSparseTextureFormatInfo() to get the supported sparse tile dimensions.

SPARSE_RESOURCE_CAP_FLAG_STANDARD_3D_TILE_SHAPE 

Specifies whether the device accesses 3D sparse textures using the standard sparse texture tile shapes.

Texel size Tile shape
8-Bit 64 x 32 x 32
16-Bit 32 x 32 x 32
32-Bit 32 x 32 x 16
64-Bit 32 x 16 x 16
128-Bit 16 x 16 x 16

If not present, call IRenderDevice::GetSparseTextureFormatInfo() to get the supported sparse tile dimensions.

SPARSE_RESOURCE_CAP_FLAG_ALIGNED_MIP_SIZE 

Specifies if textures with mip level dimensions that are not integer multiples of the corresponding dimensions of the sparse texture tile may be placed in the mip tail. If this capability is not reported, only mip levels with dimensions smaller than the SparseTextureProperties::TilesSize will be placed in the mip tail.

SPARSE_RESOURCE_CAP_FLAG_NON_RESIDENT_STRICT 

Specifies whether the device can consistently access non-resident (without bound memory) regions of a resource. If not present, reads of unbound regions of the resource will return undefined values. Both reads and writes are still considered safe and will not affect other resources or populated regions of the resource. If present, all reads of unbound regions of the resource will behave as if the region was bound to memory populated with all zeros; writes will be discarded. Non-existent components of the format are replaced by 1. For example, RG8_UNORM format will be read as (0, 0, 1, 1).

SPARSE_RESOURCE_CAP_FLAG_TEXTURE_2D_ARRAY_MIP_TAIL 

Specifies whether the device supports sparse texture arrays with mip levels whose dimensions are less than the tile size.

SPARSE_RESOURCE_CAP_FLAG_BUFFER_STANDARD_BLOCK 

Indicates that sparse buffers use the standard block, see SparseResourceProperties::StandardBlockSize. If this capability is not reported, call IBuffer::GetSparseProperties() and check SparseBufferProperties::BlockSize.

SPARSE_RESOURCE_CAP_FLAG_NON_RESIDENT_SAFE 

Reads or writes from unbound memory must not cause device removal. Note that if SPARSE_RESOURCE_CAP_FLAG_NON_RESIDENT_STRICT capability is not present, the result is still undefined even when this capability is reported.

SPARSE_RESOURCE_CAP_FLAG_MIXED_RESOURCE_TYPE_SUPPORT 

Indicates that single device memory object can be used to bind memory for different resource types.

This capability is always enabled in Vulkan when sparse resources feature is enabled.

In Direct3D12, this capability is enabled on D3D12_RESOURCE_HEAP_TIER_2 hardware and above. If this capability is not reported, the device is D3D12_RESOURCE_HEAP_TIER_1 hardware, which requires that one memory object is only used to allocate resources from one of the following categories:

  • Buffers
  • Non-render target & non-depth stencil textures
  • Render target or depth stencil textures

The engine automatically selects the required category based on the list of compatible resources. Binding a resource from different category will result in an undefined behavior.

Note that sharing the same memory block between buffers and textures is never allowed.

◆ SPARSE_TEXTURE_FLAGS

Describes the sparse texture packing mode.

Enumerator
SPARSE_TEXTURE_FLAG_NONE 

No special packing mode is used.

SPARSE_TEXTURE_FLAG_SINGLE_MIPTAIL 

Specifies that the texture uses a single mip tail region for all array layers.

SPARSE_TEXTURE_FLAG_ALIGNED_MIP_SIZE 

Specifies that the first mip level whose dimensions are not integer multiples of the corresponding dimensions of the sparse texture tile begins the mip tail region.

SPARSE_TEXTURE_FLAG_NONSTANDARD_BLOCK_SIZE 

Specifies that the texture uses non-standard sparse texture tile dimensions, and the TileSize values do not match the standard sparse texture tile dimensions.

◆ STATE_TRANSITION_FLAGS

Resource state transition flags.

Enumerator
STATE_TRANSITION_FLAG_NONE 

No flags.

STATE_TRANSITION_FLAG_UPDATE_STATE 

Indicates that the internal resource state should be updated to the new state specified by StateTransitionDesc, and the engine should take over the resource state management. If an application was managing the resource state manually, it is responsible for making sure that all subresources are indeed in the designated state. If not used, internal resource state will be unchanged.

Note
This flag cannot be used when StateTransitionDesc.TransitionType is Diligent::STATE_TRANSITION_TYPE_BEGIN.
STATE_TRANSITION_FLAG_DISCARD_CONTENT 

If set, the contents of the resource will be discarded, when possible. This may avoid potentially expensive operations such as render target decompression or a pipeline stall when transitioning to COMMON or UAV state.

STATE_TRANSITION_FLAG_ALIASING 

Indicates state transition between aliased resources that share the same memory. Currently it is only supported for sparse resources that were created with aliasing flag.

◆ STATE_TRANSITION_TYPE

State transition barrier type.

Enumerator
STATE_TRANSITION_TYPE_IMMEDIATE 

Perform state transition immediately.

STATE_TRANSITION_TYPE_BEGIN 

Begin split barrier. This mode only has effect in Direct3D12 backend, and corresponds to D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY flag. See https://docs.microsoft.com/en-us/windows/desktop/direct3d12/using-resource-barriers-to-synchronize-resource-states-in-direct3d-12#split-barriers. In other backends, begin-split barriers are ignored.

STATE_TRANSITION_TYPE_END 

End split barrier. This mode only has effect in Direct3D12 backend, and corresponds to D3D12_RESOURCE_BARRIER_FLAG_END_ONLY flag. See https://docs.microsoft.com/en-us/windows/desktop/direct3d12/using-resource-barriers-to-synchronize-resource-states-in-direct3d-12#split-barriers. In other backends, this mode is similar to STATE_TRANSITION_TYPE_IMMEDIATE.

◆ STENCIL_OP

Stencil operation.

This enumeration describes the stencil operation and generally mirrors D3D11_STENCIL_OP/D3D12_STENCIL_OP enumeration. It is used by Diligent::StencilOpDesc structure to describe the stencil fail, depth fail and stencil pass operations

Enumerator
STENCIL_OP_UNDEFINED 

Undefined operation.

STENCIL_OP_KEEP 

Keep the existing stencil data.
Direct3D counterpart: D3D11_STENCIL_OP_KEEP/D3D12_STENCIL_OP_KEEP. OpenGL counterpart: GL_KEEP.

STENCIL_OP_ZERO 

Set the stencil data to 0.
Direct3D counterpart: D3D11_STENCIL_OP_ZERO/D3D12_STENCIL_OP_ZERO. OpenGL counterpart: GL_ZERO.

STENCIL_OP_REPLACE 

Set the stencil data to the reference value set by calling IDeviceContext::SetStencilRef().
Direct3D counterpart: D3D11_STENCIL_OP_REPLACE/D3D12_STENCIL_OP_REPLACE. OpenGL counterpart: GL_REPLACE.

STENCIL_OP_INCR_SAT 

Increment the current stencil value, and clamp to the maximum representable unsigned value.
Direct3D counterpart: D3D11_STENCIL_OP_INCR_SAT/D3D12_STENCIL_OP_INCR_SAT. OpenGL counterpart: GL_INCR.

STENCIL_OP_DECR_SAT 

Decrement the current stencil value, and clamp to 0.
Direct3D counterpart: D3D11_STENCIL_OP_DECR_SAT/D3D12_STENCIL_OP_DECR_SAT. OpenGL counterpart: GL_DECR.

STENCIL_OP_INVERT 

Bitwise invert the current stencil buffer value.
Direct3D counterpart: D3D11_STENCIL_OP_INVERT/D3D12_STENCIL_OP_INVERT. OpenGL counterpart: GL_INVERT.

STENCIL_OP_INCR_WRAP 

Increment the current stencil value, and wrap the value to zero when incrementing the maximum representable unsigned value.
Direct3D counterpart: D3D11_STENCIL_OP_INCR/D3D12_STENCIL_OP_INCR. OpenGL counterpart: GL_INCR_WRAP.

STENCIL_OP_DECR_WRAP 

Decrement the current stencil value, and wrap the value to the maximum representable unsigned value when decrementing a value of zero.
Direct3D counterpart: D3D11_STENCIL_OP_DECR/D3D12_STENCIL_OP_DECR. OpenGL counterpart: GL_DECR_WRAP.

STENCIL_OP_NUM_OPS 

Helper value that stores the total number of stencil operations in the enumeration.

◆ SURFACE_TRANSFORM

The transform applied to the image content prior to presentation.

Enumerator
SURFACE_TRANSFORM_OPTIMAL 

Uset the most optimal surface transform.

SURFACE_TRANSFORM_IDENTITY 

The image content is presented without being transformed.

SURFACE_TRANSFORM_ROTATE_90 

The image content is rotated 90 degrees clockwise.

SURFACE_TRANSFORM_ROTATE_180 

The image content is rotated 180 degrees clockwise.

SURFACE_TRANSFORM_ROTATE_270 

The image content is rotated 270 degrees clockwise.

SURFACE_TRANSFORM_HORIZONTAL_MIRROR 

The image content is mirrored horizontally.

SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90 

The image content is mirrored horizontally, then rotated 90 degrees clockwise.

SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180 

The image content is mirrored horizontally, then rotated 180 degrees clockwise.

SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270 

The image content is mirrored horizontally, then rotated 270 degrees clockwise.

◆ SWAP_CHAIN_USAGE_FLAGS

Defines allowed swap chain usage flags.

Enumerator
SWAP_CHAIN_USAGE_NONE 

No allowed usage.

SWAP_CHAIN_USAGE_RENDER_TARGET 

Swap chain images can be used as render target outputs.

SWAP_CHAIN_USAGE_SHADER_RESOURCE 

Swap chain images can be used as shader resources.

SWAP_CHAIN_USAGE_INPUT_ATTACHMENT 

Swap chain images can be used as input attachments.

SWAP_CHAIN_USAGE_COPY_SOURCE 

Swap chain images can be used as a source of copy operation.

◆ TEXTURE_ADDRESS_MODE

Texture address mode.

Defines a technique for resolving texture coordinates that are outside of the boundaries of a texture. The enumeration generally mirrors D3D11_TEXTURE_ADDRESS_MODE/D3D12_TEXTURE_ADDRESS_MODE enumeration. It is used by SamplerDesc structure to define the address mode for U,V and W texture coordinates.

Enumerator
TEXTURE_ADDRESS_UNKNOWN 

Unknown mode.

TEXTURE_ADDRESS_WRAP 

Tile the texture at every integer junction.
Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_WRAP/D3D12_TEXTURE_ADDRESS_MODE_WRAP. OpenGL counterpart: GL_REPEAT

TEXTURE_ADDRESS_MIRROR 

Flip the texture at every integer junction.
Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_MIRROR/D3D12_TEXTURE_ADDRESS_MODE_MIRROR. OpenGL counterpart: GL_MIRRORED_REPEAT

TEXTURE_ADDRESS_CLAMP 

Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.
Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_CLAMP/D3D12_TEXTURE_ADDRESS_MODE_CLAMP. OpenGL counterpart: GL_CLAMP_TO_EDGE

TEXTURE_ADDRESS_BORDER 

Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in SamplerDesc structure.
Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_BORDER/D3D12_TEXTURE_ADDRESS_MODE_BORDER. OpenGL counterpart: GL_CLAMP_TO_BORDER

TEXTURE_ADDRESS_MIRROR_ONCE 

Similar to TEXTURE_ADDRESS_MIRROR and TEXTURE_ADDRESS_CLAMP. Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.
Direct3D Counterpart: D3D11_TEXTURE_ADDRESS_MIRROR_ONCE/D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE. OpenGL counterpart: GL_MIRROR_CLAMP_TO_EDGE

Note
GL_MIRROR_CLAMP_TO_EDGE is only available in OpenGL4.4+, and is not available until at least OpenGLES3.1
TEXTURE_ADDRESS_NUM_MODES 

Helper value that stores the total number of texture address modes in the enumeration.

◆ TEXTURE_COMPONENT_SWIZZLE

Texture component swizzle.

Enumerator
TEXTURE_COMPONENT_SWIZZLE_IDENTITY 

Identity swizzle (e.g. R->R, G->G, B->B, A->A).

TEXTURE_COMPONENT_SWIZZLE_ZERO 

The component is set to zero.

TEXTURE_COMPONENT_SWIZZLE_ONE 

The component is set to one.

TEXTURE_COMPONENT_SWIZZLE_R 

The component is set to the value of the red channel of the texture.

TEXTURE_COMPONENT_SWIZZLE_G 

The component is set to the value of the green channel of the texture.

TEXTURE_COMPONENT_SWIZZLE_B 

The component is set to the value of the blue channel of the texture.

TEXTURE_COMPONENT_SWIZZLE_A 

The component is set to the value of the alpha channel of the texture.

◆ TEXTURE_FORMAT

Texture formats.

This enumeration describes available texture formats and generally mirrors DXGI_FORMAT enumeration. The table below provides detailed information on each format. Most of the formats are widely supported by all modern APIs (DX10+, OpenGL3.3+ and OpenGLES3.0+). Specific requirements are additionally indicated.

See also
DXGI_FORMAT enumeration on MSDN, OpenGL Texture Formats
Enumerator
TEX_FORMAT_UNKNOWN 

Unknown format.

TEX_FORMAT_RGBA32_TYPELESS 

Four-component 128-bit typeless format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32A32_TYPELESS. OpenGL does not have direct counterpart, GL_RGBA32F is used.

TEX_FORMAT_RGBA32_FLOAT 

Four-component 128-bit floating-point format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32A32_FLOAT. OpenGL counterpart: GL_RGBA32F.

TEX_FORMAT_RGBA32_UINT 

Four-component 128-bit unsigned-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32A32_UINT. OpenGL counterpart: GL_RGBA32UI.

TEX_FORMAT_RGBA32_SINT 

Four-component 128-bit signed-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32A32_SINT. OpenGL counterpart: GL_RGBA32I.

TEX_FORMAT_RGB32_TYPELESS 

Three-component 96-bit typeless format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32_TYPELESS. OpenGL does not have direct counterpart, GL_RGB32F is used.

Warning
This format has weak hardware support and is not recommended
TEX_FORMAT_RGB32_FLOAT 

Three-component 96-bit floating-point format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32_FLOAT. OpenGL counterpart: GL_RGB32F.

Warning
This format has weak hardware support and is not recommended
TEX_FORMAT_RGB32_UINT 

Three-component 96-bit unsigned-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32_UINT. OpenGL counterpart: GL_RGB32UI.

Warning
This format has weak hardware support and is not recommended
TEX_FORMAT_RGB32_SINT 

Three-component 96-bit signed-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32B32_SINT. OpenGL counterpart: GL_RGB32I.

Warning
This format has weak hardware support and is not recommended
TEX_FORMAT_RGBA16_TYPELESS 

Four-component 64-bit typeless format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_TYPELESS. OpenGL does not have direct counterpart, GL_RGBA16F is used.

TEX_FORMAT_RGBA16_FLOAT 

Four-component 64-bit half-precision floating-point format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_FLOAT. OpenGL counterpart: GL_RGBA16F.

TEX_FORMAT_RGBA16_UNORM 

Four-component 64-bit unsigned-normalized-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_UNORM. OpenGL counterpart: GL_RGBA16.
OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_RGBA16_UINT 

Four-component 64-bit unsigned-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_UINT. OpenGL counterpart: GL_RGBA16UI.

TEX_FORMAT_RGBA16_SNORM 

Four-component 64-bit signed-normalized-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_SNORM. OpenGL counterpart: GL_RGBA16_SNORM.
OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_RGBA16_SINT 

Four-component 64-bit signed-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16B16A16_SINT. OpenGL counterpart: GL_RGBA16I.

TEX_FORMAT_RG32_TYPELESS 

Two-component 64-bit typeless format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32_TYPELESS. OpenGL does not have direct counterpart, GL_RG32F is used.

TEX_FORMAT_RG32_FLOAT 

Two-component 64-bit floating-point format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32_FLOAT. OpenGL counterpart: GL_RG32F.

TEX_FORMAT_RG32_UINT 

Two-component 64-bit unsigned-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32_UINT. OpenGL counterpart: GL_RG32UI.

TEX_FORMAT_RG32_SINT 

Two-component 64-bit signed-integer format with 32-bit channels.
D3D counterpart: DXGI_FORMAT_R32G32_SINT. OpenGL counterpart: GL_RG32I.

TEX_FORMAT_R32G8X24_TYPELESS 

Two-component 64-bit typeless format with 32-bits for R channel and 8 bits for G channel.
D3D counterpart: DXGI_FORMAT_R32G8X24_TYPELESS. OpenGL does not have direct counterpart, GL_DEPTH32F_STENCIL8 is used.

TEX_FORMAT_D32_FLOAT_S8X24_UINT 

Two-component 64-bit format with 32-bit floating-point depth channel and 8-bit stencil channel.
D3D counterpart: DXGI_FORMAT_D32_FLOAT_S8X24_UINT. OpenGL counterpart: GL_DEPTH32F_STENCIL8.

TEX_FORMAT_R32_FLOAT_X8X24_TYPELESS 

Two-component 64-bit format with 32-bit floating-point R channel and 8+24-bits of typeless data.
D3D counterpart: DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS. OpenGL does not have direct counterpart, GL_DEPTH32F_STENCIL8 is used.

TEX_FORMAT_X32_TYPELESS_G8X24_UINT 

Two-component 64-bit format with 32-bit typeless data and 8-bit G channel.
D3D counterpart: DXGI_FORMAT_X32_TYPELESS_G8X24_UINT

Warning
This format is currently not implemented in OpenGL
TEX_FORMAT_RGB10A2_TYPELESS 

Four-component 32-bit typeless format with 10 bits for RGB and 2 bits for alpha channel.
D3D counterpart: DXGI_FORMAT_R10G10B10A2_TYPELESS. OpenGL does not have direct counterpart, GL_RGB10_A2 is used.

TEX_FORMAT_RGB10A2_UNORM 

Four-component 32-bit unsigned-normalized-integer format with 10 bits for each color and 2 bits for alpha channel.
D3D counterpart: DXGI_FORMAT_R10G10B10A2_UNORM. OpenGL counterpart: GL_RGB10_A2.

TEX_FORMAT_RGB10A2_UINT 

Four-component 32-bit unsigned-integer format with 10 bits for each color and 2 bits for alpha channel.
D3D counterpart: DXGI_FORMAT_R10G10B10A2_UINT. OpenGL counterpart: GL_RGB10_A2UI.

TEX_FORMAT_R11G11B10_FLOAT 

Three-component 32-bit format encoding three partial precision channels using 11 bits for red and green and 10 bits for blue channel.
D3D counterpart: DXGI_FORMAT_R11G11B10_FLOAT. OpenGL counterpart: GL_R11F_G11F_B10F.

TEX_FORMAT_RGBA8_TYPELESS 

Four-component 32-bit typeless format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_TYPELESS. OpenGL does not have direct counterpart, GL_RGBA8 is used.

TEX_FORMAT_RGBA8_UNORM 

Four-component 32-bit unsigned-normalized-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_UNORM. OpenGL counterpart: GL_RGBA8.

TEX_FORMAT_RGBA8_UNORM_SRGB 

Four-component 32-bit unsigned-normalized-integer sRGB format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_UNORM_SRGB. OpenGL counterpart: GL_SRGB8_ALPHA8.

TEX_FORMAT_RGBA8_UINT 

Four-component 32-bit unsigned-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_UINT. OpenGL counterpart: GL_RGBA8UI.

TEX_FORMAT_RGBA8_SNORM 

Four-component 32-bit signed-normalized-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_SNORM. OpenGL counterpart: GL_RGBA8_SNORM.

TEX_FORMAT_RGBA8_SINT 

Four-component 32-bit signed-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8B8A8_SINT. OpenGL counterpart: GL_RGBA8I.

TEX_FORMAT_RG16_TYPELESS 

Two-component 32-bit typeless format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_TYPELESS. OpenGL does not have direct counterpart, GL_RG16F is used.

TEX_FORMAT_RG16_FLOAT 

Two-component 32-bit half-precision floating-point format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_FLOAT. OpenGL counterpart: GL_RG16F.

TEX_FORMAT_RG16_UNORM 

Two-component 32-bit unsigned-normalized-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_UNORM. OpenGL counterpart: GL_RG16.
OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_RG16_UINT 

Two-component 32-bit unsigned-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_UINT. OpenGL counterpart: GL_RG16UI.

TEX_FORMAT_RG16_SNORM 

Two-component 32-bit signed-normalized-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_SNORM. OpenGL counterpart: GL_RG16_SNORM.
OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_RG16_SINT 

Two-component 32-bit signed-integer format with 16-bit channels.
D3D counterpart: DXGI_FORMAT_R16G16_SINT. OpenGL counterpart: GL_RG16I.

TEX_FORMAT_R32_TYPELESS 

Single-component 32-bit typeless format.
D3D counterpart: DXGI_FORMAT_R32_TYPELESS. OpenGL does not have direct counterpart, GL_R32F is used.

TEX_FORMAT_D32_FLOAT 

Single-component 32-bit floating-point depth format.
D3D counterpart: DXGI_FORMAT_D32_FLOAT. OpenGL counterpart: GL_DEPTH_COMPONENT32F.

TEX_FORMAT_R32_FLOAT 

Single-component 32-bit floating-point format.
D3D counterpart: DXGI_FORMAT_R32_FLOAT. OpenGL counterpart: GL_R32F.

TEX_FORMAT_R32_UINT 

Single-component 32-bit unsigned-integer format.
D3D counterpart: DXGI_FORMAT_R32_UINT. OpenGL counterpart: GL_R32UI.

TEX_FORMAT_R32_SINT 

Single-component 32-bit signed-integer format.
D3D counterpart: DXGI_FORMAT_R32_SINT. OpenGL counterpart: GL_R32I.

TEX_FORMAT_R24G8_TYPELESS 

Two-component 32-bit typeless format with 24 bits for R and 8 bits for G channel.
D3D counterpart: DXGI_FORMAT_R24G8_TYPELESS. OpenGL does not have direct counterpart, GL_DEPTH24_STENCIL8 is used.

TEX_FORMAT_D24_UNORM_S8_UINT 

Two-component 32-bit format with 24 bits for unsigned-normalized-integer depth and 8 bits for stencil.
D3D counterpart: DXGI_FORMAT_D24_UNORM_S8_UINT. OpenGL counterpart: GL_DEPTH24_STENCIL8.

TEX_FORMAT_R24_UNORM_X8_TYPELESS 

Two-component 32-bit format with 24 bits for unsigned-normalized-integer data and 8 bits of unreferenced data.
D3D counterpart: DXGI_FORMAT_R24_UNORM_X8_TYPELESS. OpenGL does not have direct counterpart, GL_DEPTH24_STENCIL8 is used.

TEX_FORMAT_X24_TYPELESS_G8_UINT 

Two-component 32-bit format with 24 bits of unreferenced data and 8 bits of unsigned-integer data.
D3D counterpart: DXGI_FORMAT_X24_TYPELESS_G8_UINT

Warning
This format is currently not implemented in OpenGL
TEX_FORMAT_RG8_TYPELESS 

Two-component 16-bit typeless format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8_TYPELESS. OpenGL does not have direct counterpart, GL_RG8 is used.

TEX_FORMAT_RG8_UNORM 

Two-component 16-bit unsigned-normalized-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8_UNORM. OpenGL counterpart: GL_RG8.

TEX_FORMAT_RG8_UINT 

Two-component 16-bit unsigned-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8_UINT. OpenGL counterpart: GL_RG8UI.

TEX_FORMAT_RG8_SNORM 

Two-component 16-bit signed-normalized-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8_SNORM. OpenGL counterpart: GL_RG8_SNORM.

TEX_FORMAT_RG8_SINT 

Two-component 16-bit signed-integer format with 8-bit channels.
D3D counterpart: DXGI_FORMAT_R8G8_SINT. OpenGL counterpart: GL_RG8I.

TEX_FORMAT_R16_TYPELESS 

Single-component 16-bit typeless format.
D3D counterpart: DXGI_FORMAT_R16_TYPELESS. OpenGL does not have direct counterpart, GL_R16F is used.

TEX_FORMAT_R16_FLOAT 

Single-component 16-bit half-precision floating-point format.
D3D counterpart: DXGI_FORMAT_R16_FLOAT. OpenGL counterpart: GL_R16F.

TEX_FORMAT_D16_UNORM 

Single-component 16-bit unsigned-normalized-integer depth format.
D3D counterpart: DXGI_FORMAT_D16_UNORM. OpenGL counterpart: GL_DEPTH_COMPONENT16.

TEX_FORMAT_R16_UNORM 

Single-component 16-bit unsigned-normalized-integer format.
D3D counterpart: DXGI_FORMAT_R16_UNORM. OpenGL counterpart: GL_R16.

OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_R16_UINT 

Single-component 16-bit unsigned-integer format.
D3D counterpart: DXGI_FORMAT_R16_UINT. OpenGL counterpart: GL_R16UI.

TEX_FORMAT_R16_SNORM 

Single-component 16-bit signed-normalized-integer format.
D3D counterpart: DXGI_FORMAT_R16_SNORM. OpenGL counterpart: GL_R16_SNORM.
OpenGLES: GL_EXT_texture_norm16 extension is required

TEX_FORMAT_R16_SINT 

Single-component 16-bit signed-integer format.
D3D counterpart: DXGI_FORMAT_R16_SINT. OpenGL counterpart: GL_R16I.

TEX_FORMAT_R8_TYPELESS 

Single-component 8-bit typeless format.
D3D counterpart: DXGI_FORMAT_R8_TYPELESS. OpenGL does not have direct counterpart, GL_R8 is used.

TEX_FORMAT_R8_UNORM 

Single-component 8-bit unsigned-normalized-integer format.
D3D counterpart: DXGI_FORMAT_R8_UNORM. OpenGL counterpart: GL_R8.

TEX_FORMAT_R8_UINT 

Single-component 8-bit unsigned-integer format.
D3D counterpart: DXGI_FORMAT_R8_UINT. OpenGL counterpart: GL_R8UI.

TEX_FORMAT_R8_SNORM 

Single-component 8-bit signed-normalized-integer format.
D3D counterpart: DXGI_FORMAT_R8_SNORM. OpenGL counterpart: GL_R8_SNORM.

TEX_FORMAT_R8_SINT 

Single-component 8-bit signed-integer format.
D3D counterpart: DXGI_FORMAT_R8_SINT. OpenGL counterpart: GL_R8I.

TEX_FORMAT_A8_UNORM 

Single-component 8-bit unsigned-normalized-integer format for alpha only.
D3D counterpart: DXGI_FORMAT_A8_UNORM

Warning
This format is not available in OpenGL
TEX_FORMAT_R1_UNORM 

Single-component 1-bit format.
D3D counterpart: DXGI_FORMAT_R1_UNORM

Warning
This format is not available in OpenGL
TEX_FORMAT_RGB9E5_SHAREDEXP 

Three partial-precision floating pointer numbers sharing single exponent encoded into a 32-bit value.
D3D counterpart: DXGI_FORMAT_R9G9B9E5_SHAREDEXP. OpenGL counterpart: GL_RGB9_E5.

TEX_FORMAT_RG8_B8G8_UNORM 

Four-component unsigned-normalized integer format analogous to UYVY encoding.
D3D counterpart: DXGI_FORMAT_R8G8_B8G8_UNORM

Warning
This format is not available in OpenGL
TEX_FORMAT_G8R8_G8B8_UNORM 

Four-component unsigned-normalized integer format analogous to YUY2 encoding.
D3D counterpart: DXGI_FORMAT_G8R8_G8B8_UNORM

Warning
This format is not available in OpenGL
TEX_FORMAT_BC1_TYPELESS 

Four-component typeless block-compression format with 1:8 compression ratio.
D3D counterpart: DXGI_FORMAT_BC1_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RGB_S3TC_DXT1_EXT is used.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC1 on MSDN , DXT1 on OpenGL.org
TEX_FORMAT_BC1_UNORM 

Four-component unsigned-normalized-integer block-compression format with 5 bits for R, 6 bits for G, 5 bits for B, and 0 or 1 bit for A channel. The pixel data is encoded using 8 bytes per 4x4 block (4 bits per pixel) providing 1:8 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC1_UNORM. OpenGL counterpart: GL_COMPRESSED_RGB_S3TC_DXT1_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC1 on MSDN , DXT1 on OpenGL.org
TEX_FORMAT_BC1_UNORM_SRGB 

Four-component unsigned-normalized-integer block-compression sRGB format with 5 bits for R, 6 bits for G, 5 bits for B, and 0 or 1 bit for A channel.
The pixel data is encoded using 8 bytes per 4x4 block (4 bits per pixel) providing 1:8 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC1_UNORM_SRGB. OpenGL counterpart: GL_COMPRESSED_SRGB_S3TC_DXT1_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC1 on MSDN , DXT1 on OpenGL.org
TEX_FORMAT_BC2_TYPELESS 

Four component typeless block-compression format with 1:4 compression ratio.
D3D counterpart: DXGI_FORMAT_BC2_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT is used.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC2 on MSDN , DXT3 on OpenGL.org
TEX_FORMAT_BC2_UNORM 

Four-component unsigned-normalized-integer block-compression format with 5 bits for R, 6 bits for G, 5 bits for B, and 4 bits for low-coherent separate A channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:4 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC2_UNORM. OpenGL counterpart: GL_COMPRESSED_RGBA_S3TC_DXT3_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC2 on MSDN , DXT3 on OpenGL.org
TEX_FORMAT_BC2_UNORM_SRGB 

Four-component signed-normalized-integer block-compression sRGB format with 5 bits for R, 6 bits for G, 5 bits for B, and 4 bits for low-coherent separate A channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:4 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC2_UNORM_SRGB. OpenGL counterpart: GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC2 on MSDN , DXT3 on OpenGL.org
TEX_FORMAT_BC3_TYPELESS 

Four-component typeless block-compression format with 1:4 compression ratio.
D3D counterpart: DXGI_FORMAT_BC3_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT is used.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC3 on MSDN , DXT5 on OpenGL.org
TEX_FORMAT_BC3_UNORM 

Four-component unsigned-normalized-integer block-compression format with 5 bits for R, 6 bits for G, 5 bits for B, and 8 bits for highly-coherent A channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:4 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC3_UNORM. OpenGL counterpart: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC3 on MSDN , DXT5 on OpenGL.org
TEX_FORMAT_BC3_UNORM_SRGB 

Four-component unsigned-normalized-integer block-compression sRGB format with 5 bits for R, 6 bits for G, 5 bits for B, and 8 bits for highly-coherent A channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:4 compression ratio against RGBA8 format.
D3D counterpart: DXGI_FORMAT_BC3_UNORM_SRGB. OpenGL counterpart: GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT.
OpenGL & OpenGLES: GL_EXT_texture_compression_s3tc extension is required

See also
BC3 on MSDN , DXT5 on OpenGL.org
TEX_FORMAT_BC4_TYPELESS 

One-component typeless block-compression format with 1:2 compression ratio.
D3D counterpart: DXGI_FORMAT_BC4_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RED_RGTC1 is used.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC4 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_BC4_UNORM 

One-component unsigned-normalized-integer block-compression format with 8 bits for R channel. The pixel data is encoded using 8 bytes per 4x4 block (4 bits per pixel) providing 1:2 compression ratio against R8 format.
D3D counterpart: DXGI_FORMAT_BC4_UNORM. OpenGL counterpart: GL_COMPRESSED_RED_RGTC1.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC4 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_BC4_SNORM 

One-component signed-normalized-integer block-compression format with 8 bits for R channel. The pixel data is encoded using 8 bytes per 4x4 block (4 bits per pixel) providing 1:2 compression ratio against R8 format.
D3D counterpart: DXGI_FORMAT_BC4_SNORM. OpenGL counterpart: GL_COMPRESSED_SIGNED_RED_RGTC1.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC4 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_BC5_TYPELESS 

Two-component typeless block-compression format with 1:2 compression ratio.
D3D counterpart: DXGI_FORMAT_BC5_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RG_RGTC2 is used.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC5 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_BC5_UNORM 

Two-component unsigned-normalized-integer block-compression format with 8 bits for R and 8 bits for G channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:2 compression ratio against RG8 format.
D3D counterpart: DXGI_FORMAT_BC5_UNORM. OpenGL counterpart: GL_COMPRESSED_RG_RGTC2.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC5 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_BC5_SNORM 

Two-component signed-normalized-integer block-compression format with 8 bits for R and 8 bits for G channel. The pixel data is encoded using 16 bytes per 4x4 block (8 bits per pixel) providing 1:2 compression ratio against RG8 format.
D3D counterpart: DXGI_FORMAT_BC5_SNORM. OpenGL counterpart: GL_COMPRESSED_SIGNED_RG_RGTC2.
OpenGL & OpenGLES: GL_ARB_texture_compression_rgtc extension is required

See also
BC5 on MSDN , Compressed formats on OpenGL.org
TEX_FORMAT_B5G6R5_UNORM 

Three-component 16-bit unsigned-normalized-integer format with 5 bits for blue, 6 bits for green, and 5 bits for red channel.
D3D counterpart: DXGI_FORMAT_B5G6R5_UNORM

Warning
This format is not available until D3D11.1 and Windows 8. It is also not available in OpenGL
TEX_FORMAT_B5G5R5A1_UNORM 

Four-component 16-bit unsigned-normalized-integer format with 5 bits for each color channel and 1-bit alpha.
D3D counterpart: DXGI_FORMAT_B5G5R5A1_UNORM

Warning
This format is not available until D3D11.1 and Windows 8. It is also not available in OpenGL
TEX_FORMAT_BGRA8_UNORM 

Four-component 32-bit unsigned-normalized-integer format with 8 bits for each channel.
D3D counterpart: DXGI_FORMAT_B8G8R8A8_UNORM.

Warning
This format is not available in OpenGL
TEX_FORMAT_BGRX8_UNORM 

Four-component 32-bit unsigned-normalized-integer format with 8 bits for each color channel and 8 bits unused.
D3D counterpart: DXGI_FORMAT_B8G8R8X8_UNORM.

Warning
This format is not available in OpenGL
TEX_FORMAT_R10G10B10_XR_BIAS_A2_UNORM 

Four-component 32-bit 2.8-biased fixed-point format with 10 bits for each color channel and 2-bit alpha.
D3D counterpart: DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM.

Warning
This format is not available in OpenGL
TEX_FORMAT_BGRA8_TYPELESS 

Four-component 32-bit typeless format with 8 bits for each channel.
D3D counterpart: DXGI_FORMAT_B8G8R8A8_TYPELESS.

Warning
This format is not available in OpenGL
TEX_FORMAT_BGRA8_UNORM_SRGB 

Four-component 32-bit unsigned-normalized sRGB format with 8 bits for each channel.
D3D counterpart: DXGI_FORMAT_B8G8R8A8_UNORM_SRGB.

Warning
This format is not available in OpenGL.
TEX_FORMAT_BGRX8_TYPELESS 

Four-component 32-bit typeless format that with 8 bits for each color channel, and 8 bits are unused.
D3D counterpart: DXGI_FORMAT_B8G8R8X8_TYPELESS.

Warning
This format is not available in OpenGL.
TEX_FORMAT_BGRX8_UNORM_SRGB 

Four-component 32-bit unsigned-normalized sRGB format with 8 bits for each color channel, and 8 bits are unused.
D3D counterpart: DXGI_FORMAT_B8G8R8X8_UNORM_SRGB.

Warning
This format is not available in OpenGL.
TEX_FORMAT_BC6H_TYPELESS 

Three-component typeless block-compression format.
D3D counterpart: DXGI_FORMAT_BC6H_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT is used.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC6H on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_BC6H_UF16 

Three-component unsigned half-precision floating-point format with 16 bits for each channel.
D3D counterpart: DXGI_FORMAT_BC6H_UF16. OpenGL counterpart: GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC6H on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_BC6H_SF16 

Three-channel signed half-precision floating-point format with 16 bits per each channel.
D3D counterpart: DXGI_FORMAT_BC6H_SF16. OpenGL counterpart: GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC6H on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_BC7_TYPELESS 

Three-component typeless block-compression format.
D3D counterpart: DXGI_FORMAT_BC7_TYPELESS. OpenGL does not have direct counterpart, GL_COMPRESSED_RGBA_BPTC_UNORM is used.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC7 on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_BC7_UNORM 

Three-component block-compression unsigned-normalized-integer format with 4 to 7 bits per color channel and 0 to 8 bits of alpha.
D3D counterpart: DXGI_FORMAT_BC7_UNORM. OpenGL counterpart: GL_COMPRESSED_RGBA_BPTC_UNORM.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC7 on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_BC7_UNORM_SRGB 

Three-component block-compression unsigned-normalized-integer sRGB format with 4 to 7 bits per color channel and 0 to 8 bits of alpha.
D3D counterpart: DXGI_FORMAT_BC7_UNORM_SRGB. OpenGL counterpart: GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM.
OpenGL: GL_ARB_texture_compression_bptc extension is required. Not supported in at least OpenGLES3.1

See also
BC7 on MSDN , BPTC Texture Compression on OpenGL.org
TEX_FORMAT_ETC2_RGB8_UNORM 

Three-component block-compression unsigned-normalized-integer format.
OpenGL counterpart: GL_COMPRESSED_RGB8_ETC2.

TEX_FORMAT_ETC2_RGB8_UNORM_SRGB 

Three-component block-compression unsigned-normalized-integer sRGB format.
OpenGL counterpart: GL_COMPRESSED_SRGB8_ETC2.

TEX_FORMAT_ETC2_RGB8A1_UNORM 

Four-component block-compression unsigned-normalized-integer format.
OpenGL counterpart: GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2.

TEX_FORMAT_ETC2_RGB8A1_UNORM_SRGB 

Four-component block-compression unsigned-normalized-integer sRGB format.
OpenGL counterpart: GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2.

TEX_FORMAT_ETC2_RGBA8_UNORM 

Four-component block-compression unsigned-normalized-integer format.
OpenGL counterpart: GL_COMPRESSED_RGBA8_ETC2_EAC.

TEX_FORMAT_ETC2_RGBA8_UNORM_SRGB 

Four-component block-compression unsigned-normalized-integer sRGB format.
OpenGL counterpart: GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC.

TEX_FORMAT_NUM_FORMATS 

Helper member containing the total number of texture formats in the enumeration.

◆ TEXTURE_LOAD_COMPRESS_MODE

Texture compression mode.

Enumerator
TEXTURE_LOAD_COMPRESS_MODE_NONE 

Do not compress the texture.

TEXTURE_LOAD_COMPRESS_MODE_BC 

Compress the texture using BC compression.

The BC texture format is selected based on the number of channels in the source image:

  • R8 -> BC4_UNORM
  • RG8 -> BC5_UNORM
  • RGB8 -> BC1_UNORM / BC1_UNORM_SRGB
  • RGBA8 -> BC3_UNORM / BC3_UNORM_SRGB
TEXTURE_LOAD_COMPRESS_MODE_BC_HIGH_QUAL 

Compress the texture using high-quality BC compression.

This mode is similar to TEXTURE_LOAD_COMPRESS_MODE_BC, but uses higher quality settings that result in better image quality at the cost of 30%-40% longer compression time.

◆ TEXTURE_LOAD_MIP_FILTER

Coarse mip filter type.

Enumerator
TEXTURE_LOAD_MIP_FILTER_DEFAULT 

Default filter type: BOX_AVERAGE for UNORM/SNORM and FP formats, and MOST_FREQUENT for UINT/SINT formats.

TEXTURE_LOAD_MIP_FILTER_BOX_AVERAGE 

2x2 box average.

TEXTURE_LOAD_MIP_FILTER_MOST_FREQUENT 

Use the most frequent element from the 2x2 box. This filter does not introduce new values and should be used for integer textures that contain non-filterable data (e.g. indices).

◆ TEXTURE_VIEW_FLAGS

Texture view flags.

Enumerator
TEXTURE_VIEW_FLAG_NONE 

No flags.

TEXTURE_VIEW_FLAG_ALLOW_MIP_MAP_GENERATION 

Allow automatic mipmap generation for this view. This flag is only allowed for TEXTURE_VIEW_SHADER_RESOURCE view type. The texture must be created with MISC_TEXTURE_FLAG_GENERATE_MIPS flag.

◆ TEXTURE_VIEW_TYPE

Texture view type.

This enumeration describes allowed view types for a texture view. It is used by TextureViewDesc structure.

Enumerator
TEXTURE_VIEW_UNDEFINED 

Undefined view type.

TEXTURE_VIEW_SHADER_RESOURCE 

A texture view will define a shader resource view that will be used as the source for the shader read operations

TEXTURE_VIEW_RENDER_TARGET 

A texture view will define a render target view that will be used as the target for rendering operations

TEXTURE_VIEW_DEPTH_STENCIL 

A texture view will define a depth stencil view that will be used as the target for rendering operations

TEXTURE_VIEW_READ_ONLY_DEPTH_STENCIL 

A texture view will define a read-only depth stencil view that will be used as depth stencil source for rendering operations, but can also be simultaneously read from shaders.

TEXTURE_VIEW_UNORDERED_ACCESS 

A texture view will define an unordered access view that will be used for unordered read/write operations from the shaders

TEXTURE_VIEW_SHADING_RATE 

A texture view will define a variable shading rate view that will be used as the shading rate source for rendering operations

TEXTURE_VIEW_NUM_VIEWS 

Helper value that stores that total number of texture views.

◆ TRIANGULATE_POLYGON_RESULT

Triangulation result flags returned by the polygon triangulator.

Enumerator
TRIANGULATE_POLYGON_RESULT_OK 

The polygon was triangulated successfully.

TRIANGULATE_POLYGON_RESULT_TOO_FEW_VERTS 

The polygon contains less than three vertices.

TRIANGULATE_POLYGON_RESULT_VERTS_COLLINEAR 

All polygon vertices are collinear.

TRIANGULATE_POLYGON_RESULT_INVALID_CONVEX 

Convex vertex is not outside of the polygon.

Note
This flag may be set due to floating point imprecision if there are (almost) collinear vertices.
TRIANGULATE_POLYGON_RESULT_INVALID_EAR 

Ear vertex is not outside of the polygon.

Note
This flag may be set due to floating point imprecision if there are (almost) collinear vertices.
TRIANGULATE_POLYGON_RESULT_NO_EAR_FOUND 

No ear vertex was found at one of the steps.

◆ UAV_ACCESS_FLAG

Describes allowed unordered access view mode.

Enumerator
UAV_ACCESS_UNSPECIFIED 

Access mode is unspecified.

UAV_ACCESS_FLAG_READ 

Allow read operations on the UAV.

UAV_ACCESS_FLAG_WRITE 

Allow write operations on the UAV.

UAV_ACCESS_FLAG_READ_WRITE 

Allow read and write operations on the UAV.

◆ USAGE

Resource usage.

This enumeration describes expected resource usage. It generally mirrors D3D11_USAGE enumeration. The enumeration is used by

Enumerator
USAGE_IMMUTABLE 

A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.
D3D11 Counterpart: D3D11_USAGE_IMMUTABLE. OpenGL counterpart: GL_STATIC_DRAW

Remarks
Static buffers do not allow CPU access and must use CPU_ACCESS_NONE flag.
USAGE_DEFAULT 

A resource that requires read and write access by the GPU and can also be occasionally written by the CPU.
D3D11 Counterpart: D3D11_USAGE_DEFAULT. OpenGL counterpart: GL_DYNAMIC_DRAW.

Remarks
Default buffers do not allow CPU access and must use CPU_ACCESS_NONE flag.
USAGE_DYNAMIC 

A resource that can be read by the GPU and written at least once per frame by the CPU.
D3D11 Counterpart: D3D11_USAGE_DYNAMIC. OpenGL counterpart: GL_STREAM_DRAW

Remarks
Dynamic buffers must use CPU_ACCESS_WRITE flag.
USAGE_STAGING 

A resource that facilitates transferring data between GPU and CPU.
D3D11 Counterpart: D3D11_USAGE_STAGING. OpenGL counterpart: GL_STATIC_READ or GL_STATIC_COPY depending on the CPU access flags.

Remarks
Staging buffers must use exactly one of CPU_ACCESS_WRITE or CPU_ACCESS_READ flags.
USAGE_UNIFIED 

A resource residing in a unified memory (e.g. memory shared between CPU and GPU), that can be read and written by GPU and can also be directly accessed by CPU.

An application should check if unified memory is available on the device by querying the adapter info (see Diligent::IRenderDevice::GetAdapterInfo().Memory and Diligent::AdapterMemoryInfo). If there is no unified memory, an application should choose another usage type (typically, USAGE_DEFAULT).

Unified resources must use at least one of CPU_ACCESS_WRITE or CPU_ACCESS_READ flags. An application should check supported unified memory CPU access types by querying the device caps. (see Diligent::AdapterMemoryInfo::UnifiedMemoryCPUAccess).

USAGE_SPARSE 

A resource that can be partially committed to physical memory.

USAGE_NUM_USAGES 

Helper value indicating the total number of elements in the enum.

◆ VALIDATION_FLAGS

Common validation options.

Enumerator
VALIDATION_FLAG_NONE 

Extra validation is disabled.

VALIDATION_FLAG_CHECK_SHADER_BUFFER_SIZE 

Verify that constant or structured buffer size is not smaller than what is expected by the shader.

This flag only has effect in Debug/Development builds. This type of validation is never performed in Release builds.

This option is currently supported by Vulkan backend only.

◆ VALIDATION_LEVEL

Common validation levels that translate to specific settings for different backends.

Enumerator
VALIDATION_LEVEL_DISABLED 

Validation is disabled.

VALIDATION_LEVEL_1 

Standard validation options are enabled.

VALIDATION_LEVEL_2 

All validation options are enabled. Note that enabling this level may add a significant overhead.

◆ VALUE_TYPE

Value type.

This enumeration describes value type. It is used by

  • BufferDesc structure to describe value type of a formatted buffer
  • DrawAttribs structure to describe index type for an indexed draw call
Enumerator
VT_UNDEFINED 

Undefined type.

VT_INT8 

Signed 8-bit integer.

VT_INT16 

Signed 16-bit integer.

VT_INT32 

Signed 32-bit integer.

VT_UINT8 

Unsigned 8-bit integer.

VT_UINT16 

Unsigned 16-bit integer.

VT_UINT32 

Unsigned 32-bit integer.

VT_FLOAT16 

Half-precision 16-bit floating point.

VT_FLOAT32 

Full-precision 32-bit floating point.

VT_FLOAT64 

Double-precision 64-bit floating point.

VT_NUM_TYPES 

Helper value storing total number of types in the enumeration.

◆ VERIFY_SBT_FLAGS

Defines shader binding table validation flags, see IShaderBindingTable::Verify().

Enumerator
VERIFY_SBT_FLAG_SHADER_ONLY 

Check that all shaders are bound or inactive.

VERIFY_SBT_FLAG_SHADER_RECORD 

Check that shader record data are initialized.

VERIFY_SBT_FLAG_TLAS 

Check that all TLASes that were used in the SBT are alive and shader binding indices have not changed.

VERIFY_SBT_FLAG_ALL 

Enable all validations.

◆ WAVE_FEATURE

Describes the wave feature types.

In Vulkan backend, you should check which features are supported by device. In Direct3D12 backend, all shader model 6.0 wave functions are supported if WaveOp feature is enabled. see https://github.com/DiligentGraphics/DiligentCore/blob/master/doc/WaveOp.md

◆ WEB_GPU_BINDING_TYPE

WebGPU-specific resource binding types.

Enumerator
WEB_GPU_BINDING_TYPE_DEFAULT 

Default resource binding.

WEB_GPU_BINDING_TYPE_FILTERING_SAMPLER 

When resource type is SHADER_RESOURCE_TYPE_SAMPLER, specifies the WebGPU sampler binding type as "filtering". This is the default sampler binding type if WEB_GPU_BINDING_TYPE_DEFAULT is used.

WEB_GPU_BINDING_TYPE_NON_FILTERING_SAMPLER 

When resource type is SHADER_RESOURCE_TYPE_SAMPLER, specifies the WebGPU sampler binding type as "non-filtering".

WEB_GPU_BINDING_TYPE_COMPARISON_SAMPLER 

When resource type is SHADER_RESOURCE_TYPE_SAMPLER, specifies the WebGPU sampler binding type as "comparison".

WEB_GPU_BINDING_TYPE_FLOAT_TEXTURE 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "float". This is the default texture sample type if WEB_GPU_BINDING_TYPE_DEFAULT is used.

WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "unfilterable-float".

WEB_GPU_BINDING_TYPE_DEPTH_TEXTURE 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "depth".

WEB_GPU_BINDING_TYPE_SINT_TEXTURE 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "sint".

WEB_GPU_BINDING_TYPE_UINT_TEXTURE 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "uint".

WEB_GPU_BINDING_TYPE_FLOAT_TEXTURE_MS 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "float" and the texture is multisampled.

WEB_GPU_BINDING_TYPE_UNFILTERABLE_FLOAT_TEXTURE_MS 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "unfilterable-float" and the texture is multisampled.

WEB_GPU_BINDING_TYPE_DEPTH_TEXTURE_MS 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "depth" and the texture is multisampled.

WEB_GPU_BINDING_TYPE_SINT_TEXTURE_MS 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "sint" and the texture is multisampled.

WEB_GPU_BINDING_TYPE_UINT_TEXTURE_MS 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_SRV, specifies the WebGPU texture sample type as "uint" and the texture is multisampled.

WEB_GPU_BINDING_TYPE_WRITE_ONLY_TEXTURE_UAV 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_UAV, specifies the WebGPU storage texture access type as "write-only". This is the default storage texture access type if WEB_GPU_BINDING_TYPE_DEFAULT is used.

WEB_GPU_BINDING_TYPE_READ_ONLY_TEXTURE_UAV 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_UAV, specifies the WebGPU storage texture access type as "read-only".

WEB_GPU_BINDING_TYPE_READ_WRITE_TEXTURE_UAV 

When resource type is SHADER_RESOURCE_TYPE_TEXTURE_UAV, specifies the WebGPU storage texture access type as "read-write".

Function Documentation

◆ AllocateOpenXRSwapchainImageData()

void Diligent::AllocateOpenXRSwapchainImageData ( RENDER_DEVICE_TYPE DeviceType,
Uint32 ImageCount,
IDataBlob ** ppSwapchainImageData )

Allocates OpenXR swapchain image data, i.e. an array of appropriate structures for each device type (XrSwapchainImageVulkanKHR, XrSwapchainImageD3D11KHR, etc.).

Parameters
[in]DeviceType- Type of the render device.
[out]ImageCount- Number of images in the swapchain returned by OpenXR.
[out]ppSwapchainImageData- Address of the memory location where the pointer to the data blob containing the swapchain image data will be stored.

The data blob data pointer should be passed to xrEnumerateSwapchainImages:

uint32_t SwapchainImageCount = 0;
xrEnumerateSwapchainImages(xrSwapchain, 0, &SwapchainImageCount, nullptr);
RefCntAutoPtr<IDataBlob> pSwapchainImageData;
AllocateOpenXRSwapchainImageData(m_DeviceType, SwapchainImageCount, &pSwapchainImageData);
xrEnumerateSwapchainImages(xrSwapchain, SwapchainImageCount, &SwapchainImageCount,
                           pSwapchainImageData->GetDataPtr<XrSwapchainImageBaseHeader>());

◆ AppendLine1Marker()

void Diligent::AppendLine1Marker ( std::string & Source,
const char * FileName )

Appends #line 1 directive to the source string to make sure that the error messages contain correct line numbers.

◆ AppendPlatformDefinition()

void Diligent::AppendPlatformDefinition ( std::string & Source)

Appends platform definition macro, e.g. for Windows:

#define PLATFORM_WIN32 1

◆ AppendShaderMacros()

void Diligent::AppendShaderMacros ( std::string & Source,
const ShaderMacroArray & Macros )

Appends shader macro definitions to the end of the source string:

#define Name[0] Definition[0]
#define Name[1] Definition[1]
... 

◆ AppendShaderSourceLanguageDefinition()

void Diligent::AppendShaderSourceLanguageDefinition ( std::string & Source,
SHADER_SOURCE_LANGUAGE Language )

Appends a special comment that contains the shader source language definition. For example, for HLSL:

/*$SHADER_SOURCE_LANGUAGE=1*&zwj;/ 

◆ AppendShaderTypeDefinitions()

void Diligent::AppendShaderTypeDefinitions ( std::string & Source,
SHADER_TYPE Type )

Appends the shader type definition macro(s), e.g., for a vertex shader:

#define VERTEX_SHADER 1

or, for a fragment shader:

#define FRAGMENT_SHADER 1
#define PIXEL_SHADER 1

etc.

◆ BasisFromDirection()

template<typename T>
bool Diligent::BasisFromDirection ( const Vector3< T > & Dir,
bool IsRightHanded,
Vector3< T > & X,
Vector3< T > & Y,
Vector3< T > & Z )

Constructs an orthonormal basis from the given direction vector.

Parameters
[in]Dir- The direction vector.
[in]IsRightHanded- Flag indicating if the basis should be right-handed.
[out]X- The resulting X basis vector.
[out]Y- The resulting Y basis vector.
[out]Z- The resulting Z basis vector.
Returns
True if the basis was successfully constructed, and false otherwise.

◆ BCFormatToUncompressed()

TEXTURE_FORMAT Diligent::BCFormatToUncompressed ( TEXTURE_FORMAT Fmt)

Converts block-compressed format to a corresponding uncompressed format.

For example:

  • BC1_UNORM -> RGBA8_UNORM
  • BC4_UNORM -> R8_UNORM

◆ CheckBox2DBox2DOverlap()

template<bool AllowTouch, typename T>
bool Diligent::CheckBox2DBox2DOverlap ( const Vector2< T > & Box0Min,
const Vector2< T > & Box0Max,
const Vector2< T > & Box1Min,
const Vector2< T > & Box1Max )

Checks if two 2D-boxes overlap.

Template Parameters
[in]AllowTouch - Whether to consider two boxes overlapping if they only touch at their boundaries or corners.
[in]T - Component type.
Parameters
[in]Box0Min- Min corner of the first box.
[in]Box0Max- Max corner of the first box.
[in]Box1Min- Min corner of the second box.
[in]Box1Max- Max corner of the second box.
Returns
true if the bounding boxes overlap, and false otherwise.

◆ CheckLineSectionOverlap()

template<bool AllowTouch, typename T>
bool Diligent::CheckLineSectionOverlap ( T Min0,
T Max0,
T Min1,
T Max1 )

Checks if two 1D-line sections overlap.

Template Parameters
[in]AllowTouch - Whether to consider two sections overlapping if they only touch at their end points.
[in]T - Component type.
Parameters
[in]Min0- Min end point of the first section
[in]Max0- Max end point of the first section
[in]Min1- Min end point of the second section
[in]Max1- Max end point of the second section
Returns
true if the sections overlap, and false otherwise.

◆ ComponentTypeToValueType()

VALUE_TYPE Diligent::ComponentTypeToValueType ( COMPONENT_TYPE CompType,
Uint32 Size )

Converts component type and size to value type.

For example:

  • COMPONENT_TYPE_UNORM, 1 -> VT_UINT8
  • COMPONENT_TYPE_FLOAT, 4 -> VT_FLOAT32

◆ ComputeImageDifference()

void Diligent::ComputeImageDifference ( const ComputeImageDifferenceAttribs & Attribs,
ImageDiffInfo & ImageDiff )

Computes the difference between two images

Parameters
[in]AttribsImage difference attributes, see Diligent::ComputeImageDifferenceAttribs.
Returns
The image difference information, see Diligent::ImageDiffInfo.

The difference between two pixels is calculated as the maximum of the absolute differences of all channels. The average difference is the average of all differences, not counting pixels that are equal. The root mean square difference is calculated as the square root of the average of the squares of all differences, not counting pixels that are equal.

◆ ComputeTextureAtlasSuballocationAlignment()

Uint32 Diligent::ComputeTextureAtlasSuballocationAlignment ( Uint32 Width,
Uint32 Height,
Uint32 MinAlignment )

Computes the texture atlas suballocation alignment for the region of a given size.

Parameters
[in]Width- Region width.
[in]Height- Region height.
[in]MinAlignment- Minimum required alignment, see DynamicTextureAtlasCreateInfo::MinAlignment.
Returns
- Allocation alignment.

◆ CopyTextureSubresource()

void Diligent::CopyTextureSubresource ( const TextureSubResData & SrcSubres,
Uint32 NumRows,
Uint32 NumDepthSlices,
Uint64 RowSize,
void * pDstData,
Uint64 DstRowStride,
Uint64 DstDepthStride )

Copies texture subresource data on the CPU.

Parameters
[in]SrcSubres- Source subresource data.
[in]NumRows- The number of rows in the subresource.
[in]NumDepthSlices- The number of depth slices in the subresource.
[in]RowSize- Subresource data row size, in bytes.
[in]pDstData- Pointer to the destination subresource data.
[in]DstRowStride- Destination subresource row stride, in bytes.
[in]DstDepthStride- Destination subresource depth stride, in bytes.

◆ CountFloatNumberChars()

size_t Diligent::CountFloatNumberChars ( const char * Str)
inline

Returns the number of characters at the beginning of the string that form a floating point number.

◆ CreateBufferSuballocator()

void Diligent::CreateBufferSuballocator ( IRenderDevice * pDevice,
const BufferSuballocatorCreateInfo & CreateInfo,
IBufferSuballocator ** ppBufferSuballocator )

Creates a new buffer suballocator.

Parameters
[in]pDevice- A pointer to the render device that will be used to initialize the internal buffer object. If this parameter is null, the buffer will be created when Update() is called.
[in]CreateInfo- Suballocator create info, see Diligent::BufferSuballocatorCreateInfo.
[in]ppBufferSuballocator- Memory location where pointer to the buffer suballocator will be stored.

◆ CreateCompoundShaderSourceFactory()

void Diligent::CreateCompoundShaderSourceFactory ( const CompoundShaderSourceFactoryCreateInfo & CreateInfo,
IShaderSourceInputStreamFactory ** ppFactory )

Creates a compound shader source factory.

Parameters
[in]CreateInfo- Compound shader source factory create info, see Diligent::CompoundShaderSourceFactoryCreateInfo.
[out]ppFactory- Address of the memory location where the pointer to the created factory will be written.

Compound shader source stream factory is a wrapper around multiple shader source stream factories. It is used to combine multiple shader source stream factories into a single one. When a source file is requested, the factory will iterate over all factories in the array and return the first one that returns a non-null stream.

The factory also allows substituting source file names. This is useful when the same shader source is used for multiple shaders, but some of them require a modified version of the source.

◆ CreateDefaultShaderSourceStreamFactory()

void Diligent::CreateDefaultShaderSourceStreamFactory ( const Char * SearchDirectories,
IShaderSourceInputStreamFactory ** ppShaderSourceStreamFactory )

Creates a default shader source stream factory

Parameters
[in]SearchDirectories- Semicolon-separated list of search directories.
[out]ppShaderSourceStreamFactory- Memory address where the pointer to the shader source stream factory will be written.

◆ CreateDynamicTextureAtlas()

void Diligent::CreateDynamicTextureAtlas ( IRenderDevice * pDevice,
const DynamicTextureAtlasCreateInfo & CreateInfo,
IDynamicTextureAtlas ** ppAtlas )

Creates a new dynamic texture atlas.

Parameters
[in]pDevice- Pointer to the render device that will be used to create internal texture array. If this parameter is null, the texture will be created when Update() is called.
[in]CreateInfo- Atlas create info, see Diligent::DynamicTextureAtlasCreateInfo.
[in]ppAtlas- Memory location where pointer to the texture atlas object will be written.

◆ CreateGeometryPrimitive()

void Diligent::CreateGeometryPrimitive ( const GeometryPrimitiveAttributes & Attribs,
IDataBlob ** ppVertices,
IDataBlob ** ppIndices,
GeometryPrimitiveInfo * pInfo = nullptr )

Creates a geometry primitive

Parameters
[in]Attribs- Geometry primitive attributes, see Diligent::GeometryPrimitiveAttributes.
[out]ppVertices- Address of the memory location where the pointer to the output vertex data blob will be stored. The vertex components are stored as interleaved floating-point values. For example, if VertexFlags = Diligent::GEOMETRY_PRIMITIVE_VERTEX_FLAG_POS_NORM, the vertex data will be stored as follows: P0, N0, P1, N1, ..., Pn, Nn.
[out]ppIndices- Address of the memory location where the pointer to the output index data blob will be stored. Index data is stored as 32-bit unsigned integers representing the triangle list.
[out]pInfo- A pointer to the structure that will receive information about the created geometry primitive. See Diligent::GeometryPrimitiveInfo.

◆ CreateGeometryPrimitiveBuffers()

void Diligent::CreateGeometryPrimitiveBuffers ( IRenderDevice * pDevice,
const GeometryPrimitiveAttributes & Attribs,
const GeometryPrimitiveBuffersCreateInfo * pBufferCI,
IBuffer ** ppVertices,
IBuffer ** ppIndices,
GeometryPrimitiveInfo * pInfo = nullptr )

Creates vertex and index buffers for a geometry primitive (see Diligent::CreateGeometryPrimitive)

Parameters
[in]pDevice- A pointer to the render device that will be used to create the buffers.
[in]Attribs- Geometry primitive attributes, see Diligent::GeometryPrimitiveAttributes.
[in]pBufferCI- Optional buffer create info, see Diligent::GeometryPrimitiveBufferCreateInfo. If null, default values are used.
[out]ppVertices- Address of the memory location where the pointer to the vertex buffer will be stored.
[out]ppIndices- Address of the memory location where the pointer to the index buffer will be stored.
[out]pInfo- A pointer to the structure that will receive information about the created geometry primitive. See Diligent::GeometryPrimitiveInfo.

◆ CreateImageFromFile()

IMAGE_FILE_FORMAT Diligent::CreateImageFromFile ( const Char * FilePath,
Image ** ppImage,
IDataBlob ** ppRawData = nullptr )

Creates an image from file.

Parameters
[in]FilePath- Source file path
[out]ppImage- Memory location where pointer to the created image will be stored
[out]ppRawData- If the file format is not recognized by the function, it will load raw bytes and return them in the data blob. This parameter can be null.
Returns
Image file format.

◆ CreateImageFromMemory()

IMAGE_FILE_FORMAT Diligent::CreateImageFromMemory ( const void * pImageData,
size_t DataSize,
Image ** ppImage )

Creates an image from memory.

Parameters
[in]pImageData- Source image data
[in]DataSize- Size of the image data
[out]ppImage- Memory location where pointer to the created image will be stored
Returns
Image file format.

◆ CreateMemoryShaderSourceFactory()

void Diligent::CreateMemoryShaderSourceFactory ( const MemoryShaderSourceFactoryCreateInfo & CreateInfo,
IShaderSourceInputStreamFactory ** ppFactory )

Crates a memory shader source factory.

Parameters
[in]CreateInfo- Memory shader source factory create info, see Diligent::MemoryShaderSourceFactoryCreateInfo.
[out]ppFactory- Address of the memory location where the pointer to the created factory will be written.

◆ CreateOffScreenSwapChain()

void Diligent::CreateOffScreenSwapChain ( IRenderDevice * pDevice,
IDeviceContext * pContext,
const SwapChainDesc & SCDesc,
ISwapChain ** ppSwapChain )

Creates an off-screen swap chain.

Parameters
[in]pDevice- Pointer to the render device.
[in]pContext- Pointer to the device context.
[in]SCDesc- Swap chain description.
[out]ppSwapChain- Address of the pointer to the swap chain object.

◆ CreateSparseTextureMtl()

void Diligent::CreateSparseTextureMtl ( IRenderDevice * pDevice,
const TextureDesc & TexDesc,
IDeviceMemory * pMemory,
ITexture ** ppTexture )

Creates a sparse texture in Metal backend.

Parameters
[in]pDevice- A pointer to the render device.
[in]TexDesc- Texture description.
[in]pMemory- A pointer to the device memory.
[out]ppTexture- Address of the memory location where a pointer to the sparse texture will be written.

If pDevice is a pointer to Metal device (Diligent::IRenderDeviceMtl), this function creates a sparse texture using IRenderDeviceMtl::CreateSparseTexture method. Otherwise, it does nothing.

◆ CreateTextureFromFile()

void Diligent::CreateTextureFromFile ( const Char * FilePath,
const TextureLoadInfo & TexLoadInfo,
IRenderDevice * pDevice,
ITexture ** ppTexture )

Creates a texture from file.

Parameters
[in]FilePath- Source file path.
[in]TexLoadInfo- Texture loading information.
[in]pDevice- Render device that will be used to create the texture.
[out]ppTexture- Memory location where pointer to the created texture will be written.

◆ CreateTextureLoaderFromDataBlob()

void Diligent::CreateTextureLoaderFromDataBlob ( IDataBlob * pDataBlob,
const TextureLoadInfo & TexLoadInfo,
ITextureLoader ** ppLoader )

Creates a texture loader from data blob.

Parameters
[in]pDataBlob- Pointer to the data blob that contains the texture data.
[in]TexLoadInfo- Texture loading information, see Diligent::TextureLoadInfo.
[out]ppLoader- Memory location where a pointer to the created texture loader will be written.
Remarks
If needed, the loader will keep a strong reference to the data blob.

◆ CreateTextureLoaderFromFile()

void Diligent::CreateTextureLoaderFromFile ( const char * FilePath,
IMAGE_FILE_FORMAT FileFormat,
const TextureLoadInfo & TexLoadInfo,
ITextureLoader ** ppLoader )

Creates a texture loader from file.

Parameters
[in]FilePath- File path.
[in]FileFormat- File format. If this parameter is IMAGE_FILE_FORMAT_UNKNOWN, the format will be derived from the file contents.
[in]TexLoadInfo- Texture loading information, see Diligent::TextureLoadInfo.
[out]ppLoader- Memory location where a pointer to the created texture loader will be written.

◆ CreateTextureLoaderFromImage()

void Diligent::CreateTextureLoaderFromImage ( struct Image * pSrcImage,
const TextureLoadInfo & TexLoadInfo,
ITextureLoader ** ppLoader )

Creates a texture loader from image.

Parameters
[in]pSrcImage- Pointer to the source image object.
[in]TexLoadInfo- Texture loading information, see Diligent::TextureLoadInfo.
[out]ppLoader- Memory location where a pointer to the created texture loader will be written.

◆ CreateTextureLoaderFromMemory()

void Diligent::CreateTextureLoaderFromMemory ( const void * pData,
size_t Size,
bool MakeCopy,
const TextureLoadInfo & TexLoadInfo,
ITextureLoader ** ppLoader )

Creates a texture loader from memory.

Parameters
[in]pData- Pointer to the texture data.
[in]Size- The data size.
[in]MakeCopy- Whether to make the copy of the data (see remarks).
[in]TexLoadInfo- Texture loading information, see Diligent::TextureLoadInfo.
[out]ppLoader- Memory location where a pointer to the created texture loader will be written.
Remarks
If MakeCopy is false, the pointer to the memory must remain valid until the texture loader object is destroyed.

◆ CreateVertexPool()

void Diligent::CreateVertexPool ( IRenderDevice * pDevice,
const VertexPoolCreateInfo & CreateInfo,
IVertexPool ** ppVertexPool )

Creates a new vertex pool.

Parameters
[in]pDevice- A pointer to the render device that will be used to initialize internal buffer objects. If this parameter is null, the buffers will be created when Update() is called.
[in]CreateInfo- Vertex pool create info, see Diligent::VertexPoolCreateInfo.
[in]ppVertexPool- Memory location where a pointer to the vertex pool will be stored.

◆ DecodeJpeg()

DECODE_JPEG_RESULT Diligent::DecodeJpeg ( const void * pSrcJpegBits,
size_t JpegDataSize,
IDataBlob * pDstPixels,
ImageDesc * pDstImgDesc )

Decodes jpeg image.

Parameters
[in]pSrcJpegBits- JPEG image encoded bits.
[in]JpegDataSize- Size of the encoded JPEG image data.
[out]pDstPixels- Decoded pixels data blob. The pixels are always tightly packed (for instance, components of 3-channel image will be written as |r|g|b|r|g|b|r|g|b|...).
[out]pDstImgDesc- Decoded image description.
Returns
Decoding result, see Diligent::DECODE_JPEG_RESULT.

If pDstPixels is null, the function will only decode the image description and return DECODE_JPEG_RESULT_OK.

◆ DecodePng()

DECODE_PNG_RESULT Diligent::DecodePng ( const void * pSrcPngBits,
size_t PngDataSize,
IDataBlob * pDstPixels,
ImageDesc * pDstImgDesc )

Decodes png image.

Parameters
[in]pSrcPngBits- PNG image encoded bits.
[in]PngDataSize- Size of the PNG image data, in bytes.
[out]pDstPixels- Decoded pixels data blob. The pixels are always tightly packed (for instance, components of 3-channel image will be written as |r|g|b|r|g|b|r|g|b|...).
[out]pDstImgDesc- Decoded image description.
Returns
Decoding result, see Diligent::DECODE_PNG_RESULT.
Remarks
If pDstPixels is null, the function will only decode the image description.

◆ DecompressBC1Block()

void Diligent::DecompressBC1Block ( const Uint8 * Bits,
Uint8 * DstBuffer,
Uint32 DstChannels = 4 )

Decompresses BC1 block (4x4 RGB).

Parameters
[in]Bits- Compressed block bits.
[out]DstBuffer- Pointer to the output 4x4 RGB or RGBA buffer.
[in]DstChannels- The number of components in the output buffer. Must be 3 (RGB) or 4 (RGBA).

◆ DecompressBC3Block()

void Diligent::DecompressBC3Block ( const Uint8 * Bits,
Uint8 * DstBuffer )

Decompresses BC3 block (4x4 RGB+A).

Parameters
[in]Bits- Compressed block bits.
[out]DstBuffer- Pointer to the output 4x4 RGBA buffer.

◆ DecompressBC4Block()

void Diligent::DecompressBC4Block ( const Uint8 * Bits,
Uint8 * DstBuffer,
Uint32 DstChannels = 1 )

Decompresses BC4 block (4x4 R).

Parameters
[in]Bits- Compressed block bits.
[out]DstBuffer- Pointer to the output 4x4 pixel buffer.
[in]DstChannels- The number of components in the output buffer.

◆ DecompressBC5Block()

void Diligent::DecompressBC5Block ( const Uint8 * Bits,
Uint8 * DstBuffer,
Uint32 DstChannels = 2 )

Decompresses BC5 block (4x4 R+G).

Parameters
[in]Bits- Compressed block bits.
[out]DstBuffer- Pointer to the output 4x4 pixel buffer.
[in]DstChannels- The number of components in the output buffer. Must be greater than 2.

◆ EnableDeviceFeatures()

DeviceFeatures Diligent::EnableDeviceFeatures ( const DeviceFeatures & SupportedFeatures,
const DeviceFeatures & RequestedFeatures )

Returns enabled device features based on the supported features and requested features, and throws an exception in case requested features are missing:

SupportedFeature RequestedFeature Result
DISABLED DISABLED DISABLED
OPTIONAL DISABLED DISABLED
ENABLED DISABLED ENABLED
DISABLED OPTIONAL DISABLED
OPTIONAL OPTIONAL ENABLED
ENABLED OPTIONAL ENABLED
DISABLED ENABLED EXCEPTION
OPTIONAL ENABLED ENABLED
ENABLED ENABLED ENABLED

◆ EncodeJpeg()

ENCODE_JPEG_RESULT Diligent::EncodeJpeg ( Uint8 * pSrcRGBPixels,
Uint32 Width,
Uint32 Height,
int quality,
IDataBlob * pDstJpegBits )

Encodes an image jpeg PNG format.

Parameters
[in]pSrcPixels- Source pixels. The pixels must be tightly packed (for instance, components of 3-channel image must be stored as |r|g|b|r|g|b|r|g|b|...). At the moment, only RGB images are supported.
[in]Width- Image width.
[in]Height- Image height.
[in]quality- JPEG encoding qulaity, in the range from 0 to 100.
[out]pDstJpegBits- Encoded JPEG image bits.
Returns
Encoding result, see Diligent::ENCODE_JPEG_RESULT.

◆ EncodePng()

ENCODE_PNG_RESULT Diligent::EncodePng ( const Uint8 * pSrcPixels,
Uint32 Width,
Uint32 Height,
Uint32 StrideInBytes,
int PngColorType,
IDataBlob * pDstPngBits )

Encodes an image into PNG format.

Parameters
[in]pSrcPixels- Source pixels. The pixels must be tightly packed (for instance, components of 3-channel image must be stored as |r|g|b|r|g|b|r|g|b|...). The number of components is defined by the PngColorType parameter.
[in]Width- Image width.
[in]Height- Image height.
[in]StrideInBytes- Image data stride, in bytes.
[in]PngColorType- PNG color type (PNG_COLOR_TYPE_RGB, PNG_COLOR_TYPE_RGBA, etc.). The color type defines the number of color components, which must be tightly packed.
[out]pDstPngBits- Encoded PNG image bits.
Returns
Encoding result, see Diligent::ENCODE_PNG_RESULT.

◆ EnqueueAsyncWork()

template<typename HanlderType>
RefCntAutoPtr< IAsyncTask > Diligent::EnqueueAsyncWork ( IThreadPool * pThreadPool,
IAsyncTask ** ppPrerequisites,
Uint32 NumPrerequisites,
HanlderType Handler,
float fPriority = 0 )

Enqueues a function to be executed asynchronously by the thread pool. For the list of parameters, see Diligent::IThreadPool::EnqueueTask() method. The handler function must return the task status, see Diligent::IAsyncTask::Run() method.

◆ ExtractViewFrustumPlanesFromMatrix()

void Diligent::ExtractViewFrustumPlanesFromMatrix ( const float4x4 & Matrix,
ViewFrustum & Frustum,
bool bIsOpenGL )
inline

For OpenGL, matrix is still considered row-major. The only difference is that near clip plane is at -1, not 0.

Note that returned plane normal vectors are not normalized, which does not make a difference when testing a point against the plane:

 IsPointInsidePlane = dot(Plane.Normal, Point) < Plane.Distance

However, to use the planes with other distances (e.g. for testing a sphere against the plane), the normal vectors must be normalized and the distances scaled accordingly.

◆ FastGammaToLinear()

float Diligent::FastGammaToLinear ( float x)
inline

Converts gamma color to linear color space using fast approximation.

Parameters
x- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ FastLinearToGamma()

float Diligent::FastLinearToGamma ( float x)
inline

Converts linear color to gamma color space using fast approximation.

Parameters
x- Linear color value in the range [0, 1]
Returns
Gamma color value in the range [0, 1]

◆ FastLinearToSRGB()

float3 Diligent::FastLinearToSRGB ( const float3 & RGB)
inline

Converts RGB color from gamma to linear color space using fast approximation.

Parameters
RGB- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ FastLinearToSRGBA()

float4 Diligent::FastLinearToSRGBA ( const float4 & RGBA)
inline

Converts RGBA color from gamma to linear color space using fast approximation.

Parameters
RGBA- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]
Note
Alpha channel is not converted

◆ FastSRGBAToLinear()

float4 Diligent::FastSRGBAToLinear ( const float4 & SRGBA)
inline

Converts RGBA color from gamma to linear color space using fast approximation.

Parameters
RGBA- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ FastSRGBToLinear()

float3 Diligent::FastSRGBToLinear ( const float3 & SRGB)
inline

Converts RGB color from gamma to linear color space using fast approximation.

Parameters
RGB- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ FilterTexture2DBilinear()

template<typename SrcType, typename DstType, TEXTURE_ADDRESS_MODE AddressModeU, TEXTURE_ADDRESS_MODE AddressModeV, bool IsNormalizedCoord>
DstType Diligent::FilterTexture2DBilinear ( Uint32 Width,
Uint32 Height,
const SrcType * pData,
size_t Stride,
float u,
float v )

Samples 2D texture using bilinear filter.

Template Parameters
SrcType- Source pixel type.
DstType- Destination type.
AddressModeU- U coordinate address mode.
AddressModeV- V coordinate address mode.
IsNormalizedCoord- Whether sample coordinates are normalized.
Parameters
[in]Width- Texture width.
[in]Height- Texture height.
[in]pData- Pointer to the texture data.
[in]Stride- Data stride, in pixels.
[in]u- Sample u coordinate.
[in]v- Sample v coordinate.
Returns
- Filtered texture sample.

◆ FilterTexture2DBilinearClamp()

template<typename SrcType, typename DstType>
DstType Diligent::FilterTexture2DBilinearClamp ( Uint32 Width,
Uint32 Height,
const SrcType * pData,
size_t Stride,
float u,
float v )

Specialization of FilterTexture2DBilinear function that uses CLAMP texture address mode and takes normalized texture coordinates.

◆ FilterTexture2DBilinearClampUC()

template<typename SrcType, typename DstType>
DstType Diligent::FilterTexture2DBilinearClampUC ( Uint32 Width,
Uint32 Height,
const SrcType * pData,
size_t Stride,
float u,
float v )

Specialization of FilterTexture2DBilinear function that uses CLAMP texture address mode and takes unnormalized texture coordinates.

◆ FindImmutableSampler()

Uint32 Diligent::FindImmutableSampler ( const ImmutableSamplerDesc ImtblSamplers[],
Uint32 NumImtblSamplers,
SHADER_TYPE ShaderStages,
const char * ResourceName,
const char * SamplerSuffix )

Finds an immutable sampler for the resource name 'ResourceName' that is defined in shader stages 'ShaderStages'. If 'SamplerSuffix' is not null, it will be appended to the 'ResourceName'. Returns an index of the sampler in ImtblSamplers array, or InvalidImmutableSamplerIndex if there is no suitable sampler.

◆ FindPipelineResourceLayoutVariable()

ShaderResourceVariableDesc Diligent::FindPipelineResourceLayoutVariable ( const PipelineResourceLayoutDesc & LayoutDesc,
const char * Name,
SHADER_TYPE ShaderStage,
const char * CombinedSamplerSuffix )

Finds a pipeline resource layout variable with the name 'Name' in shader stage 'ShaderStage' in the list of variables of 'LayoutDesc'. If CombinedSamplerSuffix != null, the variable is treated as a combined sampler and the suffix is added to the names of variables from 'LayoutDesc' when comparing with 'Name'. If the variable is not found, returns default variable {ShaderStage, Name, LayoutDesc.DefaultVariableType}.

◆ FindResource()

Uint32 Diligent::FindResource ( const PipelineResourceDesc Resources[],
Uint32 NumResources,
SHADER_TYPE ShaderStage,
const char * ResourceName )

Finds a resource with the given name in the specified shader stage and returns its index in Resources[], or InvalidPipelineResourceIndex if the resource is not found.

◆ GammaToLinear() [1/2]

float Diligent::GammaToLinear ( float x)
inline

Converts gamma color to linear color space.

Parameters
x- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ GammaToLinear() [2/2]

float Diligent::GammaToLinear ( Uint8 x)

Converts gamma color to linear color space.

Parameters
x- Gamma color value in the range [0, 255]
Returns
Linear color value in the range [0, 255]

◆ GetArchiveDeviceDataFlagString()

const char * Diligent::GetArchiveDeviceDataFlagString ( ARCHIVE_DEVICE_DATA_FLAGS Flag,
bool bGetFullName = false )

Returns the string representation of the ARCHIVE_DEVICE_DATA_FLAGS enum value.

Parameters
[in]Flag- Archive device data flag.
[in]bGetFullName- Whether to return full name of the enum value
Returns
Literal name of the archive device data flag.

For example, if bGetFullName == true, "ARCHIVE_DEVICE_DATA_FLAG_D3D11" will be returned; if bGetFullName == false, "D3D11" will be returned.

Note
A single flag must be passed to this function.

◆ GetArray2DMinMaxValue()

void Diligent::GetArray2DMinMaxValue ( const float * pData,
size_t StrideInFloats,
Uint32 Width,
Uint32 Height,
float & MinValue,
float & MaxValue )

Computes the minimum and the maximum value in a 2D floating-point array.

Parameters
[in]pData- A pointer to the array data.
[in]StrideInFloats- Row stride in 32-bit floats.
[in]Width- 2D array width.
[in]Height- 2D array height.
[out]MinValue- Minimum value.
[out]MaxValue- Maximum value.

◆ GetBlendFactorLiteralName()

const Char * Diligent::GetBlendFactorLiteralName ( BLEND_FACTOR BlendFactor)

Returns the literal name of a blend factor.

Parameters
[in]BlendFactor- Blend factor, see Diligent::BLEND_FACTOR.
Returns
Literal name of the blend factor.

◆ GetBlendOperationLiteralName()

const Char * Diligent::GetBlendOperationLiteralName ( BLEND_OPERATION BlendOp)

Returns the literal name of a blend operation.

Parameters
[in]BlendOp- Blend operation, see Diligent::BLEND_OPERATION.
Returns
Literal name of the blend operation.

◆ GetBoxVisibilityAgainstPlane() [1/2]

BoxVisibility Diligent::GetBoxVisibilityAgainstPlane ( const Plane3D & Plane,
const BoundBox & Box )
inline

Tests if the bounding box is fully visible, intersecting or invisible with respect to the plane.

Plane normal doesn't have to be normalized. The box is visible when it is in the positive halfspace of the plane.

Invisible    |        Visible
             |   N
             |===>
             |
             | 

◆ GetBoxVisibilityAgainstPlane() [2/2]

BoxVisibility Diligent::GetBoxVisibilityAgainstPlane ( const Plane3D & Plane,
const OrientedBoundingBox & Box )
inline

Tests if the oriented bounding box is fully visible, intersecting or invisible with respect to the plane.

◆ GetBufferDefaultSRV()

IBufferView * Diligent::GetBufferDefaultSRV ( IObject * pBuffer)

Returns default shader resource view of a buffer.

If the buffer is null, returns null.

◆ GetBufferDefaultUAV()

IBufferView * Diligent::GetBufferDefaultUAV ( IObject * pBuffer)

Returns default unordered access view of a buffer.

If the buffer is null, returns null.

◆ GetBufferViewTypeLiteralName()

const Char * Diligent::GetBufferViewTypeLiteralName ( BUFFER_VIEW_TYPE ViewType)

Returns the literal name of a buffer view type. For instance, for an unordered access view, "BUFFER_VIEW_UNORDERED_ACCESS" will be returned.

Parameters
[in]ViewType- Buffer view type.
Returns
Literal name of the buffer view type.

◆ GetComparisonFunctionLiteralName()

const Char * Diligent::GetComparisonFunctionLiteralName ( COMPARISON_FUNCTION ComparisonFunc,
bool bGetFullName )

Returns the literal name of a comparison function. For instance, for COMPARISON_FUNC_LESS, if bGetFullName == true, "COMPARISON_FUNC_LESS" will be returned; if bGetFullName == false, "less" will be returned.

Parameters
[in]ComparisonFunc- Comparison function, see Diligent::COMPARISON_FUNCTION.
[in]bGetFullName- Whether to return string representation of the enum value.
Returns
Literal name of the comparison function.

◆ GetCullModeLiteralName()

const Char * Diligent::GetCullModeLiteralName ( CULL_MODE CullMode,
bool GetEnumString = false )

Returns the literal name of a cull mode.

Parameters
[in]CullMode- Cull mode, see Diligent::CULL_MODE.
[in]GetEnumString- Whether to return string representation of the enum value.
Returns
Literal name of the cull mode (e.g. "CULL_MODE_BACK" when bGetFullName == true, or "back" when GetEnumString == false).

◆ GetDefaultDSV()

ITextureView * Diligent::GetDefaultDSV ( ITexture * pTexture)

Returns default depth-stencil view of a texture.

If the texture is null, returns null.

◆ GetDefaultRTV()

ITextureView * Diligent::GetDefaultRTV ( ITexture * pTexture)

Returns default render target view of a texture.

If the texture is null, returns null.

◆ GetDefaultSRV() [1/2]

IBufferView * Diligent::GetDefaultSRV ( IBuffer * pBuffer)

Returns default shader resource view of a buffer.

If the buffer is null, returns null.

◆ GetDefaultSRV() [2/2]

ITextureView * Diligent::GetDefaultSRV ( ITexture * pTexture)

Returns default shader resource view of a texture.

If the texture is null, returns null.

◆ GetDefaultTextureViewFormat() [1/2]

TEXTURE_FORMAT Diligent::GetDefaultTextureViewFormat ( const TextureDesc & TexDesc,
TEXTURE_VIEW_TYPE ViewType )
inline

Returns the default format for a specified texture view type.

Parameters
[in]TexDesc- texture description
[in]ViewType- texture view type
Returns
texture view type format

◆ GetDefaultTextureViewFormat() [2/2]

TEXTURE_FORMAT Diligent::GetDefaultTextureViewFormat ( TEXTURE_FORMAT TextureFormat,
TEXTURE_VIEW_TYPE ViewType,
Uint32 BindFlags )

Returns the default format for a specified texture view type.

The default view is defined as follows:

  • For a fully qualified texture format, the SRV/RTV/UAV view format is the same as texture format; DSV format, if available, is adjusted accordingly (R32_FLOAT -> D32_FLOAT)
  • For 32-bit typeless formats, default view is XXXX32_FLOAT (where XXXX are the actual format components)
  • For 16-bit typeless formats, default view is XXXX16_FLOAT (where XXXX are the actual format components)
    ** R16_TYPELESS is special. If BIND_DEPTH_STENCIL flag is set, it is translated to R16_UNORM/D16_UNORM; otherwise it is translated to R16_FLOAT.
  • For 8-bit typeless formats, default view is XXXX8_UNORM (where XXXX are the actual format components)
  • sRGB is always chosen if it is available (RGBA8_UNORM_SRGB, TEX_FORMAT_BC1_UNORM_SRGB, etc.)
  • For combined depth-stencil formats, SRV format references depth component (R24_UNORM_X8_TYPELESS for D24S8 formats, and R32_FLOAT_X8X24_TYPELESS for D32S8X24 formats)
  • For compressed formats, only SRV format is defined
Parameters
[in]Format- texture format, for which the view format is requested
[in]ViewType- texture view type
[in]BindFlags- texture bind flags
Returns
texture view type format

◆ GetDefaultUAV() [1/2]

IBufferView * Diligent::GetDefaultUAV ( IBuffer * pBuffer)

Returns default unordered access view of a buffer.

If the buffer is null, returns null.

◆ GetDefaultUAV() [2/2]

ITextureView * Diligent::GetDefaultUAV ( ITexture * pTexture)

Returns default unordered access view of a texture.

If the texture is null, returns null.

◆ GetDeviceFeaturesString()

template<typename FeaturesType>
std::string Diligent::GetDeviceFeaturesString ( const FeaturesType & Features,
size_t NumColumns,
int Indent = 4,
int Spacing = 4,
Uint32 Flags = ~0u )

Returns the string containing the device features

Parameters
Features- device features.
NumColumns- the number of columns in the output.
Indent- indentation of the first column.
Spacing- spacing between columns.
Flags- flags to control which features to include in the output. If (1<<State) & Flags is true, the feature will be included.
Returns
string containing the device features.

◆ GetDeviceFeatureStateString()

const char * Diligent::GetDeviceFeatureStateString ( DEVICE_FEATURE_STATE State,
bool bGetFullName = false )

Returns the string representation of the DEVICE_FEATURE_STATE enum value.

Parameters
[in]State- Device feature state.
[in]bGetFullName- Whether to return full name of the enum value
Returns
Literal name of the device feature state.

For example, if bGetFullName == true, "DEVICE_FEATURE_STATE_ENABLED" will be returned; if bGetFullName == false, "Enabled" will be returned.

◆ GetFillModeLiteralName()

const Char * Diligent::GetFillModeLiteralName ( FILL_MODE FillMode)

Returns the literal name of a fill mode.

Parameters
[in]FillMode- Fill mode, see Diligent::FILL_MODE.
Returns
Literal name of the fill mode.

◆ GetFilterTypeLiteralName()

const Char * Diligent::GetFilterTypeLiteralName ( FILTER_TYPE FilterType,
bool bGetFullName )

Returns the literal name of a filter type. For instance, for FILTER_TYPE_POINT, if bGetFullName == true, "FILTER_TYPE_POINT" will be returned; if bGetFullName == false, "point" will be returned.

Parameters
[in]FilterType- Filter type, see Diligent::FILTER_TYPE.
[in]bGetFullName- Whether to return string representation of the enum value.
Returns
Literal name of the filter type.

◆ GetFrustumMinimumBoundingSphere()

void Diligent::GetFrustumMinimumBoundingSphere ( float Proj_00,
float Proj_11,
float NearPlane,
float FarPlane,
float3 & Center,
float & Radius )
inline

Returns the minimum bounding sphere of a view frustum.

Parameters
Proj_00cot(HorzFOV / 2)
Proj_11cot(VertFOV / 2) == proj_00 / AspectRatio
NearPlaneNear clip plane
FarPlaneFar clip plane
CenterSphere center == (0, 0, c)
RadiusSphere radius

◆ GetGLSLExtensions()

std::vector< std::pair< std::string, std::string > > Diligent::GetGLSLExtensions ( const char * Source,
size_t SourceLen = 0 )

Extracts all #extension directives from the GLSL source, returning them as a vector of pairs (extension name, extension behavior). The behavior is the string following the extension name.

◆ GetLinearTexFilterSampleInfo()

template<TEXTURE_ADDRESS_MODE AddressMode, bool IsNormalizedCoord>
LinearTexFilterSampleInfo Diligent::GetLinearTexFilterSampleInfo ( Uint32 Width,
float u )

Returns linear texture filter sample info, see Diligent::LinearTexFilterSampleInfo.

Template Parameters
AddressMode- Texture addressing mode, see Diligent::TEXTURE_ADDRESS_MODE.
IsNormalizedCoord- Whether sample coordinate is normalized.
Parameters
[in]Width- Texture width.
[in]u- Texture sample coordinate.
Returns
Linear texture filter sample information, see Diligent::LinearTexFilterSampleInfo.

◆ GetOpenXRGraphicsBinding()

void Diligent::GetOpenXRGraphicsBinding ( IRenderDevice * pDevice,
IDeviceContext * pContext,
IDataBlob ** ppGraphicsBinding )

Prepares OpenXR graphics binding for the specified device and context.

Parameters
[in]pDevice- Pointer to the render device.
[in]pContext- Pointer to the device context.
[out]ppGraphicsBinding- Address of the memory location where the pointer to the data blob containing the graphics binding will be stored.

The function returns the data blob that contains the OpenXR graphics binding structure (XrGraphicsBindingVulkanKHR, XrGraphicsBindingD3D11KHR, etc.). The data blob should be used to create the OpenXR session, for example:

RefCntAutoPtr<IDataBlob> pGraphicsBinding;
GetOpenXRGraphicsBinding(m_pDevice, m_pImmediateContext, &pGraphicsBinding);

XrSessionCreateInfo sessionCI{XR_TYPE_SESSION_CREATE_INFO};
sessionCI.next     = pGraphicsBinding->GetConstDataPtr();
sessionCI.systemId = m_SystemId;
xrCreateSession(m_xrInstance, &sessionCI, &m_xrSession);

◆ GetOpenXRSwapchainImage()

void Diligent::GetOpenXRSwapchainImage ( IRenderDevice * pDevice,
const XrSwapchainImageBaseHeader * ImageData,
Uint32 ImageIndex,
const Diligent::TextureDesc & TexDesc,
ITexture ** ppImage )

Returns the texture object that corresponds to the specified OpenXR swapchain image.

Parameters
[in]pDevice- Pointer to the render device.
[in]ImageData- Pointer to the OpenXR swapchain image data returned by xrEnumerateSwapchainImages.
[in]ImageIndex- Index of the swapchain image.
[in]TexDesc- Texture description.
[out]ppImage- Address of the memory location where the pointer to the texture object will be stored.

The function creates a texture object that corresponds to the specified OpenXR swapchain image.

Typically, ImageData should be allocated by AllocateOpenXRSwapchainImageData and filled by xrEnumerateSwapchainImages (see Diligent::AllocateOpenXRSwapchainImageData):

RefCntAutoPtr<ITexture> pImage;
GetOpenXRSwapchainImage(pDevice, pSwapchainImageData->GetConstDataPtr<XrSwapchainImageBaseHeader>(),
                        ImageIndex, Desc, &pImage);

TexDesc should be filled with the texture description that corresponds to the swapchain. On Direct3D, the texture parameters will be derived from the swapchain resource. On Vulkan, the texture description should be filled manually since Vulkan does not provide a way to query texture parameters from the image.

◆ GetPipelineStateStatusString()

const Char * Diligent::GetPipelineStateStatusString ( PIPELINE_STATE_STATUS PipelineStatus,
bool GetEnumString = false )

Returns the string containing the pipeline state status (e.g. "PIPELINE_STATE_STATUS_UNINITIALIZED" when GetEnumString is true, or "Uninitialized" when GetEnumString is false).

◆ GetRenderDeviceTypeShortString()

const char * Diligent::GetRenderDeviceTypeShortString ( RENDER_DEVICE_TYPE DeviceType,
bool Capital = false )

Returns the render device type short string (e.g. "D3D11" when Capital is true, or "d3d11" when Capital is false).

◆ GetRenderDeviceTypeString()

const char * Diligent::GetRenderDeviceTypeString ( RENDER_DEVICE_TYPE DeviceType,
bool GetEnumString = false )

Returns the render device type string (e.g. "RENDER_DEVICE_TYPE_D3D11" when GetEnumString is true, or "Direct3D11" when GetEnumString is false).

◆ GetRenderStateCacheFilePath()

std::string Diligent::GetRenderStateCacheFilePath ( const char * CacheLocation,
const char * AppName,
RENDER_DEVICE_TYPE DeviceType )

Returns the path to the render state cache file.

Parameters
[in]CacheLocation- Cache location. If it is equal to RenderStateCacheLocationAppData, the function returns the path to the cache file in the application data folder. Otherwise, the function returns the path to the cache file in the specified folder.
[in]AppName- Application name.
[in]DeviceType- Render device type.
Returns
Render state cache file path.

◆ GetShaderResourceTypeLiteralName()

const Char * Diligent::GetShaderResourceTypeLiteralName ( SHADER_RESOURCE_TYPE ResourceType,
bool bGetFullName = false )

Returns the literal name of a shader resource type. For instance, for SHADER_RESOURCE_TYPE_CONSTANT_BUFFER, if bGetFullName == true, "SHADER_RESOURCE_TYPE_CONSTANT_BUFFER" will be returned; if bGetFullName == false, "constant buffer" will be returned

Parameters
[in]ResourceType- Resource type.
[in]bGetFullName- Whether to return string representation of the enum value
Returns
Literal name of the shader resource type.

◆ GetShaderStagesString()

String Diligent::GetShaderStagesString ( SHADER_TYPE ShaderStages)
Parameters
[in]ShaderStages- Shader stages.
Returns
The string representing the shader stages. For example, if ShaderStages == SHADER_TYPE_VERTEX | SHADER_TYPE_PIXEL, the following string will be returned: "SHADER_TYPE_VERTEX, SHADER_TYPE_PIXEL"

◆ GetShaderStatusString()

const Char * Diligent::GetShaderStatusString ( SHADER_STATUS ShaderStatus,
bool GetEnumString = false )

Returns the string containing the shader status (e.g. "SHADER_STATUS_UNINITIALIZED" when GetEnumString is true, or "Uninitialized" when GetEnumString is false).

◆ GetShaderTypeLiteralName()

const Char * Diligent::GetShaderTypeLiteralName ( SHADER_TYPE ShaderType)

Returns the literal name of a shader type. For instance, for a pixel shader, "SHADER_TYPE_PIXEL" will be returned.

Parameters
[in]ShaderType- Shader type.
Returns
Literal name of the shader type.

◆ GetShaderTypeMacros()

ShaderMacroArray Diligent::GetShaderTypeMacros ( SHADER_TYPE Type)

Returns shader type definition macro(s), e.g., for a vertex shader:

ShaderMacroArray{{{"VERTEX_SHADER", "1"}}, 1}

or, for a fragment shader:

ShaderMacroArray{{{"FRAGMENT_SHADER", "1"}, {"PIXEL_SHADER", "1"}}, 2}

etc.

◆ GetShaderVariableTypeLiteralName()

const Char * Diligent::GetShaderVariableTypeLiteralName ( SHADER_RESOURCE_VARIABLE_TYPE VarType,
bool bGetFullName = false )

Returns the literal name of a shader variable type. For instance, for SHADER_RESOURCE_VARIABLE_TYPE_STATIC, if bGetFullName == true, "SHADER_RESOURCE_VARIABLE_TYPE_STATIC" will be returned; if bGetFullName == false, "static" will be returned

Parameters
[in]VarType- Variable type.
[in]bGetFullName- Whether to return string representation of the enum value
Returns
Literal name of the shader variable type.

◆ GetStagingTextureLocationOffset()

Uint64 Diligent::GetStagingTextureLocationOffset ( const TextureDesc & TexDesc,
Uint32 ArraySlice,
Uint32 MipLevel,
Uint32 Alignment,
Uint32 LocationX,
Uint32 LocationY,
Uint32 LocationZ )

Returns an offset from the beginning of the buffer backing a staging texture to the specified location within the given subresource.

Parameters
[in]TexDesc- Staging texture description.
[in]ArraySlice- Array slice.
[in]MipLevel- Mip level.
[in]Alignment- Subresource alignment. The alignment is applied to whole subresources only, but not to the row/depth strides. In other words, there may be padding between subresources, but texels in every subresource are assumed to be tightly packed.
[in]LocationX- X location within the subresource.
[in]LocationY- Y location within the subresource.
[in]LocationZ- Z location within the subresource.
Returns
Offset from the beginning of the buffer to the given location.
Remarks
Alignment is applied to the subresource sizes, such that the beginning of data of every subresource starts at an offset aligned by 'Alignment'. The alignment is not applied to the row/depth strides and texels in all subresources are assumed to be tightly packed.
        Subres 0
         stride
  |<-------------->|
  |________________|       Subres 1
  |                |        stride
  |                |     |<------->|
  |                |     |_________|
  |    Subres 0    |     |         |
  |                |     | Subres 1|
  |                |     |         |                     _
  |________________|     |_________|         ...        |_|
  A                      A                              A
  |                      |                              |
Buffer start            Subres 1 offset,               Subres N offset,
                     aligned by 'Alignment'         aligned by 'Alignment'

◆ GetStagingTextureSubresourceOffset()

Uint64 Diligent::GetStagingTextureSubresourceOffset ( const TextureDesc & TexDesc,
Uint32 ArraySlice,
Uint32 MipLevel,
Uint32 Alignment )
inline

Returns an offset from the beginning of the buffer backing a staging texture to the given subresource. Texels within subresources are assumed to be tightly packed. There is no padding except between whole subresources.

◆ GetStencilOpLiteralName()

const Char * Diligent::GetStencilOpLiteralName ( STENCIL_OP StencilOp)

Returns the literal name of a stencil operation.

Parameters
[in]StencilOp- Stencil operation, see Diligent::STENCIL_OP.
Returns
Literal name of the stencil operation.

◆ GetTextureAddressModeLiteralName()

const Char * Diligent::GetTextureAddressModeLiteralName ( TEXTURE_ADDRESS_MODE AddressMode,
bool bGetFullName )

Returns the literal name of a texture address mode. For instance, for TEXTURE_ADDRESS_WRAP, if bGetFullName == true, "TEXTURE_ADDRESS_WRAP" will be returned; if bGetFullName == false, "wrap" will be returned.

Parameters
[in]AddressMode- Texture address mode, see Diligent::TEXTURE_ADDRESS_MODE.
[in]bGetFullName- Whether to return string representation of the enum value.
Returns
Literal name of the address mode.

◆ GetTextureComponentMappingString()

String Diligent::GetTextureComponentMappingString ( const TextureComponentMapping & Mapping)

Converts texture component mapping to a string.

For example:

  • {R, G, B, A} -> "rgba"
  • {R, G, B, 1} -> "rgb1"

◆ GetTextureDefaultDSV()

ITextureView * Diligent::GetTextureDefaultDSV ( IObject * pTexture)

Returns default depth-stencil view of a texture.

If the texture is null, returns null.

◆ GetTextureDefaultRTV()

ITextureView * Diligent::GetTextureDefaultRTV ( IObject * pTexture)

Returns default render target view of a texture.

If the texture is null, returns null.

◆ GetTextureDefaultSRV()

ITextureView * Diligent::GetTextureDefaultSRV ( IObject * pTexture)

Returns default shader resource view of a texture.

If the texture is null, returns null.

◆ GetTextureDefaultUAV()

ITextureView * Diligent::GetTextureDefaultUAV ( IObject * pTexture)

Returns default unordered access view of a texture.

If the texture is null, returns null.

◆ GetTextureFormatAttribs()

const TextureFormatAttribs & Diligent::GetTextureFormatAttribs ( TEXTURE_FORMAT Format)

Returns invariant texture format attributes, see TextureFormatAttribs for details.

Parameters
[in]Format- Texture format which attributes are requested for.
Returns
Constant reference to the TextureFormatAttribs structure containing format attributes.

◆ GetTextureLoaderMemoryRequirement()

size_t Diligent::GetTextureLoaderMemoryRequirement ( const void * pData,
size_t Size,
const TextureLoadInfo & TexLoadInfo )

Returns the memory requirement for the texture loader.

Parameters
[in]pData- Pointer to the source image data.
[in]Size- The data size.
[in]TexLoadInfo- Texture loading information, see Diligent::TextureLoadInfo.
Returns
The memory requirement in bytes.

This function can be used to estimate the memory requirement for the texture loader. The memory requirement includes the size of the texture data plus the size of the intermediate data structures used by the loader. It does not include the size of the source image data. The actual memory used by the loader may be slightly different.

◆ GetTexViewTypeLiteralName()

const Char * Diligent::GetTexViewTypeLiteralName ( TEXTURE_VIEW_TYPE ViewType)

Returns the literal name of a texture view type. For instance, for a shader resource view, "TEXTURE_VIEW_SHADER_RESOURCE" will be returned.

Parameters
[in]ViewType- Texture view type.
Returns
Literal name of the texture view type.

◆ GetViewTypeLiteralName() [1/2]

const Char * Diligent::GetViewTypeLiteralName ( BUFFER_VIEW_TYPE BuffViewType)
inline

Overloaded function that returns the literal name of a buffer view type. see GetBufferViewTypeLiteralName().

◆ GetViewTypeLiteralName() [2/2]

const Char * Diligent::GetViewTypeLiteralName ( TEXTURE_VIEW_TYPE TexViewType)
inline

Overloaded function that returns the literal name of a texture view type. see GetTexViewTypeLiteralName().

◆ GetWebGPUEmulatedArrayIndexSuffix()

const char * Diligent::GetWebGPUEmulatedArrayIndexSuffix ( IShader * pShader)

For WebGPU shaders, returns the suffix to append to the name of emulated array variables to get the indexed array element name. For other shader types, returns null.

◆ GetWGSLEmulatedArrayElement()

WGSLEmulatedResourceArrayElement Diligent::GetWGSLEmulatedArrayElement ( const std::string & Name,
const std::string & Suffix )

Returns WGSL emulated resource array element info, for example g_Tex2D_7 -> {Name = "g_Tex2D", Index = 7} g_Tex2D -> {Name = "g_Tex2D", Index = -1}

◆ GetWGSLResourceAlternativeName()

std::string Diligent::GetWGSLResourceAlternativeName ( const tint::Program & Program,
const tint::inspector::ResourceBinding & Binding )

When WGSL is generated from SPIR-V, the names of resources may be mangled

Constant buffers: HLSL: cbuffer CB0 { float4 g_Data0; } WGSL: struct CB0 { g_Data0 : vec4f, } @group(0) @binding(0) var<uniform> x_13 : CB0;

Structured buffers: HLSL: struct BufferData0 { float4 data; }; StructuredBuffer<BufferData0> g_Buff0; StructuredBuffer<BufferData0> g_Buff1; WGSL: struct g_Buff0 { x_data : RTArr, } @group(0) @binding(0) var<storage, read> g_Buff0_1 : g_Buff0; @group(0) @binding(1) var<storage, read> g_Buff1 : g_Buff0;

This function returns the alternative name of the resource binding.

◆ IntersectRayTriangle()

float Diligent::IntersectRayTriangle ( const float3 & V0,
const float3 & V1,
const float3 & V2,
const float3 & RayOrigin,
const float3 & RayDirection,
bool CullBackFace = false )
inline

Intersects a ray with the triangle using Moller-Trumbore algorithm and returns the distance along the ray to the intersection point. If the intersection point is behind the ray origin, the distance will be negative. If there is no intersection, returns +FLT_MAX.

◆ IsPointInsideTriangle()

template<typename T, typename IntermediateType>
bool Diligent::IsPointInsideTriangle ( const Vector2< T > & V0,
const Vector2< T > & V1,
const Vector2< T > & V2,
const Vector2< T > & Point,
bool AllowEdges )

Tests if a point is inside triangle.

Template Parameters
T- Vector component type
IntermediateType- Intermediate type used in calculations
Parameters
[in]V0- First triangle vertex
[in]V1- Second triangle vertex
[in]V2- Third triangle vertex
[in]Point- Point to test
[in]AllowEdges- Whether to accept points lying on triangle edges
Returns
true if the point lies inside the triangle, and false otherwise.

◆ LinearToGamma() [1/2]

float Diligent::LinearToGamma ( float x)
inline

Converts linear color to gamma color space.

Parameters
x- Linear color value in the range [0, 1]
Returns
Gamma color value in the range [0, 1]

See https://en.wikipedia.org/wiki/SRGB

◆ LinearToGamma() [2/2]

float Diligent::LinearToGamma ( Uint8 x)

Converts linear color to gamma color space.

Parameters
x- Linear color value in the range [0, 255]
Returns
Gamma color value in the range [0, 255]

◆ LinearToSRGB()

float3 Diligent::LinearToSRGB ( const float3 & RGB)
inline

Converts RGB color from linear to gamma color space.

Parameters
RGB- Linear color value in the range [0, 1]
Returns
Gamma color value in the range [0, 1]

◆ LinearToSRGBA()

float4 Diligent::LinearToSRGBA ( const float4 & RGBA)
inline

Converts RGBA color from linear to gamma color space.

Parameters
RGBA- Linear color value in the range [0, 1]
Returns
Gamma color value in the range [0, 1]
Note
Alpha channel is not converted

◆ LoadSGI()

bool Diligent::LoadSGI ( const void * pSGIData,
size_t DataSize,
IDataBlob * pDstPixels,
ImageDesc * pDstImgDesc )

Loads an SGI image.

Parameters
[in]pSGIData- SGI image data.
[in]DataSize- Size of the data.
[out]pDstPixels- Destination pixels data blob. The pixels are always tightly packed (for instance, components of a 3-channel image will be written as |r|g|b|r|g|b|r|g|b|...).
[out]pDstImgDesc- Image description.
Returns
true if the image has been loaded successfully, and false otherwise.
Remarks
If pDstPixels is null, the function will only decode the image description and return true.

◆ MakeCallback()

template<typename CallbackType>
auto Diligent::MakeCallback ( CallbackType && Callback)

Makes a callback wrapper for a function of type F(Args..., void*)

Remarks
The last argument is expected to be void*, and it is used to pass the function state.

Example:

auto ModifyPipelineCI = MakeCallback([&](PipelineStateCreateInfo* pPipelineCI) {
    auto* pGraphicsPipelineCI                              = static_cast<GraphicsPipelineStateCreateInfo*>(pPipelineCI);
    pGraphicsPipelineCI->GraphicsPipeline.RTVFormats[0]    = m_pSwapChain->GetDesc().ColorBufferFormat;
    pGraphicsPipelineCI->GraphicsPipeline.DSVFormat        = m_pSwapChain->GetDesc().DepthBufferFormat;
    pGraphicsPipelineCI->GraphicsPipeline.NumRenderTargets = 1;
});

LoadPipelineStateInfo PipelineLI{};
PipelineLI.Modify       = ModifyPipelineCI;
PipelineLI.pUserData    = ModifyPipelineCI; 

◆ ParseShaderSourceLanguageDefinition()

SHADER_SOURCE_LANGUAGE Diligent::ParseShaderSourceLanguageDefinition ( const std::string & Source)

Parses the shader source language definition comment and returns the result. If the comment is not present or can't be parsed, returns SHADER_SOURCE_LANGUAGE_DEFAULT.

◆ PatchImageFormats()

std::vector< uint32_t > Diligent::PatchImageFormats ( const std::vector< uint32_t > & SPIRV,
const std::unordered_map< HashMapStringKey, TEXTURE_FORMAT > & ImageFormats )

Patches image format declarations in the SPIRV code using the provided mapping.

Parameters
[in]SPIRV- SPIRV code.
[in]ImageFormats- Mapping from image format names to texture formats.
Returns
Patched SPIRV code.

◆ PinWorkerThread()

Uint64 Diligent::PinWorkerThread ( Uint32 ThreadId,
Uint64 AllowedCoresMask )

Pins the worker thread to one of the allowed cores.

Parameters
ThreadId- The thread ID.
AllowedCoresMask- The bit mask of allowed cores.
Returns
- Previous thread affinity mask, or 0 if the function failed.

The function selects the core by looping through the bits in the AllowedCoresMask. For example, if cores 1, 3, 6 are allowed by the mask, the threads will be assigned to cores 1, 3, 6, 1, 3, 6, etc.

This function can be used as the OnThreadStarted callback in the ThreadPoolCreateInfo.

◆ PremultiplyAlpha()

void Diligent::PremultiplyAlpha ( const PremultiplyAlphaAttribs & Attribs)

Premultiplies image components with alpha in place.

Note
Alpha is assumed to be the last component.

◆ ProcessShaderIncludes()

bool Diligent::ProcessShaderIncludes ( const ShaderCreateInfo & ShaderCI,
std::function< void(const ShaderIncludePreprocessInfo &)> IncludeHandler )
noexcept

The function recursively finds all include files in the shader and calls the IncludeHandler function for all source files, including the original one. Includes are processed in a depth-first order such that original source file is processed last.

◆ RasterizeTriangle()

template<typename T, class TCallback>
void Diligent::RasterizeTriangle ( Vector2< T > V0,
Vector2< T > V1,
Vector2< T > V2,
TCallback Callback )

Rasterizes a triangle and calls the callback function for every sample covered.

The samples are assumed to be located at integer coordinates. Samples located on edges are always enumerated. Samples are enumerated row by row, bottom to top, left to right. For example, for triangle (1, 1)-(1, 3)-(3, 1), the following locations will be enumerated: (1, 1), (2, 1), (3, 1), (1, 2), (2, 2), (1, 3).

3 *   *.  *   *
      | '.
2 *   *   *.  *
      |     '.
1 *   *---*---*

0 *   *   *   *
  0   1   2   3
Template Parameters
[in]T - Vertex component type.
TCallback- Type of the callback function.
Parameters
[in]V0- First triangle vertex.
[in]V1- Second triangle vertex.
[in]V2- Third triangle vertex.
[in]Callback- Callback function that will be called with the argument of type int2 for every sample covered.

◆ ResolveInputLayoutAutoOffsetsAndStrides()

std::vector< Uint32 > Diligent::ResolveInputLayoutAutoOffsetsAndStrides ( LayoutElement * pLayoutElements,
Uint32 NumElements )

Resolves LAYOUT_ELEMENT_AUTO_OFFSET and LAYOUT_ELEMENT_AUTO_STRIDE values in the input layout, and returns an array of buffer strides for each used input buffer slot.

◆ ReverseExpToneMap()

float3 Diligent::ReverseExpToneMap ( const float3 & Color,
float MiddleGray,
float AverageLogLum )

Computes approximate reverse tone mapping for the given tone-mapped color.

Parameters
Color- Tone-mapped color.
MiddleGray- Middle gray value used by the tone mapping operator.
AverageLogLum- Average log luminance of the original image.
Returns
Approximate reverse tone-mapped color.

The function computes approximate reverse tone mapping assuming the exponential tone mapping operator. The value is not exact, but works well for practical purposes.

◆ SaveTextureAsDDS()

bool Diligent::SaveTextureAsDDS ( const char * FilePath,
const TextureDesc & Desc,
const TextureData & TexData )

Writes texture data as DDS file.

Parameters
[in]FilePath- DDS file path.
[in]Desc- Texture description.
[in]TexData- Texture subresource data.
Returns
true if the file has been written successfully, and false otherwise.

◆ SetDebugMessageCallback()

void Diligent::SetDebugMessageCallback ( DebugMessageCallbackType DbgMessageCallback)

Sets the debug message callback function.

Note
This function needs to be called for every executable module that wants to use the callback.

◆ SplitLongString()

template<typename IterType, typename HandlerType>
void Diligent::SplitLongString ( IterType Start,
IterType End,
size_t MaxChunkLen,
size_t NewLineSearchLen,
HandlerType && Handler )

Splits string [Start, End) into chunks of length no more than MaxChunkLen. For each chunk, searches back for the new line for no more than NewLineSearchLen symbols. For each chunk, calls the Handler.

Note
This function is used to split long messages on Android to avoid truncation in logcat.

◆ SplitString() [1/2]

template<typename IterType, typename HandlerType>
void Diligent::SplitString ( IterType Start,
IterType End,
const char * Delimiters,
HandlerType && Handler )

Splits string [Start, End) into chunks separated by Delimiters. Ignores all leading and trailing delimiters. For each chunk, calls the Handler.

◆ SplitString() [2/2]

template<typename IterType>
std::vector< std::string > Diligent::SplitString ( IterType Start,
IterType End,
const char * Delimiters = nullptr )

Splits string [Start, End) into chunks separated by Delimiters and returns them as vector of strings. Ignores all leading and trailing delimiters.

◆ SRGBAToLinear()

float4 Diligent::SRGBAToLinear ( const float4 & SRGBA)
inline

Converts RGBA color from gamma to linear color space.

Parameters
RGBA- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]
Note
Alpha channel is not converted

◆ SRGBFormatToUnorm()

TEXTURE_FORMAT Diligent::SRGBFormatToUnorm ( TEXTURE_FORMAT Fmt)

Converts SRGB format to a corresponding UNORM format.

For example:

  • RGBA8_UNORM_SRGB -> RGBA8_UNORM
  • BC3_UNORM_SRGB -> BC3_UNORM

◆ SRGBToLinear()

float3 Diligent::SRGBToLinear ( const float3 & SRGB)
inline

Converts RGB color from gamma to linear color space.

Parameters
RGB- Gamma color value in the range [0, 1]
Returns
Linear color value in the range [0, 1]

◆ TextureComponentAttribsToTextureFormat()

TEXTURE_FORMAT Diligent::TextureComponentAttribsToTextureFormat ( COMPONENT_TYPE CompType,
Uint32 ComponentSize,
Uint32 NumComponents )

Returns texture format for the specified component type, size and number of components.

For example:

  • COMPONENT_TYPE_UNORM, 1, 4 -> TEX_FORMAT_RGBA8_UNORM
  • COMPONENT_TYPE_FLOAT, 4, 1 -> TEX_FORMAT_R32_FLOAT

If the format is not found, TEXTURE_FORMAT_UNKNOWN is returned.

◆ TextureComponentMappingFromString()

bool Diligent::TextureComponentMappingFromString ( const String & MappingStr,
TextureComponentMapping & Mapping )

Converts texture component mapping string to the mapping.

For example:

  • "rgba" -> {R, G, B, A}
  • "rgb1" -> {R, G, B, 1}

◆ TraceLineThroughGrid()

template<typename TCallback>
void Diligent::TraceLineThroughGrid ( float2 f2Start,
float2 f2End,
int2 i2GridSize,
TCallback Callback )

Traces a 2D line through the square cell grid and enumerates all cells the line touches.

Template Parameters
TCallback- Type of the callback function.
Parameters
f2Start- Line start point.
f2End- Line end point.
i2GridSize- Grid dimensions.
Callback- Callback function that will be called with the argument of type int2 for every cell visited. The function should return true to continue tracing and false to stop it.

The algorithm clips the line against the grid boundaries [0 .. i2GridSize.x] x [0 .. i2GridSize.y]

When one of the end points falls exactly on a vertical cell boundary, cell to the right is enumerated. When one of the end points falls exactly on a horizontal cell boundary, cell above is enumerated.

For example, for the line below on a 2x2 grid, the algorithm will trace the following cells: (0,0), (0,1), (1,1)

                End
                /
   __________ _/________  2
  |          |/         |
  |          /          |
  |         /|          |
  |________/_|__________| 1
  |       /  |          |
  |      /   |          |
  |    Start |          |
  |__________|__________| 0
 0           1          2

◆ TypelessFormatToSRGB()

TEXTURE_FORMAT Diligent::TypelessFormatToSRGB ( TEXTURE_FORMAT Fmt)

Converts typeless format to a corresponding SRGB format.

For example:

  • RGBA8_TYPELESS -> RGBA8_UNORM_SRGB
  • BC1_TYPELESS -> BC1_UNORM_SRGB

If the format is not typeless, or cannot be converted to SRGB, it is returned as is.

◆ TypelessFormatToUnorm()

TEXTURE_FORMAT Diligent::TypelessFormatToUnorm ( TEXTURE_FORMAT Fmt)

Converts typeless format to a corresponding UNORM format.

For example:

  • RGBA8_TYPELESS -> RGBA8_UNORM
  • BC1_TYPELESS -> BC1_UNORM

If the format is not typeless, or cannot be converted to UNORM, it is returned as is.

◆ UnormFormatToSRGB()

TEXTURE_FORMAT Diligent::UnormFormatToSRGB ( TEXTURE_FORMAT Fmt)

Converts UNORM format to a corresponding SRGB format.

For example:

  • RGBA8_UNORM -> RGBA8_UNORM_SRGB
  • BC3_UNORM -> BC3_UNORM_SRGB

◆ ValidatePipelineResourceCompatibility()

void Diligent::ValidatePipelineResourceCompatibility ( const PipelineResourceDesc & ResDesc,
SHADER_RESOURCE_TYPE Type,
PIPELINE_RESOURCE_FLAGS ResourceFlags,
Uint32 ArraySize,
const char * ShaderName,
const char * SignatureName )

Validates that pipeline resource description 'ResDesc' is compatible with the actual resource attributes and throws an exception in case of an error.

◆ ValidatePipelineResourceSignatureDesc()

void Diligent::ValidatePipelineResourceSignatureDesc ( const PipelineResourceSignatureDesc & Desc,
const IRenderDevice * pDevice,
RENDER_DEVICE_TYPE DeviceType )

Validates pipeline resource signature description and throws an exception in case of an error.

Note
pDevice can be null if PRS is used for serialization.

◆ ValueTypeToComponentType()

COMPONENT_TYPE Diligent::ValueTypeToComponentType ( VALUE_TYPE ValType,
bool IsNormalized,
bool IsSRGB )

Converts value type to component type.

For example:

  • VT_UINT8, true, false -> COMPONENT_TYPE_UNORM
  • VT_UINT8, false, false -> COMPONENT_TYPE_UINT
  • VT_UINT8, true, true -> COMPONENT_TYPE_UNORM_SRGB
Note
Use GetValueSize() to get the component size.

◆ WriteDDSToStream()

bool Diligent::WriteDDSToStream ( IFileStream * pFileStream,
const TextureDesc & Desc,
const TextureData & TexData )

Writes texture as DDS to a file stream.

Parameters
[in]pFileStream- File stream.
[in]Desc- Texture description.
[in]TexData- Texture subresource data.
Returns
true if the texture has been written successfully, and false otherwise.