@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 +34 -0
- package/dist/runner/runner.d.ts +44 -0
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +56 -6
- package/dist/runner/runner.js.map +1 -1
- package/dist/types.d.ts +17 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/runner/__tests__/url-inputs.test.ts +137 -0
- package/src/runner/runner.ts +75 -6
- package/src/types.ts +17 -4
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:
|
package/dist/runner/runner.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/runner/runner.js
CHANGED
|
@@ -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.
|
|
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.
|
|
167
|
-
const toTex = this.
|
|
216
|
+
const fromTex = this.resolveForRender(args.from, "from");
|
|
217
|
+
const toTex = this.resolveForRender(args.to, "to");
|
|
168
218
|
const displacementTex = args.displacement
|
|
169
|
-
? this.
|
|
219
|
+
? this.resolveForRender(args.displacement, "displacement")
|
|
170
220
|
: this.defaultDisplacement;
|
|
171
221
|
const environmentTex = args.environment
|
|
172
|
-
? this.
|
|
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
|
-
|
|
56
|
-
|
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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.
|
|
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
|
+
});
|
package/src/runner/runner.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
250
|
-
const toTex = this.
|
|
318
|
+
const fromTex = this.resolveForRender(args.from, "from");
|
|
319
|
+
const toTex = this.resolveForRender(args.to, "to");
|
|
251
320
|
const displacementTex = args.displacement
|
|
252
|
-
? this.
|
|
321
|
+
? this.resolveForRender(args.displacement, "displacement")
|
|
253
322
|
: this.defaultDisplacement;
|
|
254
323
|
const environmentTex = args.environment
|
|
255
|
-
? this.
|
|
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
|
-
|
|
66
|
-
|
|
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
|
}
|