added VertexColor2DMaterial at MaterialCreaterTest.cpp

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-03-15 17:50:33 +08:00
parent 5ba705cd6b
commit 31b5bb6d4f
4 changed files with 65 additions and 11 deletions

View File

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

View File

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

View File

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

View File

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