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,38 @@
|
|
|
1
|
+
import { pushVertex, toFlatTriangles } from "./primitive-data-utils.js";
|
|
2
|
+
export function torusData(spec) {
|
|
3
|
+
const smooth = torusSmoothData(spec);
|
|
4
|
+
return spec.shading === "flat" ? toFlatTriangles(smooth) : smooth;
|
|
5
|
+
}
|
|
6
|
+
function torusSmoothData(spec) {
|
|
7
|
+
const { radius, tube, radialSegments, tubularSegments, arc } = spec;
|
|
8
|
+
const vertices = [];
|
|
9
|
+
const indices = [];
|
|
10
|
+
const row = radialSegments + 1;
|
|
11
|
+
for (let j = 0; j <= tubularSegments; j++) {
|
|
12
|
+
const u = j / tubularSegments;
|
|
13
|
+
const ring = u * arc;
|
|
14
|
+
const cosRing = Math.cos(ring);
|
|
15
|
+
const sinRing = Math.sin(ring);
|
|
16
|
+
for (let i = 0; i <= radialSegments; i++) {
|
|
17
|
+
const v = i / radialSegments;
|
|
18
|
+
const cross = v * Math.PI * 2;
|
|
19
|
+
const cosTube = Math.cos(cross);
|
|
20
|
+
const sinTube = Math.sin(cross);
|
|
21
|
+
const x = (radius + tube * cosTube) * cosRing;
|
|
22
|
+
const y = tube * sinTube;
|
|
23
|
+
const z = (radius + tube * cosTube) * sinRing;
|
|
24
|
+
pushVertex(vertices, x, y, z, cosTube * cosRing, sinTube, cosTube * sinRing, u, v);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (let j = 0; j < tubularSegments; j++) {
|
|
28
|
+
for (let i = 0; i < radialSegments; i++) {
|
|
29
|
+
const a = j * row + i;
|
|
30
|
+
const b = a + 1;
|
|
31
|
+
const d = (j + 1) * row + i;
|
|
32
|
+
const c = d + 1;
|
|
33
|
+
indices.push(a, b, d, b, c, d);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { vertices: new Float32Array(vertices), indices: new Uint16Array(indices), vertexCount: vertices.length / 8 };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=torus-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"torus-data.js","sourceRoot":"","sources":["../../../src/scene/geometry-src/torus-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AAW3F,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACpE,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB;IAC1C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,cAAc,GAAG,CAAC,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;YAC9C,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;YAC9C,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACvH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-layout.d.ts","sourceRoot":"","sources":["../../../src/scene/geometry-src/vertex-layout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,GAAG,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-layout.js","sourceRoot":"","sources":["../../../src/scene/geometry-src/vertex-layout.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mesh recipes: pure CPU values (`{ kind, props }`) that carry their own upload.
|
|
3
|
+
*
|
|
4
|
+
* Each factory imports exactly one generator and closes over it, so the module graph — not a
|
|
5
|
+
* registry — decides what a program pays for: `box()` links `mesh-box.ts` and nothing else, and
|
|
6
|
+
* `geometry(gpu, recipe)` needs no knowledge of any primitive to expand it. The values stay frozen,
|
|
7
|
+
* device-free and lazy, which keeps them safe to store in a scene node and to fingerprint by
|
|
8
|
+
* `kind` + `props`.
|
|
9
|
+
*/
|
|
10
|
+
import { type GeometryRecipeOf } from "./geometry-recipe.ts";
|
|
11
|
+
import type { BoxSpec, CapsuleSpec, ConeSpec, CylinderSpec, DiskSpec, FullscreenQuadSpec, IcosphereSpec, PlaneSpec, PolyhedronSpec, RingSpec, SphereSpec, TorusSpec } from "./geometry-src/index.ts";
|
|
12
|
+
export type { GeometryRecipe } from "./geometry-recipe.ts";
|
|
13
|
+
/** Removes Device and makes render-domain spec fields optional so scene descriptors stay pure. */
|
|
14
|
+
type WithoutDevice<T> = Partial<Omit<T, "device">>;
|
|
15
|
+
export type BoxOptions = WithoutDevice<BoxSpec>;
|
|
16
|
+
export type CapsuleOptions = WithoutDevice<CapsuleSpec>;
|
|
17
|
+
export type ConeOptions = WithoutDevice<ConeSpec>;
|
|
18
|
+
export type CylinderOptions = WithoutDevice<CylinderSpec>;
|
|
19
|
+
export type DiskOptions = WithoutDevice<DiskSpec>;
|
|
20
|
+
export type FullscreenQuadOptions = WithoutDevice<FullscreenQuadSpec>;
|
|
21
|
+
export type IcosphereOptions = WithoutDevice<IcosphereSpec>;
|
|
22
|
+
export type PlaneOptions = WithoutDevice<PlaneSpec>;
|
|
23
|
+
export type PolyhedronOptions = WithoutDevice<PolyhedronSpec>;
|
|
24
|
+
export type RingOptions = WithoutDevice<RingSpec>;
|
|
25
|
+
export type SphereOptions = WithoutDevice<SphereSpec>;
|
|
26
|
+
export type TorusOptions = WithoutDevice<TorusSpec>;
|
|
27
|
+
type RecipeProps = {
|
|
28
|
+
readonly box: BoxOptions;
|
|
29
|
+
readonly capsule: CapsuleOptions;
|
|
30
|
+
readonly cone: ConeOptions;
|
|
31
|
+
readonly cylinder: CylinderOptions;
|
|
32
|
+
readonly disk: DiskOptions;
|
|
33
|
+
readonly dodecahedron: PolyhedronOptions;
|
|
34
|
+
readonly fullscreenQuad: FullscreenQuadOptions;
|
|
35
|
+
readonly icosahedron: PolyhedronOptions;
|
|
36
|
+
readonly icosphere: IcosphereOptions;
|
|
37
|
+
readonly octahedron: PolyhedronOptions;
|
|
38
|
+
readonly plane: PlaneOptions;
|
|
39
|
+
readonly ring: RingOptions;
|
|
40
|
+
readonly sphere: SphereOptions;
|
|
41
|
+
readonly tetrahedron: PolyhedronOptions;
|
|
42
|
+
readonly torus: TorusOptions;
|
|
43
|
+
};
|
|
44
|
+
export type GeometryKind = keyof RecipeProps;
|
|
45
|
+
export type SceneGeometryOfKind<K extends GeometryKind> = Extract<SceneGeometry, {
|
|
46
|
+
readonly kind: K;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Any of the 15 recipes. Still `{ kind, props }` for consumers that inspect or store it — the
|
|
50
|
+
* `build()` it also carries is internal, and is what lets `geometry()` expand it without a table.
|
|
51
|
+
*/
|
|
52
|
+
export type SceneGeometry = {
|
|
53
|
+
[K in GeometryKind]: GeometryRecipeOf<K, RecipeProps[K]>;
|
|
54
|
+
}[GeometryKind];
|
|
55
|
+
export declare function box(options?: BoxOptions): SceneGeometryOfKind<"box">;
|
|
56
|
+
export declare function capsule(options?: CapsuleOptions): SceneGeometryOfKind<"capsule">;
|
|
57
|
+
export declare function cone(options?: ConeOptions): SceneGeometryOfKind<"cone">;
|
|
58
|
+
export declare function cylinder(options?: CylinderOptions): SceneGeometryOfKind<"cylinder">;
|
|
59
|
+
export declare function disk(options?: DiskOptions): SceneGeometryOfKind<"disk">;
|
|
60
|
+
export declare function dodecahedron(options?: PolyhedronOptions): SceneGeometryOfKind<"dodecahedron">;
|
|
61
|
+
export declare function fullscreenQuad(options?: FullscreenQuadOptions): SceneGeometryOfKind<"fullscreenQuad">;
|
|
62
|
+
export declare function icosahedron(options?: PolyhedronOptions): SceneGeometryOfKind<"icosahedron">;
|
|
63
|
+
export declare function icosphere(options?: IcosphereOptions): SceneGeometryOfKind<"icosphere">;
|
|
64
|
+
export declare function octahedron(options?: PolyhedronOptions): SceneGeometryOfKind<"octahedron">;
|
|
65
|
+
export declare function plane(options?: PlaneOptions): SceneGeometryOfKind<"plane">;
|
|
66
|
+
export declare function ring(options?: RingOptions): SceneGeometryOfKind<"ring">;
|
|
67
|
+
export declare function sphere(options?: SphereOptions): SceneGeometryOfKind<"sphere">;
|
|
68
|
+
export declare function tetrahedron(options?: PolyhedronOptions): SceneGeometryOfKind<"tetrahedron">;
|
|
69
|
+
export declare function torus(options?: TorusOptions): SceneGeometryOfKind<"torus">;
|
|
70
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/scene/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA+B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgB1F,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,cAAc,EACd,QAAQ,EACR,UAAU,EACV,SAAS,EACV,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,kGAAkG;AAClG,KAAK,aAAa,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAChD,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAEpD,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;AAC7C,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AACvG;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,YAAY,GAAG,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACzD,CAAC,YAAY,CAAC,CAAC;AAEhB,wBAAgB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAExE;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAEpF;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAE3E;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAEvF;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAE3E;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAEjG;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAEzG;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAE/F;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAE1F;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAE7F;AAED,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAE9E;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAE3E;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAEjF;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,iBAAsB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAE/F;AAED,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAE9E"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mesh recipes: pure CPU values (`{ kind, props }`) that carry their own upload.
|
|
3
|
+
*
|
|
4
|
+
* Each factory imports exactly one generator and closes over it, so the module graph — not a
|
|
5
|
+
* registry — decides what a program pays for: `box()` links `mesh-box.ts` and nothing else, and
|
|
6
|
+
* `geometry(gpu, recipe)` needs no knowledge of any primitive to expand it. The values stay frozen,
|
|
7
|
+
* device-free and lazy, which keeps them safe to store in a scene node and to fingerprint by
|
|
8
|
+
* `kind` + `props`.
|
|
9
|
+
*/
|
|
10
|
+
import { recipe } from "./geometry-recipe.js";
|
|
11
|
+
import { box as generateBox } from "./geometry-src/mesh-box.js";
|
|
12
|
+
import { capsule as generateCapsule } from "./geometry-src/mesh-capsule.js";
|
|
13
|
+
import { cone as generateCone } from "./geometry-src/mesh-cone.js";
|
|
14
|
+
import { cylinder as generateCylinder } from "./geometry-src/mesh-cylinder.js";
|
|
15
|
+
import { disk as generateDisk } from "./geometry-src/mesh-disk.js";
|
|
16
|
+
import { dodecahedron as generateDodecahedron } from "./geometry-src/mesh-dodecahedron.js";
|
|
17
|
+
import { fullscreenQuad as generateFullscreenQuad } from "./geometry-src/mesh-fullscreen-quad.js";
|
|
18
|
+
import { icosahedron as generateIcosahedron } from "./geometry-src/mesh-icosahedron.js";
|
|
19
|
+
import { icosphere as generateIcosphere } from "./geometry-src/mesh-icosphere.js";
|
|
20
|
+
import { octahedron as generateOctahedron } from "./geometry-src/mesh-octahedron.js";
|
|
21
|
+
import { plane as generatePlane } from "./geometry-src/mesh-plane.js";
|
|
22
|
+
import { ring as generateRing } from "./geometry-src/mesh-ring.js";
|
|
23
|
+
import { sphere as generateSphere } from "./geometry-src/mesh-sphere.js";
|
|
24
|
+
import { tetrahedron as generateTetrahedron } from "./geometry-src/mesh-tetrahedron.js";
|
|
25
|
+
import { torus as generateTorus } from "./geometry-src/mesh-torus.js";
|
|
26
|
+
export function box(options = {}) {
|
|
27
|
+
return recipe("box", options, (device, props) => generateBox({ device, ...props }));
|
|
28
|
+
}
|
|
29
|
+
export function capsule(options = {}) {
|
|
30
|
+
return recipe("capsule", options, (device, props) => generateCapsule({ device, radius: 0.5, height: 1, ...props }));
|
|
31
|
+
}
|
|
32
|
+
export function cone(options = {}) {
|
|
33
|
+
return recipe("cone", options, (device, props) => generateCone({ device, radius: 0.5, height: 1, ...props }));
|
|
34
|
+
}
|
|
35
|
+
export function cylinder(options = {}) {
|
|
36
|
+
return recipe("cylinder", options, (device, props) => generateCylinder({ device, radius: 0.5, height: 1, ...props }));
|
|
37
|
+
}
|
|
38
|
+
export function disk(options = {}) {
|
|
39
|
+
return recipe("disk", options, (device, props) => generateDisk({ device, radius: 0.5, ...props }));
|
|
40
|
+
}
|
|
41
|
+
export function dodecahedron(options = {}) {
|
|
42
|
+
return recipe("dodecahedron", options, (device, props) => generateDodecahedron({ device, radius: 0.5, ...props }));
|
|
43
|
+
}
|
|
44
|
+
export function fullscreenQuad(options = {}) {
|
|
45
|
+
return recipe("fullscreenQuad", options, (device, props) => generateFullscreenQuad({ device, ...props }));
|
|
46
|
+
}
|
|
47
|
+
export function icosahedron(options = {}) {
|
|
48
|
+
return recipe("icosahedron", options, (device, props) => generateIcosahedron({ device, radius: 0.5, ...props }));
|
|
49
|
+
}
|
|
50
|
+
export function icosphere(options = {}) {
|
|
51
|
+
return recipe("icosphere", options, (device, props) => generateIcosphere({ device, radius: 0.5, ...props }));
|
|
52
|
+
}
|
|
53
|
+
export function octahedron(options = {}) {
|
|
54
|
+
return recipe("octahedron", options, (device, props) => generateOctahedron({ device, radius: 0.5, ...props }));
|
|
55
|
+
}
|
|
56
|
+
export function plane(options = {}) {
|
|
57
|
+
return recipe("plane", options, (device, props) => generatePlane({ device, ...props }));
|
|
58
|
+
}
|
|
59
|
+
export function ring(options = {}) {
|
|
60
|
+
return recipe("ring", options, (device, props) => generateRing({ device, innerRadius: 0.25, outerRadius: 0.5, ...props }));
|
|
61
|
+
}
|
|
62
|
+
export function sphere(options = {}) {
|
|
63
|
+
return recipe("sphere", options, (device, props) => generateSphere({ device, ...props }));
|
|
64
|
+
}
|
|
65
|
+
export function tetrahedron(options = {}) {
|
|
66
|
+
return recipe("tetrahedron", options, (device, props) => generateTetrahedron({ device, radius: 0.5, ...props }));
|
|
67
|
+
}
|
|
68
|
+
export function torus(options = {}) {
|
|
69
|
+
return recipe("torus", options, (device, props) => generateTorus({ device, radius: 0.5, tube: 0.2, ...props }));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/scene/geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Mat4 = Float32Array;
|
|
2
|
+
export interface OrbitOptions {
|
|
3
|
+
readonly radius?: number;
|
|
4
|
+
readonly height?: number;
|
|
5
|
+
readonly speed?: number;
|
|
6
|
+
}
|
|
7
|
+
/** Returns a column-major model matrix orbiting around the Y axis using explicit JS time. */
|
|
8
|
+
export declare function orbit(time: number, options?: OrbitOptions): Mat4;
|
|
9
|
+
//# sourceMappingURL=orbit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbit.d.ts","sourceRoot":"","sources":["../../src/scene/orbit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC;AAEhC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI,CAYpE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Returns a column-major model matrix orbiting around the Y axis using explicit JS time. */
|
|
2
|
+
export function orbit(time, options = {}) {
|
|
3
|
+
const angle = time * (options.speed ?? 1);
|
|
4
|
+
const radius = options.radius ?? 1;
|
|
5
|
+
const y = options.height ?? 0;
|
|
6
|
+
const c = Math.cos(angle);
|
|
7
|
+
const s = Math.sin(angle);
|
|
8
|
+
return new Float32Array([
|
|
9
|
+
c, 0, -s, 0,
|
|
10
|
+
0, 1, 0, 0,
|
|
11
|
+
s, 0, c, 0,
|
|
12
|
+
c * radius, y, s * radius, 1,
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=orbit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbit.js","sourceRoot":"","sources":["../../src/scene/orbit.ts"],"names":[],"mappings":"AAQA,6FAA6F;AAC7F,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,UAAwB,EAAE;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,IAAI,YAAY,CAAC;QACtB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AIGpuError } from "../../errors.ts";
|
|
2
|
+
export declare function sceneCycleError(where: string, label: string | undefined): AIGpuError;
|
|
3
|
+
export declare function sceneValueError(where: string, name: string, expected: string): AIGpuError;
|
|
4
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAQpF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAOzF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AIGpuError } from "../../errors.js";
|
|
2
|
+
export function sceneCycleError(where, label) {
|
|
3
|
+
const name = label ? `'${label}'` : "the node";
|
|
4
|
+
return new AIGpuError({
|
|
5
|
+
code: "AIGPU-SCENE-CYCLE",
|
|
6
|
+
message: `add() would make ${name} an ancestor of itself.`,
|
|
7
|
+
fix: "Remove the node from the ancestor chain first, or add a different node.",
|
|
8
|
+
where,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function sceneValueError(where, name, expected) {
|
|
12
|
+
return new AIGpuError({
|
|
13
|
+
code: "AIGPU-SCENE-VALUE-INVALID",
|
|
14
|
+
message: `\`${name}\` is invalid; expected ${expected}.`,
|
|
15
|
+
fix: `Pass ${expected} for \`${name}\`.`,
|
|
16
|
+
where,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/scene/tree/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAyB;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/C,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,oBAAoB,IAAI,yBAAyB;QAC1D,GAAG,EAAE,yEAAyE;QAC9E,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY,EAAE,QAAgB;IAC3E,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,KAAK,IAAI,2BAA2B,QAAQ,GAAG;QACxD,GAAG,EAAE,QAAQ,QAAQ,UAAU,IAAI,KAAK;QACxC,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { SceneNode, type NodeOptions, type NodeTransformValues, type Vec3Like } from "./node.ts";
|
|
2
|
+
export interface DirectionalLightOptions extends NodeOptions {
|
|
3
|
+
/** World-space direction the light travels toward. Defaults to `[0, -1, 0]`. */
|
|
4
|
+
readonly direction?: Vec3Like;
|
|
5
|
+
/** Linear RGB color. Defaults to white. */
|
|
6
|
+
readonly color?: Vec3Like;
|
|
7
|
+
readonly intensity?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DirectionalLightValues extends NodeTransformValues {
|
|
10
|
+
readonly direction?: Vec3Like;
|
|
11
|
+
readonly color?: Vec3Like;
|
|
12
|
+
readonly intensity?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface AmbientLightOptions extends NodeOptions {
|
|
15
|
+
readonly color?: Vec3Like;
|
|
16
|
+
readonly intensity?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AmbientLightValues extends NodeTransformValues {
|
|
19
|
+
readonly color?: Vec3Like;
|
|
20
|
+
readonly intensity?: number;
|
|
21
|
+
}
|
|
22
|
+
/** Directional (sun-style) light node. Direction is explicit, not transform-derived. */
|
|
23
|
+
export declare class DirectionalLight extends SceneNode {
|
|
24
|
+
#private;
|
|
25
|
+
constructor(options?: DirectionalLightOptions);
|
|
26
|
+
set(values: DirectionalLightValues): this;
|
|
27
|
+
/** World-space travel direction. Stable array identity; mutate via `set()`. */
|
|
28
|
+
get direction(): Float32Array;
|
|
29
|
+
get color(): Float32Array;
|
|
30
|
+
get intensity(): number;
|
|
31
|
+
}
|
|
32
|
+
/** Ambient fill light node applied uniformly to lit materials. */
|
|
33
|
+
export declare class AmbientLight extends SceneNode {
|
|
34
|
+
#private;
|
|
35
|
+
constructor(options?: AmbientLightOptions);
|
|
36
|
+
set(values: AmbientLightValues): this;
|
|
37
|
+
get color(): Float32Array;
|
|
38
|
+
get intensity(): number;
|
|
39
|
+
}
|
|
40
|
+
export declare function directionalLight(options?: DirectionalLightOptions): DirectionalLight;
|
|
41
|
+
export declare function ambientLight(options?: AmbientLightOptions): AmbientLight;
|
|
42
|
+
//# sourceMappingURL=light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/light.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjG,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wFAAwF;AACxF,qBAAa,gBAAiB,SAAQ,SAAS;;gBAKjC,OAAO,GAAE,uBAA4B;IAQxC,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAMlD,+EAA+E;IAC/E,IAAI,SAAS,IAAI,YAAY,CAE5B;IAED,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;CAQF;AAED,kEAAkE;AAClE,qBAAa,YAAa,SAAQ,SAAS;;gBAI7B,OAAO,GAAE,mBAAwB;IAOpC,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAM9C,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;CAOF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAExF;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAE5E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { sceneValueError } from "./errors.js";
|
|
2
|
+
import { SceneNode } from "./node.js";
|
|
3
|
+
/** Directional (sun-style) light node. Direction is explicit, not transform-derived. */
|
|
4
|
+
export class DirectionalLight extends SceneNode {
|
|
5
|
+
#direction = new Float32Array([0, -1, 0]);
|
|
6
|
+
#color = new Float32Array([1, 1, 1]);
|
|
7
|
+
#intensity = 1;
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
// Validate before super(): SceneNode's constructor reparents `options.children`, so a
|
|
10
|
+
// throw after it would strand them on a light nobody can reach.
|
|
11
|
+
validateLightOptions(`${options.label ?? "directional-light"}.set`, options);
|
|
12
|
+
super("directional-light", options);
|
|
13
|
+
this.#apply(options);
|
|
14
|
+
}
|
|
15
|
+
set(values) {
|
|
16
|
+
super.set(values);
|
|
17
|
+
this.#apply(values);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
/** World-space travel direction. Stable array identity; mutate via `set()`. */
|
|
21
|
+
get direction() {
|
|
22
|
+
return this.#direction;
|
|
23
|
+
}
|
|
24
|
+
get color() {
|
|
25
|
+
return this.#color;
|
|
26
|
+
}
|
|
27
|
+
get intensity() {
|
|
28
|
+
return this.#intensity;
|
|
29
|
+
}
|
|
30
|
+
#apply(values) {
|
|
31
|
+
const where = `${this.label ?? this.kind}.set`;
|
|
32
|
+
if (values.direction !== undefined)
|
|
33
|
+
writeVec3(this.#direction, values.direction, "direction", where);
|
|
34
|
+
if (values.color !== undefined)
|
|
35
|
+
writeVec3(this.#color, values.color, "color", where);
|
|
36
|
+
if (values.intensity !== undefined)
|
|
37
|
+
this.#intensity = requireNonNegative(where, values.intensity);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Ambient fill light node applied uniformly to lit materials. */
|
|
41
|
+
export class AmbientLight extends SceneNode {
|
|
42
|
+
#color = new Float32Array([1, 1, 1]);
|
|
43
|
+
#intensity = 1;
|
|
44
|
+
constructor(options = {}) {
|
|
45
|
+
// Validate before super(): see DirectionalLight.
|
|
46
|
+
validateLightOptions(`${options.label ?? "ambient-light"}.set`, options);
|
|
47
|
+
super("ambient-light", options);
|
|
48
|
+
this.#apply(options);
|
|
49
|
+
}
|
|
50
|
+
set(values) {
|
|
51
|
+
super.set(values);
|
|
52
|
+
this.#apply(values);
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
get color() {
|
|
56
|
+
return this.#color;
|
|
57
|
+
}
|
|
58
|
+
get intensity() {
|
|
59
|
+
return this.#intensity;
|
|
60
|
+
}
|
|
61
|
+
#apply(values) {
|
|
62
|
+
const where = `${this.label ?? this.kind}.set`;
|
|
63
|
+
if (values.color !== undefined)
|
|
64
|
+
writeVec3(this.#color, values.color, "color", where);
|
|
65
|
+
if (values.intensity !== undefined)
|
|
66
|
+
this.#intensity = requireNonNegative(where, values.intensity);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export function directionalLight(options = {}) {
|
|
70
|
+
return new DirectionalLight(options);
|
|
71
|
+
}
|
|
72
|
+
export function ambientLight(options = {}) {
|
|
73
|
+
return new AmbientLight(options);
|
|
74
|
+
}
|
|
75
|
+
function writeVec3(out, value, name, where) {
|
|
76
|
+
if (value.length !== 3)
|
|
77
|
+
throw sceneValueError(where, name, "an array of 3 numbers");
|
|
78
|
+
out[0] = value[0];
|
|
79
|
+
out[1] = value[1];
|
|
80
|
+
out[2] = value[2];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Raw-option check runnable before `super()` (no `this`). `#apply()` re-runs the same
|
|
84
|
+
* checks after construction, so the two paths cannot drift.
|
|
85
|
+
*/
|
|
86
|
+
function validateLightOptions(where, options) {
|
|
87
|
+
const direction = options.direction;
|
|
88
|
+
if (direction !== undefined && direction.length !== 3) {
|
|
89
|
+
throw sceneValueError(where, "direction", "an array of 3 numbers");
|
|
90
|
+
}
|
|
91
|
+
if (options.color !== undefined && options.color.length !== 3) {
|
|
92
|
+
throw sceneValueError(where, "color", "an array of 3 numbers");
|
|
93
|
+
}
|
|
94
|
+
if (options.intensity !== undefined)
|
|
95
|
+
requireNonNegative(where, options.intensity);
|
|
96
|
+
}
|
|
97
|
+
function requireNonNegative(where, value) {
|
|
98
|
+
if (!(value >= 0))
|
|
99
|
+
throw sceneValueError(where, "intensity", "a number greater than or equal to 0");
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=light.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/scene/tree/light.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { Vec3Like } from "./node.ts";
|
|
2
|
+
export type SceneMaterialKind = "unlit" | "normal" | "lambert" | "shader";
|
|
3
|
+
/** Blend preset shared with `DrawOptions.blend`. */
|
|
4
|
+
export type MaterialBlend = "alpha" | "additive" | "premultiplied";
|
|
5
|
+
/**
|
|
6
|
+
* Pure material descriptor consumed by the scene renderer. Holds shading parameters only —
|
|
7
|
+
* no GPU resources; pipelines are compiled when a tree is bound with `gpu.scene()`.
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class SceneMaterial {
|
|
10
|
+
/**
|
|
11
|
+
* Set by the base constructor (not by a subclass field) so it is already readable while
|
|
12
|
+
* a subclass constructor validates its options — subclass fields are installed only
|
|
13
|
+
* after `super()` returns, which used to make validation errors report `undefined.set`.
|
|
14
|
+
*/
|
|
15
|
+
readonly kind: SceneMaterialKind;
|
|
16
|
+
label: string | undefined;
|
|
17
|
+
blend: MaterialBlend | undefined;
|
|
18
|
+
constructor(kind: SceneMaterialKind);
|
|
19
|
+
}
|
|
20
|
+
export interface ColorMaterialOptions {
|
|
21
|
+
/** Linear RGB color; pass `srgb("#…")` for hex input. Defaults to white. */
|
|
22
|
+
readonly color?: Vec3Like;
|
|
23
|
+
readonly opacity?: number;
|
|
24
|
+
readonly blend?: MaterialBlend;
|
|
25
|
+
readonly label?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ColorMaterialValues {
|
|
28
|
+
readonly color?: Vec3Like;
|
|
29
|
+
readonly opacity?: number;
|
|
30
|
+
}
|
|
31
|
+
declare abstract class ColorMaterial extends SceneMaterial {
|
|
32
|
+
#private;
|
|
33
|
+
constructor(kind: SceneMaterialKind, options?: ColorMaterialOptions);
|
|
34
|
+
set(values: ColorMaterialValues): this;
|
|
35
|
+
/** Linear RGB color. Stable array identity; mutate via `set()`. */
|
|
36
|
+
get color(): Float32Array;
|
|
37
|
+
get opacity(): number;
|
|
38
|
+
}
|
|
39
|
+
/** Flat-color material; renders without lights. */
|
|
40
|
+
export declare class UnlitMaterial extends ColorMaterial {
|
|
41
|
+
readonly kind: "unlit";
|
|
42
|
+
constructor(options?: ColorMaterialOptions);
|
|
43
|
+
}
|
|
44
|
+
/** N·L diffuse material lit by scene lights (uses `@aigpu/wgsl-std/light` lambert). */
|
|
45
|
+
export declare class LambertMaterial extends ColorMaterial {
|
|
46
|
+
readonly kind: "lambert";
|
|
47
|
+
constructor(options?: ColorMaterialOptions);
|
|
48
|
+
}
|
|
49
|
+
/** Debug material that shades world-space normals; needs no lights or parameters. */
|
|
50
|
+
export declare class NormalMaterial extends SceneMaterial {
|
|
51
|
+
readonly kind: "normal";
|
|
52
|
+
constructor();
|
|
53
|
+
}
|
|
54
|
+
export interface ShaderMaterialOptions {
|
|
55
|
+
/** Initial binding values keyed by WGSL variable name, like `draw.set()`. */
|
|
56
|
+
readonly set?: Record<string, unknown>;
|
|
57
|
+
readonly blend?: MaterialBlend;
|
|
58
|
+
readonly label?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Custom material: a WGSL fragment stage compiled against the scene renderer's vertex
|
|
62
|
+
* contract. Scene globals live in `@group(0)` (renderer-owned); material bindings start
|
|
63
|
+
* at `@group(1)`.
|
|
64
|
+
*/
|
|
65
|
+
export declare class ShaderMaterial extends SceneMaterial {
|
|
66
|
+
#private;
|
|
67
|
+
readonly kind: "shader";
|
|
68
|
+
readonly source: string;
|
|
69
|
+
constructor(source: string, options?: ShaderMaterialOptions);
|
|
70
|
+
/** Merges binding values per top-level key; the renderer forwards them to `draw.set()`. */
|
|
71
|
+
set(values: Record<string, unknown>): this;
|
|
72
|
+
get values(): Readonly<Record<string, unknown>>;
|
|
73
|
+
}
|
|
74
|
+
export declare function unlitMaterial(options?: ColorMaterialOptions): UnlitMaterial;
|
|
75
|
+
export declare function lambertMaterial(options?: ColorMaterialOptions): LambertMaterial;
|
|
76
|
+
export declare function normalMaterial(): NormalMaterial;
|
|
77
|
+
export declare function shaderMaterial(source: string, options?: ShaderMaterialOptions): ShaderMaterial;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=material.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../../src/scene/tree/material.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;AAEnE;;;GAGG;AACH,8BAAsB,aAAa;IACjC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;gBAErB,IAAI,EAAE,iBAAiB;CAGpC;AAED,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,uBAAe,aAAc,SAAQ,aAAa;;gBAIpC,IAAI,EAAE,iBAAiB,EAAE,OAAO,GAAE,oBAAyB;IAOvE,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKtC,mEAAmE;IACnE,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;CAeF;AAED,mDAAmD;AACnD,qBAAa,aAAc,SAAQ,aAAa;IAE9C,SAAiB,IAAI,EAAE,OAAO,CAAC;gBAEnB,OAAO,GAAE,oBAAyB;CAG/C;AAED,uFAAuF;AACvF,qBAAa,eAAgB,SAAQ,aAAa;IAChD,SAAiB,IAAI,EAAE,SAAS,CAAC;gBAErB,OAAO,GAAE,oBAAyB;CAG/C;AAED,qFAAqF;AACrF,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAiB,IAAI,EAAE,QAAQ,CAAC;;CAKjC;AAED,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,aAAa;;IAC/C,SAAiB,IAAI,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGZ,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;IAQ/D,2FAA2F;IAC3F,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU1C,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE9C;CACF;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAE/E;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,oBAAyB,GAAG,eAAe,CAEnF;AAED,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAElG"}
|