murow 0.0.70 → 0.0.72
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/README.md +54 -37
- package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
- package/dist/cjs/core/binary-codec/index.js +1 -0
- package/dist/cjs/core/driver/driver.js +1 -0
- package/dist/cjs/core/driver/drivers/immediate.js +1 -0
- package/dist/cjs/core/driver/drivers/index.js +1 -0
- package/dist/cjs/core/driver/drivers/raf.js +1 -0
- package/dist/cjs/core/driver/drivers/timeout.js +1 -0
- package/dist/cjs/core/driver/index.js +1 -0
- package/dist/cjs/core/events/event-system.js +1 -0
- package/dist/cjs/core/events/index.js +1 -0
- package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
- package/dist/cjs/core/fixed-ticker/index.js +1 -0
- package/dist/cjs/core/free-list/free-list.js +1 -0
- package/dist/cjs/core/free-list/index.js +1 -0
- package/dist/cjs/core/generate-id/generate-id.js +1 -0
- package/dist/cjs/core/generate-id/index.js +1 -0
- package/dist/cjs/core/index.js +1 -0
- package/dist/cjs/core/input/index.js +1 -0
- package/dist/cjs/core/input/manager.js +1 -0
- package/dist/cjs/core/input/sources/browser.js +1 -0
- package/dist/cjs/core/input/sources/index.js +1 -0
- package/dist/cjs/core/input/types.js +1 -0
- package/dist/cjs/core/lerp/index.js +1 -0
- package/dist/cjs/core/lerp/lerp.js +1 -0
- package/dist/cjs/core/navmesh/index.js +1 -0
- package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
- package/dist/cjs/core/navmesh/navmesh.js +1 -0
- package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
- package/dist/cjs/core/pooled-codec/index.js +1 -0
- package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
- package/dist/cjs/core/prediction/index.js +1 -0
- package/dist/cjs/core/prediction/prediction.js +1 -0
- package/dist/cjs/core/ray/index.js +1 -0
- package/dist/cjs/core/ray/ray-2d.js +1 -0
- package/dist/cjs/core/ray/ray-3d.js +1 -0
- package/dist/cjs/core/simple-rng/index.js +1 -0
- package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
- package/dist/cjs/core/sparse-batcher/index.js +1 -0
- package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
- package/dist/cjs/ecs/component-store.js +1 -0
- package/dist/cjs/ecs/component.js +1 -0
- package/dist/cjs/ecs/entity-handle.js +1 -0
- package/dist/cjs/ecs/index.js +1 -0
- package/dist/cjs/ecs/system-builder.js +1 -0
- package/dist/cjs/ecs/world-systems.js +1 -0
- package/dist/cjs/ecs/world.js +1 -0
- package/dist/cjs/game/index.js +1 -0
- package/dist/cjs/game/loop/index.js +1 -0
- package/dist/cjs/game/loop/loop.js +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/net/adapters/browser-websocket.js +1 -0
- package/dist/cjs/net/adapters/bun-websocket.js +1 -0
- package/dist/cjs/net/buffer-pool.js +1 -0
- package/dist/cjs/net/client.js +1 -0
- package/dist/cjs/net/index.js +1 -0
- package/dist/cjs/net/server.js +1 -0
- package/dist/cjs/net/types.js +1 -0
- package/dist/cjs/net/validators.js +1 -0
- package/dist/cjs/protocol/index.js +1 -0
- package/dist/cjs/protocol/intent/define-intent.js +1 -0
- package/dist/cjs/protocol/intent/index.js +1 -0
- package/dist/cjs/protocol/intent/intent-registry.js +1 -0
- package/dist/cjs/protocol/intent/intent.js +1 -0
- package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
- package/dist/cjs/protocol/rpc/index.js +1 -0
- package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
- package/dist/cjs/protocol/rpc/rpc.js +1 -0
- package/dist/cjs/protocol/snapshot/index.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
- package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
- package/dist/cjs/renderer/base/renderer-2d.js +1 -0
- package/dist/cjs/renderer/base/renderer-3d.js +1 -0
- package/dist/cjs/renderer/base/renderer.js +1 -0
- package/dist/cjs/renderer/gltf/helpers.js +1 -0
- package/dist/cjs/renderer/gltf/parser.js +1 -0
- package/dist/cjs/renderer/gltf/skeletal-animation.js +1 -0
- package/dist/cjs/renderer/gltf/skin-parser.js +1 -0
- package/dist/cjs/renderer/index.js +1 -0
- package/dist/cjs/renderer/math.js +1 -0
- package/dist/cjs/renderer/prefab-bucket/concrete.js +1 -0
- package/dist/cjs/renderer/prefab-bucket/index.js +1 -0
- package/dist/cjs/renderer/prefab-bucket/parsers.js +1 -0
- package/dist/cjs/renderer/prefab-bucket/specs.js +1 -0
- package/dist/cjs/renderer/spritesheet/helpers.js +1 -0
- package/dist/cjs/renderer/spritesheet/parser.js +1 -0
- package/dist/cjs/renderer/types.js +1 -0
- package/dist/esm/core/binary-codec/binary-codec.js +1 -0
- package/dist/esm/core/binary-codec/index.js +1 -0
- package/dist/esm/core/driver/driver.js +1 -0
- package/dist/esm/core/driver/drivers/immediate.js +1 -0
- package/dist/esm/core/driver/drivers/index.js +1 -0
- package/dist/esm/core/driver/drivers/raf.js +1 -0
- package/dist/esm/core/driver/drivers/timeout.js +1 -0
- package/dist/esm/core/driver/index.js +1 -0
- package/dist/esm/core/events/event-system.js +1 -0
- package/dist/esm/core/events/index.js +1 -0
- package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
- package/dist/esm/core/fixed-ticker/index.js +1 -0
- package/dist/esm/core/free-list/free-list.js +1 -0
- package/dist/esm/core/free-list/index.js +1 -0
- package/dist/esm/core/generate-id/generate-id.js +1 -0
- package/dist/esm/core/generate-id/index.js +1 -0
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/core/input/index.js +1 -0
- package/dist/esm/core/input/manager.js +1 -0
- package/dist/esm/core/input/sources/browser.js +1 -0
- package/dist/esm/core/input/sources/index.js +1 -0
- package/dist/esm/core/input/types.js +0 -0
- package/dist/esm/core/lerp/index.js +1 -0
- package/dist/esm/core/lerp/lerp.js +1 -0
- package/dist/esm/core/navmesh/index.js +1 -0
- package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
- package/dist/esm/core/navmesh/navmesh.js +1 -0
- package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
- package/dist/esm/core/pooled-codec/index.js +1 -0
- package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
- package/dist/esm/core/prediction/index.js +1 -0
- package/dist/esm/core/prediction/prediction.js +1 -0
- package/dist/esm/core/ray/index.js +1 -0
- package/dist/esm/core/ray/ray-2d.js +1 -0
- package/dist/esm/core/ray/ray-3d.js +1 -0
- package/dist/esm/core/simple-rng/index.js +1 -0
- package/dist/esm/core/simple-rng/simple-rng.js +1 -0
- package/dist/esm/core/sparse-batcher/index.js +1 -0
- package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
- package/dist/esm/ecs/component-store.js +1 -0
- package/dist/esm/ecs/component.js +1 -0
- package/dist/esm/ecs/entity-handle.js +1 -0
- package/dist/esm/ecs/index.js +1 -0
- package/dist/esm/ecs/system-builder.js +1 -0
- package/dist/esm/ecs/world-systems.js +1 -0
- package/dist/esm/ecs/world.js +1 -0
- package/dist/esm/game/index.js +1 -0
- package/dist/esm/game/loop/index.js +1 -0
- package/dist/esm/game/loop/loop.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/net/adapters/browser-websocket.js +1 -0
- package/dist/esm/net/adapters/bun-websocket.js +1 -0
- package/dist/esm/net/buffer-pool.js +1 -0
- package/dist/esm/net/client.js +1 -0
- package/dist/esm/net/index.js +1 -0
- package/dist/esm/net/server.js +1 -0
- package/dist/esm/net/types.js +1 -0
- package/dist/esm/net/validators.js +1 -0
- package/dist/esm/protocol/index.js +1 -0
- package/dist/esm/protocol/intent/define-intent.js +1 -0
- package/dist/esm/protocol/intent/index.js +1 -0
- package/dist/esm/protocol/intent/intent-registry.js +1 -0
- package/dist/esm/protocol/intent/intent.js +0 -0
- package/dist/esm/protocol/rpc/define-rpc.js +1 -0
- package/dist/esm/protocol/rpc/index.js +1 -0
- package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
- package/dist/esm/protocol/rpc/rpc.js +0 -0
- package/dist/esm/protocol/snapshot/index.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
- package/dist/esm/protocol/snapshot/snapshot.js +1 -0
- package/dist/esm/renderer/base/renderer-2d.js +1 -0
- package/dist/esm/renderer/base/renderer-3d.js +1 -0
- package/dist/esm/renderer/base/renderer.js +1 -0
- package/dist/esm/renderer/gltf/helpers.js +1 -0
- package/dist/esm/renderer/gltf/parser.js +1 -0
- package/dist/esm/renderer/gltf/skeletal-animation.js +1 -0
- package/dist/esm/renderer/gltf/skin-parser.js +1 -0
- package/dist/esm/renderer/index.js +1 -0
- package/dist/esm/renderer/math.js +1 -0
- package/dist/esm/renderer/prefab-bucket/concrete.js +1 -0
- package/dist/esm/renderer/prefab-bucket/index.js +1 -0
- package/dist/esm/renderer/prefab-bucket/parsers.js +1 -0
- package/dist/esm/renderer/prefab-bucket/specs.js +0 -0
- package/dist/esm/renderer/spritesheet/helpers.js +1 -0
- package/dist/esm/renderer/spritesheet/parser.js +1 -0
- package/dist/esm/renderer/types.js +0 -0
- package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
- package/dist/{core → types/core}/events/event-system.d.ts +14 -33
- package/dist/types/core/free-list/free-list.d.ts +31 -0
- package/dist/types/core/free-list/index.d.ts +1 -0
- package/dist/{core → types/core}/index.d.ts +5 -0
- package/dist/{core → types/core}/input/index.d.ts +1 -0
- package/dist/{core → types/core}/input/manager.d.ts +2 -0
- package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
- package/dist/types/core/ray/index.d.ts +2 -0
- package/dist/types/core/ray/ray-2d.d.ts +37 -0
- package/dist/types/core/ray/ray-3d.d.ts +42 -0
- package/dist/types/core/simple-rng/index.d.ts +1 -0
- package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
- package/dist/types/core/sparse-batcher/index.d.ts +1 -0
- package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
- package/dist/{ecs → types/ecs}/world.d.ts +11 -0
- package/dist/{game → types/game}/loop/loop.d.ts +33 -29
- package/dist/{index.d.ts → types/index.d.ts} +1 -0
- package/dist/{net → types/net}/index.d.ts +2 -2
- package/dist/types/renderer/base/renderer-2d.d.ts +13 -0
- package/dist/types/renderer/base/renderer-3d.d.ts +10 -0
- package/dist/types/renderer/base/renderer.d.ts +21 -0
- package/dist/types/renderer/gltf/helpers.d.ts +43 -0
- package/dist/types/renderer/gltf/parser.d.ts +49 -0
- package/dist/types/renderer/gltf/skeletal-animation.d.ts +96 -0
- package/dist/types/renderer/gltf/skin-parser.d.ts +107 -0
- package/dist/types/renderer/index.d.ts +15 -0
- package/dist/types/renderer/math.d.ts +37 -0
- package/dist/types/renderer/prefab-bucket/concrete.d.ts +55 -0
- package/dist/types/renderer/prefab-bucket/index.d.ts +113 -0
- package/dist/types/renderer/prefab-bucket/parsers.d.ts +8 -0
- package/dist/types/renderer/prefab-bucket/specs.d.ts +166 -0
- package/dist/types/renderer/spritesheet/helpers.d.ts +38 -0
- package/dist/types/renderer/spritesheet/parser.d.ts +21 -0
- package/dist/types/renderer/types.d.ts +89 -0
- package/dist/webgpu/cjs/index.js +5401 -0
- package/dist/webgpu/esm/index.js +5378 -0
- package/dist/webgpu/types/2d/animation.d.ts +97 -0
- package/dist/webgpu/types/2d/renderer.d.ts +86 -0
- package/dist/webgpu/types/2d/shader.d.ts +61 -0
- package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
- package/dist/webgpu/types/3d/clip-resync-coordinator.d.ts +20 -0
- package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
- package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
- package/dist/webgpu/types/3d/renderer.d.ts +266 -0
- package/dist/webgpu/types/3d/shader.d.ts +136 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +25 -0
- package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
- package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
- package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
- package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
- package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
- package/dist/webgpu/types/camera/index.d.ts +2 -0
- package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
- package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
- package/dist/webgpu/types/core/constants.d.ts +59 -0
- package/dist/webgpu/types/core/constants.test.d.ts +1 -0
- package/dist/webgpu/types/core/index.d.ts +2 -0
- package/dist/webgpu/types/core/types.d.ts +125 -0
- package/dist/webgpu/types/core/types.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
- package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
- package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
- package/dist/webgpu/types/geometry/index.d.ts +2 -0
- package/dist/webgpu/types/index.d.ts +35 -0
- package/dist/webgpu/types/particle/emitter.d.ts +36 -0
- package/dist/webgpu/types/shaders/index.d.ts +2 -0
- package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
- package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
- package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
- package/dist/webgpu/types/shaders/utils.d.ts +28 -0
- package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
- package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
- package/dist/webgpu/types/spritesheet/spritesheet.d.ts +28 -0
- package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
- package/package.json +96 -26
- package/dist/core/binary-codec/binary-codec.js +0 -354
- package/dist/core/binary-codec/index.js +0 -1
- package/dist/core/driver/driver.js +0 -47
- package/dist/core/driver/drivers/immediate.js +0 -61
- package/dist/core/driver/drivers/index.js +0 -3
- package/dist/core/driver/drivers/raf.js +0 -62
- package/dist/core/driver/drivers/timeout.js +0 -71
- package/dist/core/driver/index.js +0 -2
- package/dist/core/events/event-system.js +0 -88
- package/dist/core/events/index.js +0 -1
- package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
- package/dist/core/fixed-ticker/index.js +0 -1
- package/dist/core/generate-id/generate-id.js +0 -25
- package/dist/core/generate-id/index.js +0 -1
- package/dist/core/index.js +0 -10
- package/dist/core/input/index.js +0 -2
- package/dist/core/input/manager.js +0 -211
- package/dist/core/input/sources/browser.js +0 -29
- package/dist/core/input/sources/index.js +0 -1
- package/dist/core/lerp/index.js +0 -1
- package/dist/core/lerp/lerp.js +0 -42
- package/dist/core/navmesh/index.js +0 -1
- package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
- package/dist/core/navmesh/navmesh.js +0 -799
- package/dist/core/navmesh/navmesh.worker.js +0 -79
- package/dist/core/pooled-codec/index.js +0 -1
- package/dist/core/pooled-codec/pooled-codec.js +0 -410
- package/dist/core/prediction/index.js +0 -1
- package/dist/core/prediction/prediction.js +0 -99
- package/dist/core.esm.js +0 -1
- package/dist/core.js +0 -1
- package/dist/ecs/component-store.js +0 -175
- package/dist/ecs/component.js +0 -43
- package/dist/ecs/entity-handle.js +0 -515
- package/dist/ecs/example.js +0 -125
- package/dist/ecs/index.js +0 -4
- package/dist/ecs/system-builder.js +0 -249
- package/dist/ecs/world-systems.js +0 -79
- package/dist/ecs/world.js +0 -767
- package/dist/game/index.js +0 -1
- package/dist/game/loop/index.js +0 -1
- package/dist/game/loop/loop.js +0 -108
- package/dist/index.js +0 -26
- package/dist/net/adapters/browser-websocket.js +0 -74
- package/dist/net/adapters/bun-websocket.js +0 -245
- package/dist/net/buffer-pool.js +0 -89
- package/dist/net/client.js +0 -586
- package/dist/net/index.js +0 -58
- package/dist/net/server.js +0 -974
- package/dist/net/types.js +0 -31
- package/dist/net/validators.js +0 -88
- package/dist/protocol/index.js +0 -92
- package/dist/protocol/intent/define-intent.js +0 -125
- package/dist/protocol/intent/index.js +0 -91
- package/dist/protocol/intent/intent-registry.js +0 -91
- package/dist/protocol/rpc/define-rpc.js +0 -84
- package/dist/protocol/rpc/index.js +0 -3
- package/dist/protocol/rpc/rpc-registry.js +0 -159
- package/dist/protocol/rpc/rpc.js +0 -12
- package/dist/protocol/snapshot/index.js +0 -43
- package/dist/protocol/snapshot/snapshot-codec.js +0 -67
- package/dist/protocol/snapshot/snapshot-registry.js +0 -168
- package/dist/protocol/snapshot/snapshot.js +0 -30
- package/src/core/binary-codec/README.md +0 -60
- package/src/core/binary-codec/binary-codec.test.ts +0 -300
- package/src/core/binary-codec/binary-codec.ts +0 -448
- package/src/core/binary-codec/index.ts +0 -1
- package/src/core/driver/README.md +0 -97
- package/src/core/driver/driver.test.ts +0 -414
- package/src/core/driver/driver.ts +0 -71
- package/src/core/driver/drivers/immediate.ts +0 -66
- package/src/core/driver/drivers/index.ts +0 -3
- package/src/core/driver/drivers/raf.ts +0 -67
- package/src/core/driver/drivers/timeout.ts +0 -77
- package/src/core/driver/index.ts +0 -2
- package/src/core/events/README.md +0 -47
- package/src/core/events/event-system.test.ts +0 -243
- package/src/core/events/event-system.ts +0 -140
- package/src/core/events/index.ts +0 -1
- package/src/core/fixed-ticker/README.md +0 -77
- package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
- package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
- package/src/core/fixed-ticker/index.ts +0 -1
- package/src/core/generate-id/README.md +0 -18
- package/src/core/generate-id/generate-id.test.ts +0 -79
- package/src/core/generate-id/generate-id.ts +0 -37
- package/src/core/generate-id/index.ts +0 -1
- package/src/core/index.ts +0 -10
- package/src/core/input/README.md +0 -24
- package/src/core/input/index.ts +0 -2
- package/src/core/input/manager.ts +0 -259
- package/src/core/input/sources/browser.ts +0 -39
- package/src/core/input/sources/index.ts +0 -1
- package/src/core/input/types.ts +0 -40
- package/src/core/lerp/README.md +0 -79
- package/src/core/lerp/index.ts +0 -1
- package/src/core/lerp/lerp.test.ts +0 -90
- package/src/core/lerp/lerp.ts +0 -42
- package/src/core/navmesh/README.md +0 -164
- package/src/core/navmesh/index.ts +0 -1
- package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
- package/src/core/navmesh/navmesh-workers.test.ts +0 -356
- package/src/core/navmesh/navmesh.test.ts +0 -344
- package/src/core/navmesh/navmesh.ts +0 -1047
- package/src/core/navmesh/navmesh.worker.ts +0 -147
- package/src/core/pooled-codec/README.md +0 -70
- package/src/core/pooled-codec/index.ts +0 -1
- package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
- package/src/core/pooled-codec/pooled-codec.ts +0 -504
- package/src/core/prediction/README.md +0 -64
- package/src/core/prediction/index.ts +0 -1
- package/src/core/prediction/prediction.test.ts +0 -423
- package/src/core/prediction/prediction.ts +0 -112
- package/src/ecs/README.md +0 -427
- package/src/ecs/benchmark.test.ts +0 -1645
- package/src/ecs/component-store.ts +0 -198
- package/src/ecs/component.ts +0 -90
- package/src/ecs/entity-handle.test.ts +0 -393
- package/src/ecs/entity-handle.ts +0 -563
- package/src/ecs/example.ts +0 -152
- package/src/ecs/index.ts +0 -4
- package/src/ecs/system-builder.ts +0 -404
- package/src/ecs/world-systems.ts +0 -83
- package/src/ecs/world.test.ts +0 -310
- package/src/ecs/world.ts +0 -904
- package/src/game/index.ts +0 -1
- package/src/game/loop/README.md +0 -32
- package/src/game/loop/index.ts +0 -1
- package/src/game/loop/loop.ts +0 -236
- package/src/index.ts +0 -32
- package/src/net/README.md +0 -474
- package/src/net/adapters/browser-websocket.ts +0 -86
- package/src/net/adapters/bun-websocket.ts +0 -292
- package/src/net/buffer-pool.ts +0 -106
- package/src/net/client.test.ts +0 -807
- package/src/net/client.ts +0 -695
- package/src/net/index.ts +0 -60
- package/src/net/server.test.ts +0 -799
- package/src/net/server.ts +0 -1152
- package/src/net/types.ts +0 -228
- package/src/net/validators.ts +0 -104
- package/src/protocol/README.md +0 -469
- package/src/protocol/index.ts +0 -93
- package/src/protocol/intent/define-intent.test.ts +0 -397
- package/src/protocol/intent/define-intent.ts +0 -201
- package/src/protocol/intent/index.ts +0 -94
- package/src/protocol/intent/intent-registry.test.ts +0 -198
- package/src/protocol/intent/intent-registry.ts +0 -112
- package/src/protocol/intent/intent.ts +0 -12
- package/src/protocol/rpc/define-rpc.test.ts +0 -141
- package/src/protocol/rpc/define-rpc.ts +0 -113
- package/src/protocol/rpc/index.ts +0 -3
- package/src/protocol/rpc/rpc-registry.test.ts +0 -168
- package/src/protocol/rpc/rpc-registry.ts +0 -176
- package/src/protocol/rpc/rpc.ts +0 -37
- package/src/protocol/snapshot/index.ts +0 -45
- package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
- package/src/protocol/snapshot/snapshot-codec.ts +0 -87
- package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
- package/src/protocol/snapshot/snapshot-registry.ts +0 -201
- package/src/protocol/snapshot/snapshot.test.ts +0 -76
- package/src/protocol/snapshot/snapshot.ts +0 -41
- /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
- /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
- /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
- /package/dist/{core → types/core}/driver/index.d.ts +0 -0
- /package/dist/{core → types/core}/events/index.d.ts +0 -0
- /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
- /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
- /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
- /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
- /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
- /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
- /package/dist/{core → types/core}/input/types.d.ts +0 -0
- /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
- /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
- /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
- /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
- /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
- /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
- /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
- /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
- /package/dist/{game → types/game}/index.d.ts +0 -0
- /package/dist/{game → types/game}/loop/index.d.ts +0 -0
- /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
- /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
- /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
- /package/dist/{net → types/net}/client.d.ts +0 -0
- /package/dist/{net → types/net}/server.d.ts +0 -0
- /package/dist/{net → types/net}/types.d.ts +0 -0
- /package/dist/{net → types/net}/validators.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
- /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
- /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
- /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.test.d.ts} +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import * as d from 'typegpu/data';
|
|
2
|
+
export declare function createMeshLayout(maxInstances: number): import("typegpu").TgpuBindGroupLayout<{
|
|
3
|
+
uniforms: {
|
|
4
|
+
uniform: d.WgslStruct<{
|
|
5
|
+
viewProjection: d.Mat4x4f;
|
|
6
|
+
alpha: d.F32;
|
|
7
|
+
lightDirX: d.F32;
|
|
8
|
+
lightDirY: d.F32;
|
|
9
|
+
lightDirZ: d.F32;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
dynamicInstances: {
|
|
13
|
+
storage: d.WgslArray<d.WgslStruct<{
|
|
14
|
+
prevPosX: d.F32;
|
|
15
|
+
prevPosY: d.F32;
|
|
16
|
+
prevPosZ: d.F32;
|
|
17
|
+
currPosX: d.F32;
|
|
18
|
+
currPosY: d.F32;
|
|
19
|
+
currPosZ: d.F32;
|
|
20
|
+
prevRotX: d.F32;
|
|
21
|
+
prevRotY: d.F32;
|
|
22
|
+
prevRotZ: d.F32;
|
|
23
|
+
currRotX: d.F32;
|
|
24
|
+
currRotY: d.F32;
|
|
25
|
+
currRotZ: d.F32;
|
|
26
|
+
}>>;
|
|
27
|
+
};
|
|
28
|
+
staticInstances: {
|
|
29
|
+
storage: d.WgslArray<d.WgslStruct<{
|
|
30
|
+
scaleX: d.F32;
|
|
31
|
+
scaleY: d.F32;
|
|
32
|
+
scaleZ: d.F32;
|
|
33
|
+
colorR: d.F32;
|
|
34
|
+
colorG: d.F32;
|
|
35
|
+
colorB: d.F32;
|
|
36
|
+
}>>;
|
|
37
|
+
};
|
|
38
|
+
slotIndices: {
|
|
39
|
+
storage: d.WgslArray<d.U32>;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
export type MeshDataLayout = ReturnType<typeof createMeshLayout>;
|
|
43
|
+
export declare function createMeshVertex(meshLayout: MeshDataLayout): import("typegpu").TgpuVertexFn<{
|
|
44
|
+
position: d.Vec3f;
|
|
45
|
+
normal: d.Vec3f;
|
|
46
|
+
}, {
|
|
47
|
+
vNormal: d.Vec3f;
|
|
48
|
+
vColor: d.Vec3f;
|
|
49
|
+
}>;
|
|
50
|
+
export declare function createMeshFragment(meshLayout: MeshDataLayout): import("typegpu").TgpuFragmentFn<{
|
|
51
|
+
vNormal: d.Vec3f;
|
|
52
|
+
vColor: d.Vec3f;
|
|
53
|
+
}, d.Vec4f>;
|
|
54
|
+
export declare function createTextureBindGroupLayout(): import("typegpu").TgpuBindGroupLayout<{
|
|
55
|
+
modelTexture: import("typegpu").TgpuLayoutTexture<d.WgslTexture2d<d.F32>>;
|
|
56
|
+
modelSampler: {
|
|
57
|
+
sampler: "filtering";
|
|
58
|
+
};
|
|
59
|
+
}>;
|
|
60
|
+
export type TextureBindGroupLayout = ReturnType<typeof createTextureBindGroupLayout>;
|
|
61
|
+
export declare function createTexturedMeshVertex(meshLayout: MeshDataLayout): import("typegpu").TgpuVertexFn<{
|
|
62
|
+
position: d.Vec3f;
|
|
63
|
+
normal: d.Vec3f;
|
|
64
|
+
uv: d.Vec2f;
|
|
65
|
+
}, {
|
|
66
|
+
vNormal: d.Vec3f;
|
|
67
|
+
vColor: d.Vec3f;
|
|
68
|
+
vUV: d.Vec2f;
|
|
69
|
+
}>;
|
|
70
|
+
export declare function createTexturedMeshFragment(meshLayout: MeshDataLayout, texLayout: TextureBindGroupLayout): import("typegpu").TgpuFragmentFn<{
|
|
71
|
+
vNormal: d.Vec3f;
|
|
72
|
+
vColor: d.Vec3f;
|
|
73
|
+
vUV: d.Vec2f;
|
|
74
|
+
}, d.Vec4f>;
|
|
75
|
+
export declare function createSkinnedMeshLayout(maxInstances: number, maxBones: number): import("typegpu").TgpuBindGroupLayout<{
|
|
76
|
+
uniforms: {
|
|
77
|
+
uniform: d.WgslStruct<{
|
|
78
|
+
viewProjection: d.Mat4x4f;
|
|
79
|
+
alpha: d.F32;
|
|
80
|
+
lightDirX: d.F32;
|
|
81
|
+
lightDirY: d.F32;
|
|
82
|
+
lightDirZ: d.F32;
|
|
83
|
+
}>;
|
|
84
|
+
};
|
|
85
|
+
dynamicInstances: {
|
|
86
|
+
storage: d.WgslArray<d.WgslStruct<{
|
|
87
|
+
prevPosX: d.F32;
|
|
88
|
+
prevPosY: d.F32;
|
|
89
|
+
prevPosZ: d.F32;
|
|
90
|
+
currPosX: d.F32;
|
|
91
|
+
currPosY: d.F32;
|
|
92
|
+
currPosZ: d.F32;
|
|
93
|
+
prevRotX: d.F32;
|
|
94
|
+
prevRotY: d.F32;
|
|
95
|
+
prevRotZ: d.F32;
|
|
96
|
+
currRotX: d.F32;
|
|
97
|
+
currRotY: d.F32;
|
|
98
|
+
currRotZ: d.F32;
|
|
99
|
+
}>>;
|
|
100
|
+
};
|
|
101
|
+
staticInstances: {
|
|
102
|
+
storage: d.WgslArray<d.WgslStruct<{
|
|
103
|
+
scaleX: d.F32;
|
|
104
|
+
scaleY: d.F32;
|
|
105
|
+
scaleZ: d.F32;
|
|
106
|
+
colorR: d.F32;
|
|
107
|
+
colorG: d.F32;
|
|
108
|
+
colorB: d.F32;
|
|
109
|
+
boneOffset: d.U32;
|
|
110
|
+
}>>;
|
|
111
|
+
};
|
|
112
|
+
slotIndices: {
|
|
113
|
+
storage: d.WgslArray<d.U32>;
|
|
114
|
+
};
|
|
115
|
+
boneMatrices: {
|
|
116
|
+
storage: d.WgslArray<d.Mat4x4f>;
|
|
117
|
+
};
|
|
118
|
+
}>;
|
|
119
|
+
export type SkinnedMeshDataLayout = ReturnType<typeof createSkinnedMeshLayout>;
|
|
120
|
+
export declare function createSkinnedMeshVertex(layout: SkinnedMeshDataLayout): import("typegpu").TgpuVertexFn<{
|
|
121
|
+
position: d.Vec3f;
|
|
122
|
+
normal: d.Vec3f;
|
|
123
|
+
uv: d.Vec2f;
|
|
124
|
+
joints: d.Vec4u;
|
|
125
|
+
weights: d.Vec4f;
|
|
126
|
+
}, {
|
|
127
|
+
vNormal: d.Vec3f;
|
|
128
|
+
vColor: d.Vec3f;
|
|
129
|
+
vUV: d.Vec2f;
|
|
130
|
+
}>;
|
|
131
|
+
/**
|
|
132
|
+
* Fragment shader for skinned meshes — reuses the textured fragment shader.
|
|
133
|
+
* For untextured skinned meshes, reuse createMeshFragment.
|
|
134
|
+
*/
|
|
135
|
+
export { createMeshFragment as createSkinnedMeshFragment };
|
|
136
|
+
export { createTexturedMeshFragment as createSkinnedTexturedMeshFragment };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ComputeKernel } from '../../compute/compute-builder';
|
|
2
|
+
import type { TgpuRoot } from 'typegpu';
|
|
3
|
+
import { type PackedBuffers } from './packer';
|
|
4
|
+
import type { PackedAnimationData } from 'murow/renderer';
|
|
5
|
+
/**
|
|
6
|
+
* Capacity headroom for each storage buffer. Over-allocating is harmless —
|
|
7
|
+
* the kernel only ever reads as far as the uploaded data describes — and
|
|
8
|
+
* lets resyncs upload via `writeBuffer` instead of rebuilding the kernel.
|
|
9
|
+
*/
|
|
10
|
+
export interface AnimationKernelBudgets {
|
|
11
|
+
skelI32Capacity: number;
|
|
12
|
+
animF32Capacity: number;
|
|
13
|
+
matricesCapacity: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function buildAnimationKernel(root: TgpuRoot, packed: PackedAnimationData, maxInstances: number, maxTotalBones: number, budgets: AnimationKernelBudgets): {
|
|
16
|
+
kernel: ComputeKernel;
|
|
17
|
+
packedBuffers: PackedBuffers;
|
|
18
|
+
budgets: AnimationKernelBudgets;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Re-upload packed animation data into an already-built kernel. Uses
|
|
22
|
+
* `device.queue.writeBuffer` directly against the typed arrays — TypeGPU's
|
|
23
|
+
* per-element write path is dramatically slower for big buffers.
|
|
24
|
+
*/
|
|
25
|
+
export declare function uploadPackedToKernel(root: TgpuRoot, kernel: ComputeKernel, pb: PackedBuffers): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packs animation data into flat typed arrays for GPU consumption.
|
|
3
|
+
* Separated from the kernel so packing logic can be tested independently.
|
|
4
|
+
*/
|
|
5
|
+
import type { PackedAnimationData } from 'murow/renderer';
|
|
6
|
+
export interface PackedBuffers {
|
|
7
|
+
skelI32: Int32Array;
|
|
8
|
+
animF32: Float32Array;
|
|
9
|
+
matFloats: Float32Array;
|
|
10
|
+
clipTableOffset: number;
|
|
11
|
+
channelTableOffset: number;
|
|
12
|
+
jointLookupOffset: number;
|
|
13
|
+
totalMats: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Layout of skelI32 (flat i32 array):
|
|
17
|
+
* [0..S*10) skin entries (10 i32 each)
|
|
18
|
+
* [skinEnd..) parent indices
|
|
19
|
+
* [parentEnd..) topo order
|
|
20
|
+
* [topoEnd..) clip entries (4 i32 each)
|
|
21
|
+
* [clipEnd..) channel entries (4 i32 each)
|
|
22
|
+
* [channelEnd..) per-joint channel lookup (2 i32 per joint per clip)
|
|
23
|
+
*
|
|
24
|
+
* Layout of animF32 (flat f32 array):
|
|
25
|
+
* [0..K) keyframe data
|
|
26
|
+
* [K..) rest pose TRS (10 floats per joint)
|
|
27
|
+
*
|
|
28
|
+
* Layout of matFloats (flat f32, read as mat4x4f):
|
|
29
|
+
* [0..IBM) inverse bind matrices
|
|
30
|
+
* [IBM..) skeleton root matrices
|
|
31
|
+
*/
|
|
32
|
+
export declare function packAnimationData(packed: PackedAnimationData): PackedBuffers;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Camera2DState } from 'murow/renderer';
|
|
2
|
+
export declare class Camera2D implements Camera2DState {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
zoom: number;
|
|
6
|
+
rotation: number;
|
|
7
|
+
private _prevX;
|
|
8
|
+
private _prevY;
|
|
9
|
+
private _prevZoom;
|
|
10
|
+
private _prevRotation;
|
|
11
|
+
private _renderX;
|
|
12
|
+
private _renderY;
|
|
13
|
+
private _renderZoom;
|
|
14
|
+
private _renderRotation;
|
|
15
|
+
private _width;
|
|
16
|
+
private _height;
|
|
17
|
+
/** Column-major 3x3 matrix stored as 12 floats (std140 padded) */
|
|
18
|
+
private _matrix;
|
|
19
|
+
constructor(width: number, height: number);
|
|
20
|
+
get width(): number;
|
|
21
|
+
get height(): number;
|
|
22
|
+
setViewport(width: number, height: number): void;
|
|
23
|
+
setPosition(x: number, y: number): void;
|
|
24
|
+
move(x: number, y: number): void;
|
|
25
|
+
private _worldPoint;
|
|
26
|
+
/**
|
|
27
|
+
* Unproject a screen coordinate to a world-space position.
|
|
28
|
+
* Uses current (non-interpolated) camera state.
|
|
29
|
+
* Returns a pre-allocated tuple — copy if you need to store it.
|
|
30
|
+
*/
|
|
31
|
+
screenToWorld(screenX: number, screenY: number): [number, number];
|
|
32
|
+
/**
|
|
33
|
+
* Smoothly move the camera toward a target position.
|
|
34
|
+
* Call each tick. The camera lerps toward (targetX, targetY) by the given factor.
|
|
35
|
+
* @param targetX World X to follow
|
|
36
|
+
* @param targetY World Y to follow
|
|
37
|
+
* @param smoothing 0-1. 1 = snap instantly, 0.1 = lazy follow. Default 1.
|
|
38
|
+
*/
|
|
39
|
+
follow(targetX: number, targetY: number, smoothing?: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* Store current state as previous. Call before each tick.
|
|
42
|
+
*/
|
|
43
|
+
storePrevious(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Interpolate between previous and current state. Call before rendering.
|
|
46
|
+
*/
|
|
47
|
+
interpolate(alpha: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Build the view-projection matrix using interpolated state.
|
|
50
|
+
* Orthographic: maps world coords to clip space [-1,1].
|
|
51
|
+
*/
|
|
52
|
+
getMatrix(): Float32Array;
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Ray3D } from "murow/core/ray";
|
|
2
|
+
import type { Camera3DState } from 'murow/renderer';
|
|
3
|
+
export declare class Camera3D implements Camera3DState {
|
|
4
|
+
position: [number, number, number];
|
|
5
|
+
target: [number, number, number];
|
|
6
|
+
up: [number, number, number];
|
|
7
|
+
fov: number;
|
|
8
|
+
near: number;
|
|
9
|
+
far: number;
|
|
10
|
+
aspect: number;
|
|
11
|
+
movement: 'local' | 'grounded' | 'global';
|
|
12
|
+
private _prevPosition;
|
|
13
|
+
private _prevTarget;
|
|
14
|
+
private _renderPosition;
|
|
15
|
+
private _renderTarget;
|
|
16
|
+
private _viewMatrix;
|
|
17
|
+
private _projMatrix;
|
|
18
|
+
private _vpMatrix;
|
|
19
|
+
private _ray;
|
|
20
|
+
private _width;
|
|
21
|
+
private _height;
|
|
22
|
+
/**
|
|
23
|
+
* Store current position/target as previous. Call before each tick.
|
|
24
|
+
*/
|
|
25
|
+
storePrevious(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Smoothly move the camera toward a target point.
|
|
28
|
+
* Call each tick. The camera and its look-at target lerp toward the given position.
|
|
29
|
+
* @param targetX World X to follow
|
|
30
|
+
* @param targetY World Y to follow
|
|
31
|
+
* @param targetZ World Z to follow
|
|
32
|
+
* @param smoothing 0-1. 1 = snap instantly, 0.1 = lazy follow. Default 1.
|
|
33
|
+
*/
|
|
34
|
+
follow(targetX: number, targetY: number, targetZ: number, smoothing?: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* Interpolate between previous and current state. Call before rendering.
|
|
37
|
+
*/
|
|
38
|
+
interpolate(alpha: number): void;
|
|
39
|
+
/**
|
|
40
|
+
* Build the view matrix (lookAt) using interpolated state.
|
|
41
|
+
*/
|
|
42
|
+
getViewMatrix(): Float32Array;
|
|
43
|
+
/**
|
|
44
|
+
* Build the perspective projection matrix.
|
|
45
|
+
*/
|
|
46
|
+
getProjectionMatrix(): Float32Array;
|
|
47
|
+
/**
|
|
48
|
+
* Build the combined view-projection matrix.
|
|
49
|
+
*/
|
|
50
|
+
getViewProjectionMatrix(): Float32Array;
|
|
51
|
+
setAspect(width: number, height: number): void;
|
|
52
|
+
setPosition(x: number, y: number, z: number): void;
|
|
53
|
+
/**
|
|
54
|
+
* Unproject a screen coordinate into a world-space ray.
|
|
55
|
+
* Requires `setAspect(width, height)` to have been called first.
|
|
56
|
+
* Returns a pre-allocated Ray3D — copy origin/direction if you need to store it.
|
|
57
|
+
*/
|
|
58
|
+
screenToRay(screenX: number, screenY: number): Ray3D;
|
|
59
|
+
setTarget(x: number, y: number, z: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Move the camera. Behaviour is determined by the `movement` property:
|
|
62
|
+
* - `'local'` — along camera axes, pitch included (free-fly / spectator)
|
|
63
|
+
* - `'grounded'` — yaw-projected XZ + world Y (FPS)
|
|
64
|
+
* - `'global'` — world axes directly (isometric / platformer)
|
|
65
|
+
*/
|
|
66
|
+
move(right: number, up: number, forward: number): void;
|
|
67
|
+
private _moveLocal;
|
|
68
|
+
private _moveGrounded;
|
|
69
|
+
private _moveGlobal;
|
|
70
|
+
/**
|
|
71
|
+
* Orbit around the target point. Zero allocations.
|
|
72
|
+
* @param yawDelta Horizontal rotation in radians (positive = rotate right)
|
|
73
|
+
* @param pitchDelta Vertical rotation in radians (positive = rotate up)
|
|
74
|
+
*/
|
|
75
|
+
orbit(yawDelta: number, pitchDelta: number): void;
|
|
76
|
+
/**
|
|
77
|
+
* Zoom by adjusting distance to target. Zero allocations.
|
|
78
|
+
* @param delta Positive = zoom in, negative = zoom out
|
|
79
|
+
*/
|
|
80
|
+
zoom(delta: number): void;
|
|
81
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { TgpuRoot, TgpuBuffer, TgpuBindGroup, TgpuComputePipeline } from 'typegpu';
|
|
2
|
+
import type { AnyWgslData, AnyData } from 'typegpu/data';
|
|
3
|
+
/** Buffer definition for a compute shader. */
|
|
4
|
+
export interface ComputeBufferDef<TStorage extends AnyWgslData = AnyWgslData, TUniform extends AnyData = AnyData> {
|
|
5
|
+
/** Storage buffer (read-only or read-write). Provide an arrayOf(...) schema. */
|
|
6
|
+
storage?: TStorage;
|
|
7
|
+
/** Uniform buffer. Provide a struct schema. */
|
|
8
|
+
uniform?: TUniform;
|
|
9
|
+
/** If true, storage buffer is read-write (`storage, read_write`). Default: false (read-only). */
|
|
10
|
+
readwrite?: boolean;
|
|
11
|
+
/** External TgpuBuffer to use instead of creating a new one. For buffer sharing between kernels. */
|
|
12
|
+
external?: TgpuBuffer<AnyWgslData>;
|
|
13
|
+
}
|
|
14
|
+
/** Extract the data type from a buffer definition. */
|
|
15
|
+
type BufferDataType<T extends ComputeBufferDef> = T extends {
|
|
16
|
+
storage: infer S;
|
|
17
|
+
} ? S : T extends {
|
|
18
|
+
uniform: infer U;
|
|
19
|
+
} ? U : unknown;
|
|
20
|
+
export interface ComputeOptions {
|
|
21
|
+
/** Number of invocations per workgroup. Default: 64. */
|
|
22
|
+
workgroupSize: number | [number, number] | [number, number, number];
|
|
23
|
+
}
|
|
24
|
+
/** Compute shader input builtins. */
|
|
25
|
+
export interface ComputeInput {
|
|
26
|
+
/** Global invocation ID (x, y, z). */
|
|
27
|
+
globalId: {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
z: number;
|
|
31
|
+
};
|
|
32
|
+
/** Local invocation ID within workgroup. */
|
|
33
|
+
localId: {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
z: number;
|
|
37
|
+
};
|
|
38
|
+
/** Local invocation index (flattened). */
|
|
39
|
+
localIndex: number;
|
|
40
|
+
/** Workgroup ID. */
|
|
41
|
+
workgroupId: {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
z: number;
|
|
45
|
+
};
|
|
46
|
+
/** Number of workgroups dispatched. */
|
|
47
|
+
numWorkgroups: {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
z: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Buffer accessors passed to the compute shader as the first parameter.
|
|
55
|
+
* Buffer names and data types are inferred from `.buffers()`.
|
|
56
|
+
*/
|
|
57
|
+
export type ComputeBufferAccessors<TBuffers extends Record<string, ComputeBufferDef>> = {
|
|
58
|
+
readonly [K in keyof TBuffers]: BufferDataType<TBuffers[K]>;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Compute shader function signature.
|
|
62
|
+
* First param: buffer accessors (typed from `.buffers()`).
|
|
63
|
+
* Second param: compute builtins (globalId, localId, etc.).
|
|
64
|
+
*/
|
|
65
|
+
type ComputeShaderFn<TBuffers extends Record<string, ComputeBufferDef>> = (buffers: ComputeBufferAccessors<TBuffers>, input: ComputeInput) => void;
|
|
66
|
+
export declare class ComputeKernel<TBuffers extends Record<string, ComputeBufferDef> = Record<string, ComputeBufferDef>> {
|
|
67
|
+
readonly name: string;
|
|
68
|
+
private root;
|
|
69
|
+
private pipeline;
|
|
70
|
+
private bindGroup;
|
|
71
|
+
private buffers;
|
|
72
|
+
private workgroupSize;
|
|
73
|
+
constructor(name: string, root: TgpuRoot, pipeline: TgpuComputePipeline, bindGroup: TgpuBindGroup, buffers: Map<string, TgpuBuffer<AnyWgslData>>, workgroupSize: [number, number, number]);
|
|
74
|
+
/**
|
|
75
|
+
* Write data to a uniform or storage buffer by name.
|
|
76
|
+
*/
|
|
77
|
+
write<K extends keyof TBuffers & string>(bufferName: K, data: unknown): void;
|
|
78
|
+
/**
|
|
79
|
+
* Dispatch the compute shader (creates its own command encoder).
|
|
80
|
+
* @param countOrGroups Total invocation count (divided by workgroupSize automatically),
|
|
81
|
+
* or explicit [x, y, z] workgroup counts.
|
|
82
|
+
*/
|
|
83
|
+
dispatch(countOrGroups: number | [number, number?, number?]): void;
|
|
84
|
+
/**
|
|
85
|
+
* Encode a compute dispatch into an existing command encoder.
|
|
86
|
+
* Use this to chain multiple compute passes without separate submissions.
|
|
87
|
+
* The compute pass is started and ended within this call.
|
|
88
|
+
*/
|
|
89
|
+
encode(encoder: GPUCommandEncoder, countOrGroups: number | [number, number?, number?]): void;
|
|
90
|
+
private _resolveGroups;
|
|
91
|
+
/**
|
|
92
|
+
* Read data back from a storage buffer.
|
|
93
|
+
* Warning: this forces a GPU → CPU sync stall. Avoid in hot paths.
|
|
94
|
+
*/
|
|
95
|
+
read(bufferName: keyof TBuffers & string): Promise<unknown>;
|
|
96
|
+
/**
|
|
97
|
+
* Get the raw TypeGPU buffer for a named buffer.
|
|
98
|
+
* Use this to share buffers between compute and render pipelines (zero-copy).
|
|
99
|
+
*/
|
|
100
|
+
getBuffer(bufferName: keyof TBuffers & string): TgpuBuffer<AnyWgslData>;
|
|
101
|
+
destroy(): void;
|
|
102
|
+
}
|
|
103
|
+
export declare class ComputeBuilder<TBuffers extends Record<string, ComputeBufferDef> = Record<string, never>> {
|
|
104
|
+
private _name;
|
|
105
|
+
private _root;
|
|
106
|
+
private _workgroupSize;
|
|
107
|
+
private _bufferDefs;
|
|
108
|
+
private _shaderFn;
|
|
109
|
+
constructor(name: string, options: ComputeOptions, root: TgpuRoot);
|
|
110
|
+
/**
|
|
111
|
+
* Define the compute shader's buffers.
|
|
112
|
+
* Each entry maps a name to a storage or uniform buffer definition.
|
|
113
|
+
*/
|
|
114
|
+
buffers<B extends Record<string, ComputeBufferDef>>(defs: B): ComputeBuilder<B>;
|
|
115
|
+
/**
|
|
116
|
+
* Define the compute shader body.
|
|
117
|
+
* Receives a context with buffer accessors and compute builtins.
|
|
118
|
+
* No `'use gpu'` needed — the builder handles transpilation.
|
|
119
|
+
*/
|
|
120
|
+
shader(fn: ComputeShaderFn<TBuffers>): this;
|
|
121
|
+
build(): ComputeKernel<TBuffers>;
|
|
122
|
+
}
|
|
123
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory layout constants for the 2D renderer.
|
|
3
|
+
*
|
|
4
|
+
* Dynamic data: updated every tick (positions, rotation).
|
|
5
|
+
* Static data: rarely changes (UVs, tint, opacity, scale).
|
|
6
|
+
*
|
|
7
|
+
* Laid out as flat Float32Arrays for zero-GC GPU uploads.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DYNAMIC_OFFSET_PREV_X = 0;
|
|
10
|
+
export declare const DYNAMIC_OFFSET_PREV_Y = 1;
|
|
11
|
+
export declare const DYNAMIC_OFFSET_CURR_X = 2;
|
|
12
|
+
export declare const DYNAMIC_OFFSET_CURR_Y = 3;
|
|
13
|
+
export declare const DYNAMIC_OFFSET_PREV_ROTATION = 4;
|
|
14
|
+
export declare const DYNAMIC_OFFSET_CURR_ROTATION = 5;
|
|
15
|
+
export declare const DYNAMIC_FLOATS_PER_SPRITE = 6;
|
|
16
|
+
export declare const STATIC_OFFSET_SCALE_X = 0;
|
|
17
|
+
export declare const STATIC_OFFSET_SCALE_Y = 1;
|
|
18
|
+
export declare const STATIC_OFFSET_UV_MIN_X = 2;
|
|
19
|
+
export declare const STATIC_OFFSET_UV_MIN_Y = 3;
|
|
20
|
+
export declare const STATIC_OFFSET_UV_MAX_X = 4;
|
|
21
|
+
export declare const STATIC_OFFSET_UV_MAX_Y = 5;
|
|
22
|
+
export declare const STATIC_OFFSET_LAYER = 6;
|
|
23
|
+
export declare const STATIC_OFFSET_FLIP_X = 7;
|
|
24
|
+
export declare const STATIC_OFFSET_FLIP_Y = 8;
|
|
25
|
+
export declare const STATIC_OFFSET_OPACITY = 9;
|
|
26
|
+
export declare const STATIC_OFFSET_TINT_R = 10;
|
|
27
|
+
export declare const STATIC_OFFSET_TINT_G = 11;
|
|
28
|
+
export declare const STATIC_OFFSET_TINT_B = 12;
|
|
29
|
+
export declare const STATIC_OFFSET_TINT_A = 13;
|
|
30
|
+
export declare const STATIC_FLOATS_PER_SPRITE = 14;
|
|
31
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_POS_X = 0;
|
|
32
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_POS_Y = 1;
|
|
33
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_POS_Z = 2;
|
|
34
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_POS_X = 3;
|
|
35
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_POS_Y = 4;
|
|
36
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_POS_Z = 5;
|
|
37
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_ROT_X = 6;
|
|
38
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_ROT_Y = 7;
|
|
39
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_ROT_Z = 8;
|
|
40
|
+
export declare const DYNAMIC_3D_OFFSET_PREV_ROT_W = 9;
|
|
41
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_ROT_X = 10;
|
|
42
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_ROT_Y = 11;
|
|
43
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_ROT_Z = 12;
|
|
44
|
+
export declare const DYNAMIC_3D_OFFSET_CURR_ROT_W = 13;
|
|
45
|
+
export declare const DYNAMIC_3D_FLOATS_PER_INSTANCE = 14;
|
|
46
|
+
export declare const STATIC_3D_OFFSET_SCALE_X = 0;
|
|
47
|
+
export declare const STATIC_3D_OFFSET_SCALE_Y = 1;
|
|
48
|
+
export declare const STATIC_3D_OFFSET_SCALE_Z = 2;
|
|
49
|
+
export declare const STATIC_3D_OFFSET_MATERIAL_ID = 3;
|
|
50
|
+
export declare const STATIC_3D_OFFSET_OPACITY = 4;
|
|
51
|
+
export declare const STATIC_3D_OFFSET_TINT_R = 5;
|
|
52
|
+
export declare const STATIC_3D_OFFSET_TINT_G = 6;
|
|
53
|
+
export declare const STATIC_3D_OFFSET_TINT_B = 7;
|
|
54
|
+
export declare const STATIC_3D_OFFSET_TINT_A = 8;
|
|
55
|
+
export declare const STATIC_3D_OFFSET_CUSTOM_0 = 9;
|
|
56
|
+
export declare const STATIC_3D_OFFSET_CUSTOM_1 = 10;
|
|
57
|
+
export declare const STATIC_3D_FLOATS_PER_INSTANCE = 11;
|
|
58
|
+
export declare const INVALID_INDEX = 4294967295;
|
|
59
|
+
export declare const INVALID_ENTITY = 4294967295;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeGPU struct definitions for the 2D and 3D renderers.
|
|
3
|
+
* These define the GPU-side data layout — used by shaders and bind group layouts.
|
|
4
|
+
*
|
|
5
|
+
* All fields are f32 to guarantee contiguous layout matching our flat Float32Arrays.
|
|
6
|
+
* No vec2f/vec4f here — that would introduce alignment padding.
|
|
7
|
+
*/
|
|
8
|
+
import * as d from 'typegpu/data';
|
|
9
|
+
export declare const DynamicSprite: d.WgslStruct<{
|
|
10
|
+
prevX: d.F32;
|
|
11
|
+
prevY: d.F32;
|
|
12
|
+
currX: d.F32;
|
|
13
|
+
currY: d.F32;
|
|
14
|
+
prevRotation: d.F32;
|
|
15
|
+
currRotation: d.F32;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const StaticSprite: d.WgslStruct<{
|
|
18
|
+
scaleX: d.F32;
|
|
19
|
+
scaleY: d.F32;
|
|
20
|
+
uvMinX: d.F32;
|
|
21
|
+
uvMinY: d.F32;
|
|
22
|
+
uvMaxX: d.F32;
|
|
23
|
+
uvMaxY: d.F32;
|
|
24
|
+
layer: d.F32;
|
|
25
|
+
flipX: d.F32;
|
|
26
|
+
flipY: d.F32;
|
|
27
|
+
opacity: d.F32;
|
|
28
|
+
tintR: d.F32;
|
|
29
|
+
tintG: d.F32;
|
|
30
|
+
tintB: d.F32;
|
|
31
|
+
tintA: d.F32;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const SpriteUniforms: d.WgslStruct<{
|
|
34
|
+
viewProjection: d.Mat3x3f;
|
|
35
|
+
alpha: d.F32;
|
|
36
|
+
resolution: d.Vec2f;
|
|
37
|
+
}>;
|
|
38
|
+
export declare const DynamicInstance3D: d.WgslStruct<{
|
|
39
|
+
prevPosX: d.F32;
|
|
40
|
+
prevPosY: d.F32;
|
|
41
|
+
prevPosZ: d.F32;
|
|
42
|
+
currPosX: d.F32;
|
|
43
|
+
currPosY: d.F32;
|
|
44
|
+
currPosZ: d.F32;
|
|
45
|
+
prevRotX: d.F32;
|
|
46
|
+
prevRotY: d.F32;
|
|
47
|
+
prevRotZ: d.F32;
|
|
48
|
+
prevRotW: d.F32;
|
|
49
|
+
currRotX: d.F32;
|
|
50
|
+
currRotY: d.F32;
|
|
51
|
+
currRotZ: d.F32;
|
|
52
|
+
currRotW: d.F32;
|
|
53
|
+
}>;
|
|
54
|
+
export declare const StaticInstance3D: d.WgslStruct<{
|
|
55
|
+
scaleX: d.F32;
|
|
56
|
+
scaleY: d.F32;
|
|
57
|
+
scaleZ: d.F32;
|
|
58
|
+
materialId: d.F32;
|
|
59
|
+
opacity: d.F32;
|
|
60
|
+
tintR: d.F32;
|
|
61
|
+
tintG: d.F32;
|
|
62
|
+
tintB: d.F32;
|
|
63
|
+
tintA: d.F32;
|
|
64
|
+
custom0: d.F32;
|
|
65
|
+
custom1: d.F32;
|
|
66
|
+
}>;
|
|
67
|
+
export declare const DynamicMesh: d.WgslStruct<{
|
|
68
|
+
prevPosX: d.F32;
|
|
69
|
+
prevPosY: d.F32;
|
|
70
|
+
prevPosZ: d.F32;
|
|
71
|
+
currPosX: d.F32;
|
|
72
|
+
currPosY: d.F32;
|
|
73
|
+
currPosZ: d.F32;
|
|
74
|
+
prevRotX: d.F32;
|
|
75
|
+
prevRotY: d.F32;
|
|
76
|
+
prevRotZ: d.F32;
|
|
77
|
+
currRotX: d.F32;
|
|
78
|
+
currRotY: d.F32;
|
|
79
|
+
currRotZ: d.F32;
|
|
80
|
+
}>;
|
|
81
|
+
export declare const DYNAMIC_MESH_FLOATS = 12;
|
|
82
|
+
export declare const StaticMesh: d.WgslStruct<{
|
|
83
|
+
scaleX: d.F32;
|
|
84
|
+
scaleY: d.F32;
|
|
85
|
+
scaleZ: d.F32;
|
|
86
|
+
colorR: d.F32;
|
|
87
|
+
colorG: d.F32;
|
|
88
|
+
colorB: d.F32;
|
|
89
|
+
}>;
|
|
90
|
+
export declare const STATIC_MESH_FLOATS = 6;
|
|
91
|
+
export declare const SkinnedStaticMesh: d.WgslStruct<{
|
|
92
|
+
scaleX: d.F32;
|
|
93
|
+
scaleY: d.F32;
|
|
94
|
+
scaleZ: d.F32;
|
|
95
|
+
colorR: d.F32;
|
|
96
|
+
colorG: d.F32;
|
|
97
|
+
colorB: d.F32;
|
|
98
|
+
boneOffset: d.U32;
|
|
99
|
+
}>;
|
|
100
|
+
export declare const SKINNED_STATIC_MESH_FLOATS = 7;
|
|
101
|
+
export declare const MeshUniforms: d.WgslStruct<{
|
|
102
|
+
viewProjection: d.Mat4x4f;
|
|
103
|
+
alpha: d.F32;
|
|
104
|
+
lightDirX: d.F32;
|
|
105
|
+
lightDirY: d.F32;
|
|
106
|
+
lightDirZ: d.F32;
|
|
107
|
+
}>;
|
|
108
|
+
/** Per-instance animation state, uploaded from CPU each frame. */
|
|
109
|
+
export declare const InstanceAnimStateGPU: d.WgslStruct<{
|
|
110
|
+
clipId: d.I32;
|
|
111
|
+
time: d.F32;
|
|
112
|
+
skinIndex: d.U32;
|
|
113
|
+
boneOffset: d.U32;
|
|
114
|
+
prevClipId: d.I32;
|
|
115
|
+
prevTime: d.F32;
|
|
116
|
+
blendWeight: d.F32;
|
|
117
|
+
_pad: d.F32;
|
|
118
|
+
}>;
|
|
119
|
+
/** Uniforms for the animation compute shader. */
|
|
120
|
+
export declare const AnimComputeUniforms: d.WgslStruct<{
|
|
121
|
+
instanceCount: d.U32;
|
|
122
|
+
clipTableOffset: d.U32;
|
|
123
|
+
channelTableOffset: d.U32;
|
|
124
|
+
jointLookupOffset: d.U32;
|
|
125
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|