From d17932c7a45fd325f8d7a38e7ed689563f9cd9b5 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Mon, 5 Jun 2023 17:00:22 +0800 Subject: [PATCH] removed source codes about "Load Material file" --- inc/hgl/graph/VKRenderResource.h | 2 - src/SceneGraph/Vulkan/VKRenderResource.cpp | 10 -- .../Vulkan/VKRenderResourceMaterial.cpp | 157 +----------------- src/SceneGraph/Vulkan/VKShaderResource.cpp | 51 ------ src/ShaderGen/ShaderDescriptorInfo.cpp | 51 ------ 5 files changed, 1 insertion(+), 270 deletions(-) diff --git a/inc/hgl/graph/VKRenderResource.h b/inc/hgl/graph/VKRenderResource.h index 98aa10ea..406d9187 100644 --- a/inc/hgl/graph/VKRenderResource.h +++ b/inc/hgl/graph/VKRenderResource.h @@ -97,11 +97,9 @@ public: //Material const ShaderModule *CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size); - Material * CreateMaterial(const OSString &); Material * CreateMaterial(const mtl::MaterialCreateInfo *); MaterialInstance * CreateMaterialInstance(Material *,const VILConfig *vil_cfg=nullptr); - MaterialInstance * CreateMaterialInstance(const OSString &,const VILConfig *vil_cfg=nullptr); MaterialInstance * CreateMaterialInstance(const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr); Primitive * CreatePrimitive(const uint32_t vertex_count=0); diff --git a/src/SceneGraph/Vulkan/VKRenderResource.cpp b/src/SceneGraph/Vulkan/VKRenderResource.cpp index 3f0a5877..8c0e084f 100644 --- a/src/SceneGraph/Vulkan/VKRenderResource.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResource.cpp @@ -62,16 +62,6 @@ MaterialInstance *RenderResource::CreateMaterialInstance(Material *mtl,const VIL return mi; } -MaterialInstance *RenderResource::CreateMaterialInstance(const OSString &mtl_filename,const VILConfig *vil_cfg) -{ - Material *mtl=this->CreateMaterial(mtl_filename); - - if(!mtl) - return(nullptr); - - return CreateMaterialInstance(mtl,vil_cfg); -} - MaterialInstance *RenderResource::CreateMaterialInstance(const mtl::MaterialCreateInfo *mci,const VILConfig *vil_cfg) { Material *mtl=this->CreateMaterial(mci); diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index 79882c7b..bc665f21 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -12,7 +12,6 @@ #include VK_NAMESPACE_BEGIN - const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename,VkShaderStageFlagBits shader_stage,const uint32_t *spv_data,const size_t spv_size) { if(!device)return(nullptr); @@ -45,160 +44,6 @@ const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename, return sm; } -void LoadShaderDescriptor(io::ConstBufferReader &cbr,ShaderDescriptor *sd_list,const uint count,const uint8 ver) -{ - ShaderDescriptor *sd=sd_list; - - for(uint i=0;i(sd->desc_type); - cbr.ReadTinyString(sd->name); - - if(ver==3) - cbr.CastRead(sd->set_type); - else - if(ver==2) //以下是旧的,未来不用了,现仅保证能运行 - { - if(sd->name[0]=='g')sd->set_type=DescriptorSetType::Global;else - //if(sd->name[0]=='m')sd->set_type=DescriptorSetType::PerMaterial;else - //if(sd->name[0]=='r')sd->set_type=DescriptorSetType::PerObject;else - sd->set_type=DescriptorSetType::PerMaterial; - } - - cbr.Read(sd->set); - cbr.Read(sd->binding); - cbr.Read(sd->stage_flag); - - //if(sd->set_type>=DescriptorSetType::PerObject) - //{ - // if(sd->desc_type==VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;else - // if(sd->desc_type==VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)sd->desc_type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC; - //} - - ++sd; - } -} - -ShaderResource *LoadShaderResource(io::ConstBufferReader &cbr); - -Material *RenderResource::CreateMaterial(const OSString &filename) -{ - Material *mtl; - - if(material_by_name.Get(filename,mtl)) - return mtl; - - constexpr char MaterialFileHeader[]=u8"Material\x1A"; - constexpr uint MaterialFileHeaderLength=sizeof(MaterialFileHeader)-1; - - int64 filesize; - uint8 *filedata=(uint8 *)filesystem::LoadFileToMemory(filename+OS_TEXT(".material"),filesize); - - if(!filedata) - { - material_by_name.Add(filename,nullptr); - return(nullptr); - } - - AutoDeleteArray origin_filedata(filedata,filesize); - - if(filesize3) - return(nullptr); - - uint32_t shader_bits; - - cbr.Read(shader_bits); - - const uint count=GetShaderCountByBits(shader_bits); - uint32_t size; - - ShaderResource *sr; - const ShaderModule *sm; - - bool result=true; - ShaderModuleMap *smm=new ShaderModuleMap; - VertexInput *vertex_input=nullptr; - - OSString shader_name; - - for(uint i=0;iGetStageName()); - - sm=CreateShaderModule(shader_name,sr->GetStage(),sr->GetSPVData(),sr->GetSPVSize()); - - if(sm) - { - if(smm->Add(sm)) - { - if(sr->GetStage()==VK_SHADER_STAGE_VERTEX_BIT) - vertex_input=new VertexInput(sr->GetInputs()); - - continue; - } - } - } - - result=false; - break; - } - - const UTF8String mtl_name=ToUTF8String(filename); - - MaterialDescriptorManager *desc_manager=nullptr; - { - uint8 count; - cbr.Read(count); - - if(count>0) - { - ShaderDescriptor *sd_list=new ShaderDescriptor[count]; - - LoadShaderDescriptor(cbr,sd_list,count,ver); - - desc_manager=new MaterialDescriptorManager(mtl_name,sd_list,count); - - delete[] sd_list; - } - } - - if(result&&vertex_input) - { - mtl=device->CreateMaterial(mtl_name,smm,desc_manager,vertex_input); - Add(mtl); - } - else - { - SAFE_CLEAR(desc_manager); - delete smm; - mtl=nullptr; - } - - material_by_name.Add(filename,mtl); - return(mtl); -} - Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) { if(!mci) @@ -276,6 +121,6 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) } material_by_name.Add(mtl_name,mtl); - return mtl; + return mtl; } VK_NAMESPACE_END diff --git a/src/SceneGraph/Vulkan/VKShaderResource.cpp b/src/SceneGraph/Vulkan/VKShaderResource.cpp index b7d53b66..c51e6534 100644 --- a/src/SceneGraph/Vulkan/VKShaderResource.cpp +++ b/src/SceneGraph/Vulkan/VKShaderResource.cpp @@ -5,39 +5,6 @@ #include VK_NAMESPACE_BEGIN - - namespace - { - ObjectMap shader_resource_by_filename; - - const bool LoadShaderStageAttributes(ShaderAttributeArray &sa_array,io::ConstBufferReader &cbr) - { - uint count; - - cbr.CastRead(count); - - if(count<=0) - return(false); - - Init(&sa_array,count); - - ShaderAttribute *ss=sa_array.items; - - for(uint i=0;ilocation); - cbr.CastRead(ss->basetype); - cbr.CastRead(ss->vec_size); - - cbr.ReadTinyString(ss->name); - - ++ss; - } - - return true; - } - }//namespcae - ShaderResource::ShaderResource(const VkShaderStageFlagBits &flag,const uint32_t *sd,const uint32 size) { stage_flag=flag; @@ -85,22 +52,4 @@ VK_NAMESPACE_BEGIN return -1; } - - ShaderResource *LoadShaderResource(io::ConstBufferReader &cbr) - { - VkShaderStageFlagBits flag; - uint32 spv_size; - - cbr.CastRead(flag); - cbr.Read(spv_size); - - ShaderResource *sr=new ShaderResource(flag,(const uint32_t *)cbr.CurPointer(),spv_size); - - cbr.Skip(spv_size); - - LoadShaderStageAttributes(sr->GetInputs(),cbr); -// LoadShaderStageAttributes(sr->GetStageOutputs(),cbr); - - return sr; - } VK_NAMESPACE_END diff --git a/src/ShaderGen/ShaderDescriptorInfo.cpp b/src/ShaderGen/ShaderDescriptorInfo.cpp index 496b0300..7a590b64 100644 --- a/src/ShaderGen/ShaderDescriptorInfo.cpp +++ b/src/ShaderGen/ShaderDescriptorInfo.cpp @@ -109,55 +109,4 @@ void ShaderDescriptorInfo::SetPushConstant(const UTF8String name,uint8_t offset, push_constant.offset=offset; push_constant.size =size; } - -#ifdef _DEBUG -void ShaderDescriptorInfo::DebugOutput(int index) -{ - UTF8String name=GetStageName(); - - LOG_INFO(UTF8String::numberOf(index)+": "+name+" shader"); - - if(stage_io.input.count>0) - { - LOG_INFO("\tStage Input "+UTF8String::numberOf(stage_io.input.count)); - - const ShaderAttribute *ss=stage_io.input.items; - - for(uint i=0;iname)); - ++ss; - } - } - - if(stage_io.output.count>0) - { - LOG_INFO("\tStage Output "+UTF8String::numberOf(stage_io.output.count)); - - const ShaderAttribute *ss=stage_io.output.items; - - for(uint i=0;iname)); - ++ss; - } - } - - if(ubo_list.GetCount()>0) - { - LOG_INFO("\tUBO "+UTF8String::numberOf(ubo_list.GetCount())); - - for(auto *ubo:ubo_list) - LOG_INFO("\t\tlayout(set="+UTF8String::numberOf(ubo->set)+",binding="+UTF8String::numberOf(ubo->binding)+") uniform "+ubo->type+"\t"+ubo->type); - } - - if(sampler_list.GetCount()>0) - { - LOG_INFO("\tSampler "+UTF8String::numberOf(sampler_list.GetCount())); - - for(auto *ubo:ubo_list) - LOG_INFO("\t\tlayout(set="+UTF8String::numberOf(ubo->set)+",binding="+UTF8String::numberOf(ubo->binding)+") uniform "+ubo->type+"\t"+ubo->type); - } -} -#endif//_DEBUG }}//namespace hgl::graph \ No newline at end of file