@vysmo/transitions 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,40 @@ animate({
46
46
 
47
47
  `runner.render()` is one draw call per frame, regardless of the transition.
48
48
 
49
+ ### With URL strings (no DOM Image needed)
50
+
51
+ `Runner.render()` is synchronous (frame-rate friendly), so URL inputs need
52
+ a one-time pre-load up front. `runner.preload([…urls])` fetches + decodes
53
+ + uploads each URL exactly once; subsequent renders use the cached GPU
54
+ texture. Concurrent / repeat `preload` calls dedupe.
55
+
56
+ ```ts
57
+ import { Runner, paintBleed } from "@vysmo/transitions";
58
+ import { animate } from "@vysmo/animations";
59
+
60
+ const canvas = document.querySelector<HTMLCanvasElement>("canvas")!;
61
+ const runner = new Runner({ canvas });
62
+
63
+ const fromUrl = "/photo-a.jpg";
64
+ const toUrl = "/photo-b.jpg";
65
+ await runner.preload([fromUrl, toUrl]);
66
+
67
+ animate({
68
+ from: 0,
69
+ to: 1,
70
+ duration: 1200,
71
+ onUpdate: (p) => runner.render(paintBleed, {
72
+ from: fromUrl,
73
+ to: toUrl,
74
+ progress: p,
75
+ }),
76
+ });
77
+ ```
78
+
79
+ Cross-origin URLs need the right CORS headers (same as any WebGL texture
80
+ source). For Next.js apps, see the
81
+ [Vysmo + Next.js guide](https://vysmo.com/guides/nextjs).
82
+
49
83
  ## Tree-shake by what you import
50
84
 
51
85
  Every transition is its own module. Import only the ones you ship:
@@ -1,3 +1,4 @@
1
+ import type { TextureCacheOptions, TextureSource } from "@vysmo/gl-core";
1
2
  import type { RenderArgs, Transition, UniformParams } from "../types.js";
2
3
  export interface RunnerOptions {
3
4
  /** Render target. `OffscreenCanvas` works in workers; `HTMLCanvasElement` on the main thread. */
@@ -20,6 +21,15 @@ export interface RunnerOptions {
20
21
  * `webglcontextrestored` event. After this, `render()` works again.
21
22
  */
22
23
  onContextRestored?: () => void;
24
+ /**
25
+ * Options forwarded to the internal `TextureCache`. Most callers can
26
+ * ignore this; pass `{ maxUrlEntries: N }` if you're driving the
27
+ * runner from a lazy-loading consumer (e.g. a slideshow with hundreds
28
+ * of slides) to keep GPU memory bounded — least-recently-used URL
29
+ * textures are evicted when the cache size exceeds N. DOM-source
30
+ * textures are not subject to LRU.
31
+ */
32
+ textureCache?: TextureCacheOptions;
23
33
  }
24
34
  /**
25
35
  * The single object that owns a WebGL2 context, compiles transition
@@ -44,6 +54,7 @@ export declare class Runner {
44
54
  readonly gl: WebGL2RenderingContext;
45
55
  private canvas;
46
56
  private textures;
57
+ private readonly textureCacheOptions;
47
58
  private programs;
48
59
  private vao;
49
60
  private defaultDisplacement;
@@ -80,6 +91,39 @@ export declare class Runner {
80
91
  * @throws Error if the runner is disposed or the WebGL context is lost.
81
92
  * @throws Error if shader compilation or program linking fails.
82
93
  */
94
+ /**
95
+ * Pre-load URL string sources so that subsequent synchronous
96
+ * `render()` calls can reference them without throwing. DOM-source
97
+ * inputs (`HTMLImageElement`, canvas, video, etc.) are ignored — they
98
+ * carry their own pixel data and don't need to be fetched.
99
+ *
100
+ * Typical use:
101
+ *
102
+ * const fromUrl = "/photo-a.jpg";
103
+ * const toUrl = "/photo-b.jpg";
104
+ * await runner.preload([fromUrl, toUrl]);
105
+ * animate({
106
+ * ...,
107
+ * onUpdate: (p) => runner.render(crossZoom, {
108
+ * from: fromUrl, to: toUrl, progress: p,
109
+ * }),
110
+ * });
111
+ *
112
+ * Resolves once every URL has been fetched, decoded, and uploaded.
113
+ * Calls for the same URL are deduplicated (concurrent and repeat
114
+ * calls share one in-flight load).
115
+ *
116
+ * @throws Error if any source fails to fetch / decode (rejected
117
+ * promise from the underlying `TextureCache.resolveAsync`).
118
+ */
119
+ preload(sources: ReadonlyArray<TextureSource | string>): Promise<void>;
120
+ /**
121
+ * Internal: resolve a single render-args source to its GL texture.
122
+ * Strings go through the synchronous URL cache; if the URL hasn't
123
+ * been pre-loaded via `preload()`, throws with a clear pointer at
124
+ * the fix.
125
+ */
126
+ private resolveForRender;
83
127
  render<P extends UniformParams>(transition: Transition<P>, args: RenderArgs<P>): void;
84
128
  private renderFullscreen;
85
129
  private renderMesh;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EAEd,MAAM,aAAa,CAAC;AAmCrB,MAAM,WAAW,aAAa;IAC5B,iGAAiG;IACjG,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC5C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAgE;IAChF,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,eAAe,CAAe;IAEtC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IACF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAWpC;gBAEU,OAAO,EAAE,aAAa;IAoClC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,kBAAkB;IAuB1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,SAAS,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAClB,IAAI;IA8EP,OAAO,CAAC,gBAAgB;IAoDxB,OAAO,CAAC,UAAU;IAsClB;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;;;;;;OASG;IACH,OAAO,IAAI,IAAI;IAkBf,OAAO,CAAC,YAAY;IAuCpB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;CAkBnB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EAEd,MAAM,aAAa,CAAC;AAmCrB,MAAM,WAAW,aAAa;IAC5B,iGAAiG;IACjG,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC5C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkC;IACtE,OAAO,CAAC,QAAQ,CAAgE;IAChF,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,eAAe,CAAe;IAEtC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IACF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAWpC;gBAEU,OAAO,EAAE,aAAa;IAqClC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,kBAAkB;IAuB1B;;;;;;;;;;;;;;;;;;OAkBG;IACH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5E;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAkBxB,MAAM,CAAC,CAAC,SAAS,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAClB,IAAI;IA8EP,OAAO,CAAC,gBAAgB;IAoDxB,OAAO,CAAC,UAAU;IAsClB;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;;;;;;OASG;IACH,OAAO,IAAI,IAAI;IAkBf,OAAO,CAAC,YAAY;IAuCpB,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,UAAU;CAkBnB"}
@@ -32,6 +32,7 @@ export class Runner {
32
32
  gl;
33
33
  canvas;
34
34
  textures;
35
+ textureCacheOptions;
35
36
  programs = new WeakMap();
36
37
  vao;
37
38
  defaultDisplacement;
@@ -54,7 +55,7 @@ export class Runner {
54
55
  const vao = this.gl.createVertexArray();
55
56
  if (vao)
56
57
  this.vao = vao;
57
- this.textures = new TextureCache(this.gl);
58
+ this.textures = new TextureCache(this.gl, this.textureCacheOptions);
58
59
  this.defaultDisplacement = this.createDefaultDisplacement();
59
60
  this.defaultEnvironment = this.createDefaultEnvironment();
60
61
  this.defaultPrevious = this.createDefaultPrevious();
@@ -77,7 +78,8 @@ export class Runner {
77
78
  throw new Error("WebGL2 is not available. This environment does not support the transitions library.");
78
79
  }
79
80
  this.gl = gl;
80
- this.textures = new TextureCache(gl);
81
+ this.textureCacheOptions = options.textureCache;
82
+ this.textures = new TextureCache(gl, options.textureCache);
81
83
  this.fbPool = new FramebufferPool(gl);
82
84
  const vao = gl.createVertexArray();
83
85
  if (!vao)
@@ -141,6 +143,54 @@ export class Runner {
141
143
  * @throws Error if the runner is disposed or the WebGL context is lost.
142
144
  * @throws Error if shader compilation or program linking fails.
143
145
  */
146
+ /**
147
+ * Pre-load URL string sources so that subsequent synchronous
148
+ * `render()` calls can reference them without throwing. DOM-source
149
+ * inputs (`HTMLImageElement`, canvas, video, etc.) are ignored — they
150
+ * carry their own pixel data and don't need to be fetched.
151
+ *
152
+ * Typical use:
153
+ *
154
+ * const fromUrl = "/photo-a.jpg";
155
+ * const toUrl = "/photo-b.jpg";
156
+ * await runner.preload([fromUrl, toUrl]);
157
+ * animate({
158
+ * ...,
159
+ * onUpdate: (p) => runner.render(crossZoom, {
160
+ * from: fromUrl, to: toUrl, progress: p,
161
+ * }),
162
+ * });
163
+ *
164
+ * Resolves once every URL has been fetched, decoded, and uploaded.
165
+ * Calls for the same URL are deduplicated (concurrent and repeat
166
+ * calls share one in-flight load).
167
+ *
168
+ * @throws Error if any source fails to fetch / decode (rejected
169
+ * promise from the underlying `TextureCache.resolveAsync`).
170
+ */
171
+ async preload(sources) {
172
+ await Promise.all(sources
173
+ .filter((s) => typeof s === "string")
174
+ .map((url) => this.textures.resolveAsync(url)));
175
+ }
176
+ /**
177
+ * Internal: resolve a single render-args source to its GL texture.
178
+ * Strings go through the synchronous URL cache; if the URL hasn't
179
+ * been pre-loaded via `preload()`, throws with a clear pointer at
180
+ * the fix.
181
+ */
182
+ resolveForRender(source, role) {
183
+ if (typeof source !== "string") {
184
+ return this.textures.resolve(source);
185
+ }
186
+ const cached = this.textures.getUrlTexture(source);
187
+ if (!cached) {
188
+ throw new Error(`Runner.render(): "${role}" URL is not loaded: ${source}. ` +
189
+ `Call runner.preload(["${source}"]) before render() (URL inputs must be ` +
190
+ `fetched + decoded + uploaded before render(), which is synchronous).`);
191
+ }
192
+ return cached;
193
+ }
144
194
  render(transition, args) {
145
195
  if (this.disposed) {
146
196
  throw new Error("Runner has been disposed. Create a new Runner to render.");
@@ -163,13 +213,13 @@ export class Runner {
163
213
  // gl.bindTexture() against whichever unit is currently active (to
164
214
  // upload pixels), so if we interleave resolves with activeTexture()
165
215
  // calls, each resolve clobbers the most recently bound unit.
166
- const fromTex = this.textures.resolve(args.from);
167
- const toTex = this.textures.resolve(args.to);
216
+ const fromTex = this.resolveForRender(args.from, "from");
217
+ const toTex = this.resolveForRender(args.to, "to");
168
218
  const displacementTex = args.displacement
169
- ? this.textures.resolve(args.displacement)
219
+ ? this.resolveForRender(args.displacement, "displacement")
170
220
  : this.defaultDisplacement;
171
221
  const environmentTex = args.environment
172
- ? this.textures.resolve(args.environment)
222
+ ? this.resolveForRender(args.environment, "environment")
173
223
  : this.defaultEnvironment;
174
224
  gl.activeTexture(gl.TEXTURE0);
175
225
  gl.bindTexture(gl.TEXTURE_2D, fromTex);
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -52,8 +52,17 @@ export interface Transition<P extends UniformParams = UniformParams> {
52
52
  mesh?: MeshGeometry;
53
53
  }
54
54
  export interface RenderArgs<P extends UniformParams> {
55
- from: TextureSource;
56
- to: TextureSource;
55
+ /**
56
+ * Source image. Accepts any `TextureSource` (`HTMLImageElement`,
57
+ * `HTMLCanvasElement`, `HTMLVideoElement`, `ImageBitmap`,
58
+ * `OffscreenCanvas`, raw `WebGLTexture`) **or** a URL string. URL
59
+ * inputs must be pre-loaded via `runner.preload([url])` before
60
+ * `render()` is called — `render()` itself is synchronous and will
61
+ * throw if asked to draw an un-preloaded URL.
62
+ */
63
+ from: TextureSource | string;
64
+ /** Target image. Same input types as `from`; see `from` for URL pre-loading rules. */
65
+ to: TextureSource | string;
57
66
  progress: number;
58
67
  params?: Partial<P>;
59
68
  /**
@@ -64,15 +73,19 @@ export interface RenderArgs<P extends UniformParams> {
64
73
  * negatively. If omitted, the runner binds a default 1×1 mid-gray
65
74
  * texture so displacement-using transitions degrade to no-op rather
66
75
  * than failing.
76
+ *
77
+ * Accepts URL strings on the same pre-load contract as `from` / `to`.
67
78
  */
68
- displacement?: TextureSource;
79
+ displacement?: TextureSource | string;
69
80
  /**
70
81
  * Optional environment-map texture. Transitions that read it via the
71
82
  * getEnvironment(uv) shader helper (e.g. liquid-chrome with reflection
72
83
  * enabled) use it to fake reflections off metallic / glass surfaces.
73
84
  * If omitted, the runner binds a default 1×1 mid-gray texture so
74
85
  * environment-using transitions degrade to a neutral no-op.
86
+ *
87
+ * Accepts URL strings on the same pre-load contract as `from` / `to`.
75
88
  */
76
- environment?: TextureSource;
89
+ environment?: TextureSource | string;
77
90
  }
78
91
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,EACN,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,EACN,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,aAAa;IACjD;;;;;;;OAOG;IACH,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;IAC7B,sFAAsF;IACtF,EAAE,EAAE,aAAa,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACtC;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CACtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vysmo/transitions",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "60 WebGL2 transition shaders, defined as plain data. Mesh-based, tree-shakable to the byte, endpoint-correct by construction. Drives canvas, image, and video sources via one Runner.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -35,7 +35,7 @@
35
35
  "LICENSE"
36
36
  ],
37
37
  "dependencies": {
38
- "@vysmo/gl-core": "0.1.0"
38
+ "@vysmo/gl-core": "0.2.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@vitest/browser": "^3.2.4",
@@ -0,0 +1,137 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import { Runner, paintBleed } from "../../index.js";
3
+
4
+ const SIZE = 16;
5
+
6
+ function makeSolid(r: number, g: number, b: number): HTMLCanvasElement {
7
+ const canvas = document.createElement("canvas");
8
+ canvas.width = SIZE;
9
+ canvas.height = SIZE;
10
+ const ctx = canvas.getContext("2d");
11
+ if (!ctx) throw new Error("2D context unavailable");
12
+ ctx.fillStyle = `rgb(${r}, ${g}, ${b})`;
13
+ ctx.fillRect(0, 0, SIZE, SIZE);
14
+ return canvas;
15
+ }
16
+
17
+ async function blobUrl(color: string): Promise<string> {
18
+ const canvas = makeSolid(
19
+ parseInt(color.slice(1, 3), 16),
20
+ parseInt(color.slice(3, 5), 16),
21
+ parseInt(color.slice(5, 7), 16),
22
+ );
23
+ const blob: Blob = await new Promise((resolve, reject) => {
24
+ canvas.toBlob((b) => (b ? resolve(b) : reject(new Error("toBlob failed"))));
25
+ });
26
+ return URL.createObjectURL(blob);
27
+ }
28
+
29
+ let canvas: HTMLCanvasElement;
30
+ let runner: Runner;
31
+
32
+ beforeEach(() => {
33
+ canvas = document.createElement("canvas");
34
+ canvas.width = SIZE;
35
+ canvas.height = SIZE;
36
+ runner = new Runner({ canvas });
37
+ });
38
+
39
+ describe("Runner URL inputs", () => {
40
+ it("renders a transition after preloading from/to URLs", async () => {
41
+ const fromUrl = await blobUrl("#ff0000");
42
+ const toUrl = await blobUrl("#0000ff");
43
+
44
+ await runner.preload([fromUrl, toUrl]);
45
+
46
+ // Should not throw — the URLs are pre-loaded.
47
+ expect(() =>
48
+ runner.render(paintBleed, {
49
+ from: fromUrl,
50
+ to: toUrl,
51
+ progress: 0.5,
52
+ }),
53
+ ).not.toThrow();
54
+ });
55
+
56
+ it("throws a helpful error when rendering with an un-preloaded URL", async () => {
57
+ const fromUrl = await blobUrl("#ff0000");
58
+ const toUrl = await blobUrl("#0000ff");
59
+ // Only preload `from`; `to` remains unloaded.
60
+ await runner.preload([fromUrl]);
61
+
62
+ expect(() =>
63
+ runner.render(paintBleed, {
64
+ from: fromUrl,
65
+ to: toUrl,
66
+ progress: 0.5,
67
+ }),
68
+ ).toThrow(/URL is not loaded/);
69
+ });
70
+
71
+ it("error message names the un-preloaded URL and the role (from/to)", async () => {
72
+ const fromUrl = await blobUrl("#00ff00");
73
+ const toUrl = await blobUrl("#ff00ff");
74
+ await runner.preload([toUrl]); // only `to` preloaded; `from` is missing
75
+
76
+ try {
77
+ runner.render(paintBleed, {
78
+ from: fromUrl,
79
+ to: toUrl,
80
+ progress: 0.5,
81
+ });
82
+ throw new Error("should have thrown");
83
+ } catch (err) {
84
+ expect(err).toBeInstanceOf(Error);
85
+ const message = (err as Error).message;
86
+ expect(message).toContain('"from"');
87
+ expect(message).toContain(fromUrl);
88
+ expect(message).toContain("preload");
89
+ }
90
+ });
91
+
92
+ it("preload() ignores DOM-source inputs (they don't need pre-loading)", async () => {
93
+ // Passing a mix of URLs and DOM sources to preload should resolve
94
+ // cleanly. DOM sources are filtered out before the async work.
95
+ const fromUrl = await blobUrl("#ff0000");
96
+ const toCanvas = makeSolid(0, 0, 255);
97
+ await expect(
98
+ runner.preload([fromUrl, toCanvas]),
99
+ ).resolves.toBeUndefined();
100
+ // And the subsequent render with both should work.
101
+ expect(() =>
102
+ runner.render(paintBleed, {
103
+ from: fromUrl,
104
+ to: toCanvas,
105
+ progress: 0.3,
106
+ }),
107
+ ).not.toThrow();
108
+ });
109
+
110
+ it("can render with mixed source types (URL from, canvas to)", async () => {
111
+ const fromUrl = await blobUrl("#ff0000");
112
+ const toCanvas = makeSolid(0, 0, 255);
113
+ await runner.preload([fromUrl]);
114
+ expect(() =>
115
+ runner.render(paintBleed, {
116
+ from: fromUrl,
117
+ to: toCanvas,
118
+ progress: 0.5,
119
+ }),
120
+ ).not.toThrow();
121
+ });
122
+
123
+ it("preload() deduplicates repeated URLs (no double-fetch)", async () => {
124
+ // Call preload twice with the same URL — should resolve fine, and
125
+ // the underlying TextureCache dedup means only one fetch happens.
126
+ const url = await blobUrl("#abcdef");
127
+ await runner.preload([url]);
128
+ await runner.preload([url]); // hit cache
129
+ expect(() =>
130
+ runner.render(paintBleed, {
131
+ from: url,
132
+ to: url,
133
+ progress: 0.5,
134
+ }),
135
+ ).not.toThrow();
136
+ });
137
+ });
@@ -1,4 +1,5 @@
1
1
  import { FramebufferPool, TextureCache } from "@vysmo/gl-core";
2
+ import type { TextureCacheOptions, TextureSource } from "@vysmo/gl-core";
2
3
  import type {
3
4
  RenderArgs,
4
5
  Transition,
@@ -60,6 +61,15 @@ export interface RunnerOptions {
60
61
  * `webglcontextrestored` event. After this, `render()` works again.
61
62
  */
62
63
  onContextRestored?: () => void;
64
+ /**
65
+ * Options forwarded to the internal `TextureCache`. Most callers can
66
+ * ignore this; pass `{ maxUrlEntries: N }` if you're driving the
67
+ * runner from a lazy-loading consumer (e.g. a slideshow with hundreds
68
+ * of slides) to keep GPU memory bounded — least-recently-used URL
69
+ * textures are evicted when the cache size exceeds N. DOM-source
70
+ * textures are not subject to LRU.
71
+ */
72
+ textureCache?: TextureCacheOptions;
63
73
  }
64
74
 
65
75
  /**
@@ -85,6 +95,7 @@ export class Runner {
85
95
  readonly gl: WebGL2RenderingContext;
86
96
  private canvas: HTMLCanvasElement | OffscreenCanvas;
87
97
  private textures: TextureCache;
98
+ private readonly textureCacheOptions: TextureCacheOptions | undefined;
88
99
  private programs = new WeakMap<Transition<UniformParams>, CompiledTransition>();
89
100
  private vao: WebGLVertexArrayObject;
90
101
  private defaultDisplacement: WebGLTexture;
@@ -106,7 +117,7 @@ export class Runner {
106
117
  this.contextLost = false;
107
118
  const vao = this.gl.createVertexArray();
108
119
  if (vao) this.vao = vao;
109
- this.textures = new TextureCache(this.gl);
120
+ this.textures = new TextureCache(this.gl, this.textureCacheOptions);
110
121
  this.defaultDisplacement = this.createDefaultDisplacement();
111
122
  this.defaultEnvironment = this.createDefaultEnvironment();
112
123
  this.defaultPrevious = this.createDefaultPrevious();
@@ -134,7 +145,8 @@ export class Runner {
134
145
  );
135
146
  }
136
147
  this.gl = gl;
137
- this.textures = new TextureCache(gl);
148
+ this.textureCacheOptions = options.textureCache;
149
+ this.textures = new TextureCache(gl, options.textureCache);
138
150
  this.fbPool = new FramebufferPool(gl);
139
151
 
140
152
  const vao = gl.createVertexArray();
@@ -214,6 +226,63 @@ export class Runner {
214
226
  * @throws Error if the runner is disposed or the WebGL context is lost.
215
227
  * @throws Error if shader compilation or program linking fails.
216
228
  */
229
+ /**
230
+ * Pre-load URL string sources so that subsequent synchronous
231
+ * `render()` calls can reference them without throwing. DOM-source
232
+ * inputs (`HTMLImageElement`, canvas, video, etc.) are ignored — they
233
+ * carry their own pixel data and don't need to be fetched.
234
+ *
235
+ * Typical use:
236
+ *
237
+ * const fromUrl = "/photo-a.jpg";
238
+ * const toUrl = "/photo-b.jpg";
239
+ * await runner.preload([fromUrl, toUrl]);
240
+ * animate({
241
+ * ...,
242
+ * onUpdate: (p) => runner.render(crossZoom, {
243
+ * from: fromUrl, to: toUrl, progress: p,
244
+ * }),
245
+ * });
246
+ *
247
+ * Resolves once every URL has been fetched, decoded, and uploaded.
248
+ * Calls for the same URL are deduplicated (concurrent and repeat
249
+ * calls share one in-flight load).
250
+ *
251
+ * @throws Error if any source fails to fetch / decode (rejected
252
+ * promise from the underlying `TextureCache.resolveAsync`).
253
+ */
254
+ async preload(sources: ReadonlyArray<TextureSource | string>): Promise<void> {
255
+ await Promise.all(
256
+ sources
257
+ .filter((s): s is string => typeof s === "string")
258
+ .map((url) => this.textures.resolveAsync(url)),
259
+ );
260
+ }
261
+
262
+ /**
263
+ * Internal: resolve a single render-args source to its GL texture.
264
+ * Strings go through the synchronous URL cache; if the URL hasn't
265
+ * been pre-loaded via `preload()`, throws with a clear pointer at
266
+ * the fix.
267
+ */
268
+ private resolveForRender(
269
+ source: TextureSource | string,
270
+ role: string,
271
+ ): WebGLTexture {
272
+ if (typeof source !== "string") {
273
+ return this.textures.resolve(source);
274
+ }
275
+ const cached = this.textures.getUrlTexture(source);
276
+ if (!cached) {
277
+ throw new Error(
278
+ `Runner.render(): "${role}" URL is not loaded: ${source}. ` +
279
+ `Call runner.preload(["${source}"]) before render() (URL inputs must be ` +
280
+ `fetched + decoded + uploaded before render(), which is synchronous).`,
281
+ );
282
+ }
283
+ return cached;
284
+ }
285
+
217
286
  render<P extends UniformParams>(
218
287
  transition: Transition<P>,
219
288
  args: RenderArgs<P>,
@@ -246,13 +315,13 @@ export class Runner {
246
315
  // gl.bindTexture() against whichever unit is currently active (to
247
316
  // upload pixels), so if we interleave resolves with activeTexture()
248
317
  // calls, each resolve clobbers the most recently bound unit.
249
- const fromTex = this.textures.resolve(args.from);
250
- const toTex = this.textures.resolve(args.to);
318
+ const fromTex = this.resolveForRender(args.from, "from");
319
+ const toTex = this.resolveForRender(args.to, "to");
251
320
  const displacementTex = args.displacement
252
- ? this.textures.resolve(args.displacement)
321
+ ? this.resolveForRender(args.displacement, "displacement")
253
322
  : this.defaultDisplacement;
254
323
  const environmentTex = args.environment
255
- ? this.textures.resolve(args.environment)
324
+ ? this.resolveForRender(args.environment, "environment")
256
325
  : this.defaultEnvironment;
257
326
 
258
327
  gl.activeTexture(gl.TEXTURE0);
package/src/types.ts CHANGED
@@ -62,8 +62,17 @@ export interface Transition<P extends UniformParams = UniformParams> {
62
62
  }
63
63
 
64
64
  export interface RenderArgs<P extends UniformParams> {
65
- from: TextureSource;
66
- to: TextureSource;
65
+ /**
66
+ * Source image. Accepts any `TextureSource` (`HTMLImageElement`,
67
+ * `HTMLCanvasElement`, `HTMLVideoElement`, `ImageBitmap`,
68
+ * `OffscreenCanvas`, raw `WebGLTexture`) **or** a URL string. URL
69
+ * inputs must be pre-loaded via `runner.preload([url])` before
70
+ * `render()` is called — `render()` itself is synchronous and will
71
+ * throw if asked to draw an un-preloaded URL.
72
+ */
73
+ from: TextureSource | string;
74
+ /** Target image. Same input types as `from`; see `from` for URL pre-loading rules. */
75
+ to: TextureSource | string;
67
76
  progress: number;
68
77
  params?: Partial<P>;
69
78
  /**
@@ -74,14 +83,18 @@ export interface RenderArgs<P extends UniformParams> {
74
83
  * negatively. If omitted, the runner binds a default 1×1 mid-gray
75
84
  * texture so displacement-using transitions degrade to no-op rather
76
85
  * than failing.
86
+ *
87
+ * Accepts URL strings on the same pre-load contract as `from` / `to`.
77
88
  */
78
- displacement?: TextureSource;
89
+ displacement?: TextureSource | string;
79
90
  /**
80
91
  * Optional environment-map texture. Transitions that read it via the
81
92
  * getEnvironment(uv) shader helper (e.g. liquid-chrome with reflection
82
93
  * enabled) use it to fake reflections off metallic / glass surfaces.
83
94
  * If omitted, the runner binds a default 1×1 mid-gray texture so
84
95
  * environment-using transitions degrade to a neutral no-op.
96
+ *
97
+ * Accepts URL strings on the same pre-load contract as `from` / `to`.
85
98
  */
86
- environment?: TextureSource;
99
+ environment?: TextureSource | string;
87
100
  }