diff --git a/src/effects/Saturation.cpp b/src/effects/Saturation.cpp index 6e31e65a..a1028425 100644 --- a/src/effects/Saturation.cpp +++ b/src/effects/Saturation.cpp @@ -130,6 +130,14 @@ std::shared_ptr Saturation::GetFrame(std::shared_ptr sqrt_lut = [] { + std::array lut{}; + for (int i = 0; i <= 65025; ++i) + lut[i] = std::sqrt(static_cast(i)); + return lut; + }(); // Loop through pixels unsigned char *pixels = reinterpret_cast(frame_image->bits()); @@ -148,10 +156,10 @@ std::shared_ptr Saturation::GetFrame(std::shared_ptr> 8; + const float p = sqrt_lut[weighted_sq]; // Adjust common saturation R = clamp_i(static_cast(p + (R - p) * saturation_value));