Class RenderStage

Inheritance Relationships

Base Type

Derived Type

Class Documentation

class inexor::vulkan_renderer::RenderStage : public inexor::vulkan_renderer::RenderGraphObject

A single render stage in the render graph.


Not to be confused with a vulkan render pass.

Subclassed by inexor::vulkan_renderer::GraphicsStage

Public Functions

RenderStage(const RenderStage&) = delete
RenderStage(RenderStage&&) = delete
~RenderStage() override = default
RenderStage &operator=(const RenderStage&) = delete
RenderStage &operator=(RenderStage&&) = delete
void writes_to(const RenderResource *resource)

Specifies that this stage writes to resource.

void reads_from(const RenderResource *resource)

Specifies that this stage reads from resource.

inline void add_descriptor_layout(VkDescriptorSetLayout layout)

Binds a descriptor set layout to this render stage.


This function will be removed in the near future, as we are aiming for users of the API to not have to deal with descriptors at all.

inline void add_push_constant_range(VkPushConstantRange range)

Add a push constant range to this render stage.


range – The push constant range

inline void set_on_record(std::function<void(const PhysicalStage&, const wrapper::CommandBuffer&)> on_record)

Specifies a function that will be called during command buffer recording for this stage.

This function can be used to specify other vulkan commands during command buffer recording. The most common use for this is for draw commands.

Protected Functions

inline explicit RenderStage(std::string name)

Private Members

friend RenderGraph
const std::string m_name
std::unique_ptr<PhysicalStage> m_physical
std::vector<const RenderResource*> m_writes
std::vector<const RenderResource*> m_reads
std::vector<VkDescriptorSetLayout> m_descriptor_layouts
std::vector<VkPushConstantRange> m_push_constant_ranges
std::function< void(const PhysicalStage &, const wrapper::CommandBuffer &)> m_on_record   = {[](auto &, auto &) {}}