From 9fc419395ee2bae343ee978ee5036f6eb2edbdfe Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Sun, 6 Mar 2022 00:21:58 +0100 Subject: [PATCH] LibSoftGPU: Use destination alpha for texture decal function According to the OpenGL spec, the decal function uses the destination (or texture) alpha instead of the source alpha. This fixes the sky in GLQuake. --- Userland/Libraries/LibSoftGPU/Device.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibSoftGPU/Device.cpp b/Userland/Libraries/LibSoftGPU/Device.cpp index 84940710b7..5bedeab2c9 100644 --- a/Userland/Libraries/LibSoftGPU/Device.cpp +++ b/Userland/Libraries/LibSoftGPU/Device.cpp @@ -1016,10 +1016,10 @@ ALWAYS_INLINE void Device::shade_fragments(PixelQuad& quad) quad.out_color = texel; break; case TextureEnvMode::Decal: { - auto src_alpha = quad.out_color.w(); - quad.out_color.set_x(mix(quad.out_color.x(), texel.x(), src_alpha)); - quad.out_color.set_y(mix(quad.out_color.y(), texel.y(), src_alpha)); - quad.out_color.set_z(mix(quad.out_color.z(), texel.z(), src_alpha)); + auto dst_alpha = texel.w(); + quad.out_color.set_x(mix(quad.out_color.x(), texel.x(), dst_alpha)); + quad.out_color.set_y(mix(quad.out_color.y(), texel.y(), dst_alpha)); + quad.out_color.set_z(mix(quad.out_color.z(), texel.z(), dst_alpha)); break; } default: