diff --git a/src/client/render/gl/Renderer.ts b/src/client/render/gl/Renderer.ts index 41b57b47f..1e12dd243 100644 --- a/src/client/render/gl/Renderer.ts +++ b/src/client/render/gl/Renderer.ts @@ -210,7 +210,6 @@ export class GPURenderer { alpha: false, antialias: false, powerPreference: "high-performance", - desynchronized: true, }); if (!gl) throw new Error("WebGL2 not supported"); this.gl = gl; diff --git a/src/client/utilities/Dpr.ts b/src/client/utilities/Dpr.ts index fa473f3f8..e1d9fca8a 100644 --- a/src/client/utilities/Dpr.ts +++ b/src/client/utilities/Dpr.ts @@ -5,6 +5,10 @@ // or camera ↔ screen coordinate math will desync. const MAX_RENDER_DPR = 1.5; +// BISECT: sub-native render scale to test whether fill rate is the bottleneck +// on low-end Chromebooks. 0.5 = 1/4 the pixels. Visibly softer. +const RENDER_SCALE = 0.5; + export function getEffectiveDpr(): number { - return Math.min(window.devicePixelRatio || 1, MAX_RENDER_DPR); + return Math.min(window.devicePixelRatio || 1, MAX_RENDER_DPR) * RENDER_SCALE; }