From c7463385536d68bb8c44f6baeb412ec0977c36c8 Mon Sep 17 00:00:00 2001 From: Michael Nilsson Date: Fri, 11 Mar 2016 09:36:49 -0500 Subject: [PATCH] added viewprojection matrix to screenspaceimage shaderprogram --- include/openspace/rendering/screenspacerenderable.h | 4 +++- modules/base/rendering/screenspaceimage.cpp | 6 +++--- modules/base/rendering/screenspaceimage.h | 2 +- modules/base/shaders/screnspace_vs.glsl | 3 ++- src/rendering/renderengine.cpp | 2 +- src/rendering/screenspacerenderable.cpp | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/openspace/rendering/screenspacerenderable.h b/include/openspace/rendering/screenspacerenderable.h index 40e729f79d..84de2256b7 100644 --- a/include/openspace/rendering/screenspacerenderable.h +++ b/include/openspace/rendering/screenspacerenderable.h @@ -29,15 +29,17 @@ #include #include #include +#include namespace openspace { class ScreenSpaceRenderable : public properties::PropertyOwner { public: + ScreenSpaceRenderable(); ~ScreenSpaceRenderable(); - virtual void render() = 0; + virtual void render(Camera* camera) = 0; virtual bool initialize() = 0; virtual bool deinitialize() = 0; virtual void update() = 0; diff --git a/modules/base/rendering/screenspaceimage.cpp b/modules/base/rendering/screenspaceimage.cpp index 6b4074eb3b..bb7032ee6c 100644 --- a/modules/base/rendering/screenspaceimage.cpp +++ b/modules/base/rendering/screenspaceimage.cpp @@ -47,11 +47,10 @@ namespace openspace { ScreenSpaceImage::~ScreenSpaceImage(){} -void ScreenSpaceImage::render(){ +void ScreenSpaceImage::render(Camera* camera){ GLint m_viewport[4]; glGetIntegerv(GL_VIEWPORT, m_viewport); - float height = (float(m_viewport[2])/m_viewport[3])* - (float(_texture->height())/float(_texture->width())); + float height = (float(_texture->height())/float(_texture->width())); glm::mat4 transform = glm::translate(glm::mat4(1.f), _position.value()); transform = glm::scale(transform, glm::vec3(_scale.value(),_scale.value()*height,1)); @@ -59,6 +58,7 @@ void ScreenSpaceImage::render(){ _shader->activate(); _shader->setUniform("ModelTransform",transform); + _shader->setUniform("ViewProjectionMatrix", camera->viewProjectionMatrix()); ghoul::opengl::TextureUnit unit; unit.activate(); diff --git a/modules/base/rendering/screenspaceimage.h b/modules/base/rendering/screenspaceimage.h index ac1d53b4be..d277bb98e2 100644 --- a/modules/base/rendering/screenspaceimage.h +++ b/modules/base/rendering/screenspaceimage.h @@ -34,7 +34,7 @@ public: ScreenSpaceImage(); ~ScreenSpaceImage(); - void render() override; + void render(Camera* camera) override; bool initialize() override; bool deinitialize() override; void update() override; diff --git a/modules/base/shaders/screnspace_vs.glsl b/modules/base/shaders/screnspace_vs.glsl index b732f52537..3fbebc8ca5 100644 --- a/modules/base/shaders/screnspace_vs.glsl +++ b/modules/base/shaders/screnspace_vs.glsl @@ -26,6 +26,7 @@ #version __CONTEXT__ uniform mat4 ModelTransform; +uniform mat4 ViewProjectionMatrix; layout(location = 0) in vec4 in_position; layout(location = 1) in vec2 in_st; @@ -38,5 +39,5 @@ void main(){ vs_st = in_st; vs_position = in_position; - gl_Position = ModelTransform*vs_position; + gl_Position = ViewProjectionMatrix * ModelTransform * vs_position; } \ No newline at end of file diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 11f1511d33..6864324493 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -396,7 +396,7 @@ void RenderEngine::render(const glm::mat4 &projectionMatrix, const glm::mat4 &vi for (auto s : _screenSpaceRenderables) { if(s->isEnabled()) - s->render(); + s->render(_mainCamera); } } diff --git a/src/rendering/screenspacerenderable.cpp b/src/rendering/screenspacerenderable.cpp index 2af7f197a0..713147435f 100644 --- a/src/rendering/screenspacerenderable.cpp +++ b/src/rendering/screenspacerenderable.cpp @@ -28,7 +28,7 @@ namespace openspace { ScreenSpaceRenderable::ScreenSpaceRenderable() : _enabled("enabled", "Is Enabled", true) , _flatScreen("flatScreen", "Flat Screen", true) - , _position("position", "Position", glm::vec3(0),glm::vec3(-2),glm::vec3(2)) + , _position("position", "Position", glm::vec3(0,0,-2),glm::vec3(-2),glm::vec3(2)) , _scale("scale", "Scale" , 0.5, 0, 1) , _texturePath("texturePath", "Texture path", "${OPENSPACE_DATA}/test2.jpg") , _quad(0)