diff --git a/inc/hgl/graph/mtl/3d/Material3DCreateConfig.h b/inc/hgl/graph/mtl/3d/Material3DCreateConfig.h index 7fb0162e..fce19ae0 100644 --- a/inc/hgl/graph/mtl/3d/Material3DCreateConfig.h +++ b/inc/hgl/graph/mtl/3d/Material3DCreateConfig.h @@ -11,6 +11,8 @@ struct Material3DCreateConfig:public MaterialCreateConfig VAT position_format; /// #include #include +#include STD_MTL_NAMESPACE_BEGIN class MaterialCreateInfo; diff --git a/src/ShaderGen/3d/Std3DMaterial.cpp b/src/ShaderGen/3d/Std3DMaterial.cpp index 27013a37..3189b00c 100644 --- a/src/ShaderGen/3d/Std3DMaterial.cpp +++ b/src/ShaderGen/3d/Std3DMaterial.cpp @@ -22,7 +22,10 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) mci->SetLocalToWorld(VK_SHADER_STAGE_ALL_GRAPHICS); vsc->AddAssign(); + vsc->AddFunction(func::GetPosition3DL2W); } + else + vsc->AddFunction(func::GetPosition3D); mci->AddUBO(VK_SHADER_STAGE_VERTEX_BIT, DescriptorSetType::Global, diff --git a/src/ShaderGen/common/MFGetPosition.h b/src/ShaderGen/common/MFGetPosition.h index 7e5dbeec..066d4f7b 100644 --- a/src/ShaderGen/common/MFGetPosition.h +++ b/src/ShaderGen/common/MFGetPosition.h @@ -52,5 +52,19 @@ vec4 GetPosition2D() } )" }; + + constexpr const char *GetPosition3D=R"( +vec4 GetPosition3D() +{ + return vec4(Position,1); +} +)"; + + constexpr const char *GetPosition3DL2W=R"( +vec4 GetPosition3D() +{ + return GetLocalToWorld()*vec4(Position,1); +} +)"; }//namespace func STD_MTL_NAMESPACE_END