diff --git a/Userland/Libraries/LibSoftGPU/Device.cpp b/Userland/Libraries/LibSoftGPU/Device.cpp index ece3abebc1..846ca34c7a 100644 --- a/Userland/Libraries/LibSoftGPU/Device.cpp +++ b/Userland/Libraries/LibSoftGPU/Device.cpp @@ -39,7 +39,7 @@ static i64 g_num_quads; using AK::abs; using AK::SIMD::any; -using AK::SIMD::exp; +using AK::SIMD::exp_approximate; using AK::SIMD::expand4; using AK::SIMD::f32x4; using AK::SIMD::i32x4; @@ -1277,7 +1277,6 @@ ALWAYS_INLINE void Device::shade_fragments(PixelQuad& quad) // Calculate fog // Math from here: https://opengl-notes.readthedocs.io/en/latest/topics/texturing/aliasing.html - // FIXME: exponential fog is not vectorized, we should add a SIMD exp function that calculates an approximation. if (m_options.fog_enabled) { f32x4 factor; switch (m_options.fog_mode) { @@ -1286,12 +1285,12 @@ ALWAYS_INLINE void Device::shade_fragments(PixelQuad& quad) break; case GPU::FogMode::Exp: { auto argument = -m_options.fog_density * quad.fog_depth; - factor = exp(argument); + factor = exp_approximate(argument); } break; case GPU::FogMode::Exp2: { auto argument = m_options.fog_density * quad.fog_depth; argument *= -argument; - factor = exp(argument); + factor = exp_approximate(argument); } break; default: VERIFY_NOT_REACHED();