SpiecsEngine
 
Loading...
Searching...
No Matches

◆ RegistryMaterial()

void Spices::Renderer::RegistryMaterial ( const std::string & materialName,
const std::string & subPassName )
inherited

Registry material to Specific Renderer.

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

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 96 of file Renderer.cpp.

97 {
99
104 std::map<uint32_t, VkDescriptorSetLayout> sortedRowSetLayouts;
105
110 {
111 const auto preRendererSetInfo = DescriptorSetManager::GetByName("PreRenderer");
112 for (auto& pair : preRendererSetInfo)
113 {
114 sortedRowSetLayouts[pair.first] = pair.second->GetRowSetLayout();
115 }
116 }
117
122 {
123 const auto specificRendererSetInfo = DescriptorSetManager::GetByName({ m_Pass->GetName(), subPassName });
124 for (auto& pair : specificRendererSetInfo)
125 {
126 sortedRowSetLayouts[pair.first] = pair.second->GetRowSetLayout();
127 }
128 }
129
134 const auto material = ResourcePool<Material>::Load<Material>(materialName, materialName);
136 {
137 // Not Implementated.
138 }
139
143 std::vector<VkDescriptorSetLayout> rowSetLayouts;
144
145 for (auto& pair : sortedRowSetLayouts)
146 {
147 rowSetLayouts.push_back(pair.second);
148 }
149
153 const auto subPass = *m_Pass->GetSubPasses()->find_value(subPassName);
154 VkPipelineLayout pipelineLayout = CreatePipelineLayout(rowSetLayouts, subPass);
155
159 CreatePipeline(material, pipelineLayout, subPass);
160 }
#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
DescriptorSetManager::DescriptorSetCombineFlags m_DescriptorSetCombine
Combination of DescriptorSet.
Definition Renderer.h:2027
virtual void CreatePipeline(std::shared_ptr< Material > material, VkPipelineLayout &layout, std::shared_ptr< RendererSubPass > subPass)=0
Create Specific Material Pipeline.

References Spices::Renderer::m_DescriptorSetCombine, Spices::DescriptorSetManager::Material, Spices::DescriptorSetManager::PreRenderer, and Spices::DescriptorSetManager::ThisRenderer.