removed standalone ".glsl" files ,merge to c++ codes.
This commit is contained in:
parent
3874d771d3
commit
5ba3c1790d
@ -1,4 +0,0 @@
|
|||||||
mat4 GetLocalToWorld()
|
|
||||||
{
|
|
||||||
return l2w.mats[Assign.x];
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
MaterialInstance GetMI()
|
|
||||||
{
|
|
||||||
#if ShaderStage == VertexShader
|
|
||||||
return mtl.mi[Assign.y];
|
|
||||||
#else
|
|
||||||
return mtl.mi[Input.MaterialInstanceID];
|
|
||||||
#endif
|
|
||||||
}
|
|
@ -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
|
|
||||||
}
|
|
@ -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
|
|
@ -143,7 +143,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
cam.width=w;
|
cam.width=w;
|
||||||
cam.height=h;
|
cam.height=h;
|
||||||
|
@ -165,7 +165,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
cam.width=w;
|
cam.width=w;
|
||||||
cam.height=h;
|
cam.height=h;
|
||||||
|
@ -116,7 +116,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ private:
|
|||||||
Material * mtl_vtx_lum =nullptr;
|
Material * mtl_vtx_lum =nullptr;
|
||||||
MaterialInstance * mi_plane_grid =nullptr;
|
MaterialInstance * mi_plane_grid =nullptr;
|
||||||
Pipeline * pipeline_vtx_lum =nullptr;
|
Pipeline * pipeline_vtx_lum =nullptr;
|
||||||
Primitive * prim_plane_grid =nullptr;
|
Primitive * prim_plane_grid =nullptr;
|
||||||
|
|
||||||
Material * mtl_vtx_color =nullptr;
|
Material * mtl_vtx_color =nullptr;
|
||||||
MaterialInstance * mi_line =nullptr;
|
MaterialInstance * mi_line =nullptr;
|
||||||
|
@ -112,7 +112,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ public:
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(uint w,uint h)override
|
||||||
{
|
{
|
||||||
VulkanApplicationFramework::Resize(w,h);
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
@ -9,12 +9,6 @@ using namespace hgl;
|
|||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
|
|
||||||
STD_MTL_NAMESPACE_BEGIN
|
STD_MTL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
const AnsiString *MF_HandoverMI=nullptr;
|
|
||||||
}//namespace
|
|
||||||
|
|
||||||
MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
|
MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
|
||||||
{
|
{
|
||||||
config=mc;
|
config=mc;
|
||||||
@ -39,9 +33,6 @@ MaterialCreateInfo::MaterialCreateInfo(const MaterialCreateConfig *mc)
|
|||||||
l2w_shader_stage=0;
|
l2w_shader_stage=0;
|
||||||
l2w_ubo=nullptr;
|
l2w_ubo=nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!MF_HandoverMI)
|
|
||||||
MF_HandoverMI=LoadShader("HandoverMI");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MaterialCreateInfo::AddStruct(const AnsiString &struct_name,const AnsiString &codes)
|
bool MaterialCreateInfo::AddStruct(const AnsiString &struct_name,const AnsiString &codes)
|
||||||
@ -255,12 +246,8 @@ bool MaterialCreateInfo::CreateShader()
|
|||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
if(sc->GetShaderStage()<mi_shader_stage)
|
if(sc->GetShaderStage()<mi_shader_stage)
|
||||||
{
|
|
||||||
sc->AddMaterialInstanceOutput();
|
sc->AddMaterialInstanceOutput();
|
||||||
|
|
||||||
sc->AddFunction(MF_HandoverMI);
|
|
||||||
}
|
|
||||||
|
|
||||||
sc->CreateShader(last);
|
sc->CreateShader(last);
|
||||||
|
|
||||||
last=sc;
|
last=sc;
|
||||||
|
@ -9,12 +9,6 @@
|
|||||||
|
|
||||||
namespace hgl{namespace graph{
|
namespace hgl{namespace graph{
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
const AnsiString *ShaderFileHeader=nullptr;
|
|
||||||
const AnsiString *MF_GetMI=nullptr;
|
|
||||||
}//namespace
|
|
||||||
|
|
||||||
ShaderCreateInfo::ShaderCreateInfo(VkShaderStageFlagBits ss,MaterialDescriptorInfo *m)
|
ShaderCreateInfo::ShaderCreateInfo(VkShaderStageFlagBits ss,MaterialDescriptorInfo *m)
|
||||||
{
|
{
|
||||||
shader_stage=ss;
|
shader_stage=ss;
|
||||||
@ -25,9 +19,6 @@ ShaderCreateInfo::ShaderCreateInfo(VkShaderStageFlagBits ss,MaterialDescriptorIn
|
|||||||
|
|
||||||
define_macro_max_length=0;
|
define_macro_max_length=0;
|
||||||
define_value_max_length=0;
|
define_value_max_length=0;
|
||||||
|
|
||||||
if(!ShaderFileHeader)ShaderFileHeader =mtl::LoadShader("ShaderHeader");
|
|
||||||
if(!MF_GetMI )MF_GetMI =mtl::LoadShader("GetMI");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShaderCreateInfo::~ShaderCreateInfo()
|
ShaderCreateInfo::~ShaderCreateInfo()
|
||||||
@ -163,12 +154,22 @@ bool ShaderCreateInfo::ProcSubpassInput()
|
|||||||
return(true);
|
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)
|
void ShaderCreateInfo::SetMaterialInstance(UBODescriptor *ubo,const AnsiString &mi)
|
||||||
{
|
{
|
||||||
sdm->AddUBO(DescriptorSetType::PerMaterial,ubo);
|
sdm->AddUBO(DescriptorSetType::PerMaterial,ubo);
|
||||||
sdm->AddStruct(mtl::MaterialInstanceStruct);
|
sdm->AddStruct(mtl::MaterialInstanceStruct);
|
||||||
|
|
||||||
AddFunction(MF_GetMI);
|
AddFunction(shader_stage==VK_SHADER_STAGE_VERTEX_BIT?MF_GetMI_VS:MF_GetMI_Other);
|
||||||
|
|
||||||
mi_codes=mi;
|
mi_codes=mi;
|
||||||
}
|
}
|
||||||
@ -176,6 +177,10 @@ void ShaderCreateInfo::SetMaterialInstance(UBODescriptor *ubo,const AnsiString &
|
|||||||
void ShaderCreateInfo::AddMaterialInstanceOutput()
|
void ShaderCreateInfo::AddMaterialInstanceOutput()
|
||||||
{
|
{
|
||||||
AddOutput(VAT_UINT,mtl::func::MaterialInstanceID,Interpolation::Flat);
|
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)
|
void ShaderCreateInfo::SetLocalToWorld(UBODescriptor *ubo)
|
||||||
@ -386,13 +391,21 @@ bool ShaderCreateInfo::ProcSampler()
|
|||||||
|
|
||||||
bool ShaderCreateInfo::CreateShader(ShaderCreateInfo *last_sc)
|
bool ShaderCreateInfo::CreateShader(ShaderCreateInfo *last_sc)
|
||||||
{
|
{
|
||||||
if(!ShaderFileHeader)
|
|
||||||
return(false);
|
|
||||||
|
|
||||||
if(main_function.IsEmpty())
|
if(main_function.IsEmpty())
|
||||||
return(false);
|
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];
|
char ss_hex_str[9];
|
||||||
@ -430,6 +443,7 @@ bool ShaderCreateInfo::CreateShader(ShaderCreateInfo *last_sc)
|
|||||||
for(const char *str:function_list)
|
for(const char *str:function_list)
|
||||||
final_shader+=str;
|
final_shader+=str;
|
||||||
|
|
||||||
|
final_shader+="\n";
|
||||||
final_shader+=main_function;
|
final_shader+=main_function;
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
@ -8,14 +8,8 @@
|
|||||||
#include"ShaderLibrary.h"
|
#include"ShaderLibrary.h"
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
namespace
|
|
||||||
{
|
|
||||||
const AnsiString *MF_GetLocalToWorld=nullptr;
|
|
||||||
}//namespace
|
|
||||||
|
|
||||||
ShaderCreateInfoVertex::ShaderCreateInfoVertex(MaterialDescriptorInfo *m):ShaderCreateInfo(VK_SHADER_STAGE_VERTEX_BIT,m)
|
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)
|
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,
|
VK_VERTEX_INPUT_RATE_INSTANCE,
|
||||||
VertexInputGroup::Assign);
|
VertexInputGroup::Assign);
|
||||||
|
|
||||||
|
constexpr const char MF_GetLocalToWorld[]="\nmat4 GetLocalToWorld(){return l2w.mats[Assign.x];}\n";
|
||||||
|
|
||||||
AddFunction(MF_GetLocalToWorld);
|
AddFunction(MF_GetLocalToWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user