The interface for a descriptor set.
More...
#include <rendering_api.hpp>
Inherited by LiteFX::Rendering::DescriptorSet< IDirectX12Buffer, IDirectX12Image, IDirectX12Sampler, IDirectX12AccelerationStructure >, LiteFX::Rendering::DescriptorSet< IVulkanBuffer, IVulkanImage, IVulkanSampler, IVulkanAccelerationStructure >, and LiteFX::Rendering::DescriptorSet< TBuffer, TImage, TSampler, TAccelerationStructure >.
|
| virtual | ~IDescriptorSet () noexcept=default |
| |
| virtual VirtualAllocator::Allocation | globalHeapAllocation (DescriptorHeapType heapType) const noexcept=0 |
| | Returns the allocation information for the descriptor set in the global descriptor heap indicated by heapType .
|
| |
| UInt32 | bindToHeap (DescriptorType bindingType, UInt32 descriptor, const IBuffer &buffer, UInt32 bufferElement=0, UInt32 elements=0, Format texelFormat=Format::None) const |
| | Binds a resource directly to a descriptor heap and returns the index that can be used to access it.
|
| |
| UInt32 | bindToHeap (DescriptorType bindingType, UInt32 descriptor, const IImage &image, UInt32 firstLevel=0, UInt32 levels=0, UInt32 firstLayer=0, UInt32 layers=0) const |
| | Binds a resource directly to a descriptor heap and returns the index that can be used to access it.
|
| |
| UInt32 | bindToHeap (UInt32 descriptor, const ISampler &sampler) const |
| | Binds a sampler directly to a descriptor heap and returns the index that can be used to access it.
|
| |
| void | update (UInt32 binding, const IBuffer &buffer, UInt32 bufferElement=0, UInt32 elements=0, UInt32 firstDescriptor=0, Format texelFormat=Format::None) const |
| | Updates one or more buffer descriptors within the current descriptor set.
|
| |
| void | update (UInt32 binding, const IImage &texture, UInt32 descriptor=0, UInt32 firstLevel=0, UInt32 levels=0, UInt32 firstLayer=0, UInt32 layers=0) const |
| | Updates one or more texture descriptors within the current descriptor set.
|
| |
| void | update (UInt32 binding, const ISampler &sampler, UInt32 descriptor=0) const |
| | Updates one or more sampler descriptors within the current descriptor set.
|
| |
| void | update (UInt32 binding, const IAccelerationStructure &accelerationStructure, UInt32 descriptor=0) const |
| | Updates an acceleration structure within the current descriptor set.
|
| |
The interface for a descriptor set.
◆ IDescriptorSet() [1/3]
| LiteFX::Rendering::IDescriptorSet::IDescriptorSet |
( |
| ) |
|
|
protecteddefaultnoexcept |
◆ IDescriptorSet() [2/3]
| LiteFX::Rendering::IDescriptorSet::IDescriptorSet |
( |
const IDescriptorSet & | | ) |
|
|
protecteddefault |
◆ IDescriptorSet() [3/3]
| LiteFX::Rendering::IDescriptorSet::IDescriptorSet |
( |
IDescriptorSet && | | ) |
|
|
protecteddefaultnoexcept |
◆ ~IDescriptorSet()
| virtual LiteFX::Rendering::IDescriptorSet::~IDescriptorSet |
( |
| ) |
|
|
virtualdefaultnoexcept |
◆ bindToHeap() [1/3]
Binds a resource directly to a descriptor heap and returns the index that can be used to access it.
This method is used with the GraphicsDeviceFeature::DynamicDescriptors feature and allows to bind a descriptor to the underlying descriptor heap directly by providing the corresponding resource type (indicated by bindingType ) at bind time. The method directly returns the global heap index of the resource, that can be used by the shader to access it using the ResourceDescriptorHeap syntax (in HLSL).
If the descriptor set does not contain a descriptor of type DescriptorType::ResourceDescriptorHeap, this method will throw an exception.
- Parameters
-
| bindingType | The type of the descriptor used to bind buffer to the heap. |
| descriptor | The index of the descriptor in the heap to bind buffer to. |
| buffer | The buffer to bind. |
| bufferElement | The index of an element inside buffer that should be bound. |
| elements | The number of elements from the buffer to bind to the descriptor set. A value of 0 binds all available elements, starting at bufferElement . |
| texelFormat | The format used to read a texel buffer. Required if binding binds a texel buffer and ignored otherwise. |
- Returns
- The global heap index that can be used to access the resource from the shader.
- Exceptions
-
| RuntimeException | Thrown, if the descriptor set does not contain a descriptor that provides direct heap access to the underlying descriptor heap indicated by bindingType . |
◆ bindToHeap() [2/3]
Binds a resource directly to a descriptor heap and returns the index that can be used to access it.
This method is used with the GraphicsDeviceFeature::DynamicDescriptors feature and allows to bind a descriptor to the underlying descriptor heap directly by providing the corresponding resource type (indicated by bindingType ) at bind time. The method directly returns the global heap index of the resource, that can be used by the shader to access it using the ResourceDescriptorHeap syntax (in HLSL).
If the descriptor set does not contain a descriptor of type DescriptorType::ResourceDescriptorHeap, this method will throw an exception.
- Parameters
-
| bindingType | The type of the descriptor used to bind image to the heap. |
| descriptor | The index of the descriptor in the heap to bind image to. |
| image | The image to bind. |
| firstLevel | The index of the first mip-map level to bind. |
| levels | The number of mip-map levels to bind. A value of 0 binds all available levels, starting at firstLevel . |
| firstLayer | The index of the first layer to bind. |
| layers | The number of layers to bind. A value of 0 binds all available layers, starting at firstLayer . |
- Returns
- The global heap index that can be used to access the resource from the shader.
- Exceptions
-
| RuntimeException | Thrown, if the descriptor set does not contain a descriptor that provides direct heap access to the underlying descriptor heap indicated by bindingType . |
◆ bindToHeap() [3/3]
| UInt32 LiteFX::Rendering::IDescriptorSet::bindToHeap |
( |
UInt32 | descriptor, |
|
|
const ISampler & | sampler ) const |
|
inline |
Binds a sampler directly to a descriptor heap and returns the index that can be used to access it.
This method is used with the GraphicsDeviceFeature::DynamicDescriptors feature and allows to bind a descriptor to the underlying descriptor heap directly. The method returns the global heap index of the sampler, that can be used by the shader to access it using the SamplerDescriptorHeap syntax (in HLSL).
If the descriptor set does not contain a descriptor of type DescriptorType::SamplerDescriptorHeap, this method will throw an exception.
- Parameters
-
| descriptor | The index of the descriptor in the heap to bind sampler to. |
| sampler | The sampler to bind. |
- Returns
- The global heap index that can be used to access the sampler from the shader.
- Exceptions
-
| RuntimeException | Thrown, if the descriptor set does not contain a descriptor that provides direct heap access to the underlying descriptor heap indicated by bindingType . |
◆ globalHeapAllocation()
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ update() [1/4]
Updates an acceleration structure within the current descriptor set.
- Parameters
-
| binding | The acceleration structure binding point. |
| accelerationStructure | The acceleration structure to write to the descriptor set. |
| descriptor | The index of the descriptor in the descriptor array to bind the acceleration structure to. |
◆ update() [2/4]
Updates one or more buffer descriptors within the current descriptor set.
- Parameters
-
| binding | The buffer binding point. |
| buffer | The buffer to write to the descriptor set. |
| bufferElement | The index of the first element in the buffer to bind to the descriptor set. |
| elements | The number of elements from the buffer to bind to the descriptor set. A value of 0 binds all available elements, starting at bufferElement . |
| firstDescriptor | The index of the first descriptor in the descriptor array to update. |
| texelFormat | The format used to read a texel buffer. Required if binding binds a texel buffer and ignored otherwise. |
◆ update() [3/4]
Updates one or more texture descriptors within the current descriptor set.
The exact representation of the level and layer parameters depends on the dimension of the provided texture, as well as the type of the descriptor identified by the binding parameter.
If the texture itself is not an array (i.e. the number of layers equals 1), the parameters firstLayer and layers are ignored.
The descriptor type dictates, how mip-maps can be provided. If the descriptor type identifies a writable texture, the firstLevel parameter specifies the mip-map level to write to (or read from). Multiple levels are not allowed in this case, so the levels parameter is ignored. Instead, you have to bind them to separate descriptors. Furthermore, the firstLayer and layers parameter can be used to specify the number of depth or W-slices of a writable 3D texture or the side(s) of a cube map.
- Parameters
-
| binding | The texture binding point. |
| texture | The texture to write to the descriptor set. |
| descriptor | The index of the descriptor in the descriptor array to bind the texture to. |
| firstLevel | The index of the first mip-map level to bind. |
| levels | The number of mip-map levels to bind. A value of 0 binds all available levels, starting at firstLevel . |
| firstLayer | The index of the first layer to bind. |
| layers | The number of layers to bind. A value of 0 binds all available layers, starting at firstLayer . |
◆ update() [4/4]
| void LiteFX::Rendering::IDescriptorSet::update |
( |
UInt32 | binding, |
|
|
const ISampler & | sampler, |
|
|
UInt32 | descriptor = 0 ) const |
|
inline |
Updates one or more sampler descriptors within the current descriptor set.
- Parameters
-
| binding | The sampler binding point. |
| sampler | The sampler to write to the descriptor set. |
| descriptor | The index of the descriptor in the descriptor array to bind the sampler to. |