From 88b8134480438ea3609fc3dcb2228f81e26708b8 Mon Sep 17 00:00:00 2001 From: uwes-ufo Date: Thu, 27 Nov 2025 15:19:14 +0100 Subject: [PATCH 1/4] minor dynamic resolution changes --- src/core/modules/AtmosphereShowMySky.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/modules/AtmosphereShowMySky.cpp b/src/core/modules/AtmosphereShowMySky.cpp index 18efb3b83f63a..8bfd0457c516e 100644 --- a/src/core/modules/AtmosphereShowMySky.cpp +++ b/src/core/modules/AtmosphereShowMySky.cpp @@ -651,16 +651,15 @@ bool AtmosphereShowMySky::dynamicResolution(StelProjectorP prj, Vec3d &currPos, dynResTimer--; // count down to redraw return true; } - // if there is a timeout, we draw with full resolution - // if the change is too large, we draw with reduced resolution - atmoRes=timeout?1:reducedResolution; + // if the change is too big, we draw with reduced resolution, otherwise with full resolution + atmoRes=changed?reducedResolution:1; if (prevRes!=atmoRes) { resizeRenderTarget(width, height); qCDebug(Atmo) << "dynResTimer" << dynResTimer << "atmoRes" << atmoRes << "changeOfView" << changeOfView.norm() << changeOfView; } // At reduced resolution, we hurry to redraw - at full resolution, we have time. - dynResTimer=timeout?17:5; + dynResTimer=changed?5:17; prevRes=atmoRes; prevFov=currFov; prevFad=currFad; From 04078bb197513076cd0bd762e8bee4ff0c308af8 Mon Sep 17 00:00:00 2001 From: uwes-ufo Date: Tue, 2 Dec 2025 11:17:00 +0100 Subject: [PATCH 2/4] comments --- src/core/modules/AtmosphereShowMySky.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core/modules/AtmosphereShowMySky.cpp b/src/core/modules/AtmosphereShowMySky.cpp index 8bfd0457c516e..c81bf0066be37 100644 --- a/src/core/modules/AtmosphereShowMySky.cpp +++ b/src/core/modules/AtmosphereShowMySky.cpp @@ -468,6 +468,7 @@ AtmosphereShowMySky::AtmosphereShowMySky(const double initialAltitude) shaderAttribLocations.term2TimesOneOverMaxdLpOneOverGamma = prog.uniformLocation("term2TimesOneOverMaxdLpOneOverGamma"); shaderAttribLocations.flagUseTmGamma = prog.uniformLocation("flagUseTmGamma"); + shaderAttribLocations.doSRGB = prog.uniformLocation("doSRGB"); prog.release(); } @@ -629,8 +630,15 @@ Vec4f AtmosphereShowMySky::getMeanPixelValue() bool AtmosphereShowMySky::dynamicResolution(StelProjectorP prj, Vec3d &currPos, int width, int height) { - if (!flagDynamicResolution) - return false; + if (!flagDynamicResolution) // There's nothing to do here, we're drawing + return false; // in full resolution and full frame rate. + + // If the scene is rendered in real time and is practically static, + // Stellarium generates approximately 18 frames per second. + // We draw about one atmosphere per second at full resolution. + // For faster-moving scenes, Stellarium increases the frame rate to the maximum, + // perhaps 50 frames per second depending on the hardware's capabilities. + // We draw about 10 atmospheres per second in reduced resolution. const auto currFov=prj->getFov(), currFad=fader.getInterstate(); Vec3d currSun; @@ -659,7 +667,7 @@ bool AtmosphereShowMySky::dynamicResolution(StelProjectorP prj, Vec3d &currPos, qCDebug(Atmo) << "dynResTimer" << dynResTimer << "atmoRes" << atmoRes << "changeOfView" << changeOfView.norm() << changeOfView; } // At reduced resolution, we hurry to redraw - at full resolution, we have time. - dynResTimer=changed?5:17; + dynResTimer=changed?5:17; // dynResTimer is like a clock divider. prevRes=atmoRes; prevFov=currFov; prevFad=currFad; @@ -809,8 +817,8 @@ void AtmosphereShowMySky::draw(StelCore* core) GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.oneOverGamma, b)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.term2TimesOneOverMaxdLpOneOverGamma, c)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.term2TimesOneOverMaxdL, d)); - GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.doSRGB, true)); - GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.flagUseTmGamma, false)); + GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.doSRGB, sRGB)); + GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.flagUseTmGamma, useTmGamma)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.brightnessScale, atm_intensity)); StelPainter sPainter(core->getProjection2d()); From 5d5e03c08a5edf2a7ad1ec64296d5dfa637f43f0 Mon Sep 17 00:00:00 2001 From: uwes-ufo Date: Tue, 2 Dec 2025 11:30:56 +0100 Subject: [PATCH 3/4] unintentional changes removed --- src/core/modules/AtmosphereShowMySky.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/modules/AtmosphereShowMySky.cpp b/src/core/modules/AtmosphereShowMySky.cpp index c81bf0066be37..458259143af4b 100644 --- a/src/core/modules/AtmosphereShowMySky.cpp +++ b/src/core/modules/AtmosphereShowMySky.cpp @@ -468,7 +468,6 @@ AtmosphereShowMySky::AtmosphereShowMySky(const double initialAltitude) shaderAttribLocations.term2TimesOneOverMaxdLpOneOverGamma = prog.uniformLocation("term2TimesOneOverMaxdLpOneOverGamma"); shaderAttribLocations.flagUseTmGamma = prog.uniformLocation("flagUseTmGamma"); - shaderAttribLocations.doSRGB = prog.uniformLocation("doSRGB"); prog.release(); } @@ -817,8 +816,8 @@ void AtmosphereShowMySky::draw(StelCore* core) GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.oneOverGamma, b)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.term2TimesOneOverMaxdLpOneOverGamma, c)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.term2TimesOneOverMaxdL, d)); - GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.doSRGB, sRGB)); - GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.flagUseTmGamma, useTmGamma)); + GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.doSRGB, true)); + GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.flagUseTmGamma, false)); GL(luminanceToScreenProgram_->setUniformValue(shaderAttribLocations.brightnessScale, atm_intensity)); StelPainter sPainter(core->getProjection2d()); From 88abeedacc64ac1e5f3f55e117aaa8f50db07d3e Mon Sep 17 00:00:00 2001 From: uwes-ufo Date: Tue, 2 Dec 2025 12:16:59 +0100 Subject: [PATCH 4/4] align comments --- src/core/modules/AtmosphereShowMySky.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/modules/AtmosphereShowMySky.cpp b/src/core/modules/AtmosphereShowMySky.cpp index 458259143af4b..361d579515b5a 100644 --- a/src/core/modules/AtmosphereShowMySky.cpp +++ b/src/core/modules/AtmosphereShowMySky.cpp @@ -629,8 +629,11 @@ Vec4f AtmosphereShowMySky::getMeanPixelValue() bool AtmosphereShowMySky::dynamicResolution(StelProjectorP prj, Vec3d &currPos, int width, int height) { - if (!flagDynamicResolution) // There's nothing to do here, we're drawing - return false; // in full resolution and full frame rate. + if (!flagDynamicResolution) + { + // There's nothing to do here, we're drawing in full resolution and full frame rate. + return false; + } // If the scene is rendered in real time and is practically static, // Stellarium generates approximately 18 frames per second.