7#include <vulkan/vulkan.hpp>
8#include <vulkan/vulkan_enums.hpp>
9#include <vulkan/vulkan_handles.hpp>
10#include <vulkan/vulkan_structs.hpp>
34 -> std::vector<::
vk::VertexInputBindingDescription>;
37 -> std::vector<::
vk::VertexInputAttributeDescription>;
40 -> std::vector<::
vk::DescriptorSetLayoutBinding>;
50 using Ptr = std::shared_ptr<Shader>;
52 static auto create(const ::vk::Device& device,
56 static auto create(const ::vk::Device& device,
72 const ::vk::RenderPass& render_pass,
std::shared_ptr< spv_reflect::ShaderModule > reflection_
Definition shader.hpp:45
::vk::ShaderModule module_
Definition shader.hpp:44
auto module() const -> ::vk::ShaderModule
Definition shader.hpp:31
ShaderModule(reflect::spirv_t spirv, const ::vk::ShaderModule &module)
auto get_vertex_input_bindings() const -> std::vector<::vk::VertexInputBindingDescription >
auto get_vertex_input_attributes() const -> std::vector<::vk::VertexInputAttributeDescription >
reflect::spirv_t spirv_
Definition shader.hpp:43
auto get_descriptor_set_layout_bindings() const -> std::vector<::vk::DescriptorSetLayoutBinding >
static auto create(const ::vk::Device &device, const std::filesystem::path &shader_path) -> expected< Ptr >
::vk::DescriptorSetLayout descriptor_layout_
Definition shader.hpp:80
::vk::PipelineLayout pipeline_layout_
Definition shader.hpp:81
auto get_pipeline() const
Definition shader.hpp:59
void fragment_shader(const ShaderModule &fragment)
Definition shader.hpp:63
ShaderModule vertex_shader_module_
Definition shader.hpp:84
ShaderModule fragment_shader_module_
Definition shader.hpp:85
auto pipeline_layout() const
Definition shader.hpp:60
static auto create(const ::vk::Device &device, const std::string &vertex_shader, const std::string &fragment_shader) -> expected< Ptr >
auto descriptor_layout() const
Definition shader.hpp:61
std::shared_ptr< Shader > Ptr
Definition shader.hpp:50
static auto read_wren_shader_file(const std::filesystem::path &path) -> expected< std::map< ShaderType, std::string > >
::vk::Pipeline pipeline_
Definition shader.hpp:82
auto create_graphics_pipeline(const ::vk::Device &device, const ::vk::RenderPass &render_pass, const math::Vec2f &size, bool depth) -> expected< void >
void vertex_shader(const ShaderModule &vertex)
Definition shader.hpp:67
Definition reflect.hpp:25
std::vector< uint32_t > spirv_t
Definition shader.hpp:19
Definition render_pass.hpp:19
BOOST_DEFINE_ENUM(ShaderType, Vertex, Fragment)
std::expected< T, Err > expected
Definition result.hpp:43
Definition vector.hpp:161