From 18d391f01e6d276c80ecc52d89afa12a8cc5a64c Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 9 Jun 2025 23:01:41 +0800 Subject: [PATCH] =?UTF-8?q?MaterialCreateInfo=E5=A2=9E=E5=8A=A0AddUBOStruc?= =?UTF-8?q?t=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMCore | 2 +- inc/hgl/shadergen/MaterialCreateInfo.h | 4 ++-- src/ShaderGen/2d/Std2DMaterial.cpp | 10 ++-------- src/ShaderGen/3d/Std3DMaterial.cpp | 16 +++------------- src/ShaderGen/MaterialCreateInfo.cpp | 8 ++++++++ 5 files changed, 16 insertions(+), 24 deletions(-) diff --git a/CMCore b/CMCore index 10108953..86ac0c37 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 10108953ebff000823b072be9e4c632471520945 +Subproject commit 86ac0c37fcf6c4c4cb82446b89767561c9349517 diff --git a/inc/hgl/shadergen/MaterialCreateInfo.h b/inc/hgl/shadergen/MaterialCreateInfo.h index 3ca21485..90db7945 100644 --- a/inc/hgl/shadergen/MaterialCreateInfo.h +++ b/inc/hgl/shadergen/MaterialCreateInfo.h @@ -81,11 +81,11 @@ namespace hgl::graph bool SetLocalToWorld(const uint32_t shader_stage_flag_bits); bool AddStruct(const AnsiString &ubo_typename,const AnsiString &codes); - bool AddStruct(const ShaderBufferSource &ss){return AddStruct(ss.struct_name,ss.codes);} bool AddUBO(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const AnsiString &struct_name,const AnsiString &name); bool AddUBO(const uint32_t flag_bits,const DescriptorSetType &set_type,const AnsiString &struct_name,const AnsiString &name); - bool AddUBO(const uint32_t flag_bits,const DescriptorSetType &set_type,const ShaderBufferSource &ss){return AddUBO(flag_bits,set_type,ss.struct_name,ss.name);} + + bool AddUBOStruct(const uint32_t flag_bits,const ShaderBufferSource &ss); bool AddSampler(const VkShaderStageFlagBits flag_bits,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name); diff --git a/src/ShaderGen/2d/Std2DMaterial.cpp b/src/ShaderGen/2d/Std2DMaterial.cpp index 9d0c54f3..81cd3564 100644 --- a/src/ShaderGen/2d/Std2DMaterial.cpp +++ b/src/ShaderGen/2d/Std2DMaterial.cpp @@ -17,9 +17,7 @@ bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) if(cfg->local_to_world ||cfg->material_instance) { - mci->AddStruct(SBS_LocalToWorld); - - mci->AddUBO(VK_SHADER_STAGE_ALL_GRAPHICS,DescriptorSetType::PerFrame,SBS_LocalToWorld); + mci->AddUBOStruct(VK_SHADER_STAGE_ALL_GRAPHICS,SBS_LocalToWorld); vsc->AddAssign(); } @@ -43,11 +41,7 @@ bool Std2DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) if(cfg->coordinate_system==CoordinateSystem2D::Ortho) { - mci->AddStruct(SBS_ViewportInfo); - - mci->AddUBO(VK_SHADER_STAGE_ALL_GRAPHICS, - DescriptorSetType::RenderTarget, - SBS_ViewportInfo); + mci->AddUBOStruct(VK_SHADER_STAGE_ALL_GRAPHICS,SBS_ViewportInfo); } return(true); diff --git a/src/ShaderGen/3d/Std3DMaterial.cpp b/src/ShaderGen/3d/Std3DMaterial.cpp index aca0b4b4..86ce88c3 100644 --- a/src/ShaderGen/3d/Std3DMaterial.cpp +++ b/src/ShaderGen/3d/Std3DMaterial.cpp @@ -13,20 +13,14 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) if(cfg->camera||cfg->local_to_world||cfg->material_instance) { - mci->AddStruct(SBS_LocalToWorld); - - mci->AddUBO(VK_SHADER_STAGE_ALL_GRAPHICS,DescriptorSetType::PerFrame,SBS_LocalToWorld); + mci->AddUBOStruct(VK_SHADER_STAGE_ALL_GRAPHICS,SBS_LocalToWorld); vsc->AddAssign(); } if(cfg->camera) { - mci->AddStruct(SBS_CameraInfo); - - mci->AddUBO(VK_SHADER_STAGE_ALL_GRAPHICS, - DescriptorSetType::Camera, - SBS_CameraInfo); + mci->AddUBOStruct(VK_SHADER_STAGE_ALL_GRAPHICS,SBS_CameraInfo); } if(cfg->local_to_world) @@ -58,11 +52,7 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) vsc->AddFunction(func::GetNormalVS); } - mci->AddStruct(SBS_ViewportInfo); - - mci->AddUBO(VK_SHADER_STAGE_ALL_GRAPHICS, - DescriptorSetType::RenderTarget, - SBS_ViewportInfo); + mci->AddUBOStruct(VK_SHADER_STAGE_ALL_GRAPHICS,SBS_ViewportInfo); return(true); } diff --git a/src/ShaderGen/MaterialCreateInfo.cpp b/src/ShaderGen/MaterialCreateInfo.cpp index a89451a7..3e877038 100644 --- a/src/ShaderGen/MaterialCreateInfo.cpp +++ b/src/ShaderGen/MaterialCreateInfo.cpp @@ -93,6 +93,14 @@ bool MaterialCreateInfo::AddUBO(const uint32_t flag_bits,const DescriptorSetType return(result==shader_map.GetCount()); } +bool MaterialCreateInfo::AddUBOStruct(const uint32_t flag_bits,const ShaderBufferSource &ss) +{ + if(!AddStruct(ss.struct_name,ss.codes)) + return(false); + + return AddUBO(flag_bits,ss.set_type,ss.struct_name,ss.name); +} + bool MaterialCreateInfo::AddSampler(const VkShaderStageFlagBits flag_bit,const DescriptorSetType set_type,const SamplerType &st,const AnsiString &name) { if(!shader_map.ContainsKey(flag_bit))