Fix startup freeze on weak devices and add Vercel Analytics

Defer WebGL shader compile behind a visible boot placeholder, lower initial DPR, disable glass blur during boot, and lighten the intro so the page stays responsive instead of looking half-loaded.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonxlnx
2026-06-11 16:44:59 +02:00
parent 458cac66b7
commit b1de6a8e56
5 changed files with 177 additions and 82 deletions
+14 -2
View File
@@ -5,6 +5,7 @@ var Engine = (function () {
var canvas, gl, program, uniforms = {};
var playing = true;
var suspended = false;
var started = false;
var loopT = 0; // seconds into current loop
var lastTick = 0;
var fps = 60, fpsAcc = 0, fpsN = 0, fpsCb = null;
@@ -32,13 +33,14 @@ var Engine = (function () {
return sh;
}
function init(canvasEl, paramsGetter) {
function init(canvasEl, paramsGetter, opts) {
opts = opts || {};
canvas = canvasEl;
getParams = paramsGetter;
gl = canvas.getContext("webgl2", {
antialias: false,
preserveDrawingBuffer: true,
powerPreference: "high-performance"
powerPreference: "default"
});
if (!gl) throw new Error("WebGL2 not available");
@@ -61,6 +63,15 @@ var Engine = (function () {
uniforms[n] = gl.getUniformLocation(program, n);
});
lastTick = performance.now();
started = false;
if (opts.autostart) start();
}
function start() {
if (started) return;
started = true;
suspended = false;
lastTick = performance.now();
requestAnimationFrame(tick);
}
@@ -168,6 +179,7 @@ var Engine = (function () {
return {
init: init,
start: start,
setSize: setSize,
renderAt: renderAt,
readPixels: readPixels,