Toast Engine
Loading...
Searching...
No Matches
shader_layout.hpp
1#pragma once
2
4
5#include <string_view>
6#include <vector>
7#include <vulkan/vulkan_raii.hpp>
8
9namespace renderer {
10class VulkanCore;
11
12class ShaderLayout {
13public:
14 ShaderLayout() = default;
15 ~ShaderLayout() = default;
16
17 void rebuild(const VulkanCore& core, const ShaderReflection& reflection, std::string_view debug_name);
18
19 [[nodiscard]]
20 auto getPipelineLayout() const -> const vk::raii::PipelineLayout& {
21 return m_pipeline_layout;
22 }
23
24 [[nodiscard]]
25 auto getDescriptorSetLayouts() const -> const std::vector<vk::raii::DescriptorSetLayout>& {
26 return m_descriptor_set_layouts;
27 }
28
29private:
30 std::vector<vk::raii::DescriptorSetLayout> m_descriptor_set_layouts;
31 vk::raii::PipelineLayout m_pipeline_layout = nullptr;
32 std::vector<vk::PushConstantRange> m_push_constant_ranges;
33};
34}
Definition vulkan_core.hpp:48
Definition shader_reflection.hpp:87