diff --git a/modules/globebrowsing/shaders/renderer_fs.glsl b/modules/globebrowsing/shaders/renderer_fs.glsl index 09d291cc93..07ba765e6c 100644 --- a/modules/globebrowsing/shaders/renderer_fs.glsl +++ b/modules/globebrowsing/shaders/renderer_fs.glsl @@ -156,6 +156,7 @@ in vec3 positionCameraSpace; in vec3 positionWorldSpace; #endif // USE_ECLIPSE_SHADOWS +uniform float opacity; Fragment getFragment() { @@ -296,5 +297,7 @@ Fragment getFragment() { frag.color.xyz *= shadow < 0.99 ? clamp(shadow + 0.3, 0.0, 1.0) : shadow; #endif + frag.color.a *= opacity; + return frag; } diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 5306c49d32..c0813352a8 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -567,6 +567,7 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary) ghoul::Dictionary layersDictionary = dictionary.value("Layers"); _layerManager.initialize(layersDictionary); + addProperty(_opacity); addProperty(_generalProperties.performShading); addProperty(_generalProperties.useAccurateNormals); @@ -971,6 +972,9 @@ void RenderableGlobe::renderChunks(const RenderData& data, RendererTasks&, _globalRenderer.program->setUniform("orenNayarRoughness", onr); } + _localRenderer.program->setUniform("opacity", _opacity); + _globalRenderer.program->setUniform("opacity", _opacity); + if (_globalRenderer.updatedSinceLastCall) { const std::array& layerGroups =