Переглянути джерело

LibSoftGPU: Only interpolate fog values if fog is enabled

Stephan Unverwerth 3 роки тому
батько
коміт
66cf2ea240
1 змінених файлів з 7 додано та 5 видалено
  1. 7 5
      Userland/Libraries/LibSoftGPU/Device.cpp

+ 7 - 5
Userland/Libraries/LibSoftGPU/Device.cpp

@@ -375,12 +375,14 @@ static void rasterize_triangle(const RasterizerOptions& options, Gfx::Bitmap& re
 
 
             quad.uv = interpolate(expand4(vertex0.tex_coord), expand4(vertex1.tex_coord), expand4(vertex2.tex_coord), quad.barycentrics);
             quad.uv = interpolate(expand4(vertex0.tex_coord), expand4(vertex1.tex_coord), expand4(vertex2.tex_coord), quad.barycentrics);
 
 
-            // Calculate depth of fragment for fog
-            //
-            // OpenGL 1.5 spec chapter 3.10: "An implementation may choose to approximate the
-            // eye-coordinate distance from the eye to each fragment center by |Ze|."
+            if (options.fog_enabled) {
+                // Calculate depth of fragment for fog
+                //
+                // OpenGL 1.5 spec chapter 3.10: "An implementation may choose to approximate the
+                // eye-coordinate distance from the eye to each fragment center by |Ze|."
 
 
-            quad.fog_depth = interpolate(expand4(vertex0_eye_absz), expand4(vertex1_eye_absz), expand4(vertex2_eye_absz), quad.barycentrics);
+                quad.fog_depth = interpolate(expand4(vertex0_eye_absz), expand4(vertex1_eye_absz), expand4(vertex2_eye_absz), quad.barycentrics);
+            }
 
 
             pixel_shader(quad);
             pixel_shader(quad);