diff --git a/js/config.js b/js/config.js index ffbab60..dd2b086 100644 --- a/js/config.js +++ b/js/config.js @@ -186,18 +186,18 @@ paramMapping.dropLength = paramMapping.raindropLength; paramMapping.angle = paramMapping.slant; paramMapping.colors = paramMapping.stripeColors; -export default (searchString) => { - const urlParams = Object.fromEntries( - Array.from(new URLSearchParams(searchString).entries()) +export default (urlParams) => { + const validParams = Object.fromEntries( + Array.from(Object.entries(urlParams)) .filter(([key]) => key in paramMapping) .map(([key, value]) => [paramMapping[key].key, paramMapping[key].parser(value)]) .filter(([_, value]) => value != null) ); - const version = urlParams.version in versions ? versions[urlParams.version] : versions.classic; + const version = validParams.version in versions ? versions[validParams.version] : versions.classic; return { ...version, - ...urlParams, + ...validParams, }; }; diff --git a/js/main.js b/js/main.js index dde8c45..35c86be 100644 --- a/js/main.js +++ b/js/main.js @@ -9,10 +9,11 @@ document.addEventListener("touchmove", (e) => e.preventDefault(), { }); document.body.onload = () => { - const config = makeConfig(window.location.search); - if (navigator.gpu != null) { - initWebGPU(canvas, config); - } else { + const urlParams = Object.fromEntries(new URLSearchParams(window.location.search).entries()); + const config = makeConfig(urlParams); + if (navigator.gpu == null || ["webgl", "regl"].includes(urlParams.renderer?.toLowerCase())) { initREGL(canvas, config); + } else { + initWebGPU(canvas, config); } };