comment sd_list_by_set_type array and GetDescriptorList function at MaterialDescriptorSets
This commit is contained in:
@@ -21,6 +21,10 @@ MaterialDescriptorSets::MaterialDescriptorSets(const UTF8String &name,ShaderDesc
|
||||
|
||||
if(sd_count<=0)return;
|
||||
|
||||
ShaderDescriptorList sd_list_by_desc_type[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
|
||||
|
||||
hgl_zero(set_has_desc);
|
||||
|
||||
{
|
||||
ENUM_CLASS_FOR(DescriptorSetType,int,i)
|
||||
{
|
||||
@@ -42,7 +46,8 @@ MaterialDescriptorSets::MaterialDescriptorSets(const UTF8String &name,ShaderDesc
|
||||
|
||||
++dsl_ci[size_t(sp->set_type)].bindingCount;
|
||||
|
||||
sd_list_by_set_type[size_t(sp->set_type)].Add(sp);
|
||||
//sd_list_by_set_type[size_t(sp->set_type)].Add(sp);
|
||||
set_has_desc[size_t(sp->set_type)]=true;
|
||||
|
||||
++sp;
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
|
||||
const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const void *spv_data,const size_t spv_size)
|
||||
const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size)
|
||||
{
|
||||
if(!device)return(nullptr);
|
||||
if(filename.IsEmpty())return(nullptr);
|
||||
@@ -198,14 +198,57 @@ Material *RenderResource::CreateMaterial(const OSString &filename)
|
||||
|
||||
Material *RenderResource::CreateMaterial(const hgl::shadergen::MaterialCreateInfo *mci)
|
||||
{
|
||||
SHADERGEN_NAMESPACE_USING
|
||||
|
||||
if(!mci)
|
||||
return(nullptr);
|
||||
|
||||
const uint count=GetShaderCountByBits(mci->GetShaderStage());
|
||||
ShaderModuleMap *smm=new ShaderModuleMap;
|
||||
SHADERGEN_NAMESPACE_USING
|
||||
|
||||
const uint count=GetShaderCountByBits(mci->GetShaderStage());
|
||||
const ShaderModule *sm;
|
||||
|
||||
ShaderModuleMap *smm=new ShaderModuleMap;
|
||||
VertexInput *vertex_input=nullptr;
|
||||
|
||||
const OSString mtl_name=ToOSString(mci->GetName());
|
||||
|
||||
const ShaderCreateInfoVertex *vert=mci->GetVS();
|
||||
|
||||
if(vert)
|
||||
{
|
||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Vertex"),
|
||||
VK_SHADER_STAGE_VERTEX_BIT,
|
||||
vert->GetCode(),vert->GetCodeSize());
|
||||
|
||||
if(sm)
|
||||
{
|
||||
if(smm->Add(sm))
|
||||
vertex_input=new VertexInput(vert->GetInput());
|
||||
}
|
||||
|
||||
smm->Add(sm);
|
||||
}
|
||||
|
||||
const ShaderCreateInfoGeometry *geom=mci->GetGS();
|
||||
|
||||
if(geom)
|
||||
{
|
||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Geometry"),
|
||||
VK_SHADER_STAGE_GEOMETRY_BIT,
|
||||
geom->GetCode(),geom->GetCodeSize());
|
||||
|
||||
smm->Add(sm);
|
||||
}
|
||||
|
||||
const ShaderCreateInfoFragment *frag=mci->GetFS();
|
||||
|
||||
if(frag)
|
||||
{
|
||||
sm=CreateShaderModule( mtl_name+OS_TEXT("?Fragment"),
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT,
|
||||
frag->GetCode(),frag->GetCodeSize());
|
||||
|
||||
smm->Add(sm);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user