@adobe/data-gpu 0.9.69
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 +98 -0
- package/LICENSE +21 -0
- package/dist/core/core-plugin.d.ts +44 -0
- package/dist/core/core-plugin.js +90 -0
- package/dist/core/core-plugin.js.map +1 -0
- package/dist/core/frame-time/frame-time-plugin.d.ts +25 -0
- package/dist/core/frame-time/frame-time-plugin.js +41 -0
- package/dist/core/frame-time/frame-time-plugin.js.map +1 -0
- package/dist/core/frame-time/frame-time.d.ts +18 -0
- package/dist/core/frame-time/frame-time.js +3 -0
- package/dist/core/frame-time/frame-time.js.map +1 -0
- package/dist/core/frame-time/public.d.ts +1 -0
- package/dist/core/frame-time/public.js +3 -0
- package/dist/core/frame-time/public.js.map +1 -0
- package/dist/graphics/animation/animation-data-plugin.d.ts +216 -0
- package/dist/graphics/animation/animation-data-plugin.js +110 -0
- package/dist/graphics/animation/animation-data-plugin.js.map +1 -0
- package/dist/graphics/animation/animation-plugin.d.ts +214 -0
- package/dist/graphics/animation/animation-plugin.js +26 -0
- package/dist/graphics/animation/animation-plugin.js.map +1 -0
- package/dist/graphics/animation/animation-plugin.test.d.ts +1 -0
- package/dist/graphics/animation/animation-plugin.test.js +142 -0
- package/dist/graphics/animation/animation-plugin.test.js.map +1 -0
- package/dist/graphics/animation/animation-track/animation-track.d.ts +13 -0
- package/dist/graphics/animation/animation-track/animation-track.js +3 -0
- package/dist/graphics/animation/animation-track/animation-track.js.map +1 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.d.ts +7 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.js +22 -0
- package/dist/graphics/animation/animation-track/componentwise-lerp.js.map +1 -0
- package/dist/graphics/animation/animation-track/interpolate.d.ts +8 -0
- package/dist/graphics/animation/animation-track/interpolate.js +18 -0
- package/dist/graphics/animation/animation-track/interpolate.js.map +1 -0
- package/dist/graphics/animation/animation-track/public.d.ts +1 -0
- package/dist/graphics/animation/animation-track/public.js +3 -0
- package/dist/graphics/animation/animation-track/public.js.map +1 -0
- package/dist/graphics/animation/animation-track/sample.d.ts +7 -0
- package/dist/graphics/animation/animation-track/sample.js +44 -0
- package/dist/graphics/animation/animation-track/sample.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.d.ts +4 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.js +3 -0
- package/dist/graphics/animation/interpolation-mode/interpolation-mode.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/public.d.ts +1 -0
- package/dist/graphics/animation/interpolation-mode/public.js +3 -0
- package/dist/graphics/animation/interpolation-mode/public.js.map +1 -0
- package/dist/graphics/animation/interpolation-mode/schema.d.ts +4 -0
- package/dist/graphics/animation/interpolation-mode/schema.js +3 -0
- package/dist/graphics/animation/interpolation-mode/schema.js.map +1 -0
- package/dist/graphics/camera/camera-plugin.d.ts +112 -0
- package/dist/graphics/camera/camera-plugin.js +36 -0
- package/dist/graphics/camera/camera-plugin.js.map +1 -0
- package/dist/graphics/camera/camera.d.ts +4 -0
- package/dist/graphics/camera/camera.js +3 -0
- package/dist/graphics/camera/camera.js.map +1 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +31 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.js +44 -0
- package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +290 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.js +42 -0
- package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-plugin.d.ts +281 -0
- package/dist/graphics/camera/orbit/orbit-plugin.js +12 -0
- package/dist/graphics/camera/orbit/orbit-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +292 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.js +71 -0
- package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -0
- package/dist/graphics/camera/orbit/orbit.d.ts +32 -0
- package/dist/graphics/camera/orbit/orbit.js +3 -0
- package/dist/graphics/camera/orbit/orbit.js.map +1 -0
- package/dist/graphics/camera/orbit/public.d.ts +5 -0
- package/dist/graphics/camera/orbit/public.js +6 -0
- package/dist/graphics/camera/orbit/public.js.map +1 -0
- package/dist/graphics/camera/public.d.ts +4 -0
- package/dist/graphics/camera/public.js +6 -0
- package/dist/graphics/camera/public.js.map +1 -0
- package/dist/graphics/camera/schema.d.ts +65 -0
- package/dist/graphics/camera/schema.js +19 -0
- package/dist/graphics/camera/schema.js.map +1 -0
- package/dist/graphics/camera/screen-to-world-ray.d.ts +10 -0
- package/dist/graphics/camera/screen-to-world-ray.js +31 -0
- package/dist/graphics/camera/screen-to-world-ray.js.map +1 -0
- package/dist/graphics/camera/to-view-projection.d.ts +3 -0
- package/dist/graphics/camera/to-view-projection.js +23 -0
- package/dist/graphics/camera/to-view-projection.js.map +1 -0
- package/dist/graphics/graphics-plugin.d.ts +121 -0
- package/dist/graphics/graphics-plugin.js +106 -0
- package/dist/graphics/graphics-plugin.js.map +1 -0
- package/dist/graphics/picking/pick-hit.d.ts +10 -0
- package/dist/graphics/picking/pick-hit.js +3 -0
- package/dist/graphics/picking/pick-hit.js.map +1 -0
- package/dist/graphics/picking/picking-plugin.d.ts +3819 -0
- package/dist/graphics/picking/picking-plugin.js +88 -0
- package/dist/graphics/picking/picking-plugin.js.map +1 -0
- package/dist/graphics/rendering/bone-collider-plugin.d.ts +1619 -0
- package/dist/graphics/rendering/bone-collider-plugin.js +207 -0
- package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -0
- package/dist/graphics/rendering/display-transform-plugin.d.ts +52 -0
- package/dist/graphics/rendering/display-transform-plugin.js +25 -0
- package/dist/graphics/rendering/display-transform-plugin.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.js +42 -0
- package/dist/graphics/rendering/ibl-render/brdf.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js +91 -0
- package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.d.ts +24 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js +34 -0
- package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js +12 -0
- package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js +11 -0
- package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js +9 -0
- package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.d.ts +8 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.js +170 -0
- package/dist/graphics/rendering/ibl-render/ibl/environment.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js +32 -0
- package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js +59 -0
- package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.d.ts +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.js +94 -0
- package/dist/graphics/rendering/ibl-render/ibl/irradiance.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.d.ts +6 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js +106 -0
- package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.d.ts +5 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.js +103 -0
- package/dist/graphics/rendering/ibl-render/ibl/prefilter.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.d.ts +4 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js +16 -0
- package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +1028 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +409 -0
- package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.d.ts +8 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js +173 -0
- package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.d.ts +2 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js +50 -0
- package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/interpolation-plugin.d.ts +485 -0
- package/dist/graphics/rendering/interpolation-plugin.js +98 -0
- package/dist/graphics/rendering/interpolation-plugin.js.map +1 -0
- package/dist/graphics/rendering/interpolation.test.d.ts +1 -0
- package/dist/graphics/rendering/interpolation.test.js +38 -0
- package/dist/graphics/rendering/interpolation.test.js.map +1 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +1628 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js +218 -0
- package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.d.ts +47 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.js +83 -0
- package/dist/graphics/rendering/material-gpu/material-arrays.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.d.ts +9 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.js +52 -0
- package/dist/graphics/rendering/material-gpu/material-bind-group.js.map +1 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.d.ts +259 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js +90 -0
- package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js.map +1 -0
- package/dist/graphics/rendering/model-collider-plugin.d.ts +1232 -0
- package/dist/graphics/rendering/model-collider-plugin.js +81 -0
- package/dist/graphics/rendering/model-collider-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-core-plugin.d.ts +75 -0
- package/dist/graphics/rendering/pbr-core-plugin.js +39 -0
- package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.d.ts +10 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js +145 -0
- package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.d.ts +1266 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js +254 -0
- package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js.map +1 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +1004 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +116 -0
- package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.d.ts +31 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.js +20 -0
- package/dist/graphics/rendering/ragdoll-trigger-plugin.js.map +1 -0
- package/dist/graphics/rendering/rendering-plugin.d.ts +1 -0
- package/dist/graphics/rendering/rendering-plugin.js +3 -0
- package/dist/graphics/rendering/rendering-plugin.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.d.ts +2 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.js +18 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/layout.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.d.ts +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.js +3 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/public.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.d.ts +1 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js +3 -0
- package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js.map +1 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +1212 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.js +207 -0
- package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/layout.d.ts +2 -0
- package/dist/graphics/rendering/standard-vertex/layout.js +16 -0
- package/dist/graphics/rendering/standard-vertex/layout.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/public.d.ts +2 -0
- package/dist/graphics/rendering/standard-vertex/public.js +4 -0
- package/dist/graphics/rendering/standard-vertex/public.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/schema.d.ts +52 -0
- package/dist/graphics/rendering/standard-vertex/schema.js +15 -0
- package/dist/graphics/rendering/standard-vertex/schema.js.map +1 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.d.ts +4 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.js +3 -0
- package/dist/graphics/rendering/standard-vertex/standard-vertex.js.map +1 -0
- package/dist/graphics/rendering/visible-material/color-material-options.d.ts +7 -0
- package/dist/graphics/rendering/visible-material/color-material-options.js +3 -0
- package/dist/graphics/rendering/visible-material/color-material-options.js.map +1 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.d.ts +8 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.js +35 -0
- package/dist/graphics/rendering/visible-material/create-bind-group-layout.js.map +1 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.d.ts +10 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.js +26 -0
- package/dist/graphics/rendering/visible-material/create-color-bind-group.js.map +1 -0
- package/dist/graphics/rendering/visible-material/public.d.ts +4 -0
- package/dist/graphics/rendering/visible-material/public.js +5 -0
- package/dist/graphics/rendering/visible-material/public.js.map +1 -0
- package/dist/graphics/rendering/visible-material/schema.d.ts +49 -0
- package/dist/graphics/rendering/visible-material/schema.js +23 -0
- package/dist/graphics/rendering/visible-material/schema.js.map +1 -0
- package/dist/graphics/rendering/visible-material/visible-material.d.ts +4 -0
- package/dist/graphics/rendering/visible-material/visible-material.js +3 -0
- package/dist/graphics/rendering/visible-material/visible-material.js.map +1 -0
- package/dist/graphics/scene/light/light-plugin.d.ts +30 -0
- package/dist/graphics/scene/light/light-plugin.js +35 -0
- package/dist/graphics/scene/light/light-plugin.js.map +1 -0
- package/dist/graphics/scene/light/light.d.ts +14 -0
- package/dist/graphics/scene/light/light.js +3 -0
- package/dist/graphics/scene/light/light.js.map +1 -0
- package/dist/graphics/scene/light/public.d.ts +1 -0
- package/dist/graphics/scene/light/public.js +2 -0
- package/dist/graphics/scene/light/public.js.map +1 -0
- package/dist/graphics/scene/model/geometry/geometry.d.ts +9 -0
- package/dist/graphics/scene/model/geometry/geometry.js +3 -0
- package/dist/graphics/scene/model/geometry/geometry.js.map +1 -0
- package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
- package/dist/graphics/scene/model/geometry/public.js +3 -0
- package/dist/graphics/scene/model/geometry/public.js.map +1 -0
- package/dist/graphics/scene/model/gltf/accessor-view.d.ts +9 -0
- package/dist/graphics/scene/model/gltf/accessor-view.js +44 -0
- package/dist/graphics/scene/model/gltf/accessor-view.js.map +1 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.d.ts +22 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.js +75 -0
- package/dist/graphics/scene/model/gltf/build-material-bind-group.js.map +1 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.d.ts +7 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.js +38 -0
- package/dist/graphics/scene/model/gltf/compute-world-matrices.js.map +1 -0
- package/dist/graphics/scene/model/gltf/create-color-material.d.ts +3 -0
- package/dist/graphics/scene/model/gltf/create-color-material.js +34 -0
- package/dist/graphics/scene/model/gltf/create-color-material.js.map +1 -0
- package/dist/graphics/scene/model/gltf/decode-images.d.ts +12 -0
- package/dist/graphics/scene/model/gltf/decode-images.js +68 -0
- package/dist/graphics/scene/model/gltf/decode-images.js.map +1 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.d.ts +152 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.js +20 -0
- package/dist/graphics/scene/model/gltf/gltf-schema.js.map +1 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.d.ts +42 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.js +175 -0
- package/dist/graphics/scene/model/gltf/load-gltf-model.js.map +1 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.d.ts +21 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js +106 -0
- package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-animations.d.ts +18 -0
- package/dist/graphics/scene/model/gltf/parse-animations.js +51 -0
- package/dist/graphics/scene/model/gltf/parse-animations.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-glb.d.ts +6 -0
- package/dist/graphics/scene/model/gltf/parse-glb.js +40 -0
- package/dist/graphics/scene/model/gltf/parse-glb.js.map +1 -0
- package/dist/graphics/scene/model/gltf/parse-skin.d.ts +19 -0
- package/dist/graphics/scene/model/gltf/parse-skin.js +43 -0
- package/dist/graphics/scene/model/gltf/parse-skin.js.map +1 -0
- package/dist/graphics/scene/model/model-loader-plugin.d.ts +922 -0
- package/dist/graphics/scene/model/model-loader-plugin.js +120 -0
- package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -0
- package/dist/graphics/scene/model/model-plugin.d.ts +352 -0
- package/dist/graphics/scene/model/model-plugin.js +39 -0
- package/dist/graphics/scene/model/model-plugin.js.map +1 -0
- package/dist/graphics/scene/model/model.d.ts +11 -0
- package/dist/graphics/scene/model/model.js +3 -0
- package/dist/graphics/scene/model/model.js.map +1 -0
- package/dist/graphics/scene/model/public.d.ts +1 -0
- package/dist/graphics/scene/model/public.js +2 -0
- package/dist/graphics/scene/model/public.js.map +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.d.ts +36 -0
- package/dist/graphics/scene/model/shape/convex-hull.js +152 -0
- package/dist/graphics/scene/model/shape/convex-hull.js.map +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.d.ts +1 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.js +78 -0
- package/dist/graphics/scene/model/shape/convex-hull.test.js.map +1 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +631 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +61 -0
- package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -0
- package/dist/graphics/scene/model/shape/shape-mesh.d.ts +34 -0
- package/dist/graphics/scene/model/shape/shape-mesh.js +142 -0
- package/dist/graphics/scene/model/shape/shape-mesh.js.map +1 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.d.ts +9 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.js +12 -0
- package/dist/graphics/scene/model/shape/upload-shape-mesh.js.map +1 -0
- package/dist/graphics/scene/model/world-bounds-plugin.d.ts +909 -0
- package/dist/graphics/scene/model/world-bounds-plugin.js +93 -0
- package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node-data-plugin.d.ts +113 -0
- package/dist/graphics/scene/node/node-data-plugin.js +27 -0
- package/dist/graphics/scene/node/node-data-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node-plugin.d.ts +102 -0
- package/dist/graphics/scene/node/node-plugin.js +12 -0
- package/dist/graphics/scene/node/node-plugin.js.map +1 -0
- package/dist/graphics/scene/node/node.d.ts +19 -0
- package/dist/graphics/scene/node/node.js +3 -0
- package/dist/graphics/scene/node/node.js.map +1 -0
- package/dist/graphics/scene/node/public.d.ts +1 -0
- package/dist/graphics/scene/node/public.js +2 -0
- package/dist/graphics/scene/node/public.js.map +1 -0
- package/dist/graphics/scene/node/transform-plugin.d.ts +123 -0
- package/dist/graphics/scene/node/transform-plugin.js +65 -0
- package/dist/graphics/scene/node/transform-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-plugin.d.ts +461 -0
- package/dist/graphics/scene/scene-plugin.js +19 -0
- package/dist/graphics/scene/scene-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.d.ts +7 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js +19 -0
- package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/public.d.ts +3 -0
- package/dist/graphics/scene/scene-uniforms/public.js +5 -0
- package/dist/graphics/scene/scene-uniforms/public.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +137 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js +59 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.d.ts +11 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.js +3 -0
- package/dist/graphics/scene/scene-uniforms/scene-uniforms.js.map +1 -0
- package/dist/graphics/scene/scene-uniforms/schema.d.ts +56 -0
- package/dist/graphics/scene/scene-uniforms/schema.js +15 -0
- package/dist/graphics/scene/scene-uniforms/schema.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/material/material-plugin.d.ts +221 -0
- package/dist/material/material-plugin.js +60 -0
- package/dist/material/material-plugin.js.map +1 -0
- package/dist/material/material.d.ts +31 -0
- package/dist/material/material.js +3 -0
- package/dist/material/material.js.map +1 -0
- package/dist/material/public.d.ts +2 -0
- package/dist/material/public.js +4 -0
- package/dist/material/public.js.map +1 -0
- package/dist/material/standard-materials.d.ts +3 -0
- package/dist/material/standard-materials.js +35 -0
- package/dist/material/standard-materials.js.map +1 -0
- package/dist/physics/body/body-type/body-type.d.ts +10 -0
- package/dist/physics/body/body-type/body-type.js +3 -0
- package/dist/physics/body/body-type/body-type.js.map +1 -0
- package/dist/physics/body/body-type/is-dynamic.d.ts +3 -0
- package/dist/physics/body/body-type/is-dynamic.js +6 -0
- package/dist/physics/body/body-type/is-dynamic.js.map +1 -0
- package/dist/physics/body/body-type/public.d.ts +2 -0
- package/dist/physics/body/body-type/public.js +4 -0
- package/dist/physics/body/body-type/public.js.map +1 -0
- package/dist/physics/body/body-type/schema.d.ts +4 -0
- package/dist/physics/body/body-type/schema.js +3 -0
- package/dist/physics/body/body-type/schema.js.map +1 -0
- package/dist/physics/body/collider-mesh.d.ts +11 -0
- package/dist/physics/body/collider-mesh.js +3 -0
- package/dist/physics/body/collider-mesh.js.map +1 -0
- package/dist/physics/body/collider-shape/collider-shape.d.ts +15 -0
- package/dist/physics/body/collider-shape/collider-shape.js +3 -0
- package/dist/physics/body/collider-shape/collider-shape.js.map +1 -0
- package/dist/physics/body/collider-shape/list.d.ts +3 -0
- package/dist/physics/body/collider-shape/list.js +5 -0
- package/dist/physics/body/collider-shape/list.js.map +1 -0
- package/dist/physics/body/collider-shape/mass-properties.d.ts +10 -0
- package/dist/physics/body/collider-shape/mass-properties.js +48 -0
- package/dist/physics/body/collider-shape/mass-properties.js.map +1 -0
- package/dist/physics/body/collider-shape/public.d.ts +4 -0
- package/dist/physics/body/collider-shape/public.js +6 -0
- package/dist/physics/body/collider-shape/public.js.map +1 -0
- package/dist/physics/body/collider-shape/schema.d.ts +4 -0
- package/dist/physics/body/collider-shape/schema.js +3 -0
- package/dist/physics/body/collider-shape/schema.js.map +1 -0
- package/dist/physics/body/collider-shape/to-index.d.ts +3 -0
- package/dist/physics/body/collider-shape/to-index.js +6 -0
- package/dist/physics/body/collider-shape/to-index.js.map +1 -0
- package/dist/physics/body/rigid-body.d.ts +23 -0
- package/dist/physics/body/rigid-body.js +3 -0
- package/dist/physics/body/rigid-body.js.map +1 -0
- package/dist/physics/body/static-collider.d.ts +25 -0
- package/dist/physics/body/static-collider.js +3 -0
- package/dist/physics/body/static-collider.js.map +1 -0
- package/dist/physics/joint/joint-plugin.d.ts +88 -0
- package/dist/physics/joint/joint-plugin.js +32 -0
- package/dist/physics/joint/joint-plugin.js.map +1 -0
- package/dist/physics/joint/joint-type/joint-type.d.ts +15 -0
- package/dist/physics/joint/joint-type/joint-type.js +3 -0
- package/dist/physics/joint/joint-type/joint-type.js.map +1 -0
- package/dist/physics/joint/joint-type/public.d.ts +1 -0
- package/dist/physics/joint/joint-type/public.js +3 -0
- package/dist/physics/joint/joint-type/public.js.map +1 -0
- package/dist/physics/joint/joint-type/schema.d.ts +4 -0
- package/dist/physics/joint/joint-type/schema.js +3 -0
- package/dist/physics/joint/joint-type/schema.js.map +1 -0
- package/dist/physics/joint/joint.d.ts +24 -0
- package/dist/physics/joint/joint.js +3 -0
- package/dist/physics/joint/joint.js.map +1 -0
- package/dist/physics/physics-clock-plugin.d.ts +86 -0
- package/dist/physics/physics-clock-plugin.js +37 -0
- package/dist/physics/physics-clock-plugin.js.map +1 -0
- package/dist/physics/physics-clock.test.d.ts +1 -0
- package/dist/physics/physics-clock.test.js +45 -0
- package/dist/physics/physics-clock.test.js.map +1 -0
- package/dist/physics/physics-data-plugin.d.ts +348 -0
- package/dist/physics/physics-data-plugin.js +71 -0
- package/dist/physics/physics-data-plugin.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.d.ts +39 -0
- package/dist/physics/ragdoll/fit-bone-capsules.js +87 -0
- package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.d.ts +1 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.js +67 -0
- package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -0
- package/dist/physics/solvers/jolt-solver-plugin.d.ts +465 -0
- package/dist/physics/solvers/jolt-solver-plugin.js +440 -0
- package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.d.ts +1 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.js +35 -0
- package/dist/physics/solvers/rapier-jolt.benchmark.test.js.map +1 -0
- package/dist/physics/solvers/rapier-solver-plugin.d.ts +444 -0
- package/dist/physics/solvers/rapier-solver-plugin.js +284 -0
- package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -0
- package/dist/physics/solvers/solver-benchmark.d.ts +45 -0
- package/dist/physics/solvers/solver-benchmark.js +115 -0
- package/dist/physics/solvers/solver-benchmark.js.map +1 -0
- package/package.json +34 -0
- package/src/core/core-plugin.ts +92 -0
- package/src/core/frame-time/frame-time-plugin.ts +44 -0
- package/src/core/frame-time/frame-time.ts +21 -0
- package/src/core/frame-time/public.ts +3 -0
- package/src/graphics/animation/animation-data-plugin.ts +119 -0
- package/src/graphics/animation/animation-plugin.test.ts +161 -0
- package/src/graphics/animation/animation-plugin.ts +26 -0
- package/src/graphics/animation/animation-track/animation-track.ts +17 -0
- package/src/graphics/animation/animation-track/componentwise-lerp.ts +24 -0
- package/src/graphics/animation/animation-track/interpolate.ts +24 -0
- package/src/graphics/animation/animation-track/public.ts +3 -0
- package/src/graphics/animation/animation-track/sample.ts +48 -0
- package/src/graphics/animation/interpolation-mode/interpolation-mode.ts +8 -0
- package/src/graphics/animation/interpolation-mode/public.ts +3 -0
- package/src/graphics/animation/interpolation-mode/schema.ts +5 -0
- package/src/graphics/camera/camera-plugin.ts +37 -0
- package/src/graphics/camera/camera.ts +8 -0
- package/src/graphics/camera/orbit/attach-orbit-drag.ts +62 -0
- package/src/graphics/camera/orbit/orbit-data-plugin.ts +44 -0
- package/src/graphics/camera/orbit/orbit-plugin.ts +13 -0
- package/src/graphics/camera/orbit/orbit-system-plugin.ts +74 -0
- package/src/graphics/camera/orbit/orbit.ts +36 -0
- package/src/graphics/camera/orbit/public.ts +7 -0
- package/src/graphics/camera/public.ts +6 -0
- package/src/graphics/camera/schema.ts +21 -0
- package/src/graphics/camera/screen-to-world-ray.ts +47 -0
- package/src/graphics/camera/to-view-projection.ts +29 -0
- package/src/graphics/graphics-plugin.ts +108 -0
- package/src/graphics/picking/pick-hit.ts +13 -0
- package/src/graphics/picking/picking-plugin.ts +101 -0
- package/src/graphics/plugins.md +120 -0
- package/src/graphics/rendering/bone-collider-plugin.ts +182 -0
- package/src/graphics/rendering/display-transform-plugin.ts +26 -0
- package/src/graphics/rendering/ibl-render/brdf.wgsl.ts +43 -0
- package/src/graphics/rendering/ibl-render/ibl/brdf-lut.ts +101 -0
- package/src/graphics/rendering/ibl-render/ibl/build-ibl-resources.ts +57 -0
- package/src/graphics/rendering/ibl-render/ibl/create-cubemap.ts +17 -0
- package/src/graphics/rendering/ibl-render/ibl/cube-face-view.ts +11 -0
- package/src/graphics/rendering/ibl-render/ibl/cubemap-sample-view.ts +9 -0
- package/src/graphics/rendering/ibl-render/ibl/environment.ts +190 -0
- package/src/graphics/rendering/ibl-render/ibl/float-to-half.ts +35 -0
- package/src/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.ts +60 -0
- package/src/graphics/rendering/ibl-render/ibl/irradiance.ts +105 -0
- package/src/graphics/rendering/ibl-render/ibl/parse-hdr.ts +108 -0
- package/src/graphics/rendering/ibl-render/ibl/prefilter.ts +121 -0
- package/src/graphics/rendering/ibl-render/ibl/render-helpers.ts +17 -0
- package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +415 -0
- package/src/graphics/rendering/ibl-render/ibl-shader.wgsl.ts +185 -0
- package/src/graphics/rendering/ibl-render/skybox-shader.wgsl.ts +51 -0
- package/src/graphics/rendering/interpolation-plugin.ts +97 -0
- package/src/graphics/rendering/interpolation.test.ts +52 -0
- package/src/graphics/rendering/jolt-ragdoll-plugin.ts +174 -0
- package/src/graphics/rendering/material-gpu/material-arrays.ts +113 -0
- package/src/graphics/rendering/material-gpu/material-bind-group.ts +61 -0
- package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +95 -0
- package/src/graphics/rendering/model-collider-plugin.ts +77 -0
- package/src/graphics/rendering/pbr-core-plugin.ts +40 -0
- package/src/graphics/rendering/pbr-render/pbr-array-shader.wgsl.ts +146 -0
- package/src/graphics/rendering/pbr-render/pbr-render-plugin.ts +247 -0
- package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +106 -0
- package/src/graphics/rendering/ragdoll-trigger-plugin.ts +21 -0
- package/src/graphics/rendering/rendering-plugin.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-attributes/layout.ts +20 -0
- package/src/graphics/rendering/skinning/skinning-attributes/public.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-attributes/skinning-attributes.ts +3 -0
- package/src/graphics/rendering/skinning/skinning-plugin.ts +213 -0
- package/src/graphics/rendering/standard-vertex/layout.ts +19 -0
- package/src/graphics/rendering/standard-vertex/public.ts +4 -0
- package/src/graphics/rendering/standard-vertex/schema.ts +17 -0
- package/src/graphics/rendering/standard-vertex/standard-vertex.ts +8 -0
- package/src/graphics/rendering/visible-material/color-material-options.ts +10 -0
- package/src/graphics/rendering/visible-material/create-bind-group-layout.ts +35 -0
- package/src/graphics/rendering/visible-material/create-color-bind-group.ts +40 -0
- package/src/graphics/rendering/visible-material/public.ts +6 -0
- package/src/graphics/rendering/visible-material/schema.ts +25 -0
- package/src/graphics/rendering/visible-material/visible-material.ts +8 -0
- package/src/graphics/scene/light/light-plugin.ts +37 -0
- package/src/graphics/scene/light/light.ts +18 -0
- package/src/graphics/scene/light/public.ts +1 -0
- package/src/graphics/scene/model/geometry/geometry.ts +12 -0
- package/src/graphics/scene/model/geometry/public.ts +4 -0
- package/src/graphics/scene/model/gltf/accessor-view.ts +53 -0
- package/src/graphics/scene/model/gltf/build-material-bind-group.ts +110 -0
- package/src/graphics/scene/model/gltf/compute-world-matrices.ts +43 -0
- package/src/graphics/scene/model/gltf/create-color-material.ts +47 -0
- package/src/graphics/scene/model/gltf/decode-images.ts +93 -0
- package/src/graphics/scene/model/gltf/gltf-schema.ts +161 -0
- package/src/graphics/scene/model/gltf/load-gltf-model.ts +220 -0
- package/src/graphics/scene/model/gltf/pack-vertex-buffer.ts +116 -0
- package/src/graphics/scene/model/gltf/parse-animations.ts +66 -0
- package/src/graphics/scene/model/gltf/parse-glb.ts +51 -0
- package/src/graphics/scene/model/gltf/parse-skin.ts +67 -0
- package/src/graphics/scene/model/model-loader-plugin.ts +131 -0
- package/src/graphics/scene/model/model-plugin.ts +46 -0
- package/src/graphics/scene/model/model.ts +15 -0
- package/src/graphics/scene/model/public.ts +1 -0
- package/src/graphics/scene/model/shape/convex-hull.test.ts +72 -0
- package/src/graphics/scene/model/shape/convex-hull.ts +141 -0
- package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +61 -0
- package/src/graphics/scene/model/shape/shape-mesh.ts +150 -0
- package/src/graphics/scene/model/shape/upload-shape-mesh.ts +14 -0
- package/src/graphics/scene/model/world-bounds-plugin.ts +88 -0
- package/src/graphics/scene/node/node-data-plugin.ts +28 -0
- package/src/graphics/scene/node/node-plugin.ts +13 -0
- package/src/graphics/scene/node/node.ts +23 -0
- package/src/graphics/scene/node/public.ts +1 -0
- package/src/graphics/scene/node/transform-plugin.ts +72 -0
- package/src/graphics/scene/scene-plugin.ts +20 -0
- package/src/graphics/scene/scene-uniforms/create-bind-group-layout.ts +19 -0
- package/src/graphics/scene/scene-uniforms/public.ts +5 -0
- package/src/graphics/scene/scene-uniforms/scene-uniforms-plugin.ts +64 -0
- package/src/graphics/scene/scene-uniforms/scene-uniforms.ts +15 -0
- package/src/graphics/scene/scene-uniforms/schema.ts +17 -0
- package/src/index.ts +72 -0
- package/src/material/material-plugin.ts +61 -0
- package/src/material/material.ts +38 -0
- package/src/material/public.ts +4 -0
- package/src/material/standard-materials.ts +43 -0
- package/src/physics/README.md +71 -0
- package/src/physics/body/body-type/body-type.ts +14 -0
- package/src/physics/body/body-type/is-dynamic.ts +8 -0
- package/src/physics/body/body-type/public.ts +4 -0
- package/src/physics/body/body-type/schema.ts +5 -0
- package/src/physics/body/collider-mesh.ts +13 -0
- package/src/physics/body/collider-shape/collider-shape.ts +19 -0
- package/src/physics/body/collider-shape/list.ts +7 -0
- package/src/physics/body/collider-shape/mass-properties.ts +47 -0
- package/src/physics/body/collider-shape/public.ts +6 -0
- package/src/physics/body/collider-shape/schema.ts +5 -0
- package/src/physics/body/collider-shape/to-index.ts +8 -0
- package/src/physics/body/rigid-body.ts +26 -0
- package/src/physics/body/static-collider.ts +28 -0
- package/src/physics/joint/joint-plugin.ts +33 -0
- package/src/physics/joint/joint-type/joint-type.ts +19 -0
- package/src/physics/joint/joint-type/public.ts +3 -0
- package/src/physics/joint/joint-type/schema.ts +5 -0
- package/src/physics/joint/joint.ts +27 -0
- package/src/physics/physics-clock-plugin.ts +61 -0
- package/src/physics/physics-clock.test.ts +55 -0
- package/src/physics/physics-data-plugin.ts +73 -0
- package/src/physics/ragdoll/fit-bone-capsules.test.ts +66 -0
- package/src/physics/ragdoll/fit-bone-capsules.ts +106 -0
- package/src/physics/solvers/README.md +63 -0
- package/src/physics/solvers/jolt-solver-plugin.ts +382 -0
- package/src/physics/solvers/rapier-jolt.benchmark.test.ts +39 -0
- package/src/physics/solvers/rapier-solver-plugin.ts +251 -0
- package/src/physics/solvers/solver-benchmark.ts +172 -0
- package/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import brdf from "./brdf.wgsl.js";
|
|
3
|
+
// Skybox shader. Computes the view-ray direction in the vertex shader from the
|
|
4
|
+
// camera's orthonormal basis + half-FOV — bypasses the perspective matrix
|
|
5
|
+
// inverse, which would otherwise depend on the project's specific
|
|
6
|
+
// clip-space convention. Depth state is "always" with no write so primitives
|
|
7
|
+
// drawn afterward in the same render pass overlap correctly.
|
|
8
|
+
export default /* wgsl */ `
|
|
9
|
+
struct SkyboxUniforms {
|
|
10
|
+
right: vec3f,
|
|
11
|
+
aspect: f32,
|
|
12
|
+
up: vec3f,
|
|
13
|
+
tanHalfFov: f32,
|
|
14
|
+
forward: vec3f,
|
|
15
|
+
_pad: f32,
|
|
16
|
+
}
|
|
17
|
+
@group(0) @binding(0) var<uniform> sky: SkyboxUniforms;
|
|
18
|
+
@group(0) @binding(1) var skyCubemap: texture_cube<f32>;
|
|
19
|
+
@group(0) @binding(2) var skySampler: sampler;
|
|
20
|
+
|
|
21
|
+
struct SkyboxOutput {
|
|
22
|
+
@builtin(position) clip: vec4f,
|
|
23
|
+
@location(0) dir: vec3f,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@vertex
|
|
27
|
+
fn vs_skybox(@builtin(vertex_index) i: u32) -> SkyboxOutput {
|
|
28
|
+
let xs = array<f32, 3>(-1.0, 3.0, -1.0);
|
|
29
|
+
let ys = array<f32, 3>(-1.0, -1.0, 3.0);
|
|
30
|
+
let xn = xs[i];
|
|
31
|
+
let yn = ys[i];
|
|
32
|
+
var out: SkyboxOutput;
|
|
33
|
+
out.clip = vec4f(xn, yn, 0.0, 1.0);
|
|
34
|
+
out.dir = sky.forward
|
|
35
|
+
+ sky.right * (xn * sky.aspect * sky.tanHalfFov)
|
|
36
|
+
+ sky.up * (yn * sky.tanHalfFov);
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
${brdf}
|
|
41
|
+
|
|
42
|
+
@fragment
|
|
43
|
+
fn fs_skybox(in: SkyboxOutput) -> @location(0) vec4f {
|
|
44
|
+
let dir = normalize(in.dir);
|
|
45
|
+
let raw = textureSampleLevel(skyCubemap, skySampler, dir, 0.0).rgb;
|
|
46
|
+
let mapped = tone_map_aces(raw);
|
|
47
|
+
return vec4f(pow(mapped, vec3f(1.0 / 2.2)), 1.0);
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
//# sourceMappingURL=skybox-shader.wgsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skybox-shader.wgsl.js","sourceRoot":"","sources":["../../../../src/graphics/rendering/ibl-render/skybox-shader.wgsl.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAElC,+EAA+E;AAC/E,0EAA0E;AAC1E,kEAAkE;AAClE,6EAA6E;AAC7E,6DAA6D;AAC7D,eAAe,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCxB,IAAI;;;;;;;;;CASL,CAAC"}
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
export declare const interpolation: {
|
|
2
|
+
readonly components: {
|
|
3
|
+
readonly visible: {
|
|
4
|
+
readonly type: "boolean";
|
|
5
|
+
readonly const: true;
|
|
6
|
+
readonly default: true;
|
|
7
|
+
};
|
|
8
|
+
readonly position: {
|
|
9
|
+
readonly type: "array";
|
|
10
|
+
readonly items: {
|
|
11
|
+
readonly type: "number";
|
|
12
|
+
readonly precision: 1;
|
|
13
|
+
readonly default: number;
|
|
14
|
+
};
|
|
15
|
+
readonly minItems: 3;
|
|
16
|
+
readonly maxItems: 3;
|
|
17
|
+
readonly default: readonly [0, 0, 0];
|
|
18
|
+
};
|
|
19
|
+
readonly rotation: {
|
|
20
|
+
readonly type: "array";
|
|
21
|
+
readonly items: {
|
|
22
|
+
readonly type: "number";
|
|
23
|
+
readonly precision: 1;
|
|
24
|
+
readonly default: number;
|
|
25
|
+
};
|
|
26
|
+
readonly minItems: 4;
|
|
27
|
+
readonly maxItems: 4;
|
|
28
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
29
|
+
readonly interpolators: {
|
|
30
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
readonly scale: {
|
|
34
|
+
readonly type: "array";
|
|
35
|
+
readonly items: {
|
|
36
|
+
readonly type: "number";
|
|
37
|
+
readonly precision: 1;
|
|
38
|
+
readonly default: number;
|
|
39
|
+
};
|
|
40
|
+
readonly minItems: 3;
|
|
41
|
+
readonly maxItems: 3;
|
|
42
|
+
readonly default: readonly [0, 0, 0];
|
|
43
|
+
};
|
|
44
|
+
readonly parent: {
|
|
45
|
+
readonly type: "integer";
|
|
46
|
+
readonly minimum: -2147483648;
|
|
47
|
+
readonly maximum: 2147483647;
|
|
48
|
+
readonly default: number;
|
|
49
|
+
};
|
|
50
|
+
readonly _worldMatrix: {
|
|
51
|
+
readonly type: "array";
|
|
52
|
+
readonly items: {
|
|
53
|
+
readonly type: "number";
|
|
54
|
+
readonly precision: 1;
|
|
55
|
+
readonly default: number;
|
|
56
|
+
};
|
|
57
|
+
readonly minItems: 16;
|
|
58
|
+
readonly maxItems: 16;
|
|
59
|
+
readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
60
|
+
};
|
|
61
|
+
readonly _worldBounds: {
|
|
62
|
+
readonly type: "object";
|
|
63
|
+
readonly properties: {
|
|
64
|
+
readonly min: {
|
|
65
|
+
readonly type: "array";
|
|
66
|
+
readonly items: {
|
|
67
|
+
readonly type: "number";
|
|
68
|
+
readonly precision: 1;
|
|
69
|
+
readonly default: number;
|
|
70
|
+
};
|
|
71
|
+
readonly minItems: 3;
|
|
72
|
+
readonly maxItems: 3;
|
|
73
|
+
readonly default: readonly [0, 0, 0];
|
|
74
|
+
};
|
|
75
|
+
readonly max: {
|
|
76
|
+
readonly type: "array";
|
|
77
|
+
readonly items: {
|
|
78
|
+
readonly type: "number";
|
|
79
|
+
readonly precision: 1;
|
|
80
|
+
readonly default: number;
|
|
81
|
+
};
|
|
82
|
+
readonly minItems: 3;
|
|
83
|
+
readonly maxItems: 3;
|
|
84
|
+
readonly default: readonly [0, 0, 0];
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
readonly required: readonly ["min", "max"];
|
|
88
|
+
readonly additionalProperties: false;
|
|
89
|
+
readonly default: {
|
|
90
|
+
readonly min: readonly [0, 0, 0];
|
|
91
|
+
readonly max: readonly [0, 0, 0];
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
} & {} & {
|
|
95
|
+
readonly material: {
|
|
96
|
+
readonly type: "integer";
|
|
97
|
+
readonly minimum: -2147483648;
|
|
98
|
+
readonly maximum: 2147483647;
|
|
99
|
+
readonly default: number;
|
|
100
|
+
};
|
|
101
|
+
readonly name: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
};
|
|
104
|
+
readonly density: {
|
|
105
|
+
readonly type: "number";
|
|
106
|
+
readonly precision: 1;
|
|
107
|
+
readonly default: number;
|
|
108
|
+
};
|
|
109
|
+
readonly restitution: {
|
|
110
|
+
readonly type: "number";
|
|
111
|
+
readonly precision: 1;
|
|
112
|
+
readonly default: number;
|
|
113
|
+
};
|
|
114
|
+
readonly friction: {
|
|
115
|
+
readonly type: "number";
|
|
116
|
+
readonly precision: 1;
|
|
117
|
+
readonly default: number;
|
|
118
|
+
};
|
|
119
|
+
readonly compliance: {
|
|
120
|
+
readonly type: "number";
|
|
121
|
+
readonly precision: 1;
|
|
122
|
+
readonly default: number;
|
|
123
|
+
};
|
|
124
|
+
readonly heatCapacity: {
|
|
125
|
+
readonly type: "number";
|
|
126
|
+
readonly precision: 1;
|
|
127
|
+
readonly default: number;
|
|
128
|
+
};
|
|
129
|
+
readonly baseColorFactor: {
|
|
130
|
+
readonly type: "array";
|
|
131
|
+
readonly items: {
|
|
132
|
+
readonly type: "number";
|
|
133
|
+
readonly precision: 1;
|
|
134
|
+
readonly default: number;
|
|
135
|
+
};
|
|
136
|
+
readonly minItems: 4;
|
|
137
|
+
readonly maxItems: 4;
|
|
138
|
+
readonly default: readonly [0, 0, 0, 0];
|
|
139
|
+
};
|
|
140
|
+
readonly emissiveFactor: {
|
|
141
|
+
readonly type: "array";
|
|
142
|
+
readonly items: {
|
|
143
|
+
readonly type: "number";
|
|
144
|
+
readonly precision: 1;
|
|
145
|
+
readonly default: number;
|
|
146
|
+
};
|
|
147
|
+
readonly minItems: 3;
|
|
148
|
+
readonly maxItems: 3;
|
|
149
|
+
readonly default: readonly [0, 0, 0];
|
|
150
|
+
};
|
|
151
|
+
readonly metallicFactor: {
|
|
152
|
+
readonly type: "number";
|
|
153
|
+
readonly precision: 1;
|
|
154
|
+
readonly default: number;
|
|
155
|
+
};
|
|
156
|
+
readonly roughnessFactor: {
|
|
157
|
+
readonly type: "number";
|
|
158
|
+
readonly precision: 1;
|
|
159
|
+
readonly default: number;
|
|
160
|
+
};
|
|
161
|
+
readonly normalScale: {
|
|
162
|
+
readonly type: "number";
|
|
163
|
+
readonly precision: 1;
|
|
164
|
+
readonly default: number;
|
|
165
|
+
};
|
|
166
|
+
readonly occlusionStrength: {
|
|
167
|
+
readonly type: "number";
|
|
168
|
+
readonly precision: 1;
|
|
169
|
+
readonly default: number;
|
|
170
|
+
};
|
|
171
|
+
readonly baseColorUrl: {
|
|
172
|
+
readonly type: "string";
|
|
173
|
+
};
|
|
174
|
+
readonly metallicRoughnessUrl: {
|
|
175
|
+
readonly type: "string";
|
|
176
|
+
};
|
|
177
|
+
readonly normalUrl: {
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
};
|
|
180
|
+
readonly occlusionUrl: {
|
|
181
|
+
readonly type: "string";
|
|
182
|
+
};
|
|
183
|
+
readonly emissiveUrl: {
|
|
184
|
+
readonly type: "string";
|
|
185
|
+
};
|
|
186
|
+
} & {
|
|
187
|
+
readonly bodyType: {
|
|
188
|
+
readonly type: "string";
|
|
189
|
+
readonly enum: readonly ["static", "dynamic", "kinematic"];
|
|
190
|
+
};
|
|
191
|
+
readonly colliderShape: {
|
|
192
|
+
readonly type: "string";
|
|
193
|
+
readonly enum: readonly ["sphere", "box", "capsule", "hull", "mesh"];
|
|
194
|
+
};
|
|
195
|
+
readonly halfExtents: {
|
|
196
|
+
readonly type: "array";
|
|
197
|
+
readonly items: {
|
|
198
|
+
readonly type: "number";
|
|
199
|
+
readonly precision: 1;
|
|
200
|
+
readonly default: number;
|
|
201
|
+
};
|
|
202
|
+
readonly minItems: 3;
|
|
203
|
+
readonly maxItems: 3;
|
|
204
|
+
readonly default: readonly [0, 0, 0];
|
|
205
|
+
};
|
|
206
|
+
readonly position: {
|
|
207
|
+
readonly type: "array";
|
|
208
|
+
readonly items: {
|
|
209
|
+
readonly type: "number";
|
|
210
|
+
readonly precision: 1;
|
|
211
|
+
readonly default: number;
|
|
212
|
+
};
|
|
213
|
+
readonly minItems: 3;
|
|
214
|
+
readonly maxItems: 3;
|
|
215
|
+
readonly default: readonly [0, 0, 0];
|
|
216
|
+
};
|
|
217
|
+
readonly rotation: {
|
|
218
|
+
readonly type: "array";
|
|
219
|
+
readonly items: {
|
|
220
|
+
readonly type: "number";
|
|
221
|
+
readonly precision: 1;
|
|
222
|
+
readonly default: number;
|
|
223
|
+
};
|
|
224
|
+
readonly minItems: 4;
|
|
225
|
+
readonly maxItems: 4;
|
|
226
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
227
|
+
readonly interpolators: {
|
|
228
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
readonly linearVelocity: {
|
|
232
|
+
readonly type: "array";
|
|
233
|
+
readonly items: {
|
|
234
|
+
readonly type: "number";
|
|
235
|
+
readonly precision: 1;
|
|
236
|
+
readonly default: number;
|
|
237
|
+
};
|
|
238
|
+
readonly minItems: 3;
|
|
239
|
+
readonly maxItems: 3;
|
|
240
|
+
readonly default: readonly [0, 0, 0];
|
|
241
|
+
};
|
|
242
|
+
readonly angularVelocity: {
|
|
243
|
+
readonly type: "array";
|
|
244
|
+
readonly items: {
|
|
245
|
+
readonly type: "number";
|
|
246
|
+
readonly precision: 1;
|
|
247
|
+
readonly default: number;
|
|
248
|
+
};
|
|
249
|
+
readonly minItems: 3;
|
|
250
|
+
readonly maxItems: 3;
|
|
251
|
+
readonly default: readonly [0, 0, 0];
|
|
252
|
+
};
|
|
253
|
+
readonly _prevPosition: {
|
|
254
|
+
readonly type: "array";
|
|
255
|
+
readonly items: {
|
|
256
|
+
readonly type: "number";
|
|
257
|
+
readonly precision: 1;
|
|
258
|
+
readonly default: number;
|
|
259
|
+
};
|
|
260
|
+
readonly minItems: 3;
|
|
261
|
+
readonly maxItems: 3;
|
|
262
|
+
readonly default: readonly [0, 0, 0];
|
|
263
|
+
};
|
|
264
|
+
readonly _prevRotation: {
|
|
265
|
+
readonly type: "array";
|
|
266
|
+
readonly items: {
|
|
267
|
+
readonly type: "number";
|
|
268
|
+
readonly precision: 1;
|
|
269
|
+
readonly default: number;
|
|
270
|
+
};
|
|
271
|
+
readonly minItems: 4;
|
|
272
|
+
readonly maxItems: 4;
|
|
273
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
274
|
+
readonly interpolators: {
|
|
275
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
276
|
+
};
|
|
277
|
+
};
|
|
278
|
+
readonly collisionGroup: {
|
|
279
|
+
readonly type: "number";
|
|
280
|
+
readonly precision: 1;
|
|
281
|
+
readonly default: number;
|
|
282
|
+
};
|
|
283
|
+
readonly convexPoints: {
|
|
284
|
+
readonly default: Float32Array | null;
|
|
285
|
+
};
|
|
286
|
+
readonly colliderMesh: {
|
|
287
|
+
readonly default: import("../../physics/body/collider-mesh.js").ColliderMesh | null;
|
|
288
|
+
};
|
|
289
|
+
} & {
|
|
290
|
+
readonly _renderPosition: {
|
|
291
|
+
readonly type: "array";
|
|
292
|
+
readonly items: {
|
|
293
|
+
readonly type: "number";
|
|
294
|
+
readonly precision: 1;
|
|
295
|
+
readonly default: number;
|
|
296
|
+
};
|
|
297
|
+
readonly minItems: 3;
|
|
298
|
+
readonly maxItems: 3;
|
|
299
|
+
readonly default: readonly [0, 0, 0];
|
|
300
|
+
};
|
|
301
|
+
readonly _renderRotation: {
|
|
302
|
+
readonly type: "array";
|
|
303
|
+
readonly items: {
|
|
304
|
+
readonly type: "number";
|
|
305
|
+
readonly precision: 1;
|
|
306
|
+
readonly default: number;
|
|
307
|
+
};
|
|
308
|
+
readonly minItems: 4;
|
|
309
|
+
readonly maxItems: 4;
|
|
310
|
+
readonly default: readonly [0, 0, 0, 1];
|
|
311
|
+
readonly interpolators: {
|
|
312
|
+
readonly linear: (q1: any, q2: any, t: number) => any;
|
|
313
|
+
};
|
|
314
|
+
};
|
|
315
|
+
};
|
|
316
|
+
readonly resources: {} & {
|
|
317
|
+
readonly materials: {
|
|
318
|
+
readonly default: Record<string, number>;
|
|
319
|
+
};
|
|
320
|
+
} & {
|
|
321
|
+
readonly frameTime: {
|
|
322
|
+
readonly default: import("../../core/frame-time/public.js");
|
|
323
|
+
readonly transient: true;
|
|
324
|
+
};
|
|
325
|
+
} & {
|
|
326
|
+
readonly schedulerState: {
|
|
327
|
+
readonly default: import("@adobe/data/ecs").SchedulerState;
|
|
328
|
+
};
|
|
329
|
+
} & {
|
|
330
|
+
readonly device: {
|
|
331
|
+
readonly default: GPUDevice | null;
|
|
332
|
+
readonly transient: true;
|
|
333
|
+
};
|
|
334
|
+
readonly commandEncoder: {
|
|
335
|
+
readonly default: GPUCommandEncoder | null;
|
|
336
|
+
readonly transient: true;
|
|
337
|
+
};
|
|
338
|
+
} & {
|
|
339
|
+
readonly physicsClock: {
|
|
340
|
+
readonly default: import("../../physics/physics-clock-plugin.js").PhysicsClock;
|
|
341
|
+
readonly transient: true;
|
|
342
|
+
};
|
|
343
|
+
};
|
|
344
|
+
readonly archetypes: {
|
|
345
|
+
readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
|
|
346
|
+
} & {} & {} & {
|
|
347
|
+
readonly Material: readonly ["name", "density", "restitution", "friction", "compliance", "heatCapacity", "baseColorFactor", "emissiveFactor", "metallicFactor", "roughnessFactor", "normalScale", "occlusionStrength", "baseColorUrl", "metallicRoughnessUrl", "normalUrl", "occlusionUrl", "emissiveUrl"];
|
|
348
|
+
} & {
|
|
349
|
+
readonly RigidBody: readonly ["bodyType", "colliderShape", "halfExtents", "material", "position", "rotation", "linearVelocity", "angularVelocity"];
|
|
350
|
+
readonly StaticCollider: readonly ["colliderShape", "halfExtents", "material", "position", "rotation"];
|
|
351
|
+
readonly ConvexBody: readonly ["bodyType", "colliderShape", "halfExtents", "material", "position", "rotation", "linearVelocity", "angularVelocity", "convexPoints"];
|
|
352
|
+
readonly MeshCollider: readonly ["colliderShape", "halfExtents", "material", "position", "rotation", "colliderMesh"];
|
|
353
|
+
} & {} & {};
|
|
354
|
+
readonly transactions: {} & {} & {
|
|
355
|
+
readonly seedStandardMaterials: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{
|
|
356
|
+
readonly material: {
|
|
357
|
+
readonly type: "integer";
|
|
358
|
+
readonly minimum: -2147483648;
|
|
359
|
+
readonly maximum: 2147483647;
|
|
360
|
+
readonly default: number;
|
|
361
|
+
};
|
|
362
|
+
readonly name: {
|
|
363
|
+
readonly type: "string";
|
|
364
|
+
};
|
|
365
|
+
readonly density: {
|
|
366
|
+
readonly type: "number";
|
|
367
|
+
readonly precision: 1;
|
|
368
|
+
readonly default: number;
|
|
369
|
+
};
|
|
370
|
+
readonly restitution: {
|
|
371
|
+
readonly type: "number";
|
|
372
|
+
readonly precision: 1;
|
|
373
|
+
readonly default: number;
|
|
374
|
+
};
|
|
375
|
+
readonly friction: {
|
|
376
|
+
readonly type: "number";
|
|
377
|
+
readonly precision: 1;
|
|
378
|
+
readonly default: number;
|
|
379
|
+
};
|
|
380
|
+
readonly compliance: {
|
|
381
|
+
readonly type: "number";
|
|
382
|
+
readonly precision: 1;
|
|
383
|
+
readonly default: number;
|
|
384
|
+
};
|
|
385
|
+
readonly heatCapacity: {
|
|
386
|
+
readonly type: "number";
|
|
387
|
+
readonly precision: 1;
|
|
388
|
+
readonly default: number;
|
|
389
|
+
};
|
|
390
|
+
readonly baseColorFactor: {
|
|
391
|
+
readonly type: "array";
|
|
392
|
+
readonly items: {
|
|
393
|
+
readonly type: "number";
|
|
394
|
+
readonly precision: 1;
|
|
395
|
+
readonly default: number;
|
|
396
|
+
};
|
|
397
|
+
readonly minItems: 4;
|
|
398
|
+
readonly maxItems: 4;
|
|
399
|
+
readonly default: readonly [0, 0, 0, 0];
|
|
400
|
+
};
|
|
401
|
+
readonly emissiveFactor: {
|
|
402
|
+
readonly type: "array";
|
|
403
|
+
readonly items: {
|
|
404
|
+
readonly type: "number";
|
|
405
|
+
readonly precision: 1;
|
|
406
|
+
readonly default: number;
|
|
407
|
+
};
|
|
408
|
+
readonly minItems: 3;
|
|
409
|
+
readonly maxItems: 3;
|
|
410
|
+
readonly default: readonly [0, 0, 0];
|
|
411
|
+
};
|
|
412
|
+
readonly metallicFactor: {
|
|
413
|
+
readonly type: "number";
|
|
414
|
+
readonly precision: 1;
|
|
415
|
+
readonly default: number;
|
|
416
|
+
};
|
|
417
|
+
readonly roughnessFactor: {
|
|
418
|
+
readonly type: "number";
|
|
419
|
+
readonly precision: 1;
|
|
420
|
+
readonly default: number;
|
|
421
|
+
};
|
|
422
|
+
readonly normalScale: {
|
|
423
|
+
readonly type: "number";
|
|
424
|
+
readonly precision: 1;
|
|
425
|
+
readonly default: number;
|
|
426
|
+
};
|
|
427
|
+
readonly occlusionStrength: {
|
|
428
|
+
readonly type: "number";
|
|
429
|
+
readonly precision: 1;
|
|
430
|
+
readonly default: number;
|
|
431
|
+
};
|
|
432
|
+
readonly baseColorUrl: {
|
|
433
|
+
readonly type: "string";
|
|
434
|
+
};
|
|
435
|
+
readonly metallicRoughnessUrl: {
|
|
436
|
+
readonly type: "string";
|
|
437
|
+
};
|
|
438
|
+
readonly normalUrl: {
|
|
439
|
+
readonly type: "string";
|
|
440
|
+
};
|
|
441
|
+
readonly occlusionUrl: {
|
|
442
|
+
readonly type: "string";
|
|
443
|
+
};
|
|
444
|
+
readonly emissiveUrl: {
|
|
445
|
+
readonly type: "string";
|
|
446
|
+
};
|
|
447
|
+
}>, import("@adobe/data/schema").FromSchemas<{
|
|
448
|
+
readonly materials: {
|
|
449
|
+
readonly default: Record<string, number>;
|
|
450
|
+
};
|
|
451
|
+
}>, {
|
|
452
|
+
readonly Material: readonly ["name", "density", "restitution", "friction", "compliance", "heatCapacity", "baseColorFactor", "emissiveFactor", "metallicFactor", "roughnessFactor", "normalScale", "occlusionStrength", "baseColorUrl", "metallicRoughnessUrl", "normalUrl", "occlusionUrl", "emissiveUrl"];
|
|
453
|
+
}, {}>) => void;
|
|
454
|
+
} & {} & {} & {} & {
|
|
455
|
+
readonly setFixedTimestep: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{}>, import("@adobe/data/schema").FromSchemas<{
|
|
456
|
+
readonly physicsClock: {
|
|
457
|
+
readonly default: import("../../physics/physics-clock-plugin.js").PhysicsClock;
|
|
458
|
+
readonly transient: true;
|
|
459
|
+
};
|
|
460
|
+
} & {
|
|
461
|
+
readonly frameTime: {
|
|
462
|
+
readonly default: import("../../core/frame-time/public.js");
|
|
463
|
+
readonly transient: true;
|
|
464
|
+
};
|
|
465
|
+
} & {
|
|
466
|
+
readonly schedulerState: {
|
|
467
|
+
readonly default: import("@adobe/data/ecs").SchedulerState;
|
|
468
|
+
};
|
|
469
|
+
} & {
|
|
470
|
+
readonly device: {
|
|
471
|
+
readonly default: GPUDevice | null;
|
|
472
|
+
readonly transient: true;
|
|
473
|
+
};
|
|
474
|
+
readonly commandEncoder: {
|
|
475
|
+
readonly default: GPUCommandEncoder | null;
|
|
476
|
+
readonly transient: true;
|
|
477
|
+
};
|
|
478
|
+
}>, {}, {}>, hz: number) => void;
|
|
479
|
+
} & {} & {};
|
|
480
|
+
readonly systems: import("@adobe/data/ecs").SystemDeclarations<"transformCreateWorldMatrix" | "transformSystem" | "update" | "_frameTime" | "schedulerSystem" | "input" | "preUpdate" | "postUpdate" | "physics" | "preRender" | "render" | "postRender" | "advancePhysicsClock" | "interpolateDisplayPose" | "interpolateWorldMatrix">;
|
|
481
|
+
readonly actions: {};
|
|
482
|
+
readonly services: {};
|
|
483
|
+
readonly computed: {};
|
|
484
|
+
readonly indexes: {} & {} & {} & {} & {} & {} & {};
|
|
485
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { Database } from "@adobe/data/ecs";
|
|
3
|
+
import { Mat4x4, Quat } from "@adobe/data/math";
|
|
4
|
+
import { physicsData } from "../../physics/physics-data-plugin.js";
|
|
5
|
+
import { physicsClock } from "../../physics/physics-clock-plugin.js";
|
|
6
|
+
import { transform } from "../scene/node/transform-plugin.js";
|
|
7
|
+
import { displayTransform } from "./display-transform-plugin.js";
|
|
8
|
+
/**
|
|
9
|
+
* interpolation — the single pre-render pass that turns the fixed-step physics
|
|
10
|
+
* state into a smooth display pose. Because the solver steps on `physicsClock`
|
|
11
|
+
* (0..N steps/frame), the canonical `position`/`rotation` jump in fixed
|
|
12
|
+
* increments; rendering them raw judders when the render rate ≠ the sim rate.
|
|
13
|
+
*
|
|
14
|
+
* Each render frame this blends `_prevPosition`→`position` (and the rotations)
|
|
15
|
+
* by `physicsClock.alpha` into `_renderPosition`/`_renderRotation`, which the
|
|
16
|
+
* renderer draws. Doing it once here (not in each renderer) keeps render systems
|
|
17
|
+
* free of physics knowledge — they only read the display transform.
|
|
18
|
+
*
|
|
19
|
+
* Bodies gain `_renderPosition`/`_renderRotation` the first frame after the
|
|
20
|
+
* solver has mirrored them (i.e. once `_prevPosition` exists); the tag-exclude
|
|
21
|
+
* query means steady state never re-scans already-equipped bodies.
|
|
22
|
+
*/
|
|
23
|
+
// Dynamic bodies that have been mirrored (so `_prevPosition` exists) but don't
|
|
24
|
+
// yet carry the display-pose columns — give them those columns once.
|
|
25
|
+
const NEEDS_RENDER_POSE = ["position", "rotation", "_prevPosition"];
|
|
26
|
+
const WITHOUT_RENDER_POSE = { exclude: ["_renderPosition"] };
|
|
27
|
+
// Fully-equipped bodies: blend prev→current into the display pose every frame.
|
|
28
|
+
const INTERPOLATED = ["position", "rotation", "_prevPosition", "_prevRotation", "_renderPosition", "_renderRotation"];
|
|
29
|
+
// Interpolated bodies that render through the world-matrix path (models, which have
|
|
30
|
+
// a `parent`/`_worldMatrix`) rather than the flat instanced path.
|
|
31
|
+
const INTERPOLATED_MODEL = ["_renderPosition", "_renderRotation", "scale", "parent", "_worldMatrix"];
|
|
32
|
+
export const interpolation = Database.Plugin.create({
|
|
33
|
+
extends: Database.Plugin.combine(physicsData, physicsClock, displayTransform, transform),
|
|
34
|
+
systems: {
|
|
35
|
+
interpolateDisplayPose: {
|
|
36
|
+
schedule: { during: ["preRender"] },
|
|
37
|
+
create: db => () => {
|
|
38
|
+
// 1) Equip newly-mirrored bodies with display-pose columns (seed = current
|
|
39
|
+
// pose). Tail→head: every visited row migrates out on gaining the columns.
|
|
40
|
+
for (const arch of db.store.queryArchetypes(NEEDS_RENDER_POSE, WITHOUT_RENDER_POSE)) {
|
|
41
|
+
const ids = arch.columns.id, pos = arch.columns.position, ori = arch.columns.rotation;
|
|
42
|
+
for (let r = arch.rowCount - 1; r >= 0; r--) {
|
|
43
|
+
db.store.update(ids.get(r), { _renderPosition: pos.get(r), _renderRotation: ori.get(r) });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// 2) Blend prev→current by alpha into the display pose — every frame, in
|
|
47
|
+
// place (no migration), straight on the backing typed arrays.
|
|
48
|
+
const alpha = db.store.resources.physicsClock.alpha;
|
|
49
|
+
for (const arch of db.store.queryArchetypes(INTERPOLATED)) {
|
|
50
|
+
const pos = arch.columns.position.getTypedArray(), ori = arch.columns.rotation.getTypedArray();
|
|
51
|
+
const pp = arch.columns._prevPosition.getTypedArray(), pr = arch.columns._prevRotation.getTypedArray();
|
|
52
|
+
const rp = arch.columns._renderPosition.getTypedArray(), rr = arch.columns._renderRotation.getTypedArray();
|
|
53
|
+
for (let r = 0; r < arch.rowCount; r++) {
|
|
54
|
+
const r3 = r * 3, r4 = r * 4;
|
|
55
|
+
rp[r3] = pp[r3] + (pos[r3] - pp[r3]) * alpha;
|
|
56
|
+
rp[r3 + 1] = pp[r3 + 1] + (pos[r3 + 1] - pp[r3 + 1]) * alpha;
|
|
57
|
+
rp[r3 + 2] = pp[r3 + 2] + (pos[r3 + 2] - pp[r3 + 2]) * alpha;
|
|
58
|
+
// nlerp with shortest-path sign flip — cheap, allocation-free, and
|
|
59
|
+
// visually exact for the small per-step rotations of interpolation.
|
|
60
|
+
let ax = pr[r4], ay = pr[r4 + 1], az = pr[r4 + 2], aw = pr[r4 + 3];
|
|
61
|
+
const bx = ori[r4], by = ori[r4 + 1], bz = ori[r4 + 2], bw = ori[r4 + 3];
|
|
62
|
+
if (ax * bx + ay * by + az * bz + aw * bw < 0) {
|
|
63
|
+
ax = -ax;
|
|
64
|
+
ay = -ay;
|
|
65
|
+
az = -az;
|
|
66
|
+
aw = -aw;
|
|
67
|
+
}
|
|
68
|
+
const x = ax + (bx - ax) * alpha, y = ay + (by - ay) * alpha, z = az + (bz - az) * alpha, w = aw + (bw - aw) * alpha;
|
|
69
|
+
const inv = 1 / Math.hypot(x, y, z, w);
|
|
70
|
+
rr[r4] = x * inv;
|
|
71
|
+
rr[r4 + 1] = y * inv;
|
|
72
|
+
rr[r4 + 2] = z * inv;
|
|
73
|
+
rr[r4 + 3] = w * inv;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
// Models render from `_worldMatrix` (the transform path), not the flat display
|
|
79
|
+
// pose — so recompose their world matrix from the interpolated pose, after the
|
|
80
|
+
// blend above and after `transformSystem` (which wrote the raw, juddering pose).
|
|
81
|
+
interpolateWorldMatrix: {
|
|
82
|
+
schedule: { during: ["preRender"], after: ["interpolateDisplayPose", "transformSystem"] },
|
|
83
|
+
create: db => () => {
|
|
84
|
+
for (const arch of db.store.queryArchetypes(INTERPOLATED_MODEL)) {
|
|
85
|
+
const rp = arch.columns._renderPosition.getTypedArray(), rr = arch.columns._renderRotation.getTypedArray();
|
|
86
|
+
const scl = arch.columns.scale, parents = arch.columns.parent, world = arch.columns._worldMatrix;
|
|
87
|
+
for (let i = 0; i < arch.rowCount; i++) {
|
|
88
|
+
const r3 = i * 3, r4 = i * 4, s = scl.get(i), parentId = parents.get(i);
|
|
89
|
+
const local = Mat4x4.multiply(Mat4x4.translation(rp[r3], rp[r3 + 1], rp[r3 + 2]), Mat4x4.multiply(Quat.toMat4([rr[r4], rr[r4 + 1], rr[r4 + 2], rr[r4 + 3]]), Mat4x4.scaling(s[0], s[1], s[2])));
|
|
90
|
+
const parentWorld = parentId === 0 ? Mat4x4.identity : db.store.get(parentId, "_worldMatrix") ?? Mat4x4.identity;
|
|
91
|
+
world.set(i, parentId === 0 ? local : Mat4x4.multiply(parentWorld, local));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=interpolation-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolation-plugin.js","sourceRoot":"","sources":["../../../src/graphics/rendering/interpolation-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|