diff --git a/CMSceneGraph b/CMSceneGraph index 6e30c0c2..3d5c287d 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit 6e30c0c2ca4056b0593ea0d1770bd7485c2b2d6c +Subproject commit 3d5c287da5b5d5a52d73e80d9cc828a0f6f87a80 diff --git a/inc/hgl/graph/VK.h b/inc/hgl/graph/VK.h index d194aae5..84186283 100644 --- a/inc/hgl/graph/VK.h +++ b/inc/hgl/graph/VK.h @@ -73,7 +73,7 @@ class Semaphore; struct PipelineLayoutData; class DescriptorSet; -struct ShaderStage; +struct ShaderAttribute; class ShaderResource; class ShaderModule; diff --git a/inc/hgl/graph/VKShaderModule.h b/inc/hgl/graph/VKShaderModule.h index 0889dea6..4f6b3b17 100644 --- a/inc/hgl/graph/VKShaderModule.h +++ b/inc/hgl/graph/VKShaderModule.h @@ -60,7 +60,7 @@ class VertexShaderModule:public ShaderModule uint32_t attr_count; VAT *type_list; const char **name_list; - ShaderStage **ssi_list; + ShaderAttribute **ssi_list; private: @@ -75,9 +75,9 @@ public: * 获取输入流绑定点,需要注意的时,这里获取的binding并非是shader中的binding/location,而是绑定顺序的序列号。对应vkCmdBindVertexBuffer的缓冲区序列号 */ const int GetStageInputBinding(const AnsiString &name)const{return shader_resource->GetStageInputBinding(name);} - const ShaderStage * GetStageInput (const AnsiString &name)const{return shader_resource->GetStageInput(name);} + const ShaderAttribute * GetStageInput (const AnsiString &name)const{return shader_resource->GetStageInput(name);} const uint GetStageInputCount () const{return shader_resource->GetStageInputCount();} - const ShaderStageList & GetStageInputs () const{return shader_resource->GetStageInputs();} + const ShaderAttributeList & GetStageInputs () const{return shader_resource->GetStageInputs();} //const uint32_t GetAttrCount()const{return attr_count;} diff --git a/inc/hgl/graph/VKShaderResource.h b/inc/hgl/graph/VKShaderResource.h index a377ea7f..a8c69126 100644 --- a/inc/hgl/graph/VKShaderResource.h +++ b/inc/hgl/graph/VKShaderResource.h @@ -16,27 +16,26 @@ class ShaderResource const void *spv_data; uint32 spv_size; - ShaderStageList stage_inputs; -// ShaderStageList stage_outputs; + ShaderStageIO stage_io; public: ShaderResource(const VkShaderStageFlagBits &,const void *,const uint32); virtual ~ShaderResource()=default; - const VkShaderStageFlagBits GetStage ()const {return stage_flag;} - const char * GetStageName ()const {return GetShaderStageName(stage_flag);} + const VkShaderStageFlagBits GetStageFlagBit ()const {return stage_flag;} + const char * GetStageFlagName ()const {return GetShaderStageName(stage_flag);} const uint32_t * GetCode ()const {return (uint32_t *)spv_data;} const uint32_t GetCodeSize ()const {return spv_size;} - ShaderStageList & GetStageInputs () {return stage_inputs;} -// ShaderStageList & GetStageOutputs () {return stage_outputs;} + ShaderAttributeList & GetStageInputs () {return stage_io.input;} +// ShaderAttributeList & GetStageOutputs () {return stage_io.output;} - const uint GetStageInputCount ()const {return stage_inputs.GetCount();} -// const uint GetStageOutputCount ()const {return stage_outputs.GetCount();} + const uint GetStageInputCount ()const {return stage_io.input.GetCount();} +// const uint GetStageOutputCount ()const {return stage_io.output.GetCount();} - const ShaderStage * GetStageInput (const AnsiString &)const; + const ShaderAttribute * GetStageInput (const AnsiString &)const; const int GetStageInputBinding(const AnsiString &)const; };//class ShaderResource diff --git a/inc/hgl/shadergen/ShaderDescriptorInfo.h b/inc/hgl/shadergen/ShaderDescriptorInfo.h index 4ab97451..85e744e8 100644 --- a/inc/hgl/shadergen/ShaderDescriptorInfo.h +++ b/inc/hgl/shadergen/ShaderDescriptorInfo.h @@ -19,7 +19,7 @@ using SubpassInputDescriptorList=ObjectList; */ class ShaderDescriptorInfo { - VkShaderStageFlagBits shader_stage; + VkShaderStageFlagBits stage_flag; ShaderStageIO stage_io; @@ -39,8 +39,8 @@ public: ShaderDescriptorInfo(VkShaderStageFlagBits); ~ShaderDescriptorInfo()=default; - const VkShaderStageFlagBits GetStageBits()const { return shader_stage; } - const AnsiString GetStageName()const { return AnsiString(GetShaderStageName(shader_stage)); } + const VkShaderStageFlagBits GetStageFlag()const { return stage_flag; } + const AnsiString GetStageName()const { return AnsiString(GetShaderStageName(stage_flag)); } public: @@ -57,8 +57,8 @@ public: public: - bool AddInput(ShaderStage *); - bool AddOutput(ShaderStage *); + bool AddInput(ShaderAttribute *); + bool AddOutput(ShaderAttribute *); bool AddUBO(DescriptorSetType type,const UBODescriptor *sd); bool AddSampler(DescriptorSetType type,const SamplerDescriptor *sd); diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index e573742f..318554d0 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -139,7 +139,7 @@ Material *RenderResource::CreateMaterial(const OSString &filename) if(sr) { - shader_name=filename+OS_TEXT("?")+ToOSString(sr->GetStageName()); + shader_name=filename+OS_TEXT("?")+ToOSString(sr->GetStageFlagName()); sm=CreateShaderModule(shader_name,sr); diff --git a/src/SceneGraph/Vulkan/VKShaderModule.cpp b/src/SceneGraph/Vulkan/VKShaderModule.cpp index 8f172903..e877b22c 100644 --- a/src/SceneGraph/Vulkan/VKShaderModule.cpp +++ b/src/SceneGraph/Vulkan/VKShaderModule.cpp @@ -7,7 +7,7 @@ ShaderModule *GPUDevice::CreateShaderModule(ShaderResource *sr) { if(!sr)return(nullptr); - PipelineShaderStageCreateInfo *shader_stage=new PipelineShaderStageCreateInfo(sr->GetStage()); + PipelineShaderStageCreateInfo *shader_stage=new PipelineShaderStageCreateInfo(sr->GetStageFlagBit()); ShaderModuleCreateInfo moduleCreateInfo(sr); @@ -16,7 +16,7 @@ ShaderModule *GPUDevice::CreateShaderModule(ShaderResource *sr) ShaderModule *sm; - if(sr->GetStage()==VK_SHADER_STAGE_VERTEX_BIT) + if(sr->GetStageFlagBit()==VK_SHADER_STAGE_VERTEX_BIT) sm=new VertexShaderModule(attr->device,shader_stage,sr); else sm=new ShaderModule(attr->device,shader_stage,sr); @@ -44,7 +44,7 @@ ShaderModule::~ShaderModule() VertexShaderModule::VertexShaderModule(VkDevice dev,VkPipelineShaderStageCreateInfo *pssci,ShaderResource *sr):ShaderModule(dev,pssci,sr) { - const ShaderStageList &stage_input_list=sr->GetStageInputs(); + const ShaderAttributeList &stage_input_list=sr->GetStageInputs(); attr_count=stage_input_list.GetCount(); ssi_list=stage_input_list.GetData(); @@ -80,7 +80,7 @@ VIL *VertexShaderModule::CreateVIL(const VILConfig *cfg) VkVertexInputBindingDescription *bind=binding_list; VkVertexInputAttributeDescription *attr=attribute_list; - ShaderStage **si=ssi_list; + ShaderAttribute **si=ssi_list; VAConfig vac; for(uint i=0;i shader_resource_by_filename; - const bool LoadShaderStages(ShaderStageList &ss_list,io::ConstBufferReader &cbr) + const bool LoadShaderStages(ShaderAttributeList &ss_list,io::ConstBufferReader &cbr) { uint count; @@ -19,11 +19,11 @@ VK_NAMESPACE_BEGIN if(count<=0) return(false); - ShaderStage *ss; + ShaderAttribute *ss; for(uint i=0;ilocation); cbr.CastRead(ss->basetype); @@ -45,10 +45,10 @@ VK_NAMESPACE_BEGIN spv_size=size; } - const ShaderStage *ShaderResource::GetStageInput(const AnsiString &name) const + const ShaderAttribute *ShaderResource::GetStageInput(const AnsiString &name) const { - const int count=stage_inputs.GetCount(); - ShaderStage **ss=stage_inputs.GetData(); + const int count=stage_io.input.GetCount(); + ShaderAttribute **ss=stage_io.input.GetData(); for(int i=0;iname,sizeof(ss->name),name.c_str()); @@ -89,7 +89,7 @@ bool ShaderCreateInfo::ProcOutput() { output_struct.Clear(); - const ShaderStageList &ssl=sdm->GetShaderStageIO().output; + const ShaderAttributeList &ssl=sdm->GetShaderStageIO().output; if(ssl.GetCount()<=0)return(true); @@ -99,7 +99,7 @@ bool ShaderCreateInfo::ProcOutput() for(auto *ss:ssl) { output_struct+="\t"; - output_struct+=GetShaderStageTypeName(ss); + output_struct+=GetShaderAttributeTypename(ss); output_struct+=" "; output_struct+=ss->name; output_struct+=";\n"; diff --git a/src/ShaderGen/ShaderCreateInfoFragment.cpp b/src/ShaderGen/ShaderCreateInfoFragment.cpp index fa01f13f..ccbbf6da 100644 --- a/src/ShaderGen/ShaderCreateInfoFragment.cpp +++ b/src/ShaderGen/ShaderCreateInfoFragment.cpp @@ -12,7 +12,7 @@ void ShaderCreateInfoFragment::UseDefaultMain() const auto &output_list=sdm->GetShaderStageIO().output; const uint count=output_list.GetCount(); - ShaderStage **o=output_list.GetData(); + ShaderAttribute **o=output_list.GetData(); for(uint i=0;iGetShaderStageIO().output; const uint count=output_list.GetCount(); - ShaderStage **o=output_list.GetData(); + ShaderAttribute **o=output_list.GetData(); for(uint i=0;iname; final_shader+=";\n"; diff --git a/src/ShaderGen/ShaderCreateInfoVertex.cpp b/src/ShaderGen/ShaderCreateInfoVertex.cpp index fac59d2e..e78bf664 100644 --- a/src/ShaderGen/ShaderCreateInfoVertex.cpp +++ b/src/ShaderGen/ShaderCreateInfoVertex.cpp @@ -10,7 +10,7 @@ using namespace hgl::graph; int ShaderCreateInfoVertex::AddInput(const VAT &type,const AnsiString &name) { - ShaderStage *ss=new ShaderStage; + ShaderAttribute *ss=new ShaderAttribute; hgl::strcpy(ss->name,sizeof(ss->name),name.c_str()); @@ -48,10 +48,10 @@ bool ShaderCreateInfoVertex::ProcInput(ShaderCreateInfo *) for(auto *ss:input) { final_shader+="layout(location="; - final_shader+=UTF8String::numberOf(ss->location); + final_shader+=AnsiString::numberOf(ss->location); final_shader+=") in "; - final_shader+=UTF8String(GetShaderStageTypeName(ss)); - final_shader+=" "+UTF8String(ss->name); + final_shader+=GetShaderAttributeTypename(ss); + final_shader+=" "+AnsiString(ss->name); final_shader+=";\n"; } } diff --git a/src/ShaderGen/ShaderDescriptorInfo.cpp b/src/ShaderGen/ShaderDescriptorInfo.cpp index d1c471fd..c436195b 100644 --- a/src/ShaderGen/ShaderDescriptorInfo.cpp +++ b/src/ShaderGen/ShaderDescriptorInfo.cpp @@ -3,14 +3,14 @@ SHADERGEN_NAMESPACE_BEGIN ShaderDescriptorInfo::ShaderDescriptorInfo(VkShaderStageFlagBits flag_bit) { - shader_stage=flag_bit; + stage_flag=flag_bit; hgl_zero(push_constant); } namespace { - bool Find(ObjectList &ol,const ShaderStage *ss) + bool Find(ObjectList &ol,const ShaderAttribute *ss) { for(int i=0;iname,ss->name)==0) @@ -20,7 +20,7 @@ namespace } }//namespace -bool ShaderDescriptorInfo::AddInput(ShaderStage *ss) +bool ShaderDescriptorInfo::AddInput(ShaderAttribute *ss) { if(!ss)return(false); @@ -31,7 +31,7 @@ bool ShaderDescriptorInfo::AddInput(ShaderStage *ss) return(true); } -bool ShaderDescriptorInfo::AddOutput(ShaderStage *ss) +bool ShaderDescriptorInfo::AddOutput(ShaderAttribute *ss) { if(!ss)return(false); @@ -110,7 +110,7 @@ void ShaderDescriptorInfo::DebugOutput(int index) LOG_INFO("\tStage Input "+UTF8String::numberOf(stage_io.input.GetCount())); for(auto *ss:stage_io.input) - LOG_INFO("\t\tlayout(location="+UTF8String::numberOf(ss->location)+") in "+UTF8String(GetShaderStageTypeName(ss))+"\t"+UTF8String(ss->name)); + LOG_INFO("\t\tlayout(location="+UTF8String::numberOf(ss->location)+") in "+GetShaderAttributeTypename(ss)+"\t"+UTF8String(ss->name)); } if(stage_io.output.GetCount()>0) @@ -118,7 +118,7 @@ void ShaderDescriptorInfo::DebugOutput(int index) LOG_INFO("\tStage Output "+UTF8String::numberOf(stage_io.output.GetCount())); for(auto *ss:stage_io.output) - LOG_INFO("\t\tlayout(location="+UTF8String::numberOf(ss->location)+") out "+UTF8String(GetShaderStageTypeName(ss))+"\t"+UTF8String(ss->name)); + LOG_INFO("\t\tlayout(location="+UTF8String::numberOf(ss->location)+") out "+GetShaderAttributeTypename(ss)+"\t"+UTF8String(ss->name)); } if(ubo_list.GetCount()>0)