avbd-babylon 0.4.0 → 0.4.2

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
@@ -78,6 +78,7 @@ JavaScript examples. Run `npm start`, then open the
78
78
  | Batched body edits, pose reads and queries | [Bulk-edit examples](#bulk-edits-and-gpu-dispatches), [measurement code](tests/native-edit-performance.js), [runner](scripts/check-native-performance.mjs) |
79
79
  | CPU compatibility versus WebGPU | [Settings and results](#backend-differences-and-benchmarks), [measurement code](tests/compatibility-performance.js), [runner](scripts/benchmark-backends.mjs) |
80
80
  | Sleeping and waking in large connected scenes | [Sleeping example](#queries-callbacks-and-sleeping), [connected-wall runner](scripts/benchmark-connected-sleep.mjs) |
81
+ | Sleeping stability while grabbing and settling | [28K ring check](scripts/check-sleep-stability.mjs), [jointed-drop timing and view check](scripts/check-jointed-settling.mjs), [saved jointed-drop results](test-results/jointed-settling.json) |
81
82
  | Ships, buoyancy and water | [Scene explanation](#ships-water-and-destruction), [scene builder](demo/naval/scene.js), [runner](scripts/benchmark-naval.mjs) |
82
83
  | Grid versus HPLOC++ collisions | [Collision guide](docs/HPLOC.md), [paired scene measurements](tests/performance.js), [tree refit runner](scripts/benchmark-hploc-refit.mjs) |
83
84
  | D20 particle collisions | [Capacity benchmark](#d20-particle-capacity), [runner](scripts/benchmark-particles.mjs), [reusable GPU particles](src/gpu/surfaceParticles.js), [collision shader](src/gpu/surfaceParticles.wgsl) |
@@ -110,6 +111,12 @@ disabled collision groups are excluded from the initial contact-capacity estimat
110
111
  The [startup check](scripts/check-demo-startup.mjs) initializes every demo in a
111
112
  paused worker with `--all` and records setup times separately from simulation
112
113
  performance. Shader caches, device checks and scene size affect those times.
114
+ The scene view shows loading messages during setup, even with its performance
115
+ panel collapsed, and stays visible until the first GPU frame completes. Worker
116
+ startup reports also list the time spent in each setup phase.
117
+ The web demo loads the selected demo and renderer on demand. Worker controls use
118
+ a small generated scene catalogue; scene construction and physics stay in the
119
+ worker. First use still includes GPU device setup and shader compilation.
113
120
 
114
121
  ## Install
115
122
 
@@ -121,7 +128,7 @@ npm install avbd-babylon @babylonjs/core
121
128
 
122
129
  For local development, run `npm install` and `npm run build` in this repository,
123
130
  then run `npm install /absolute/path/to/avbd` in your Babylon project. `npm pack`
124
- creates an installable `avbd-babylon-0.2.0.tgz` archive too.
131
+ creates an installable archive named for the current package version too.
125
132
 
126
133
  The package includes ESM, TypeScript declarations and a browser global build.
127
134
  Babylon 9 is an optional peer dependency; integration examples are checked with
@@ -217,8 +224,8 @@ portable 2D/3D APIs and a Babylon integration:
217
224
  step/sleep/bounce settings and skips repeated buffer bindings within a compute
218
225
  pass.
219
226
  - **Sleeping and live editing.** Per-body sleep permission, support checks and
220
- impact checks allow resting objects to sleep and wake again. Large jointless desktop
221
- 3D worlds retain conservative connected groups so impacts can wake a wall
227
+ impact checks allow resting objects to sleep and wake again. Large desktop
228
+ 3D worlds track connected groups so impacts can wake a wall
222
229
  without waking unrelated walls on the same floor. Velocities,
223
230
  impulses, teleports, filters and motor targets can change during simulation.
224
231
  Welds capture their rest rotation from live GPU poses, and released
@@ -2201,12 +2208,17 @@ fallingBox.body.wakeUp();
2201
2208
  console.log(await physics.readSleepStats());
2202
2209
  ```
2203
2210
 
2204
- Impulses, teleports, constraint edits, new bodies and removed supports wake the
2205
- world. Jointless desktop WebGPU worlds with at least 4,096 bodies automatically track conservative connected
2211
+ Impulses, teleports, body-property edits, new bodies and removed supports wake
2212
+ the world. Adding or removing constraints and updating grab anchors wake their
2213
+ connected bodies. Desktop WebGPU worlds with at least 4,096 bodies automatically track connected
2206
2214
  groups, so an impact wakes the touched group while unrelated piles stay asleep.
2207
- The static floor does not connect separate piles. Connections persist while
2208
- bodies sleep and reset on explicit world edits; a group can therefore include
2209
- objects that touched earlier. Smaller worlds and mobile compatibility paths use
2215
+ The static floor does not connect separate piles. Contact and joint connections
2216
+ let eligible members settle together. Awake groups rebuild their connections
2217
+ each step so separated debris can settle independently. Sleeping groups retain
2218
+ their support history. Creating, moving or releasing a grab keeps unrelated
2219
+ sleeping groups asleep. A connected wall can remain awake while any of its
2220
+ members are moving or losing support, even when most bricks look still.
2221
+ Smaller worlds and mobile compatibility paths use
2210
2222
  whole-world impact waking. Set `sleeping: { islands: true }` to opt into connected
2211
2223
  groups in a smaller 3D world, or `islands: false` to use whole-world waking. Under
2212
2224
  gravity, unsupported slow-moving bodies stay awake; supports extend upward
@@ -2217,6 +2229,13 @@ world makes bodies eligible by default; `allowSleep:false` excludes a body.
2217
2229
  Paper comparisons keep sleeping disabled. Portable 3D solvers accept these
2218
2230
  same world and initial-body options.
2219
2231
 
2232
+ For stacks assembled at rest, native 3D solvers accept
2233
+ `world.createSolver(device, { sleeping: { islands: true, startAsleep: true } })`.
2234
+ Initialization takes one physics step to validate contacts, then sleeps stationary
2235
+ groups connected to stationary solid support. Floating, moving and sleep-excluded
2236
+ groups stay awake. The interactive half-million walls use this option; benchmark
2237
+ comparisons with the paper disable sleeping.
2238
+
2220
2239
  Small jointless 3D worlds with up to 32 bodies also batch all movement iterations
2221
2240
  into one GPU workgroup. Body poses stay in shared memory; contacts remain in GPU
2222
2241
  storage. The equations, contact order, lane reductions and iteration count stay