diff --git a/inc/hgl/shadergen/MaterialDescriptorInfo.h b/inc/hgl/shadergen/MaterialDescriptorInfo.h index a42bb181..90e4a9db 100644 --- a/inc/hgl/shadergen/MaterialDescriptorInfo.h +++ b/inc/hgl/shadergen/MaterialDescriptorInfo.h @@ -14,6 +14,7 @@ SHADERGEN_NAMESPACE_BEGIN */ class MaterialDescriptorInfo { + uint descriptor_count; ShaderDescriptorSetArray desc_set_array; Map struct_map; @@ -51,6 +52,11 @@ public: void Resort(); //排序产生set号与binding号 + const uint GetCount()const + { + return descriptor_count; + } + const ShaderDescriptorSetArray &Get()const { return desc_set_array; diff --git a/src/ShaderGen/MaterialDescriptorInfo.cpp b/src/ShaderGen/MaterialDescriptorInfo.cpp index 4b582d19..fbae964c 100644 --- a/src/ShaderGen/MaterialDescriptorInfo.cpp +++ b/src/ShaderGen/MaterialDescriptorInfo.cpp @@ -14,6 +14,8 @@ MaterialDescriptorInfo::MaterialDescriptorInfo() p.set=-1; p.count=0; } + + descriptor_count=0; } const DescriptorSetType MaterialDescriptorInfo::GetSetType(const AnsiString &name)const @@ -73,6 +75,8 @@ SamplerDescriptor *MaterialDescriptorInfo::GetSampler(const AnsiString &name) void MaterialDescriptorInfo::Resort() { + descriptor_count=0; + //重新生成set/binding { int set=0; @@ -81,6 +85,8 @@ void MaterialDescriptorInfo::Resort() { if(p.count>0) { + descriptor_count+=p.count; + p.set=set; auto *sdp=p.descriptor_map.GetDataList();