removed standalone ".glsl" files ,merge to c++ codes.

This commit is contained in:
hyzboy 2024-03-06 23:24:57 +08:00
parent 3874d771d3
commit 5ba3c1790d
No known key found for this signature in database
GPG Key ID: 067EE4525D4FB6D3
16 changed files with 39 additions and 74 deletions

View File

@ -1,4 +0,0 @@
mat4 GetLocalToWorld()
{
return l2w.mats[Assign.x];
}

View File

@ -1,8 +0,0 @@
MaterialInstance GetMI()
{
#if ShaderStage == VertexShader
return mtl.mi[Assign.y];
#else
return mtl.mi[Input.MaterialInstanceID];
#endif
}

View File

@ -1,10 +0,0 @@
void HandoverMI()
{
#if ShaderStage == VertexShader
Output.MaterialInstanceID=Assign.y;
#elif ShaderStage == GeometryShader
Output.MaterialInstanceID=Input[0].MaterialInstanceID;
#else
Output.MaterialInstanceID=Input.MaterialInstanceID;
#endif
}

View File

@ -1,10 +0,0 @@
#version 460 core
#define VertexShader 0x01
#define TessControlShader 0x02
#define TeseEvalShader 0x04
#define GeometryShader 0x08
#define FragmentShader 0x10
#define ComputeShader 0x20
#define TaskShader 0x40
#define MeshShader 0x80

View File

@ -143,7 +143,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
cam.width=w;
cam.height=h;

View File

@ -165,7 +165,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
cam.width=w;
cam.height=h;

View File

@ -116,7 +116,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -130,7 +130,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -145,7 +145,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -112,7 +112,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -108,7 +108,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -184,7 +184,7 @@ public:
return(true);
}
void Resize(int w,int h)override
void Resize(uint w,uint h)override
{
VulkanApplicationFramework::Resize(w,h);

View File

@ -9,12 +9,6 @@ using namespace hgl;
using namespace hgl::graph;
STD_MTL_NAMESPACE_BEGIN
namespace
{
const AnsiString *MF_HandoverMI=nullptr;
}//namespace
MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
{
config=mc;
@ -39,9 +33,6 @@ MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
l2w_shader_stage=0;
l2w_ubo=nullptr;
}
if(!MF_HandoverMI)
MF_HandoverMI=LoadShader("HandoverMI");
}
bool MaterialCreateInfo::AddStruct(const AnsiString &struct_name,const AnsiString &codes)
@ -255,12 +246,8 @@ bool MaterialCreateInfo::CreateShader()
return(false);
if(sc->GetShaderStage()<mi_shader_stage)
{
sc->AddMaterialInstanceOutput();
sc->AddFunction(MF_HandoverMI);
}
sc->CreateShader(last);
last=sc;

View File

@ -9,12 +9,6 @@
namespace hgl{namespace graph{
namespace
{
const AnsiString *ShaderFileHeader=nullptr;
const AnsiString *MF_GetMI=nullptr;
}//namespace
ShaderCreateInfo::ShaderCreateInfo(VkShaderStageFlagBits ss,MaterialDescriptorInfo *m)
{
shader_stage=ss;
@ -25,9 +19,6 @@ ShaderCreateInfo::ShaderCreateInfo(VkShaderStageFlagBits ss,MaterialDescriptorIn
define_macro_max_length=0;
define_value_max_length=0;
if(!ShaderFileHeader)ShaderFileHeader =mtl::LoadShader("ShaderHeader");
if(!MF_GetMI )MF_GetMI =mtl::LoadShader("GetMI");
}
ShaderCreateInfo::~ShaderCreateInfo()
@ -163,12 +154,22 @@ bool ShaderCreateInfo::ProcSubpassInput()
return(true);
}
namespace
{
constexpr const char MF_GetMI_VS []="\nMaterialInstance GetMI(){return mtl.mi[Assign.y];}\n";
constexpr const char MF_GetMI_Other []="\nMaterialInstance GetMI(){return mtl.mi[Input.MaterialInstanceID];}\n";
constexpr const char MF_HandoverMI_VS[]= "\nvoid HandoverMI(){Output.MaterialInstanceID=Assign.y;}\n";
constexpr const char MF_HandoverMI_GS[]= "\nvoid HandoverMI(){Output.MaterialInstanceID=Input[0].MaterialInstanceID;}\n";
constexpr const char MF_HandoverMI_OTHER[]= "\nvoid HandoverMI(){Output.MaterialInstanceID=Input.MaterialInstanceID;}\n";
}//namespace
void ShaderCreateInfo::SetMaterialInstance(UBODescriptor *ubo,const AnsiString &mi)
{
sdm->AddUBO(DescriptorSetType::PerMaterial,ubo);
sdm->AddStruct(mtl::MaterialInstanceStruct);
AddFunction(MF_GetMI);
AddFunction(shader_stage==VK_SHADER_STAGE_VERTEX_BIT?MF_GetMI_VS:MF_GetMI_Other);
mi_codes=mi;
}
@ -176,6 +177,10 @@ void ShaderCreateInfo::SetMaterialInstance(UBODescriptor *ubo,const AnsiString &
void ShaderCreateInfo::AddMaterialInstanceOutput()
{
AddOutput(VAT_UINT,mtl::func::MaterialInstanceID,Interpolation::Flat);
if(shader_stage==VK_SHADER_STAGE_VERTEX_BIT) AddFunction(MF_HandoverMI_VS);else
if(shader_stage==VK_SHADER_STAGE_GEOMETRY_BIT) AddFunction(MF_HandoverMI_GS);else
AddFunction(MF_HandoverMI_OTHER);
}
void ShaderCreateInfo::SetLocalToWorld(UBODescriptor *ubo)
@ -386,13 +391,21 @@ bool ShaderCreateInfo::ProcSampler()
bool ShaderCreateInfo::CreateShader(ShaderCreateInfo *last_sc)
{
if(!ShaderFileHeader)
return(false);
if(main_function.IsEmpty())
return(false);
final_shader=ShaderFileHeader->c_str();
final_shader=R"(
#version 460 core
#define VertexShader 0x01
#define TessControlShader 0x02
#define TeseEvalShader 0x04
#define GeometryShader 0x08
#define FragmentShader 0x10
#define ComputeShader 0x20
#define TaskShader 0x40
#define MeshShader 0x80
)";
{
char ss_hex_str[9];
@ -430,6 +443,7 @@ bool ShaderCreateInfo::CreateShader(ShaderCreateInfo *last_sc)
for(const char *str:function_list)
final_shader+=str;
final_shader+="\n";
final_shader+=main_function;
#ifdef _DEBUG

View File

@ -8,14 +8,8 @@
#include"ShaderLibrary.h"
VK_NAMESPACE_BEGIN
namespace
{
const AnsiString *MF_GetLocalToWorld=nullptr;
}//namespace
ShaderCreateInfoVertex::ShaderCreateInfoVertex(MaterialDescriptorInfo *m):ShaderCreateInfo(VK_SHADER_STAGE_VERTEX_BIT,m)
{
if(!MF_GetLocalToWorld)MF_GetLocalToWorld=mtl::LoadShader("GetLocalToWorld");
}
int ShaderCreateInfoVertex::AddInput(const VAT &type,const AnsiString &name,const VkVertexInputRate input_rate,const VertexInputGroup &group)
@ -56,6 +50,8 @@ void ShaderCreateInfoVertex::AddAssign()
VK_VERTEX_INPUT_RATE_INSTANCE,
VertexInputGroup::Assign);
constexpr const char MF_GetLocalToWorld[]="\nmat4 GetLocalToWorld(){return l2w.mats[Assign.x];}\n";
AddFunction(MF_GetLocalToWorld);
}