diff --git a/js/regl/main.js b/js/regl/main.js index 3ba2319..0f56b32 100644 --- a/js/regl/main.js +++ b/js/regl/main.js @@ -59,7 +59,7 @@ export const init = async (canvas) => { ]; const regl = createREGL({ canvas, pixelRatio: 1, extensions, optionalExtensions }); - const cache = new Map(); + const cache = new Map(inclusions); const rain = { canvas, resize, doubleClick, cache, regl, resolution: 1 }; window.addEventListener("dblclick", doubleClick); diff --git a/js/regl/utils.js b/js/regl/utils.js index a5a28b2..650b5f1 100644 --- a/js/regl/utils.js +++ b/js/regl/utils.js @@ -59,7 +59,13 @@ const loadImage = (cache, regl, url, mipmap) => { if (url != null) { const data = new Image(); data.crossOrigin = "anonymous"; - data.src = url; + let imageURL; + if (typeof cache.get(`import::${url}`) === "function") { + imageURL = (await cache.get(`import::${url}`)()).default; + } else { + imageURL = url; + } + data.src = imageURL; await data.decode(); loaded = true; if (mipmap) { @@ -97,7 +103,13 @@ const loadText = (cache, url) => { }, loaded: (async () => { if (url != null) { - text = await (await fetch(url)).text(); + let textURL; + if (typeof cache.get(`import::${url}`) === "function") { + textURL = (await cache.get(`import::${url}`)()).default; + } else { + textURL = url; + } + text = await (await fetch(textURL)).text(); loaded = true; } })(), diff --git a/js/webgpu/main.js b/js/webgpu/main.js index 1fe7fd3..2845e76 100644 --- a/js/webgpu/main.js +++ b/js/webgpu/main.js @@ -56,7 +56,7 @@ export const init = async (canvas) => { const adapter = await navigator.gpu.requestAdapter(); const device = await adapter.requestDevice(); - const cache = new Map(); + const cache = new Map(inclusions); const rain = { canvas, resize, diff --git a/js/webgpu/utils.js b/js/webgpu/utils.js index 4f7efe9..bcd8768 100644 --- a/js/webgpu/utils.js +++ b/js/webgpu/utils.js @@ -16,7 +16,14 @@ const loadTexture = async (device, cache, url) => { GPUTextureUsage.RENDER_ATTACHMENT, }); } else { - const response = await fetch(url); + let imageURL; + if (typeof cache.get(`import::${url}`) === "function") { + imageURL = (await cache.get(`import::${url}`)()).default; + } else { + imageURL = url; + } + + const response = await fetch(imageURL); const data = await response.blob(); const source = await createImageBitmap(data); const size = [source.width, source.height, 1]; @@ -67,7 +74,13 @@ const loadShader = async (device, cache, url) => { if (cache.has(key)) { return cache.get(key); } - const response = await fetch(url); + let textURL; + if (typeof cache.get(`import::${url}`) === "function") { + textURL = (await cache.get(`import::${url}`)()).default; + } else { + textURL = url; + } + const response = await fetch(textURL); const code = await response.text(); return { code,