SpiecsEngine
 
Loading...
Searching...
No Matches

◆ RegistryDGCPipeline()

void Spices::Renderer::RegistryDGCPipeline ( const std::string & materialName,
const std::string & subPassName,
VulkanDeviceGeneratedCommandsNV * indirectPtr )
inherited

Registry dgc pipeline to Specific Renderer.

Parameters
[in]materialNameMaterial Name.
[in]subPassNameSubPass Name.
[in]indirectPtrVulkanDeviceGeneratedCommandsNV.

Instance a temp empty map for VkDescriptorSetLayout. Before turn it to a continus container, sorted is required.

PreRenderer's DescriptorSetInfo.

SpecificRenderer's DescriptorSetInfo.

Material's DescriptorSetInfo.

Note
remove for material use bindless descriptorset.

Instance a temp empty vector for VkDescriptorSetLayout.

@breif Create PipelineLayout.

Create Pipeline.

Instance a temp empty map for VkDescriptorSetLayout. Before turn it to a continus container, sorted is required.

PreRenderer's DescriptorSetInfo.

SpecificRenderer's DescriptorSetInfo.

Material's DescriptorSetInfo.

Note
remove for material use bindless descriptorset.

Instance a temp empty vector for VkDescriptorSetLayout.

@breif Create PipelineLayout.

Create Pipeline.

Definition at line 162 of file Renderer.cpp.

163 {
165
170 std::map<uint32_t, VkDescriptorSetLayout> sortedRowSetLayouts;
171
175 const auto preRendererSetInfo = DescriptorSetManager::GetByName("PreRenderer");
176 for (auto& pair : preRendererSetInfo)
177 {
178 sortedRowSetLayouts[pair.first] = pair.second->GetRowSetLayout();
179 }
180
184 const auto specificRendererSetInfo = DescriptorSetManager::GetByName({ m_Pass->GetName(), subPassName});
185 for (auto& pair : specificRendererSetInfo)
186 {
187 sortedRowSetLayouts[pair.first] = pair.second->GetRowSetLayout();
188 }
189
194 const auto material = ResourcePool<Material>::Load<Material>(materialName, materialName);
195
199 std::vector<VkDescriptorSetLayout> rowSetLayouts;
200
201 for (auto& pair : sortedRowSetLayouts)
202 {
203 rowSetLayouts.push_back(pair.second);
204 }
205
209 const auto& subPass = *m_Pass->GetSubPasses()->find_value(subPassName);
210 VkPipelineLayout pipelineLayout = CreatePipelineLayout(rowSetLayouts, subPass);
211
215 std::stringstream ss;
216 ss << materialName << ".DGC";
217 CreateDeviceGeneratedCommandsPipeline(ss.str(), materialName, pipelineLayout, subPass, indirectPtr);
218 }
#define SPICES_PROFILE_ZONE
static DescriptorSetInfo & GetByName(const String2 &name)
Get a DescriptorSetInfo by owner's name.
std::shared_ptr< RendererPass > m_Pass
RendererPass.
Definition Renderer.h:2012
VkPipelineLayout CreatePipelineLayout(const std::vector< VkDescriptorSetLayout > &rowSetLayouts, const std::shared_ptr< RendererSubPass > &subPass) const
Create Pipeline Layout with material's descriptorset and renderer's descriptor set.
Definition Renderer.cpp:271
virtual void CreateDeviceGeneratedCommandsPipeline(const std::string &pipelineName, const std::string &materialName, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass, VulkanDeviceGeneratedCommandsNV *indirectPtr)
Create device generated command Pipeline.
Definition Renderer.h:270

Referenced by Spices::Renderer::CreateDGCMaterial().