diff --git a/CMSceneGraph b/CMSceneGraph index 4a7af92a..bcf08554 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 4a7af92ac66d55d1e6bf3d7e384ab92797e0559a +Subproject commit bcf085546059dab3776bb8aa520680169dbeb3d5 diff --git a/inc/hgl/graph/VKMaterial.h b/inc/hgl/graph/VKMaterial.h index b3dcff0d..6895c099 100644 --- a/inc/hgl/graph/VKMaterial.h +++ b/inc/hgl/graph/VKMaterial.h @@ -9,7 +9,7 @@ VK_NAMESPACE_BEGIN using ShaderStageCreateInfoList=List; -using MaterialParameterArray=MaterialParameters *[size_t(DescriptorSetType::RANGE_SIZE)]; +using MaterialParameterArray=MaterialParameters *[DESCRIPTOR_SET_TYPE_COUNT]; struct MaterialData { diff --git a/inc/hgl/graph/VKMaterialDescriptorSets.h b/inc/hgl/graph/VKMaterialDescriptorSets.h index 13be4a16..3305ad33 100644 --- a/inc/hgl/graph/VKMaterialDescriptorSets.h +++ b/inc/hgl/graph/VKMaterialDescriptorSets.h @@ -9,8 +9,8 @@ class MaterialDescriptorSets { UTF8String mtl_name; - //ShaderDescriptorList sd_list_by_set_type[size_t(DescriptorSetType::RANGE_SIZE)]; - bool set_has_desc[size_t(DescriptorSetType::RANGE_SIZE)]; + //ShaderDescriptorList sd_list_by_set_type[DESCRIPTOR_SET_TYPE_COUNT]; + bool set_has_desc[DESCRIPTOR_SET_TYPE_COUNT]; // Map sd_by_name; Map binding_map[VK_DESCRIPTOR_TYPE_RANGE_SIZE]; @@ -19,7 +19,7 @@ class MaterialDescriptorSets private: - DescriptorSetLayoutCreateInfo dsl_ci[size_t(DescriptorSetType::RANGE_SIZE)]; + DescriptorSetLayoutCreateInfo dsl_ci[DESCRIPTOR_SET_TYPE_COUNT]; public: diff --git a/inc/hgl/shadergen/MaterialDescriptorInfo.h b/inc/hgl/shadergen/MaterialDescriptorInfo.h index 7b36c6d3..34a610e6 100644 --- a/inc/hgl/shadergen/MaterialDescriptorInfo.h +++ b/inc/hgl/shadergen/MaterialDescriptorInfo.h @@ -29,7 +29,7 @@ class MaterialDescriptorInfo ShaderDescriptor *AddDescriptor(VkShaderStageFlagBits ssb,ShaderDescriptor *new_sd); ///<添加一个描述符,如果它本身存在,则返回false }; - using ShaderDescriptorSetArray=ShaderDescriptorSet[size_t(DescriptorSetType::RANGE_SIZE)]; + using ShaderDescriptorSetArray=ShaderDescriptorSet[DESCRIPTOR_SET_TYPE_COUNT]; ShaderDescriptorSetArray desc_set_array; @@ -67,5 +67,10 @@ public: const DescriptorSetType GetSetType(const AnsiString &)const; void Resort(); //排序产生set号与binding号 + + const bool hasSet(const DescriptorSetType &type)const + { + return desc_set_array[size_t(type)].count>0; + } }; SHADERGEN_NAMESPACE_END diff --git a/src/SceneGraph/Vulkan/VKMaterialDescriptorSets.cpp b/src/SceneGraph/Vulkan/VKMaterialDescriptorSets.cpp index d28f8ea4..00df32c2 100644 --- a/src/SceneGraph/Vulkan/VKMaterialDescriptorSets.cpp +++ b/src/SceneGraph/Vulkan/VKMaterialDescriptorSets.cpp @@ -50,7 +50,7 @@ MaterialDescriptorSets::MaterialDescriptorSets(const UTF8String &name,ShaderDesc } } - VkDescriptorSetLayoutBinding *dsl_bind[size_t(DescriptorSetType::RANGE_SIZE)]; + VkDescriptorSetLayoutBinding *dsl_bind[DESCRIPTOR_SET_TYPE_COUNT]; { ENUM_CLASS_FOR(DescriptorSetType,int,i) diff --git a/src/SceneGraph/Vulkan/VKPipelineLayoutData.h b/src/SceneGraph/Vulkan/VKPipelineLayoutData.h index 119b60fc..02a5b5ec 100644 --- a/src/SceneGraph/Vulkan/VKPipelineLayoutData.h +++ b/src/SceneGraph/Vulkan/VKPipelineLayoutData.h @@ -9,10 +9,10 @@ struct PipelineLayoutData { VkDevice device; - int binding_count[size_t(DescriptorSetType::RANGE_SIZE)]; - VkDescriptorSetLayout layouts[size_t(DescriptorSetType::RANGE_SIZE)]; + int binding_count[DESCRIPTOR_SET_TYPE_COUNT]; + VkDescriptorSetLayout layouts[DESCRIPTOR_SET_TYPE_COUNT]; - VkDescriptorSetLayout fin_dsl[size_t(DescriptorSetType::RANGE_SIZE)]; + VkDescriptorSetLayout fin_dsl[DESCRIPTOR_SET_TYPE_COUNT]; uint32_t fin_dsl_count; VkPipelineLayout pipeline_layout;