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.
Files changed (470) hide show
  1. package/README.md +54 -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/renderer-2d.js +1 -0
  74. package/dist/cjs/renderer/base/renderer-3d.js +1 -0
  75. package/dist/cjs/renderer/base/renderer.js +1 -0
  76. package/dist/cjs/renderer/gltf/helpers.js +1 -0
  77. package/dist/cjs/renderer/gltf/parser.js +1 -0
  78. package/dist/cjs/renderer/gltf/skeletal-animation.js +1 -0
  79. package/dist/cjs/renderer/gltf/skin-parser.js +1 -0
  80. package/dist/cjs/renderer/index.js +1 -0
  81. package/dist/cjs/renderer/math.js +1 -0
  82. package/dist/cjs/renderer/prefab-bucket/concrete.js +1 -0
  83. package/dist/cjs/renderer/prefab-bucket/index.js +1 -0
  84. package/dist/cjs/renderer/prefab-bucket/parsers.js +1 -0
  85. package/dist/cjs/renderer/prefab-bucket/specs.js +1 -0
  86. package/dist/cjs/renderer/spritesheet/helpers.js +1 -0
  87. package/dist/cjs/renderer/spritesheet/parser.js +1 -0
  88. package/dist/cjs/renderer/types.js +1 -0
  89. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  90. package/dist/esm/core/binary-codec/index.js +1 -0
  91. package/dist/esm/core/driver/driver.js +1 -0
  92. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  93. package/dist/esm/core/driver/drivers/index.js +1 -0
  94. package/dist/esm/core/driver/drivers/raf.js +1 -0
  95. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  96. package/dist/esm/core/driver/index.js +1 -0
  97. package/dist/esm/core/events/event-system.js +1 -0
  98. package/dist/esm/core/events/index.js +1 -0
  99. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  100. package/dist/esm/core/fixed-ticker/index.js +1 -0
  101. package/dist/esm/core/free-list/free-list.js +1 -0
  102. package/dist/esm/core/free-list/index.js +1 -0
  103. package/dist/esm/core/generate-id/generate-id.js +1 -0
  104. package/dist/esm/core/generate-id/index.js +1 -0
  105. package/dist/esm/core/index.js +1 -0
  106. package/dist/esm/core/input/index.js +1 -0
  107. package/dist/esm/core/input/manager.js +1 -0
  108. package/dist/esm/core/input/sources/browser.js +1 -0
  109. package/dist/esm/core/input/sources/index.js +1 -0
  110. package/dist/esm/core/input/types.js +0 -0
  111. package/dist/esm/core/lerp/index.js +1 -0
  112. package/dist/esm/core/lerp/lerp.js +1 -0
  113. package/dist/esm/core/navmesh/index.js +1 -0
  114. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  115. package/dist/esm/core/navmesh/navmesh.js +1 -0
  116. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  117. package/dist/esm/core/pooled-codec/index.js +1 -0
  118. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  119. package/dist/esm/core/prediction/index.js +1 -0
  120. package/dist/esm/core/prediction/prediction.js +1 -0
  121. package/dist/esm/core/ray/index.js +1 -0
  122. package/dist/esm/core/ray/ray-2d.js +1 -0
  123. package/dist/esm/core/ray/ray-3d.js +1 -0
  124. package/dist/esm/core/simple-rng/index.js +1 -0
  125. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  126. package/dist/esm/core/sparse-batcher/index.js +1 -0
  127. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  128. package/dist/esm/ecs/component-store.js +1 -0
  129. package/dist/esm/ecs/component.js +1 -0
  130. package/dist/esm/ecs/entity-handle.js +1 -0
  131. package/dist/esm/ecs/index.js +1 -0
  132. package/dist/esm/ecs/system-builder.js +1 -0
  133. package/dist/esm/ecs/world-systems.js +1 -0
  134. package/dist/esm/ecs/world.js +1 -0
  135. package/dist/esm/game/index.js +1 -0
  136. package/dist/esm/game/loop/index.js +1 -0
  137. package/dist/esm/game/loop/loop.js +1 -0
  138. package/dist/esm/index.js +1 -0
  139. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  140. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  141. package/dist/esm/net/buffer-pool.js +1 -0
  142. package/dist/esm/net/client.js +1 -0
  143. package/dist/esm/net/index.js +1 -0
  144. package/dist/esm/net/server.js +1 -0
  145. package/dist/esm/net/types.js +1 -0
  146. package/dist/esm/net/validators.js +1 -0
  147. package/dist/esm/protocol/index.js +1 -0
  148. package/dist/esm/protocol/intent/define-intent.js +1 -0
  149. package/dist/esm/protocol/intent/index.js +1 -0
  150. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  151. package/dist/esm/protocol/intent/intent.js +0 -0
  152. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  153. package/dist/esm/protocol/rpc/index.js +1 -0
  154. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  155. package/dist/esm/protocol/rpc/rpc.js +0 -0
  156. package/dist/esm/protocol/snapshot/index.js +1 -0
  157. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  158. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  159. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  160. package/dist/esm/renderer/base/renderer-2d.js +1 -0
  161. package/dist/esm/renderer/base/renderer-3d.js +1 -0
  162. package/dist/esm/renderer/base/renderer.js +1 -0
  163. package/dist/esm/renderer/gltf/helpers.js +1 -0
  164. package/dist/esm/renderer/gltf/parser.js +1 -0
  165. package/dist/esm/renderer/gltf/skeletal-animation.js +1 -0
  166. package/dist/esm/renderer/gltf/skin-parser.js +1 -0
  167. package/dist/esm/renderer/index.js +1 -0
  168. package/dist/esm/renderer/math.js +1 -0
  169. package/dist/esm/renderer/prefab-bucket/concrete.js +1 -0
  170. package/dist/esm/renderer/prefab-bucket/index.js +1 -0
  171. package/dist/esm/renderer/prefab-bucket/parsers.js +1 -0
  172. package/dist/esm/renderer/prefab-bucket/specs.js +0 -0
  173. package/dist/esm/renderer/spritesheet/helpers.js +1 -0
  174. package/dist/esm/renderer/spritesheet/parser.js +1 -0
  175. package/dist/esm/renderer/types.js +0 -0
  176. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  177. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  178. package/dist/types/core/free-list/free-list.d.ts +31 -0
  179. package/dist/types/core/free-list/index.d.ts +1 -0
  180. package/dist/{core → types/core}/index.d.ts +5 -0
  181. package/dist/{core → types/core}/input/index.d.ts +1 -0
  182. package/dist/{core → types/core}/input/manager.d.ts +2 -0
  183. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  184. package/dist/types/core/ray/index.d.ts +2 -0
  185. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  186. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  187. package/dist/types/core/simple-rng/index.d.ts +1 -0
  188. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  189. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  190. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  191. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  192. package/dist/{game → types/game}/loop/loop.d.ts +33 -29
  193. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  194. package/dist/{net → types/net}/index.d.ts +2 -2
  195. package/dist/types/renderer/base/renderer-2d.d.ts +13 -0
  196. package/dist/types/renderer/base/renderer-3d.d.ts +10 -0
  197. package/dist/types/renderer/base/renderer.d.ts +21 -0
  198. package/dist/types/renderer/gltf/helpers.d.ts +43 -0
  199. package/dist/types/renderer/gltf/parser.d.ts +49 -0
  200. package/dist/types/renderer/gltf/skeletal-animation.d.ts +96 -0
  201. package/dist/types/renderer/gltf/skin-parser.d.ts +107 -0
  202. package/dist/types/renderer/index.d.ts +15 -0
  203. package/dist/types/renderer/math.d.ts +37 -0
  204. package/dist/types/renderer/prefab-bucket/concrete.d.ts +55 -0
  205. package/dist/types/renderer/prefab-bucket/index.d.ts +113 -0
  206. package/dist/types/renderer/prefab-bucket/parsers.d.ts +8 -0
  207. package/dist/types/renderer/prefab-bucket/specs.d.ts +166 -0
  208. package/dist/types/renderer/spritesheet/helpers.d.ts +38 -0
  209. package/dist/types/renderer/spritesheet/parser.d.ts +21 -0
  210. package/dist/types/renderer/types.d.ts +89 -0
  211. package/dist/webgpu/cjs/index.js +5401 -0
  212. package/dist/webgpu/esm/index.js +5378 -0
  213. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  214. package/dist/webgpu/types/2d/renderer.d.ts +86 -0
  215. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  216. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  217. package/dist/webgpu/types/3d/clip-resync-coordinator.d.ts +20 -0
  218. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  219. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  220. package/dist/webgpu/types/3d/renderer.d.ts +266 -0
  221. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  222. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  223. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +25 -0
  224. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  225. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  226. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  227. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  228. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  229. package/dist/webgpu/types/camera/index.d.ts +2 -0
  230. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  231. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  232. package/dist/webgpu/types/core/constants.d.ts +59 -0
  233. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  234. package/dist/webgpu/types/core/index.d.ts +2 -0
  235. package/dist/webgpu/types/core/types.d.ts +125 -0
  236. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  237. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  238. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  239. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  240. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  241. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  242. package/dist/webgpu/types/index.d.ts +35 -0
  243. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  244. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  245. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  246. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  247. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  248. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  249. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  250. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  251. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +28 -0
  252. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  253. package/package.json +96 -26
  254. package/dist/core/binary-codec/binary-codec.js +0 -354
  255. package/dist/core/binary-codec/index.js +0 -1
  256. package/dist/core/driver/driver.js +0 -47
  257. package/dist/core/driver/drivers/immediate.js +0 -61
  258. package/dist/core/driver/drivers/index.js +0 -3
  259. package/dist/core/driver/drivers/raf.js +0 -62
  260. package/dist/core/driver/drivers/timeout.js +0 -71
  261. package/dist/core/driver/index.js +0 -2
  262. package/dist/core/events/event-system.js +0 -88
  263. package/dist/core/events/index.js +0 -1
  264. package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
  265. package/dist/core/fixed-ticker/index.js +0 -1
  266. package/dist/core/generate-id/generate-id.js +0 -25
  267. package/dist/core/generate-id/index.js +0 -1
  268. package/dist/core/index.js +0 -10
  269. package/dist/core/input/index.js +0 -2
  270. package/dist/core/input/manager.js +0 -211
  271. package/dist/core/input/sources/browser.js +0 -29
  272. package/dist/core/input/sources/index.js +0 -1
  273. package/dist/core/lerp/index.js +0 -1
  274. package/dist/core/lerp/lerp.js +0 -42
  275. package/dist/core/navmesh/index.js +0 -1
  276. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  277. package/dist/core/navmesh/navmesh.js +0 -799
  278. package/dist/core/navmesh/navmesh.worker.js +0 -79
  279. package/dist/core/pooled-codec/index.js +0 -1
  280. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  281. package/dist/core/prediction/index.js +0 -1
  282. package/dist/core/prediction/prediction.js +0 -99
  283. package/dist/core.esm.js +0 -1
  284. package/dist/core.js +0 -1
  285. package/dist/ecs/component-store.js +0 -175
  286. package/dist/ecs/component.js +0 -43
  287. package/dist/ecs/entity-handle.js +0 -515
  288. package/dist/ecs/example.js +0 -125
  289. package/dist/ecs/index.js +0 -4
  290. package/dist/ecs/system-builder.js +0 -249
  291. package/dist/ecs/world-systems.js +0 -79
  292. package/dist/ecs/world.js +0 -767
  293. package/dist/game/index.js +0 -1
  294. package/dist/game/loop/index.js +0 -1
  295. package/dist/game/loop/loop.js +0 -108
  296. package/dist/index.js +0 -26
  297. package/dist/net/adapters/browser-websocket.js +0 -74
  298. package/dist/net/adapters/bun-websocket.js +0 -245
  299. package/dist/net/buffer-pool.js +0 -89
  300. package/dist/net/client.js +0 -586
  301. package/dist/net/index.js +0 -58
  302. package/dist/net/server.js +0 -974
  303. package/dist/net/types.js +0 -31
  304. package/dist/net/validators.js +0 -88
  305. package/dist/protocol/index.js +0 -92
  306. package/dist/protocol/intent/define-intent.js +0 -125
  307. package/dist/protocol/intent/index.js +0 -91
  308. package/dist/protocol/intent/intent-registry.js +0 -91
  309. package/dist/protocol/rpc/define-rpc.js +0 -84
  310. package/dist/protocol/rpc/index.js +0 -3
  311. package/dist/protocol/rpc/rpc-registry.js +0 -159
  312. package/dist/protocol/rpc/rpc.js +0 -12
  313. package/dist/protocol/snapshot/index.js +0 -43
  314. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  315. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  316. package/dist/protocol/snapshot/snapshot.js +0 -30
  317. package/src/core/binary-codec/README.md +0 -60
  318. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  319. package/src/core/binary-codec/binary-codec.ts +0 -448
  320. package/src/core/binary-codec/index.ts +0 -1
  321. package/src/core/driver/README.md +0 -97
  322. package/src/core/driver/driver.test.ts +0 -414
  323. package/src/core/driver/driver.ts +0 -71
  324. package/src/core/driver/drivers/immediate.ts +0 -66
  325. package/src/core/driver/drivers/index.ts +0 -3
  326. package/src/core/driver/drivers/raf.ts +0 -67
  327. package/src/core/driver/drivers/timeout.ts +0 -77
  328. package/src/core/driver/index.ts +0 -2
  329. package/src/core/events/README.md +0 -47
  330. package/src/core/events/event-system.test.ts +0 -243
  331. package/src/core/events/event-system.ts +0 -140
  332. package/src/core/events/index.ts +0 -1
  333. package/src/core/fixed-ticker/README.md +0 -77
  334. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  335. package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
  336. package/src/core/fixed-ticker/index.ts +0 -1
  337. package/src/core/generate-id/README.md +0 -18
  338. package/src/core/generate-id/generate-id.test.ts +0 -79
  339. package/src/core/generate-id/generate-id.ts +0 -37
  340. package/src/core/generate-id/index.ts +0 -1
  341. package/src/core/index.ts +0 -10
  342. package/src/core/input/README.md +0 -24
  343. package/src/core/input/index.ts +0 -2
  344. package/src/core/input/manager.ts +0 -259
  345. package/src/core/input/sources/browser.ts +0 -39
  346. package/src/core/input/sources/index.ts +0 -1
  347. package/src/core/input/types.ts +0 -40
  348. package/src/core/lerp/README.md +0 -79
  349. package/src/core/lerp/index.ts +0 -1
  350. package/src/core/lerp/lerp.test.ts +0 -90
  351. package/src/core/lerp/lerp.ts +0 -42
  352. package/src/core/navmesh/README.md +0 -164
  353. package/src/core/navmesh/index.ts +0 -1
  354. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  355. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  356. package/src/core/navmesh/navmesh.test.ts +0 -344
  357. package/src/core/navmesh/navmesh.ts +0 -1047
  358. package/src/core/navmesh/navmesh.worker.ts +0 -147
  359. package/src/core/pooled-codec/README.md +0 -70
  360. package/src/core/pooled-codec/index.ts +0 -1
  361. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  362. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  363. package/src/core/prediction/README.md +0 -64
  364. package/src/core/prediction/index.ts +0 -1
  365. package/src/core/prediction/prediction.test.ts +0 -423
  366. package/src/core/prediction/prediction.ts +0 -112
  367. package/src/ecs/README.md +0 -427
  368. package/src/ecs/benchmark.test.ts +0 -1645
  369. package/src/ecs/component-store.ts +0 -198
  370. package/src/ecs/component.ts +0 -90
  371. package/src/ecs/entity-handle.test.ts +0 -393
  372. package/src/ecs/entity-handle.ts +0 -563
  373. package/src/ecs/example.ts +0 -152
  374. package/src/ecs/index.ts +0 -4
  375. package/src/ecs/system-builder.ts +0 -404
  376. package/src/ecs/world-systems.ts +0 -83
  377. package/src/ecs/world.test.ts +0 -310
  378. package/src/ecs/world.ts +0 -904
  379. package/src/game/index.ts +0 -1
  380. package/src/game/loop/README.md +0 -32
  381. package/src/game/loop/index.ts +0 -1
  382. package/src/game/loop/loop.ts +0 -236
  383. package/src/index.ts +0 -32
  384. package/src/net/README.md +0 -474
  385. package/src/net/adapters/browser-websocket.ts +0 -86
  386. package/src/net/adapters/bun-websocket.ts +0 -292
  387. package/src/net/buffer-pool.ts +0 -106
  388. package/src/net/client.test.ts +0 -807
  389. package/src/net/client.ts +0 -695
  390. package/src/net/index.ts +0 -60
  391. package/src/net/server.test.ts +0 -799
  392. package/src/net/server.ts +0 -1152
  393. package/src/net/types.ts +0 -228
  394. package/src/net/validators.ts +0 -104
  395. package/src/protocol/README.md +0 -469
  396. package/src/protocol/index.ts +0 -93
  397. package/src/protocol/intent/define-intent.test.ts +0 -397
  398. package/src/protocol/intent/define-intent.ts +0 -201
  399. package/src/protocol/intent/index.ts +0 -94
  400. package/src/protocol/intent/intent-registry.test.ts +0 -198
  401. package/src/protocol/intent/intent-registry.ts +0 -112
  402. package/src/protocol/intent/intent.ts +0 -12
  403. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  404. package/src/protocol/rpc/define-rpc.ts +0 -113
  405. package/src/protocol/rpc/index.ts +0 -3
  406. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  407. package/src/protocol/rpc/rpc-registry.ts +0 -176
  408. package/src/protocol/rpc/rpc.ts +0 -37
  409. package/src/protocol/snapshot/index.ts +0 -45
  410. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  411. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  412. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  413. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  414. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  415. package/src/protocol/snapshot/snapshot.ts +0 -41
  416. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  417. /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
  418. /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
  419. /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
  420. /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
  421. /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
  422. /package/dist/{core → types/core}/driver/index.d.ts +0 -0
  423. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  424. /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
  425. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  426. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  427. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  428. /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
  429. /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
  430. /package/dist/{core → types/core}/input/types.d.ts +0 -0
  431. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  432. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  433. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  434. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  435. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  436. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  437. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  438. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  439. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  440. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  441. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  442. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  443. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  444. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  445. /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
  446. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  447. /package/dist/{game → types/game}/index.d.ts +0 -0
  448. /package/dist/{game → types/game}/loop/index.d.ts +0 -0
  449. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  450. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  451. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  452. /package/dist/{net → types/net}/client.d.ts +0 -0
  453. /package/dist/{net → types/net}/server.d.ts +0 -0
  454. /package/dist/{net → types/net}/types.d.ts +0 -0
  455. /package/dist/{net → types/net}/validators.d.ts +0 -0
  456. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  457. /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
  458. /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
  459. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  460. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  461. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  462. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  463. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  464. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  465. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  466. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  467. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  468. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  469. /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
  470. /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,2 @@
1
+ export { buildAnimationKernel, uploadPackedToKernel, type AnimationKernelBudgets } from './kernel';
2
+ export { packAnimationData, type PackedBuffers } from './packer';
@@ -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,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,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 {};