aigpu 0.3.1
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/LICENSE +22 -0
- package/README.md +85 -0
- package/bin/aigpu.js +15 -0
- package/client.d.ts +15 -0
- package/dist/agent-tools.d.ts +61 -0
- package/dist/agent-tools.d.ts.map +1 -0
- package/dist/agent-tools.js +107 -0
- package/dist/agent-tools.js.map +1 -0
- package/dist/agent.d.ts +56 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +243 -0
- package/dist/agent.js.map +1 -0
- package/dist/api-types.d.ts +56 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +2 -0
- package/dist/api-types.js.map +1 -0
- package/dist/bind-cache.d.ts +19 -0
- package/dist/bind-cache.d.ts.map +1 -0
- package/dist/bind-cache.js +43 -0
- package/dist/bind-cache.js.map +1 -0
- package/dist/bundle.d.ts +30 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +127 -0
- package/dist/bundle.js.map +1 -0
- package/dist/claim-validation-encode.d.ts +14 -0
- package/dist/claim-validation-encode.d.ts.map +1 -0
- package/dist/claim-validation-encode.js +28 -0
- package/dist/claim-validation-encode.js.map +1 -0
- package/dist/claim-validation.d.ts +73 -0
- package/dist/claim-validation.d.ts.map +1 -0
- package/dist/claim-validation.js +135 -0
- package/dist/claim-validation.js.map +1 -0
- package/dist/cli/bin/aigpu.js +101 -0
- package/dist/cli/lib/check/run.js +153 -0
- package/dist/cli/lib/docs/commands/cat.js +12 -0
- package/dist/cli/lib/docs/commands/find.js +180 -0
- package/dist/cli/lib/docs/commands/grep.js +49 -0
- package/dist/cli/lib/docs/commands/ls.js +41 -0
- package/dist/cli/lib/docs/commands/path.js +12 -0
- package/dist/cli/lib/docs/commands/resolve.js +41 -0
- package/dist/cli/lib/docs/commands/shared.js +13 -0
- package/dist/cli/lib/docs/commands/symbols.js +25 -0
- package/dist/cli/lib/docs/errors.js +8 -0
- package/dist/cli/lib/docs/generate/check-drift.js +61 -0
- package/dist/cli/lib/docs/generate/cli.js +12 -0
- package/dist/cli/lib/docs/generate/generate.js +113 -0
- package/dist/cli/lib/docs/generate/manifest.js +218 -0
- package/dist/cli/lib/docs/generate/skill.js +150 -0
- package/dist/cli/lib/docs/help.js +21 -0
- package/dist/cli/lib/docs/index.js +62 -0
- package/dist/cli/lib/docs/model.js +7 -0
- package/dist/cli/lib/docs/run.js +24 -0
- package/dist/cli/lib/docs/service.js +119 -0
- package/dist/cli/lib/doctor/run.js +236 -0
- package/dist/cli/lib/examples/errors.js +13 -0
- package/dist/cli/lib/examples/hashing.js +9 -0
- package/dist/cli/lib/examples/help.js +13 -0
- package/dist/cli/lib/examples/local-source.js +142 -0
- package/dist/cli/lib/examples/paths.js +12 -0
- package/dist/cli/lib/examples/pull.js +58 -0
- package/dist/cli/lib/examples/run.js +71 -0
- package/dist/cli/lib/examples/search.js +6 -0
- package/dist/cli/lib/examples/service.js +118 -0
- package/dist/cli/lib/generated/docs-manifest.generated.js +4758 -0
- package/dist/cli/lib/install-dawn/run.js +24 -0
- package/dist/cli/lib/install-software-renderer/run.js +17 -0
- package/dist/cli/lib/mcp/http.js +93 -0
- package/dist/cli/lib/mcp/server.js +258 -0
- package/dist/cli/lib/mcp/stdio.js +34 -0
- package/dist/cli/lib/snapshot/png.js +62 -0
- package/dist/cli/lib/snapshot/render.js +22 -0
- package/dist/cli/lib/snapshot/run.js +79 -0
- package/dist/cli/lib/snapshot/shaders.js +11 -0
- package/dist/cli/package.json +4 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/clock.d.ts +26 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +50 -0
- package/dist/clock.js.map +1 -0
- package/dist/compute.d.ts +41 -0
- package/dist/compute.d.ts.map +1 -0
- package/dist/compute.js +132 -0
- package/dist/compute.js.map +1 -0
- package/dist/core/render-bundle.d.ts +30 -0
- package/dist/core/render-bundle.d.ts.map +1 -0
- package/dist/core/render-bundle.js +39 -0
- package/dist/core/render-bundle.js.map +1 -0
- package/dist/core/storage-buffer.d.ts +81 -0
- package/dist/core/storage-buffer.d.ts.map +1 -0
- package/dist/core/storage-buffer.js +91 -0
- package/dist/core/storage-buffer.js.map +1 -0
- package/dist/core/structured-uniform.d.ts +33 -0
- package/dist/core/structured-uniform.d.ts.map +1 -0
- package/dist/core/structured-uniform.js +110 -0
- package/dist/core/structured-uniform.js.map +1 -0
- package/dist/core/uniform-pool-internals.d.ts +12 -0
- package/dist/core/uniform-pool-internals.d.ts.map +1 -0
- package/dist/core/uniform-pool-internals.js +24 -0
- package/dist/core/uniform-pool-internals.js.map +1 -0
- package/dist/core/uniform-pool-types.d.ts +22 -0
- package/dist/core/uniform-pool-types.d.ts.map +1 -0
- package/dist/core/uniform-pool-types.js +2 -0
- package/dist/core/uniform-pool-types.js.map +1 -0
- package/dist/core/uniform-pool.d.ts +22 -0
- package/dist/core/uniform-pool.d.ts.map +1 -0
- package/dist/core/uniform-pool.js +128 -0
- package/dist/core/uniform-pool.js.map +1 -0
- package/dist/core/uniform.d.ts +55 -0
- package/dist/core/uniform.d.ts.map +1 -0
- package/dist/core/uniform.js +64 -0
- package/dist/core/uniform.js.map +1 -0
- package/dist/core/wgsl-alignment.d.ts +24 -0
- package/dist/core/wgsl-alignment.d.ts.map +1 -0
- package/dist/core/wgsl-alignment.js +81 -0
- package/dist/core/wgsl-alignment.js.map +1 -0
- package/dist/core.d.ts +13 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +7 -0
- package/dist/core.js.map +1 -0
- package/dist/dom.d.ts +37 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +81 -0
- package/dist/dom.js.map +1 -0
- package/dist/draw-protocols.d.ts +36 -0
- package/dist/draw-protocols.d.ts.map +1 -0
- package/dist/draw-protocols.js +10 -0
- package/dist/draw-protocols.js.map +1 -0
- package/dist/draw.d.ts +248 -0
- package/dist/draw.d.ts.map +1 -0
- package/dist/draw.js +890 -0
- package/dist/draw.js.map +1 -0
- package/dist/effect.d.ts +53 -0
- package/dist/effect.d.ts.map +1 -0
- package/dist/effect.js +75 -0
- package/dist/effect.js.map +1 -0
- package/dist/entry-metadata.d.ts +16 -0
- package/dist/entry-metadata.d.ts.map +1 -0
- package/dist/entry-metadata.js +27 -0
- package/dist/entry-metadata.js.map +1 -0
- package/dist/errors.d.ts +96 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +616 -0
- package/dist/errors.js.map +1 -0
- package/dist/frame-protocols.d.ts +107 -0
- package/dist/frame-protocols.d.ts.map +1 -0
- package/dist/frame-protocols.js +20 -0
- package/dist/frame-protocols.js.map +1 -0
- package/dist/frame-state.d.ts +32 -0
- package/dist/frame-state.d.ts.map +1 -0
- package/dist/frame-state.js +62 -0
- package/dist/frame-state.js.map +1 -0
- package/dist/frame.d.ts +127 -0
- package/dist/frame.d.ts.map +1 -0
- package/dist/frame.js +645 -0
- package/dist/frame.js.map +1 -0
- package/dist/group-claim.d.ts +9 -0
- package/dist/group-claim.d.ts.map +1 -0
- package/dist/group-claim.js +7 -0
- package/dist/group-claim.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/indirect.d.ts +39 -0
- package/dist/indirect.d.ts.map +1 -0
- package/dist/indirect.js +61 -0
- package/dist/indirect.js.map +1 -0
- package/dist/init-from-device.d.ts +11 -0
- package/dist/init-from-device.d.ts.map +1 -0
- package/dist/init-from-device.js +56 -0
- package/dist/init-from-device.js.map +1 -0
- package/dist/init.d.ts +12 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +7 -0
- package/dist/init.js.map +1 -0
- package/dist/kernel.d.ts +104 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +151 -0
- package/dist/kernel.js.map +1 -0
- package/dist/lifecycle.d.ts +10 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +21 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/live-kernel.d.ts +48 -0
- package/dist/live-kernel.d.ts.map +1 -0
- package/dist/live-kernel.js +67 -0
- package/dist/live-kernel.js.map +1 -0
- package/dist/mock.d.ts +42 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/mock.js +29 -0
- package/dist/mock.js.map +1 -0
- package/dist/node.d.ts +48 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +36 -0
- package/dist/node.js.map +1 -0
- package/dist/ping-pong.d.ts +19 -0
- package/dist/ping-pong.d.ts.map +1 -0
- package/dist/ping-pong.js +67 -0
- package/dist/ping-pong.js.map +1 -0
- package/dist/pipeline-store.d.ts +89 -0
- package/dist/pipeline-store.d.ts.map +1 -0
- package/dist/pipeline-store.js +366 -0
- package/dist/pipeline-store.js.map +1 -0
- package/dist/query-ring.d.ts +91 -0
- package/dist/query-ring.d.ts.map +1 -0
- package/dist/query-ring.js +178 -0
- package/dist/query-ring.js.map +1 -0
- package/dist/render-service.d.ts +23 -0
- package/dist/render-service.d.ts.map +1 -0
- package/dist/render-service.js +37 -0
- package/dist/render-service.js.map +1 -0
- package/dist/sampler.d.ts +19 -0
- package/dist/sampler.d.ts.map +1 -0
- package/dist/sampler.js +46 -0
- package/dist/sampler.js.map +1 -0
- package/dist/scene/camera.d.ts +91 -0
- package/dist/scene/camera.d.ts.map +1 -0
- package/dist/scene/camera.js +221 -0
- package/dist/scene/camera.js.map +1 -0
- package/dist/scene/geometries.d.ts +26 -0
- package/dist/scene/geometries.d.ts.map +1 -0
- package/dist/scene/geometries.js +26 -0
- package/dist/scene/geometries.js.map +1 -0
- package/dist/scene/geometry-descriptor.d.ts +120 -0
- package/dist/scene/geometry-descriptor.d.ts.map +1 -0
- package/dist/scene/geometry-descriptor.js +378 -0
- package/dist/scene/geometry-descriptor.js.map +1 -0
- package/dist/scene/geometry-recipe.d.ts +41 -0
- package/dist/scene/geometry-recipe.d.ts.map +1 -0
- package/dist/scene/geometry-recipe.js +40 -0
- package/dist/scene/geometry-recipe.js.map +1 -0
- package/dist/scene/geometry-src/camera-math.d.ts +6 -0
- package/dist/scene/geometry-src/camera-math.d.ts.map +1 -0
- package/dist/scene/geometry-src/camera-math.js +47 -0
- package/dist/scene/geometry-src/camera-math.js.map +1 -0
- package/dist/scene/geometry-src/camera.d.ts +10 -0
- package/dist/scene/geometry-src/camera.d.ts.map +1 -0
- package/dist/scene/geometry-src/camera.js +2 -0
- package/dist/scene/geometry-src/camera.js.map +1 -0
- package/dist/scene/geometry-src/capsule-data.d.ts +10 -0
- package/dist/scene/geometry-src/capsule-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/capsule-data.js +61 -0
- package/dist/scene/geometry-src/capsule-data.js.map +1 -0
- package/dist/scene/geometry-src/cone-data.d.ts +13 -0
- package/dist/scene/geometry-src/cone-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/cone-data.js +52 -0
- package/dist/scene/geometry-src/cone-data.js.map +1 -0
- package/dist/scene/geometry-src/cylinder-data.d.ts +14 -0
- package/dist/scene/geometry-src/cylinder-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/cylinder-data.js +58 -0
- package/dist/scene/geometry-src/cylinder-data.js.map +1 -0
- package/dist/scene/geometry-src/deg-to-rad.d.ts +2 -0
- package/dist/scene/geometry-src/deg-to-rad.d.ts.map +1 -0
- package/dist/scene/geometry-src/deg-to-rad.js +4 -0
- package/dist/scene/geometry-src/deg-to-rad.js.map +1 -0
- package/dist/scene/geometry-src/disk-data.d.ts +12 -0
- package/dist/scene/geometry-src/disk-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/disk-data.js +21 -0
- package/dist/scene/geometry-src/disk-data.js.map +1 -0
- package/dist/scene/geometry-src/errors.d.ts +3 -0
- package/dist/scene/geometry-src/errors.d.ts.map +1 -0
- package/dist/scene/geometry-src/errors.js +5 -0
- package/dist/scene/geometry-src/errors.js.map +1 -0
- package/dist/scene/geometry-src/icosphere-data.d.ts +8 -0
- package/dist/scene/geometry-src/icosphere-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/icosphere-data.js +58 -0
- package/dist/scene/geometry-src/icosphere-data.js.map +1 -0
- package/dist/scene/geometry-src/index.d.ts +36 -0
- package/dist/scene/geometry-src/index.d.ts.map +1 -0
- package/dist/scene/geometry-src/index.js +21 -0
- package/dist/scene/geometry-src/index.js.map +1 -0
- package/dist/scene/geometry-src/mesh-box.d.ts +8 -0
- package/dist/scene/geometry-src/mesh-box.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-box.js +57 -0
- package/dist/scene/geometry-src/mesh-box.js.map +1 -0
- package/dist/scene/geometry-src/mesh-cache.d.ts +4 -0
- package/dist/scene/geometry-src/mesh-cache.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-cache.js +14 -0
- package/dist/scene/geometry-src/mesh-cache.js.map +1 -0
- package/dist/scene/geometry-src/mesh-capsule.d.ts +14 -0
- package/dist/scene/geometry-src/mesh-capsule.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-capsule.js +52 -0
- package/dist/scene/geometry-src/mesh-capsule.js.map +1 -0
- package/dist/scene/geometry-src/mesh-cone.d.ts +16 -0
- package/dist/scene/geometry-src/mesh-cone.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-cone.js +54 -0
- package/dist/scene/geometry-src/mesh-cone.js.map +1 -0
- package/dist/scene/geometry-src/mesh-cylinder.d.ts +18 -0
- package/dist/scene/geometry-src/mesh-cylinder.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-cylinder.js +67 -0
- package/dist/scene/geometry-src/mesh-cylinder.js.map +1 -0
- package/dist/scene/geometry-src/mesh-disk.d.ts +11 -0
- package/dist/scene/geometry-src/mesh-disk.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-disk.js +45 -0
- package/dist/scene/geometry-src/mesh-disk.js.map +1 -0
- package/dist/scene/geometry-src/mesh-dodecahedron.d.ts +4 -0
- package/dist/scene/geometry-src/mesh-dodecahedron.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-dodecahedron.js +10 -0
- package/dist/scene/geometry-src/mesh-dodecahedron.js.map +1 -0
- package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts +7 -0
- package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-fullscreen-quad.js +39 -0
- package/dist/scene/geometry-src/mesh-fullscreen-quad.js.map +1 -0
- package/dist/scene/geometry-src/mesh-icosahedron.d.ts +4 -0
- package/dist/scene/geometry-src/mesh-icosahedron.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-icosahedron.js +10 -0
- package/dist/scene/geometry-src/mesh-icosahedron.js.map +1 -0
- package/dist/scene/geometry-src/mesh-icosphere.d.ts +11 -0
- package/dist/scene/geometry-src/mesh-icosphere.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-icosphere.js +47 -0
- package/dist/scene/geometry-src/mesh-icosphere.js.map +1 -0
- package/dist/scene/geometry-src/mesh-octahedron.d.ts +4 -0
- package/dist/scene/geometry-src/mesh-octahedron.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-octahedron.js +10 -0
- package/dist/scene/geometry-src/mesh-octahedron.js.map +1 -0
- package/dist/scene/geometry-src/mesh-plane.d.ts +13 -0
- package/dist/scene/geometry-src/mesh-plane.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-plane.js +51 -0
- package/dist/scene/geometry-src/mesh-plane.js.map +1 -0
- package/dist/scene/geometry-src/mesh-ring.d.ts +12 -0
- package/dist/scene/geometry-src/mesh-ring.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-ring.js +47 -0
- package/dist/scene/geometry-src/mesh-ring.js.map +1 -0
- package/dist/scene/geometry-src/mesh-sphere.d.ts +10 -0
- package/dist/scene/geometry-src/mesh-sphere.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-sphere.js +51 -0
- package/dist/scene/geometry-src/mesh-sphere.js.map +1 -0
- package/dist/scene/geometry-src/mesh-tetrahedron.d.ts +5 -0
- package/dist/scene/geometry-src/mesh-tetrahedron.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-tetrahedron.js +10 -0
- package/dist/scene/geometry-src/mesh-tetrahedron.js.map +1 -0
- package/dist/scene/geometry-src/mesh-torus.d.ts +17 -0
- package/dist/scene/geometry-src/mesh-torus.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-torus.js +56 -0
- package/dist/scene/geometry-src/mesh-torus.js.map +1 -0
- package/dist/scene/geometry-src/mesh-types.d.ts +38 -0
- package/dist/scene/geometry-src/mesh-types.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh-types.js +2 -0
- package/dist/scene/geometry-src/mesh-types.js.map +1 -0
- package/dist/scene/geometry-src/mesh.d.ts +61 -0
- package/dist/scene/geometry-src/mesh.d.ts.map +1 -0
- package/dist/scene/geometry-src/mesh.js +49 -0
- package/dist/scene/geometry-src/mesh.js.map +1 -0
- package/dist/scene/geometry-src/orthographic-camera.d.ts +14 -0
- package/dist/scene/geometry-src/orthographic-camera.d.ts.map +1 -0
- package/dist/scene/geometry-src/orthographic-camera.js +9 -0
- package/dist/scene/geometry-src/orthographic-camera.js.map +1 -0
- package/dist/scene/geometry-src/perspective-camera.d.ts +12 -0
- package/dist/scene/geometry-src/perspective-camera.d.ts.map +1 -0
- package/dist/scene/geometry-src/perspective-camera.js +9 -0
- package/dist/scene/geometry-src/perspective-camera.js.map +1 -0
- package/dist/scene/geometry-src/plane-data.d.ts +12 -0
- package/dist/scene/geometry-src/plane-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/plane-data.js +25 -0
- package/dist/scene/geometry-src/plane-data.js.map +1 -0
- package/dist/scene/geometry-src/polyhedron-data.d.ts +7 -0
- package/dist/scene/geometry-src/polyhedron-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/polyhedron-data.js +42 -0
- package/dist/scene/geometry-src/polyhedron-data.js.map +1 -0
- package/dist/scene/geometry-src/polyhedron-mesh.d.ts +10 -0
- package/dist/scene/geometry-src/polyhedron-mesh.d.ts.map +1 -0
- package/dist/scene/geometry-src/polyhedron-mesh.js +37 -0
- package/dist/scene/geometry-src/polyhedron-mesh.js.map +1 -0
- package/dist/scene/geometry-src/polyhedron-seeds.d.ts +6 -0
- package/dist/scene/geometry-src/polyhedron-seeds.d.ts.map +1 -0
- package/dist/scene/geometry-src/polyhedron-seeds.js +51 -0
- package/dist/scene/geometry-src/polyhedron-seeds.js.map +1 -0
- package/dist/scene/geometry-src/primitive-data-utils.d.ts +9 -0
- package/dist/scene/geometry-src/primitive-data-utils.d.ts.map +1 -0
- package/dist/scene/geometry-src/primitive-data-utils.js +36 -0
- package/dist/scene/geometry-src/primitive-data-utils.js.map +1 -0
- package/dist/scene/geometry-src/ring-data.d.ts +13 -0
- package/dist/scene/geometry-src/ring-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/ring-data.js +24 -0
- package/dist/scene/geometry-src/ring-data.js.map +1 -0
- package/dist/scene/geometry-src/sphere-data.d.ts +11 -0
- package/dist/scene/geometry-src/sphere-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/sphere-data.js +31 -0
- package/dist/scene/geometry-src/sphere-data.js.map +1 -0
- package/dist/scene/geometry-src/srgb.d.ts +5 -0
- package/dist/scene/geometry-src/srgb.d.ts.map +1 -0
- package/dist/scene/geometry-src/srgb.js +23 -0
- package/dist/scene/geometry-src/srgb.js.map +1 -0
- package/dist/scene/geometry-src/torus-data.d.ts +11 -0
- package/dist/scene/geometry-src/torus-data.d.ts.map +1 -0
- package/dist/scene/geometry-src/torus-data.js +38 -0
- package/dist/scene/geometry-src/torus-data.js.map +1 -0
- package/dist/scene/geometry-src/vertex-layout.d.ts +2 -0
- package/dist/scene/geometry-src/vertex-layout.d.ts.map +1 -0
- package/dist/scene/geometry-src/vertex-layout.js +2 -0
- package/dist/scene/geometry-src/vertex-layout.js.map +1 -0
- package/dist/scene/geometry.d.ts +70 -0
- package/dist/scene/geometry.d.ts.map +1 -0
- package/dist/scene/geometry.js +71 -0
- package/dist/scene/geometry.js.map +1 -0
- package/dist/scene/orbit.d.ts +9 -0
- package/dist/scene/orbit.d.ts.map +1 -0
- package/dist/scene/orbit.js +15 -0
- package/dist/scene/orbit.js.map +1 -0
- package/dist/scene/tree/errors.d.ts +4 -0
- package/dist/scene/tree/errors.d.ts.map +1 -0
- package/dist/scene/tree/errors.js +19 -0
- package/dist/scene/tree/errors.js.map +1 -0
- package/dist/scene/tree/light.d.ts +42 -0
- package/dist/scene/tree/light.d.ts.map +1 -0
- package/dist/scene/tree/light.js +102 -0
- package/dist/scene/tree/light.js.map +1 -0
- package/dist/scene/tree/material.d.ts +79 -0
- package/dist/scene/tree/material.d.ts.map +1 -0
- package/dist/scene/tree/material.js +117 -0
- package/dist/scene/tree/material.js.map +1 -0
- package/dist/scene/tree/math.d.ts +26 -0
- package/dist/scene/tree/math.d.ts.map +1 -0
- package/dist/scene/tree/math.js +217 -0
- package/dist/scene/tree/math.js.map +1 -0
- package/dist/scene/tree/mesh-node.d.ts +17 -0
- package/dist/scene/tree/mesh-node.d.ts.map +1 -0
- package/dist/scene/tree/mesh-node.js +24 -0
- package/dist/scene/tree/mesh-node.js.map +1 -0
- package/dist/scene/tree/node.d.ts +70 -0
- package/dist/scene/tree/node.d.ts.map +1 -0
- package/dist/scene/tree/node.js +220 -0
- package/dist/scene/tree/node.js.map +1 -0
- package/dist/scene/tree/orbit-controls.d.ts +69 -0
- package/dist/scene/tree/orbit-controls.d.ts.map +1 -0
- package/dist/scene/tree/orbit-controls.js +226 -0
- package/dist/scene/tree/orbit-controls.js.map +1 -0
- package/dist/scene.d.ts +21 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +11 -0
- package/dist/scene.js.map +1 -0
- package/dist/set-core.d.ts +50 -0
- package/dist/set-core.d.ts.map +1 -0
- package/dist/set-core.js +268 -0
- package/dist/set-core.js.map +1 -0
- package/dist/set-layouts.d.ts +20 -0
- package/dist/set-layouts.d.ts.map +1 -0
- package/dist/set-layouts.js +103 -0
- package/dist/set-layouts.js.map +1 -0
- package/dist/set-packing.d.ts +4 -0
- package/dist/set-packing.d.ts.map +1 -0
- package/dist/set-packing.js +82 -0
- package/dist/set-packing.js.map +1 -0
- package/dist/set-resources.d.ts +20 -0
- package/dist/set-resources.d.ts.map +1 -0
- package/dist/set-resources.js +140 -0
- package/dist/set-resources.js.map +1 -0
- package/dist/shader-source.d.ts +4 -0
- package/dist/shader-source.d.ts.map +1 -0
- package/dist/shader-source.js +21 -0
- package/dist/shader-source.js.map +1 -0
- package/dist/storage.d.ts +38 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +76 -0
- package/dist/storage.js.map +1 -0
- package/dist/surface.d.ts +89 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +243 -0
- package/dist/surface.js.map +1 -0
- package/dist/target-offscreen.d.ts +41 -0
- package/dist/target-offscreen.d.ts.map +1 -0
- package/dist/target-offscreen.js +115 -0
- package/dist/target-offscreen.js.map +1 -0
- package/dist/target-utils.d.ts +37 -0
- package/dist/target-utils.d.ts.map +1 -0
- package/dist/target-utils.js +103 -0
- package/dist/target-utils.js.map +1 -0
- package/dist/target.d.ts +65 -0
- package/dist/target.d.ts.map +1 -0
- package/dist/target.js +2 -0
- package/dist/target.js.map +1 -0
- package/dist/timer.d.ts +78 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js +261 -0
- package/dist/timer.js.map +1 -0
- package/dist/uniforms-layout.d.ts +8 -0
- package/dist/uniforms-layout.d.ts.map +1 -0
- package/dist/uniforms-layout.js +84 -0
- package/dist/uniforms-layout.js.map +1 -0
- package/dist/uniforms.d.ts +43 -0
- package/dist/uniforms.d.ts.map +1 -0
- package/dist/uniforms.js +176 -0
- package/dist/uniforms.js.map +1 -0
- package/dist/visibility.d.ts +118 -0
- package/dist/visibility.d.ts.map +1 -0
- package/dist/visibility.js +290 -0
- package/dist/visibility.js.map +1 -0
- package/package.json +131 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { sceneValueError } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Pure material descriptor consumed by the scene renderer. Holds shading parameters only —
|
|
4
|
+
* no GPU resources; pipelines are compiled when a tree is bound with `gpu.scene()`.
|
|
5
|
+
*/
|
|
6
|
+
export class SceneMaterial {
|
|
7
|
+
/**
|
|
8
|
+
* Set by the base constructor (not by a subclass field) so it is already readable while
|
|
9
|
+
* a subclass constructor validates its options — subclass fields are installed only
|
|
10
|
+
* after `super()` returns, which used to make validation errors report `undefined.set`.
|
|
11
|
+
*/
|
|
12
|
+
kind;
|
|
13
|
+
label;
|
|
14
|
+
blend;
|
|
15
|
+
constructor(kind) {
|
|
16
|
+
this.kind = kind;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
class ColorMaterial extends SceneMaterial {
|
|
20
|
+
#color = new Float32Array([1, 1, 1]);
|
|
21
|
+
#opacity = 1;
|
|
22
|
+
constructor(kind, options = {}) {
|
|
23
|
+
super(kind);
|
|
24
|
+
this.label = options.label;
|
|
25
|
+
this.blend = options.blend;
|
|
26
|
+
this.#apply(options);
|
|
27
|
+
}
|
|
28
|
+
set(values) {
|
|
29
|
+
this.#apply(values);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
/** Linear RGB color. Stable array identity; mutate via `set()`. */
|
|
33
|
+
get color() {
|
|
34
|
+
return this.#color;
|
|
35
|
+
}
|
|
36
|
+
get opacity() {
|
|
37
|
+
return this.#opacity;
|
|
38
|
+
}
|
|
39
|
+
#apply(values) {
|
|
40
|
+
const where = `${this.label ?? this.kind}.set`;
|
|
41
|
+
if (values.color !== undefined) {
|
|
42
|
+
if (values.color.length !== 3)
|
|
43
|
+
throw sceneValueError(where, "color", "an array of 3 linear RGB components");
|
|
44
|
+
this.#color[0] = values.color[0];
|
|
45
|
+
this.#color[1] = values.color[1];
|
|
46
|
+
this.#color[2] = values.color[2];
|
|
47
|
+
}
|
|
48
|
+
if (values.opacity !== undefined) {
|
|
49
|
+
if (!(values.opacity >= 0 && values.opacity <= 1))
|
|
50
|
+
throw sceneValueError(where, "opacity", "a number between 0 and 1");
|
|
51
|
+
this.#opacity = values.opacity;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Flat-color material; renders without lights. */
|
|
56
|
+
export class UnlitMaterial extends ColorMaterial {
|
|
57
|
+
constructor(options = {}) {
|
|
58
|
+
super("unlit", options);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** N·L diffuse material lit by scene lights (uses `@aigpu/wgsl-std/light` lambert). */
|
|
62
|
+
export class LambertMaterial extends ColorMaterial {
|
|
63
|
+
constructor(options = {}) {
|
|
64
|
+
super("lambert", options);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Debug material that shades world-space normals; needs no lights or parameters. */
|
|
68
|
+
export class NormalMaterial extends SceneMaterial {
|
|
69
|
+
constructor() {
|
|
70
|
+
super("normal");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Custom material: a WGSL fragment stage compiled against the scene renderer's vertex
|
|
75
|
+
* contract. Scene globals live in `@group(0)` (renderer-owned); material bindings start
|
|
76
|
+
* at `@group(1)`.
|
|
77
|
+
*/
|
|
78
|
+
export class ShaderMaterial extends SceneMaterial {
|
|
79
|
+
source;
|
|
80
|
+
#values;
|
|
81
|
+
constructor(source, options = {}) {
|
|
82
|
+
super("shader");
|
|
83
|
+
this.source = source;
|
|
84
|
+
this.label = options.label;
|
|
85
|
+
this.blend = options.blend;
|
|
86
|
+
this.#values = { ...options.set };
|
|
87
|
+
}
|
|
88
|
+
/** Merges binding values per top-level key; the renderer forwards them to `draw.set()`. */
|
|
89
|
+
set(values) {
|
|
90
|
+
for (const [key, value] of Object.entries(values)) {
|
|
91
|
+
const previous = this.#values[key];
|
|
92
|
+
this.#values[key] = isPlainObject(previous) && isPlainObject(value)
|
|
93
|
+
? { ...previous, ...value }
|
|
94
|
+
: value;
|
|
95
|
+
}
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
get values() {
|
|
99
|
+
return this.#values;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export function unlitMaterial(options = {}) {
|
|
103
|
+
return new UnlitMaterial(options);
|
|
104
|
+
}
|
|
105
|
+
export function lambertMaterial(options = {}) {
|
|
106
|
+
return new LambertMaterial(options);
|
|
107
|
+
}
|
|
108
|
+
export function normalMaterial() {
|
|
109
|
+
return new NormalMaterial();
|
|
110
|
+
}
|
|
111
|
+
export function shaderMaterial(source, options = {}) {
|
|
112
|
+
return new ShaderMaterial(source, options);
|
|
113
|
+
}
|
|
114
|
+
function isPlainObject(value) {
|
|
115
|
+
return typeof value === "object" && value !== null && !ArrayBuffer.isView(value) && !Array.isArray(value);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=material.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../../src/scene/tree/material.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type Mat4 = Float32Array;
|
|
2
|
+
export declare function identityMat4(out: Mat4): Mat4;
|
|
3
|
+
export declare function copyMat4(out: Mat4, m: Mat4): Mat4;
|
|
4
|
+
/** out = position/quaternion/scale composed into a column-major TRS matrix. */
|
|
5
|
+
export declare function composeTrs(out: Mat4, position: Float32Array, quaternion: Float32Array, scale: Float32Array): Mat4;
|
|
6
|
+
/** out = a * b. Safe when out aliases a or b. */
|
|
7
|
+
export declare function multiplyMat4(out: Mat4, a: Mat4, b: Mat4): Mat4;
|
|
8
|
+
/** Inverts an affine TRS matrix (last row assumed 0,0,0,1). */
|
|
9
|
+
export declare function invertAffineMat4(out: Mat4, m: Mat4): Mat4;
|
|
10
|
+
/** out = m * [p, 1]; returns the transformed point. */
|
|
11
|
+
export declare function transformPoint(out: Float32Array, m: Mat4, p: Float32Array): Float32Array;
|
|
12
|
+
/** out = the linear part of m applied to a direction (no translation). */
|
|
13
|
+
export declare function transformDirection(out: Float32Array, m: Mat4, v: Float32Array): Float32Array;
|
|
14
|
+
/** Intrinsic XYZ Euler angles (radians) to quaternion. */
|
|
15
|
+
export declare function quatFromEuler(out: Float32Array, x: number, y: number, z: number): Float32Array;
|
|
16
|
+
/** out = a * b (quaternion product). Safe when out aliases a or b. */
|
|
17
|
+
export declare function multiplyQuat(out: Float32Array, a: Float32Array, b: Float32Array): Float32Array;
|
|
18
|
+
/** Conjugate of a unit quaternion (its inverse). */
|
|
19
|
+
export declare function conjugateQuat(out: Float32Array, q: Float32Array): Float32Array;
|
|
20
|
+
/** Quaternion from three orthonormal basis columns (rotation part of a matrix). */
|
|
21
|
+
export declare function quatFromBasis(out: Float32Array, m00: number, m01: number, m02: number, m10: number, m11: number, m12: number, m20: number, m21: number, m22: number): Float32Array;
|
|
22
|
+
/** Rotation that makes -Z point from eye toward target (camera/look convention). */
|
|
23
|
+
export declare function quatLookAt(out: Float32Array, eye: Float32Array, target: Float32Array, up: Float32Array): Float32Array;
|
|
24
|
+
/** Quaternion from the rotation part of an affine matrix, ignoring (positive) scale. */
|
|
25
|
+
export declare function quatFromMat4Rotation(out: Float32Array, m: Mat4): Float32Array;
|
|
26
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/math.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC;AAEhC,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAI5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAGjD;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAYjH;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAc9D;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAyBzD;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAMxF;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAM5F;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAS9F;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAQ9F;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAG9E;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAC3B,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EACrC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EACrC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GACpC,YAAY,CA8Bd;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,CAuBrH;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,GAAG,YAAY,CAU7E"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// Minimal column-major mat4/quat math for the scene tree. Kept local (same policy as
|
|
2
|
+
// geometry-src/camera-math.ts) so aigpu/scene stays inside its bundle budget instead of
|
|
3
|
+
// pulling the wgpu-matrix runtime.
|
|
4
|
+
export function identityMat4(out) {
|
|
5
|
+
out.fill(0);
|
|
6
|
+
out[0] = out[5] = out[10] = out[15] = 1;
|
|
7
|
+
return out;
|
|
8
|
+
}
|
|
9
|
+
export function copyMat4(out, m) {
|
|
10
|
+
out.set(m);
|
|
11
|
+
return out;
|
|
12
|
+
}
|
|
13
|
+
/** out = position/quaternion/scale composed into a column-major TRS matrix. */
|
|
14
|
+
export function composeTrs(out, position, quaternion, scale) {
|
|
15
|
+
const x = quaternion[0], y = quaternion[1], z = quaternion[2], w = quaternion[3];
|
|
16
|
+
const x2 = x + x, y2 = y + y, z2 = z + z;
|
|
17
|
+
const xx = x * x2, xy = x * y2, xz = x * z2;
|
|
18
|
+
const yy = y * y2, yz = y * z2, zz = z * z2;
|
|
19
|
+
const wx = w * x2, wy = w * y2, wz = w * z2;
|
|
20
|
+
const sx = scale[0], sy = scale[1], sz = scale[2];
|
|
21
|
+
out[0] = (1 - (yy + zz)) * sx;
|
|
22
|
+
out[1] = (xy + wz) * sx;
|
|
23
|
+
out[2] = (xz - wy) * sx;
|
|
24
|
+
out[3] = 0;
|
|
25
|
+
out[4] = (xy - wz) * sy;
|
|
26
|
+
out[5] = (1 - (xx + zz)) * sy;
|
|
27
|
+
out[6] = (yz + wx) * sy;
|
|
28
|
+
out[7] = 0;
|
|
29
|
+
out[8] = (xz + wy) * sz;
|
|
30
|
+
out[9] = (yz - wx) * sz;
|
|
31
|
+
out[10] = (1 - (xx + yy)) * sz;
|
|
32
|
+
out[11] = 0;
|
|
33
|
+
out[12] = position[0];
|
|
34
|
+
out[13] = position[1];
|
|
35
|
+
out[14] = position[2];
|
|
36
|
+
out[15] = 1;
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
/** out = a * b. Safe when out aliases a or b. */
|
|
40
|
+
export function multiplyMat4(out, a, b) {
|
|
41
|
+
const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
42
|
+
const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
43
|
+
const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
44
|
+
const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
45
|
+
for (let column = 0; column < 4; column++) {
|
|
46
|
+
const offset = column * 4;
|
|
47
|
+
const b0 = b[offset], b1 = b[offset + 1], b2 = b[offset + 2], b3 = b[offset + 3];
|
|
48
|
+
out[offset] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;
|
|
49
|
+
out[offset + 1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;
|
|
50
|
+
out[offset + 2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;
|
|
51
|
+
out[offset + 3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/** Inverts an affine TRS matrix (last row assumed 0,0,0,1). */
|
|
56
|
+
export function invertAffineMat4(out, m) {
|
|
57
|
+
const a00 = m[0], a01 = m[1], a02 = m[2];
|
|
58
|
+
const a10 = m[4], a11 = m[5], a12 = m[6];
|
|
59
|
+
const a20 = m[8], a21 = m[9], a22 = m[10];
|
|
60
|
+
const tx = m[12], ty = m[13], tz = m[14];
|
|
61
|
+
const b00 = a11 * a22 - a12 * a21;
|
|
62
|
+
const b01 = a12 * a20 - a10 * a22;
|
|
63
|
+
const b02 = a10 * a21 - a11 * a20;
|
|
64
|
+
const det = a00 * b00 + a01 * b01 + a02 * b02;
|
|
65
|
+
const invDet = det === 0 ? 0 : 1 / det;
|
|
66
|
+
const i00 = b00 * invDet, i10 = b01 * invDet, i20 = b02 * invDet;
|
|
67
|
+
const i01 = (a02 * a21 - a01 * a22) * invDet;
|
|
68
|
+
const i11 = (a00 * a22 - a02 * a20) * invDet;
|
|
69
|
+
const i21 = (a01 * a20 - a00 * a21) * invDet;
|
|
70
|
+
const i02 = (a01 * a12 - a02 * a11) * invDet;
|
|
71
|
+
const i12 = (a02 * a10 - a00 * a12) * invDet;
|
|
72
|
+
const i22 = (a00 * a11 - a01 * a10) * invDet;
|
|
73
|
+
out[0] = i00;
|
|
74
|
+
out[1] = i01;
|
|
75
|
+
out[2] = i02;
|
|
76
|
+
out[3] = 0;
|
|
77
|
+
out[4] = i10;
|
|
78
|
+
out[5] = i11;
|
|
79
|
+
out[6] = i12;
|
|
80
|
+
out[7] = 0;
|
|
81
|
+
out[8] = i20;
|
|
82
|
+
out[9] = i21;
|
|
83
|
+
out[10] = i22;
|
|
84
|
+
out[11] = 0;
|
|
85
|
+
out[12] = -(i00 * tx + i10 * ty + i20 * tz);
|
|
86
|
+
out[13] = -(i01 * tx + i11 * ty + i21 * tz);
|
|
87
|
+
out[14] = -(i02 * tx + i12 * ty + i22 * tz);
|
|
88
|
+
out[15] = 1;
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
/** out = m * [p, 1]; returns the transformed point. */
|
|
92
|
+
export function transformPoint(out, m, p) {
|
|
93
|
+
const x = p[0], y = p[1], z = p[2];
|
|
94
|
+
out[0] = m[0] * x + m[4] * y + m[8] * z + m[12];
|
|
95
|
+
out[1] = m[1] * x + m[5] * y + m[9] * z + m[13];
|
|
96
|
+
out[2] = m[2] * x + m[6] * y + m[10] * z + m[14];
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
/** out = the linear part of m applied to a direction (no translation). */
|
|
100
|
+
export function transformDirection(out, m, v) {
|
|
101
|
+
const x = v[0], y = v[1], z = v[2];
|
|
102
|
+
out[0] = m[0] * x + m[4] * y + m[8] * z;
|
|
103
|
+
out[1] = m[1] * x + m[5] * y + m[9] * z;
|
|
104
|
+
out[2] = m[2] * x + m[6] * y + m[10] * z;
|
|
105
|
+
return out;
|
|
106
|
+
}
|
|
107
|
+
/** Intrinsic XYZ Euler angles (radians) to quaternion. */
|
|
108
|
+
export function quatFromEuler(out, x, y, z) {
|
|
109
|
+
const c1 = Math.cos(x / 2), s1 = Math.sin(x / 2);
|
|
110
|
+
const c2 = Math.cos(y / 2), s2 = Math.sin(y / 2);
|
|
111
|
+
const c3 = Math.cos(z / 2), s3 = Math.sin(z / 2);
|
|
112
|
+
out[0] = s1 * c2 * c3 + c1 * s2 * s3;
|
|
113
|
+
out[1] = c1 * s2 * c3 - s1 * c2 * s3;
|
|
114
|
+
out[2] = c1 * c2 * s3 + s1 * s2 * c3;
|
|
115
|
+
out[3] = c1 * c2 * c3 - s1 * s2 * s3;
|
|
116
|
+
return out;
|
|
117
|
+
}
|
|
118
|
+
/** out = a * b (quaternion product). Safe when out aliases a or b. */
|
|
119
|
+
export function multiplyQuat(out, a, b) {
|
|
120
|
+
const ax = a[0], ay = a[1], az = a[2], aw = a[3];
|
|
121
|
+
const bx = b[0], by = b[1], bz = b[2], bw = b[3];
|
|
122
|
+
out[0] = ax * bw + aw * bx + ay * bz - az * by;
|
|
123
|
+
out[1] = ay * bw + aw * by + az * bx - ax * bz;
|
|
124
|
+
out[2] = az * bw + aw * bz + ax * by - ay * bx;
|
|
125
|
+
out[3] = aw * bw - ax * bx - ay * by - az * bz;
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/** Conjugate of a unit quaternion (its inverse). */
|
|
129
|
+
export function conjugateQuat(out, q) {
|
|
130
|
+
out[0] = -q[0];
|
|
131
|
+
out[1] = -q[1];
|
|
132
|
+
out[2] = -q[2];
|
|
133
|
+
out[3] = q[3];
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
/** Quaternion from three orthonormal basis columns (rotation part of a matrix). */
|
|
137
|
+
export function quatFromBasis(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {
|
|
138
|
+
// Arguments are the basis COLUMNS of a column-major rotation matrix: mij is component j
|
|
139
|
+
// of basis vector i, i.e. matrix row j+1, column i+1.
|
|
140
|
+
const trace = m00 + m11 + m22;
|
|
141
|
+
if (trace > 0) {
|
|
142
|
+
const s = 0.5 / Math.sqrt(trace + 1);
|
|
143
|
+
out[3] = 0.25 / s;
|
|
144
|
+
out[0] = (m12 - m21) * s;
|
|
145
|
+
out[1] = (m20 - m02) * s;
|
|
146
|
+
out[2] = (m01 - m10) * s;
|
|
147
|
+
}
|
|
148
|
+
else if (m00 > m11 && m00 > m22) {
|
|
149
|
+
const s = 2 * Math.sqrt(1 + m00 - m11 - m22);
|
|
150
|
+
out[3] = (m12 - m21) / s;
|
|
151
|
+
out[0] = 0.25 * s;
|
|
152
|
+
out[1] = (m10 + m01) / s;
|
|
153
|
+
out[2] = (m20 + m02) / s;
|
|
154
|
+
}
|
|
155
|
+
else if (m11 > m22) {
|
|
156
|
+
const s = 2 * Math.sqrt(1 + m11 - m00 - m22);
|
|
157
|
+
out[3] = (m20 - m02) / s;
|
|
158
|
+
out[0] = (m10 + m01) / s;
|
|
159
|
+
out[1] = 0.25 * s;
|
|
160
|
+
out[2] = (m21 + m12) / s;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const s = 2 * Math.sqrt(1 + m22 - m00 - m11);
|
|
164
|
+
out[3] = (m01 - m10) / s;
|
|
165
|
+
out[0] = (m20 + m02) / s;
|
|
166
|
+
out[1] = (m21 + m12) / s;
|
|
167
|
+
out[2] = 0.25 * s;
|
|
168
|
+
}
|
|
169
|
+
return out;
|
|
170
|
+
}
|
|
171
|
+
/** Rotation that makes -Z point from eye toward target (camera/look convention). */
|
|
172
|
+
export function quatLookAt(out, eye, target, up) {
|
|
173
|
+
let zx = eye[0] - target[0], zy = eye[1] - target[1], zz = eye[2] - target[2];
|
|
174
|
+
const zLen = Math.hypot(zx, zy, zz);
|
|
175
|
+
if (zLen === 0) {
|
|
176
|
+
out[0] = 0;
|
|
177
|
+
out[1] = 0;
|
|
178
|
+
out[2] = 0;
|
|
179
|
+
out[3] = 1;
|
|
180
|
+
return out;
|
|
181
|
+
}
|
|
182
|
+
zx /= zLen;
|
|
183
|
+
zy /= zLen;
|
|
184
|
+
zz /= zLen;
|
|
185
|
+
let xx = up[1] * zz - up[2] * zy;
|
|
186
|
+
let xy = up[2] * zx - up[0] * zz;
|
|
187
|
+
let xz = up[0] * zy - up[1] * zx;
|
|
188
|
+
let xLen = Math.hypot(xx, xy, xz);
|
|
189
|
+
if (xLen === 0) {
|
|
190
|
+
// up is parallel to the view direction; pick a stable orthogonal axis.
|
|
191
|
+
xx = zz;
|
|
192
|
+
xy = 0;
|
|
193
|
+
xz = -zx;
|
|
194
|
+
xLen = Math.hypot(xx, xy, xz);
|
|
195
|
+
if (xLen === 0) {
|
|
196
|
+
xx = 1;
|
|
197
|
+
xy = 0;
|
|
198
|
+
xz = 0;
|
|
199
|
+
xLen = 1;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
xx /= xLen;
|
|
203
|
+
xy /= xLen;
|
|
204
|
+
xz /= xLen;
|
|
205
|
+
const yx = zy * xz - zz * xy;
|
|
206
|
+
const yy = zz * xx - zx * xz;
|
|
207
|
+
const yz = zx * xy - zy * xx;
|
|
208
|
+
return quatFromBasis(out, xx, xy, xz, yx, yy, yz, zx, zy, zz);
|
|
209
|
+
}
|
|
210
|
+
/** Quaternion from the rotation part of an affine matrix, ignoring (positive) scale. */
|
|
211
|
+
export function quatFromMat4Rotation(out, m) {
|
|
212
|
+
const sx = Math.hypot(m[0], m[1], m[2]) || 1;
|
|
213
|
+
const sy = Math.hypot(m[4], m[5], m[6]) || 1;
|
|
214
|
+
const sz = Math.hypot(m[8], m[9], m[10]) || 1;
|
|
215
|
+
return quatFromBasis(out, m[0] / sx, m[1] / sx, m[2] / sx, m[4] / sy, m[5] / sy, m[6] / sy, m[8] / sz, m[9] / sz, m[10] / sz);
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/scene/tree/math.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SceneGeometry } from "../geometry.ts";
|
|
2
|
+
import { type SceneMaterial } from "./material.ts";
|
|
3
|
+
import { SceneNode, type NodeOptions } from "./node.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Renderable node: a pure geometry descriptor paired with a material. `geometry` and
|
|
6
|
+
* `material` are swappable; the renderer re-keys its caches by identity.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MeshNode extends SceneNode {
|
|
9
|
+
geometry: SceneGeometry;
|
|
10
|
+
material: SceneMaterial;
|
|
11
|
+
constructor(geometry: SceneGeometry, material?: SceneMaterial, options?: NodeOptions);
|
|
12
|
+
}
|
|
13
|
+
/** Creates a renderable mesh node. Without a material it defaults to `normalMaterial()`. */
|
|
14
|
+
export declare function mesh(geometry: SceneGeometry, material?: SceneMaterial, options?: NodeOptions): MeshNode;
|
|
15
|
+
/** Root node factory. Any node can be a root; `scene()` names the intent. */
|
|
16
|
+
export declare function scene(options?: NodeOptions): SceneNode;
|
|
17
|
+
//# sourceMappingURL=mesh-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-node.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/mesh-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAExD;;;GAGG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;gBAEZ,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,GAAE,WAAgB;CAKzF;AAED,4FAA4F;AAC5F,wBAAgB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,GAAE,WAAgB,GAAG,QAAQ,CAE3G;AAED,6EAA6E;AAC7E,wBAAgB,KAAK,CAAC,OAAO,GAAE,WAAgB,GAAG,SAAS,CAE1D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { normalMaterial } from "./material.js";
|
|
2
|
+
import { SceneNode } from "./node.js";
|
|
3
|
+
/**
|
|
4
|
+
* Renderable node: a pure geometry descriptor paired with a material. `geometry` and
|
|
5
|
+
* `material` are swappable; the renderer re-keys its caches by identity.
|
|
6
|
+
*/
|
|
7
|
+
export class MeshNode extends SceneNode {
|
|
8
|
+
geometry;
|
|
9
|
+
material;
|
|
10
|
+
constructor(geometry, material, options = {}) {
|
|
11
|
+
super("mesh", options);
|
|
12
|
+
this.geometry = geometry;
|
|
13
|
+
this.material = material ?? normalMaterial();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Creates a renderable mesh node. Without a material it defaults to `normalMaterial()`. */
|
|
17
|
+
export function mesh(geometry, material, options = {}) {
|
|
18
|
+
return new MeshNode(geometry, material, options);
|
|
19
|
+
}
|
|
20
|
+
/** Root node factory. Any node can be a root; `scene()` names the intent. */
|
|
21
|
+
export function scene(options = {}) {
|
|
22
|
+
return new SceneNode("scene", options);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mesh-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-node.js","sourceRoot":"","sources":["../../../src/scene/tree/mesh-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,SAAS;IACrC,QAAQ,CAAgB;IACxB,QAAQ,CAAgB;IAExB,YAAY,QAAuB,EAAE,QAAwB,EAAE,UAAuB,EAAE;QACtF,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;CACF;AAED,4FAA4F;AAC5F,MAAM,UAAU,IAAI,CAAC,QAAuB,EAAE,QAAwB,EAAE,UAAuB,EAAE;IAC/F,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,KAAK,CAAC,UAAuB,EAAE;IAC7C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type Mat4 } from "./math.ts";
|
|
2
|
+
/** Three-component vector input accepted by scene-tree setters. */
|
|
3
|
+
export type Vec3Like = readonly [number, number, number] | readonly number[] | Float32Array;
|
|
4
|
+
/** Quaternion input (x, y, z, w) accepted by scene-tree setters. */
|
|
5
|
+
export type QuatLike = readonly [number, number, number, number] | readonly number[] | Float32Array;
|
|
6
|
+
export type SceneNodeKind = "scene" | "group" | "mesh" | "perspective-camera" | "orthographic-camera" | "directional-light" | "ambient-light";
|
|
7
|
+
/** Transform and flag values accepted by `node.set()`. */
|
|
8
|
+
export interface NodeTransformValues {
|
|
9
|
+
readonly position?: Vec3Like;
|
|
10
|
+
/** Intrinsic XYZ Euler angles in radians. Ignored when `quaternion` is also given. */
|
|
11
|
+
readonly rotation?: Vec3Like;
|
|
12
|
+
readonly quaternion?: QuatLike;
|
|
13
|
+
readonly scale?: number | Vec3Like;
|
|
14
|
+
readonly visible?: boolean;
|
|
15
|
+
readonly label?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Options accepted by node factories (`group()`, `mesh()`, `scene()`, cameras, lights). */
|
|
18
|
+
export interface NodeOptions extends NodeTransformValues {
|
|
19
|
+
readonly children?: readonly SceneNode[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Base scene-tree node: a TRS transform with parent/children links. Mutation goes through
|
|
23
|
+
* `set()` so world matrices are recomputed lazily and only for dirty subtrees; the exposed
|
|
24
|
+
* arrays keep a stable identity and are updated in place.
|
|
25
|
+
*/
|
|
26
|
+
export declare class SceneNode {
|
|
27
|
+
#private;
|
|
28
|
+
readonly kind: SceneNodeKind;
|
|
29
|
+
label: string | undefined;
|
|
30
|
+
visible: boolean;
|
|
31
|
+
protected _worldVersion: number;
|
|
32
|
+
constructor(kind: SceneNodeKind, options?: NodeOptions);
|
|
33
|
+
/** Updates transform components in place; unspecified components are left untouched. */
|
|
34
|
+
set(values: NodeTransformValues): this;
|
|
35
|
+
/**
|
|
36
|
+
* Rotates the node so its -Z axis points at a world-space target.
|
|
37
|
+
*
|
|
38
|
+
* The whole computation runs in parent space (the target and up hint are pulled through
|
|
39
|
+
* the parent's affine inverse), which stays exact under non-uniform parent scale: an
|
|
40
|
+
* affine map sends the parent-space ray through the target to the world-space ray through
|
|
41
|
+
* the world target. Extracting a scale-stripped parent rotation instead — as an earlier
|
|
42
|
+
* version did — skews the forward vector whenever the parent scale is anisotropic.
|
|
43
|
+
*/
|
|
44
|
+
lookAt(target: Vec3Like, up?: Vec3Like): this;
|
|
45
|
+
/** Adds children, reparenting them if needed. Throws `AIGPU-SCENE-CYCLE` on cycles. */
|
|
46
|
+
add(...nodes: SceneNode[]): this;
|
|
47
|
+
/** Removes direct children; nodes that are not children are ignored. */
|
|
48
|
+
remove(...nodes: SceneNode[]): this;
|
|
49
|
+
/** Detaches this node from its parent, keeping its local transform. */
|
|
50
|
+
removeFromParent(): this;
|
|
51
|
+
/** Depth-first visit of this node and all descendants. */
|
|
52
|
+
traverse(visit: (node: SceneNode) => void): void;
|
|
53
|
+
get parent(): SceneNode | null;
|
|
54
|
+
get children(): readonly SceneNode[];
|
|
55
|
+
/** Local position. Stable array identity; mutate via `set()`. */
|
|
56
|
+
get position(): Float32Array;
|
|
57
|
+
/** Local rotation quaternion (x, y, z, w). Stable array identity; mutate via `set()`. */
|
|
58
|
+
get quaternion(): Float32Array;
|
|
59
|
+
/** Local scale. Stable array identity; mutate via `set()`. */
|
|
60
|
+
get scale(): Float32Array;
|
|
61
|
+
/** Column-major local TRS matrix, recomputed lazily. Stable array identity. */
|
|
62
|
+
get localMatrix(): Mat4;
|
|
63
|
+
/** Column-major world matrix, recomputed lazily for dirty subtrees. Stable array identity. */
|
|
64
|
+
get worldMatrix(): Mat4;
|
|
65
|
+
/** World-space position derived from `worldMatrix`. Stable array identity. */
|
|
66
|
+
get worldPosition(): Float32Array;
|
|
67
|
+
}
|
|
68
|
+
/** Creates a plain transform node used to group children. */
|
|
69
|
+
export declare function group(options?: NodeOptions): SceneNode;
|
|
70
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/node.ts"],"names":[],"mappings":"AACA,OAAO,EAUL,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AAEnB,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAE5F,oEAAoE;AACpE,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAEpG,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,OAAO,GACP,MAAM,GACN,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,eAAe,CAAC;AAEpB,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,4FAA4F;AAC5F,MAAM,WAAW,WAAY,SAAQ,mBAAmB;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC1C;AAQD;;;;GAIG;AACH,qBAAa,SAAS;;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,UAAQ;IAYf,SAAS,CAAC,aAAa,SAAK;gBAEhB,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,WAAgB;IAS1D,wFAAwF;IACxF,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAqCtC;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAE,QAAa,GAAG,IAAI;IAgBjD,uFAAuF;IACvF,GAAG,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAchC,wEAAwE;IACxE,MAAM,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAOnC,uEAAuE;IACvE,gBAAgB,IAAI,IAAI;IAKxB,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAKhD,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAE7B;IAED,IAAI,QAAQ,IAAI,SAAS,SAAS,EAAE,CAEnC;IAED,iEAAiE;IACjE,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,yFAAyF;IACzF,IAAI,UAAU,IAAI,YAAY,CAE7B;IAED,8DAA8D;IAC9D,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,+EAA+E;IAC/E,IAAI,WAAW,IAAI,IAAI,CAMtB;IAED,8FAA8F;IAC9F,IAAI,WAAW,IAAI,IAAI,CAatB;IAED,8EAA8E;IAC9E,IAAI,aAAa,IAAI,YAAY,CAMhC;CAmBF;AAED,6DAA6D;AAC7D,wBAAgB,KAAK,CAAC,OAAO,GAAE,WAAgB,GAAG,SAAS,CAE1D"}
|