From ecc6c8d63f9a44f514d884308ae36cb585c12bf7 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 16 May 2016 12:57:53 +0200 Subject: [PATCH] Reintroduce powerscaled coordinates to modelgeometry to fix scaling issue Correctly set magnification property in RenderableModelProjection --- modules/base/rendering/multimodelgeometry.cpp | 13 +++++++++++-- .../rendering/renderablemodelprojection.cpp | 12 +++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/modules/base/rendering/multimodelgeometry.cpp b/modules/base/rendering/multimodelgeometry.cpp index a7827b82a6..afbd612fcb 100644 --- a/modules/base/rendering/multimodelgeometry.cpp +++ b/modules/base/rendering/multimodelgeometry.cpp @@ -28,6 +28,8 @@ #include "ghoul/io/model/modelreadermultiformat.h" #include "ghoul/opengl/vertexbufferobject.h" +#include + namespace { const std::string _loggerCat = "MultiModelGeometry"; } @@ -65,9 +67,16 @@ namespace openspace { _vertices.reserve(vertices.size()); for (const auto & v : vertices) { + psc p = PowerScaledCoordinate::CreatePowerScaledCoordinate( + v.location[0], + v.location[1], + v.location[2] + ); + Vertex vv; - memcpy(vv.location, v.location, sizeof(GLfloat) * 3); - vv.location[3] = 1.0; + //memcpy(vv.location, v.location, sizeof(GLfloat) * 3); + memcpy(vv.location, glm::value_ptr(p.vec4()), sizeof(GLfloat) * 4); + //vv.location[3] = 1.0; memcpy(vv.tex, v.tex, sizeof(GLfloat) * 2); memcpy(vv.normal, v.normal, sizeof(GLfloat) * 3); _vertices.push_back(vv); diff --git a/modules/newhorizons/rendering/renderablemodelprojection.cpp b/modules/newhorizons/rendering/renderablemodelprojection.cpp index e91fab7cca..375e507d46 100644 --- a/modules/newhorizons/rendering/renderablemodelprojection.cpp +++ b/modules/newhorizons/rendering/renderablemodelprojection.cpp @@ -192,8 +192,8 @@ bool RenderableModelProjection::initialize() { if (_programObject == nullptr) { RenderEngine& renderEngine = OsEng.renderEngine(); _programObject = renderEngine.buildRenderProgram("ModelShader", - "${MODULES}/newhorizons/shaders/modelShader_vs.glsl", - "${MODULES}/newhorizons/shaders/modelShader_fs.glsl"); + "${MODULE_NEWHORIZONS}/shaders/modelShader_vs.glsl", + "${MODULE_NEWHORIZONS}/shaders/modelShader_fs.glsl"); if (!_programObject) return false; @@ -202,8 +202,8 @@ bool RenderableModelProjection::initialize() { if (_fboProgramObject == nullptr) { _fboProgramObject = ghoul::opengl::ProgramObject::Build("ProjectionPass", - "${MODULES}/newhorizons/shaders/projectionPass_vs.glsl", - "${MODULES}/newhorizons/shaders/projectionPass_fs.glsl"); + "${MODULE_NEWHORIZONS}/shaders/projectionPass_vs.glsl", + "${MODULE_NEWHORIZONS}/shaders/projectionPass_fs.glsl"); if (!_fboProgramObject) return false; } @@ -336,7 +336,9 @@ void RenderableModelProjection::render(const RenderData& data) { _viewProjection = data.camera.viewProjectionMatrix(); _programObject->setUniform("ViewProjection", _viewProjection); _programObject->setUniform("ModelTransform", _transform); - setPscUniforms(*_programObject.get(), data.camera, data.position); + setPscUniforms(*_programObject, data.camera, data.position); + + _geometry->setUniforms(*_programObject); textureBind(); _geometry->render();