diff --git a/modules/base/rendering/renderablesphericalgrid.cpp b/modules/base/rendering/renderablesphericalgrid.cpp index 893da2b927..02439931ce 100644 --- a/modules/base/rendering/renderablesphericalgrid.cpp +++ b/modules/base/rendering/renderablesphericalgrid.cpp @@ -215,7 +215,10 @@ void RenderableSphericalGrid::render(const RenderData& data, RendererTasks&){ modelTransform; _gridProgram->setUniform("modelViewTransform", modelViewTransform); - _gridProgram->setUniform("projectionTransform", glm::dmat4(data.camera.projectionMatrix())); + _gridProgram->setUniform( + "MVPTransform", + glm::dmat4(data.camera.projectionMatrix()) * modelViewTransform + ); _gridProgram->setUniform("gridColor", _gridColor); diff --git a/modules/base/shaders/grid_vs.glsl b/modules/base/shaders/grid_vs.glsl index c6006a73ef..45941de4ce 100644 --- a/modules/base/shaders/grid_vs.glsl +++ b/modules/base/shaders/grid_vs.glsl @@ -32,12 +32,16 @@ out float vs_screenSpaceDepth; out vec4 vs_positionViewSpace; uniform dmat4 modelViewTransform; -uniform dmat4 projectionTransform; +uniform dmat4 MVPTransform; void main() { - dvec4 positionViewSpace = modelViewTransform * dvec4(in_position, 1.0); - dvec4 positionClipSpace = projectionTransform * positionViewSpace; - vec4 positionScreenSpace = z_normalization(vec4(positionClipSpace)); + dvec4 objPosDouble = dvec4(in_position, 1.0); + dvec4 positionViewSpace = modelViewTransform * objPosDouble; + dvec4 positionClipSpace = MVPTransform * objPosDouble; + + positionClipSpace.z = 0.0; + + vec4 positionScreenSpace = vec4(positionClipSpace); vs_screenSpaceDepth = float(positionClipSpace.w); vs_positionViewSpace = vec4(positionViewSpace);