27 #include <ht_pipeline_base.h> 29 #include <ht_vkrenderpass.h> 30 #include <ht_vkshader.h> 32 #include <ht_vulkan.h> 48 bool Initialize(
const Resource::PipelineHandle& handle,
const VkDevice& device,
const VkDescriptorPool& descriptorPool);
51 bool VUpdate()
override;
58 bool VSetInt(
size_t offset,
int data)
override;
59 bool VSetDouble(
size_t offset,
double data)
override;
60 bool VSetFloat(
size_t offset,
float data)
override;
61 bool VSetFloat2(
size_t offset, Math::Vector2 data)
override;
62 bool VSetFloat3(
size_t offset, Math::Vector3 data)
override;
63 bool VSetFloat4(
size_t offset, Math::Vector4 data)
override;
64 bool VSetMatrix4(
size_t offset, Math::Matrix4 data)
override;
66 VkPipeline GetVKPipeline();
68 void BindPipeline(
const VkCommandBuffer& commandBuffer);
73 VkDescriptorPool m_descriptorPool;
76 std::vector<VkVertexInputAttributeDescription> m_vertexLayout;
78 uint32_t m_vertexLayoutStride;
79 uint32_t m_instanceLayoutStride;
81 VkPipelineDepthStencilStateCreateInfo m_depthStencilState;
82 VkPipelineRasterizationStateCreateInfo m_rasterizationState;
83 VkPipelineMultisampleStateCreateInfo m_multisampleState;
85 std::vector<VkPipelineShaderStageCreateInfo> m_shaderStages;
86 std::map<Resource::Pipeline::ShaderSlot, Graphics::ShaderHandle> m_shaderHandles;
88 VkPipelineCache m_pipelineCache;
89 VkPipelineLayout m_pipelineLayout;
90 VkPipeline m_pipeline;
92 std::vector<BYTE> m_pushData;
93 std::vector<BYTE> m_descriptorData;
95 UniformBlock_vk m_uniformVSBuffer;
96 uint8_t* m_uniformBindPoint;
97 VkDescriptorSet m_descriptorSet;
100 bool m_hasVertexAttribs;
101 bool m_hasIndexAttribs;
108 void setVertexLayout(
const std::vector<Resource::Pipeline::Attribute> vertexLayout);
113 void setInstanceLayout(
const std::vector<Resource::Pipeline::Attribute> instanceLayout);
115 void setDepthStencilState(
const Hatchit::Resource::Pipeline::DepthStencilState& depthStencilState);
120 void setRasterState(
const Hatchit::Resource::Pipeline::RasterizerState& rasterState);
125 void setMultisampleState(
const Hatchit::Resource::Pipeline::MultisampleState& multiState);
133 bool preparePipeline();
135 bool prepareDescriptorSet();
137 VkFormat formatFromType(
const Resource::ShaderVariable::Type& type)
const;
139 void addAttributesToLayout(
const std::vector<Resource::Pipeline::Attribute>& attributes, std::vector<VkVertexInputAttributeDescription>& vkAttributes, uint32_t& outStride);
141 VkBlendOp getVKBlendOpFromResourceBlendOp(Resource::RenderTarget::BlendOp blendOp);
Definition: ht_d3d12material.h:27
Definition: ht_vkrootlayout.h:30
Definition: ht_vkpipeline.h:42
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_color.h:19
Definition: ht_pipeline_base.h:39
Definition: ht_vkrenderpass.h:41
Definition: ht_shadervariablechunk.h:38