fix: shader fade animation linear curve

This commit is contained in:
2026-08-31 14:09:54 +02:00
parent d4e936a7e2
commit 487615f482
2 changed files with 2 additions and 9 deletions
-5
View File
@@ -29,9 +29,4 @@ inline std::array<float, 3> kelvinToGain(int kelvin) {
return {static_cast<float>(r), static_cast<float>(g), static_cast<float>(b)};
}
inline float easeInOutCubic(float x) {
return x < 0.5f ? 4.f * x * x * x
: 1.f - std::pow(-2.f * x + 2.f, 3.f) / 2.f;
}
} // namespace ZShell::services
+2 -4
View File
@@ -25,7 +25,6 @@ extern "C" {
#include "colortemp.hpp"
using ZShell::services::easeInOutCubic;
using ZShell::services::kelvinToGain;
using Render::IFramebuffer;
@@ -241,17 +240,16 @@ static void hkBegin(
.count();
const float t =
std::clamp(elapsed / g_transition.durationSec, 0.f, 1.f);
const float e = easeInOutCubic(t);
for (size_t i = 0; i < 3; ++i)
g_currentGain[i] =
g_transition.fromGain[i] +
(g_transition.toGain[i] - g_transition.fromGain[i]) * e;
(g_transition.toGain[i] - g_transition.fromGain[i]) * t;
if (g_uniformMode) {
setUniformGain(g_currentGain);
} else {
const int step = static_cast<int>(e * BAKED_STEPS);
const int step = static_cast<int>(t * BAKED_STEPS);
if (step != g_transition.lastBakedStep) {
g_transition.lastBakedStep = step;
ensureShaderFile(