VulkanEngine 0.1
Graphics engine using Vulkan
Loading...
Searching...
No Matches
Shader.h
1// Copyright (c) 2024 Michael Carlie. All Rights Reserved.
2//
3// This software is released under the MIT License.
4// https://opensource.org/licenses/MIT
5
6#ifndef INCLUDE_VULKANENGINE_SHADER_H_
7#define INCLUDE_VULKANENGINE_SHADER_H_
8
9#include <VulkanEngine/Descriptor.h>
10#include <VulkanEngine/ShaderModule.h>
11
12#include <vector>
13
14namespace VulkanEngine {
15
18class Shader {
19 public:
22 explicit Shader(
23 const std::vector<std::shared_ptr<ShaderModule>>& _shader_modules);
24
26 ~Shader();
27
30 void setDescriptors(
31 const std::vector<std::vector<std::shared_ptr<Descriptor>>>&
32 _descriptors);
33
37 void bindDescriptorSet(const vk::CommandBuffer& command_buffer,
38 uint32_t descriptor_set_index);
39
41 const std::vector<vk::PipelineShaderStageCreateInfo>& getVkShaderStages()
42 const;
43
45 const vk::PipelineLayout createVkPipelineLayout();
46
47 private:
49 std::vector<vk::PipelineShaderStageCreateInfo> shader_stages;
50
52 std::vector<std::shared_ptr<ShaderModule>> shader_modules;
53
55 std::vector<std::vector<std::shared_ptr<Descriptor>>> descriptors;
56
58 vk::DescriptorPool vk_descriptor_pool;
59
61 std::vector<vk::DescriptorSetLayout> vk_descriptor_set_layouts;
62
64 std::vector<vk::DescriptorSet> vk_descriptor_sets;
65
67 vk::PipelineLayout vk_pipeline_layout;
68};
69
70} // namespace VulkanEngine
71
72#endif // INCLUDE_VULKANENGINE_SHADER_H_
Definition: Shader.h:18
void setDescriptors(const std::vector< std::vector< std::shared_ptr< Descriptor > > > &_descriptors)
Definition: Shader.cpp:50
~Shader()
Destructor.
Definition: Shader.cpp:40
void bindDescriptorSet(const vk::CommandBuffer &command_buffer, uint32_t descriptor_set_index)
Definition: Shader.cpp:123
const std::vector< vk::PipelineShaderStageCreateInfo > & getVkShaderStages() const
Definition: Shader.cpp:133
const vk::PipelineLayout createVkPipelineLayout()
Definition: Shader.cpp:137
TODO development of this class is in progress.
Definition: Attribute.h:13