2023-09-21 22:11:20 +08:00
|
|
|
|
#include<hgl/shadergen/ShaderCreateInfoGeometry.h>
|
2024-06-19 09:35:54 +08:00
|
|
|
|
#include"common/MFCommon.h"
|
2023-09-21 21:36:37 +08:00
|
|
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
namespace graph
|
|
|
|
|
{
|
|
|
|
|
bool ShaderCreateInfoGeometry::SetGeom(const Prim &ip,const Prim &op,const uint32_t mv)
|
|
|
|
|
{
|
2023-10-09 03:15:42 +08:00
|
|
|
|
if(!CheckGeometryShaderIn(ip))return(false);
|
|
|
|
|
if(!CheckGeometryShaderOut(op))return(false);
|
2023-09-21 21:36:37 +08:00
|
|
|
|
|
|
|
|
|
if(mv==0)
|
|
|
|
|
return(false);
|
|
|
|
|
|
2023-10-09 03:15:42 +08:00
|
|
|
|
input_prim=GetPrimName(ip);
|
|
|
|
|
output_prim=GetPrimName(op);
|
|
|
|
|
|
2023-09-21 21:36:37 +08:00
|
|
|
|
max_vertices=mv;
|
|
|
|
|
return(true);
|
|
|
|
|
}
|
2023-09-21 22:11:20 +08:00
|
|
|
|
|
2024-06-19 09:35:54 +08:00
|
|
|
|
void ShaderCreateInfoGeometry::AddMaterialInstanceOutput()
|
|
|
|
|
{
|
|
|
|
|
AddOutput(SVT_UINT,mtl::func::MI_ID_OUTPUT,Interpolation::Flat);
|
|
|
|
|
AddFunction(mtl::func::MF_HandoverMI_GS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int ShaderCreateInfoGeometry::AddOutput(const SVType &type,const AnsiString &name,Interpolation inter)
|
|
|
|
|
{
|
|
|
|
|
ShaderVariable sv;
|
|
|
|
|
|
|
|
|
|
hgl::strcpy(sv.name,sizeof(sv.name),name.c_str());
|
|
|
|
|
|
|
|
|
|
sv.type=type;
|
|
|
|
|
sv.interpolation=inter;
|
|
|
|
|
|
|
|
|
|
return gsdi.AddOutput(sv);
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-21 22:11:20 +08:00
|
|
|
|
bool ShaderCreateInfoGeometry::ProcLayout()
|
|
|
|
|
{
|
|
|
|
|
final_shader+="layout("+input_prim+") in;\n"
|
|
|
|
|
"layout("+output_prim+", max_vertices = "+AnsiString::numberOf(max_vertices)+") out;\n";
|
|
|
|
|
|
|
|
|
|
return(true);
|
|
|
|
|
}
|
2023-09-21 21:36:37 +08:00
|
|
|
|
}//namespace graph
|
|
|
|
|
}//namespace hgl
|