murow 0.0.60 → 0.0.71

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.
Files changed (425) hide show
  1. package/README.md +52 -37
  2. package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
  3. package/dist/cjs/core/binary-codec/index.js +1 -0
  4. package/dist/cjs/core/driver/driver.js +1 -0
  5. package/dist/cjs/core/driver/drivers/immediate.js +1 -0
  6. package/dist/cjs/core/driver/drivers/index.js +1 -0
  7. package/dist/cjs/core/driver/drivers/raf.js +1 -0
  8. package/dist/cjs/core/driver/drivers/timeout.js +1 -0
  9. package/dist/cjs/core/driver/index.js +1 -0
  10. package/dist/cjs/core/events/event-system.js +1 -0
  11. package/dist/cjs/core/events/index.js +1 -0
  12. package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
  13. package/dist/cjs/core/fixed-ticker/index.js +1 -0
  14. package/dist/cjs/core/free-list/free-list.js +1 -0
  15. package/dist/cjs/core/free-list/index.js +1 -0
  16. package/dist/cjs/core/generate-id/generate-id.js +1 -0
  17. package/dist/cjs/core/generate-id/index.js +1 -0
  18. package/dist/cjs/core/index.js +1 -0
  19. package/dist/cjs/core/input/index.js +1 -0
  20. package/dist/cjs/core/input/manager.js +1 -0
  21. package/dist/cjs/core/input/sources/browser.js +1 -0
  22. package/dist/cjs/core/input/sources/index.js +1 -0
  23. package/dist/cjs/core/input/types.js +1 -0
  24. package/dist/cjs/core/lerp/index.js +1 -0
  25. package/dist/cjs/core/lerp/lerp.js +1 -0
  26. package/dist/cjs/core/navmesh/index.js +1 -0
  27. package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
  28. package/dist/cjs/core/navmesh/navmesh.js +1 -0
  29. package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
  30. package/dist/cjs/core/pooled-codec/index.js +1 -0
  31. package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
  32. package/dist/cjs/core/prediction/index.js +1 -0
  33. package/dist/cjs/core/prediction/prediction.js +1 -0
  34. package/dist/cjs/core/ray/index.js +1 -0
  35. package/dist/cjs/core/ray/ray-2d.js +1 -0
  36. package/dist/cjs/core/ray/ray-3d.js +1 -0
  37. package/dist/cjs/core/simple-rng/index.js +1 -0
  38. package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
  39. package/dist/cjs/core/sparse-batcher/index.js +1 -0
  40. package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
  41. package/dist/cjs/ecs/component-store.js +1 -0
  42. package/dist/cjs/ecs/component.js +1 -0
  43. package/dist/cjs/ecs/entity-handle.js +1 -0
  44. package/dist/cjs/ecs/index.js +1 -0
  45. package/dist/cjs/ecs/system-builder.js +1 -0
  46. package/dist/cjs/ecs/world-systems.js +1 -0
  47. package/dist/cjs/ecs/world.js +1 -0
  48. package/dist/cjs/game/index.js +1 -0
  49. package/dist/cjs/game/loop/index.js +1 -0
  50. package/dist/cjs/game/loop/loop.js +1 -0
  51. package/dist/cjs/index.js +1 -0
  52. package/dist/cjs/net/adapters/browser-websocket.js +1 -0
  53. package/dist/cjs/net/adapters/bun-websocket.js +1 -0
  54. package/dist/cjs/net/buffer-pool.js +1 -0
  55. package/dist/cjs/net/client.js +1 -0
  56. package/dist/cjs/net/index.js +1 -0
  57. package/dist/cjs/net/server.js +1 -0
  58. package/dist/cjs/net/types.js +1 -0
  59. package/dist/cjs/net/validators.js +1 -0
  60. package/dist/cjs/protocol/index.js +1 -0
  61. package/dist/cjs/protocol/intent/define-intent.js +1 -0
  62. package/dist/cjs/protocol/intent/index.js +1 -0
  63. package/dist/cjs/protocol/intent/intent-registry.js +1 -0
  64. package/dist/cjs/protocol/intent/intent.js +1 -0
  65. package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
  66. package/dist/cjs/protocol/rpc/index.js +1 -0
  67. package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
  68. package/dist/cjs/protocol/rpc/rpc.js +1 -0
  69. package/dist/cjs/protocol/snapshot/index.js +1 -0
  70. package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
  71. package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
  72. package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
  73. package/dist/cjs/renderer/base-2d-renderer.js +1 -0
  74. package/dist/cjs/renderer/base-3d-renderer.js +1 -0
  75. package/dist/cjs/renderer/base-renderer.js +1 -0
  76. package/dist/cjs/renderer/index.js +1 -0
  77. package/dist/cjs/renderer/types.js +1 -0
  78. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  79. package/dist/esm/core/binary-codec/index.js +1 -0
  80. package/dist/esm/core/driver/driver.js +1 -0
  81. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  82. package/dist/esm/core/driver/drivers/index.js +1 -0
  83. package/dist/esm/core/driver/drivers/raf.js +1 -0
  84. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  85. package/dist/esm/core/driver/index.js +1 -0
  86. package/dist/esm/core/events/event-system.js +1 -0
  87. package/dist/esm/core/events/index.js +1 -0
  88. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  89. package/dist/esm/core/fixed-ticker/index.js +1 -0
  90. package/dist/esm/core/free-list/free-list.js +1 -0
  91. package/dist/esm/core/free-list/index.js +1 -0
  92. package/dist/esm/core/generate-id/generate-id.js +1 -0
  93. package/dist/esm/core/generate-id/index.js +1 -0
  94. package/dist/esm/core/index.js +1 -0
  95. package/dist/esm/core/input/index.js +1 -0
  96. package/dist/esm/core/input/manager.js +1 -0
  97. package/dist/esm/core/input/sources/browser.js +1 -0
  98. package/dist/esm/core/input/sources/index.js +1 -0
  99. package/dist/esm/core/input/types.js +0 -0
  100. package/dist/esm/core/lerp/index.js +1 -0
  101. package/dist/esm/core/lerp/lerp.js +1 -0
  102. package/dist/esm/core/navmesh/index.js +1 -0
  103. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  104. package/dist/esm/core/navmesh/navmesh.js +1 -0
  105. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  106. package/dist/esm/core/pooled-codec/index.js +1 -0
  107. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  108. package/dist/esm/core/prediction/index.js +1 -0
  109. package/dist/esm/core/prediction/prediction.js +1 -0
  110. package/dist/esm/core/ray/index.js +1 -0
  111. package/dist/esm/core/ray/ray-2d.js +1 -0
  112. package/dist/esm/core/ray/ray-3d.js +1 -0
  113. package/dist/esm/core/simple-rng/index.js +1 -0
  114. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  115. package/dist/esm/core/sparse-batcher/index.js +1 -0
  116. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  117. package/dist/esm/ecs/component-store.js +1 -0
  118. package/dist/esm/ecs/component.js +1 -0
  119. package/dist/esm/ecs/entity-handle.js +1 -0
  120. package/dist/esm/ecs/index.js +1 -0
  121. package/dist/esm/ecs/system-builder.js +1 -0
  122. package/dist/esm/ecs/world-systems.js +1 -0
  123. package/dist/esm/ecs/world.js +1 -0
  124. package/dist/esm/game/index.js +1 -0
  125. package/dist/esm/game/loop/index.js +1 -0
  126. package/dist/esm/game/loop/loop.js +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  129. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  130. package/dist/esm/net/buffer-pool.js +1 -0
  131. package/dist/esm/net/client.js +1 -0
  132. package/dist/esm/net/index.js +1 -0
  133. package/dist/esm/net/server.js +1 -0
  134. package/dist/esm/net/types.js +1 -0
  135. package/dist/esm/net/validators.js +1 -0
  136. package/dist/esm/protocol/index.js +1 -0
  137. package/dist/esm/protocol/intent/define-intent.js +1 -0
  138. package/dist/esm/protocol/intent/index.js +1 -0
  139. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  140. package/dist/esm/protocol/intent/intent.js +0 -0
  141. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  142. package/dist/esm/protocol/rpc/index.js +1 -0
  143. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  144. package/dist/esm/protocol/rpc/rpc.js +0 -0
  145. package/dist/esm/protocol/snapshot/index.js +1 -0
  146. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  147. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  148. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  149. package/dist/esm/renderer/base-2d-renderer.js +1 -0
  150. package/dist/esm/renderer/base-3d-renderer.js +1 -0
  151. package/dist/esm/renderer/base-renderer.js +1 -0
  152. package/dist/esm/renderer/index.js +1 -0
  153. package/dist/esm/renderer/types.js +0 -0
  154. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  155. package/dist/{core/loop → types/core/driver}/drivers/immediate.d.ts +1 -1
  156. package/dist/{core/loop → types/core/driver}/drivers/raf.d.ts +1 -1
  157. package/dist/{core/loop → types/core/driver}/drivers/timeout.d.ts +1 -1
  158. package/dist/{core/loop → types/core/driver}/index.d.ts +1 -1
  159. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  160. package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +1 -1
  161. package/dist/types/core/free-list/free-list.d.ts +31 -0
  162. package/dist/types/core/free-list/index.d.ts +1 -0
  163. package/dist/{core → types/core}/index.d.ts +7 -1
  164. package/dist/types/core/input/index.d.ts +3 -0
  165. package/dist/types/core/input/manager.d.ts +56 -0
  166. package/dist/types/core/input/sources/browser.d.ts +9 -0
  167. package/dist/types/core/input/sources/index.d.ts +1 -0
  168. package/dist/types/core/input/types.d.ts +36 -0
  169. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  170. package/dist/types/core/ray/index.d.ts +2 -0
  171. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  172. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  173. package/dist/types/core/simple-rng/index.d.ts +1 -0
  174. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  175. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  176. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  177. package/dist/{ecs → types/ecs}/system-builder.d.ts +20 -9
  178. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  179. package/dist/types/game/index.d.ts +1 -0
  180. package/dist/types/game/loop/index.d.ts +1 -0
  181. package/dist/types/game/loop/loop.d.ts +175 -0
  182. package/dist/{index.d.ts → types/index.d.ts} +2 -0
  183. package/dist/{net → types/net}/index.d.ts +2 -2
  184. package/dist/{net → types/net}/server.d.ts +39 -19
  185. package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +15 -0
  186. package/dist/{protocol → types/protocol}/intent/index.d.ts +1 -1
  187. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  188. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  189. package/dist/types/renderer/base-renderer.d.ts +21 -0
  190. package/dist/types/renderer/index.d.ts +4 -0
  191. package/dist/types/renderer/types.d.ts +79 -0
  192. package/dist/webgpu/cjs/index.js +6004 -0
  193. package/dist/webgpu/esm/index.js +5972 -0
  194. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  195. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  196. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  197. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  198. package/dist/webgpu/types/2d/sprite-accessor.test.d.ts +1 -0
  199. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  200. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  201. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  202. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  203. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  204. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  205. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  206. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  207. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  208. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  209. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  210. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  211. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  212. package/dist/webgpu/types/camera/index.d.ts +2 -0
  213. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  214. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  215. package/dist/webgpu/types/core/constants.d.ts +59 -0
  216. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  217. package/dist/webgpu/types/core/index.d.ts +2 -0
  218. package/dist/webgpu/types/core/math.d.ts +37 -0
  219. package/dist/webgpu/types/core/types.d.ts +125 -0
  220. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  221. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  222. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  223. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  224. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  225. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  226. package/dist/webgpu/types/index.d.ts +32 -0
  227. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  228. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  229. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  230. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  231. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  232. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  233. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  234. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  235. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  236. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  237. package/package.json +96 -26
  238. package/dist/core/binary-codec/binary-codec.js +0 -354
  239. package/dist/core/binary-codec/index.js +0 -1
  240. package/dist/core/events/event-system.js +0 -88
  241. package/dist/core/events/index.js +0 -1
  242. package/dist/core/fixed-ticker/fixed-ticker.js +0 -101
  243. package/dist/core/fixed-ticker/index.js +0 -1
  244. package/dist/core/generate-id/generate-id.js +0 -25
  245. package/dist/core/generate-id/index.js +0 -1
  246. package/dist/core/index.js +0 -9
  247. package/dist/core/lerp/index.js +0 -1
  248. package/dist/core/lerp/lerp.js +0 -42
  249. package/dist/core/loop/drivers/immediate.js +0 -61
  250. package/dist/core/loop/drivers/index.js +0 -3
  251. package/dist/core/loop/drivers/raf.js +0 -62
  252. package/dist/core/loop/drivers/timeout.js +0 -71
  253. package/dist/core/loop/index.js +0 -2
  254. package/dist/core/loop/loop.js +0 -47
  255. package/dist/core/navmesh/index.js +0 -1
  256. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  257. package/dist/core/navmesh/navmesh.js +0 -799
  258. package/dist/core/navmesh/navmesh.worker.js +0 -79
  259. package/dist/core/pooled-codec/index.js +0 -1
  260. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  261. package/dist/core/prediction/index.js +0 -1
  262. package/dist/core/prediction/prediction.js +0 -99
  263. package/dist/core.esm.js +0 -1
  264. package/dist/core.js +0 -1
  265. package/dist/ecs/component-store.js +0 -175
  266. package/dist/ecs/component.js +0 -43
  267. package/dist/ecs/entity-handle.js +0 -515
  268. package/dist/ecs/example.js +0 -125
  269. package/dist/ecs/index.js +0 -4
  270. package/dist/ecs/system-builder.js +0 -180
  271. package/dist/ecs/system.d.ts +0 -63
  272. package/dist/ecs/system.js +0 -92
  273. package/dist/ecs/world-systems.js +0 -79
  274. package/dist/ecs/world.js +0 -684
  275. package/dist/index.js +0 -24
  276. package/dist/net/adapters/browser-websocket.js +0 -74
  277. package/dist/net/adapters/bun-websocket.js +0 -245
  278. package/dist/net/buffer-pool.js +0 -89
  279. package/dist/net/client.js +0 -586
  280. package/dist/net/index.js +0 -58
  281. package/dist/net/server.js +0 -938
  282. package/dist/net/types.js +0 -31
  283. package/dist/net/validators.js +0 -88
  284. package/dist/protocol/index.js +0 -92
  285. package/dist/protocol/intent/define-intent.js +0 -125
  286. package/dist/protocol/intent/index.js +0 -91
  287. package/dist/protocol/intent/intent-registry.js +0 -91
  288. package/dist/protocol/rpc/define-rpc.js +0 -84
  289. package/dist/protocol/rpc/index.js +0 -3
  290. package/dist/protocol/rpc/rpc-registry.js +0 -159
  291. package/dist/protocol/rpc/rpc.js +0 -12
  292. package/dist/protocol/snapshot/index.js +0 -43
  293. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  294. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  295. package/dist/protocol/snapshot/snapshot.js +0 -30
  296. package/src/core/binary-codec/README.md +0 -60
  297. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  298. package/src/core/binary-codec/binary-codec.ts +0 -448
  299. package/src/core/binary-codec/index.ts +0 -1
  300. package/src/core/events/README.md +0 -47
  301. package/src/core/events/event-system.test.ts +0 -243
  302. package/src/core/events/event-system.ts +0 -140
  303. package/src/core/events/index.ts +0 -1
  304. package/src/core/fixed-ticker/README.md +0 -77
  305. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  306. package/src/core/fixed-ticker/fixed-ticker.ts +0 -169
  307. package/src/core/fixed-ticker/index.ts +0 -1
  308. package/src/core/generate-id/README.md +0 -18
  309. package/src/core/generate-id/generate-id.test.ts +0 -79
  310. package/src/core/generate-id/generate-id.ts +0 -37
  311. package/src/core/generate-id/index.ts +0 -1
  312. package/src/core/index.ts +0 -9
  313. package/src/core/lerp/README.md +0 -79
  314. package/src/core/lerp/index.ts +0 -1
  315. package/src/core/lerp/lerp.test.ts +0 -90
  316. package/src/core/lerp/lerp.ts +0 -42
  317. package/src/core/loop/README.md +0 -97
  318. package/src/core/loop/drivers/immediate.ts +0 -66
  319. package/src/core/loop/drivers/index.ts +0 -3
  320. package/src/core/loop/drivers/raf.ts +0 -67
  321. package/src/core/loop/drivers/timeout.ts +0 -77
  322. package/src/core/loop/index.ts +0 -2
  323. package/src/core/loop/loop.test.ts +0 -414
  324. package/src/core/loop/loop.ts +0 -71
  325. package/src/core/navmesh/README.md +0 -164
  326. package/src/core/navmesh/index.ts +0 -1
  327. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  328. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  329. package/src/core/navmesh/navmesh.test.ts +0 -344
  330. package/src/core/navmesh/navmesh.ts +0 -1047
  331. package/src/core/navmesh/navmesh.worker.ts +0 -147
  332. package/src/core/pooled-codec/README.md +0 -70
  333. package/src/core/pooled-codec/index.ts +0 -1
  334. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  335. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  336. package/src/core/prediction/README.md +0 -64
  337. package/src/core/prediction/index.ts +0 -1
  338. package/src/core/prediction/prediction.test.ts +0 -423
  339. package/src/core/prediction/prediction.ts +0 -112
  340. package/src/ecs/README.md +0 -427
  341. package/src/ecs/benchmark.test.ts +0 -1645
  342. package/src/ecs/component-store.ts +0 -198
  343. package/src/ecs/component.ts +0 -90
  344. package/src/ecs/entity-handle.test.ts +0 -393
  345. package/src/ecs/entity-handle.ts +0 -563
  346. package/src/ecs/example.ts +0 -152
  347. package/src/ecs/index.ts +0 -4
  348. package/src/ecs/system-builder.ts +0 -309
  349. package/src/ecs/system.ts +0 -111
  350. package/src/ecs/world-systems.ts +0 -83
  351. package/src/ecs/world.test.ts +0 -310
  352. package/src/ecs/world.ts +0 -828
  353. package/src/index.ts +0 -28
  354. package/src/net/README.md +0 -474
  355. package/src/net/adapters/browser-websocket.ts +0 -86
  356. package/src/net/adapters/bun-websocket.ts +0 -292
  357. package/src/net/buffer-pool.ts +0 -106
  358. package/src/net/client.test.ts +0 -807
  359. package/src/net/client.ts +0 -695
  360. package/src/net/index.ts +0 -60
  361. package/src/net/server.test.ts +0 -799
  362. package/src/net/server.ts +0 -1116
  363. package/src/net/types.ts +0 -228
  364. package/src/net/validators.ts +0 -104
  365. package/src/protocol/README.md +0 -469
  366. package/src/protocol/index.ts +0 -93
  367. package/src/protocol/intent/define-intent.test.ts +0 -397
  368. package/src/protocol/intent/define-intent.ts +0 -182
  369. package/src/protocol/intent/index.ts +0 -94
  370. package/src/protocol/intent/intent-registry.test.ts +0 -198
  371. package/src/protocol/intent/intent-registry.ts +0 -112
  372. package/src/protocol/intent/intent.ts +0 -12
  373. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  374. package/src/protocol/rpc/define-rpc.ts +0 -113
  375. package/src/protocol/rpc/index.ts +0 -3
  376. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  377. package/src/protocol/rpc/rpc-registry.ts +0 -176
  378. package/src/protocol/rpc/rpc.ts +0 -37
  379. package/src/protocol/snapshot/index.ts +0 -45
  380. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  381. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  382. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  383. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  384. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  385. package/src/protocol/snapshot/snapshot.ts +0 -41
  386. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  387. /package/dist/{core/loop/loop.d.ts → types/core/driver/driver.d.ts} +0 -0
  388. /package/dist/{core/loop → types/core/driver}/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  390. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  391. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  392. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  394. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  395. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  396. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  397. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  398. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  400. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  402. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  403. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  404. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  405. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  406. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  407. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  408. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  409. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  410. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  411. /package/dist/{net → types/net}/client.d.ts +0 -0
  412. /package/dist/{net → types/net}/types.d.ts +0 -0
  413. /package/dist/{net → types/net}/validators.d.ts +0 -0
  414. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  415. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  416. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  417. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  418. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  419. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  420. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  421. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  422. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  423. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  424. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  425. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/animation.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,2 @@
1
+ export { buildAnimationKernel } from './kernel';
2
+ export { packAnimationData, type PackedBuffers } from './packer';
@@ -0,0 +1,8 @@
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 '../gltf-skin-parser';
5
+ export declare function buildAnimationKernel(root: TgpuRoot, packed: PackedAnimationData, maxInstances: number, maxTotalBones: number): {
6
+ kernel: ComputeKernel;
7
+ packedBuffers: PackedBuffers;
8
+ };
@@ -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 '../gltf-skin-parser';
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,90 @@
1
+ /**
2
+ * SkeletalAnimation — CPU-side bone matrix evaluation for skinned meshes.
3
+ *
4
+ * Evaluates animation clips by sampling keyframes, computing joint local transforms,
5
+ * walking the hierarchy, and writing final bone matrices into a pre-allocated buffer.
6
+ * Zero per-frame allocations.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * const anim = new SkeletalAnimation(skinData, clips);
11
+ * const state = anim.createState('walk');
12
+ *
13
+ * // Each tick:
14
+ * anim.update(state, deltaTime, outputMatrices);
15
+ *
16
+ * // outputMatrices is a Float32Array view into the bone matrix buffer
17
+ * ```
18
+ */
19
+ import type { SkinData, AnimationClipData, AnimationChannel } from './gltf-skin-parser';
20
+ export interface SkeletalClip {
21
+ readonly id: number;
22
+ readonly name: string;
23
+ readonly duration: number;
24
+ readonly channels: AnimationChannel[];
25
+ readonly loop: boolean;
26
+ }
27
+ export interface PlayOptions {
28
+ speed?: number;
29
+ /** Crossfade duration in seconds. 0 = instant switch (default). */
30
+ crossfade?: number;
31
+ /** Whether the animation should loop. Default: true. */
32
+ loop?: boolean;
33
+ /** Called when the animation clip ends (reaches duration). Fires each loop for looping clips. */
34
+ onEnd?: () => void;
35
+ }
36
+ export interface SkeletalAnimState {
37
+ clipId: number;
38
+ time: number;
39
+ speed: number;
40
+ playing: boolean;
41
+ loop: boolean;
42
+ prevClipId: number;
43
+ prevTime: number;
44
+ prevSpeed: number;
45
+ blendWeight: number;
46
+ blendDuration: number;
47
+ onEnd: () => void;
48
+ }
49
+ export declare class SkeletalAnimation {
50
+ private clips;
51
+ private clipsByName;
52
+ readonly skinData: SkinData;
53
+ private readonly localMatrices;
54
+ private readonly worldMatrices;
55
+ private readonly blendScratch;
56
+ private readonly originalRestPoseTRS;
57
+ private readonly currentTRS;
58
+ private readonly topoOrder;
59
+ private readonly skelRootMat;
60
+ constructor(skinData: SkinData, clips: AnimationClipData[], gltfNodes: any[]);
61
+ loadClip(clip: AnimationClipData, loop?: boolean): number;
62
+ getClipId(name: string): number;
63
+ getClipNames(): string[];
64
+ getClip(id: number): SkeletalClip | null;
65
+ get clipCount(): number;
66
+ createState(clipIdOrName: number | string, speed?: number, playing?: boolean): SkeletalAnimState;
67
+ play(state: SkeletalAnimState, clipIdOrName: number | string, opts?: PlayOptions): void;
68
+ stop(state: SkeletalAnimState): void;
69
+ resume(state: SkeletalAnimState): void;
70
+ /**
71
+ * Advance time and compute bone matrices.
72
+ * Writes jointCount mat4s into `output` starting at float index `outputOffset`.
73
+ * Handles crossfade blending automatically.
74
+ */
75
+ update(state: SkeletalAnimState, deltaTime: number, output: Float32Array, outputOffset?: number): void;
76
+ /** Advance clip time with looping/clamping. */
77
+ private advanceTime;
78
+ /** Evaluate a clip at a specific time and write bone matrices. */
79
+ private evaluateClip;
80
+ /**
81
+ * Compute bone matrices for the rest/bind pose (no animation).
82
+ */
83
+ computeRestPose(output: Float32Array, outputOffset?: number): void;
84
+ /** Sample an animation channel at time t. Returns 3 or 4 floats. */
85
+ private sampleChannel;
86
+ private readonly _scratchVec3;
87
+ private readonly _scratchQuat;
88
+ /** Normalized lerp for quaternions (nlerp). */
89
+ private nlerpQuat;
90
+ }
@@ -0,0 +1,53 @@
1
+ import type { Camera2DState } from 'murow/renderer/types';
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/types';
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,2 @@
1
+ export * from "./camera-2d";
2
+ export * from "./camera-3d";
@@ -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,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,2 @@
1
+ export * from "./constants";
2
+ export * from "./types";
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared 3D math utilities for the WebGPU renderer.
3
+ * All functions operate on Float32Arrays with explicit offsets — zero allocations in hot paths.
4
+ */
5
+ /**
6
+ * Write a 4x4 identity matrix into `dst` at `offset`.
7
+ */
8
+ export declare function mat4Identity(dst: Float32Array, offset: number): void;
9
+ /**
10
+ * Create a new 4x4 identity matrix.
11
+ */
12
+ export declare function mat4IdentityNew(): Float32Array;
13
+ /**
14
+ * Write a column-major 4x4 matrix from TRS (translation, quaternion rotation, scale)
15
+ * into `dst` at `offset`.
16
+ */
17
+ export declare function trsToMat4(tx: number, ty: number, tz: number, qx: number, qy: number, qz: number, qw: number, sx: number, sy: number, sz: number, dst: Float32Array, offset: number): void;
18
+ /**
19
+ * Build a column-major 4x4 matrix from a glTF node's TRS or matrix property.
20
+ * Allocates and returns a new Float32Array(16).
21
+ */
22
+ export declare function nodeToMat4(node: {
23
+ translation?: number[];
24
+ rotation?: number[];
25
+ scale?: number[];
26
+ matrix?: number[];
27
+ }): Float32Array;
28
+ /**
29
+ * 4x4 matrix multiply: dst[dO..+16] = a[aO..+16] * b[bO..+16]. Column-major.
30
+ * Safe when a, b, dst overlap (uses internal temp buffer).
31
+ */
32
+ export declare function mat4Mul(a: Float32Array, aO: number, b: Float32Array, bO: number, dst: Float32Array, dO: number): void;
33
+ /**
34
+ * 4x4 matrix multiply that allocates and returns a new Float32Array(16).
35
+ * Use for load-time operations, not per-frame hot paths.
36
+ */
37
+ export declare function mat4MulNew(a: Float32Array, b: Float32Array): Float32Array;