From 8f0cd9f35bd4e79ba2531b4f5c53705d8962a84d Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 26 Jul 2024 03:25:09 +0800 Subject: [PATCH] use AnsiString in shader --- inc/hgl/graph/VKCommandBuffer.h | 6 +++--- inc/hgl/graph/VKInstance.h | 4 ++-- inc/hgl/graph/VKMaterialDescriptorManager.h | 8 ++++---- inc/hgl/graph/VertexAttribDataAccess.h | 16 ++++++++-------- inc/hgl/shadergen/ShaderDescriptorInfo.h | 4 ++-- src/SceneGraph/VertexDataManager.cpp | 2 +- .../Vulkan/Texture/VKTexture2DArrayLoader.cpp | 2 +- src/SceneGraph/Vulkan/VKCommandBuffer.cpp | 4 ++-- src/SceneGraph/Vulkan/VKDeviceCreater.cpp | 2 +- src/SceneGraph/Vulkan/VKDeviceMaterial.cpp | 4 ++-- src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp | 2 +- src/SceneGraph/Vulkan/VKInstance.cpp | 2 +- .../Vulkan/VKMaterialDescriptorManager.cpp | 4 ++-- src/SceneGraph/Vulkan/VKPhysicalDevice.cpp | 2 +- src/SceneGraph/Vulkan/VKRenderResource.cpp | 4 ++-- src/SceneGraph/Vulkan/VKRenderable.cpp | 18 +++++++++--------- src/ShaderGen/GLSLCompiler.cpp | 4 ++-- src/ShaderGen/MaterialFileData.h | 2 ++ src/ShaderGen/MaterialFileLoader.cpp | 2 +- src/ShaderGen/ShaderDescriptorInfo.cpp | 4 ++-- src/ShaderGen/ShaderLibrary.cpp | 8 ++++---- 21 files changed, 53 insertions(+), 51 deletions(-) diff --git a/inc/hgl/graph/VKCommandBuffer.h b/inc/hgl/graph/VKCommandBuffer.h index 175c5df2..e5d77631 100644 --- a/inc/hgl/graph/VKCommandBuffer.h +++ b/inc/hgl/graph/VKCommandBuffer.h @@ -28,11 +28,11 @@ public: bool End(){return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);} #ifdef _DEBUG - void SetDebugName(const UTF8String &); - void BeginRegion(const UTF8String &,const Color4f &); + void SetDebugName(const AnsiString &); + void BeginRegion(const AnsiString &,const Color4f &); void EndRegion(); #else - void BeginRegion(const UTF8String &,const Color4f &){} + void BeginRegion(const AnsiString &,const Color4f &){} void EndRegion(){} #endif//_DEBUG };//class GPUCmdBuffer diff --git a/inc/hgl/graph/VKInstance.h b/inc/hgl/graph/VKInstance.h index d532b237..c50aee9a 100644 --- a/inc/hgl/graph/VKInstance.h +++ b/inc/hgl/graph/VKInstance.h @@ -90,11 +90,11 @@ VK_NAMESPACE_BEGIN } template - T *GetDeviceProc(const char *name) + T *GetDeviceProc(VkDevice *dev,const char *name) { if(!GetDeviceProcAddr)return(nullptr); - return reinterpret_cast(GetDeviceProcAddr(name)); + return reinterpret_cast(GetDeviceProcAddr(dev,name)); } void DestroySurface(VkSurfaceKHR); diff --git a/inc/hgl/graph/VKMaterialDescriptorManager.h b/inc/hgl/graph/VKMaterialDescriptorManager.h index 7a971e87..96eed6ab 100644 --- a/inc/hgl/graph/VKMaterialDescriptorManager.h +++ b/inc/hgl/graph/VKMaterialDescriptorManager.h @@ -7,7 +7,7 @@ VK_NAMESPACE_BEGIN class MaterialDescriptorManager { - UTF8String mtl_name; + AnsiString mtl_name; BindingMapArray binding_map[DESCRIPTOR_SET_TYPE_COUNT]; @@ -19,11 +19,11 @@ private: public: - MaterialDescriptorManager(const UTF8String &,ShaderDescriptor *,const uint); - MaterialDescriptorManager(const UTF8String &,const ShaderDescriptorSetArray &); + MaterialDescriptorManager(const AnsiString &,ShaderDescriptor *,const uint); + MaterialDescriptorManager(const AnsiString &,const ShaderDescriptorSetArray &); ~MaterialDescriptorManager(); - const UTF8String &GetMaterialName()const{return mtl_name;} + const AnsiString &GetMaterialName()const{return mtl_name;} const uint GetBindCount(const DescriptorSetType &set_type)const { diff --git a/inc/hgl/graph/VertexAttribDataAccess.h b/inc/hgl/graph/VertexAttribDataAccess.h index 3ff74275..57861888 100644 --- a/inc/hgl/graph/VertexAttribDataAccess.h +++ b/inc/hgl/graph/VertexAttribDataAccess.h @@ -171,7 +171,7 @@ namespace hgl AABB GetAABB()const { - vec min_point,max_point; + glm::vec4 min_point,max_point; GetBoundingBox(min_point,max_point); @@ -264,7 +264,7 @@ namespace hgl AABB GetAABB()const { - vec min_point,max_point; + glm::vec4 min_point,max_point; GetBoundingBox(min_point,max_point); @@ -462,10 +462,10 @@ namespace hgl template bool WriteRect(const T left,const T top,const T width,const T height) { - const vec2 lt(left ,top); - const vec2 rt(left+width,top); - const vec2 rb(left+width,top+height); - const vec2 lb(left ,top+height); + const glm::vec<2,V,glm::defaultp> lt(left ,top); + const glm::vec<2,V,glm::defaultp> rt(left+width,top); + const glm::vec<2,V,glm::defaultp> rb(left+width,top+height); + const glm::vec<2,V,glm::defaultp> lb(left ,top+height); return WriteQuad(lt,rt,rb,lb); } @@ -580,7 +580,7 @@ namespace hgl AABB GetAABB()const { - vec min_point,max_point; + glm::vec4 min_point,max_point; GetBoundingBox(min_point,max_point); @@ -850,7 +850,7 @@ namespace hgl AABB GetAABB()const { - vec min_point,max_point; + glm::vec4 min_point,max_point; GetBoundingBox(min_point,max_point); diff --git a/inc/hgl/shadergen/ShaderDescriptorInfo.h b/inc/hgl/shadergen/ShaderDescriptorInfo.h index c61101a1..c8acb5fa 100644 --- a/inc/hgl/shadergen/ShaderDescriptorInfo.h +++ b/inc/hgl/shadergen/ShaderDescriptorInfo.h @@ -58,7 +58,7 @@ public: bool AddConstValue(ConstValueDescriptor *sd); - void SetPushConstant(const AnsiString name,uint8_t offset,uint8_t size); + void SetPushConstant(const AnsiString &name,uint8_t offset,uint8_t size); };//class ShaderDescriptorInfo template class CustomShaderDescriptorInfo:public ShaderDescriptorInfo @@ -98,7 +98,7 @@ public: using CustomShaderDescriptorInfo::CustomShaderDescriptorInfo; ~VertexShaderDescriptorInfo()override=default; - bool AddSubpassInput(const AnsiString name,uint8_t index); + bool AddSubpassInput(const AnsiString &name,uint8_t index); };//class VertexShaderDescriptorInfo using TessCtrlShaderDescriptorInfo=CustomShaderDescriptorInfo; diff --git a/src/SceneGraph/VertexDataManager.cpp b/src/SceneGraph/VertexDataManager.cpp index 2723b30c..523a8d0f 100644 --- a/src/SceneGraph/VertexDataManager.cpp +++ b/src/SceneGraph/VertexDataManager.cpp @@ -77,7 +77,7 @@ namespace hgl DataChain::UserNode *un=ibo_data_chain.Acquire(hgl_align(count,4)); - if(!un)return(false); + if(!un)return(nullptr); ibo_cur_size+=un->GetCount(); diff --git a/src/SceneGraph/Vulkan/Texture/VKTexture2DArrayLoader.cpp b/src/SceneGraph/Vulkan/Texture/VKTexture2DArrayLoader.cpp index 6e118806..ee297393 100644 --- a/src/SceneGraph/Vulkan/Texture/VKTexture2DArrayLoader.cpp +++ b/src/SceneGraph/Vulkan/Texture/VKTexture2DArrayLoader.cpp @@ -21,7 +21,7 @@ bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint3 VkTextureLoader loader(device,auto_mipmaps); if(!loader.Load(filename)) - return(nullptr); + return(false); DeviceBuffer *buf=loader.GetBuffer(); diff --git a/src/SceneGraph/Vulkan/VKCommandBuffer.cpp b/src/SceneGraph/Vulkan/VKCommandBuffer.cpp index fffb6be0..53a97fbf 100644 --- a/src/SceneGraph/Vulkan/VKCommandBuffer.cpp +++ b/src/SceneGraph/Vulkan/VKCommandBuffer.cpp @@ -26,13 +26,13 @@ bool GPUCmdBuffer::Begin() } #ifdef _DEBUG -void GPUCmdBuffer::SetDebugName(const UTF8String &object_name) +void GPUCmdBuffer::SetDebugName(const AnsiString &object_name) { if(dev_attr->debug_utils) dev_attr->debug_utils->SetCommandBuffer(cmd_buf,object_name); } -void GPUCmdBuffer::BeginRegion(const UTF8String ®ion_name,const Color4f &color) +void GPUCmdBuffer::BeginRegion(const AnsiString ®ion_name,const Color4f &color) { if(dev_attr->debug_utils) dev_attr->debug_utils->CmdBegin(cmd_buf,region_name,color); diff --git a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp index 9e5e8d92..e2bd3538 100644 --- a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp @@ -51,7 +51,7 @@ namespace { ext_list->Add(VK_KHR_SWAPCHAIN_EXTENSION_NAME); - constexpr char *require_ext_list[]= + constexpr const char *require_ext_list[]= { #ifdef _DEBUG VK_EXT_DEBUG_MARKER_EXTENSION_NAME, diff --git a/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp b/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp index 53eacc6d..bb42f89a 100644 --- a/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceMaterial.cpp @@ -48,9 +48,9 @@ MaterialParameters *GPUDevice::CreateMP(const MaterialDescriptorManager *desc_ma if(!ds)return(nullptr); #ifdef _DEBUG - const UTF8String addr_string=HexToString((uint64_t)(ds->GetDescriptorSet())); + const UTF8String addr_string=HexToString((uint64_t)(ds->GetDescriptorSet())); - LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+("] OK! Material Name: \"")+desc_manager->GetMaterialName()+U8_TEXT("\" Type: ")+GetDescriptorSetTypeName(desc_set_type)); + LOG_INFO(U8_TEXT("Create [DescriptSets:")+addr_string+U8_TEXT("] OK! Material Name: \"")+(const UTF8String &)(desc_manager->GetMaterialName())+U8_TEXT("\" Type: ")+(u8char *)(GetDescriptorSetTypeName(desc_set_type))); #endif//_DEBUG return(new MaterialParameters(desc_manager,desc_set_type,ds)); diff --git a/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp b/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp index dcff03ee..d7df9916 100644 --- a/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceRenderTarget.cpp @@ -62,7 +62,7 @@ RTSwapchain *GPUDevice::CreateSwapchainRenderTarget() Swapchain *sc=CreateSwapchain(attr->surface_caps.currentExtent); if(!sc) - return(false); + return(nullptr); DeviceQueue *q=CreateQueue(sc->color_count,false); Semaphore *render_complete_semaphore=CreateGPUSemaphore(); diff --git a/src/SceneGraph/Vulkan/VKInstance.cpp b/src/SceneGraph/Vulkan/VKInstance.cpp index 4a85a39a..11e00733 100644 --- a/src/SceneGraph/Vulkan/VKInstance.cpp +++ b/src/SceneGraph/Vulkan/VKInstance.cpp @@ -25,7 +25,7 @@ VulkanInstance *CreateInstance(const AnsiString &app_name,VKDebugOut *out,Create ext_list.Add(VK_KHR_SURFACE_EXTENSION_NAME); ext_list.Add(HGL_VK_SURFACE_EXTENSION_NAME); //此宏在VKSurfaceExtensionName.h中定义 - constexpr char *require_ext_list[]= + constexpr const char *require_ext_list[]= { #ifdef _DEBUG VK_EXT_DEBUG_REPORT_EXTENSION_NAME, diff --git a/src/SceneGraph/Vulkan/VKMaterialDescriptorManager.cpp b/src/SceneGraph/Vulkan/VKMaterialDescriptorManager.cpp index 770adae9..73964e9f 100644 --- a/src/SceneGraph/Vulkan/VKMaterialDescriptorManager.cpp +++ b/src/SceneGraph/Vulkan/VKMaterialDescriptorManager.cpp @@ -12,7 +12,7 @@ void WriteDescriptorSetLayoutBinding(VkDescriptorSetLayoutBinding *dslb,ShaderDe dslb->pImmutableSamplers=nullptr; } -MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,ShaderDescriptor *sd_list,const uint sd_count) +MaterialDescriptorManager::MaterialDescriptorManager(const AnsiString &name,ShaderDescriptor *sd_list,const uint sd_count) { mtl_name=name; @@ -66,7 +66,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,Shad } } -MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,const ShaderDescriptorSetArray &sds_array) +MaterialDescriptorManager::MaterialDescriptorManager(const AnsiString &name,const ShaderDescriptorSetArray &sds_array) { mtl_name=name; diff --git a/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp b/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp index 27e0290b..2c58d5d5 100644 --- a/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp +++ b/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp @@ -7,7 +7,7 @@ namespace { void debug_queue_family_properties_out(const char *front,const List &qfp_list) { - constexpr char *queue_bit_name[]= + constexpr const char *queue_bit_name[]= { "Graphics", "Compute", diff --git a/src/SceneGraph/Vulkan/VKRenderResource.cpp b/src/SceneGraph/Vulkan/VKRenderResource.cpp index dbe821d4..ec89022a 100644 --- a/src/SceneGraph/Vulkan/VKRenderResource.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResource.cpp @@ -158,9 +158,9 @@ Texture2D *RenderResource::LoadTexture2D(const OSString &filename,bool auto_mipm if(du) { - const UTF8String name=ToUTF8String(filename); + const UTF8String name=U8_TEXT("Tex2D:")+ToUTF8String(filename); - du->SetImage(tex->GetImage(),"Tex2D:"+name); + du->SetImage(tex->GetImage(),(char *)(name.c_str())); } #endif//_DEBUG } diff --git a/src/SceneGraph/Vulkan/VKRenderable.cpp b/src/SceneGraph/Vulkan/VKRenderable.cpp index b0df83b7..24402039 100644 --- a/src/SceneGraph/Vulkan/VKRenderable.cpp +++ b/src/SceneGraph/Vulkan/VKRenderable.cpp @@ -65,7 +65,7 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p) return(nullptr); const uint32_t input_count=vil->GetVertexAttribCount(VertexInputGroup::Basic); //不统计Bone/LocalToWorld组的 - const UTF8String &mtl_name=mi->GetMaterial()->GetName(); + const AnsiString &mtl_name=mi->GetMaterial()->GetName(); if(prim->GetVABCount()GetFormat()!=vif->format) { - LOG_ERROR( "[FATAL ERROR] VAB \""+UTF8String(vif->name)+ - UTF8String("\" format can't match Renderable, Material(")+mtl_name+ - UTF8String(") Format(")+GetVulkanFormatName(vif->format)+ - UTF8String("), VAB Format(")+GetVulkanFormatName(vab->GetFormat())+ + LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+ + AnsiString("\" format can't match Renderable, Material(")+mtl_name+ + AnsiString(") Format(")+GetVulkanFormatName(vif->format)+ + AnsiString("), VAB Format(")+GetVulkanFormatName(vab->GetFormat())+ ")"); return(nullptr); } if(vab->GetStride()!=vif->stride) { - LOG_ERROR( "[FATAL ERROR] VAB \""+UTF8String(vif->name)+ - UTF8String("\" stride can't match Renderable, Material(")+mtl_name+ - UTF8String(") stride(")+UTF8String::numberOf(vif->stride)+ - UTF8String("), VAB stride(")+UTF8String::numberOf(vab->GetStride())+ + LOG_ERROR( "[FATAL ERROR] VAB \""+AnsiString(vif->name)+ + AnsiString("\" stride can't match Renderable, Material(")+mtl_name+ + AnsiString(") stride(")+AnsiString::numberOf(vif->stride)+ + AnsiString("), VAB stride(")+AnsiString::numberOf(vab->GetStride())+ ")"); return(nullptr); } diff --git a/src/ShaderGen/GLSLCompiler.cpp b/src/ShaderGen/GLSLCompiler.cpp index e03e3e42..72ecd0fe 100644 --- a/src/ShaderGen/GLSLCompiler.cpp +++ b/src/ShaderGen/GLSLCompiler.cpp @@ -10,7 +10,7 @@ namespace hgl { namespace graph { - // ͬEShTargetLanguageVersion + // ��ͬ��EShTargetLanguageVersion constexpr const uint32_t SPV_VERSION_1_0 = (1 << 16); // SPIR-V 1.0 constexpr const uint32_t SPV_VERSION_1_1 = (1 << 16) | (1 << 8); // SPIR-V 1.1 constexpr const uint32_t SPV_VERSION_1_2 = (1 << 16) | (2 << 8); // SPIR-V 1.2 @@ -172,7 +172,7 @@ namespace hgl if(!result) { - LOG_ERROR(U8_TEXT("Compile shader failed, error info: ")+UTF8String(spv->log)); + LOG_ERROR("Compile shader failed, error info: "+AnsiString(spv->log)); FreeSPVData(spv); return(nullptr); diff --git a/src/ShaderGen/MaterialFileData.h b/src/ShaderGen/MaterialFileData.h index 10484693..5cb63246 100644 --- a/src/ShaderGen/MaterialFileData.h +++ b/src/ShaderGen/MaterialFileData.h @@ -67,6 +67,8 @@ namespace material_file code_length=0; } + virtual ~ShaderData()=default; + const VkShaderStageFlagBits GetShaderStage()const{return shader_stage;} }; diff --git a/src/ShaderGen/MaterialFileLoader.cpp b/src/ShaderGen/MaterialFileLoader.cpp index 48e69361..227d313d 100644 --- a/src/ShaderGen/MaterialFileLoader.cpp +++ b/src/ShaderGen/MaterialFileLoader.cpp @@ -37,7 +37,7 @@ namespace struct MaterialFileBlockInfo { - char *name; + const char *name; int len; MaterialFileBlock state; }; diff --git a/src/ShaderGen/ShaderDescriptorInfo.cpp b/src/ShaderGen/ShaderDescriptorInfo.cpp index c01639fc..89645e91 100644 --- a/src/ShaderGen/ShaderDescriptorInfo.cpp +++ b/src/ShaderGen/ShaderDescriptorInfo.cpp @@ -45,7 +45,7 @@ bool ShaderDescriptorInfo::AddConstValue(ConstValueDescriptor *sd) return(true); } -bool VertexShaderDescriptorInfo::AddSubpassInput(const UTF8String name,uint8_t index) +bool VertexShaderDescriptorInfo::AddSubpassInput(const AnsiString &name,uint8_t index) { for(auto *si:subpass_input) { @@ -62,7 +62,7 @@ bool VertexShaderDescriptorInfo::AddSubpassInput(const UTF8String name,uint8_t i return(true); } -void ShaderDescriptorInfo::SetPushConstant(const UTF8String name,uint8_t offset,uint8_t size) +void ShaderDescriptorInfo::SetPushConstant(const AnsiString &name,uint8_t offset,uint8_t size) { push_constant.name =name; push_constant.offset=offset; diff --git a/src/ShaderGen/ShaderLibrary.cpp b/src/ShaderGen/ShaderLibrary.cpp index 75422dfa..1dbe02fb 100644 --- a/src/ShaderGen/ShaderLibrary.cpp +++ b/src/ShaderGen/ShaderLibrary.cpp @@ -9,7 +9,7 @@ STD_MTL_NAMESPACE_BEGIN namespace { - ObjectMap shader_library; + ObjectMap shader_library; } // 因为是Debug阶段,所以现在直接从文件系统加载 @@ -19,7 +19,7 @@ const AnsiString *LoadShader(const AnsiString &shader_name) if(shader_name.IsEmpty()) return(nullptr); - UTF8String *shader; + AnsiString *shader; if(shader_library.Get(shader_name,shader)) return shader; @@ -33,9 +33,9 @@ const AnsiString *LoadShader(const AnsiString &shader_name) if(!filesystem::FileExist(os_fn)) return(nullptr); - shader=new UTF8String; + shader=new AnsiString; - if(LoadStringFromTextFile(*shader,os_fn)<=0) + if(LoadStringFromTextFile((UTF8String &)*shader,os_fn)<=0) { delete shader; shader=nullptr;