avbd-babylon 0.2.0 → 0.3.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/docs/RELEASE.md CHANGED
@@ -1,167 +1,176 @@
1
- # Release checks
2
-
3
- AVBD 0.2 provides GPU rigid-body physics in 2D and 3D, the Babylon aggregate API,
4
- portable scene builders and the browser demos. The package ships ESM, the `AVBD`
5
- browser global, declarations, documentation and license notices. It has no runtime
6
- dependencies; Babylon 9 is an optional peer for the integration API.
7
-
8
- ## Validate the package
9
-
10
- ```sh
11
- npm ci
12
- npm run build:all
13
- npm run test:complete
14
- npm run test:web
15
- npm run clean:results
16
- npm run clean:dist
17
- npm pack
18
- ```
19
-
20
- `test:complete` checks pinned sources, real GPU physics, the packed package,
21
- public TypeScript usage and executable README examples. `test:web` checks the
22
- playable scenes, screenshots, controls and reports. A Chromium browser with
23
- WebGPU is required for GPU tests; unsupported hardware fails explicitly. GPU
24
- workloads run sequentially. Type and packaging checks do not need a GPU.
25
-
26
- Run `npm run test:mobile-contacts` for the 3D floor-contact portability checks,
27
- including eight/nine storage-buffer limits and both renderers in a mobile layout.
28
- The layout checks use the test computer's GPU. Test the hosted demo on actual
29
- phones as well; its **GPU contact check** sidebar can save a diagnostic report
30
- with floor-contact results, browser details and device limits. Failed devices
31
- test alternatives for contact data/calculations, work sharing and collision search.
32
- A fallback is used only after its known-overlap and falling-shape checks pass.
33
- GPUs that pass the normal path keep the batched execution and automatic scene
34
- selection. The diagnostic report compares the contact inputs, stabilization
35
- setting and calculated forces on the GPU.
36
-
37
- For an authorized connected Android phone, start the local demo, unlock the phone
38
- and open a canonical scene in its browser. Forward the browser debugging socket
39
- and reverse the demo port with ADB:
40
-
41
- ```sh
42
- adb reverse tcp:8080 tcp:8080
43
- adb forward tcp:9223 localabstract:chrome_devtools_remote
44
- node scripts/check-connected-contacts.mjs
45
- ```
46
-
47
- This checks physical-device floor contacts, 2D/3D package features and both 3D
48
- collision searches. It uses only the existing local demo tab and saves
49
- `test-results/connected-phone-contacts.json`. Mobile viewport tests and physical
50
- phone tests have separate reports.
51
-
52
- To compare PC performance with a saved package build, run
53
- `node scripts/check-contact-performance.mjs --baseline=/path/to/avbd.js`.
54
- It runs 10K and 100K native 3D bodies with five iterations, three alternating
55
- repeats and no rendering or sleeping. It checks identical dispatch sequences,
56
- matching selected physics states, GPU times and CPU submission times.
57
-
58
- Run `npm run benchmark:native` to refresh the three-repeat 2D/3D measurements
59
- for bulk movement/spin, property edits, grouped queries, selected reads and
60
- sleeping. The browser performance page uses the same package APIs as the demos.
61
- Measured edit records and query hits must match before results are accepted.
62
- API timings exclude solving and drawing; scene benchmarks report those costs
63
- separately.
64
-
65
- Run `npm run test:renderers` to check Babylon drawing for every canonical
66
- scene and the slingshot. Refresh the saved renderer comparison with
67
- `npm run benchmark:renderers -- --all`, with other GPU workloads closed.
68
- This compares direct WebGPU and Babylon on identical physics states and
69
- reports drawing, GPU copies and CPU work separately. Keep the generated
70
- renderer report, measurements and linked screenshots when hosting the demos.
71
-
72
- Release builds omit source maps. Use `--sourcemap` for local debugging; maps
73
- are excluded from the npm package. Website bundles import the Babylon
74
- components used by the demos, including their shader and rendering
75
- registrations. All demo routes and effects remain available.
76
-
77
- Run cleanup after validation. `clean:results` keeps reports, screenshots linked
78
- from reports or the README, measurement inputs and current validation summaries. `clean:dist`
79
- keeps package outputs and assets referenced by every browser page, including
80
- the GPU test page; it removes generated test wrappers and local debug maps.
81
- Both commands check their target paths and operate within their output folders.
82
- Preview either cleanup with `node scripts/clean-results.mjs` or
83
- `node scripts/clean-dist.mjs`.
84
-
85
- The package check installs the tarball in a temporary project and imports it
86
- without Babylon or a DOM. It verifies the production file list, both builds,
87
- optional-peer behavior, strict portable TypeScript usage and upstream notices.
88
-
89
- After publishing, run `npm run test:published -- 0.2.0` to verify the registry
90
- release. This installs the exact version in a fresh temporary project, verifies
91
- its registry integrity, imports ESM/native and browser-global exports, checks
92
- TypeScript usage, and runs the GPU package feature tests with Babylon installed
93
- explicitly for those integration checks. It uses the downloaded package rather
94
- than a local build and saves `test-results/published-package.json`.
95
- `avbd-babylon/native` provides portable imports without Babylon type dependencies.
96
- Packed files exclude the website,
97
- benchmark outputs, test fixtures, development tools and dependency directories.
98
- The explicit `package.json` file list and `.npmignore` keep those files out of
99
- the npm tarball. They remain in the repository so the complete multi-page demo
100
- and saved reports can be hosted separately.
101
-
102
- For browser hosting, serve the complete website output and its pages/assets,
103
- not only `index.html`. `tests/performance.html` is a separate page. Generated
104
- reports live under `test-results/`; include them deliberately if publishing
105
- premade results. Those saved results identify the RTX 4070 Laptop GPU. Live
106
- benchmarks measure the visitor's machine. The paper's desktop RTX 4090 figures
107
- are separate comparisons with different hardware and reconstructed workloads.
108
-
109
- The repository's `netlify.toml` runs `npm run build:all` and publishes the root,
110
- so the demo, benchmark pages, assets and reports stay available. `npm run build`
111
- builds the npm library only; use `npm run build:all` or `npm run build:web` before
112
- a manual website upload. Push the Netlify configuration and source changes,
113
- then redeploy. Clearing browser data cannot update an older deployed bundle.
114
-
115
- ## Publish 0.2.0
116
-
117
- Push the sources, documentation and `test-results/` screenshots to the public
118
- [repository](https://github.com/joshbrew/babylon-avbd) before publishing npm.
119
- The README uses relative paths for images and result files, so they resolve in
120
- the repository and local editors. Those assets stay outside the npm tarball.
121
- The package's `prepack` script builds both ESM and
122
- the browser global automatically.
123
-
124
- ```sh
125
- npm login
126
- npm publish --access public
127
- ```
128
-
129
- In Windows PowerShell, use `npm.cmd login` and `npm.cmd publish --access public`
130
- if the PowerShell npm launcher is unavailable.
131
-
132
- The npm account must be allowed to publish `avbd-babylon`. Successful local
133
- package checks do not log in or publish a release.
134
-
135
- ## API scope
136
-
137
- Both dimensions support boxes, rounded primitives, convex hulls, friction,
138
- bounce, masks, sensors, queries, body commands and constraints. 3D has Babylon
139
- aggregates, sleeping, hinge angle stops, ropes, ragdolls and fabric helpers.
140
- 2D has sleeping, hinge angle stops, portable builders, disposable joints/springs/motors and Babylon scene
141
- attachment for timing and cleanup. Attachment does not create rendering meshes.
142
- See the [feature table](../README.md#feature-coverage) for exact coverage.
143
-
144
- These remain useful follow-up work rather than supported 0.2 features:
145
-
146
- - **Concave mesh collisions:** custom hulls fill cavities. Terrain and hollow
147
- objects need suitable convex pieces.
148
- - **Continuous collision detection:** contacts are discrete. Use smaller
149
- timesteps for fast objects; sphere/circle casts are queries, not automatic CCD.
150
- - **Full Babylon Physics V2 integration:** use AVBD aggregates, not
151
- `scene.enablePhysics()` with a Havok plugin.
152
-
153
- ## Ownership and failure handling
154
-
155
- Dispose aggregate/constraint handles when removing them. Disposing a Babylon
156
- scene releases its attached world; portable solvers use `destroy()`. Caller-owned
157
- devices remain caller-owned. GPU device loss stops the Babylon loop and reports
158
- the reason; resume with a new device and world.
159
-
160
- Incomplete collision storage or conflicting solve groups hold physics poses
161
- and joint forces. Inspect `readCounters()` and use `adapt()` to recover capacity.
162
- Such a held step is a reported failure, not a successful simulation step. Zero
163
- overflow and zero conflicts are required in release benchmark results.
164
-
165
- The MIT package license and upstream notices ship with the tarball. Attribution
166
- includes Steven Bobyn, Chris Giles and Erin Catto; pinned upstream files remain
167
- unchanged.
1
+ # Release checks
2
+
3
+ AVBD 0.2 provides GPU rigid-body physics in 2D and 3D, the Babylon aggregate API,
4
+ portable scene builders and the browser demos. The package ships ESM, the `AVBD`
5
+ browser global, declarations, documentation and license notices. It has no runtime
6
+ dependencies; Babylon 9 is an optional peer for the integration API.
7
+
8
+ Native 2D and 3D worlds select WebGPU or CPU at initialization and share
9
+ the scene and body APIs. The Babylon aggregate API uses WebGPU; native CPU
10
+ worlds can use Babylon drawing with synchronized poses. The experimental
11
+ WebGL2 implementation remains in the repository demos and benchmarks; it is
12
+ excluded from package exports, declarations and both production bundles.
13
+ Build and package checks enforce that separation. Its measured performance
14
+ was too poor for production; the README preserves the comparison.
15
+
16
+ ## Validate the package
17
+
18
+ ```sh
19
+ npm ci
20
+ npm run build:all
21
+ npm run test:complete
22
+ npm run test:web
23
+ npm run test:compatibility
24
+ npm run clean:results
25
+ npm run clean:dist
26
+ npm pack
27
+ ```
28
+
29
+ `test:complete` checks pinned sources, real GPU physics, the packed package,
30
+ public TypeScript usage and executable README examples. `test:web` checks the
31
+ playable scenes, screenshots, controls and reports. A Chromium browser with
32
+ WebGPU is required for GPU tests; unsupported hardware fails explicitly. GPU
33
+ workloads run sequentially. Type and packaging checks do not need a GPU.
34
+
35
+ Run `npm run test:mobile-contacts` for the 3D floor-contact portability checks,
36
+ including eight/nine storage-buffer limits and both renderers in a mobile layout.
37
+ The layout checks use the test computer's GPU. Test the hosted demo on actual
38
+ phones as well; its **GPU contact check** sidebar can save a diagnostic report
39
+ with floor-contact results, browser details and device limits. Failed devices
40
+ test alternatives for contact data/calculations, work sharing and collision search.
41
+ A fallback is used only after its known-overlap and falling-shape checks pass.
42
+ GPUs that pass the normal path keep the batched execution and automatic scene
43
+ selection. The diagnostic report compares the contact inputs, stabilization
44
+ setting and calculated forces on the GPU.
45
+
46
+ For an authorized connected Android phone, start the local demo, unlock the phone
47
+ and open a canonical scene in its browser. Forward the browser debugging socket
48
+ and reverse the demo port with ADB:
49
+
50
+ ```sh
51
+ adb reverse tcp:8080 tcp:8080
52
+ adb forward tcp:9223 localabstract:chrome_devtools_remote
53
+ node scripts/check-connected-contacts.mjs
54
+ ```
55
+
56
+ This checks physical-device floor contacts, 2D/3D package features and both 3D
57
+ collision searches. It uses only the existing local demo tab and saves
58
+ `test-results/connected-phone-contacts.json`. Mobile viewport tests and physical
59
+ phone tests have separate reports.
60
+
61
+ To compare PC performance with a saved package build, run
62
+ `node scripts/check-contact-performance.mjs --baseline=/path/to/avbd.js`.
63
+ It runs 10K and 100K native 3D bodies with five iterations, three alternating
64
+ repeats and no rendering or sleeping. It checks identical dispatch sequences,
65
+ matching selected physics states, GPU times and CPU submission times.
66
+
67
+ Run `npm run benchmark:native` to refresh the three-repeat 2D/3D measurements
68
+ for bulk movement/spin, property edits, grouped queries, selected reads and
69
+ sleeping. The browser performance page uses the same package APIs as the demos.
70
+ Measured edit records and query hits must match before results are accepted.
71
+ API timings exclude solving and drawing; scene benchmarks report those costs
72
+ separately.
73
+
74
+ Run `npm run test:renderers` to check Babylon drawing for every canonical
75
+ scene and the slingshot. Refresh the saved renderer comparison with
76
+ `npm run benchmark:renderers -- --all`, with other GPU workloads closed.
77
+ This compares direct WebGPU and Babylon on identical physics states and
78
+ reports drawing, GPU copies and CPU work separately. Keep the generated
79
+ renderer report, measurements and linked screenshots when hosting the demos.
80
+
81
+ Release builds omit source maps. Use `--sourcemap` for local debugging; maps
82
+ are excluded from the npm package. Website bundles import the Babylon
83
+ components used by the demos, including their shader and rendering
84
+ registrations. All demo routes and effects remain available.
85
+
86
+ Run cleanup after validation. `clean:results` keeps reports, screenshots linked
87
+ from reports or the README, measurement inputs and current validation summaries. `clean:dist`
88
+ keeps package outputs and assets referenced by every browser page, including
89
+ the GPU test page; it removes generated test wrappers and local debug maps.
90
+ Both commands check their target paths and operate within their output folders.
91
+ Preview either cleanup with `node scripts/clean-results.mjs` or
92
+ `node scripts/clean-dist.mjs`.
93
+
94
+ The package check installs the tarball in a temporary project and imports it
95
+ without Babylon or a DOM. It verifies the production file list, both builds,
96
+ optional-peer behavior, strict portable TypeScript usage and upstream notices.
97
+
98
+ After publishing, run `npm run test:published -- 0.2.0` to verify the registry
99
+ release. This installs the exact version in a fresh temporary project, verifies
100
+ its registry integrity, imports ESM/native and browser-global exports, checks
101
+ TypeScript usage, and runs the GPU package feature tests with Babylon installed
102
+ explicitly for those integration checks. It uses the downloaded package rather
103
+ than a local build and saves `test-results/published-package.json`.
104
+ `avbd-babylon/native` provides portable imports without Babylon type dependencies.
105
+ Packed files exclude the website,
106
+ benchmark outputs, test fixtures, development tools and dependency directories.
107
+ The explicit `package.json` file list and `.npmignore` keep those files out of
108
+ the npm tarball. They remain in the repository so the complete multi-page demo
109
+ and saved reports can be hosted separately.
110
+
111
+ For browser hosting, serve the complete website output and its pages/assets,
112
+ not only `index.html`. `tests/performance.html` is a separate page. Generated
113
+ reports live under `test-results/`; include them deliberately if publishing
114
+ premade results. Those saved results identify the RTX 4070 Laptop GPU. Live
115
+ benchmarks measure the visitor's machine. The paper's desktop RTX 4090 figures
116
+ are separate comparisons with different hardware and reconstructed workloads.
117
+
118
+ The repository's `netlify.toml` runs `npm run build:all` and publishes the root,
119
+ so the demo, benchmark pages, assets and reports stay available. `npm run build`
120
+ builds the npm library only; use `npm run build:all` or `npm run build:web` before
121
+ a manual website upload. Push the Netlify configuration and source changes,
122
+ then redeploy. Clearing browser data cannot update an older deployed bundle.
123
+
124
+ ## Publish 0.2.0
125
+
126
+ Push the sources, documentation and `test-results/` screenshots to the public
127
+ [repository](https://github.com/joshbrew/babylon-avbd) before publishing npm.
128
+ The README uses relative paths for images and result files, so they resolve in
129
+ the repository and local editors. Those assets stay outside the npm tarball.
130
+ The package's `prepack` script builds both ESM and
131
+ the browser global automatically.
132
+
133
+ ```sh
134
+ npm login
135
+ npm publish --access public
136
+ ```
137
+
138
+ In Windows PowerShell, use `npm.cmd login` and `npm.cmd publish --access public`
139
+ if the PowerShell npm launcher is unavailable.
140
+
141
+ The npm account must be allowed to publish `avbd-babylon`. Successful local
142
+ package checks do not log in or publish a release.
143
+
144
+ ## API scope
145
+
146
+ Both dimensions support boxes, rounded primitives, convex hulls, friction,
147
+ bounce, masks, sensors, queries, body commands and constraints. 3D has Babylon
148
+ aggregates, sleeping, hinge angle stops, ropes, ragdolls and fabric helpers.
149
+ 2D has sleeping, hinge angle stops, portable builders, disposable joints/springs/motors and Babylon scene
150
+ attachment for timing and cleanup. Attachment does not create rendering meshes.
151
+ See the [feature table](../README.md#feature-coverage) for exact coverage.
152
+
153
+ These remain useful follow-up work rather than supported 0.2 features:
154
+
155
+ - **Concave mesh collisions:** custom hulls fill cavities. Terrain and hollow
156
+ objects need suitable convex pieces.
157
+ - **Continuous collision detection:** contacts are discrete. Use smaller
158
+ timesteps for fast objects; sphere/circle casts are queries, not automatic CCD.
159
+ - **Full Babylon Physics V2 integration:** use AVBD aggregates, not
160
+ `scene.enablePhysics()` with a Havok plugin.
161
+
162
+ ## Ownership and failure handling
163
+
164
+ Dispose aggregate/constraint handles when removing them. Disposing a Babylon
165
+ scene releases its attached world; portable solvers use `destroy()`. Caller-owned
166
+ devices remain caller-owned. GPU device loss stops the Babylon loop and reports
167
+ the reason; resume with a new device and world.
168
+
169
+ Incomplete collision storage or conflicting solve groups hold physics poses
170
+ and joint forces. Inspect `readCounters()` and use `adapt()` to recover capacity.
171
+ Such a held step is a reported failure, not a successful simulation step. Zero
172
+ overflow and zero conflicts are required in release benchmark results.
173
+
174
+ The MIT package license and upstream notices ship with the tarball. Attribution
175
+ includes Steven Bobyn, Chris Giles and Erin Catto; pinned upstream files remain
176
+ unchanged.
package/package.json CHANGED
@@ -1,114 +1,124 @@
1
- {
2
- "name": "avbd-babylon",
3
- "version": "0.2.0",
4
- "description": "GPU AVBD rigid-body physics with a Babylon.js aggregate API",
5
- "main": "./dist/avbd.js",
6
- "types": "./dist/avbd.d.ts",
7
- "type": "module",
8
- "scripts": {
9
- "start": "node scripts/build-library.mjs && node scripts/build.mjs --serve",
10
- "build": "node scripts/build-library.mjs",
11
- "build:cdn": "node scripts/build-library.mjs --cdn",
12
- "build:web": "node scripts/build.mjs",
13
- "build:all": "node scripts/build-library.mjs && node scripts/build-library.mjs --cdn && node scripts/build.mjs",
14
- "prepack": "node scripts/build-library.mjs && node scripts/build-library.mjs --cdn",
15
- "test": "node scripts/test-gpu.mjs",
16
- "test:reference": "node --experimental-transform-types --test reference/three-avbd/tests/*.test.ts",
17
- "test:gpu": "node scripts/test-gpu.mjs",
18
- "test:all": "node scripts/test-all.mjs",
19
- "test:complete": "node scripts/test-all.mjs --strict",
20
- "test:scenes": "node scripts/build.mjs && node scripts/check-scenes.mjs",
21
- "test:rook": "node scripts/build.mjs && node scripts/check-rook.mjs",
22
- "test:screenshots": "node scripts/screenshot-contact-sheet.mjs",
23
- "test:web": "node scripts/test-web.mjs",
24
- "test:benchmarks": "node scripts/build.mjs && node scripts/check-benchmark-scenes.mjs",
25
- "test:showcase": "node scripts/build.mjs && node scripts/check-showcase-motion.mjs",
26
- "test:cloth": "node scripts/build.mjs && node scripts/check-ragdoll-net.mjs && node scripts/check-tearable-cloth.mjs && node scripts/check-cloth-fragments.mjs",
27
- "test:controls": "node scripts/build.mjs && node scripts/check-controls.mjs",
28
- "test:castle": "node scripts/build.mjs && node scripts/check-castle.mjs && node scripts/check-castle-layout.mjs",
29
- "test:features": "node scripts/build.mjs && node scripts/check-feature-scenes.mjs",
30
- "test:renderers": "node scripts/build.mjs && node scripts/check-babylon-renderer.mjs --all && node scripts/benchmark-renderers.mjs --quick",
31
- "test:fracture": "node scripts/build.mjs && node scripts/check-voronoi-fracture.mjs",
32
- "clean:results": "node scripts/clean-results.mjs --apply",
33
- "clean:dist": "node scripts/clean-dist.mjs --apply",
34
- "test:package": "node scripts/check-package.mjs",
35
- "test:published": "node scripts/check-published.mjs",
36
- "test:mobile-contacts": "node scripts/build.mjs && node scripts/check-contact-portability.mjs && node scripts/check-contact-compatibility-features.mjs",
37
- "test:types": "tsc --noEmit --strict --skipLibCheck --module nodenext --target es2022 tests/package-api-types.ts",
38
- "benchmark:native": "node scripts/benchmark-package.mjs",
39
- "benchmark:sleeping": "node scripts/benchmark-package.mjs",
40
- "benchmark:native-edits": "node scripts/check-native-performance.mjs",
41
- "benchmark:renderers": "node scripts/build.mjs && node scripts/benchmark-renderers.mjs",
42
- "test:connected-phone": "node scripts/check-connected-contacts.mjs"
43
- },
44
- "license": "MIT",
45
- "repository": {
46
- "type": "git",
47
- "url": "git+https://github.com/joshbrew/babylon-avbd.git"
48
- },
49
- "homepage": "https://github.com/joshbrew/babylon-avbd#readme",
50
- "bugs": {
51
- "url": "https://github.com/joshbrew/babylon-avbd/issues"
52
- },
53
- "peerDependencies": {
54
- "@babylonjs/core": "^9.13.0"
55
- },
56
- "peerDependenciesMeta": {
57
- "@babylonjs/core": {
58
- "optional": true
59
- }
60
- },
61
- "keywords": [
62
- "avbd",
63
- "webgpu",
64
- "physics",
65
- "babylonjs"
66
- ],
67
- "devDependencies": {
68
- "esbuild": "^0.28.2",
69
- "prettier": "^3.9.9",
70
- "tinybuild": "^1.0.6",
71
- "@babylonjs/core": "^9.13.0",
72
- "typescript": "^7.0.2"
73
- },
74
- "module": "./dist/avbd.js",
75
- "exports": {
76
- ".": {
77
- "types": "./dist/avbd.d.ts",
78
- "import": "./dist/avbd.js",
79
- "default": "./dist/avbd.js"
80
- },
81
- "./native": {
82
- "types": "./dist/native.d.ts",
83
- "import": "./dist/native.js",
84
- "default": "./dist/native.js"
85
- },
86
- "./global": {
87
- "types": "./dist/avbd.global.d.ts",
88
- "default": "./dist/avbd.global.js"
89
- },
90
- "./package.json": "./package.json"
91
- },
92
- "files": [
93
- "dist/avbd.js",
94
- "dist/avbd.global.js",
95
- "dist/avbd.global.d.ts",
96
- "dist/avbd.d.ts",
97
- "dist/babylonAvbd.d.ts",
98
- "dist/nativeScenes.d.ts",
99
- "dist/native.js",
100
- "dist/native.d.ts",
101
- "dist/gpuDevice.d.ts",
102
- "dist/NOTICE",
103
- "LICENSE",
104
- "README.md",
105
- "docs/README.md",
106
- "docs/BABYLON_API.md",
107
- "docs/HPLOC.md",
108
- "docs/RELEASE.md",
109
- "tests/README.md"
110
- ],
111
- "sideEffects": false,
112
- "unpkg": "./dist/avbd.global.js",
113
- "jsdelivr": "./dist/avbd.global.js"
114
- }
1
+ {
2
+ "name": "avbd-babylon",
3
+ "version": "0.3.0",
4
+ "description": "GPU AVBD rigid-body physics with a Babylon.js aggregate API",
5
+ "main": "./dist/avbd.js",
6
+ "types": "./dist/avbd.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "start": "node scripts/build-library.mjs && node scripts/build.mjs --serve",
10
+ "build": "node scripts/build-library.mjs",
11
+ "build:cdn": "node scripts/build-library.mjs --cdn",
12
+ "build:web": "node scripts/build.mjs",
13
+ "build:all": "node scripts/build-library.mjs && node scripts/build-library.mjs --cdn && node scripts/build.mjs",
14
+ "prepack": "node scripts/build-library.mjs && node scripts/build-library.mjs --cdn",
15
+ "test": "node scripts/test-gpu.mjs",
16
+ "test:reference": "node --experimental-transform-types --test reference/three-avbd/tests/*.test.ts",
17
+ "test:gpu": "node scripts/test-gpu.mjs",
18
+ "test:all": "node scripts/test-all.mjs",
19
+ "test:complete": "node scripts/test-all.mjs --strict",
20
+ "test:scenes": "node scripts/build.mjs && node scripts/check-scenes.mjs",
21
+ "test:rook": "node scripts/build.mjs && node scripts/check-rook.mjs",
22
+ "test:screenshots": "node scripts/screenshot-contact-sheet.mjs",
23
+ "test:web": "node scripts/test-web.mjs",
24
+ "test:benchmarks": "node scripts/build.mjs && node scripts/check-benchmark-scenes.mjs",
25
+ "test:showcase": "node scripts/build.mjs && node scripts/check-showcase-motion.mjs",
26
+ "test:cloth": "node scripts/build.mjs && node scripts/check-ragdoll-net.mjs && node scripts/check-tearable-cloth.mjs && node scripts/check-cloth-fragments.mjs",
27
+ "test:controls": "node scripts/build.mjs && node scripts/check-controls.mjs",
28
+ "test:castle": "node scripts/build.mjs && node scripts/check-castle.mjs && node scripts/check-castle-layout.mjs",
29
+ "test:features": "node scripts/build.mjs && node scripts/check-feature-scenes.mjs",
30
+ "test:renderers": "node scripts/build.mjs && node scripts/check-babylon-renderer.mjs --all && node scripts/benchmark-renderers.mjs --quick",
31
+ "test:fracture": "node scripts/build.mjs && node scripts/check-voronoi-fracture.mjs",
32
+ "clean:results": "node scripts/clean-results.mjs --apply",
33
+ "clean:dist": "node scripts/clean-dist.mjs --apply",
34
+ "test:package": "node scripts/check-package.mjs",
35
+ "test:published": "node scripts/check-published.mjs",
36
+ "test:mobile-contacts": "node scripts/build.mjs && node scripts/check-contact-portability.mjs && node scripts/check-contact-compatibility-features.mjs",
37
+ "test:types": "tsc --noEmit --strict --skipLibCheck --module nodenext --target es2022 tests/package-api-types.ts",
38
+ "test:cpu": "node scripts/build.mjs && node scripts/check-cpu-demos.mjs && node scripts/check-cpu-features.mjs && node scripts/check-cpu-slingshot.mjs",
39
+ "test:webgl-collisions": "node scripts/check-webgl-broadphase.mjs && node --experimental-transform-types scripts/check-webgl-contacts.mjs",
40
+ "test:webgl": "npm run test:webgl-collisions && node scripts/check-webgl-coloring.mjs && node --experimental-transform-types scripts/check-webgl-solve.mjs && node --experimental-transform-types scripts/check-webgl-world.mjs && node --experimental-transform-types scripts/check-webgl-edits.mjs && node --experimental-transform-types scripts/check-webgl-bounce.mjs && node --experimental-transform-types scripts/check-webgl-sleeping.mjs && node scripts/check-webgl-scene-behavior.mjs && node scripts/check-backend-contract.mjs --webgl2",
41
+ "test:compatibility": "npm run build:all && node scripts/check-backend-contract.mjs --package && npm run test:cpu && npm run test:webgl && npm run test:webgl-scenes && npm run test:compatibility-performance",
42
+ "test:pipelines": "node scripts/check-backend-contract.mjs",
43
+ "benchmark:backends": "node scripts/build.mjs && node scripts/benchmark-backends.mjs",
44
+ "benchmark:native": "node scripts/benchmark-package.mjs",
45
+ "benchmark:sleeping": "node scripts/benchmark-package.mjs",
46
+ "benchmark:native-edits": "node scripts/check-native-performance.mjs",
47
+ "benchmark:renderers": "node scripts/build.mjs && node scripts/benchmark-renderers.mjs",
48
+ "test:connected-phone": "node scripts/check-connected-contacts.mjs",
49
+ "test:webgl-scenes": "node scripts/build.mjs && node scripts/check-webgl-demos.mjs",
50
+ "test:compatibility-performance": "node scripts/build.mjs && node scripts/check-compatibility-performance.mjs"
51
+ },
52
+ "license": "MIT",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "git+https://github.com/joshbrew/babylon-avbd.git"
56
+ },
57
+ "homepage": "https://github.com/joshbrew/babylon-avbd#readme",
58
+ "bugs": {
59
+ "url": "https://github.com/joshbrew/babylon-avbd/issues"
60
+ },
61
+ "peerDependencies": {
62
+ "@babylonjs/core": "^9.13.0"
63
+ },
64
+ "peerDependenciesMeta": {
65
+ "@babylonjs/core": {
66
+ "optional": true
67
+ }
68
+ },
69
+ "keywords": [
70
+ "avbd",
71
+ "webgpu",
72
+ "physics",
73
+ "babylonjs"
74
+ ],
75
+ "devDependencies": {
76
+ "@babylonjs/core": "^9.13.0",
77
+ "esbuild": "^0.28.2",
78
+ "prettier": "^3.9.9",
79
+ "tinybuild": "^1.0.6",
80
+ "typescript": "^7.0.2",
81
+ "wgsl_reflect": "^1.6.0"
82
+ },
83
+ "module": "./dist/avbd.js",
84
+ "exports": {
85
+ ".": {
86
+ "types": "./dist/avbd.d.ts",
87
+ "import": "./dist/avbd.js",
88
+ "default": "./dist/avbd.js"
89
+ },
90
+ "./native": {
91
+ "types": "./dist/native.d.ts",
92
+ "import": "./dist/native.js",
93
+ "default": "./dist/native.js"
94
+ },
95
+ "./global": {
96
+ "types": "./dist/avbd.global.d.ts",
97
+ "default": "./dist/avbd.global.js"
98
+ },
99
+ "./package.json": "./package.json"
100
+ },
101
+ "files": [
102
+ "dist/avbd.js",
103
+ "dist/avbd.global.js",
104
+ "dist/avbd.global.d.ts",
105
+ "dist/avbd.d.ts",
106
+ "dist/babylonAvbd.d.ts",
107
+ "dist/nativeScenes.d.ts",
108
+ "dist/native.js",
109
+ "dist/native.d.ts",
110
+ "dist/gpuDevice.d.ts",
111
+ "dist/solverPipeline.d.ts",
112
+ "dist/NOTICE",
113
+ "LICENSE",
114
+ "README.md",
115
+ "docs/README.md",
116
+ "docs/BABYLON_API.md",
117
+ "docs/HPLOC.md",
118
+ "docs/RELEASE.md",
119
+ "tests/README.md"
120
+ ],
121
+ "sideEffects": false,
122
+ "unpkg": "./dist/avbd.global.js",
123
+ "jsdelivr": "./dist/avbd.global.js"
124
+ }