discard fragment if alpha is 0 in screenspacerenderables

This commit is contained in:
Michael Nilsson
2016-03-18 13:52:11 -04:00
parent 5553ec02c9
commit af8880274c
3 changed files with 13 additions and 9 deletions

View File

@@ -39,6 +39,9 @@ Fragment getFragment(){
float depth = (1.0 + log(abs(OcclusionDepth) + 1/pow(k, 1.0))/log(k)) / 27.0;
frag.color = texture(texture1, vs_st);
frag.color.a = (frag.color.a != 0.0f) ? Alpha : frag.color.a;
if(frag.color.a == 0.0f){
discard;
}
frag.depth = depth;
return frag;

View File

@@ -207,14 +207,14 @@ bool RenderEngine::initialize() {
ghoul::io::TextureReader::ref().addReader(std::make_shared<ghoul::io::TextureReaderCMAP>());
//For testing screenspacerenderables
ssr = std::make_shared<ScreenSpaceImage>("${OPENSPACE_DATA}/test2.jpg");
registerScreenSpaceRenderable(ssr);
std::shared_ptr<ScreenSpaceFramebuffer> ssfb = std::make_shared<ScreenSpaceFramebuffer>();
ssfb->addRenderFunction(std::make_shared<std::function<void()>>([this](){renderInformation();}));
ssfb->addRenderFunction(std::make_shared<std::function<void()>>([this](){ssr->render();}));
registerScreenSpaceRenderable(ssfb);
//For testing screenspacerenderables
ssr = std::make_shared<ScreenSpaceImage>("${OPENSPACE_DATA}/test2.jpg");
registerScreenSpaceRenderable(ssr);
return true;
}

View File

@@ -209,11 +209,12 @@ void ScreenSpaceRenderable::draw(glm::mat4 modelTransform){
glEnable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
_shader->activate();
_shader->setUniform("OcclusionDepth", occlusionDepth);
_shader->setUniform("Alpha", _alpha);
_shader->setUniform("ModelTransform",modelTransform);
_shader->setUniform("ViewProjectionMatrix", OsEng.renderEngine().camera()->viewProjectionMatrix());
_shader->activate();
_shader->setUniform("OcclusionDepth", occlusionDepth);
_shader->setUniform("Alpha", _alpha);
_shader->setUniform("ModelTransform",modelTransform);
_shader->setUniform("ViewProjectionMatrix", OsEng.renderEngine().camera()->viewProjectionMatrix());
ghoul::opengl::TextureUnit unit;
unit.activate();
_texture->bind();