From 31b5bb6d4fb5ec58cff38192e1e0a4176da36c9d Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 15 Mar 2023 17:50:33 +0800 Subject: [PATCH] added VertexColor2DMaterial at MaterialCreaterTest.cpp --- example/MaterialCreaterTest.cpp | 55 ++++++++++++++++++++++++++++++- inc/hgl/shadergen/ShaderCreater.h | 7 ++-- src/ShaderGen/CMakeLists.txt | 4 +-- src/ShaderGen/ShaderCreater.cpp | 10 +++--- 4 files changed, 65 insertions(+), 11 deletions(-) diff --git a/example/MaterialCreaterTest.cpp b/example/MaterialCreaterTest.cpp index 8a569363..d2cbea1d 100644 --- a/example/MaterialCreaterTest.cpp +++ b/example/MaterialCreaterTest.cpp @@ -63,12 +63,65 @@ void main() mc.CreateShader(); - return(false); + return(true); } +bool VertexColor2DMaterial() +{ + MaterialCreater mc(1,false); + + //vertex部分 + { + ShaderCreaterVertex *vsc=mc.GetVS(); + + vsc->AddInput("vec2","Position"); + vsc->AddInput("vec4","Color"); + + vsc->AddOutput("vec4","Color"); + + vsc->SetShaderCodes(R"( +void main() +{ + Output.Color=Color; + + gl_Position=vec4(Position,0,1); +})"); + } + + //fragment部分 + { + ShaderCreaterFragment *fsc=mc.GetFS(); + + fsc->AddOutput("vec4","Color"); + + fsc->SetShaderCodes(R"( +void main() +{ + Color=Input.Color; +} +)"); + } + + mc.CreateShader(); + + return(true); +} + +namespace glsl_compiler +{ + bool Init(); + void Close(); +}//namespace glsl_compiler + int main() { + if(!glsl_compiler::Init()) + return -1; + PureColor2DMaterial(); + VertexColor2DMaterial(); + + glsl_compiler::Close(); return 0; } diff --git a/inc/hgl/shadergen/ShaderCreater.h b/inc/hgl/shadergen/ShaderCreater.h index bb9e9bfd..9d9d02a1 100644 --- a/inc/hgl/shadergen/ShaderCreater.h +++ b/inc/hgl/shadergen/ShaderCreater.h @@ -38,6 +38,8 @@ protected: virtual bool ProcConst(); virtual bool ProcSampler(); + bool CompileToSPV(); + public: ShaderDescriptorManager *sdm; @@ -58,12 +60,9 @@ public: } const AnsiString &GetOutputStruct()const{return output_struct;} - - bool CreateShader(ShaderCreater *); - const AnsiString &GetShaderSource()const{return final_shader;} - bool CompileToSPV(); + bool CreateShader(ShaderCreater *); };//class ShaderCreater SHADERGEN_NAMESPACE_END #endif//HGL_SHADER_CREATER_INCLUDE diff --git a/src/ShaderGen/CMakeLists.txt b/src/ShaderGen/CMakeLists.txt index 214a23f9..52eba6bc 100644 --- a/src/ShaderGen/CMakeLists.txt +++ b/src/ShaderGen/CMakeLists.txt @@ -37,8 +37,8 @@ SET(GLSL_COMPILER_SOURCE GLSLCompiler.h SOURCE_GROUP("GLSL Compiler" FILES ${GLSL_COMPILER_SOURCE}) -#SOURCE_GROUP("Pixel Material Components" FILES ${SHADERGEN_HEADER_FILES} -# ${SHADERGEN_SOURCE_FILES}) +SOURCE_GROUP("Material Creater\\DescriptorManager" FILES ${SHADERGEN_HEADER_FILES} + ${SHADERGEN_SOURCE_FILES}) add_cm_library(ULRE.ShaderGen "ULRE" ${SHADERGEN_HEADER_FILES} ${SHADERGEN_SOURCE_FILES} diff --git a/src/ShaderGen/ShaderCreater.cpp b/src/ShaderGen/ShaderCreater.cpp index 42bc4771..38360121 100644 --- a/src/ShaderGen/ShaderCreater.cpp +++ b/src/ShaderGen/ShaderCreater.cpp @@ -257,19 +257,21 @@ bool ShaderCreater::CreateShader(ShaderCreater *last_sc) #endif//_DEBUG + if(!CompileToSPV()) + return(false); + return(true); } bool ShaderCreater::CompileToSPV() { - if(main_codes.IsEmpty()) - return(false); - glsl_compiler::SPVData *spv_data=glsl_compiler::Compile(shader_stage,final_shader.c_str()); if(!spv_data) return(false); + + glsl_compiler::Free(spv_data); - + return(true); } SHADERGEN_NAMESPACE_END