shadertown 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.
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/generated/sources.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAC5E,oEAAoE;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,68OAA68O;IACv9O,OAAO,EAAE,i/OAAi/O;IAC1/O,UAAU,EAAE,+iPAA+iP;IAC3jP,QAAQ,EAAE,40OAA40O;IACt1O,YAAY,EAAE,yrOAAyrO;IACvsO,UAAU,EAAE,4lOAA4lO;IACxmO,OAAO,EAAE,2+OAA2+O;IACp/O,cAAc,EAAE,88NAA88N;IAC99N,cAAc,EAAE,s8PAAs8P;IACt9P,eAAe,EAAE,u8PAAu8P;IACx9P,WAAW,EAAE,kwPAAkwP;IAC/wP,QAAQ,EAAE,suNAAsuN;IAChvN,QAAQ,EAAE,mpOAAmpO;IAC7pO,MAAM,EAAE,27NAA27N;IACn8N,WAAW,EAAE,0qQAA0qQ;IACvrQ,SAAS,EAAE,g/NAAg/N;IAC3/N,QAAQ,EAAE,q7RAAq7R;IAC/7R,SAAS,EAAE,+uOAA+uO;CAClvO,CAAC"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/generated/sources.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAC5E,oEAAoE;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,68OAA68O;IACv9O,OAAO,EAAE,+rWAA+rW;IACxsW,OAAO,EAAE,i/OAAi/O;IAC1/O,UAAU,EAAE,+iPAA+iP;IAC3jP,QAAQ,EAAE,40OAA40O;IACt1O,SAAS,EAAE,miVAAmiV;IAC9iV,OAAO,EAAE,mwWAAmwW;IAC5wW,YAAY,EAAE,yrOAAyrO;IACvsO,MAAM,EAAE,smXAAsmX;IAC9mX,OAAO,EAAE,oqYAAoqY;IAC7qY,UAAU,EAAE,4lOAA4lO;IACxmO,OAAO,EAAE,2+OAA2+O;IACp/O,cAAc,EAAE,88NAA88N;IAC99N,MAAM,EAAE,y7XAAy7X;IACj8X,cAAc,EAAE,s8PAAs8P;IACt9P,eAAe,EAAE,u8PAAu8P;IACx9P,QAAQ,EAAE,65WAA65W;IACv6W,WAAW,EAAE,kwPAAkwP;IAC/wP,QAAQ,EAAE,suNAAsuN;IAChvN,QAAQ,EAAE,4iXAA4iX;IACtjX,QAAQ,EAAE,mpOAAmpO;IAC7pO,WAAW,EAAE,sjXAAsjX;IACnkX,MAAM,EAAE,27NAA27N;IACn8N,WAAW,EAAE,0qQAA0qQ;IACvrQ,OAAO,EAAE,umWAAumW;IAChnW,SAAS,EAAE,g/NAAg/N;IAC3/N,QAAQ,EAAE,q7RAAq7R;IAC/7R,SAAS,EAAE,+uOAA+uO;CAClvO,CAAC;AAEX,8EAA8E;AAC9E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,YAAY;IAC1B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,YAAY;IAC5B,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,YAAY;IAC7B,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,QAAQ;IACrB,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,QAAQ;IACjB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,YAAY;CACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
- export { shaderRegistry, shaderNames, getShader, isShaderName } from "./registry.js";
1
+ export { shaderRegistry, shaderNames, getShader, isShaderName, shaderKind, isSourceShader, defaultSourceOf, } from "./registry.js";
2
2
  export type { ShaderRegistry, ShaderName, ShaderParams, ControlName, } from "./registry.js";
3
3
  export { defineShader, defineShadertownConfig } from "./config.js";
4
4
  export type { ShaderConfig, ShadertownConfig } from "./config.js";
5
5
  export { defaultParams, resolveUniforms, parseColor, formatColor, encodeParams, decodeParams, } from "./params.js";
6
+ export type { ShaderSourceImage, ShaderSourceInput, ShaderSourceLayer, } from "./source.js";
6
7
  export { createShaderRenderer } from "./renderer.js";
7
8
  export type { ShaderRenderer, ShaderRendererOptions, RendererStatus } from "./renderer.js";
8
9
  export { getStage, isWebGpuSupported } from "./stage.js";
9
10
  export { diffParams, toConfigSource, toReactSource, toVanillaSource, toExampleSource, toReadme, toLicense, toWgslSource, toInstallCommand, } from "./export.js";
10
11
  export type { LicenceHolder } from "./export.js";
11
12
  export { shaderSources } from "./generated/sources.js";
12
- export type { ColorControl, ColorSlot, NumericControl, ParamSlot, PlayMode, QualityOptions, ResolvedUniforms, ShaderCost, ShaderDefinition, ShaderFamily, } from "./types.js";
13
+ export type { ColorControl, ColorSlot, NumericControl, ParamSlot, PlayMode, QualityOptions, ResolvedUniforms, ShaderCost, ShaderDefinition, ShaderFamily, ShaderKind, } from "./types.js";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACrF,YAAY,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,YAAY,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,YAAY,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { shaderRegistry, shaderNames, getShader, isShaderName } from "./registry.js";
1
+ export { shaderRegistry, shaderNames, getShader, isShaderName, shaderKind, isSourceShader, defaultSourceOf, } from "./registry.js";
2
2
  export { defineShader, defineShadertownConfig } from "./config.js";
3
3
  export { defaultParams, resolveUniforms, parseColor, formatColor, encodeParams, decodeParams, } from "./params.js";
4
4
  export { createShaderRenderer } from "./renderer.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQrF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAQrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/react.d.ts CHANGED
@@ -2,12 +2,19 @@ import { type CSSProperties, type ReactNode } from "react";
2
2
  import type { ShaderConfig } from "./config.js";
3
3
  import type { ShaderName, ShaderParams } from "./registry.js";
4
4
  import { type RendererStatus, type ShaderRenderer } from "./renderer.js";
5
+ import type { ShaderSourceInput } from "./source.js";
5
6
  import type { PlayMode, QualityOptions } from "./types.js";
6
7
  export interface ShaderCanvasProps<K extends ShaderName = ShaderName> {
7
8
  /** A preset from `defineShader`. Anything below overrides it. */
8
9
  preset?: ShaderConfig<K>;
9
10
  shader?: K;
10
11
  params?: ShaderParams<K>;
12
+ /**
13
+ * The layer a source shader reads: an image, a URL, a video, or
14
+ * `{ shader, params }` to stack it on another shadertown shader. Omit it and
15
+ * the shader falls back to the backdrop its registry entry names.
16
+ */
17
+ source?: ShaderSourceInput;
11
18
  quality?: QualityOptions;
12
19
  /**
13
20
  * When the shader is allowed to animate.
@@ -32,7 +39,7 @@ export interface ShaderCanvasProps<K extends ShaderName = ShaderName> {
32
39
  * `setParams` rather than by remounting, so dragging a slider never recompiles
33
40
  * a pipeline.
34
41
  */
35
- export declare function ShaderCanvas<K extends ShaderName>({ preset, shader, params, quality, play, className, style, fallback, onStatusChange, trackPointer, startTime, "aria-hidden": ariaHidden, }: ShaderCanvasProps<K>): import("react").JSX.Element;
42
+ export declare function ShaderCanvas<K extends ShaderName>({ preset, shader, params, source, quality, play, className, style, fallback, onStatusChange, trackPointer, startTime, "aria-hidden": ariaHidden, }: ShaderCanvasProps<K>): import("react").JSX.Element;
36
43
  /**
37
44
  * Imperative escape hatch: attach a renderer to a canvas you own.
38
45
  * Returns the live renderer so you can drive it from animation code.
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAClE,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,EACjD,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,SAAS,EACT,aAAa,EAAE,UAAiB,GACjC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BA2GtB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,EACpD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,cAAc,GAAG,IAAI,CAqBvB"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAClE,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA6BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,EACjD,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,cAAc,EACd,YAAoB,EACpB,SAAS,EACT,aAAa,EAAE,UAAiB,GACjC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAmHtB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,EACpD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,cAAc,GAAG,IAAI,CAqBvB"}
package/dist/react.js CHANGED
@@ -3,6 +3,21 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
4
4
  import { createShaderRenderer } from "./renderer.js";
5
5
  const useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
6
+ /**
7
+ * A stable identity for a source prop.
8
+ *
9
+ * An inline `{ shader: "aurora" }` is a new object on every render, so
10
+ * comparing by reference would rebuild the layer each time the parent paints.
11
+ */
12
+ function sourceKey(source) {
13
+ if (source === undefined)
14
+ return "";
15
+ if (typeof source === "string")
16
+ return source;
17
+ if ("shader" in source)
18
+ return JSON.stringify(source);
19
+ return "element";
20
+ }
6
21
  function usePrefersReducedMotion() {
7
22
  const [reduced, setReduced] = useState(false);
8
23
  useEffect(() => {
@@ -21,7 +36,7 @@ function usePrefersReducedMotion() {
21
36
  * `setParams` rather than by remounting, so dragging a slider never recompiles
22
37
  * a pipeline.
23
38
  */
24
- export function ShaderCanvas({ preset, shader, params, quality, play, className, style, fallback, onStatusChange, trackPointer = false, startTime, "aria-hidden": ariaHidden = true, }) {
39
+ export function ShaderCanvas({ preset, shader, params, source, quality, play, className, style, fallback, onStatusChange, trackPointer = false, startTime, "aria-hidden": ariaHidden = true, }) {
25
40
  const canvasRef = useRef(null);
26
41
  const rendererRef = useRef(null);
27
42
  const [status, setStatus] = useState("pending");
@@ -43,6 +58,7 @@ export function ShaderCanvas({ preset, shader, params, quality, play, className,
43
58
  const renderer = createShaderRenderer(canvas, {
44
59
  shader: resolvedShader,
45
60
  params: mergedParams,
61
+ source,
46
62
  paused: true,
47
63
  startTime,
48
64
  dpr: resolvedQuality?.dpr,
@@ -59,6 +75,12 @@ export function ShaderCanvas({ preset, shader, params, quality, play, className,
59
75
  useEffect(() => {
60
76
  rendererRef.current?.setParams(mergedParams);
61
77
  }, [mergedParams]);
78
+ // Swapping the layer does not restart the renderer, so changing the image
79
+ // behind a glass panel never costs a pipeline rebuild.
80
+ useEffect(() => {
81
+ rendererRef.current?.setSource(source);
82
+ // eslint-disable-next-line react-hooks/exhaustive-deps
83
+ }, [sourceKey(source)]);
62
84
  useEffect(() => {
63
85
  onStatusChange?.(status);
64
86
  }, [status, onStatusChange]);
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}