mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-20 20:09:08 -06:00
added viewprojection matrix to screenspaceimage shaderprogram
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
ScreenSpaceImage();
|
||||
~ScreenSpaceImage();
|
||||
|
||||
void render() override;
|
||||
void render(Camera* camera) override;
|
||||
bool initialize() override;
|
||||
bool deinitialize() override;
|
||||
void update() override;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user