added viewprojection matrix to screenspaceimage shaderprogram

This commit is contained in:
Michael Nilsson
2016-03-11 09:36:49 -05:00
parent fe2d90eb8f
commit c746338553
6 changed files with 11 additions and 8 deletions

View File

@@ -29,15 +29,17 @@
#include <openspace/properties/vectorproperty.h>
#include <openspace/properties/scalarproperty.h>
#include <openspace/properties/stringproperty.h>
#include <openspace/util/camera.h>
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;

View File

@@ -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();

View File

@@ -34,7 +34,7 @@ public:
ScreenSpaceImage();
~ScreenSpaceImage();
void render() override;
void render(Camera* camera) override;
bool initialize() override;
bool deinitialize() override;
void update() override;

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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)