2023-03-06 14:06:20 +08:00
|
|
|
#include<hgl/shadergen/ShaderCreaterFragment.h>
|
2023-03-15 11:09:51 +08:00
|
|
|
#include<hgl/shadergen/ShaderDescriptorManager.h>
|
2023-03-06 14:06:20 +08:00
|
|
|
|
|
|
|
SHADERGEN_NAMESPACE_BEGIN
|
|
|
|
|
2023-03-15 11:09:51 +08:00
|
|
|
using namespace hgl::graph;
|
|
|
|
|
2023-03-06 14:06:20 +08:00
|
|
|
void ShaderCreaterFragment::UseDefaultMain()
|
|
|
|
{
|
2023-03-13 21:58:27 +08:00
|
|
|
main_codes="void main()\n{\n";
|
2023-03-06 14:06:20 +08:00
|
|
|
|
2023-03-15 11:09:51 +08:00
|
|
|
const auto &output_list=sdm->GetShaderStageIO().output;
|
2023-03-06 14:06:20 +08:00
|
|
|
|
|
|
|
const uint count=output_list.GetCount();
|
2023-03-10 01:47:01 +08:00
|
|
|
ShaderStage **o=output_list.GetData();
|
|
|
|
|
2023-03-06 14:06:20 +08:00
|
|
|
for(uint i=0;i<count;i++)
|
|
|
|
{
|
2023-03-13 21:58:27 +08:00
|
|
|
main_codes+="\t";
|
|
|
|
main_codes+=(*o)->name;
|
|
|
|
main_codes+="=Get";
|
|
|
|
main_codes+=(*o)->name;
|
|
|
|
main_codes+="();\n";
|
2023-03-10 01:47:01 +08:00
|
|
|
|
|
|
|
++o;
|
2023-03-06 14:06:20 +08:00
|
|
|
}
|
|
|
|
|
2023-03-13 21:58:27 +08:00
|
|
|
main_codes+="}";
|
2023-03-06 14:06:20 +08:00
|
|
|
}
|
2023-03-10 01:47:01 +08:00
|
|
|
|
|
|
|
bool ShaderCreaterFragment::ProcOutput()
|
|
|
|
{
|
2023-03-15 11:09:51 +08:00
|
|
|
const auto &output_list=sdm->GetShaderStageIO().output;
|
2023-03-10 01:47:01 +08:00
|
|
|
|
|
|
|
const uint count=output_list.GetCount();
|
|
|
|
ShaderStage **o=output_list.GetData();
|
|
|
|
|
|
|
|
for(uint i=0;i<count;i++)
|
|
|
|
{
|
|
|
|
final_shader+="layout(location=";
|
|
|
|
final_shader+=AnsiString::numberOf(i);
|
|
|
|
final_shader+=") out ";
|
|
|
|
final_shader+=GetShaderStageTypeName(*o);
|
|
|
|
final_shader+=" ";
|
|
|
|
final_shader+=(*o)->name;
|
|
|
|
final_shader+=";\n";
|
|
|
|
|
|
|
|
++o;
|
|
|
|
}
|
|
|
|
|
|
|
|
return(true);
|
|
|
|
}
|
2023-03-06 14:06:20 +08:00
|
|
|
SHADERGEN_NAMESPACE_END
|