@adobe/data-gpu 0.10.8 → 0.10.11

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.
Files changed (49) hide show
  1. package/dist/core/core-plugin.d.ts +1 -1
  2. package/dist/graphics/animation/animation-data-plugin.d.ts +4 -0
  3. package/dist/graphics/animation/animation-plugin.d.ts +6 -2
  4. package/dist/graphics/animation/animation-track/interpolate.d.ts +2 -1
  5. package/dist/graphics/animation/animation-track/interpolate.js +9 -3
  6. package/dist/graphics/animation/animation-track/interpolate.js.map +1 -1
  7. package/dist/graphics/animation/animation-track/interpolate.test.d.ts +1 -0
  8. package/dist/graphics/animation/animation-track/interpolate.test.js +23 -0
  9. package/dist/graphics/animation/animation-track/interpolate.test.js.map +1 -0
  10. package/dist/graphics/animation/animation-track/interpolator-registry.d.ts +8 -0
  11. package/dist/graphics/animation/animation-track/interpolator-registry.js +11 -0
  12. package/dist/graphics/animation/animation-track/interpolator-registry.js.map +1 -0
  13. package/dist/graphics/camera/camera-plugin.d.ts +1 -1
  14. package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +1 -1
  15. package/dist/graphics/camera/orbit/orbit-plugin.d.ts +1 -1
  16. package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +1 -1
  17. package/dist/graphics/graphics-plugin.d.ts +1 -1
  18. package/dist/graphics/picking/picking-plugin.d.ts +147 -24
  19. package/dist/graphics/rendering/bone-collider-plugin.d.ts +79 -21
  20. package/dist/graphics/rendering/display-transform-plugin.d.ts +1 -1
  21. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +47 -13
  22. package/dist/graphics/rendering/interpolation-plugin.d.ts +34 -15
  23. package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +77 -20
  24. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.d.ts +13 -7
  25. package/dist/graphics/rendering/model-collider-plugin.d.ts +60 -13
  26. package/dist/graphics/rendering/pbr-core-plugin.d.ts +3 -0
  27. package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.d.ts +48 -14
  28. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +24 -6
  29. package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +51 -8
  30. package/dist/graphics/scene/model/mesh-plugin.d.ts +50 -10
  31. package/dist/graphics/scene/model/model-loader-plugin.d.ts +41 -7
  32. package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +8 -2
  33. package/dist/graphics/scene/model/world-bounds-plugin.d.ts +41 -7
  34. package/dist/graphics/scene/node/node-data-plugin.d.ts +2 -1
  35. package/dist/graphics/scene/node/node-plugin.d.ts +2 -1
  36. package/dist/graphics/scene/node/transform-plugin.d.ts +2 -1
  37. package/dist/graphics/scene/scene-plugin.d.ts +31 -11
  38. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +1 -1
  39. package/dist/material/material-plugin.d.ts +6 -0
  40. package/dist/physics/joint/joint-plugin.d.ts +2 -0
  41. package/dist/physics/physics-clock-plugin.d.ts +1 -1
  42. package/dist/physics/physics-data-plugin.d.ts +24 -6
  43. package/dist/physics/solvers/jolt-solver-plugin.d.ts +27 -7
  44. package/dist/physics/solvers/rapier-solver-plugin.d.ts +27 -7
  45. package/package.json +2 -2
  46. package/src/graphics/animation/animation-track/interpolate.test.ts +27 -0
  47. package/src/graphics/animation/animation-track/interpolate.ts +9 -3
  48. package/src/graphics/animation/animation-track/interpolator-registry.ts +14 -0
  49. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,27 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+
3
+ import { describe, it, expect } from "vitest";
4
+ import { Quat } from "@adobe/data/math";
5
+ import type { Schema } from "@adobe/data/schema";
6
+ import { interpolate } from "./interpolate.js";
7
+
8
+ describe("interpolate", () => {
9
+ it("resolves a schema's named interpolator via the registry (Quat linear ⇒ slerp)", () => {
10
+ const a: Quat = [0, 0, 0, 1]; // identity
11
+ const b: Quat = [0, Math.SQRT1_2, 0, Math.SQRT1_2]; // 90° about Y
12
+ // Must equal slerp exactly — proving it dispatched to the registered
13
+ // "slerp" function, not the componentwise-lerp fallback (which would
14
+ // produce a different, non-normalized result).
15
+ expect(interpolate(Quat.schema, "linear", a, b, 0.5)).toEqual(Quat.slerp(a, b, 0.5));
16
+ });
17
+
18
+ it("falls back to componentwise lerp when no interpolator is named", () => {
19
+ const schema: Schema = { type: "array", items: { type: "number" } };
20
+ expect(interpolate(schema, "linear", [0, 10], [10, 20], 0.5)).toEqual([5, 15]);
21
+ });
22
+
23
+ it("throws on a named interpolator that isn't registered", () => {
24
+ const schema: Schema = { type: "number", interpolators: { linear: "nope" } };
25
+ expect(() => interpolate(schema, "linear", 0, 1, 0.5)).toThrow(/unknown interpolator "nope"/);
26
+ });
27
+ });
@@ -3,11 +3,13 @@
3
3
  import type { Schema } from "@adobe/data/schema";
4
4
  import type { InterpolationMode } from "../interpolation-mode/interpolation-mode.js";
5
5
  import { componentwiseLerp } from "./componentwise-lerp.js";
6
+ import { interpolatorRegistry } from "./interpolator-registry.js";
6
7
 
7
8
  /**
8
9
  * Dispatches to a schema-declared interpolator if present, otherwise falls
9
10
  * back to a sensible default: `step` returns `next`, `linear` walks the schema
10
- * and lerps numeric leaves. `cubicSpline` requires a schema override.
11
+ * and lerps numeric leaves. `cubicSpline` requires a schema override. A schema
12
+ * names its interpolator (pure JSON); the name is resolved via the registry.
11
13
  */
12
14
  export function interpolate(
13
15
  schema: Schema,
@@ -16,8 +18,12 @@ export function interpolate(
16
18
  next: any,
17
19
  t: number,
18
20
  ): any {
19
- const custom = schema.interpolators?.[mode];
20
- if (custom) return custom(prev, next, t);
21
+ const name = schema.interpolators?.[mode];
22
+ if (name !== undefined) {
23
+ const custom = interpolatorRegistry[name];
24
+ if (!custom) throw new Error(`interpolate: unknown interpolator "${name}" for mode "${mode}"`);
25
+ return custom(prev, next, t);
26
+ }
21
27
  if (mode === "step") return prev;
22
28
  if (mode === "linear") return componentwiseLerp(schema, prev, next, t);
23
29
  throw new Error(`interpolate: schema type "${schema.type}" has no "${mode}" interpolator`);
@@ -0,0 +1,14 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+
3
+ import { Quat } from "@adobe/data/math";
4
+
5
+ type Interpolator = (prev: any, next: any, t: number) => any;
6
+
7
+ /**
8
+ * Resolves the serializable interpolator NAMES a pure-JSON `Schema` may declare
9
+ * (e.g. `Quat.schema`'s `interpolators.linear = "slerp"`) to their functions.
10
+ * The schema names the interpolator; the animation system owns the behavior.
11
+ */
12
+ export const interpolatorRegistry: Readonly<Record<string, Interpolator>> = {
13
+ slerp: Quat.slerp,
14
+ };