LiteFX 0.4.1.2025
Computer Graphics Engine
|
The interface for a ray tracing pipeline. More...
#include <rendering_api.hpp>
Inherits LiteFX::Rendering::IPipeline.
Inherited by LiteFX::Rendering::RayTracingPipeline< DirectX12PipelineLayout, DirectX12ShaderProgram >, LiteFX::Rendering::RayTracingPipeline< VulkanPipelineLayout, VulkanShaderProgram >, and LiteFX::Rendering::RayTracingPipeline< TPipelineLayout, TShaderProgram >.
Public Member Functions | |
~IRayTracingPipeline () noexcept override=default | |
virtual const ShaderRecordCollection & | shaderRecords () const noexcept=0 |
Returns the shader record collection of the ray tracing pipeline. | |
virtual UInt32 | maxRecursionDepth () const noexcept=0 |
Returns the maximum number of ray bounces. | |
virtual UInt32 | maxPayloadSize () const noexcept=0 |
Returns the maximum size of a single ray payload. | |
virtual UInt32 | maxAttributeSize () const noexcept=0 |
Returns the maximum size of a single ray attribute. | |
SharedPtr< IBuffer > | allocateShaderBindingTable (ShaderBindingTableOffsets &offsets, ShaderBindingGroup groups=ShaderBindingGroup::All) const |
Allocates a buffer that contains the shader binding table containing the shader groups specified by the groups parameter. | |
![]() | |
~IPipeline () noexcept override=default | |
SharedPtr< const IShaderProgram > | program () const noexcept |
Returns the shader program used by the pipeline. | |
SharedPtr< const IPipelineLayout > | layout () const noexcept |
Returns the layout of the render pipeline. | |
![]() | |
virtual | ~IStateResource () noexcept=default |
Releases the state resource instance. | |
virtual const String & | name () const noexcept=0 |
Returns the name of the resource. | |
Protected Member Functions | |
IRayTracingPipeline () noexcept=default | |
IRayTracingPipeline (IRayTracingPipeline &&) noexcept=default | |
IRayTracingPipeline (const IRayTracingPipeline &)=delete | |
IRayTracingPipeline & | operator= (IRayTracingPipeline &&) noexcept=default |
IRayTracingPipeline & | operator= (const IRayTracingPipeline &)=delete |
![]() | |
IPipeline () noexcept=default | |
IPipeline (const IPipeline &)=delete | |
IPipeline (IPipeline &&) noexcept=default | |
IPipeline & | operator= (const IPipeline &)=delete |
IPipeline & | operator= (IPipeline &&) noexcept=default |
![]() | |
IStateResource () noexcept=default | |
IStateResource (const IStateResource &)=delete | |
IStateResource (IStateResource &&) noexcept=default | |
IStateResource & | operator= (const IStateResource &)=delete |
IStateResource & | operator= (IStateResource &&) noexcept=default |
The interface for a ray tracing pipeline.
|
protecteddefaultnoexcept |
|
protecteddefaultnoexcept |
|
protecteddelete |
|
overridedefaultnoexcept |
|
inline |
Allocates a buffer that contains the shader binding table containing the shader groups specified by the groups parameter.
The shader binding table consists out of individual shader records, where each record refers to a shader record plus its local data, as specified in the shader record collection that was passed to the ray-tracing pipeline during creation. The size of a record within the shader binding table is determined by the largest local data size of all records of the groups to be included. It makes sense to pack multiple records into the same buffer for efficiency, however it may generally be a good idea to separate groups that require large amount of local shader data into their own buffers to keep the other buffers smaller.
The shader binding table is created on the default resource heap (ResourceHeap::Dynamic). However, for best performance, consider transferring it to a buffer on the GPU resource heap (ResourceHeap::Resource) afterwards.
offsets | A reference to a structure that receives the offsets and sizes to the groups within the shader binding table. |
groups | The groups to include into the shader binding table. |
|
pure virtualnoexcept |
Returns the maximum size of a single ray attribute.
A ray attribute is the data that is passed to a hit shader for a specific event. Different to ray payloads, it only contains the data that describe the event (such as the hit coordinates, etc.).
This property can currently not be queried from reflection.
Implemented in LiteFX::Rendering::Backends::DirectX12RayTracingPipeline, and LiteFX::Rendering::Backends::VulkanRayTracingPipeline.
|
pure virtualnoexcept |
Returns the maximum size of a single ray payload.
A ray payload is the data that is passed down the TraceRay
function call chain. It can be zero, if Ray Payload Qualifiers are used. Otherwise it must be set to the largest ray payload size used in the ray-tracing pipeline.
This property can currently not be queried from reflection.
Implemented in LiteFX::Rendering::Backends::DirectX12RayTracingPipeline, and LiteFX::Rendering::Backends::VulkanRayTracingPipeline.
|
pure virtualnoexcept |
Returns the maximum number of ray bounces.
Implemented in LiteFX::Rendering::Backends::DirectX12RayTracingPipeline, and LiteFX::Rendering::Backends::VulkanRayTracingPipeline.
|
protecteddelete |
|
protecteddefaultnoexcept |
|
pure virtualnoexcept |
Returns the shader record collection of the ray tracing pipeline.
Implemented in LiteFX::Rendering::Backends::DirectX12RayTracingPipeline, and LiteFX::Rendering::Backends::VulkanRayTracingPipeline.