diff --git a/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColor.mtl b/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColor.mtl index 35e23648..0a85d8f2 100644 --- a/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColor.mtl +++ b/ShaderLibrary/Std3D/BlinnPhong/SunLightPureColor.mtl @@ -39,21 +39,10 @@ Output Code { - mat3 GetNormalMatrix() - { - return mat3(camera.view*GetLocalToWorld()); - } - - vec3 GetNormal(mat3 normal_matrix,vec3 normal) - { - return normalize(normal_matrix*normal); - } void main() { - mat3 normal_matrix=GetNormalMatrix(); - - Output.Normal =GetNormal(normal_matrix,Normal); + Output.Normal =GetNormal(GetNormalMatrix(),Normal); Output.Position =GetPosition3D(); HandoverMI(); diff --git a/src/ShaderGen/3d/Std3DMaterial.cpp b/src/ShaderGen/3d/Std3DMaterial.cpp index 1835bcce..9e2da53a 100644 --- a/src/ShaderGen/3d/Std3DMaterial.cpp +++ b/src/ShaderGen/3d/Std3DMaterial.cpp @@ -30,12 +30,13 @@ bool Std3DMaterial::CustomVertexShader(ShaderCreateInfoVertex *vsc) else vsc->AddFunction(cfg->camera?func::GetPosition3DCamera:func::GetPosition3D); - //if(cfg->camera - // &&cfg->local_to_world) - //{ - // vsc->AddFunction(func::GetNormalMatrix); - // vsc->AddFunction(func::GetNormal); - //} + if(cfg->camera + &&cfg->local_to_world) + { + vsc->AddFunction(func::GetNormalMatrix); + vsc->AddFunction(func::GetNormal); +// vsc->AddFunction(func::GetNormalVS); + } mci->AddStruct(SBS_ViewportInfo); diff --git a/src/ShaderGen/common/MFGetNormal.h b/src/ShaderGen/common/MFGetNormal.h index bf55395b..04d19ad0 100644 --- a/src/ShaderGen/common/MFGetNormal.h +++ b/src/ShaderGen/common/MFGetNormal.h @@ -17,6 +17,13 @@ vec3 GetNormal(mat3 normal_matrix,vec3 normal) { return normalize(normal_matrix*normal); } +)"; + + constexpr const char *GetNormalVS=R"( +vec3 GetNormal() +{ + return normalize(mat3(camera.view*GetLocalToWorld())*Normal); +} )"; }//namespace func STD_MTL_NAMESPACE_END