Added deferred rendering support files. Fixed Volume rendering in framebufferrender.

This commit is contained in:
Jonathas Costa
2017-04-18 00:04:29 -04:00
parent 9e69a9b42e
commit 454e530ad6
16 changed files with 623 additions and 344 deletions
@@ -32,6 +32,7 @@
#include <vector>
#include <map>
#include <openspace/rendering/deferredcasterlistener.h>
#include <openspace/rendering/raycasterlistener.h>
#include <openspace/rendering/renderer.h>
#include <openspace/util/updatestructures.h>
@@ -54,7 +55,7 @@ class RenderableVolume;
class Camera;
class Scene;
class FramebufferRenderer : public Renderer, public RaycasterListener {
class FramebufferRenderer : public Renderer, public RaycasterListener, public DeferredcasterListener {
public:
FramebufferRenderer();
virtual ~FramebufferRenderer();
@@ -64,6 +65,7 @@ public:
void updateResolution();
void updateRaycastData();
void updateDeferredcastData();
void setCamera(Camera* camera) override;
void setScene(Scene* scene) override;
@@ -80,6 +82,8 @@ public:
virtual void updateRendererData() override;
virtual void raycastersChanged(VolumeRaycaster& raycaster, bool attached) override;
virtual void deferredcastersChanged(Deferredcaster& deferredcaster, bool attached) override;
private:
std::map<VolumeRaycaster*, RaycastData> _raycastData;
@@ -87,6 +91,9 @@ private:
std::map<VolumeRaycaster*, std::unique_ptr<ghoul::opengl::ProgramObject>> _raycastPrograms;
std::map<VolumeRaycaster*, std::unique_ptr<ghoul::opengl::ProgramObject>> _insideRaycastPrograms;
std::map<Deferredcaster*, DeferredcastData> _deferredcastData;
std::map<Deferredcaster*, std::unique_ptr<ghoul::opengl::ProgramObject>> _deferredcastPrograms;
std::unique_ptr<ghoul::opengl::ProgramObject> _resolveProgram;
GLuint _screenQuad;
@@ -98,6 +105,7 @@ private:
GLuint _exitDepthTexture;
GLuint _exitFramebuffer;
bool _dirtyDeferredcastData;
bool _dirtyRaycastData;
bool _dirtyResolution;