3#include <litefx/rendering.hpp>
5#include "vulkan_api.hpp"
6#include "vulkan_formatters.hpp"
20 LITEFX_BUILDER(VulkanVertexBufferLayoutBuilder);
41 virtual
size_t elementSize() const noexcept override;
44 virtual const
UInt32& binding() const noexcept override;
47 virtual const BufferType& type() const noexcept override;
71 virtual const IndexType& indexType() const noexcept override;
76 virtual
size_t elementSize() const noexcept override;
79 virtual const
UInt32& binding() const noexcept override;
82 virtual const BufferType& type() const noexcept override;
134 virtual VkImageAspectFlags aspectMask() const noexcept = 0;
141 virtual VkImageAspectFlags aspectMask(const
UInt32& plane) const = 0;
157 virtual const VkImageView& imageView(const
UInt32& plane = 0) const = 0;
194 virtual
void transition(
IVulkanBuffer& buffer, const ResourceState& targetState) override;
197 virtual
void transition(
IVulkanBuffer& buffer, const
UInt32& element, const ResourceState& targetState) override;
200 virtual
void transition(
IVulkanBuffer& buffer, const ResourceState& sourceState, const ResourceState& targetState) override;
203 virtual
void transition(
IVulkanBuffer& buffer, const ResourceState& sourceState, const
UInt32& element, const ResourceState& targetState) override;
206 virtual
void transition(
IVulkanImage& image, const ResourceState& targetState) override;
209 virtual
void transition(
IVulkanImage& image, const
UInt32& level, const
UInt32& layer, const
UInt32& plane, const ResourceState& targetState) override;
212 virtual
void transition(
IVulkanImage& image, const ResourceState& sourceState, const ResourceState& targetState) override;
215 virtual
void transition(
IVulkanImage& image, const ResourceState& sourceState, const
UInt32& level, const
UInt32& layer, const
UInt32& plane, const ResourceState& targetState) override;
221 virtual
void waitFor(const
IVulkanImage& image) override;
276 virtual const
String& fileName() const noexcept override;
279 virtual const
String& entryPoint() const noexcept override;
282 virtual const ShaderStage& type() const noexcept override;
289 virtual const
String& bytecode() const noexcept;
295 virtual VkPipelineShaderStageCreateInfo shaderStageDefinition() const;
306 LITEFX_BUILDER(VulkanShaderProgramBuilder);
335 return std::static_pointer_cast<IPipelineLayout>(this->reflectPipelineLayout());
366 virtual
void update(const
UInt32& binding, const
IVulkanBuffer& buffer, const
UInt32& bufferElement = 0, const
UInt32& elements = 1, const
UInt32& firstDescriptor = 0) const override;
414 virtual const DescriptorType& descriptorType() const noexcept override;
417 virtual const
UInt32& descriptors() const noexcept override;
420 virtual const
IVulkanSampler* staticSampler() const noexcept override;
425 virtual
size_t elementSize() const noexcept override;
428 virtual const
UInt32& binding() const noexcept override;
431 virtual const BufferType& type() const noexcept override;
441 LITEFX_BUILDER(VulkanDescriptorSetLayoutBuilder);
485 virtual const
UInt32& space() const noexcept override;
488 virtual const ShaderStage& shaderStages() const noexcept override;
491 virtual
UInt32 uniforms() const noexcept override;
494 virtual
UInt32 storages() const noexcept override;
497 virtual
UInt32 images() const noexcept override;
500 virtual
UInt32 buffers() const noexcept override;
503 virtual
UInt32 samplers() const noexcept override;
506 virtual
UInt32 staticSamplers() const noexcept override;
509 virtual
UInt32 inputAttachments() const noexcept override;
540 virtual const
UInt32& poolSize() const noexcept;
549 virtual
size_t pools() const noexcept;
575 virtual const
UInt32& space() const noexcept override;
578 virtual const
UInt32& binding() const noexcept override;
581 virtual const
UInt32& offset() const noexcept override;
584 virtual const
UInt32& size() const noexcept override;
587 virtual const ShaderStage& stage() const noexcept override;
598 LITEFX_BUILDER(VulkanPushConstantsLayoutBuilder);
635 virtual const
UInt32& size() const noexcept override;
650 LITEFX_BUILDER(VulkanPipelineLayoutBuilder);
696 LITEFX_BUILDER(VulkanInputAssemblerBuilder);
727 virtual const PrimitiveTopology& topology() const noexcept override;
735 LITEFX_BUILDER(VulkanRasterizerBuilder);
746 explicit VulkanRasterizer(
const PolygonMode& polygonMode,
const CullMode& cullMode,
const CullOrder& cullOrder,
const Float& lineWidth = 1.f,
const DepthStencilState& depthStencilState = {})
noexcept;
770 virtual
void updateLineWidth(const
Float& lineWidth) noexcept;
828 virtual
void begin() const override;
831 virtual
void end() const override;
834 virtual
void generateMipMaps(
IVulkanImage& image) noexcept override;
837 virtual
void barrier(const
VulkanBarrier& barrier, const
bool& invert = false) const noexcept override;
864 virtual
void dispatch(const
Vector3u& threadCount) const noexcept override;
867 virtual
void draw(const
UInt32& vertices, const
UInt32& instances = 1, const
UInt32& firstVertex = 0, const
UInt32& firstInstance = 0) const noexcept override;
870 virtual
void drawIndexed(const
UInt32& indices, const
UInt32& instances = 1, const
UInt32& firstIndex = 0, const
Int32& vertexOffset = 0, const
UInt32& firstInstance = 0) const noexcept override;
883 LITEFX_BUILDER(VulkanRenderPipelineBuilder);
926 virtual
Array<const
IViewport*> viewports() const noexcept override;
929 virtual
Array<const
IScissor*> scissors() const noexcept override;
932 virtual
UInt32& stencilRef() const noexcept override;
935 virtual
Vector4f& blendFactors() const noexcept override;
938 virtual const
bool& alphaToCoverage() const noexcept override;
956 LITEFX_BUILDER(VulkanComputePipelineBuilder);
1021 virtual const VkSemaphore& semaphore() const noexcept;
1030 virtual
UInt64& lastFence() const noexcept;
1035 virtual const
UInt32& bufferIndex() const noexcept override;
1038 virtual const
Size2d& size() const noexcept override;
1041 virtual
size_t getWidth() const noexcept override;
1044 virtual
size_t getHeight() const noexcept override;
1060 virtual
void resize(const
Size2d& renderArea) override;
1069 LITEFX_BUILDER(VulkanRenderPassBuilder);
1138 virtual
bool hasPresentTarget() const noexcept override;
1144 virtual const MultiSamplingLevel& multiSamplingLevel() const noexcept override;
1148 virtual
void begin(const
UInt32& buffer) override;
1151 virtual
void end() const override;
1154 virtual
void resizeFrameBuffers(const
Size2d& renderArea) override;
1157 virtual
void changeMultiSamplingLevel(const MultiSamplingLevel& samples) override;
1210 virtual const
VulkanRenderPass* inputAttachmentSource() const noexcept override;
1213 virtual const
RenderTarget& renderTarget() const noexcept override;
1216 virtual const
UInt32& location() const noexcept override;
1244 virtual const VkSemaphore& semaphore() const noexcept;
1249 virtual const Format& surfaceFormat() const noexcept override;
1252 virtual const
UInt32& buffers() const noexcept override;
1255 virtual const
Size2d& renderArea() const noexcept override;
1265 virtual
Array<Format> getSurfaceFormats() const noexcept override;
1268 virtual
void reset(const Format& surfaceFormat, const
Size2d& renderArea, const
UInt32& buffers) override;
1271 [[nodiscard]] virtual
UInt32 swapBackBuffer() const override;
1313 virtual const VkCommandPool& commandPool() const noexcept;
1319 virtual const
UInt32& familyId() const noexcept;
1325 virtual const
UInt32& queueId() const noexcept;
1331 virtual const VkSemaphore& timelineSemaphore() const noexcept;
1345 virtual
UInt64 submit(const
VulkanCommandBuffer& commandBuffer,
Span<VkSemaphore> waitForSemaphores,
Span<VkPipelineStageFlags> waitForStages,
Span<VkSemaphore> signalSemaphores = { })
const;
1372 virtual bool isBound() const noexcept override;
1375 virtual const QueuePriority& priority() const noexcept override;
1378 virtual const QueueType& type() const noexcept override;
1382 virtual
void bind() override;
1385 virtual
void release() override;
1388 virtual
UniquePtr<VulkanCommandBuffer> createCommandBuffer(const
bool& beginRecording = false) const override;
1391 virtual
UInt64 submit(const VulkanCommandBuffer& commandBuffer) const override;
1394 virtual
UInt64 submit(const
Array<const VulkanCommandBuffer*>& commandBuffers) const override;
1397 virtual
void waitFor(const
UInt64& fence) const noexcept override;
1400 virtual
UInt64 currentFence() const noexcept override;
1424 virtual
UniquePtr<
IVulkanBuffer> createBuffer(const BufferType& type, const BufferUsage& usage, const
size_t& elementSize, const
UInt32& elements = 1, const
bool& allowWrite = false) const override;
1427 virtual
UniquePtr<
IVulkanBuffer> createBuffer(const
String& name, const BufferType& type, const BufferUsage& usage, const
size_t& elementSize, const
UInt32& elements = 1, const
bool& allowWrite = false) const override;
1442 virtual
UniquePtr<
IVulkanImage> createAttachment(const Format& format, const
Size2d& size, const MultiSamplingLevel& samples = MultiSamplingLevel::x1) const override;
1445 virtual
UniquePtr<
IVulkanImage> createAttachment(const
String& name, const Format& format, const
Size2d& size, const MultiSamplingLevel& samples = MultiSamplingLevel::x1) const override;
1448 virtual
UniquePtr<
IVulkanImage> createTexture(const Format& format, const
Size3d& size, const ImageDimensions& dimension = ImageDimensions::DIM_2, const
UInt32& levels = 1, const
UInt32& layers = 1, const MultiSamplingLevel& samples = MultiSamplingLevel::x1, const
bool& allowWrite = false) const override;
1451 virtual
UniquePtr<
IVulkanImage> createTexture(const
String& name, const Format& format, const
Size3d& size, const ImageDimensions& dimension = ImageDimensions::DIM_2, const
UInt32& levels = 1, const
UInt32& layers = 1, const MultiSamplingLevel& samples = MultiSamplingLevel::x1, const
bool& allowWrite = false) const override;
1454 virtual
Array<
UniquePtr<
IVulkanImage>> createTextures(const
UInt32& elements, const Format& format, const
Size3d& size, const ImageDimensions& dimension = ImageDimensions::DIM_2, const
UInt32& levels = 1, const
UInt32& layers = 1, const MultiSamplingLevel& samples = MultiSamplingLevel::x1, const
bool& allowWrite = false) const override;
1457 virtual
UniquePtr<
IVulkanSampler> createSampler(const FilterMode& magFilter = FilterMode::Nearest, const FilterMode& minFilter = FilterMode::Nearest, const BorderMode& borderU = BorderMode::Repeat, const BorderMode& borderV = BorderMode::Repeat, const BorderMode& borderW = BorderMode::Repeat, const MipMapMode& mipMapMode = MipMapMode::Nearest, const
Float& mipMapBias = 0.f, const
Float& maxLod = std::numeric_limits<
Float>::max(), const
Float& minLod = 0.f, const
Float& anisotropy = 0.f) const override;
1460 virtual
UniquePtr<
IVulkanSampler> createSampler(const
String& name, const FilterMode& magFilter = FilterMode::Nearest, const FilterMode& minFilter = FilterMode::Nearest, const BorderMode& borderU = BorderMode::Repeat, const BorderMode& borderV = BorderMode::Repeat, const BorderMode& borderW = BorderMode::Repeat, const MipMapMode& mipMapMode = MipMapMode::Nearest, const
Float& mipMapBias = 0.f, const
Float& maxLod = std::numeric_limits<
Float>::max(), const
Float& minLod = 0.f, const
Float& anisotropy = 0.f) const override;
1463 virtual
Array<
UniquePtr<
IVulkanSampler>> createSamplers(const
UInt32& elements, const FilterMode& magFilter = FilterMode::Nearest, const FilterMode& minFilter = FilterMode::Nearest, const BorderMode& borderU = BorderMode::Repeat, const BorderMode& borderV = BorderMode::Repeat, const BorderMode& borderW = BorderMode::Repeat, const MipMapMode& mipMapMode = MipMapMode::Nearest, const
Float& mipMapBias = 0.f, const
Float& maxLod = std::numeric_limits<
Float>::max(), const
Float& minLod = 0.f, const
Float& anisotropy = 0.f) const override;
1504 virtual
Span<const
String> enabledExtensions() const noexcept;
1516 virtual
void setDebugName(
UInt64 objectHandle, VkDebugReportObjectTypeEXT objectType,
StringView name) const noexcept;
1521 virtual
DeviceState& state() const noexcept override;
1530 virtual const
VulkanSurface& surface() const noexcept override;
1539 virtual const
VulkanQueue& graphicsQueue() const noexcept override;
1542 virtual const
VulkanQueue& transferQueue() const noexcept override;
1545 virtual const
VulkanQueue& bufferQueue() const noexcept override;
1548 virtual const
VulkanQueue& computeQueue() const noexcept override;
1554 virtual MultiSamplingLevel maximumMultiSamplingLevel(const Format& format) const noexcept override;
1557 virtual
void wait() const override;
1559#if defined(BUILD_DEFINE_BUILDERS)
1562 [[nodiscard]]
virtual VulkanRenderPassBuilder buildRenderPass(
const MultiSamplingLevel& samples = MultiSamplingLevel::x1,
const UInt32& commandBuffers = 1)
const override;
1565 [[nodiscard]]
virtual VulkanRenderPassBuilder buildRenderPass(
const String& name,
const MultiSamplingLevel& samples = MultiSamplingLevel::x1,
const UInt32& commandBuffers = 1)
const override;
1571 [[nodiscard]]
virtual VulkanRenderPipelineBuilder buildRenderPipeline(
const VulkanRenderPass& renderPass,
const String& name)
const override;
1574 [[nodiscard]]
virtual VulkanComputePipelineBuilder buildComputePipeline(
const String& name)
const override;
1577 [[nodiscard]]
virtual VulkanPipelineLayoutBuilder buildPipelineLayout()
const override;
1580 [[nodiscard]]
virtual VulkanInputAssemblerBuilder buildInputAssembler()
const override;
1583 [[nodiscard]]
virtual VulkanRasterizerBuilder buildRasterizer()
const override;
1586 [[nodiscard]]
virtual VulkanShaderProgramBuilder buildShaderProgram()
const override;
1614 virtual
Span<const
String> getEnabledValidationLayers() const noexcept;
1616#ifdef VK_USE_PLATFORM_WIN32_KHR
1651 static Array<String> getAvailableInstanceExtensions() noexcept;
1658 static
bool validateInstanceLayers(const
Span<const
String> validationLayers) noexcept;
1665 static
Array<
String> getInstanceValidationLayers() noexcept;
1670 virtual BackendType type() const noexcept override;
1673 virtual
String name() const noexcept override;
1677 virtual
void activate() override;
1680 virtual
void deactivate() override;
1694 virtual
void releaseDevice(const
String& name) override;
The base class for an application.
Definition: app.hpp:74
Provides access to a resource managed by the class.
Definition: containers.hpp:347
Represents the base interface for a Vulkan buffer implementation.
Definition: vulkan.hpp:92
virtual ~IVulkanBuffer() noexcept=default
Represents a Vulkan sampled image or the base interface for a texture.
Definition: vulkan.hpp:125
virtual ~IVulkanImage() noexcept=default
Represents a Vulkan index buffer.
Definition: vulkan.hpp:112
virtual ~IVulkanIndexBuffer() noexcept=default
Represents a Vulkan sampler.
Definition: vulkan.hpp:167
virtual ~IVulkanSampler() noexcept=default
Represents a Vulkan vertex buffer.
Definition: vulkan.hpp:102
virtual ~IVulkanVertexBuffer() noexcept=default
Defines a rendering backend that creates a Vulkan device.
Definition: vulkan.hpp:1593
std::function< VkSurfaceKHR(const VkInstance &)> surface_callback
A callback that creates a surface from a Vulkan instance.
Definition: vulkan.hpp:1627
VulkanBackend(VulkanBackend &&) noexcept=delete
VulkanBackend(const VulkanBackend &) noexcept=delete
Implements a Vulkan resource barrier.
Definition: vulkan.hpp:179
VulkanBarrier(VulkanBarrier &&)=delete
VulkanBarrier(const VulkanBarrier &)=delete
virtual ~VulkanBarrier() noexcept
Records commands for a VulkanCommandQueue
Definition: vulkan.hpp:802
VulkanCommandBuffer(const VulkanCommandBuffer &)=delete
VulkanCommandBuffer(VulkanCommandBuffer &&)=delete
Implements a Vulkan ComputePipeline.
Definition: vulkan.hpp:954
VulkanComputePipeline(VulkanComputePipeline &&) noexcept=delete
Implements a Vulkan IDescriptorLayout
Definition: vulkan.hpp:386
VulkanDescriptorLayout(VulkanDescriptorLayout &&)=delete
VulkanDescriptorLayout(const VulkanDescriptorLayout &)=delete
virtual ~VulkanDescriptorLayout() noexcept
Implements a Vulkan DescriptorSet.
Definition: vulkan.hpp:343
VulkanDescriptorSet(VulkanDescriptorSet &&)=delete
VulkanDescriptorSet(const VulkanDescriptorSet &)=delete
Implements a Vulkan DescriptorSetLayout.
Definition: vulkan.hpp:439
VulkanDescriptorSetLayout(const VulkanDescriptorSetLayout &)=delete
VulkanDescriptorSetLayout(VulkanDescriptorSetLayout &&)=delete
Implements a Vulkan graphics device.
Definition: vulkan.hpp:1469
VulkanDevice(const VulkanDevice &)=delete
VulkanDevice(VulkanDevice &&)=delete
Implements a Vulkan frame buffer.
Definition: vulkan.hpp:999
VulkanFrameBuffer(const VulkanFrameBuffer &) noexcept=delete
VulkanFrameBuffer(VulkanFrameBuffer &&) noexcept=delete
Represents a Vulkan IGraphicsAdapter.
Definition: vulkan_api.hpp:199
A graphics factory that produces objects for a VulkanDevice.
Definition: vulkan.hpp:1409
VulkanGraphicsFactory(VulkanGraphicsFactory &&)=delete
virtual ~VulkanGraphicsFactory() noexcept
VulkanGraphicsFactory(const VulkanGraphicsFactory &)=delete
Implements a Vulkan index buffer layout.
Definition: vulkan.hpp:55
VulkanIndexBufferLayout(const VulkanIndexBufferLayout &)=delete
VulkanIndexBufferLayout(VulkanIndexBufferLayout &&)=delete
virtual ~VulkanIndexBufferLayout() noexcept
Implements a Vulkan PipelineLayout.
Definition: vulkan.hpp:648
VulkanPipelineLayout(VulkanPipelineLayout &&) noexcept=delete
Defines the base class for Vulkan pipeline state objects.
Definition: vulkan.hpp:778
virtual ~VulkanPipelineState() noexcept=default
Implements the Vulkan PushConstantsLayout.
Definition: vulkan.hpp:596
VulkanPushConstantsLayout(const VulkanPushConstantsLayout &)=delete
virtual ~VulkanPushConstantsLayout() noexcept
VulkanPushConstantsLayout(VulkanPushConstantsLayout &&)=delete
Implements the Vulkan IPushConstantsRange.
Definition: vulkan.hpp:556
virtual ~VulkanPushConstantsRange() noexcept
VulkanPushConstantsRange(const VulkanPushConstantsRange &)=delete
VulkanPushConstantsRange(VulkanPushConstantsRange &&)=delete
Implements a Vulkan command queue.
Definition: vulkan.hpp:1278
VulkanQueue(const VulkanQueue &)=delete
VulkanQueue(VulkanQueue &&)=delete
virtual ~VulkanQueue() noexcept
Implements a Vulkan IRasterizer.
Definition: vulkan.hpp:734
VulkanRasterizer(VulkanRasterizer &&) noexcept=delete
Implements a Vulkan render pass.
Definition: vulkan.hpp:1067
VulkanRenderPass(VulkanRenderPass &&)=delete
VulkanRenderPass(const VulkanRenderPass &)=delete
Implements a Vulkan RenderPipeline.
Definition: vulkan.hpp:881
VulkanRenderPipeline(VulkanRenderPipeline &&) noexcept=delete
Implements a Vulkan IShaderModule.
Definition: vulkan.hpp:247
VulkanShaderModule(VulkanShaderModule &&) noexcept=delete
VulkanShaderModule(const VulkanShaderModule &) noexcept=delete
Implements a Vulkan ShaderProgram.
Definition: vulkan.hpp:304
VulkanShaderProgram(VulkanShaderProgram &&) noexcept=delete
Represents a Vulkan ISurface.
Definition: vulkan_api.hpp:276
Implements a Vulkan swap chain.
Definition: vulkan.hpp:1222
VulkanSwapChain(const VulkanSwapChain &)=delete
virtual ~VulkanSwapChain() noexcept
VulkanSwapChain(VulkanSwapChain &&)=delete
Implements a Vulkan vertex buffer layout.
Definition: vulkan.hpp:18
VulkanVertexBufferLayout(const VulkanVertexBufferLayout &)=delete
VulkanVertexBufferLayout(VulkanVertexBufferLayout &&)=delete
virtual ~VulkanVertexBufferLayout() noexcept
A barrier that transitions a set of resources backed by IDeviceMemory into different ResourceState.
Definition: rendering.hpp:19
Stores meta data about a buffer attribute, i.e. a member or field of a descriptor or buffer.
Definition: rendering_api.hpp:2461
Represents a command buffer, that buffers commands that should be submitted to a CommandQueue.
Definition: rendering.hpp:488
Represents a command queue.
Definition: rendering.hpp:874
Represents a compute Pipeline.
Definition: rendering.hpp:664
Stores the depth/stencil state of a see IRasterizer.
Definition: rendering_api.hpp:2066
Defines a set of descriptors.
Definition: rendering.hpp:169
Describes the layout of a descriptor set.
Definition: rendering.hpp:224
A class that can be used to manage the state of a IGraphicsDevice.
Definition: rendering_api.hpp:1489
Stores the images for the output attachments for a back buffer of a RenderPass, as well as a CommandB...
Definition: rendering.hpp:676
Represents the graphics device that a rendering back-end is doing work on.
Definition: rendering.hpp:1078
Describes a factory that creates objects for a GraphicsDevice.
Definition: rendering.hpp:930
Base interface for buffer objects.
Definition: rendering_api.hpp:2774
Describes a the layout of a single descriptor within a DescriptorSet.
Definition: rendering_api.hpp:2613
Describes a generic image.
Definition: rendering_api.hpp:2789
Describes a index buffer layout.
Definition: rendering_api.hpp:2579
The interface for a pipeline layout.
Definition: rendering_api.hpp:3410
Describes a range within a IPushConstantsLayout.
Definition: rendering_api.hpp:3282
Describes a texture sampler.
Definition: rendering_api.hpp:2872
The interface of a scissor.
Definition: rendering_api.hpp:2415
Represents a single shader module, i.e. a part of a IShaderProgram.
Definition: rendering_api.hpp:1827
Describes a vertex buffer layout.
Definition: rendering_api.hpp:2563
Interface for a viewport.
Definition: rendering_api.hpp:2331
Describes an index buffer.
Definition: rendering.hpp:396
Represents a pipeline state.
Definition: rendering.hpp:451
Represents a the layout of a RenderPipeline or a ComputePipeline.
Definition: rendering.hpp:347
Describes the layout of the pipelines push constant ranges.
Definition: rendering.hpp:296
Implements a IRasterizer.
Definition: rendering_api.hpp:2287
Defines a back-end, that provides a device instance for a certain surface and graphics adapter.
Definition: rendering.hpp:1224
Represents a render pass.
Definition: rendering.hpp:787
Represents a graphics Pipeline.
Definition: rendering.hpp:632
Implements a render target.
Definition: rendering_api.hpp:1994
Represents a shader program, consisting of multiple IShaderModules.
Definition: rendering.hpp:321
Represents a swap chain, i.e. a chain of multiple IImage instances, that can be presented to a ISurfa...
Definition: rendering.hpp:838
Describes a vertex buffer.
Definition: rendering.hpp:378
Implements the IResource interface.
Definition: containers.hpp:371
Definition: backend.cpp:9
Definition: barrier.cpp:100
Definition: command_buffer.cpp:9
Definition: compute_pipeline.cpp:10
Definition: descriptor_layout.cpp:9
Definition: descriptor_set.cpp:8
Definition: descriptor_set_layout.cpp:11
Definition: device.cpp:10
Definition: frame_buffer.cpp:9
Definition: factory.cpp:11
Definition: index_buffer_layout.cpp:9
Definition: pipeline_layout.cpp:10
Definition: push_constants_layout.cpp:10
Definition: push_constants_range.cpp:9
Definition: render_pass.cpp:10
Definition: render_pipeline.cpp:10
Definition: shader_module.cpp:10
Definition: shader_program.cpp:13
Definition: swapchain.cpp:12
Definition: vertex_buffer_layout.cpp:10
uint32_t UInt32
Definition: math.hpp:37
float_t Float
Definition: math.hpp:40
uint64_t UInt64
Definition: math.hpp:39
int32_t Int32
Definition: math.hpp:36
std::string String
Definition: string.hpp:19
std::vector< T > Array
Represents a dynamic array.
Definition: containers.hpp:58
std::span< T > Span
Represents a view of an array.
Definition: containers.hpp:72
std::shared_ptr< T > SharedPtr
Represents a shared pointer, that expresses non-exclusive ownership.
Definition: containers.hpp:94
std::unique_ptr< T, TDeleter > UniquePtr
Represents a unique pointer, that expresses exclusive ownership.
Definition: containers.hpp:87
std::string_view StringView
Definition: string.hpp:21
std::optional< T > Optional
Represents an optional value.
Definition: containers.hpp:79