فهرست منبع

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 3 سال پیش
والد
کامیت
9fc419395e
1فایلهای تغییر یافته به همراه4 افزوده شده و 4 حذف شده
  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;
             quad.out_color = texel;
             break;
             break;
         case TextureEnvMode::Decal: {
         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;
             break;
         }
         }
         default:
         default: