use AnsiString in shader

This commit is contained in:
hyzboy 2024-07-26 03:25:09 +08:00
parent 416b7bfcb3
commit 8f0cd9f35b
21 changed files with 53 additions and 51 deletions

View File

@ -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

View File

@ -90,11 +90,11 @@ VK_NAMESPACE_BEGIN
}
template<typename T>
T *GetDeviceProc(const char *name)
T *GetDeviceProc(VkDevice *dev,const char *name)
{
if(!GetDeviceProcAddr)return(nullptr);
return reinterpret_cast<T>(GetDeviceProcAddr(name));
return reinterpret_cast<T>(GetDeviceProcAddr(dev,name));
}
void DestroySurface(VkSurfaceKHR);

View File

@ -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
{

View File

@ -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<typename V>
bool WriteRect(const T left,const T top,const T width,const T height)
{
const vec2<V> lt(left ,top);
const vec2<V> rt(left+width,top);
const vec2<V> rb(left+width,top+height);
const vec2<V> 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);

View File

@ -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<VkShaderStageFlagBits SS,typename IArray,typename I,typename OArray,typename O> class CustomShaderDescriptorInfo:public ShaderDescriptorInfo
@ -98,7 +98,7 @@ public:
using CustomShaderDescriptorInfo<VK_SHADER_STAGE_VERTEX_BIT,VIAArray,VIA,SVArray,ShaderVariable>::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<VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, SVArray, ShaderVariable, SVArray, ShaderVariable >;

View File

@ -77,7 +77,7 @@ namespace hgl
DataChain::UserNode *un=ibo_data_chain.Acquire(hgl_align<int>(count,4));
if(!un)return(false);
if(!un)return(nullptr);
ibo_cur_size+=un->GetCount();

View File

@ -21,7 +21,7 @@ bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint3
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
if(!loader.Load(filename))
return(nullptr);
return(false);
DeviceBuffer *buf=loader.GetBuffer();

View File

@ -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 &region_name,const Color4f &color)
void GPUCmdBuffer::BeginRegion(const AnsiString &region_name,const Color4f &color)
{
if(dev_attr->debug_utils)
dev_attr->debug_utils->CmdBegin(cmd_buf,region_name,color);

View File

@ -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,

View File

@ -48,9 +48,9 @@ MaterialParameters *GPUDevice::CreateMP(const MaterialDescriptorManager *desc_ma
if(!ds)return(nullptr);
#ifdef _DEBUG
const UTF8String addr_string=HexToString<char,uint64_t>((uint64_t)(ds->GetDescriptorSet()));
const UTF8String addr_string=HexToString<u8char,uint64_t>((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));

View File

@ -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();

View File

@ -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,

View File

@ -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;

View File

@ -7,7 +7,7 @@ namespace
{
void debug_queue_family_properties_out(const char *front,const List<VkQueueFamilyProperties> &qfp_list)
{
constexpr char *queue_bit_name[]=
constexpr const char *queue_bit_name[]=
{
"Graphics",
"Compute",

View File

@ -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
}

View File

@ -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()<input_count) //小于材质要求的数量?那自然是不行的
{
@ -96,20 +96,20 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
if(vab->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);
}

View File

@ -10,7 +10,7 @@ namespace hgl
{
namespace graph
{
// µÈͬÓÚEShTargetLanguageVersion
// <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>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);

View File

@ -67,6 +67,8 @@ namespace material_file
code_length=0;
}
virtual ~ShaderData()=default;
const VkShaderStageFlagBits GetShaderStage()const{return shader_stage;}
};

View File

@ -37,7 +37,7 @@ namespace
struct MaterialFileBlockInfo
{
char *name;
const char *name;
int len;
MaterialFileBlock state;
};

View File

@ -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;

View File

@ -9,7 +9,7 @@ STD_MTL_NAMESPACE_BEGIN
namespace
{
ObjectMap<AnsiString,UTF8String> shader_library;
ObjectMap<AnsiString,AnsiString> 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;