3#include <litefx/rendering_builders.hpp>
7#if defined(LITEFX_BUILD_DEFINE_BUILDERS)
16 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12BarrierBuilder final :
public BarrierBuilder<DirectX12Barrier> {
21 explicit DirectX12BarrierBuilder();
22 ~DirectX12BarrierBuilder() noexcept override;
24 DirectX12BarrierBuilder(const DirectX12BarrierBuilder&) = delete;
25 DirectX12BarrierBuilder(DirectX12BarrierBuilder&&) noexcept = default;
26 DirectX12BarrierBuilder& operator=(const DirectX12BarrierBuilder&) = delete;
27 DirectX12BarrierBuilder& operator=(DirectX12BarrierBuilder&&) noexcept = delete;
48 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12ShaderProgramBuilder final : public ShaderProgramBuilder<DirectX12ShaderProgram> {
54 explicit DirectX12ShaderProgramBuilder(
const DirectX12Device& device);
55 ~DirectX12ShaderProgramBuilder() noexcept override;
57 DirectX12ShaderProgramBuilder(const DirectX12ShaderProgramBuilder&) = delete;
58 DirectX12ShaderProgramBuilder(DirectX12ShaderProgramBuilder&&) noexcept = delete;
59 auto operator=(const DirectX12ShaderProgramBuilder&) = delete;
60 auto operator=(DirectX12ShaderProgramBuilder&&) noexcept = delete;
65 void build() override;
80 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12RasterizerBuilder final : public RasterizerBuilder<DirectX12Rasterizer> {
85 explicit DirectX12RasterizerBuilder();
86 ~DirectX12RasterizerBuilder() noexcept override;
88 DirectX12RasterizerBuilder(const DirectX12RasterizerBuilder&) = delete;
89 DirectX12RasterizerBuilder(DirectX12RasterizerBuilder&&) noexcept = delete;
90 auto operator=(const DirectX12RasterizerBuilder&) = delete;
91 auto operator=(DirectX12RasterizerBuilder&&) noexcept = delete;
96 void build() override;
103 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12InputAssemblerBuilder final : public InputAssemblerBuilder<DirectX12InputAssembler> {
104 LITEFX_IMPLEMENTATION(DirectX12InputAssemblerBuilderImpl);
110 explicit DirectX12InputAssemblerBuilder();
111 ~DirectX12InputAssemblerBuilder() noexcept override;
113 DirectX12InputAssemblerBuilder(const DirectX12InputAssemblerBuilder&) = delete;
114 DirectX12InputAssemblerBuilder(DirectX12InputAssemblerBuilder&&) noexcept = delete;
115 auto operator=(const DirectX12InputAssemblerBuilder&) = delete;
116 auto operator=(DirectX12InputAssemblerBuilder&&) noexcept = delete;
121 void build() override;
129 DirectX12VertexBufferLayoutBuilder vertexBuffer(
size_t elementSize,
UInt32 binding = 0);
135 template <typename TSelf>
136 inline auto indexType(this TSelf&& self,
IndexType type) -> TSelf&& {
137 self.use(DirectX12IndexBufferLayout::create(type));
138 return std::forward<TSelf>(self);
147 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12VertexBufferLayoutBuilder final :
public VertexBufferLayoutBuilder<DirectX12VertexBufferLayout, DirectX12InputAssemblerBuilder> {
149 using VertexBufferLayoutBuilder<DirectX12VertexBufferLayout, DirectX12InputAssemblerBuilder>::VertexBufferLayoutBuilder;
154 void build()
override;
163 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12PipelineLayoutBuilder final :
public PipelineLayoutBuilder<DirectX12PipelineLayout> {
164 LITEFX_IMPLEMENTATION(DirectX12PipelineLayoutBuilderImpl);
165 friend class DirectX12DescriptorSetLayoutBuilder;
171 DirectX12PipelineLayoutBuilder(
const DirectX12Device& device);
172 ~DirectX12PipelineLayoutBuilder() noexcept override;
174 DirectX12PipelineLayoutBuilder(DirectX12PipelineLayoutBuilder&&) noexcept = delete;
175 DirectX12PipelineLayoutBuilder(const DirectX12PipelineLayoutBuilder&) = delete;
176 auto operator=(DirectX12PipelineLayoutBuilder&&) noexcept = delete;
177 auto operator=(const DirectX12PipelineLayoutBuilder&) = delete;
182 void build() override;
197 DirectX12PushConstantsLayoutBuilder pushConstants(
UInt32 size);
204 SharedPtr<const DirectX12Device> device() const noexcept;
213 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12DescriptorSetLayoutBuilder final : public DescriptorSetLayoutBuilder<DirectX12DescriptorSetLayout, DirectX12PipelineLayoutBuilder> {
221 explicit DirectX12DescriptorSetLayoutBuilder(DirectX12PipelineLayoutBuilder& parent,
UInt32 space = 0,
ShaderStage stages = ShaderStage::Any);
222 ~DirectX12DescriptorSetLayoutBuilder() noexcept override;
224 DirectX12DescriptorSetLayoutBuilder(const DirectX12DescriptorSetLayoutBuilder&) = delete;
225 DirectX12DescriptorSetLayoutBuilder(DirectX12DescriptorSetLayoutBuilder&&) noexcept = delete;
226 auto operator=(const DirectX12DescriptorSetLayoutBuilder&) = delete;
227 auto operator=(DirectX12DescriptorSetLayoutBuilder&&) noexcept = delete;
232 void build() override;
240 DirectX12DescriptorLayout makeDescriptor(
UInt32 binding,
FilterMode magFilter,
FilterMode minFilter,
BorderMode borderU,
BorderMode borderV,
BorderMode borderW,
MipMapMode mipMapMode,
Float mipMapBias,
Float minLod,
Float maxLod,
Float anisotropy) override;
247 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12PushConstantsLayoutBuilder final : public PushConstantsLayoutBuilder<DirectX12PushConstantsLayout, DirectX12PipelineLayoutBuilder> {
254 explicit DirectX12PushConstantsLayoutBuilder(DirectX12PipelineLayoutBuilder& parent,
UInt32 size);
255 ~DirectX12PushConstantsLayoutBuilder() noexcept override;
257 DirectX12PushConstantsLayoutBuilder(const DirectX12PushConstantsLayoutBuilder&) = delete;
258 DirectX12PushConstantsLayoutBuilder(DirectX12PushConstantsLayoutBuilder&&) noexcept = delete;
259 auto operator=(const DirectX12PushConstantsLayoutBuilder&) = delete;
260 auto operator=(DirectX12PushConstantsLayoutBuilder&&) noexcept = delete;
265 void build() override;
277 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12RenderPipelineBuilder final : public RenderPipelineBuilder<DirectX12RenderPipeline> {
284 explicit DirectX12RenderPipelineBuilder(
const DirectX12RenderPass& renderPass,
const String& name =
"");
285 ~DirectX12RenderPipelineBuilder() noexcept override;
287 DirectX12RenderPipelineBuilder(DirectX12RenderPipelineBuilder&&) noexcept = delete;
288 DirectX12RenderPipelineBuilder(const DirectX12RenderPipelineBuilder&) = delete;
289 auto operator=(DirectX12RenderPipelineBuilder&&) noexcept = delete;
290 auto operator=(const DirectX12RenderPipelineBuilder&) = delete;
295 void build() override;
302 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12ComputePipelineBuilder final : public ComputePipelineBuilder<DirectX12ComputePipeline> {
309 explicit DirectX12ComputePipelineBuilder(
const DirectX12Device& device,
const String& name =
"");
310 ~DirectX12ComputePipelineBuilder() noexcept override;
312 DirectX12ComputePipelineBuilder(DirectX12ComputePipelineBuilder&&) noexcept = delete;
313 DirectX12ComputePipelineBuilder(const DirectX12ComputePipelineBuilder&) = delete;
314 auto operator=(DirectX12ComputePipelineBuilder&&) noexcept = delete;
315 auto operator=(const DirectX12ComputePipelineBuilder&) = delete;
320 void build() override;
327 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12RayTracingPipelineBuilder final : public RayTracingPipelineBuilder<DirectX12RayTracingPipeline> {
335 explicit DirectX12RayTracingPipelineBuilder(
const DirectX12Device& device,
ShaderRecordCollection&& shaderRecords,
const String& name =
"");
336 ~DirectX12RayTracingPipelineBuilder() noexcept override;
338 DirectX12RayTracingPipelineBuilder(DirectX12RayTracingPipelineBuilder&&) noexcept = delete;
339 DirectX12RayTracingPipelineBuilder(const DirectX12RayTracingPipelineBuilder&) = delete;
340 auto operator=(DirectX12RayTracingPipelineBuilder&&) noexcept = delete;
341 auto operator=(const DirectX12RayTracingPipelineBuilder&) = delete;
346 void build() override;
353 class LITEFX_DIRECTX12_API [[nodiscard]] DirectX12RenderPassBuilder final : public RenderPassBuilder<DirectX12RenderPass> {
360 explicit DirectX12RenderPassBuilder(
const DirectX12Device& device,
const String& name =
"");
368 explicit DirectX12RenderPassBuilder(
const DirectX12Device& device,
UInt32 commandBuffers,
const String& name =
"");
370 ~DirectX12RenderPassBuilder() noexcept override;
372 DirectX12RenderPassBuilder(const DirectX12RenderPassBuilder&) = delete;
373 DirectX12RenderPassBuilder(DirectX12RenderPassBuilder&&) noexcept = delete;
374 auto operator=(const DirectX12RenderPassBuilder&) = delete;
375 auto operator=(DirectX12RenderPassBuilder&&) noexcept = delete;
380 void build() override;
Base interface for buffer objects.
Definition rendering_api.hpp:4186
Describes a generic image.
Definition rendering_api.hpp:4208
Represents a mapping between a set of RenderTarget instances and the input attachments of a IRenderPa...
Definition rendering_api.hpp:3076
Implements a render target.
Definition rendering_api.hpp:2976
Stores a set of IShaderRecords in that later form a shader binding table used for ray-tracing.
Definition rendering_api.hpp:6007
float_t Float
A type for a floating point value with single precision.
Definition math.hpp:71
uint32_t UInt32
A type for an unsigned 32 bit integer.
Definition math.hpp:56
BorderMode
Describes how to treat texture coordinates that are outside the domain [0..1].
Definition rendering_api.hpp:1184
ImageLayout
Specifies the layout of an IImage resource.
Definition rendering_api.hpp:1686
MipMapMode
Describes the filter operation between two mip-map levels.
Definition rendering_api.hpp:1169
ShaderStage
Describes the valid shader stages of a graphics pipeline.
Definition rendering_api.hpp:799
@ Any
Enables all supported shader stages.
IndexType
Describes the element type of an index buffer.
Definition rendering_api.hpp:750
DescriptorType
Describes the type of a IDescriptor.
Definition rendering_api.hpp:436
FilterMode
Describes the filter operation when accessing a pixel from a texture coordinate.
Definition rendering_api.hpp:1152
PipelineStage
Defines pipeline stages as points where synchronization may occur.
Definition rendering_api.hpp:1373
ResourceAccess
Defines how a IBuffer or IImage resource is accessed.
Definition rendering_api.hpp:1537
std::optional< T > Optional
Represents an optional value.
Definition containers.hpp:94
std::shared_ptr< T > SharedPtr
Represents a shared pointer, that expresses non-exclusive ownership.
Definition containers.hpp:109
std::unique_ptr< T, TDeleter > UniquePtr
Represents a unique pointer, that expresses exclusive ownership.
Definition containers.hpp:102
std::string String
Definition string.hpp:24
Describes a single descriptor binding point within a IShaderModule.
Definition rendering_api.hpp:2735