From 2659d531b4006782130b2716ccdaa53fd5fd3cc8 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Wed, 10 Jun 2026 21:35:15 +0100 Subject: [PATCH] Allow configuring fps autoscaler --- src/run-animation.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/run-animation.ts b/src/run-animation.ts index 47a4b0b..f426438 100644 --- a/src/run-animation.ts +++ b/src/run-animation.ts @@ -42,6 +42,8 @@ import { DrawableDescriptor, Renderer } from './main'; * return value must be given. * @param startupSettingOverrides Sensible defaults are provided, but these can be overridden. * @param initialRuntimeSettingOverrides Sensible defaults are provided, but these can be overridden. + * Set `enableAutoscaler` to `false` to keep the render scales exactly as configured + * instead of letting the FPS-based autoscaler adjust them. */ export async function runAnimation( canvas: HTMLCanvasElement, @@ -51,7 +53,9 @@ export async function runAnimation( currentTimeInMilliseconds: DOMHighResTimeStamp, deltaTimeInMilliseconds: DOMHighResTimeStamp ) => boolean, - settings: Partial = {} + settings: Partial & { + enableAutoscaler?: boolean; + } = {} ): Promise { if (settings.enableContextLostSimulator) { enableContextLostSimulator(canvas); @@ -62,7 +66,11 @@ export async function runAnimation( let triggerIsOver: () => void; const isOver = new Promise((resolve) => (triggerIsOver = resolve)); renderer.setRuntimeSettings(settings); - const autoscaler = new FpsQualityAutoscaler(renderer); + const autoscaler = new FpsQualityAutoscaler(renderer, { + distanceRenderScale: settings.distanceRenderScale, + lightsRenderScale: settings.lightsRenderScale, + }); + autoscaler.scalingEnabled = settings.enableAutoscaler !== false; await renderer.initializedPromise;