@adobe/data-gpu 0.9.74 → 0.9.76
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/CLAUDE.md +9 -0
- package/README.md +36 -0
- package/dist/core/core-plugin.d.ts +1 -1
- package/dist/core/public.d.ts +2 -0
- package/dist/core/public.js +4 -0
- package/dist/core/public.js.map +1 -0
- package/dist/graphics/animation/animation-data-plugin.d.ts +8 -0
- package/dist/graphics/animation/animation-plugin.d.ts +10 -2
- package/dist/graphics/camera/camera-plugin.d.ts +3 -3
- package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +1 -21
- package/dist/graphics/camera/orbit/attach-orbit-drag.js +0 -10
- package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -1
- package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +6 -6
- package/dist/graphics/camera/orbit/orbit-data-plugin.js +1 -1
- package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -1
- package/dist/graphics/camera/orbit/orbit-drag-service.d.ts +11 -0
- package/dist/graphics/camera/orbit/orbit-drag-service.js +3 -0
- package/dist/graphics/camera/orbit/orbit-drag-service.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-plugin.d.ts +6 -6
- package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +8 -8
- package/dist/graphics/camera/orbit/orbit-system-plugin.js +6 -9
- package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -1
- package/dist/graphics/camera/orbit/orbit.d.ts +5 -5
- package/dist/graphics/camera/orbit/public.d.ts +2 -2
- package/dist/graphics/camera/orbit/public.js +2 -1
- package/dist/graphics/camera/orbit/public.js.map +1 -1
- package/dist/graphics/graphics-plugin.d.ts +1 -1
- package/dist/graphics/index.d.ts +1 -0
- package/dist/graphics/index.js +3 -0
- package/dist/graphics/index.js.map +1 -0
- package/dist/graphics/picking/picking-plugin.d.ts +9871 -1912
- package/dist/graphics/picking/picking-plugin.js +3 -3
- package/dist/graphics/picking/picking-plugin.js.map +1 -1
- package/dist/graphics/public.d.ts +38 -0
- package/dist/graphics/public.js +40 -0
- package/dist/graphics/public.js.map +1 -0
- package/dist/graphics/rendering/bone-collider-plugin.d.ts +2967 -486
- package/dist/graphics/rendering/bone-collider-plugin.js +13 -12
- package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -1
- package/dist/graphics/rendering/display-transform-plugin.d.ts +2 -0
- package/dist/graphics/rendering/display-transform-plugin.js +2 -2
- package/dist/graphics/rendering/display-transform-plugin.js.map +1 -1
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +2857 -403
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +9 -9
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -1
- package/dist/graphics/rendering/interpolation-plugin.d.ts +1040 -156
- package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +3017 -538
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js +6 -6
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -1
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.d.ts +1123 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js +79 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js.map +1 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.d.ts +1 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.js +18 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.js.map +1 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette.d.ts +25 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette.js +27 -0
- package/dist/graphics/rendering/material-palette-gpu/material-palette.js.map +1 -0
- package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.d.ts +3 -0
- package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.js +22 -0
- package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.js.map +1 -0
- package/dist/graphics/rendering/model-collider-plugin.d.ts +2903 -663
- package/dist/graphics/rendering/model-collider-plugin.js +11 -34
- package/dist/graphics/rendering/model-collider-plugin.js.map +1 -1
- package/dist/graphics/rendering/pbr-core-plugin.d.ts +16 -8
- package/dist/graphics/rendering/pbr-core-plugin.js +16 -19
- package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -1
- package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.d.ts +3514 -0
- package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.js +189 -0
- package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.d.ts +7 -0
- package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.js +124 -0
- package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +769 -571
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +98 -79
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -1
- package/dist/graphics/rendering/pbr-render/primitive-render-shared.d.ts +43 -0
- package/dist/graphics/rendering/pbr-render/primitive-render-shared.js +59 -0
- package/dist/graphics/rendering/pbr-render/primitive-render-shared.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +2930 -270
- package/dist/graphics/rendering/skinning/skinning-plugin.js +19 -40
- package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -1
- package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
- package/dist/graphics/scene/model/mesh/mesh.d.ts +13 -0
- package/dist/graphics/scene/model/mesh/mesh.js +3 -0
- package/dist/graphics/scene/model/mesh/mesh.js.map +1 -0
- package/dist/graphics/scene/model/mesh/public.d.ts +1 -0
- package/dist/graphics/scene/model/mesh/public.js +3 -0
- package/dist/graphics/scene/model/mesh/public.js.map +1 -0
- package/dist/graphics/scene/model/mesh-plugin.d.ts +5177 -0
- package/dist/graphics/scene/model/mesh-plugin.js +87 -0
- package/dist/graphics/scene/model/mesh-plugin.js.map +1 -0
- package/dist/graphics/scene/model/model-loader-plugin.d.ts +2728 -295
- package/dist/graphics/scene/model/model-loader-plugin.js +24 -42
- package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -1
- package/dist/graphics/scene/model/model-plugin.d.ts +1 -352
- package/dist/graphics/scene/model/model-plugin.js +1 -37
- package/dist/graphics/scene/model/model-plugin.js.map +1 -1
- package/dist/graphics/scene/model/model.d.ts +2 -6
- package/dist/graphics/scene/model/model.js.map +1 -1
- package/dist/graphics/scene/model/public.d.ts +1 -1
- package/dist/graphics/scene/model/public.js +2 -1
- package/dist/graphics/scene/model/public.js.map +1 -1
- package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.d.ts +4 -0
- package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.js +25 -0
- package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.js.map +1 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +233 -386
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +87 -18
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -1
- package/dist/graphics/scene/model/shape/shape-spec.d.ts +17 -0
- package/dist/graphics/scene/model/shape/shape-spec.js +3 -0
- package/dist/graphics/scene/model/shape/shape-spec.js.map +1 -0
- package/dist/graphics/scene/model/world-bounds-plugin.d.ts +2670 -245
- package/dist/graphics/scene/model/world-bounds-plugin.js +6 -25
- package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -1
- package/dist/graphics/scene/node/node-data-plugin.d.ts +15 -4
- package/dist/graphics/scene/node/node-data-plugin.js +12 -5
- package/dist/graphics/scene/node/node-data-plugin.js.map +1 -1
- package/dist/graphics/scene/node/node-data-plugin.test.d.ts +1 -0
- package/dist/graphics/scene/node/node-data-plugin.test.js +40 -0
- package/dist/graphics/scene/node/node-data-plugin.test.js.map +1 -0
- package/dist/graphics/scene/node/node-plugin.d.ts +8 -1
- package/dist/graphics/scene/node/transform-plugin.d.ts +8 -1
- package/dist/graphics/scene/scene-plugin.d.ts +2353 -100
- package/dist/graphics/scene/scene-plugin.js +3 -3
- package/dist/graphics/scene/scene-plugin.js.map +1 -1
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +3 -3
- package/dist/index.d.ts +1 -53
- package/dist/index.js +1 -54
- package/dist/index.js.map +1 -1
- package/dist/material/assemble-material-row.d.ts +4 -0
- package/dist/material/assemble-material-row.js +22 -0
- package/dist/material/assemble-material-row.js.map +1 -0
- package/dist/material/definitions.d.ts +833 -0
- package/dist/material/definitions.js +423 -0
- package/dist/material/definitions.js.map +1 -0
- package/dist/material/emission-mode.d.ts +8 -0
- package/dist/material/emission-mode.js +9 -0
- package/dist/material/emission-mode.js.map +1 -0
- package/dist/material/index.d.ts +1 -0
- package/dist/material/index.js +3 -0
- package/dist/material/index.js.map +1 -0
- package/dist/material/json/from-json-string.d.ts +2 -0
- package/dist/material/json/from-json-string.js +12 -0
- package/dist/material/json/from-json-string.js.map +1 -0
- package/dist/material/json/from-json.d.ts +10 -0
- package/dist/material/json/from-json.js +16 -0
- package/dist/material/json/from-json.js.map +1 -0
- package/dist/material/json/from-json.test.d.ts +1 -0
- package/dist/material/json/from-json.test.js +46 -0
- package/dist/material/json/from-json.test.js.map +1 -0
- package/dist/material/json/is-properties-json.d.ts +2 -0
- package/dist/material/json/is-properties-json.js +65 -0
- package/dist/material/json/is-properties-json.js.map +1 -0
- package/dist/material/json/library-json.d.ts +3 -0
- package/dist/material/json/library-json.js +2 -0
- package/dist/material/json/library-json.js.map +1 -0
- package/dist/material/json/load-json.d.ts +7 -0
- package/dist/material/json/load-json.js +10 -0
- package/dist/material/json/load-json.js.map +1 -0
- package/dist/material/json/properties-json.d.ts +25 -0
- package/dist/material/json/properties-json.js +2 -0
- package/dist/material/json/properties-json.js.map +1 -0
- package/dist/material/json/public.d.ts +9 -0
- package/dist/material/json/public.js +6 -0
- package/dist/material/json/public.js.map +1 -0
- package/dist/material/json/to-definition.d.ts +5 -0
- package/dist/material/json/to-definition.js +65 -0
- package/dist/material/json/to-definition.js.map +1 -0
- package/dist/material/material-by-name-lookup.d.ts +11 -0
- package/dist/material/material-by-name-lookup.js +3 -0
- package/dist/material/material-by-name-lookup.js.map +1 -0
- package/dist/material/material-defaults.d.ts +23 -0
- package/dist/material/material-defaults.js +25 -0
- package/dist/material/material-defaults.js.map +1 -0
- package/dist/material/material-definition.d.ts +3 -0
- package/dist/material/material-definition.js +2 -0
- package/dist/material/material-definition.js.map +1 -0
- package/dist/material/material-name.d.ts +2 -0
- package/dist/material/material-name.js +2 -0
- package/dist/material/material-name.js.map +1 -0
- package/dist/material/material-plugin.d.ts +891 -22
- package/dist/material/material-plugin.js +46 -21
- package/dist/material/material-plugin.js.map +1 -1
- package/dist/material/material-plugin.test.d.ts +1 -0
- package/dist/material/material-plugin.test.js +87 -0
- package/dist/material/material-plugin.test.js.map +1 -0
- package/dist/material/material.d.ts +27 -29
- package/dist/material/material.js +0 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/public.d.ts +12 -2
- package/dist/material/public.js +12 -2
- package/dist/material/public.js.map +1 -1
- package/dist/material/require-material.d.ts +4 -0
- package/dist/material/require-material.js +10 -0
- package/dist/material/require-material.js.map +1 -0
- package/dist/material/standard-material-names.d.ts +2 -0
- package/dist/material/standard-material-names.js +4 -0
- package/dist/material/standard-material-names.js.map +1 -0
- package/dist/material/standard-materials.d.ts +1 -1
- package/dist/material/standard-materials.js +17 -24
- package/dist/material/standard-materials.js.map +1 -1
- package/dist/material/stress-strain-curve/create.d.ts +8 -0
- package/dist/material/stress-strain-curve/create.js +2 -0
- package/dist/material/stress-strain-curve/create.js.map +1 -0
- package/dist/material/stress-strain-curve/public.d.ts +2 -0
- package/dist/material/stress-strain-curve/public.js +3 -0
- package/dist/material/stress-strain-curve/public.js.map +1 -0
- package/dist/material/stress-strain-curve/schema.d.ts +52 -0
- package/dist/material/stress-strain-curve/schema.js +19 -0
- package/dist/material/stress-strain-curve/schema.js.map +1 -0
- package/dist/material/stress-strain-curve/schema.test.d.ts +1 -0
- package/dist/material/stress-strain-curve/schema.test.js +18 -0
- package/dist/material/stress-strain-curve/schema.test.js.map +1 -0
- package/dist/material/stress-strain-curve/stress-strain-curve.d.ts +4 -0
- package/dist/material/stress-strain-curve/stress-strain-curve.js +2 -0
- package/dist/material/stress-strain-curve/stress-strain-curve.js.map +1 -0
- package/dist/physics/body/collider-shape/mass-from-volume.d.ts +2 -0
- package/dist/physics/body/collider-shape/mass-from-volume.js +4 -0
- package/dist/physics/body/collider-shape/mass-from-volume.js.map +1 -0
- package/dist/physics/body/collider-shape/mass-from-volume.test.d.ts +1 -0
- package/dist/physics/body/collider-shape/mass-from-volume.test.js +8 -0
- package/dist/physics/body/collider-shape/mass-from-volume.test.js.map +1 -0
- package/dist/physics/collider-primitive-render-archetype.d.ts +2 -0
- package/dist/physics/collider-primitive-render-archetype.js +3 -0
- package/dist/physics/collider-primitive-render-archetype.js.map +1 -0
- package/dist/physics/collider-primitive-render-archetypes.d.ts +2 -0
- package/dist/physics/collider-primitive-render-archetypes.js +9 -0
- package/dist/physics/collider-primitive-render-archetypes.js.map +1 -0
- package/dist/physics/index.d.ts +1 -0
- package/dist/physics/index.js +3 -0
- package/dist/physics/index.js.map +1 -0
- package/dist/physics/is-voxel-shape-physics-pending.d.ts +3 -0
- package/dist/physics/is-voxel-shape-physics-pending.js +7 -0
- package/dist/physics/is-voxel-shape-physics-pending.js.map +1 -0
- package/dist/physics/physics-clock/physics-clock.d.ts +15 -0
- package/dist/physics/physics-clock/physics-clock.js +3 -0
- package/dist/physics/physics-clock/physics-clock.js.map +1 -0
- package/dist/physics/physics-clock-plugin.d.ts +2 -22
- package/dist/physics/physics-clock-plugin.js +0 -2
- package/dist/physics/physics-clock-plugin.js.map +1 -1
- package/dist/physics/physics-clock.test.js.map +1 -1
- package/dist/physics/physics-data-plugin.d.ts +889 -13
- package/dist/physics/physics-data-plugin.js +8 -6
- package/dist/physics/physics-data-plugin.js.map +1 -1
- package/dist/physics/public.d.ts +21 -0
- package/dist/physics/public.js +23 -0
- package/dist/physics/public.js.map +1 -0
- package/dist/physics/ragdoll/bone-capsule.d.ts +8 -0
- package/dist/physics/ragdoll/bone-capsule.js +3 -0
- package/dist/physics/ragdoll/bone-capsule.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules-input.d.ts +11 -0
- package/dist/physics/ragdoll/fit-bone-capsules-input.js +3 -0
- package/dist/physics/ragdoll/fit-bone-capsules-input.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.d.ts +2 -38
- package/dist/physics/ragdoll/fit-bone-capsules.js +13 -0
- package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -1
- package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -1
- package/dist/physics/ragdoll/skin-vertices.d.ts +6 -0
- package/dist/physics/ragdoll/skin-vertices.js +3 -0
- package/dist/physics/ragdoll/skin-vertices.js.map +1 -0
- package/dist/physics/rigid-body-components.d.ts +2 -0
- package/dist/physics/rigid-body-components.js +13 -0
- package/dist/physics/rigid-body-components.js.map +1 -0
- package/dist/physics/solvers/jolt-solver-plugin.d.ts +918 -41
- package/dist/physics/solvers/jolt-solver-plugin.js +19 -3
- package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -1
- package/dist/physics/solvers/rapier-solver-plugin.d.ts +918 -41
- package/dist/physics/solvers/rapier-solver-plugin.js +7 -2
- package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -1
- package/dist/physics/solvers/solver-benchmark-options.d.ts +14 -0
- package/dist/physics/solvers/solver-benchmark-options.js +3 -0
- package/dist/physics/solvers/solver-benchmark-options.js.map +1 -0
- package/dist/physics/solvers/solver-benchmark-result.d.ts +15 -0
- package/dist/physics/solvers/solver-benchmark-result.js +3 -0
- package/dist/physics/solvers/solver-benchmark-result.js.map +1 -0
- package/dist/physics/solvers/solver-benchmark.d.ts +2 -43
- package/dist/physics/solvers/solver-benchmark.js.map +1 -1
- package/dist/physics/static-collider-components.d.ts +2 -0
- package/dist/physics/static-collider-components.js +10 -0
- package/dist/physics/static-collider-components.js.map +1 -0
- package/package.json +14 -2
- package/src/core/public.ts +4 -0
- package/src/graphics/camera/orbit/attach-orbit-drag.ts +7 -27
- package/src/graphics/camera/orbit/orbit-data-plugin.ts +1 -1
- package/src/graphics/camera/orbit/orbit-drag-service.ts +13 -0
- package/src/graphics/camera/orbit/orbit-system-plugin.ts +6 -9
- package/src/graphics/camera/orbit/orbit.ts +5 -5
- package/src/graphics/camera/orbit/public.ts +2 -2
- package/src/graphics/index.ts +3 -0
- package/src/graphics/picking/picking-plugin.ts +4 -4
- package/src/graphics/public.ts +40 -0
- package/src/graphics/rendering/bone-collider-plugin.ts +16 -12
- package/src/graphics/rendering/display-transform-plugin.ts +2 -2
- package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +9 -9
- package/src/graphics/rendering/interpolation.test.ts +1 -1
- package/src/graphics/rendering/jolt-ragdoll-plugin.ts +11 -7
- package/src/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.ts +86 -0
- package/src/graphics/rendering/material-palette-gpu/material-palette-gpu.test.ts +20 -0
- package/src/graphics/rendering/material-palette-gpu/material-palette.ts +41 -0
- package/src/graphics/rendering/material-palette-gpu/palette-bind-group.ts +24 -0
- package/src/graphics/rendering/model-collider-plugin.ts +19 -35
- package/src/graphics/rendering/pbr-core-plugin.ts +16 -19
- package/src/graphics/rendering/pbr-render/{pbr-render-plugin.ts → pbr-factor-render-plugin.ts} +60 -111
- package/src/graphics/rendering/pbr-render/{pbr-array-shader.wgsl.ts → pbr-factor-shader.wgsl.ts} +19 -40
- package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +95 -69
- package/src/graphics/rendering/pbr-render/primitive-render-shared.ts +76 -0
- package/src/graphics/rendering/skinning/skinning-plugin.ts +23 -41
- package/src/graphics/scene/model/geometry/public.ts +1 -1
- package/src/graphics/scene/model/mesh/mesh.ts +18 -0
- package/src/graphics/scene/model/mesh/public.ts +3 -0
- package/src/graphics/scene/model/mesh-plugin.ts +102 -0
- package/src/graphics/scene/model/model-loader-plugin.ts +25 -43
- package/src/graphics/scene/model/model-plugin.ts +1 -44
- package/src/graphics/scene/model/model.ts +2 -6
- package/src/graphics/scene/model/public.ts +3 -1
- package/src/graphics/scene/model/shape/bounds-from-shape-mesh.ts +20 -0
- package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +97 -18
- package/src/graphics/scene/model/shape/shape-spec.ts +9 -0
- package/src/graphics/scene/model/world-bounds-plugin.ts +6 -25
- package/src/graphics/scene/node/node-data-plugin.test.ts +47 -0
- package/src/graphics/scene/node/node-data-plugin.ts +12 -5
- package/src/graphics/scene/scene-plugin.ts +3 -3
- package/src/index.ts +1 -70
- package/src/material/assemble-material-row.ts +26 -0
- package/src/material/definitions.ts +427 -0
- package/src/material/emission-mode.ts +11 -0
- package/src/material/index.ts +3 -0
- package/src/material/json/from-json-string.ts +11 -0
- package/src/material/json/from-json.test.ts +50 -0
- package/src/material/json/from-json.ts +23 -0
- package/src/material/json/is-properties-json.ts +77 -0
- package/src/material/json/library-json.ts +4 -0
- package/src/material/json/load-json.ts +15 -0
- package/src/material/json/properties-json.ts +25 -0
- package/src/material/json/public.ts +9 -0
- package/src/material/json/to-definition.ts +70 -0
- package/src/material/material-by-name-lookup.ts +10 -0
- package/src/material/material-defaults.ts +26 -0
- package/src/material/material-definition.ts +4 -0
- package/src/material/material-name.ts +3 -0
- package/src/material/material-plugin.test.ts +97 -0
- package/src/material/material-plugin.ts +67 -39
- package/src/material/material.ts +35 -34
- package/src/material/public.ts +12 -2
- package/src/material/require-material.ts +15 -0
- package/src/material/standard-material-names.ts +4 -0
- package/src/material/standard-materials.ts +21 -27
- package/src/material/stress-strain-curve/create.ts +9 -0
- package/src/material/stress-strain-curve/public.ts +2 -0
- package/src/material/stress-strain-curve/schema.test.ts +20 -0
- package/src/material/stress-strain-curve/schema.ts +20 -0
- package/src/material/stress-strain-curve/stress-strain-curve.ts +11 -0
- package/src/physics/README.md +9 -1
- package/src/physics/body/collider-shape/mass-from-volume.test.ts +8 -0
- package/src/physics/body/collider-shape/mass-from-volume.ts +4 -0
- package/src/physics/collider-primitive-render-archetype.ts +5 -0
- package/src/physics/collider-primitive-render-archetypes.ts +9 -0
- package/src/physics/index.ts +3 -0
- package/src/physics/is-voxel-shape-physics-pending.ts +9 -0
- package/src/physics/physics-clock/physics-clock.ts +17 -0
- package/src/physics/physics-clock-plugin.ts +1 -24
- package/src/physics/physics-clock.test.ts +2 -1
- package/src/physics/physics-data-plugin.ts +8 -6
- package/src/physics/public.ts +23 -0
- package/src/physics/ragdoll/bone-capsule.ts +11 -0
- package/src/physics/ragdoll/fit-bone-capsules-input.ts +14 -0
- package/src/physics/ragdoll/fit-bone-capsules.test.ts +2 -1
- package/src/physics/ragdoll/fit-bone-capsules.ts +2 -27
- package/src/physics/ragdoll/skin-vertices.ts +8 -0
- package/src/physics/rigid-body-components.ts +13 -0
- package/src/physics/solvers/README.md +4 -0
- package/src/physics/solvers/jolt-solver-plugin.ts +19 -5
- package/src/physics/solvers/rapier-solver-plugin.ts +5 -2
- package/src/physics/solvers/solver-benchmark-options.ts +16 -0
- package/src/physics/solvers/solver-benchmark-result.ts +17 -0
- package/src/physics/solvers/solver-benchmark.ts +2 -35
- package/src/physics/static-collider-components.ts +10 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/graphics/rendering/material-gpu/material-arrays.ts +0 -113
- package/src/graphics/rendering/material-gpu/material-bind-group.ts +0 -61
- package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +0 -95
- package/src/graphics/scene/model/geometry/geometry.ts +0 -12
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The shared GPU material set: five `texture_2d_array`s (one per PBR map) plus
|
|
5
|
-
* a palette storage buffer of per-layer factors. Every material occupies one
|
|
6
|
-
* layer across all five arrays; a drawable selects its material with a single
|
|
7
|
-
* per-instance layer index. Built once and grown by layer — materials are
|
|
8
|
-
* added rarely and edited never, so nothing here is rebuilt per frame.
|
|
9
|
-
*/
|
|
10
|
-
export interface MaterialArrays {
|
|
11
|
-
baseColor: GPUTexture; // rgba8unorm-srgb
|
|
12
|
-
metallicRoughness: GPUTexture; // rgba8unorm (G = roughness, B = metalness)
|
|
13
|
-
normal: GPUTexture; // rgba8unorm
|
|
14
|
-
occlusion: GPUTexture; // rgba8unorm (R = AO)
|
|
15
|
-
emissive: GPUTexture; // rgba8unorm-srgb
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/** Fixed layer size every material map is resampled to. */
|
|
19
|
-
export const MATERIAL_TEXTURE_SIZE = 512;
|
|
20
|
-
/** Maximum distinct materials (array layers). 16 × 512² × 5 maps ≈ 80 MB. */
|
|
21
|
-
export const MAX_MATERIAL_LAYERS = 16;
|
|
22
|
-
/** Bytes per palette entry: baseColor(vec4) + emissive/metallic(vec4) + rough/normal/occlusion(vec4). */
|
|
23
|
-
export const PALETTE_STRIDE = 48;
|
|
24
|
-
|
|
25
|
-
export function createMaterialArrays(device: GPUDevice): MaterialArrays {
|
|
26
|
-
const make = (format: GPUTextureFormat): GPUTexture =>
|
|
27
|
-
device.createTexture({
|
|
28
|
-
size: [MATERIAL_TEXTURE_SIZE, MATERIAL_TEXTURE_SIZE, MAX_MATERIAL_LAYERS],
|
|
29
|
-
dimension: "2d",
|
|
30
|
-
format,
|
|
31
|
-
// RENDER_ATTACHMENT is required by copyExternalImageToTexture.
|
|
32
|
-
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
33
|
-
});
|
|
34
|
-
return {
|
|
35
|
-
baseColor: make("rgba8unorm-srgb"),
|
|
36
|
-
metallicRoughness: make("rgba8unorm"),
|
|
37
|
-
normal: make("rgba8unorm"),
|
|
38
|
-
occlusion: make("rgba8unorm"),
|
|
39
|
-
emissive: make("rgba8unorm-srgb"),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** Per-material visible factors written into one palette layer. */
|
|
44
|
-
export interface MaterialFactors {
|
|
45
|
-
baseColorFactor: readonly number[];
|
|
46
|
-
emissiveFactor: readonly number[];
|
|
47
|
-
metallicFactor: number;
|
|
48
|
-
roughnessFactor: number;
|
|
49
|
-
normalScale: number;
|
|
50
|
-
occlusionStrength: number;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const _palette = new Float32Array(PALETTE_STRIDE / 4);
|
|
54
|
-
|
|
55
|
-
export function writePaletteLayer(device: GPUDevice, palette: GPUBuffer, layer: number, f: MaterialFactors): void {
|
|
56
|
-
_palette[0] = f.baseColorFactor[0]; _palette[1] = f.baseColorFactor[1]; _palette[2] = f.baseColorFactor[2]; _palette[3] = f.baseColorFactor[3];
|
|
57
|
-
_palette[4] = f.emissiveFactor[0]; _palette[5] = f.emissiveFactor[1]; _palette[6] = f.emissiveFactor[2]; _palette[7] = f.metallicFactor;
|
|
58
|
-
_palette[8] = f.roughnessFactor; _palette[9] = f.normalScale; _palette[10] = f.occlusionStrength; _palette[11] = 0;
|
|
59
|
-
device.queue.writeBuffer(palette, layer * PALETTE_STRIDE, _palette);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** The five map source URLs for one material ("" = leave the neutral layer). */
|
|
63
|
-
export interface MaterialMapUrls {
|
|
64
|
-
baseColorUrl: string;
|
|
65
|
-
metallicRoughnessUrl: string;
|
|
66
|
-
normalUrl: string;
|
|
67
|
-
occlusionUrl: string;
|
|
68
|
-
emissiveUrl: string;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Fetches a material's maps and blits them (resampled to the layer size) into
|
|
73
|
-
* its array layer. Fire-and-forget: each map resolves independently, so a body
|
|
74
|
-
* renders (neutral) immediately and sharpens as textures arrive. URLs shared
|
|
75
|
-
* across maps (e.g. an ARM image used for both metallicRoughness and occlusion)
|
|
76
|
-
* are fetched once and copied to each target.
|
|
77
|
-
*/
|
|
78
|
-
export function loadMaterialMaps(device: GPUDevice, arrays: MaterialArrays, layer: number, urls: MaterialMapUrls): void {
|
|
79
|
-
const targets: { url: string; tex: GPUTexture }[] = [
|
|
80
|
-
{ url: urls.baseColorUrl, tex: arrays.baseColor },
|
|
81
|
-
{ url: urls.metallicRoughnessUrl, tex: arrays.metallicRoughness },
|
|
82
|
-
{ url: urls.normalUrl, tex: arrays.normal },
|
|
83
|
-
{ url: urls.occlusionUrl, tex: arrays.occlusion },
|
|
84
|
-
{ url: urls.emissiveUrl, tex: arrays.emissive },
|
|
85
|
-
];
|
|
86
|
-
const byUrl = new Map<string, GPUTexture[]>();
|
|
87
|
-
for (const t of targets) {
|
|
88
|
-
if (!t.url) continue;
|
|
89
|
-
const list = byUrl.get(t.url);
|
|
90
|
-
if (list) list.push(t.tex);
|
|
91
|
-
else byUrl.set(t.url, [t.tex]);
|
|
92
|
-
}
|
|
93
|
-
for (const [url, texes] of byUrl) {
|
|
94
|
-
fetch(url)
|
|
95
|
-
.then(r => { if (!r.ok) throw new Error(`material map ${r.status}: ${url}`); return r.blob(); })
|
|
96
|
-
.then(blob => createImageBitmap(blob, {
|
|
97
|
-
resizeWidth: MATERIAL_TEXTURE_SIZE,
|
|
98
|
-
resizeHeight: MATERIAL_TEXTURE_SIZE,
|
|
99
|
-
colorSpaceConversion: "none",
|
|
100
|
-
}))
|
|
101
|
-
.then(bitmap => {
|
|
102
|
-
for (const tex of texes) {
|
|
103
|
-
device.queue.copyExternalImageToTexture(
|
|
104
|
-
{ source: bitmap },
|
|
105
|
-
{ texture: tex, origin: [0, 0, layer] },
|
|
106
|
-
[MATERIAL_TEXTURE_SIZE, MATERIAL_TEXTURE_SIZE, 1],
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
bitmap.close();
|
|
110
|
-
})
|
|
111
|
-
.catch(err => console.warn("[materialGpu] map load failed", err));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
|
|
3
|
-
import type { MaterialArrays } from "./material-arrays.js";
|
|
4
|
-
|
|
5
|
-
interface DeviceCache {
|
|
6
|
-
layout: GPUBindGroupLayout;
|
|
7
|
-
sampler: GPUSampler;
|
|
8
|
-
}
|
|
9
|
-
const cacheByDevice = new WeakMap<GPUDevice, DeviceCache>();
|
|
10
|
-
|
|
11
|
-
function deviceCache(device: GPUDevice): DeviceCache {
|
|
12
|
-
let c = cacheByDevice.get(device);
|
|
13
|
-
if (!c) {
|
|
14
|
-
const tex = (binding: number): GPUBindGroupLayoutEntry => ({
|
|
15
|
-
binding, visibility: GPUShaderStage.FRAGMENT,
|
|
16
|
-
texture: { sampleType: "float", viewDimension: "2d-array" },
|
|
17
|
-
});
|
|
18
|
-
c = {
|
|
19
|
-
layout: device.createBindGroupLayout({
|
|
20
|
-
entries: [
|
|
21
|
-
{ binding: 0, visibility: GPUShaderStage.FRAGMENT, buffer: { type: "read-only-storage" } },
|
|
22
|
-
tex(1), tex(2), tex(3), tex(4), tex(5),
|
|
23
|
-
{ binding: 6, visibility: GPUShaderStage.FRAGMENT, sampler: { type: "filtering" } },
|
|
24
|
-
],
|
|
25
|
-
}),
|
|
26
|
-
sampler: device.createSampler({
|
|
27
|
-
magFilter: "linear", minFilter: "linear", mipmapFilter: "linear",
|
|
28
|
-
addressModeU: "repeat", addressModeV: "repeat",
|
|
29
|
-
}),
|
|
30
|
-
};
|
|
31
|
-
cacheByDevice.set(device, c);
|
|
32
|
-
}
|
|
33
|
-
return c;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Bind-group layout for the shared material set: palette storage buffer +
|
|
38
|
-
* five `texture_2d_array`s + a filtering sampler. The renderer's primitive
|
|
39
|
-
* pipeline builds its pipeline layout from this; `createMaterialBindGroup`
|
|
40
|
-
* builds the matching bind group. Cached per device.
|
|
41
|
-
*/
|
|
42
|
-
export function createMaterialBindGroupLayout(device: GPUDevice): GPUBindGroupLayout {
|
|
43
|
-
return deviceCache(device).layout;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function createMaterialBindGroup(device: GPUDevice, arrays: MaterialArrays, palette: GPUBuffer): GPUBindGroup {
|
|
47
|
-
const { layout, sampler } = deviceCache(device);
|
|
48
|
-
const view = (t: GPUTexture): GPUTextureView => t.createView({ dimension: "2d-array" });
|
|
49
|
-
return device.createBindGroup({
|
|
50
|
-
layout,
|
|
51
|
-
entries: [
|
|
52
|
-
{ binding: 0, resource: { buffer: palette } },
|
|
53
|
-
{ binding: 1, resource: view(arrays.baseColor) },
|
|
54
|
-
{ binding: 2, resource: view(arrays.metallicRoughness) },
|
|
55
|
-
{ binding: 3, resource: view(arrays.normal) },
|
|
56
|
-
{ binding: 4, resource: view(arrays.occlusion) },
|
|
57
|
-
{ binding: 5, resource: view(arrays.emissive) },
|
|
58
|
-
{ binding: 6, resource: sampler },
|
|
59
|
-
],
|
|
60
|
-
});
|
|
61
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
|
|
3
|
-
import { Database } from "@adobe/data/ecs";
|
|
4
|
-
import { U32 } from "@adobe/data/math";
|
|
5
|
-
import { core } from "../../../core/core-plugin.js";
|
|
6
|
-
import { Material } from "../../../material/material.js";
|
|
7
|
-
import {
|
|
8
|
-
type MaterialArrays,
|
|
9
|
-
MAX_MATERIAL_LAYERS, PALETTE_STRIDE,
|
|
10
|
-
createMaterialArrays, writePaletteLayer, loadMaterialMaps,
|
|
11
|
-
} from "./material-arrays.js";
|
|
12
|
-
import { createMaterialBindGroup } from "./material-bind-group.js";
|
|
13
|
-
|
|
14
|
-
/** Material rows the builder reads to fill a layer (factors + map URLs). */
|
|
15
|
-
const MATERIAL_COMPONENTS = [
|
|
16
|
-
"baseColorFactor", "emissiveFactor", "metallicFactor", "roughnessFactor", "normalScale", "occlusionStrength",
|
|
17
|
-
"baseColorUrl", "metallicRoughnessUrl", "normalUrl", "occlusionUrl", "emissiveUrl",
|
|
18
|
-
] as const;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* materialGpu — derives the shared GPU material set from the `Material`
|
|
22
|
-
* registry. Each authored material is assigned one array layer; its factors go
|
|
23
|
-
* into the palette buffer and its maps are fetched + blitted into that layer.
|
|
24
|
-
*
|
|
25
|
-
* Incremental and cached: the arrays / palette / bind group are built once, and
|
|
26
|
-
* a layer is assigned only to a material that doesn't have one yet (`_layerIndex`
|
|
27
|
-
* excluded). Materials are added rarely and edited never, so steady state does
|
|
28
|
-
* no work. The renderer (P3) binds `_materialBindGroup` once and selects a
|
|
29
|
-
* material per instance by `_layerIndex`.
|
|
30
|
-
*/
|
|
31
|
-
export const materialGpu = Database.Plugin.create({
|
|
32
|
-
extends: Database.Plugin.combine(Material.plugin, core),
|
|
33
|
-
components: {
|
|
34
|
-
_layerIndex: U32.schema,
|
|
35
|
-
},
|
|
36
|
-
resources: {
|
|
37
|
-
_materialArrays: { default: null as MaterialArrays | null, nonPersistent: true },
|
|
38
|
-
_materialPalette: { default: null as GPUBuffer | null, nonPersistent: true },
|
|
39
|
-
_materialBindGroup: { default: null as GPUBindGroup | null, nonPersistent: true },
|
|
40
|
-
},
|
|
41
|
-
systems: {
|
|
42
|
-
materialGpuBuilder: {
|
|
43
|
-
schedule: { during: ["preRender"] },
|
|
44
|
-
create: db => {
|
|
45
|
-
let arrays: MaterialArrays | null = null;
|
|
46
|
-
let palette: GPUBuffer | null = null;
|
|
47
|
-
let nextLayer = 0;
|
|
48
|
-
return () => {
|
|
49
|
-
const { device } = db.store.resources;
|
|
50
|
-
if (!device) return;
|
|
51
|
-
|
|
52
|
-
// Assign a layer to each material that lacks one. Tail→head:
|
|
53
|
-
// every visited row migrates out (gains _layerIndex), so the
|
|
54
|
-
// removal is always from the tail — no hole-fill shift. The GPU
|
|
55
|
-
// arrays are created lazily on the first material, so glTF-only
|
|
56
|
-
// scenes (no materials) allocate nothing.
|
|
57
|
-
for (const arch of db.store.queryArchetypes(["name", ...MATERIAL_COMPONENTS], { exclude: ["_layerIndex"] })) {
|
|
58
|
-
const c = arch.columns;
|
|
59
|
-
for (let i = arch.rowCount - 1; i >= 0; i--) {
|
|
60
|
-
if (nextLayer >= MAX_MATERIAL_LAYERS) break;
|
|
61
|
-
if (!arrays || !palette) {
|
|
62
|
-
arrays = createMaterialArrays(device);
|
|
63
|
-
palette = device.createBuffer({
|
|
64
|
-
size: MAX_MATERIAL_LAYERS * PALETTE_STRIDE,
|
|
65
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
66
|
-
});
|
|
67
|
-
db.store.resources._materialArrays = arrays;
|
|
68
|
-
db.store.resources._materialPalette = palette;
|
|
69
|
-
db.store.resources._materialBindGroup = createMaterialBindGroup(device, arrays, palette);
|
|
70
|
-
}
|
|
71
|
-
const id = c.id.get(i);
|
|
72
|
-
const layer = nextLayer++;
|
|
73
|
-
writePaletteLayer(device, palette, layer, {
|
|
74
|
-
baseColorFactor: c.baseColorFactor.get(i),
|
|
75
|
-
emissiveFactor: c.emissiveFactor.get(i),
|
|
76
|
-
metallicFactor: c.metallicFactor.get(i),
|
|
77
|
-
roughnessFactor: c.roughnessFactor.get(i),
|
|
78
|
-
normalScale: c.normalScale.get(i),
|
|
79
|
-
occlusionStrength: c.occlusionStrength.get(i),
|
|
80
|
-
});
|
|
81
|
-
loadMaterialMaps(device, arrays, layer, {
|
|
82
|
-
baseColorUrl: c.baseColorUrl.get(i),
|
|
83
|
-
metallicRoughnessUrl: c.metallicRoughnessUrl.get(i),
|
|
84
|
-
normalUrl: c.normalUrl.get(i),
|
|
85
|
-
occlusionUrl: c.occlusionUrl.get(i),
|
|
86
|
-
emissiveUrl: c.emissiveUrl.get(i),
|
|
87
|
-
});
|
|
88
|
-
db.store.update(id, { _layerIndex: layer });
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* One row of the `Geometry` archetype — an asset identified by URL. The
|
|
5
|
-
* model loader fetches the URL, then writes derived state (`_bounds`,
|
|
6
|
-
* primitive entities, animation clips) onto the same row.
|
|
7
|
-
*/
|
|
8
|
-
export interface Geometry {
|
|
9
|
-
modelUrl: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export * as Geometry from "./public.js";
|