16#ifndef AEONGAMES_VULKANPIPELINE_HPP
17#define AEONGAMES_VULKANPIPELINE_HPP
23#include <vulkan/vulkan.h>
24#include "aeongames/Pipeline.hpp"
25#include "VulkanDescriptorSet.hpp"
28struct SpvReflectShaderModule;
58 void ReflectAttributes ( SpvReflectShaderModule& module );
59 void ReflectDescriptorSets ( SpvReflectShaderModule& module,
ShaderType aType );
60 void ReflectPushConstants ( SpvReflectShaderModule& module,
ShaderType aType );
63 VkPipelineLayout mVkPipelineLayout{ VK_NULL_HANDLE };
64 VkPipeline mVkPipeline{ VK_NULL_HANDLE };
65 uint32_t mVertexStride{0};
66 std::vector<VkVertexInputAttributeDescription> mVertexAttributes{};
67 std::vector<VulkanDescriptorSetInfo> mDescriptorSets{};
68 VkPushConstantRange mPushConstantModelMatrix{};
Rendering pipeline resource.
VulkanPipeline(const VulkanRenderer &aVulkanRenderer, const Pipeline &aPipeline)
Construct from a renderer and pipeline resource.
const Pipeline * GetPipeline() const
Get the source Pipeline resource.
const VkDescriptorSetLayout GetDescriptorSetLayout(uint32_t name) const
Get a descriptor set layout by its name hash.
uint32_t GetDescriptorSetIndex(uint32_t hash) const
Get the descriptor set index for a given hash.
const VkPipeline GetVkPipeline() const
Get the Vulkan pipeline handle.
const VkPushConstantRange & GetPushConstantModelMatrix() const
Get the push constant range used for the model matrix.
const VkPipelineLayout GetPipelineLayout() const
Get the Vulkan pipeline layout handle.
Vulkan rendering backend implementing the Renderer interface.
<- This is here just for the literals
ShaderType
Shader stage types.