@wave3d/core 0.8.0 → 0.9.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.
Files changed (71) hide show
  1. package/README.md +3 -1
  2. package/dist/config/model.d.ts +48 -2
  3. package/dist/config/model.js +8 -1
  4. package/dist/config/model.js.map +1 -1
  5. package/dist/index.d.ts +3 -2
  6. package/dist/renderer/WaveRenderer.d.ts +142 -10
  7. package/dist/renderer/WaveRenderer.js +209 -53
  8. package/dist/renderer/WaveRenderer.js.map +1 -1
  9. package/dist/renderer/WaveRendererGPU.js +291 -0
  10. package/dist/renderer/WaveRendererGPU.js.map +1 -0
  11. package/dist/renderer/gpu-loader.js +2 -0
  12. package/dist/renderer/index.d.ts +3 -2
  13. package/dist/renderer/interaction.d.ts +29 -0
  14. package/dist/renderer/interaction.js +77 -31
  15. package/dist/renderer/interaction.js.map +1 -1
  16. package/dist/renderer/interactionGates.js +59 -0
  17. package/dist/renderer/interactionGates.js.map +1 -0
  18. package/dist/renderer/particleField.d.ts +1 -59
  19. package/dist/renderer/particleField.js +49 -29
  20. package/dist/renderer/particleField.js.map +1 -1
  21. package/dist/renderer/particleFieldGPU.js +141 -0
  22. package/dist/renderer/particleFieldGPU.js.map +1 -0
  23. package/dist/renderer/tilt.d.ts +17 -0
  24. package/dist/renderer/tilt.js +124 -0
  25. package/dist/renderer/tilt.js.map +1 -0
  26. package/dist/renderer/tsl/color.js +129 -0
  27. package/dist/renderer/tsl/color.js.map +1 -0
  28. package/dist/renderer/tsl/noise.js +83 -0
  29. package/dist/renderer/tsl/noise.js.map +1 -0
  30. package/dist/renderer/tsl/packedArray.js +76 -0
  31. package/dist/renderer/tsl/packedArray.js.map +1 -0
  32. package/dist/renderer/tsl/particleMaterial.js +133 -0
  33. package/dist/renderer/tsl/particleMaterial.js.map +1 -0
  34. package/dist/renderer/tsl/particleUniforms.js +44 -0
  35. package/dist/renderer/tsl/particleUniforms.js.map +1 -0
  36. package/dist/renderer/tsl/pointerField.js +73 -0
  37. package/dist/renderer/tsl/pointerField.js.map +1 -0
  38. package/dist/renderer/tsl/post.js +63 -0
  39. package/dist/renderer/tsl/post.js.map +1 -0
  40. package/dist/renderer/tsl/postChain.js +56 -0
  41. package/dist/renderer/tsl/postChain.js.map +1 -0
  42. package/dist/renderer/tsl/postEffects.js +221 -0
  43. package/dist/renderer/tsl/postEffects.js.map +1 -0
  44. package/dist/renderer/tsl/types.js +28 -0
  45. package/dist/renderer/tsl/types.js.map +1 -0
  46. package/dist/renderer/tsl/uniforms.js +152 -0
  47. package/dist/renderer/tsl/uniforms.js.map +1 -0
  48. package/dist/renderer/tsl/waveMaterial.js +185 -0
  49. package/dist/renderer/tsl/waveMaterial.js.map +1 -0
  50. package/dist/renderer/tsl/waveShape.js +108 -0
  51. package/dist/renderer/tsl/waveShape.js.map +1 -0
  52. package/dist/shell/createWave.d.ts +29 -0
  53. package/dist/shell/createWave.js +39 -11
  54. package/dist/shell/createWave.js.map +1 -1
  55. package/dist/shell/probe.js +18 -1
  56. package/dist/shell/probe.js.map +1 -1
  57. package/dist/standalone/wave3d.standalone.js +1811 -1594
  58. package/dist/standalone/wave3d.standalone.webgpu.js +36647 -0
  59. package/dist/standalone.d.ts +10 -3
  60. package/dist/standalone.js +10 -3
  61. package/dist/standalone.js.map +1 -1
  62. package/dist/studio/StudioWaveRenderer.d.ts +4 -0
  63. package/dist/studio/StudioWaveRenderer.js +9 -0
  64. package/dist/studio/StudioWaveRenderer.js.map +1 -1
  65. package/dist/studio/StudioWaveRendererGPU.js +18 -0
  66. package/dist/studio/StudioWaveRendererGPU.js.map +1 -0
  67. package/dist/studio/index.d.ts +12 -2
  68. package/dist/studio/index.js +14 -1
  69. package/dist/studio/index.js.map +1 -0
  70. package/package.json +12 -3
  71. package/skills/wave3d/SKILL.md +29 -2
@@ -10,7 +10,7 @@ description: >
10
10
  metadata:
11
11
  type: core
12
12
  library: "@wave3d/core"
13
- library_version: "0.8.0"
13
+ library_version: "0.9.0"
14
14
  sources:
15
15
  - "wave3d/wave3d:README.md"
16
16
  - "wave3d/wave3d:packages/core/src/config/model.ts"
@@ -129,7 +129,7 @@ field — `agitate` churn, `push` ± repel/attract dome, `wake` drag-trough, `th
129
129
  `lighten`), **`press`** (`ripple` rings from a click/tap), and **`bindings`** that smoothly drive
130
130
  that wave's params from an input.
131
131
  Sources: `scroll`, `hover`, `pointerX` / `pointerY`, `pointerSpeed`, `press`, `scrollVelocity`,
132
- `appear`, or a developer-fed `custom:*` (via `handle.setInteractionInput(name, value)` /
132
+ `appear`, `tiltX` / `tiltY` (device tilt — see below), or a developer-fed `custom:*` (via `handle.setInteractionInput(name, value)` /
133
133
  `renderer.setInteractionInput`). Each binding rests at the authored value and moves toward `to` as
134
134
  its input rises 0→1 — `{ source: "hover", target: "displaceAmount", to: 12 }` grows the folds on
135
135
  hover. `helixPhase` / `helixTurns` / `helixRadius` are bindable too, so
@@ -149,6 +149,33 @@ you tune. Set `interaction: { touch: true }` on the scene to follow the finger w
149
149
  `scrollVelocity` and `appear` read container progress through the viewport, not pointer events, so
150
150
  they drive normally on mobile — scroll bindings are the way to stay reactive with `touch` off.
151
151
 
152
+ **Tilt is the input a phone has that a desktop doesn't.** `tiltX` / `tiltY` read the device's
153
+ orientation sensor, normalized 0..1 the way a ball would roll on the screen (`tiltX` → 1 as the
154
+ right edge drops, `tiltY` → 1 as the bottom edge drops) and resting at 0.5 in whatever pose the
155
+ reader was already holding — the first reading becomes the neutral centre, so a phone held at the
156
+ usual 50° doesn't peg every binding at one end. Binding either source is what arms the sensor; a
157
+ scene that mentions neither attaches no `deviceorientation` listener. `SceneConfig.interaction.tilt`
158
+ is optional tuning on top: `range` (degrees to the 0/1 ends, default 25), `smoothing` (default
159
+ 0.18), `invertX` / `invertY`, and `pointer: true` — which lets tilt drive the shared CURSOR, so a
160
+ scene authored entirely for `pointerX` / `pointerY` and the per-wave hover field comes alive on a
161
+ phone without a second set of bindings (a real finger always wins).
162
+
163
+ ```ts
164
+ interaction: { tilt: { range: 20 }, bindings: [{ source: "tiltX", target: "cameraZoom", to: 1.2 }] }
165
+ ```
166
+
167
+ **iOS gets no tilt, on purpose.** Safari gates the sensor behind a modal permission dialog, and
168
+ nothing in this library opens one — a tilt-bound scene on an iPhone reads 0.5 on both axes and looks
169
+ exactly like a scene with no tilt. Treat tilt as an enhancement some phones don't get, the way you
170
+ would a hover state; don't build a fallback for it and don't build a permission button for it.
171
+
172
+ If a page genuinely warrants asking — an interactive piece a reader came to play with, not a
173
+ background — `enableTilt()` on the renderer / handle / element is the explicit opt-in. Call it from
174
+ a tap handler, directly, without awaiting anything first or the gesture is spent. `tiltStatus()`
175
+ reports `"unsupported"` (no sensor), `"prompt"` (gated, inert unless you ask), `"denied"`,
176
+ `"listening"` or `"live"`. Everywhere but iOS tilt is live as soon as it is bound and `enableTilt()`
177
+ is a no-op that resolves true. `recenterTilt()` re-takes the neutral pose after a change of grip.
178
+
152
179
  ## Post effects (optional)
153
180
 
154
181
  Passes over the finished composite. Each is a plain **scene-level** `SceneConfig` field (a sibling of