From 45e7c41690006c9fd6595b06efc1bcdf1861e3eb Mon Sep 17 00:00:00 2001 From: Kalle Bladin Date: Sun, 5 Jun 2016 21:27:20 -0400 Subject: [PATCH] Update camera to use double precition. --- include/openspace/util/camera.h | 7 +++---- modules/base/rendering/renderablepath.cpp | 2 +- modules/base/rendering/renderableplane.cpp | 2 +- modules/base/rendering/renderabletrail.cpp | 2 +- modules/debugging/rendering/renderabledebugplane.cpp | 2 +- modules/newhorizons/rendering/renderablecrawlingline.cpp | 2 +- src/network/parallelconnection.cpp | 2 +- src/rendering/renderable.cpp | 2 +- src/scene/scenegraphnode.cpp | 2 +- 9 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/openspace/util/camera.h b/include/openspace/util/camera.h index c244f5c7d5..bf15d1492b 100644 --- a/include/openspace/util/camera.h +++ b/include/openspace/util/camera.h @@ -73,9 +73,9 @@ namespace openspace { // now working with float precision. To be changed to double later. // The reason double does not work yet is because of the setUniform function // in ghoul::opengl - typedef glm::quat Quat; - typedef glm::mat4 Mat4; - typedef glm::vec3 Vec3; + typedef glm::dquat Quat; + typedef glm::dmat4 Mat4; + typedef glm::dvec3 Vec3; // Static constants static const Vec3 _VIEW_DIRECTION_CAMERA_SPACE; @@ -100,7 +100,6 @@ namespace openspace { const Vec3& positionVec3() const; const Vec3& unsynchedPositionVec3() const; const Vec3& focusPositionVec3() const; - // Should return const refs const Vec3& viewDirectionWorldSpace() const; const Vec3& lookUpVectorCameraSpace() const; const Vec3& lookUpVectorWorldSpace() const; diff --git a/modules/base/rendering/renderablepath.cpp b/modules/base/rendering/renderablepath.cpp index d9f2b3b3ef..1edb53936f 100644 --- a/modules/base/rendering/renderablepath.cpp +++ b/modules/base/rendering/renderablepath.cpp @@ -154,7 +154,7 @@ void RenderablePath::render(const RenderData& data) { _programObject->activate(); psc currentPosition = data.position; - glm::mat4 camrot = data.camera.viewRotationMatrix(); + glm::mat4 camrot = glm::mat4(data.camera.viewRotationMatrix()); glm::mat4 transform = glm::mat4(1); // setup the data to the shader diff --git a/modules/base/rendering/renderableplane.cpp b/modules/base/rendering/renderableplane.cpp index e85ce0a3c3..55017bafff 100644 --- a/modules/base/rendering/renderableplane.cpp +++ b/modules/base/rendering/renderableplane.cpp @@ -187,7 +187,7 @@ bool RenderablePlane::deinitialize() { void RenderablePlane::render(const RenderData& data) { glm::mat4 transform = glm::mat4(1.0); if (_billboard) - transform = glm::inverse(data.camera.viewRotationMatrix()); + transform = glm::inverse(glm::mat4(data.camera.viewRotationMatrix())); // Activate shader _shader->activate(); diff --git a/modules/base/rendering/renderabletrail.cpp b/modules/base/rendering/renderabletrail.cpp index e22ef8c0f2..8427dfddc6 100644 --- a/modules/base/rendering/renderabletrail.cpp +++ b/modules/base/rendering/renderabletrail.cpp @@ -148,7 +148,7 @@ void RenderableTrail::render(const RenderData& data) { _programObject->activate(); psc currentPosition = data.position; psc campos = data.camera.position(); - glm::mat4 camrot = data.camera.viewRotationMatrix(); + glm::mat4 camrot = glm::mat4(data.camera.viewRotationMatrix()); glm::mat4 transform = glm::mat4(1); diff --git a/modules/debugging/rendering/renderabledebugplane.cpp b/modules/debugging/rendering/renderabledebugplane.cpp index e7dae5cd15..544dc26c72 100644 --- a/modules/debugging/rendering/renderabledebugplane.cpp +++ b/modules/debugging/rendering/renderabledebugplane.cpp @@ -150,7 +150,7 @@ bool RenderableDebugPlane::deinitialize() { void RenderableDebugPlane::render(const RenderData& data) { glm::mat4 transform = glm::mat4(1.0); if (_billboard) - transform = glm::inverse(data.camera.viewRotationMatrix()); + transform = glm::inverse(glm::mat4(data.camera.viewRotationMatrix())); // Activate shader _shader->activate(); diff --git a/modules/newhorizons/rendering/renderablecrawlingline.cpp b/modules/newhorizons/rendering/renderablecrawlingline.cpp index c4f557ba9f..7d7f8df6c1 100644 --- a/modules/newhorizons/rendering/renderablecrawlingline.cpp +++ b/modules/newhorizons/rendering/renderablecrawlingline.cpp @@ -124,7 +124,7 @@ void RenderableCrawlingLine::render(const RenderData& data) { // fetch data psc currentPosition = data.position; psc campos = data.camera.position(); - glm::mat4 camrot = data.camera.viewRotationMatrix(); + glm::mat4 camrot = glm::mat4(data.camera.viewRotationMatrix()); glm::mat4 transform = glm::mat4(1); diff --git a/src/network/parallelconnection.cpp b/src/network/parallelconnection.cpp index 6c50b40644..1b4a634350 100644 --- a/src/network/parallelconnection.cpp +++ b/src/network/parallelconnection.cpp @@ -1036,7 +1036,7 @@ void ParallelConnection::broadcast(){ //create a keyframe with current position and orientation of camera network::datamessagestructures::PositionKeyframe kf; kf._position = OsEng.interactionHandler().camera()->position(); - kf._viewRotationQuat = glm::quat_cast(OsEng.interactionHandler().camera()->viewRotationMatrix()); + kf._viewRotationQuat = glm::quat_cast(glm::mat4(OsEng.interactionHandler().camera()->viewRotationMatrix())); //timestamp as current runtime of OpenSpace instance kf._timeStamp = OsEng.runTime(); diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index 11ee989c06..e64eac80ae 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -128,7 +128,7 @@ void Renderable::setPscUniforms( { program.setUniform("campos", camera.position().vec4()); program.setUniform("objpos", position.vec4()); - program.setUniform("camrot", camera.viewRotationMatrix()); + program.setUniform("camrot", glm::mat4(camera.viewRotationMatrix())); program.setUniform("scaling", camera.scaling()); } diff --git a/src/scene/scenegraphnode.cpp b/src/scene/scenegraphnode.cpp index 0663a469c7..d314ff3327 100644 --- a/src/scene/scenegraphnode.cpp +++ b/src/scene/scenegraphnode.cpp @@ -380,7 +380,7 @@ bool SceneGraphNode::sphereInsideFrustum(const psc& s_pos, const PowerScaledScal const Camera* camera) { // direction the camera is looking at in power scale - psc psc_camdir = psc(camera->viewDirectionWorldSpace()); + psc psc_camdir = psc(glm::vec3(camera->viewDirectionWorldSpace())); // the position of the camera, moved backwards in the view direction to encapsulate // the sphere radius