3#include "../Interface/GraphicsPipeline.hpp"
7#include <vulkan/vulkan.h>
15class VulkanShaderProgram;
16class VertexDescription;
58 VkPipelineLayout pipelineLayout;
63 std::vector<VkPipelineShaderStageCreateInfo> shaderStages;
64 VkPipelineVertexInputStateCreateInfo vertexInputStateCreateInfo;
65 VkPipelineInputAssemblyStateCreateInfo inputAssemblyCreateInfo;
66 VkPipelineViewportStateCreateInfo viewportStateCreateInfo;
67 VkPipelineRasterizationStateCreateInfo rasterizationStateCreateInfo;
68 VkPipelineRasterizationConservativeStateCreateInfoEXT conservativeRasterizationInfo;
69 VkPipelineMultisampleStateCreateInfo multisampleStateCreateInfo;
70 VkPipelineDepthStencilStateCreateInfo depthStencilState;
71 VkPipelineColorBlendAttachmentState blendAttachmentState;
72 VkPipelineColorBlendStateCreateInfo blendStateCreateInfo;
73 VkDynamicState dynamicState[3];
74 VkPipelineDynamicStateCreateInfo dynamicStateCreateInfo;
75 VkGraphicsPipelineCreateInfo pipelineCreateInfo;
78 struct RenderPassCompare {
104 std::map<VulkanRenderPass::Compatibility, VkPipeline, RenderPassCompare> pipelines;
A graphics pipeline.
Definition: GraphicsPipeline.hpp:11
A shader program.
Definition: ShaderProgram.hpp:11
Describes how a vertex buffer is accessed by a shader.
Definition: VertexDescription.hpp:8
Vulkan implementation of GraphicsPipeline.
Definition: VulkanGraphicsPipeline.hpp:19
VkPipeline GetPipeline(const VulkanRenderPass *renderPass)
Get the Vulkan pipeline for a given render pass.
Definition: VulkanGraphicsPipeline.cpp:243
VkPipelineLayout GetPipelineLayout() const
Get the Vulkan pipeline layout.
Definition: VulkanGraphicsPipeline.cpp:266
~VulkanGraphicsPipeline() final
Destructor.
Definition: VulkanGraphicsPipeline.cpp:235
VulkanGraphicsPipeline(const VulkanRenderer &renderer, VkDevice device, const ShaderProgram *shaderProgram, const Configuration &configuration, const VertexDescription *vertexDescription=nullptr)
Create new Vulkan graphics pipeline.
Definition: VulkanGraphicsPipeline.cpp:13
const VulkanShaderProgram * GetShaderProgram() const
Get the Vulkan shader program.
Definition: VulkanGraphicsPipeline.cpp:270
Vulkan implementation of RenderPass.
Definition: VulkanRenderPass.hpp:14
Low-level renderer implementing Vulkan.
Definition: VulkanRenderer.hpp:24
Vulkan implementation of ShaderProgram.
Definition: VulkanShaderProgram.hpp:16
Definition: Editor.hpp:18
The configuration of the graphics pipeline.
Definition: GraphicsPipeline.hpp:14
Compatibility information about the render pass.
Definition: VulkanRenderPass.hpp:20
bool hasDepthAttachment
Whether the render pass has a depth attachment.
Definition: VulkanRenderPass.hpp:28
VkFormat depthAttachmentFormat
The format of the render pass' depth attachment.
Definition: VulkanRenderPass.hpp:31
VkFormat colorAttachmentFormat
The format of the render pass' color attachment.
Definition: VulkanRenderPass.hpp:25
uint32_t attachmentlessMsaa
MSAA sample count when doing attachmentless rendering.
Definition: VulkanRenderPass.hpp:34
bool hasColorAttachment
Whether the render pass has a color attachment.
Definition: VulkanRenderPass.hpp:22