diff --git a/include/openspace/rendering/framebufferrenderer.h b/include/openspace/rendering/framebufferrenderer.h index 386060d7c8..8a8b073759 100644 --- a/include/openspace/rendering/framebufferrenderer.h +++ b/include/openspace/rendering/framebufferrenderer.h @@ -91,7 +91,8 @@ public: void update() override; void performRaycasterTasks(const std::vector& tasks); - void performDeferredTasks(const std::vector& tasks); + void performDeferredTasks(const std::vector& tasks, + float blackoutFactor); void render(Scene* scene, Camera* camera, float blackoutFactor) override; /** diff --git a/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl b/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl index 8aec9d0c7b..74a4282642 100644 --- a/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl +++ b/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl @@ -92,6 +92,8 @@ uniform dmat4 dSgctProjectionToModelTransformMatrix; uniform dvec4 dCamPosObj; uniform dvec3 sunDirectionObj; +uniform float blackoutFactor; + /******************************************************************************* ***** ALL CALCULATIONS FOR ECLIPSE ARE IN METERS AND IN WORLD SPACE SYSTEM **** *******************************************************************************/ @@ -693,7 +695,7 @@ void main() { } renderTarget = atmosphereFinalColor / float(nSamples); - + renderTarget.a *= blackoutFactor; // if (complex) // renderTarget = vec4(1.0, 0.0, 0.0, 1.0); } @@ -704,7 +706,7 @@ void main() { bColor += texelFetch(mainColorTexture, fragCoords, f); } bColor /= float(nAaSamples); - renderTarget = vec4(HDR(bColor.xyz * backgroundConstant, atmExposure), bColor.a); + renderTarget = vec4(HDR(bColor.xyz * backgroundConstant, atmExposure), bColor.a * blackoutFactor); } else { discard; diff --git a/src/rendering/framebufferrenderer.cpp b/src/rendering/framebufferrenderer.cpp index 669aa4f82d..46ba8b8de7 100644 --- a/src/rendering/framebufferrenderer.cpp +++ b/src/rendering/framebufferrenderer.cpp @@ -987,7 +987,7 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac "FramebufferRenderer::render::deferredTasks" ); } - performDeferredTasks(tasks.deferredcasterTasks); + performDeferredTasks(tasks.deferredcasterTasks, blackoutFactor); } if (tasks.deferredcasterTasks.empty()) { @@ -1098,7 +1098,9 @@ void FramebufferRenderer::performRaycasterTasks(const std::vector } void FramebufferRenderer::performDeferredTasks( - const std::vector& tasks) + const std::vector& tasks, + float blackoutFactor + ) { bool firstPaint = true; @@ -1149,6 +1151,9 @@ void FramebufferRenderer::performDeferredTasks( deferredcastProgram->setUniform("atmExposure", _hdrExposure); deferredcastProgram->setUniform("backgroundConstant", _hdrBackground); + deferredcastProgram->setUniform("blackoutFactor", blackoutFactor); + + deferredcaster->preRaycast( deferredcasterTask.renderData, _deferredcastData[deferredcaster],