From 63c427af3cf8e7310c3f3e548ce19d4c5a365021 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Tue, 2 Jun 2026 20:17:04 -0700 Subject: [PATCH] dpr --- src/client/render/gl/Renderer.ts | 1 - src/client/utilities/Dpr.ts | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) 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; }