mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:02:44 +00:00 
			
		
		
		
	 6dcc808994
			
		
	
	
		6dcc808994
		
	
	
	
	
		
			
			With 6 bits of precision, the maximum triangle coordinate we can handle is sqrt(2^31 / (1 << 6)^2) = ~724. Rendering to a target of 800x600 or higher quickly becomes a mess because of integer overflow. By reducing the subpixel precision to 4 bits, we support coordinates up to ~2896, which means that we can (try to) render to target sizes like 2560x1440. This fixes the main menu backdrop for the Half-Life port. It also introduces more white pixel artifacts in Quake's water / lava rendering, but this is a level geometry visualization bug (see `r_novis`).
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			912 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			912 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Stephan Unverwerth <s.unverwerth@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibGPU/Config.h>
 | |
| 
 | |
| #define INCREASE_STATISTICS_COUNTER(stat, n)     \
 | |
|     do {                                         \
 | |
|         if constexpr (ENABLE_STATISTICS_OVERLAY) \
 | |
|             stat += (n);                         \
 | |
|     } while (0)
 | |
| 
 | |
| namespace SoftGPU {
 | |
| 
 | |
| static constexpr bool ENABLE_STATISTICS_OVERLAY = false;
 | |
| static constexpr int MILLISECONDS_PER_STATISTICS_PERIOD = 500;
 | |
| static constexpr int NUM_LIGHTS = 8;
 | |
| static constexpr int MAX_CLIP_PLANES = 6;
 | |
| static constexpr float MAX_TEXTURE_LOD_BIAS = 2.f;
 | |
| static constexpr int SUBPIXEL_BITS = 4;
 | |
| 
 | |
| // See: https://www.khronos.org/opengl/wiki/Common_Mistakes#Texture_edge_color_problem
 | |
| // FIXME: make this dynamically configurable through ConfigServer
 | |
| static constexpr bool CLAMP_DEPRECATED_BEHAVIOR = false;
 | |
| 
 | |
| }
 |