refactor abuffer and add msaa support. volumes temporarily disabled.

This commit is contained in:
Emil Axelsson
2016-02-02 11:30:27 +01:00
parent 4f7ab5321f
commit d4ff8119d1
79 changed files with 2354 additions and 3106 deletions

View File

@@ -27,6 +27,7 @@
#include <openspace/engine/configurationmanager.h>
#include <openspace/engine/openspaceengine.h>
#include <openspace/rendering/renderengine.h>
#include <modules/base/rendering/planetgeometry.h>
#include <openspace/util/constants.h>
#include <openspace/util/time.h>
@@ -122,10 +123,26 @@ RenderablePlanet::~RenderablePlanet() {
}
bool RenderablePlanet::initialize() {
if (_programObject == nullptr && _hasNightTexture)
OsEng.ref().configurationManager()->getValue("nightTextureProgram", _programObject);
else if (_programObject == nullptr)
OsEng.ref().configurationManager()->getValue("pscShader", _programObject);
RenderEngine* renderEngine = OsEng.renderEngine();
if (_programObject == nullptr && _hasNightTexture) {
// Night texture program
_programObject = renderEngine->buildRenderProgram(
"nightTextureProgram",
"${SHADERS}/nighttexture_vs.glsl",
"${SHADERS}/nighttexture_fs.glsl");
if (!_programObject) return false;
}
else if (_programObject == nullptr) {
// pscstandard
_programObject = renderEngine->buildRenderProgram(
"pscstandard",
"${SHADERS}/pscstandard_vs.glsl",
"${SHADERS}/pscstandard_fs.glsl");
if (!_programObject) return false;
}
_programObject->setIgnoreSubroutineUniformLocationError(true);
loadTexture();
_geometry->initialize(this);
@@ -143,6 +160,12 @@ bool RenderablePlanet::deinitialize() {
if (_nightTexture)
delete _nightTexture;
RenderEngine* renderEngine = OsEng.renderEngine();
if (_programObject) {
renderEngine->removeRenderProgram(_programObject);
_programObject = nullptr;
}
_geometry = nullptr;
_texture = nullptr;
_nightTexture = nullptr;
@@ -206,6 +229,10 @@ void RenderablePlanet::render(const RenderData& data)
_nightTexture->bind();
_programObject->setUniform("nightTex", nightUnit);
}
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
// render
_geometry->render();