Diligent namespace

The library uses Direct3D-style math:

Unique identification structures.

Namespace for the OpenGL implementation of the graphics engine.

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

Graphics engine namespace.

  • 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.

Classes

struct APIInfo
Diligent API Info. This tructure can be used to verify API compatibility.
struct AttachmentReference
Attachment reference description.
class BasicFileStream
Basic file stream implementation.
struct BeginRenderPassAttribs
BeginRenderPass command attributes.
struct BindingTableVk
This structure contains the data that can be used as input arguments for vkCmdTraceRaysKHR() command.
struct BLASBoundingBoxDesc
Defines bottom level acceleration structure axis-aligned bounding boxes description.
struct BLASBuildBoundingBoxData
AABB geometry data description.
struct BLASBuildTriangleData
Triangle geometry data description.
struct BLASTriangleDesc
Defines bottom level acceleration structure triangles description.
struct BlendStateDesc
Blend state description.
template<typename EngineImplTraits>
class BottomLevelASBase
Template class implementing base functionality of the bottom-level acceleration structure object.
class BottomLevelASD3D12Impl
Bottom-level acceleration structure object implementation in Direct3D12 backend.
struct BottomLevelASDesc
Bottom-level AS description.
struct Box
Box.
template<typename EngineImplTraits>
class BufferBase
Template class implementing base functionality of the buffer object.
class BufferD3D11Impl
Buffer object implementation in Direct3D11 backend.
class BufferD3D12Impl
Buffer object implementation in Direct3D12 backend.
struct BufferData
Describes the buffer initial data.
struct BufferDesc
Buffer description.
struct BufferFormat
Buffer format description.
class BufferGLImpl
Buffer object implementation in OpenGL backend.
struct BufferSuballocatorCreateInfo
Buffer suballocator create information.
struct BufferToTextureCopyInfo
Information required to perform a copy operation between a buffer and a texture.
template<typename EngineImplTraits>
class BufferViewBase
Template class implementing base functionality of the buffer view object.
class BufferViewD3D11Impl
Buffer view implementation in Direct3D11 backend.
class BufferViewD3D12Impl
Buffer view implementation in Direct3D12 backend.
struct BufferViewDesc
Buffer view description.
class BufferViewGLImpl
Buffer view implementation in OpenGL backend.
class BufferViewVkImpl
Buffer view implementation in Vulkan backend.
class BufferVkImpl
Buffer object implementation in Vulkan backend.
struct BuildBLASAttribs
This structure is used by IDeviceContext::BuildBLAS().
struct BuildTLASAttribs
This structure is used by IDeviceContext::BuildTLAS().
class ComErrorDesc
Helper class that provides description of a COM error.
template<typename EngineImplTraits>
class CommandListBase
Template class implementing base functionality of the command list object.
class CommandListD3D11Impl
Command list implementation in Direct3D11 backend.
class CommandListD3D12Impl
Command list implementation in Direct3D12 backend.
class CommandListVkImpl
Command list implementation in Vulkan backend.
class CommandQueueD3D12Impl
Implementation of the Diligent::ICommandQueueD3D12 interface.
class CommandQueueVkImpl
Implementation of the Diligent::ICommandQueueVk interface.
struct ComputePipelineStateCreateInfo
Compute pipeline state description.
struct CopyBLASAttribs
This structure is used by IDeviceContext::CopyBLAS().
struct CopyTextureAttribs
Defines copy texture command attributes.
struct CopyTLASAttribs
This structure is used by IDeviceContext::CopyTLAS().
struct D3D11ResourceBindPoints
Resource binding points in all shader stages.
struct D3D11ResourceRangeCounters
Shader resource counters for one specific resource range.
class D3D12ResourceBase
Base implementation of a D3D12 resource.
class DataBlobImpl
Base interface for a data blob.
struct DepthStencilClearValue
Defines optimized depth-stencil clear value.
struct DepthStencilStateDesc
Depth stencil state description.
struct DeviceCaps
Device capabilities.
template<typename EngineImplTraits>
class DeviceContextBase
Base implementation of the device context.
class DeviceContextD3D11Impl
Device context implementation in Direct3D11 backend.
class DeviceContextD3D12Impl
Device context implementation in Direct3D12 backend.
class DeviceContextGLImpl
Device context implementation in OpenGL backend.
template<typename EngineImplTraits>
class DeviceContextNextGenBase
Base implementation of the device context for next-generation backends.
class DeviceContextVkImpl
Device context implementation in Vulkan backend.
struct DeviceFeatures
Describes the device features.
struct DeviceObjectAttribs
Describes common device object attributes.
template<class BaseInterface, typename RenderDeviceImplType, typename ObjectDescType>
class DeviceObjectBase
Template class implementing base functionality of the device object.
struct DeviceProperties
Device properties.
struct DispatchComputeAttribs
Describes dispatch command arguments.
struct DispatchComputeIndirectAttribs
Describes dispatch command arguments.
struct DisplayModeAttribs
Display mode attributes.
struct DrawAttribs
Defines the draw command attributes.
struct DrawIndexedAttribs
Defines the indexed draw command attributes.
struct DrawIndexedIndirectAttribs
Defines the indexed indirect draw command attributes.
struct DrawIndirectAttribs
Defines the indirect draw command attributes.
struct DrawMeshAttribs
Defines the mesh draw command attributes.
struct DrawMeshIndirectAttribs
Defines the mesh indirect draw command attributes.
struct DrawMeshIndirectCountAttribs
Defines the mesh indirect draw count command attributes.
class DurationQueryHelper
Helper class to manage duration queries. One DurationQueryHelper instance must be used once per frame.
class DynamicAtlasManager
Dynamic 2D atlas manager.
class DynamicBuffer
Dynamically resizable buffer.
class DynamicLinearAllocator
Implementation of a linear allocator on fixed memory pages.
class DynamicStaleResourceWrapper
Helper class that wraps stale resources of different types.
struct DynamicTextureAtlasCreateInfo
Dynamic texture atlas create information.
struct EngineCreateInfo
Engine creation attibutes.
struct EngineD3D11CreateInfo
Attributes specific to D3D11 engine.
struct EngineD3D12CreateInfo
Attributes specific to D3D12 engine.
template<class BaseInterface>
class EngineFactoryBase
Template class implementing base functionality of the engine factory.
class EngineFactoryD3D11Impl
Engine factory for D3D11 implementation.
class EngineFactoryD3D12Impl
Engine factory for D3D12 implementation.
class EngineFactoryOpenGLImpl
Engine factory for OpenGL implementation.
class EngineFactoryVkImpl
Engine factory for Vk implementation.
struct EngineGLCreateInfo
Attributes of the OpenGL-based engine implementation.
struct EngineMtlCreateInfo
Attributes of the Metal-based engine implementation.
struct EngineVkCreateInfo
Attributes specific to Vulkan engine.
class FastRand
Fast random number generator.
class FastRandInt
Generates an integer random number in [Min, Max] range.
template<typename Type>
class FastRandReal
Generates a real random number in [Min, Max] range.
template<typename EngineImplTraits>
class FenceBase
Template class implementing base functionality of the fence object.
class FenceD3D11Impl
Fence implementation in Direct3D11 backend.
class FenceD3D12Impl
Fence implementation in Direct3D12 backend.
struct FenceDesc
Fence description.
class FenceGLImpl
Fence object implementation in OpenGL backend.
class FenceVkImpl
Fence implementation in Vulkan backend.
class FixedBlockMemoryAllocator
Memory allocator that allocates memory in a fixed-size chunks.
class FixedLinearAllocator
Implementation of a linear allocator on a fixed-size memory page.
template<typename EngineImplTraits>
class FramebufferBase
Template class implementing base functionality of the framebuffer object.
class FramebufferD3D11Impl
Render pass implementation in Direct3D11 backend.
class FramebufferD3D12Impl
Render pass implementation in Direct3D12 backend.
struct FramebufferDesc
Framebuffer description.
class FramebufferGLImpl
Framebuffer implementation in OpenGL backend.
class FramebufferVkImpl
Framebuffer implementation in Vulkan backend.
struct FullScreenModeDesc
Full screen mode description.
struct GraphicsAdapterInfo
Graphics adapter properties.
struct GraphicsPipelineDesc
Graphics pipeline state description.
struct GraphicsPipelineStateCreateInfo
Graphics pipeline state creation attributes.
struct HashMapStringKey
This helper structure is intended to facilitate using strings as a hash table key. It provides constructors that can make a copy of the source string or just keep a pointer to it, which enables searching in the hash using raw const Char* pointers.
class HLSL2GLSLConverterImpl
HLSL to GLSL shader source code converter implementation.
class HLSL2GLSLConverterObject
Implementation of the Diligent::IHLSL2GLSLConverter interface.
struct HLSLShaderResourceDesc
HLSL resource description.
struct IBottomLevelAS
Bottom-level AS interface.
struct IBottomLevelASD3D12
Exposes Direct3D12-specific functionality of a bottom-level acceleration structure object.
struct IBottomLevelASVk
Exposes Vulkan-specific functionality of a Bottom-level acceleration structure object.
struct IBuffer
Buffer interface.
struct IBufferD3D11
Exposes Direct3D11-specific functionality of a buffer object.
struct IBufferD3D12
Exposes Direct3D12-specific functionality of a buffer object.
struct IBufferGL
Exposes OpenGL-specific functionality of a buffer object.
class IBufferMtl
Exposes Metal-specific functionality of a buffer object.
struct IBufferSuballocation
Buffer suballocation.
struct IBufferSuballocator
Buffer suballocator.
struct IBufferView
Buffer view interface.
struct IBufferViewD3D11
Exposes Direct3D11-specific functionality of a buffer view object.
struct IBufferViewD3D12
Exposes Direct3D12-specific functionality of a buffer view object.
struct IBufferViewGL
Exposes OpenGL-specific functionality of a buffer view object.
class IBufferViewMtl
Exposes Metal-specific functionality of a buffer view object.
struct IBufferViewVk
Exposes Vulkan-specific functionality of a buffer view object.
struct IBufferVk
Exposes Vulkan-specific functionality of a buffer object.
class ICommandList
Command list interface.
struct ICommandQueueD3D12
Command queue interface.
struct ICommandQueueVk
Command queue interface.
struct IDataBlob
Base interface for a file stream.
struct IDeviceContext
Device context interface.
struct IDeviceContextD3D11
Exposes Direct3D11-specific functionality of a device context.
struct IDeviceContextD3D12
Exposes Direct3D12-specific functionality of a device context.
struct IDeviceContextGL
Exposes OpenGL-specific functionality of a device context.
class IDeviceContextMtl
Exposes Metal-specific functionality of a device context.
struct IDeviceContextVk
Exposes Vulkan-specific functionality of a device context.
struct IDeviceObject
Base interface for all objects created by the render device Diligent::IRenderDevice.
class IDXCompiler
DXC compiler interface.
struct IDynamicTextureAtlas
Dynamic texture atlas.
struct IEngineFactory
Engine factory base interface.
struct IEngineFactoryD3D11
Engine factory for Direct3D11 rendering backend.
struct IEngineFactoryD3D12
Engine factory for Direct3D12 rendering backend.
struct IFence
Fence interface.
class IFenceD3D11
Exposes Direct3D11-specific functionality of a fence object.
struct IFenceD3D12
Exposes Direct3D12-specific functionality of a fence object.
struct IFenceGL
Exposes OpenGL-specific functionality of a fence object.
class IFenceMtl
Exposes Metal-specific functionality of a fence object.
struct IFenceVk
Exposes Vulkan-specific functionality of a fence object.
struct IFileStream
Base interface for a file stream.
class IFramebuffer
Framebuffer interface.
struct IFramebufferVk
Exposes Vulkan-specific functionality of a Framebuffer object.
struct IHLSL2GLSLConverter
Interface to the buffer object implemented in OpenGL.
struct IMemoryAllocator
Base interface for a raw memory allocator.
struct ImmutableSamplerDesc
Immutable sampler description.
struct InputLayoutDesc
Layout description.
struct InstanceMatrix
Row-major matrix.
struct INTERFACE_ID
Unique interface identifier.
struct IObject
Base interface for all dynamic objects in the engine.
struct IPipelineResourceSignature
Pipeline resource signature interface.
struct IPipelineState
Pipeline state interface.
struct IPipelineStateD3D11
Exposes Direct3D11-specific functionality of a pipeline state object.
struct IPipelineStateD3D12
Exposes Direct3D12-specific functionality of a pipeline state object.
struct IPipelineStateGL
Exposes OpenGL-specific functionality of a pipeline state object.
class IPipelineStateMtl
Exposes Metal-specific functionality of a pipeline state object.
struct IPipelineStateVk
Exposes Vulkan-specific functionality of a pipeline state object.
struct IQuery
Query interface.
struct IQueryD3D11
Exposes Direct3D11-specific functionality of a Query object.
struct IQueryD3D12
Exposes Direct3D12-specific functionality of a Query object.
struct IQueryGL
Exposes OpenGL-specific functionality of a Query object.
class IQueryMtl
Exposes Metal-specific functionality of a Query object.
struct IQueryVk
Exposes Vulkan-specific functionality of a Query object.
class IReferenceCounters
Base interface for a reference counter object that stores the number of strong and weak references and the pointer to the object. It is necessary to separate reference counters from the object to support weak pointers.
struct IRenderDevice
Render device interface.
struct IRenderDeviceD3D11
Exposes Direct3D11-specific functionality of a render device.
struct IRenderDeviceD3D12
Exposes Direct3D12-specific functionality of a render device.
struct IRenderDeviceGL
Exposes OpenGL-specific functionality of a render device.
class IRenderDeviceGLES
Interface to the render device object implemented in OpenGLES.
class IRenderDeviceMtl
Exposes Metal-specific functionality of a render device.
struct IRenderDeviceVk
Exposes Vulkan-specific functionality of a render device.
class IRenderPass
Render pass interface.
struct IRenderPassVk
Exposes Vulkan-specific functionality of a RenderPass object.
struct IResourceMapping
Resouce mapping.
struct ISampler
Texture sampler interface.
struct ISamplerD3D11
Exposes Direct3D11-specific functionality of a sampler object.
struct ISamplerD3D12
Exposes Direct3D12-specific functionality of a sampler object.
struct ISamplerGL
Exposes OpenGL-specific functionality of a sampler object.
class ISamplerMtl
Exposes Metal-specific functionality of a sampler object.
struct ISamplerVk
Exposes Vulkan-specific functionality of a sampler object.
struct IShader
Shader interface.
struct IShaderBindingTable
Shader binding table interface.
struct IShaderBindingTableD3D12
Exposes Direct3D12-specific functionality of a shader binding table object.
struct IShaderBindingTableVk
Exposes Vulkan-specific functionality of a Shader binding table object.
struct IShaderD3D
Exposes Direct3D-specific functionality of a shader object.
struct IShaderD3D11
Exposes Direct3D11-specific functionality of a shader object.
struct IShaderD3D12
Exposes Direct3D12-specific functionality of a shader object.
struct IShaderGL
Exposes OpenGL-specific functionality of a shader object.
class IShaderMtl
Exposes Metal-specific functionality of a shader object.
struct IShaderResourceBinding
Shader resource binding interface.
struct IShaderResourceBindingD3D11
Exposes Direct3D11-specific functionality of a shader resource binding object.
struct IShaderResourceBindingD3D12
Exposes Direct3D12-specific functionality of a shader resource binding.
struct IShaderResourceBindingGL
Exposes OpenGL-specific functionality of a shader resource binding object.
class IShaderResourceBindingMtl
Exposes Metal-specific functionality of a shader resource binding object.
struct IShaderResourceBindingVk
Exposes Vulkan-specific functionality of a shader resource binding object.
struct IShaderResourceVariable
Shader resource variable.
class IShaderResourceVariableD3D
Interface to the Direct3D ShaderResourceVariable resource variable.
struct IShaderSourceInputStreamFactory
Shader source stream factory interface.
class IShaderVk
Exposes Vulkan-specific functionality of a shader object.
struct ISwapChain
Swap chain interface.
struct ISwapChainD3D11
Exposes Direct3D11-specific functionality of a swap chain.
struct ISwapChainD3D12
Exposes Direct3D12-specific functionality of a swap chain.
struct ISwapChainGL
Exposes OpenGL-specific functionality of a swap chain.
class ISwapChainMtl
Exposes Metal-specific functionality of a swap chain.
struct ISwapChainVk
Exposes Vulkan-specific functionality of a swap chain.
struct ITexture
Texture inteface.
struct ITextureAtlasSuballocation
Dynamic texture atlas suballocation.
struct ITextureD3D11
Exposes Direct3D11-specific functionality of a texture object.
struct ITextureD3D12
Exposes Direct3D12-specific functionality of a texture object.
struct ITextureGL
Exposes OpenGL-specific functionality of a texture object.
class ITextureMtl
Exposes Metal-specific functionality of a texture object.
class ITextureUploader
Asynchronous texture uplader.
struct ITextureView
Texture view interface.
struct ITextureViewD3D11
Exposes Direct3D11-specific functionality of a texture view object.
struct ITextureViewD3D12
Exposes Direct3D12-specific functionality of a texture view object.
struct ITextureViewGL
Exposes OpenGL-specific functionality of a texture view object.
class ITextureViewMtl
Exposes Metal-specific functionality of a texture view object.
struct ITextureViewVk
Exposes Vulkan-specific functionality of a texture view object.
struct ITextureVk
Exposes Vulkan-specific functionality of a texture object.
struct ITopLevelAS
Top-level AS interface.
struct ITopLevelASD3D12
Exposes Direct3D12-specific functionality of a top-level acceleration structure object.
struct ITopLevelASVk
Exposes Vulkan-specific functionality of a Top-level acceleration structure object.
struct LayoutElement
Description of a single element of the input layout.
struct LinearTexFilterSampleInfo
Linear texture filter sample info.
template<typename DataType, bool KeepStrongReferences = false>
class MapHelper
Facilitates resource mapping.
class MemoryFileStream
Memory file stream implementation.
struct MipLevelProperties
Describes the mip level properties.
template<typename BaseInterface>
class ObjectBase
Template class implementing base functionality for an object.
struct OptimizedClearValue
Defines optimized clear value.
class PipelineLayoutVk
Implementation of the Diligent::PipelineLayoutVk class.
struct PipelineResourceDesc
Pipeline resource description.
struct PipelineResourceLayoutDesc
Pipeline layout description.
template<typename EngineImplTraits>
class PipelineResourceSignatureBase
Template class implementing base functionality of the pipeline resource signature object.
class PipelineResourceSignatureD3D11Impl
Implementation of the Diligent::PipelineResourceSignatureD3D11Impl class.
class PipelineResourceSignatureD3D12Impl
Implementation of the Diligent::PipelineResourceSignatureD3D12Impl class.
struct PipelineResourceSignatureDesc
Pipeline resource signature description.
class PipelineResourceSignatureGLImpl
Implementation of the Diligent::PipelineResourceSignatureGLImpl class.
class PipelineResourceSignatureVkImpl
Implementation of the Diligent::PipelineResourceSignatureVkImpl class.
template<typename EngineImplTraits>
class PipelineStateBase
Template class implementing base functionality of the pipeline state object.
struct PipelineStateCreateInfo
Pipeline state creation attributes.
class PipelineStateD3D11Impl
Pipeline state object implementation in Direct3D11 backend.
class PipelineStateD3D12Impl
Pipeline state object implementation in Direct3D12 backend.
struct PipelineStateDesc
Pipeline state description.
class PipelineStateGLImpl
Pipeline state object implementation in OpenGL backend.
class PipelineStateVkImpl
Pipeline state object implementation in Vulkan backend.
template<typename EngineImplTraits>
class QueryBase
Template class implementing base functionality of the query object.
class QueryD3D11Impl
Query implementation in Direct3D11 backend.
class QueryD3D12Impl
Query implementation in Direct3D12 backend.
struct QueryDataBinaryOcclusion
Binary occlusion query data. This structure is filled by IQuery::GetData() for Diligent::QUERY_TYPE_BINARY_OCCLUSION query type.
struct QueryDataDuration
Duration query data. This structure is filled by IQuery::GetData() for Diligent::QUERY_TYPE_DURATION query type.
struct QueryDataOcclusion
Occlusion query data. This structure is filled by IQuery::GetData() for Diligent::QUERY_TYPE_OCCLUSION query type.
struct QueryDataPipelineStatistics
Pipeline statistics query data. This structure is filled by IQuery::GetData() for Diligent::QUERY_TYPE_PIPELINE_STATISTICS query type.
struct QueryDataTimestamp
Timestamp query data. This structure is filled by IQuery::GetData() for Diligent::QUERY_TYPE_TIMESTAMP query type.
struct QueryDesc
Query description.
class QueryGLImpl
Query object implementation in OpenGL backend.
class QueryVkImpl
Query implementation in Vulkan backend.
struct RasterizerStateDesc
Rasterizer state description.
struct RayTracingGeneralShaderGroup
Ray tracing general shader group description.
struct RayTracingPipelineDesc
This structure describes the ray tracing pipeline state and is part of the RayTracingPipelineStateCreateInfo structure.
struct RayTracingPipelineStateCreateInfo
Ray tracing pipeline state description.
struct RayTracingProceduralHitShaderGroup
Ray tracing procedural hit shader group description.
struct RayTracingTriangleHitShaderGroup
Ray tracing triangle hit shader group description.
struct Rect
Describes the rectangle.
template<typename T>
class RefCntAutoPtr
Template class that implements reference counting.
template<typename T>
class RefCntWeakPtr
Implementation of weak pointers.
template<typename Base>
class RefCountedObject
Base class for all reference counting objects.
template<typename EngineImplTraits>
class RenderDeviceBase
Base implementation of a render device.
class RenderDeviceD3D11Impl
Render device implementation in Direct3D11 backend.
class RenderDeviceD3D12Impl
Render device implementation in Direct3D12 backend.
template<typename EngineImplTraits>
class RenderDeviceD3DBase
Base implementation of a D3D render device.
class RenderDeviceGLImpl
Render device implementation in OpenGL backend.
template<class TBase, typename CommandQueueType>
class RenderDeviceNextGenBase
Base implementation of the render device for next-generation backends.
class RenderDeviceVkImpl
Render device implementation in Vulkan backend.
struct RenderPassAttachmentDesc
Render pass attachment description.
template<typename EngineImplTraits>
class RenderPassBase
Template class implementing base functionality of the render pass object.
class RenderPassD3D11Impl
Render pass implementation in Direct3D11 backend.
class RenderPassD3D12Impl
Render pass implementation in Direct3D12 backend.
struct RenderPassDesc
Render pass description.
class RenderPassGLImpl
Render pass implementation in OpenGL backend.
class RenderPassVkImpl
Render pass implementation in Vulkan backend.
struct RenderTargetBlendDesc
Describes a blend state for a single render target.
struct ResolveTextureSubresourceAttribs
Describes multi-sampled texture resolve command arguments.
struct ResourceMappingDesc
Resource mapping description.
struct ResourceMappingEntry
Describes the resourse mapping object entry.
class ResourceMappingImpl
Implementation of the resource mapping.
template<typename ResourceWrapperType>
class ResourceReleaseQueue
Facilitates safe resource destruction in D3D12 and Vulkan.
class RingBuffer
Implementation of a ring buffer. The class is not thread-safe.
class RootParamsManager
Container for root parameters.
class RootSignatureCacheD3D12
Root signature cache that deduplicates RootSignatureD3D12 objects.
class RootSignatureD3D12
Implementation of the Diligent::RootSignature class.
struct SampleDesc
Sample description.
template<typename EngineImplTraits>
class SamplerBase
Template class implementing base functionality of the sampler object.
struct SamplerCaps
Texture sampler capabilities.
class SamplerD3D11Impl
Sampler implementation in Direct3D11 backend.
class SamplerD3D12Impl
Sampler object implementation in Direct3D12 backend.
struct SamplerDesc
Sampler description.
class SamplerGLImpl
Sampler implementation in OpenGL backend.
class SamplerVkImpl
Sampler object object implementation in Vulkan backend.
class ScopedQueryHelper
Helper class to manage scoped queries. One scoped query instance must be used once per frame.
struct ScratchBufferSizes
Defines the scratch buffer info for acceleration structure.
template<typename EngineImplTraits>
class ShaderBase
Template class implementing base functionality of the shader object.
template<typename EngineImplTraits>
class ShaderBindingTableBase
Template class implementing base functionality of the shader binding table object.
class ShaderBindingTableD3D12Impl
Shader binding table object implementation in Direct3D12 backend.
struct ShaderBindingTableDesc
Shader binding table description.
struct ShaderCreateInfo
Shader creation attributes.
class ShaderD3D11Impl
Shader implementation in Direct3D11 backend.
class ShaderD3D12Impl
Implementation of a shader object in Direct3D12 backend.
class ShaderD3DBase
Base implementation of a D3D shader.
struct ShaderDesc
Shader description.
class ShaderGLImpl
Shader object implementation in OpenGL backend.
template<typename EngineImplTraits>
class ShaderResourceBindingBase
Template class implementing base functionality of the shader resource binding.
class ShaderResourceBindingD3D11Impl
Implementation of shader resource binding object in Direct3D11 backend.
class ShaderResourceBindingD3D12Impl
Implementation of the Diligent::IShaderResourceBindingD3D12 interface.
class ShaderResourceBindingGLImpl
Shader resource binding object implementation in OpenGL backend.
class ShaderResourceBindingVkImpl
Implementation of the Diligent::IShaderResourceBindingVk interface.
class ShaderResourceCacheD3D11
The class implements a cache that holds resources bound to all shader stages.
class ShaderResourceCacheGL
The class implements a cache that holds resources bound to a specific GL program.
struct ShaderResourceDesc
Shader resource description.
class ShaderResources
Diligent::ShaderResources class.
class ShaderResourcesD3D11
Diligent::ShaderResourcesD3D11 class.
class ShaderResourcesD3D12
Diligent::ShaderResourcesD3D12 class.
struct ShaderResourceVariableDesc
Describes shader variable.
template<typename ThisImplType, typename VarManagerType, typename ResourceVariableBaseInterface = IShaderResourceVariable>
struct ShaderVariableBase
Base implementation of a shader variable.
class ShaderVariableManagerD3D11
Diligent::ShaderVariableManagerD3D11 class.
struct ShaderVersion
Shader version.
class ShaderVkImpl
Shader object object implementation in Vulkan backend.
class SPIRVShaderResources
Diligent::SPIRVShaderResources class.
template<typename ResourceDescType>
class StateObjectsRegistry
Template class implementing state object registry.
struct StateTransitionDesc
Resource state transition barrier description.
template<typename ResourceType>
class StaticStaleResourceWrapper
Helper class that wraps stale resources of the same type.
struct StencilOpDesc
Describes stencil operations that are performed based on the results of depth test.
class StringDataBlobImpl
Base interface for a file stream.
class StringPool
Implementation of a simple fixed-size string pool.
struct SubpassDependencyDesc
Subpass dependency description.
struct SubpassDesc
Render pass subpass decription.
template<class BaseInterface>
class SwapChainBase
Base implementation of the swap chain.
class SwapChainD3D11Impl
Swap chain implementation in Direct3D11 backend.
class SwapChainD3D12Impl
Swap chain implementation in Direct3D12 backend.
template<class BaseInterface, typename DXGISwapChainType>
class SwapChainD3DBase
Base implementation of a D3D swap chain.
struct SwapChainDesc
Swap chain description.
template<class BaseInterface>
class SwapChainGLBase
Base implementation of a swap chain for OpenGL.
class SwapChainGLImpl
Swap chain implementation in OpenGL backend.
class SwapChainGLIOS
Implementation of the Diligent::ISwapChainGL interface on IOS.
class SwapChainVkImpl
Swap chain implementation in Vulkan backend.
class Texture1D_D3D11
Implementation of a 1D texture in Direct3D11 backend.
class Texture1D_GL
1D texture implementation in OpenGL backend.
class Texture1DArray_GL
1D texture array implementation in OpenGL backend.
class Texture2D_D3D11
Implementation of a 2D texture in Direct3D11 backend.
class Texture2D_GL
2D texture implementation in OpenGL backend.
class Texture2DArray_GL
2D texture array implementation in OpenGL backend.
class Texture3D_D3D11
Implementation of a 3D texture in Direct3D11 backend.
class Texture3D_GL
3D texture implementation in OpenGL backend.
template<typename EngineImplTraits>
class TextureBase
Base implementation of the ITexture interface.
class TextureBaseD3D11
Base implementation of a texture object in Direct3D11 backend.
class TextureBaseGL
Base implementation of a texture object in OpenGL backend.
struct TextureCaps
Texture capabilities.
class TextureCube_GL
Cube texture implementation in OpenGL backend.
class TextureCubeArray_GL
Cube array texture implementation in OpenGL backend.
class TextureD3D12Impl
Implementation of a texture object in Direct3D12 backend.
struct TextureData
Describes the initial data to store in the texture.
struct TextureDesc
Texture description.
struct TextureFormatAttribs
Describes invariant texture format attributes. These attributes are intrinsic to the texture format itself and do not depend on the format support.
struct TextureFormatInfo
Basic texture format description.
struct TextureFormatInfoExt
Extended texture format information.
struct TextureSubResData
Describes data for one subresource.
struct TextureUploaderDesc
Texture uploader description.
struct TextureUploaderStats
Texture uploader statistics.
template<typename EngineImplTraits>
class TextureViewBase
Template class implementing base functionality of the texture view interface.
class TextureViewD3D11Impl
Texture view implementation in Direct3D11 backend.
class TextureViewD3D12Impl
Texture view object implementation in Direct3D12 backend.
struct TextureViewDesc
Texture view description.
class TextureViewGLImpl
Texture view implementation in OpenGL backend.
class TextureViewVkImpl
Texture view implementation in Vulkan backend.
class TextureVkImpl
Texture object implementation in Vulkan backend.
struct TLASBuildInfo
Defines TLAS state that was used in the last build.
struct TLASBuildInstanceData
This structure is used by BuildTLASAttribs.
struct TLASInstanceDesc
Top-level AS instance description.
template<typename EngineImplTraits>
class TopLevelASBase
Template class implementing base functionality of the top-level acceleration structure object.
class TopLevelASD3D12Impl
Top-level acceleration structure object implementation in Direct3D12 backend.
struct TopLevelASDesc
Top-level AS description.
struct TraceRaysAttribs
This structure is used by IDeviceContext::TraceRays().
struct TraceRaysIndirectAttribs
This structure is used by IDeviceContext::TraceRaysIndirect().
struct UpdateIndirectRTBufferAttribs
This structure is used by IDeviceContext::UpdateSBT().
struct UploadBufferDesc
Upload buffer description.
template<VALUE_TYPE ValType>
struct VALUE_TYPE2CType
Template structure to convert VALUE_TYPE enumeration into C-type.
template<>
struct VALUE_TYPE2CType<VT_FLOAT16>
VALUE_TYPE2CType<> template specialization for half-precision 16-bit floating-point value type.
template<>
struct VALUE_TYPE2CType<VT_FLOAT32>
VALUE_TYPE2CType<> template specialization for full-precision 32-bit floating-point value type.
template<>
struct VALUE_TYPE2CType<VT_INT16>
VALUE_TYPE2CType<> template specialization for 16-bit integer value type.
template<>
struct VALUE_TYPE2CType<VT_INT32>
VALUE_TYPE2CType<> template specialization for 32-bit integer value type.
template<>
struct VALUE_TYPE2CType<VT_INT8>
VALUE_TYPE2CType<> template specialization for 8-bit integer value type.
template<>
struct VALUE_TYPE2CType<VT_UINT16>
VALUE_TYPE2CType<> template specialization for 16-bit unsigned-integer value type.
template<>
struct VALUE_TYPE2CType<VT_UINT32>
VALUE_TYPE2CType<> template specialization for 32-bit unsigned-integer value type.
template<>
struct VALUE_TYPE2CType<VT_UINT8>
VALUE_TYPE2CType<> template specialization for 8-bit unsigned-integer value type.
template<typename BufferImplType>
struct VertexStreamInfo
Describes input vertex stream.
struct Viewport
Describes the viewport.
struct VulkanDescriptorPoolSize
Descriptor pool size.
struct WaveOpProperties
Wave operation properties.
struct WriteBLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteBLASCompactedSize().
struct WriteTLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteTLASCompactedSize().

Enums

enum class ResourceCacheContentType: Uint8 { Signature, SRB }
The type of the content that is stored in the shader resource cache.
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.
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.
enum COLOR_MASK: Int8 { COLOR_MASK_NONE = 0, COLOR_MASK_RED = 1, COLOR_MASK_GREEN = 2, COLOR_MASK_BLUE = 4, COLOR_MASK_ALPHA = 8, COLOR_MASK_ALL = (((COLOR_MASK_RED | COLOR_MASK_GREEN) | COLOR_MASK_BLUE) | COLOR_MASK_ALPHA) }
Color component write flags.
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.
enum RAYTRACING_BUILD_AS_FLAGS: Uint8 { RAYTRACING_BUILD_AS_NONE = 0, RAYTRACING_BUILD_AS_ALLOW_UPDATE = 0x01, RAYTRACING_BUILD_AS_ALLOW_COMPACTION = 0x02, RAYTRACING_BUILD_AS_PREFER_FAST_TRACE = 0x04, RAYTRACING_BUILD_AS_PREFER_FAST_BUILD = 0x08, RAYTRACING_BUILD_AS_LOW_MEMORY = 0x10, RAYTRACING_BUILD_AS_FLAGS_LAST = RAYTRACING_BUILD_AS_LOW_MEMORY }
Defines acceleration structures build flags.
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.
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.
enum DRAW_FLAGS: Uint8 { DRAW_FLAG_NONE = 0x00, DRAW_FLAG_VERIFY_STATES = 0x01, DRAW_FLAG_VERIFY_DRAW_ATTRIBS = 0x02, DRAW_FLAG_VERIFY_RENDER_TARGETS = 0x04, DRAW_FLAG_VERIFY_ALL = DRAW_FLAG_VERIFY_STATES | DRAW_FLAG_VERIFY_DRAW_ATTRIBS | DRAW_FLAG_VERIFY_RENDER_TARGETS, DRAW_FLAG_DYNAMIC_RESOURCE_BUFFERS_INTACT = 0x08 }
Draw command flags.
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.
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.
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.
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_FLAGS_LAST = RAYTRACING_INSTANCE_FORCE_NO_OPAQUE }
TLAS instance flags that are used in IDeviceContext::BuildTLAS().
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.
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_FLAGS_LAST = RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANY_HIT_INVOCATION }
Defines geometry flags for ray tracing.
enum VALUE_TYPE: Uint8 { VT_UNDEFINED = 0, VT_INT8, VT_INT16, VT_INT32, VT_UINT8, VT_UINT16, VT_UINT32, VT_FLOAT16, VT_FLOAT32, VT_NUM_TYPES }
Value type.
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_LAST = SHADER_TYPE_CALLABLE, SHADER_TYPE_ALL_GRAPHICS = SHADER_TYPE_VERTEX | SHADER_TYPE_PIXEL | SHADER_TYPE_GEOMETRY | SHADER_TYPE_HULL | SHADER_TYPE_DOMAIN, SHADER_TYPE_ALL_MESH = SHADER_TYPE_AMPLIFICATION | SHADER_TYPE_MESH | SHADER_TYPE_PIXEL, SHADER_TYPE_ALL_RAY_TRACING = SHADER_TYPE_RAY_GEN | SHADER_TYPE_RAY_MISS | SHADER_TYPE_RAY_CLOSEST_HIT | SHADER_TYPE_RAY_ANY_HIT | SHADER_TYPE_RAY_INTERSECTION | SHADER_TYPE_CALLABLE }
Describes the shader type.
enum BIND_FLAGS: Uint32 { BIND_NONE = 0x0, BIND_VERTEX_BUFFER = 0x1, BIND_INDEX_BUFFER = 0x2, BIND_UNIFORM_BUFFER = 0x4, BIND_SHADER_RESOURCE = 0x8, BIND_STREAM_OUTPUT = 0x10, BIND_RENDER_TARGET = 0x20, BIND_DEPTH_STENCIL = 0x40, BIND_UNORDERED_ACCESS = 0x80, BIND_INDIRECT_DRAW_ARGS = 0x100, BIND_INPUT_ATTACHMENT = 0x200, BIND_RAY_TRACING = 0x400, BIND_FLAGS_LAST = 0x400 }
Resource binding flags.
enum USAGE: Uint8 { USAGE_IMMUTABLE = 0, USAGE_DEFAULT, USAGE_DYNAMIC, USAGE_STAGING, USAGE_UNIFIED, USAGE_NUM_USAGES }
Resource usage.
enum CPU_ACCESS_FLAGS: Uint8 { CPU_ACCESS_NONE = 0x00, CPU_ACCESS_READ = 0x01, CPU_ACCESS_WRITE = 0x02 }
Allowed CPU access mode flags when mapping a resource.
enum MAP_TYPE: Uint8 { MAP_READ = 0x01, MAP_WRITE = 0x02, MAP_READ_WRITE = 0x03 }
Resource mapping type.
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.
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.
enum TEXTURE_VIEW_TYPE: Uint8 { TEXTURE_VIEW_UNDEFINED = 0, TEXTURE_VIEW_SHADER_RESOURCE, TEXTURE_VIEW_RENDER_TARGET, TEXTURE_VIEW_DEPTH_STENCIL, TEXTURE_VIEW_UNORDERED_ACCESS, TEXTURE_VIEW_NUM_VIEWS }
Texture view type.
enum BUFFER_VIEW_TYPE: Uint8 { BUFFER_VIEW_UNDEFINED = 0, BUFFER_VIEW_SHADER_RESOURCE, BUFFER_VIEW_UNORDERED_ACCESS, BUFFER_VIEW_NUM_VIEWS }
Buffer view type.
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_NUM_FORMATS }
Texture formats.
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.
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.
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.
enum MISC_TEXTURE_FLAGS: Uint8 { MISC_TEXTURE_FLAG_NONE = 0x00, MISC_TEXTURE_FLAG_GENERATE_MIPS = 0x01 }
Miscellaneous texture flags.
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_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.
enum ADAPTER_TYPE: Uint8 { ADAPTER_TYPE_UNKNOWN = 0, ADAPTER_TYPE_SOFTWARE, ADAPTER_TYPE_HARDWARE }
Hardware adapter type.
enum SCALING_MODE { SCALING_MODE_UNSPECIFIED = 0, SCALING_MODE_CENTERED = 1, SCALING_MODE_STRETCHED = 2 }
Flags indicating how an image is stretched to fit a given monitor's resolution.
enum SCANLINE_ORDER { SCANLINE_ORDER_UNSPECIFIED = 0, SCANLINE_ORDER_PROGRESSIVE = 1, SCANLINE_ORDER_UPPER_FIELD_FIRST = 2, SCANLINE_ORDER_LOWER_FIELD_FIRST = 3 }
Flags indicating the method the raster uses to create an image on a surface.
enum SWAP_CHAIN_USAGE_FLAGS: Uint32 { SWAP_CHAIN_USAGE_NONE = 0x00L, SWAP_CHAIN_USAGE_RENDER_TARGET = 0x01L, SWAP_CHAIN_USAGE_SHADER_INPUT = 0x02L, SWAP_CHAIN_USAGE_COPY_SOURCE = 0x04L, SWAP_CHAIN_USAGE_LAST = SWAP_CHAIN_USAGE_COPY_SOURCE }
Defines allowed swap chain usage flags.
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.
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.
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 }
Device type.
enum DEVICE_FEATURE_STATE: Uint8 { DEVICE_FEATURE_STATE_DISABLED = 0, DEVICE_FEATURE_STATE_ENABLED = 1, DEVICE_FEATURE_STATE_OPTIONAL = 2 }
Device feature state.
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 }
Graphics adapter vendor.
enum WAVE_FEATURE: Uint32 { WAVE_FEATURE_UNKNOWN = 0x00, WAVE_FEATURE_BASIC = 0x01, WAVE_FEATURE_VOTE = 0x02, WAVE_FEATURE_ARITHMETIC = 0x04, WAVE_FEATURE_BALLOUT = 0x08, WAVE_FEATURE_SHUFFLE = 0x10, WAVE_FEATURE_SHUFFLE_RELATIVE = 0x20, WAVE_FEATURE_CLUSTERED = 0x40, WAVE_FEATURE_QUAD = 0x80, WAVE_FEATURE_LAST = WAVE_FEATURE_QUAD }
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 doc/WaveOp.md.
enum D3D11_DEBUG_FLAGS: Uint32 { D3D11_DEBUG_FLAG_NONE = 0x00, D3D11_DEBUG_FLAG_CREATE_DEBUG_DEVICE = 0x01, D3D11_DEBUG_FLAG_VERIFY_COMMITTED_SHADER_RESOURCES = 0x02, D3D11_DEBUG_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE = 0x04 }
Debug flags that can be specified when creating Direct3D11-based engine implementation.
enum DIRECT3D_FEATURE_LEVEL: Uint8 { DIRECT3D_FEATURE_LEVEL_10_0, DIRECT3D_FEATURE_LEVEL_10_1, DIRECT3D_FEATURE_LEVEL_11_0, DIRECT3D_FEATURE_LEVEL_11_1, DIRECT3D_FEATURE_LEVEL_12_0, DIRECT3D_FEATURE_LEVEL_12_1 }
Direct3D11/12 feature level.
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.
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.
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.
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.
enum RESOURCE_STATE: Uint32 { RESOURCE_STATE_UNKNOWN = 0x00000, RESOURCE_STATE_UNDEFINED = 0x00001, RESOURCE_STATE_VERTEX_BUFFER = 0x00002, RESOURCE_STATE_CONSTANT_BUFFER = 0x00004, RESOURCE_STATE_INDEX_BUFFER = 0x00008, RESOURCE_STATE_RENDER_TARGET = 0x00010, RESOURCE_STATE_UNORDERED_ACCESS = 0x00020, RESOURCE_STATE_DEPTH_WRITE = 0x00040, RESOURCE_STATE_DEPTH_READ = 0x00080, RESOURCE_STATE_SHADER_RESOURCE = 0x00100, RESOURCE_STATE_STREAM_OUT = 0x00200, RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00400, RESOURCE_STATE_COPY_DEST = 0x00800, RESOURCE_STATE_COPY_SOURCE = 0x01000, RESOURCE_STATE_RESOLVE_DEST = 0x02000, RESOURCE_STATE_RESOLVE_SOURCE = 0x04000, RESOURCE_STATE_INPUT_ATTACHMENT = 0x08000, RESOURCE_STATE_PRESENT = 0x10000, RESOURCE_STATE_BUILD_AS_READ = 0x20000, RESOURCE_STATE_BUILD_AS_WRITE = 0x40000, RESOURCE_STATE_RAY_TRACING = 0x80000, RESOURCE_STATE_MAX_BIT = RESOURCE_STATE_RAY_TRACING, RESOURCE_STATE_GENERIC_READ = RESOURCE_STATE_VERTEX_BUFFER | RESOURCE_STATE_CONSTANT_BUFFER | RESOURCE_STATE_INDEX_BUFFER | RESOURCE_STATE_SHADER_RESOURCE | RESOURCE_STATE_INDIRECT_ARGUMENT | RESOURCE_STATE_COPY_SOURCE }
Resource usage state.
enum STATE_TRANSITION_TYPE: Uint8 { STATE_TRANSITION_TYPE_IMMEDIATE = 0, STATE_TRANSITION_TYPE_BEGIN, STATE_TRANSITION_TYPE_END }
State transition barrier type.
enum INPUT_ELEMENT_FREQUENCY { INPUT_ELEMENT_FREQUENCY_UNDEFINED = 0, INPUT_ELEMENT_FREQUENCY_PER_VERTEX, INPUT_ELEMENT_FREQUENCY_PER_INSTANCE, INPUT_ELEMENT_FREQUENCY_NUM_FREQUENCIES }
Input frequency.
enum PIPELINE_RESOURCE_FLAGS: Uint8 { PIPELINE_RESOURCE_FLAG_UNKNOWN = 0x00, PIPELINE_RESOURCE_FLAG_NO_DYNAMIC_BUFFERS = 0x01, PIPELINE_RESOURCE_FLAG_COMBINED_SAMPLER = 0x02, PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER = 0x04, PIPELINE_RESOURCE_FLAG_RUNTIME_ARRAY = 0x08, PIPELINE_RESOURCE_FLAG_LAST = PIPELINE_RESOURCE_FLAG_RUNTIME_ARRAY }
Flags that define pipeline resource properties.
enum PIPELINE_TYPE: Uint8 { PIPELINE_TYPE_GRAPHICS, PIPELINE_TYPE_COMPUTE, PIPELINE_TYPE_MESH, PIPELINE_TYPE_RAY_TRACING, PIPELINE_TYPE_LAST = PIPELINE_TYPE_RAY_TRACING, PIPELINE_TYPE_INVALID = 0xFF }
Pipeline type.
enum PSO_CREATE_FLAGS: Uint32 { PSO_CREATE_FLAG_NONE = 0x00, PSO_CREATE_FLAG_IGNORE_MISSING_VARIABLES = 0x01, PSO_CREATE_FLAG_IGNORE_MISSING_IMMUTABLE_SAMPLERS = 0x02 }
Pipeline state creation flags.
enum FILL_MODE: Int8 { FILL_MODE_UNDEFINED = 0, FILL_MODE_WIREFRAME, FILL_MODE_SOLID, FILL_MODE_NUM_MODES }
Fill mode.
enum CULL_MODE: Int8 { CULL_MODE_UNDEFINED = 0, CULL_MODE_NONE, CULL_MODE_FRONT, CULL_MODE_BACK, CULL_MODE_NUM_MODES }
Cull mode.
enum ATTACHMENT_LOAD_OP: Uint8 { ATTACHMENT_LOAD_OP_LOAD = 0, ATTACHMENT_LOAD_OP_CLEAR, ATTACHMENT_LOAD_OP_DISCARD }
Render pass attachment load operation Vulkan counterpart: VkAttachmentLoadOp. D3D12 counterpart: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE.
enum ATTACHMENT_STORE_OP: Uint8 { ATTACHMENT_STORE_OP_STORE = 0, ATTACHMENT_STORE_OP_DISCARD }
Render pass attachment store operation Vulkan counterpart: VkAttachmentStoreOp. D3D12 counterpart: D3D12_RENDER_PASS_ENDING_ACCESS_TYPE.
enum SHADER_SOURCE_LANGUAGE: Uint32 { SHADER_SOURCE_LANGUAGE_DEFAULT = 0, SHADER_SOURCE_LANGUAGE_HLSL, SHADER_SOURCE_LANGUAGE_GLSL, SHADER_SOURCE_LANGUAGE_MSL, SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM }
Describes the shader source code language.
enum SHADER_COMPILER: Uint32 { SHADER_COMPILER_DEFAULT = 0, SHADER_COMPILER_GLSLANG, SHADER_COMPILER_DXC, SHADER_COMPILER_FXC, SHADER_COMPILER_LAST = SHADER_COMPILER_FXC }
Describes the shader compiler that will be used to compile the shader source code.
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.
enum SHADER_COMPILE_FLAGS: Uint32 { SHADER_COMPILE_FLAG_NONE = 0x0, SHADER_COMPILE_FLAG_ENABLE_UNBOUNDED_ARRAYS = 0x01, SHADER_COMPILE_FLAG_LAST = SHADER_COMPILE_FLAG_ENABLE_UNBOUNDED_ARRAYS }
Shader compilation flags.
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.
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 = VERIFY_SBT_FLAG_SHADER_ONLY | VERIFY_SBT_FLAG_SHADER_RECORD | VERIFY_SBT_FLAG_TLAS }
Defines shader binding table validation flags, see IShaderBindingTable::Verify().
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.
enum BIND_SHADER_RESOURCES_FLAGS: Uint32 { BIND_SHADER_RESOURCES_UPDATE_STATIC = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_STATIC), BIND_SHADER_RESOURCES_UPDATE_MUTABLE = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_MUTABLE), BIND_SHADER_RESOURCES_UPDATE_DYNAMIC = (0x01 << SHADER_RESOURCE_VARIABLE_TYPE_DYNAMIC), BIND_SHADER_RESOURCES_UPDATE_ALL = (BIND_SHADER_RESOURCES_UPDATE_STATIC | BIND_SHADER_RESOURCES_UPDATE_MUTABLE | BIND_SHADER_RESOURCES_UPDATE_DYNAMIC), BIND_SHADER_RESOURCES_KEEP_EXISTING = 0x08, BIND_SHADER_RESOURCES_VERIFY_ALL_RESOLVED = 0x10 }
Shader resource binding flags.
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 }
Describes allowed unordered access view mode.
enum TEXTURE_VIEW_FLAGS: Uint8 { TEXTURE_VIEW_FLAG_NONE = 0x00, TEXTURE_VIEW_FLAG_ALLOW_MIP_MAP_GENERATION = 0x01 }
Texture view flags.
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.
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.

Typedefs

using D3D11ShaderResourceCounters = std::array<D3D11ResourceRangeCounters, D3D11_RESOURCE_RANGE_COUNT>
Resource counters for all shader stages and all resource types.
using Float32 = float
32-bit float
using Int64 = int64_t
64-bit signed integer
using Int32 = int32_t
32-bit signed integer
using Int16 = int16_t
16-bit signed integer
using Int8 = int8_t
8-bit signed integer
using Uint64 = uint64_t
64-bit unsigned integer
using Uint32 = uint32_t
32-bit unsigned integer
using Uint16 = uint16_t
16-bit unsigned integer
using Uint8 = uint8_t
8-bit unsigned integer
using Bool = bool
Boolean.
using String = std::basic_string<Char>
String variable.
using DebugMessageCallbackType = void(*)(enum DEBUG_MESSAGE_SEVERITY Severity, const Char*Message, const Char*Function, const Char*File, int Line)
Type of the debug messag callback function.

Functions

auto GetBoxNearestCorner(const float3& Direction, const BoundBox& Box) -> float3
Returns the nearest bounding box corner along the given direction.
auto GetBoxFarthestCorner(const float3& Direction, const BoundBox& Box) -> float3
Returns the farthest bounding box corner along the given direction.
auto IntersectRayBox3D(const float3& RayOrigin, const float3& RayDirection, float3 BoxMin, float3 BoxMax, float& EnterDist, float& ExitDist) -> bool
Intersects a ray with 3D box and computes distances to intersections.
auto IntersectRayAABB(const float3& RayOrigin, const float3& RayDirection, const BoundBox& AABB, float& EnterDist, float& ExitDist) -> bool
Intersects a ray with the axis-aligned bounding box and computes distances to intersections.
auto IntersectRayBox2D(const float2& RayOrigin, const float2& RayDirection, float2 BoxMin, float2 BoxMax, float& EnterDist, float& ExitDist) -> bool
Intersects a 2D ray with the 2D axis-aligned bounding box and computes distances to intersections.
auto IntersectRayTriangle(const float3& V0, const float3& V1, const float3& V2, const float3& RayOrigin, const float3& RayDirection, bool CullBackFace = false) -> float
Intersects a ray with the trianlge using Moller-Trumbore algorithm and returns the distance along the ray to the intesrsection point. If the intersection point is behind the ray origin, the distance will be negative. If there is no intersection, returns +FLT_MAX.
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>
auto IsPointInsideTriangle(const Vector2<T>& V0, const Vector2<T>& V1, const Vector2<T>& V2, const Vector2<T>& Point, bool AllowEdges) -> bool
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>
auto CheckBox2DBox2DOverlap(const Vector2<T>& Box0Min, const Vector2<T>& Box0Max, const Vector2<T>& Box1Min, const Vector2<T>& Box1Max) -> bool
Checks if two 2D-boxes overlap.
template<typename T>
auto ExtractLSB(T& bits) -> std::enable_if<std::is_integral<T>::value, T>::type
Returns the least-signficant bit and clears it in the input argument.
template<typename T>
auto ExtractLSB(T& bits) -> std::enable_if<std::is_enum<T>::value, T>::type
Returns the enum value representing the least-signficant bit and clears it in the input argument.
template<TEXTURE_ADDRESS_MODE AddressMode, bool IsNormalizedCoord>
auto GetLinearTexFilterSampleInfo(Uint32 Width, float u) -> LinearTexFilterSampleInfo
Returns linear texture filter sample info, see Diligent::LinearTexFilterSampleInfo.
template<typename SrcType, typename DstType, TEXTURE_ADDRESS_MODE AddressModeU, TEXTURE_ADDRESS_MODE AddressModeV, bool IsNormalizedCoord>
auto FilterTexture2DBilinear(Uint32 Width, Uint32 Height, const SrcType* pData, size_t Stride, float u, float v) -> DstType
Samples 2D texture using bilinear filter.
template<typename SrcType, typename DstType>
auto FilterTexture2DBilinearClamp(Uint32 Width, Uint32 Height, const SrcType* pData, size_t Stride, float u, float v) -> DstType
Specialization of FilterTexture2DBilinear function that uses CLAMP texture address mode and takes normalized texture coordinates.
template<typename SrcType, typename DstType>
auto FilterTexture2DBilinearClampUC(Uint32 Width, Uint32 Height, const SrcType* pData, size_t Stride, float u, float v) -> DstType
Specialization of FilterTexture2DBilinear function that uses CLAMP texture address mode and takes unnormalized texture coordinates.
auto GetRawAllocator() -> IMemoryAllocator&
Returns raw memory allocator.
auto CountFloatNumberChars(const char* str) -> size_t
Returns the number of chararcters at the beginning of the string that form a floating point number.
auto GetValueSize(VALUE_TYPE Val) -> Uint32
Returns the size of the specified value type.
auto GetValueTypeString(VALUE_TYPE Val) -> const Char*
Returns the string representing the specified value type.
auto GetTextureFormatAttribs(TEXTURE_FORMAT Format) -> const TextureFormatAttribs&
Returns invariant texture format attributes, see TextureFormatAttribs for details.
auto GetDefaultTextureViewFormat(TEXTURE_FORMAT TextureFormat, TEXTURE_VIEW_TYPE ViewType, Uint32 BindFlags) -> TEXTURE_FORMAT
Returns the default format for a specified texture view type.
auto GetDefaultTextureViewFormat(const TextureDesc& TexDesc, TEXTURE_VIEW_TYPE ViewType) -> TEXTURE_FORMAT
Returns the default format for a specified texture view type.
auto GetTexViewTypeLiteralName(TEXTURE_VIEW_TYPE ViewType) -> const Char*
Returns the literal name of a texture view type. For instance, for a shader resource view, "TEXTURE_VIEW_SHADER_RESOURCE" will be returned.
auto GetBufferViewTypeLiteralName(BUFFER_VIEW_TYPE ViewType) -> const Char*
Returns the literal name of a buffer view type. For instance, for an unordered access view, "BUFFER_VIEW_UNORDERED_ACCESS" will be returned.
auto GetShaderTypeLiteralName(SHADER_TYPE ShaderType) -> const Char*
Returns the literal name of a shader type. For instance, for a pixel shader, "SHADER_TYPE_PIXEL" will be returned.
auto GetShaderStagesString(SHADER_TYPE ShaderStages) -> String
auto GetShaderVariableTypeLiteralName(SHADER_RESOURCE_VARIABLE_TYPE VarType, bool bGetFullName = false) -> const Char*
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.
auto GetShaderResourceTypeLiteralName(SHADER_RESOURCE_TYPE ResourceType, bool bGetFullName = false) -> const Char*
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.
auto GetViewTypeLiteralName(TEXTURE_VIEW_TYPE TexViewType) -> const Char*
Overloaded function that returns the literal name of a texture view type. see GetTexViewTypeLiteralName().
auto GetViewTypeLiteralName(BUFFER_VIEW_TYPE BuffViewType) -> const Char*
Overloaded function that returns the literal name of a buffer view type. see GetBufferViewTypeLiteralName().
auto GetFilterTypeLiteralName(FILTER_TYPE FilterType, bool bGetFullName) -> const Char*
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.
auto GetTextureAddressModeLiteralName(TEXTURE_ADDRESS_MODE AddressMode, bool bGetFullName) -> const Char*
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.
auto GetComparisonFunctionLiteralName(COMPARISON_FUNCTION ComparisonFunc, bool bGetFullName) -> const Char*
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.
auto GetStencilOpLiteralName(STENCIL_OP StencilOp) -> const Char*
Returns the literal name of a stencil operation.
auto GetBlendFactorLiteralName(BLEND_FACTOR BlendFactor) -> const Char*
Returns the literal name of a blend factor.
auto GetBlendOperationLiteralName(BLEND_OPERATION BlendOp) -> const Char*
Returns the literal name of a blend operation.
auto GetFillModeLiteralName(FILL_MODE FillMode) -> const Char*
Returns the literal name of a fill mode.
auto GetCullModeLiteralName(CULL_MODE CullMode) -> const Char*
Returns the literal name of a cull mode.
auto GetMapTypeString(MAP_TYPE MapType) -> const Char*
Returns the string containing the map type.
auto GetUsageString(USAGE Usage) -> const Char*
Returns the string containing the usage.
auto GetResourceDimString(RESOURCE_DIMENSION TexType) -> const Char*
Returns the string containing the texture type.
auto GetBindFlagString(Uint32 BindFlag) -> const Char*
Returns the string containing single bind flag.
auto GetBindFlagsString(Uint32 BindFlags, const char* Delimeter = "|") -> String
Returns the string containing the bind flags.
auto GetCPUAccessFlagsString(Uint32 CpuAccessFlags) -> String
Returns the string containing the CPU access flags.
auto GetTextureDescString(const TextureDesc& Desc) -> String
Returns the string containing the texture description.
auto GetBufferFormatString(const BufferFormat& Fmt) -> String
Returns the string containing the buffer format description.
auto GetBufferModeString(BUFFER_MODE Mode) -> const Char*
Returns the string containing the buffer mode description.
auto GetBufferDescString(const BufferDesc& Desc) -> String
Returns the string containing the buffer description.
auto GetResourceStateFlagString(RESOURCE_STATE State) -> const Char*
Returns the string containing the buffer mode description.
template<typename TObjectDescType>
auto GetObjectDescString(const TObjectDescType&) -> String
Helper template function that converts object description into a string.
template<>
auto GetObjectDescString(const TextureDesc& TexDesc) -> String
Template specialization for texture description.
template<>
auto GetObjectDescString(const BufferDesc& BuffDesc) -> String
Template specialization for buffer description.
auto GetStagingTextureLocationOffset(const TextureDesc& TexDesc, Uint32 ArraySlice, Uint32 MipLevel, Uint32 Alignment, Uint32 LocationX, Uint32 LocationY, Uint32 LocationZ) -> Uint32
Returns an offset from the beginning of the buffer backing a staging texture to the specified location within the given subresource.
auto GetStagingTextureSubresourceOffset(const TextureDesc& TexDesc, Uint32 ArraySlice, Uint32 MipLevel, Uint32 Alignment) -> Uint32
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.
void CopyTextureSubresource(const TextureSubResData& SrcSubres, Uint32 NumRows, Uint32 NumDepthSlices, Uint32 RowSize, void* pDstData, Uint32 DstRowStride, Uint32 DstDepthStride)
Copies texture subresource data on the CPU.
void ValidateBottomLevelASDesc(const BottomLevelASDesc& Desc) noexcept(…)
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(…)
Copies bottom-level AS geometry description using MemPool to allocate required space.
void ValidateBufferDesc(const BufferDesc& Desc, const DeviceCaps& deviceCaps) noexcept(…)
Validates buffer description and throws an exception in case of an error.
void ValidateBufferInitData(const BufferDesc& Desc, const BufferData* pBuffData) noexcept(…)
Validates initial buffer data parameters and throws an exception in case of an error.
void ValidateAndCorrectBufferViewDesc(const BufferDesc& BuffDesc, BufferViewDesc& ViewDesc) noexcept(…)
Validates and corrects buffer view description; throws an exception in case of an error.
void CreateDefaultShaderSourceStreamFactory(const Char* SearchDirectories, IShaderSourceInputStreamFactory** ppShaderSourceStreamFactory)
Creates a default shader source stream factory.
void SetRawAllocator(IMemoryAllocator* pRawAllocator)
Sets raw memory allocator. This function must be called before any memory allocation/deallocation function is called.
void ValidatePipelineResourceSignatureDesc(const PipelineResourceSignatureDesc& Desc, const DeviceFeatures& Features) noexcept(…)
Validates pipeline resource signature description and throws an exception in case of an error.
auto FindImmutableSampler(const ImmutableSamplerDesc* ImtblSamplers, Uint32 NumImtblSamplers, SHADER_TYPE ShaderStages, const char* ResourceName, const char* SamplerSuffix) -> Uint32
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.
auto PipelineResourceSignaturesCompatible(const PipelineResourceSignatureDesc& Desc0, const PipelineResourceSignatureDesc& Desc1) -> bool noexcept
Returns true if two pipeline resource signature descriptions are compatible, and false otherwise.
auto CalculatePipelineResourceSignatureDescHash(const PipelineResourceSignatureDesc& Desc) -> size_t noexcept
Calculates hash of the pipeline resource signature description.
void ValidatePipelineResourceCompatibility(const PipelineResourceDesc& ResDesc, SHADER_RESOURCE_TYPE Type, PIPELINE_RESOURCE_FLAGS ResourceFlags, Uint32 ArraySize, const char* ShaderName, const char* SignatureName) noexcept(…)
Validates that pipeline resource description 'ResDesc' is compatible with the actual resource attributes and throws an exception in case of an error.
void CopyRTShaderGroupNames(std::unordered_map<HashMapStringKey, Uint32, HashMapStringKey::Hasher>& 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.
auto FindPipelineResourceLayoutVariable(const PipelineResourceLayoutDesc& LayoutDesc, const char* Name, SHADER_TYPE ShaderStage, const char* CombinedSamplerSuffix) -> Uint32
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 found, returns its index in LayoutDesc.Variables. Otherwise returns InvalidPipelineResourceLayoutVariableIndex.
void ValidateShaderBindingTableDesc(const ShaderBindingTableDesc& Desc, Uint32 ShaderGroupHandleSize, Uint32 MaxShaderRecordStride) noexcept(…)
Validates SBT description and throws an exception in case of an error.
void ValidateTextureDesc(const TextureDesc& TexDesc) noexcept(…)
Validates texture description and throws an exception in case of an error.
void ValidatedAndCorrectTextureViewDesc(const TextureDesc& TexDesc, TextureViewDesc& ViewDesc) noexcept(…)
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 paramters.
void ValidateCopyTextureParams(const CopyTextureAttribs& CopyAttribs)
Validates copy texture command paramters.
void ValidateMapTextureParams(const TextureDesc& TexDesc, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, Uint32 MapFlags, const Box* pMapRegion)
Validates map texture command paramters.
void ValidateTopLevelASDesc(const TopLevelASDesc& Desc) noexcept(…)
Validates top-level AS description and throws an exception in case of an error.
auto PipelineResourcesCompatible(const PipelineResourceDesc& lhs, const PipelineResourceDesc& rhs) -> bool
Returns true if two pipeline resources are compatible.
void VerifyD3DResourceMerge(const PipelineStateDesc& PSODesc, const D3DShaderResourceAttribs& ExistingRes, const D3DShaderResourceAttribs& NewResAttribs) noexcept(…)
Verifies that two pipeline resources are compatible and throws an exception in case of an error.
void CreateBufferSuballocator(IRenderDevice* pDevice, const BufferSuballocatorCreateInfo& CreateInfo, IBufferSuballocator** ppBufferSuballocator)
Creates a new buffer suballocator.
void CreateDynamicTextureAtlas(IRenderDevice* pDevice, const DynamicTextureAtlasCreateInfo& CreateInfo, IDynamicTextureAtlas** ppAtlas)
Creates a new dynamic texture atlas.
auto GetShaderTypeMacros(SHADER_TYPE Type) -> const ShaderMacro*
Returns shader type definition macro(s), e.g., for a vertex shader:
void AppendShaderMacros(std::string& Source, const ShaderMacro* Macros)
Appends shader macro definitions to the end of the source string:
void AppendShaderTypeDefinitions(std::string& Source, SHADER_TYPE Type)
Appends the shader type definition macro(s), e.g., for a vertex shader:
auto ReadShaderSourceFile(const char* SourceCode, IShaderSourceInputStreamFactory* pShaderSourceStreamFactory, const char* FilePath, RefCntAutoPtr<IDataBlob>& pFileData, size_t& SourceCodeLen) -> const char* noexcept(…)
Reads shader source code from a file or uses the one from the shader create info.
void AppendShaderSourceCode(std::string& Source, const ShaderCreateInfo& ShaderCI) noexcept(…)
Appends shader source code to the source string.
void SetDebugMessageCallback(DebugMessageCallbackType DbgMessageCallback)
Sets the debug message callback function.

Variables

static Uint32 MAX_SHADERS_IN_PIPELINE constexpr
The maximum number of shader stages in a pipeline. (Vertex, Hull, Domain, Geometry, Pixel) or (Amplification, Mesh, Pixel), or (Compute) or (RayGen, Miss, ClosestHit, AnyHit, Intersection, Callable)
static const Uint32 TLAS_INSTANCE_OFFSET_AUTO
Can be used to calculate the TLASBuildInstanceData::ContributionToHitGroupIndex depending on instance count, geometry count in each instance (in TLASBuildInstanceData::pBLAS) and shader binding mode in BuildTLASAttribs::BindingMode.
static const Uint32 TLAS_INSTANCE_DATA_SIZE
Top-level AS instance size in bytes in GPU side. Used to calculate size of BuildTLASAttribs::pInstanceBuffer.
static const struct INTERFACE_ID IID_FileStream
IFileStream interface unique identifier.
static const INTERFACE_ID IID_Unknown
Unknown interface.

Enum documentation

enum class Diligent::ResourceCacheContentType: Uint8

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

Enumerators
Signature

Static resources of a pipeline resource signature.

SRB

Resources of a shader resource binding.

enum Diligent::BLEND_FACTOR: Int8

Blend factors.

This enumeration defines blend factors for alpha-blending. It generatlly 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.

Enumerators
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.

enum Diligent::BLEND_OPERATION: Int8

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

Enumerators
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.

enum Diligent::COLOR_MASK: Int8

Color component write flags.

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

Enumerators
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_ALL

Allow data to be stored in all components.

enum Diligent::LOGIC_OPERATION: Int8

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

Enumerators
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.

enum Diligent::RAYTRACING_BUILD_AS_FLAGS: Uint8

Defines acceleration structures build flags.

Enumerators
RAYTRACING_BUILD_AS_NONE
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 acculeration 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_BUILD_AS_FLAGS_LAST

enum Diligent::BUFFER_MODE: Uint8

Describes the buffer access mode.

This enumeration is used by BufferDesc structure.

Enumerators
BUFFER_MODE_UNDEFINED

Undefined mode.

BUFFER_MODE_FORMATTED

Formated 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.

enum Diligent::STENCIL_OP: Int8

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

Enumerators
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.

enum Diligent::DRAW_FLAGS: Uint8

Draw command flags.

Enumerators
DRAW_FLAG_NONE

No flags.

DRAW_FLAG_VERIFY_STATES

Verify the sate 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.

DRAW_FLAG_VERIFY_RENDER_TARGETS

Verify that render targets bound to the context are consistent with the pipeline state.

DRAW_FLAG_VERIFY_ALL

Perform all state validation checks.

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.

Details

D3D12 and Vulkan back-ends 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 susbequent 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.

enum Diligent::RESOURCE_STATE_TRANSITION_MODE: Uint8

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.

Enumerators
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.

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.

enum Diligent::CLEAR_DEPTH_STENCIL_FLAGS: Uint32

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

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

Enumerators
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.

enum Diligent::SET_VERTEX_BUFFERS_FLAGS: Uint8

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

Enumerators
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.

enum Diligent::RAYTRACING_INSTANCE_FLAGS: Uint8

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

Enumerators
RAYTRACING_INSTANCE_NONE
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 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 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.

RAYTRACING_INSTANCE_FLAGS_LAST

enum Diligent::COPY_AS_MODE: Uint8

Defines acceleration structure copy mode.

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

Enumerators
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.

COPY_AS_MODE_LAST

enum Diligent::RAYTRACING_GEOMETRY_FLAGS: Uint8

Defines geometry flags for ray tracing.

Enumerators
RAYTRACING_GEOMETRY_FLAG_NONE
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_GEOMETRY_FLAGS_LAST

enum Diligent::VALUE_TYPE: Uint8

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
Enumerators
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_NUM_TYPES

Helper value storing total number of types in the enumeration.

enum Diligent::SHADER_TYPE: Uint32

Describes the shader type.

Enumerators
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_LAST
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.

enum Diligent::BIND_FLAGS: Uint32

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

Enumerators
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.

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 buffer can be used as a scratch buffer or as the source of primitive data for acceleration structure building.

BIND_FLAGS_LAST

enum Diligent::USAGE: Uint8

Resource usage.

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

Enumerators
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.

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.

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.

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.

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.

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 quering the device caps. (see Diligent::GraphicsAdapterInfo::UnifiedMemoryCPUAccess).

USAGE_NUM_USAGES

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

enum Diligent::CPU_ACCESS_FLAGS: Uint8

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

Enumerators
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.

enum Diligent::MAP_TYPE: Uint8

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
Enumerators
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.

enum Diligent::MAP_FLAGS: Uint8

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
Enumerators
MAP_FLAG_NONE
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.

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.

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.

enum Diligent::RESOURCE_DIMENSION: Uint8

Describes resource dimension.

This enumeration is used by

Enumerators
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.

enum Diligent::TEXTURE_VIEW_TYPE: Uint8

Texture view type.

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

Enumerators
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_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_NUM_VIEWS

Helper value that stores that total number of texture views.

enum Diligent::BUFFER_VIEW_TYPE: Uint8

Buffer view type.

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

Enumerators
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.

enum Diligent::TEXTURE_FORMAT: Uint16

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.

Enumerators
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.

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.

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.

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.

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.

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.

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-precisoin 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.

TEX_FORMAT_R1_UNORM

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

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.

TEX_FORMAT_G8R8_G8B8_UNORM

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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.

TEX_FORMAT_BGRA8_UNORM

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

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.

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.

TEX_FORMAT_BGRA8_TYPELESS

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

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.

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.

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.

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

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

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

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

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

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

TEX_FORMAT_NUM_FORMATS

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

enum Diligent::FILTER_TYPE: Uint8

Filter type.

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

Enumerators
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.

enum Diligent::TEXTURE_ADDRESS_MODE: Uint8

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.

Enumerators
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.

TEXTURE_ADDRESS_NUM_MODES

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

enum Diligent::COMPARISON_FUNCTION: Uint8

Comparison function.

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

Enumerators
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.

enum Diligent::MISC_TEXTURE_FLAGS: Uint8

Miscellaneous texture flags.

The enumeration is used by TextureDesc to describe misc texture flags

Enumerators
MISC_TEXTURE_FLAG_NONE
MISC_TEXTURE_FLAG_GENERATE_MIPS

Allow automatic mipmap generation with ITextureView::GenerateMips()

enum Diligent::PRIMITIVE_TOPOLOGY: Uint8

Input primitive topology.

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

Enumerators
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_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.

enum Diligent::ADAPTER_TYPE: Uint8

Hardware adapter type.

Enumerators
ADAPTER_TYPE_UNKNOWN

Adapter type is unknown.

ADAPTER_TYPE_SOFTWARE

Software adapter.

ADAPTER_TYPE_HARDWARE

Hardware adapter.

enum Diligent::SCALING_MODE

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

Enumerators
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.

enum Diligent::SCANLINE_ORDER

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

Enumerators
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.

enum Diligent::SWAP_CHAIN_USAGE_FLAGS: Uint32

Defines allowed swap chain usage flags.

Enumerators
SWAP_CHAIN_USAGE_NONE

No allowed usage.

SWAP_CHAIN_USAGE_RENDER_TARGET

Swap chain can be used as render target ouput.

SWAP_CHAIN_USAGE_SHADER_INPUT

Swap chain images can be used as shader inputs.

SWAP_CHAIN_USAGE_COPY_SOURCE

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

SWAP_CHAIN_USAGE_LAST

enum Diligent::SURFACE_TRANSFORM: Uint32

The transform applied to the image content prior to presentation.

Enumerators
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.

enum Diligent::QUERY_TYPE

Query type.

Enumerators
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. Fot 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.

enum Diligent::RENDER_DEVICE_TYPE

Device type.

Enumerators
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 (not yet implemented)

enum Diligent::DEVICE_FEATURE_STATE: Uint8

Device feature state.

Enumerators
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::Feautures, 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.

enum Diligent::ADAPTER_VENDOR: Uint8

Graphics adapter vendor.

Enumerators
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)

enum Diligent::WAVE_FEATURE: Uint32

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 doc/WaveOp.md.

enum Diligent::D3D11_DEBUG_FLAGS: Uint32

Debug flags that can be specified when creating Direct3D11-based engine implementation.

Enumerators
D3D11_DEBUG_FLAG_NONE

No debug flag.

D3D11_DEBUG_FLAG_CREATE_DEBUG_DEVICE

Whether to create Direct3D11 debug device.

D3D11_DEBUG_FLAG_VERIFY_COMMITTED_SHADER_RESOURCES

Before executing draw/dispatch command, verify that all required shader resources are bound to the device context.

D3D11_DEBUG_FLAG_VERIFY_COMMITTED_RESOURCE_RELEVANCE

Verify that all committed cotext resources are relevant, i.e. they are consistent with the committed resource cache. This is very expensive and should generally not be necessary.

enum Diligent::DIRECT3D_FEATURE_LEVEL: Uint8

Direct3D11/12 feature level.

Enumerators
DIRECT3D_FEATURE_LEVEL_10_0

Feature level 10.0.

DIRECT3D_FEATURE_LEVEL_10_1

Feature level 10.1.

DIRECT3D_FEATURE_LEVEL_11_0

Feature level 11.0.

DIRECT3D_FEATURE_LEVEL_11_1

Feature level 11.1.

DIRECT3D_FEATURE_LEVEL_12_0

Feature level 12.0.

DIRECT3D_FEATURE_LEVEL_12_1

Feature level 12.1.

enum Diligent::COMPONENT_TYPE: Uint8

Describes texture format component type.

Enumerators
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.

enum Diligent::RESOURCE_DIMENSION_SUPPORT: Uint32

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

Enumerators
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.

enum Diligent::PIPELINE_STAGE_FLAGS: Uint32

Pipeline stage flags.

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

Enumerators
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
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.

enum Diligent::ACCESS_FLAGS: Uint32

Access flag.

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

Enumerators
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 comman.

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.

enum Diligent::RESOURCE_STATE: Uint32

Resource usage state.

Enumerators
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.

RESOURCE_STATE_CONSTANT_BUFFER

The resource is accessed as a constant (uniform) buffer.

RESOURCE_STATE_INDEX_BUFFER

The resource is accessed as an index buffer.

RESOURCE_STATE_RENDER_TARGET

The resource is accessed as a render target.

RESOURCE_STATE_UNORDERED_ACCESS

The resource is used for unordered access.

RESOURCE_STATE_DEPTH_WRITE

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

RESOURCE_STATE_DEPTH_READ

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

RESOURCE_STATE_SHADER_RESOURCE

The resource is accessed from a shader.

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.

RESOURCE_STATE_COPY_DEST

The resource is used as the destination in a copy operation.

RESOURCE_STATE_COPY_SOURCE

The resource is used as the source in a copy operation.

RESOURCE_STATE_RESOLVE_DEST

The resource is used as the destination in a resolve operation.

RESOURCE_STATE_RESOLVE_SOURCE

The resource is used as the source in a resolve operation.

RESOURCE_STATE_INPUT_ATTACHMENT

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

RESOURCE_STATE_PRESENT

The resource is used for present.

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.

RESOURCE_STATE_BUILD_AS_WRITE

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

RESOURCE_STATE_RAY_TRACING

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

RESOURCE_STATE_MAX_BIT
RESOURCE_STATE_GENERIC_READ

enum Diligent::STATE_TRANSITION_TYPE: Uint8

State transition barrier type.

Enumerators
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.

enum Diligent::INPUT_ELEMENT_FREQUENCY

Input frequency.

Enumerators
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.

enum Diligent::PIPELINE_RESOURCE_FLAGS: Uint8

Flags that define pipeline resource properties.

Enumerators
PIPELINE_RESOURCE_FLAG_UNKNOWN

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.

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.

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_LAST

enum Diligent::PSO_CREATE_FLAGS: Uint32

Pipeline state creation flags.

Enumerators
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.

enum Diligent::FILL_MODE: Int8

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.

Enumerators
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.

enum Diligent::CULL_MODE: Int8

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.

Enumerators
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.

enum Diligent::ATTACHMENT_LOAD_OP: Uint8

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

Enumerators
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.

enum Diligent::ATTACHMENT_STORE_OP: Uint8

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

Enumerators
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.

enum Diligent::SHADER_SOURCE_LANGUAGE: Uint32

Describes the shader source code language.

Enumerators
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_MSL

The source language is Metal shading language (MSL)

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.

enum Diligent::SHADER_COMPILER: Uint32

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

Enumerators
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 limitted support for Shader Model 6.x)
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_COMPILER_LAST

enum Diligent::CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS: Uint32

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

Enumerators
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.

enum Diligent::SHADER_COMPILE_FLAGS: Uint32

Shader compilation flags.

Enumerators
SHADER_COMPILE_FLAG_NONE

No flags.

SHADER_COMPILE_FLAG_ENABLE_UNBOUNDED_ARRAYS

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

SHADER_COMPILE_FLAG_LAST

enum Diligent::SHADER_RESOURCE_TYPE: Uint8

Describes shader resource type.

Enumerators
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 (sotrage 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_TYPE_LAST

enum Diligent::VERIFY_SBT_FLAGS: Uint32

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

Enumerators
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.

enum Diligent::SHADER_RESOURCE_VARIABLE_TYPE: Uint8

Describes the type of the shader resource variable.

Enumerators
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.

enum Diligent::BIND_SHADER_RESOURCES_FLAGS: Uint32

Shader resource binding flags.

Enumerators
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.

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.

enum Diligent::UAV_ACCESS_FLAG: Uint8

Describes allowed unordered access view mode.

Enumerators
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.

enum Diligent::TEXTURE_VIEW_FLAGS: Uint8

Texture view flags.

Enumerators
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.

enum Diligent::HIT_GROUP_BINDING_MODE: Uint8

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

Enumerators
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().

HIT_GROUP_BINDING_MODE_LAST

enum Diligent::DEBUG_MESSAGE_SEVERITY

Describes debug message severity.

Enumerators
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.

Typedef documentation

using Diligent::D3D11ShaderResourceCounters = std::array<D3D11ResourceRangeCounters, D3D11_RESOURCE_RANGE_COUNT>

Resource counters for all shader stages and all resource types.

Function documentation

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 caled with the argument of type int2 for every cell visited. The function should return true to continue tracing and false to stop it.

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

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
V0 in - First triangle vertex
V1 in - Second triangle vertex
V2 in - Third triangle vertex
Point in - Point to test
AllowEdges in - Whether to accept points lying on triangle edges
Returns true if the point lies inside the triangle, and false otherwise.

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.

Template parameters
T
TCallback - Type of the callback function.
Parameters
V0 in - First triangle vertex.
V1 in - Second triangle vertex.
V2 in - Third triangle vertex.
Callback in - Callback function that will be caled with the argument of type int2 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<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.

Parameters
Box0Min in - Min corner of the first box.
Box0Max in - Max corner of the first box.
Box1Min in - Min corner of the second box.
Box1Max in - Max corner of the second box.
Returns true if the bounding boxes overlap, and false otherwise.

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
Width in - Texture width.
in - Texture sample coordinate.
Returns Linear texture filter sample information, see Diligent::LinearTexFilterSampleInfo.

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
Width in - Texture width.
Height in - Texture height.
pData in - Pointer to the texture data.
Stride in - Data stride, in pixels.
in - Sample u coordinate.
in - Sample v coordinate.
Returns - Filtered texture sample.

IMemoryAllocator& Diligent::GetRawAllocator()

Returns raw memory allocator.

Uint32 Diligent::GetValueSize(VALUE_TYPE Val)

Returns the size of the specified value type.

const Char* Diligent::GetValueTypeString(VALUE_TYPE Val)

Returns the string representing the specified value type.

const TextureFormatAttribs& Diligent::GetTextureFormatAttribs(TEXTURE_FORMAT Format)

Returns invariant texture format attributes, see TextureFormatAttribs for details.

Parameters
Format in - Texture format which attributes are requested for.
Returns Constant reference to the TextureFormatAttribs structure containing format attributes.

TEXTURE_FORMAT Diligent::GetDefaultTextureViewFormat(TEXTURE_FORMAT TextureFormat, TEXTURE_VIEW_TYPE ViewType, Uint32 BindFlags)

Returns the default format for a specified texture view type.

Parameters
TextureFormat
ViewType in - texture view type
BindFlags in - texture bind flags
Returns texture view type format

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 avaialble, is adjusted accrodingly (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

TEXTURE_FORMAT Diligent::GetDefaultTextureViewFormat(const TextureDesc& TexDesc, TEXTURE_VIEW_TYPE ViewType)

Returns the default format for a specified texture view type.

Parameters
TexDesc in - texture description
ViewType in - texture view type
Returns texture view type format

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
ViewType in - Texture view type.
Returns Literal name of the texture view type.

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
ViewType in - Buffer view type.
Returns Literal name of the buffer view type.

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
ShaderType in - Shader type.
Returns Literal name of the shader type.

String Diligent::GetShaderStagesString(SHADER_TYPE ShaderStages)

Parameters
ShaderStages in - 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"

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
VarType in - Variable type.
bGetFullName in - Whether to return string representation of the enum value
Returns Literal name of the shader variable type.

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
ResourceType in - Resource type.
bGetFullName in - Whether to return string representation of the enum value
Returns Literal name of the shader resource type.

const Char* Diligent::GetViewTypeLiteralName(TEXTURE_VIEW_TYPE TexViewType)

Overloaded function that returns the literal name of a texture view type. see GetTexViewTypeLiteralName().

const Char* Diligent::GetViewTypeLiteralName(BUFFER_VIEW_TYPE BuffViewType)

Overloaded function that returns the literal name of a buffer view type. see GetBufferViewTypeLiteralName().

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
FilterType in - Filter type, see Diligent::FILTER_TYPE.
bGetFullName in - Whether to return string representation of the enum value.
Returns Literal name of the filter type.

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
AddressMode in - Texture address mode, see Diligent::TEXTURE_ADDRESS_MODE.
bGetFullName in - Whether to return string representation of the enum value.
Returns Literal name of the address mode.

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
ComparisonFunc in - Comparison function, see Diligent::COMPARISON_FUNCTION.
bGetFullName in - Whether to return string representation of the enum value.
Returns Literal name of the comparison function.

const Char* Diligent::GetStencilOpLiteralName(STENCIL_OP StencilOp)

Returns the literal name of a stencil operation.

Parameters
StencilOp in - Stencil operation, see Diligent::STENCIL_OP.
Returns Literal name of the stencil operation.

const Char* Diligent::GetBlendFactorLiteralName(BLEND_FACTOR BlendFactor)

Returns the literal name of a blend factor.

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

const Char* Diligent::GetBlendOperationLiteralName(BLEND_OPERATION BlendOp)

Returns the literal name of a blend operation.

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

const Char* Diligent::GetFillModeLiteralName(FILL_MODE FillMode)

Returns the literal name of a fill mode.

Parameters
FillMode in - Fill mode, see Diligent::FILL_MODE.
Returns Literal name of the fill mode.

const Char* Diligent::GetCullModeLiteralName(CULL_MODE CullMode)

Returns the literal name of a cull mode.

Parameters
CullMode in - Cull mode, see Diligent::CULL_MODE.
Returns Literal name of the cull mode.

const Char* Diligent::GetMapTypeString(MAP_TYPE MapType)

Returns the string containing the map type.

const Char* Diligent::GetUsageString(USAGE Usage)

Returns the string containing the usage.

const Char* Diligent::GetResourceDimString(RESOURCE_DIMENSION TexType)

Returns the string containing the texture type.

const Char* Diligent::GetBindFlagString(Uint32 BindFlag)

Returns the string containing single bind flag.

String Diligent::GetBindFlagsString(Uint32 BindFlags, const char* Delimeter = "|")

Returns the string containing the bind flags.

String Diligent::GetCPUAccessFlagsString(Uint32 CpuAccessFlags)

Returns the string containing the CPU access flags.

String Diligent::GetTextureDescString(const TextureDesc& Desc)

Returns the string containing the texture description.

String Diligent::GetBufferFormatString(const BufferFormat& Fmt)

Returns the string containing the buffer format description.

const Char* Diligent::GetBufferModeString(BUFFER_MODE Mode)

Returns the string containing the buffer mode description.

String Diligent::GetBufferDescString(const BufferDesc& Desc)

Returns the string containing the buffer description.

const Char* Diligent::GetResourceStateFlagString(RESOURCE_STATE State)

Returns the string containing the buffer mode description.

template<typename TObjectDescType>
String Diligent::GetObjectDescString(const TObjectDescType&)

Helper template function that converts object description into a string.

template<>
String Diligent::GetObjectDescString(const TextureDesc& TexDesc)

Template specialization for texture description.

template<>
String Diligent::GetObjectDescString(const BufferDesc& BuffDesc)

Template specialization for buffer description.

Uint32 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
TexDesc in - Staging texture description.
ArraySlice in - Array slice.
MipLevel in - Mip level.
Alignment in - 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.
LocationX in - X location within the subresoure.
LocationY in - Y location within the subresoure.
LocationZ in - Z location within the subresoure.
Returns Offset from the beginning of the buffer to the given location.

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'

Uint32 Diligent::GetStagingTextureSubresourceOffset(const TextureDesc& TexDesc, Uint32 ArraySlice, Uint32 MipLevel, Uint32 Alignment)

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.

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

Copies texture subresource data on the CPU.

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

void Diligent::ValidateBottomLevelASDesc(const BottomLevelASDesc& Desc) noexcept(…)

Validates bottom-level AS description and throws an exception in case of an error.

void Diligent::CopyBLASGeometryDesc(const BottomLevelASDesc& SrcDesc, BottomLevelASDesc& DstDesc, FixedLinearAllocator& MemPool, const BLASNameToIndex* pSrcNameToIndex, BLASNameToIndex& DstNameToIndex) noexcept(…)

Copies bottom-level AS geometry description using MemPool to allocate required space.

void Diligent::ValidateBufferDesc(const BufferDesc& Desc, const DeviceCaps& deviceCaps) noexcept(…)

Validates buffer description and throws an exception in case of an error.

void Diligent::ValidateBufferInitData(const BufferDesc& Desc, const BufferData* pBuffData) noexcept(…)

Validates initial buffer data parameters and throws an exception in case of an error.

void Diligent::ValidateAndCorrectBufferViewDesc(const BufferDesc& BuffDesc, BufferViewDesc& ViewDesc) noexcept(…)

Validates and corrects buffer view description; throws an exception in case of an error.

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

Creates a default shader source stream factory.

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

void Diligent::SetRawAllocator(IMemoryAllocator* pRawAllocator)

Sets raw memory allocator. This function must be called before any memory allocation/deallocation function is called.

void Diligent::ValidatePipelineResourceSignatureDesc(const PipelineResourceSignatureDesc& Desc, const DeviceFeatures& Features) noexcept(…)

Validates pipeline resource signature description and throws an exception in case of an error.

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.

bool Diligent::PipelineResourceSignaturesCompatible(const PipelineResourceSignatureDesc& Desc0, const PipelineResourceSignatureDesc& Desc1) noexcept

Returns true if two pipeline resource signature descriptions are compatible, and false otherwise.

size_t Diligent::CalculatePipelineResourceSignatureDescHash(const PipelineResourceSignatureDesc& Desc) noexcept

Calculates hash of the pipeline resource signature description.

void Diligent::ValidatePipelineResourceCompatibility(const PipelineResourceDesc& ResDesc, SHADER_RESOURCE_TYPE Type, PIPELINE_RESOURCE_FLAGS ResourceFlags, Uint32 ArraySize, const char* ShaderName, const char* SignatureName) noexcept(…)

Validates that pipeline resource description 'ResDesc' is compatible with the actual resource attributes and throws an exception in case of an error.

void Diligent::CopyRTShaderGroupNames(std::unordered_map<HashMapStringKey, Uint32, HashMapStringKey::Hasher>& 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.

Uint32 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 found, returns its index in LayoutDesc.Variables. Otherwise returns InvalidPipelineResourceLayoutVariableIndex.

void Diligent::ValidateShaderBindingTableDesc(const ShaderBindingTableDesc& Desc, Uint32 ShaderGroupHandleSize, Uint32 MaxShaderRecordStride) noexcept(…)

Validates SBT description and throws an exception in case of an error.

void Diligent::ValidateTextureDesc(const TextureDesc& TexDesc) noexcept(…)

Validates texture description and throws an exception in case of an error.

void Diligent::ValidatedAndCorrectTextureViewDesc(const TextureDesc& TexDesc, TextureViewDesc& ViewDesc) noexcept(…)

Validates and corrects texture view description; throws an exception in case of an error.

void Diligent::ValidateUpdateTextureParams(const TextureDesc& TexDesc, Uint32 MipLevel, Uint32 Slice, const Box& DstBox, const TextureSubResData& SubresData)

Validates update texture command paramters.

void Diligent::ValidateCopyTextureParams(const CopyTextureAttribs& CopyAttribs)

Validates copy texture command paramters.

void Diligent::ValidateMapTextureParams(const TextureDesc& TexDesc, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, Uint32 MapFlags, const Box* pMapRegion)

Validates map texture command paramters.

void Diligent::ValidateTopLevelASDesc(const TopLevelASDesc& Desc) noexcept(…)

Validates top-level AS description and throws an exception in case of an error.

void Diligent::VerifyD3DResourceMerge(const PipelineStateDesc& PSODesc, const D3DShaderResourceAttribs& ExistingRes, const D3DShaderResourceAttribs& NewResAttribs) noexcept(…)

Verifies that two pipeline resources are compatible and throws an exception in case of an error.

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

Creates a new buffer suballocator.

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

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

Creates a new dynamic texture atlas.

Parameters
pDevice in - 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 GetTexture() is called.
CreateInfo in - Atlas create info, see Diligent::DynamicTextureAtlasCreateInfo.
ppAtlas in - Memory location where pointer to the texture atlas object will be written.

const ShaderMacro* Diligent::GetShaderTypeMacros(SHADER_TYPE Type)

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

{"VERTEX_SHADER", "1"}, {nullptr, nullptr}

or, for a fragment shader:

{"FRAGMENT_SHADER", "1"}, {"PIXEL_SHADER", "1"}, {nullptr, nullptr}

etc.

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

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

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

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.

void Diligent::SetDebugMessageCallback(DebugMessageCallbackType DbgMessageCallback)

Sets the debug message callback function.

Variable documentation

static Uint32 Diligent::MAX_SHADERS_IN_PIPELINE constexpr

The maximum number of shader stages in a pipeline. (Vertex, Hull, Domain, Geometry, Pixel) or (Amplification, Mesh, Pixel), or (Compute) or (RayGen, Miss, ClosestHit, AnyHit, Intersection, Callable)

static const Uint32 Diligent::TLAS_INSTANCE_OFFSET_AUTO

Can be used to calculate the TLASBuildInstanceData::ContributionToHitGroupIndex depending on instance count, geometry count in each instance (in TLASBuildInstanceData::pBLAS) and shader binding mode in BuildTLASAttribs::BindingMode.

Example: InstanceOffset = BaseContributionToHitGroupIndex; For each instance in TLAS if (Instance.ContributionToHitGroupIndex == TLAS_INSTANCE_OFFSET_AUTO) Instance.ContributionToHitGroupIndex = InstanceOffset; if (BindingMode == HIT_GROUP_BINDING_MODE_PER_GEOMETRY) InstanceOffset += Instance.pBLAS->GeometryCount() * HitGroupStride; if (BindingMode == HIT_GROUP_BINDING_MODE_PER_INSTANCE) InstanceOffset += HitGroupStride;

static const Uint32 Diligent::TLAS_INSTANCE_DATA_SIZE

Top-level AS instance size in bytes in GPU side. Used to calculate size of BuildTLASAttribs::pInstanceBuffer.

static const struct INTERFACE_ID Diligent::IID_FileStream

IFileStream interface unique identifier.