From cefea7229da467a79410fb4152211b60075cae02 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Thu, 28 Sep 2023 17:42:14 +0800 Subject: [PATCH] added CreateUBODescriptor --- src/ShaderGen/MaterialCreateInfo.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/ShaderGen/MaterialCreateInfo.cpp b/src/ShaderGen/MaterialCreateInfo.cpp index 8cb2af1b..467cb999 100644 --- a/src/ShaderGen/MaterialCreateInfo.cpp +++ b/src/ShaderGen/MaterialCreateInfo.cpp @@ -135,6 +135,22 @@ bool MaterialCreateInfo::AddUBO(const uint32_t flag_bits,const DescriptorSetType return(result==shader_map.GetCount()); } +namespace +{ + UBODescriptor *CreateUBODescriptor(const ShaderBufferSource &sbs,const uint32_t flag_bits) + { + UBODescriptor *ubo=new UBODescriptor; + + ubo->type=sbs.struct_name; + + hgl::strcpy(ubo->name,DESCRIPTOR_NAME_MAX_LENGTH,sbs.name); + + ubo->stage_flag=flag_bits; + + return ubo; + } +}//namespace + /** * 设置材质实例代码与数据长度 * @param glsl_codes 材质实例GLSL代码 @@ -160,11 +176,7 @@ bool MaterialCreateInfo::SetMaterialInstance(const AnsiString &glsl_codes,const mdi.AddStruct(MaterialInstanceStruct,mi_codes); mdi.AddStruct(SBS_MaterialInstance); - mi_ubo=new UBODescriptor(); - - mi_ubo->type=SBS_MaterialInstance.struct_name; - hgl::strcpy(mi_ubo->name,DESCRIPTOR_NAME_MAX_LENGTH,SBS_MaterialInstance.name); - mi_ubo->stage_flag=shader_stage_flag_bits; + mi_ubo=CreateUBODescriptor(SBS_MaterialInstance,shader_stage_flag_bits); mdi.AddUBO(shader_stage_flag_bits,DescriptorSetType::PerMaterial,mi_ubo); @@ -194,11 +206,7 @@ bool MaterialCreateInfo::SetLocalToWorld(const uint32_t shader_stage_flag_bits) mdi.AddStruct(SBS_LocalToWorld); - l2w_ubo=new UBODescriptor(); - - l2w_ubo->type=SBS_LocalToWorld.struct_name; - hgl::strcpy(l2w_ubo->name,DESCRIPTOR_NAME_MAX_LENGTH,SBS_LocalToWorld.name); - l2w_ubo->stage_flag=shader_stage_flag_bits; + l2w_ubo=CreateUBODescriptor(SBS_LocalToWorld,shader_stage_flag_bits); mdi.AddUBO(shader_stage_flag_bits,DescriptorSetType::PerFrame,l2w_ubo);