Ver Fonte

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.
Jelle Raaijmakers há 3 anos atrás
pai
commit
9fc419395e
1 ficheiros alterados com 4 adições e 4 exclusões
  1. 4 4
      Userland/Libraries/LibSoftGPU/Device.cpp

+ 4 - 4
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: