@driftengine/core 3.61.0

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 (955) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +9 -0
  3. package/README.md +9 -0
  4. package/dist/behavior/behaviorTree.d.ts +140 -0
  5. package/dist/behavior/behaviorTree.js +289 -0
  6. package/dist/build/shaderComments.d.ts +64 -0
  7. package/dist/build/shaderComments.js +0 -0
  8. package/dist/cinematic/player.d.ts +80 -0
  9. package/dist/cinematic/player.js +184 -0
  10. package/dist/cinematic/script.d.ts +63 -0
  11. package/dist/cinematic/script.js +141 -0
  12. package/dist/core/bootGate.d.ts +37 -0
  13. package/dist/core/bootGate.js +47 -0
  14. package/dist/core/loadTracker.d.ts +78 -0
  15. package/dist/core/loadTracker.js +106 -0
  16. package/dist/core/loop.d.ts +118 -0
  17. package/dist/core/loop.js +84 -0
  18. package/dist/core/messageQueue.d.ts +61 -0
  19. package/dist/core/messageQueue.js +104 -0
  20. package/dist/core/onceSet.d.ts +27 -0
  21. package/dist/core/onceSet.js +62 -0
  22. package/dist/core/preferences.d.ts +47 -0
  23. package/dist/core/preferences.js +140 -0
  24. package/dist/core/remoteSave.d.ts +154 -0
  25. package/dist/core/remoteSave.js +249 -0
  26. package/dist/core/rng.d.ts +64 -0
  27. package/dist/core/rng.js +72 -0
  28. package/dist/core/stepBudget.d.ts +91 -0
  29. package/dist/core/stepBudget.js +105 -0
  30. package/dist/core/storage.d.ts +52 -0
  31. package/dist/core/storage.js +85 -0
  32. package/dist/core/tickTrace.d.ts +72 -0
  33. package/dist/core/tickTrace.js +102 -0
  34. package/dist/core/timeCurve.d.ts +83 -0
  35. package/dist/core/timeCurve.js +107 -0
  36. package/dist/core/withDefaults.d.ts +21 -0
  37. package/dist/core/withDefaults.js +29 -0
  38. package/dist/dev/contactProbe.d.ts +41 -0
  39. package/dist/dev/contactProbe.js +58 -0
  40. package/dist/dev/fpsMeter.d.ts +45 -0
  41. package/dist/dev/fpsMeter.js +86 -0
  42. package/dist/environment/celestialClock.d.ts +141 -0
  43. package/dist/environment/celestialClock.js +262 -0
  44. package/dist/geometry/decal.d.ts +61 -0
  45. package/dist/geometry/decal.js +178 -0
  46. package/dist/geometry/filmPatch.d.ts +35 -0
  47. package/dist/geometry/filmPatch.js +112 -0
  48. package/dist/geometry/growable.d.ts +70 -0
  49. package/dist/geometry/growable.js +167 -0
  50. package/dist/geometry/lightVolume.d.ts +76 -0
  51. package/dist/geometry/lightVolume.js +65 -0
  52. package/dist/geometry/meshBuilder.d.ts +426 -0
  53. package/dist/geometry/meshBuilder.js +1184 -0
  54. package/dist/geometry/pixelFont.d.ts +59 -0
  55. package/dist/geometry/pixelFont.js +179 -0
  56. package/dist/geometry/ribbon.d.ts +101 -0
  57. package/dist/geometry/ribbon.js +546 -0
  58. package/dist/geometry/shellFill.d.ts +101 -0
  59. package/dist/geometry/shellFill.js +203 -0
  60. package/dist/geometry/spline.d.ts +162 -0
  61. package/dist/geometry/spline.js +527 -0
  62. package/dist/geometry/tangents.d.ts +30 -0
  63. package/dist/geometry/tangents.js +142 -0
  64. package/dist/geometry/textMesh.d.ts +51 -0
  65. package/dist/geometry/textMesh.js +57 -0
  66. package/dist/geometry/treeBuilder.d.ts +37 -0
  67. package/dist/geometry/treeBuilder.js +56 -0
  68. package/dist/host/display.d.ts +135 -0
  69. package/dist/host/display.js +114 -0
  70. package/dist/host/files.d.ts +25 -0
  71. package/dist/host/files.js +44 -0
  72. package/dist/host/lifecycle.d.ts +45 -0
  73. package/dist/host/lifecycle.js +28 -0
  74. package/dist/host/platformServices.d.ts +23 -0
  75. package/dist/host/platformServices.js +1 -0
  76. package/dist/host/screen.d.ts +49 -0
  77. package/dist/host/screen.js +90 -0
  78. package/dist/index.d.ts +289 -0
  79. package/dist/index.js +320 -0
  80. package/dist/input/actionMap.d.ts +181 -0
  81. package/dist/input/actionMap.js +314 -0
  82. package/dist/input/activeDevice.d.ts +55 -0
  83. package/dist/input/activeDevice.js +83 -0
  84. package/dist/input/gamepadIdentity.d.ts +43 -0
  85. package/dist/input/gamepadIdentity.js +108 -0
  86. package/dist/input/gamepadMapping.d.ts +56 -0
  87. package/dist/input/gamepadMapping.js +91 -0
  88. package/dist/input/input.d.ts +281 -0
  89. package/dist/input/input.js +703 -0
  90. package/dist/input/inputHarness.d.ts +42 -0
  91. package/dist/input/inputHarness.js +193 -0
  92. package/dist/input/rightGesture.d.ts +57 -0
  93. package/dist/input/rightGesture.js +49 -0
  94. package/dist/input/rumble.d.ts +71 -0
  95. package/dist/input/rumble.js +119 -0
  96. package/dist/input/touchControls.d.ts +138 -0
  97. package/dist/input/touchControls.js +352 -0
  98. package/dist/input/typingTarget.d.ts +6 -0
  99. package/dist/input/typingTarget.js +27 -0
  100. package/dist/math/bounds.d.ts +61 -0
  101. package/dist/math/bounds.js +121 -0
  102. package/dist/math/color.d.ts +8 -0
  103. package/dist/math/color.js +35 -0
  104. package/dist/math/exact.d.ts +66 -0
  105. package/dist/math/exact.js +262 -0
  106. package/dist/math/frustum.d.ts +44 -0
  107. package/dist/math/frustum.js +90 -0
  108. package/dist/math/intersect.d.ts +76 -0
  109. package/dist/math/intersect.js +185 -0
  110. package/dist/math/scalar.d.ts +51 -0
  111. package/dist/math/scalar.js +99 -0
  112. package/dist/math/spring.d.ts +59 -0
  113. package/dist/math/spring.js +88 -0
  114. package/dist/nav/navGraph.d.ts +71 -0
  115. package/dist/nav/navGraph.js +111 -0
  116. package/dist/nav/navPath.d.ts +93 -0
  117. package/dist/nav/navPath.js +162 -0
  118. package/dist/nav/navSearch.d.ts +74 -0
  119. package/dist/nav/navSearch.js +198 -0
  120. package/dist/physics/boxSurface.d.ts +48 -0
  121. package/dist/physics/boxSurface.js +73 -0
  122. package/dist/physics/colliderSurface.d.ts +46 -0
  123. package/dist/physics/colliderSurface.js +146 -0
  124. package/dist/physics/compositeSurface.d.ts +33 -0
  125. package/dist/physics/compositeSurface.js +108 -0
  126. package/dist/physics/heightSurface.d.ts +103 -0
  127. package/dist/physics/heightSurface.js +153 -0
  128. package/dist/physics/ribbonSurface.d.ts +239 -0
  129. package/dist/physics/ribbonSurface.js +522 -0
  130. package/dist/render/ambientOcclusionPass.d.ts +53 -0
  131. package/dist/render/ambientOcclusionPass.js +179 -0
  132. package/dist/render/areaLights.d.ts +116 -0
  133. package/dist/render/areaLights.js +91 -0
  134. package/dist/render/areaShadowSet.d.ts +184 -0
  135. package/dist/render/areaShadowSet.js +277 -0
  136. package/dist/render/atmosphere.d.ts +94 -0
  137. package/dist/render/atmosphere.js +91 -0
  138. package/dist/render/backend/api.d.ts +496 -0
  139. package/dist/render/backend/api.js +1 -0
  140. package/dist/render/backend/budget.d.ts +82 -0
  141. package/dist/render/backend/budget.js +99 -0
  142. package/dist/render/backend/createRenderer.d.ts +135 -0
  143. package/dist/render/backend/createRenderer.js +201 -0
  144. package/dist/render/backend/deadline.d.ts +24 -0
  145. package/dist/render/backend/deadline.js +38 -0
  146. package/dist/render/backend/probe.d.ts +30 -0
  147. package/dist/render/backend/probe.js +129 -0
  148. package/dist/render/backend/select.d.ts +70 -0
  149. package/dist/render/backend/select.js +249 -0
  150. package/dist/render/backend/timer.d.ts +50 -0
  151. package/dist/render/backend/timer.js +1 -0
  152. package/dist/render/backend/webgl2/instanced.d.ts +21 -0
  153. package/dist/render/backend/webgl2/instanced.js +42 -0
  154. package/dist/render/backend/webgl2/morphTexture.d.ts +21 -0
  155. package/dist/render/backend/webgl2/morphTexture.js +55 -0
  156. package/dist/render/backend/webgl2/renderer.d.ts +3027 -0
  157. package/dist/render/backend/webgl2/renderer.js +6041 -0
  158. package/dist/render/backend/webgl2/skinPaletteTexture.d.ts +32 -0
  159. package/dist/render/backend/webgl2/skinPaletteTexture.js +68 -0
  160. package/dist/render/backend/webgpu/boltPass.d.ts +42 -0
  161. package/dist/render/backend/webgpu/boltPass.js +160 -0
  162. package/dist/render/backend/webgpu/buffers.d.ts +159 -0
  163. package/dist/render/backend/webgpu/buffers.js +402 -0
  164. package/dist/render/backend/webgpu/causticsPass.d.ts +36 -0
  165. package/dist/render/backend/webgpu/causticsPass.js +138 -0
  166. package/dist/render/backend/webgpu/clusterBinner.d.ts +51 -0
  167. package/dist/render/backend/webgpu/clusterBinner.js +206 -0
  168. package/dist/render/backend/webgpu/depthPass.d.ts +114 -0
  169. package/dist/render/backend/webgpu/depthPass.js +228 -0
  170. package/dist/render/backend/webgpu/device.d.ts +52 -0
  171. package/dist/render/backend/webgpu/device.js +121 -0
  172. package/dist/render/backend/webgpu/drawCommand.d.ts +43 -0
  173. package/dist/render/backend/webgpu/drawCommand.js +54 -0
  174. package/dist/render/backend/webgpu/environmentTexels.d.ts +28 -0
  175. package/dist/render/backend/webgpu/environmentTexels.js +79 -0
  176. package/dist/render/backend/webgpu/filmPass.d.ts +29 -0
  177. package/dist/render/backend/webgpu/filmPass.js +97 -0
  178. package/dist/render/backend/webgpu/flatPass.d.ts +213 -0
  179. package/dist/render/backend/webgpu/flatPass.js +482 -0
  180. package/dist/render/backend/webgpu/flockPass.d.ts +34 -0
  181. package/dist/render/backend/webgpu/flockPass.js +129 -0
  182. package/dist/render/backend/webgpu/gpuTimestamps.d.ts +94 -0
  183. package/dist/render/backend/webgpu/gpuTimestamps.js +213 -0
  184. package/dist/render/backend/webgpu/insetPass.d.ts +19 -0
  185. package/dist/render/backend/webgpu/insetPass.js +108 -0
  186. package/dist/render/backend/webgpu/instanced.d.ts +27 -0
  187. package/dist/render/backend/webgpu/instanced.js +49 -0
  188. package/dist/render/backend/webgpu/lightVolumePass.d.ts +75 -0
  189. package/dist/render/backend/webgpu/lightVolumePass.js +154 -0
  190. package/dist/render/backend/webgpu/linePass.d.ts +90 -0
  191. package/dist/render/backend/webgpu/linePass.js +220 -0
  192. package/dist/render/backend/webgpu/morphTexture.d.ts +18 -0
  193. package/dist/render/backend/webgpu/morphTexture.js +51 -0
  194. package/dist/render/backend/webgpu/panelPass.d.ts +37 -0
  195. package/dist/render/backend/webgpu/panelPass.js +114 -0
  196. package/dist/render/backend/webgpu/particlePass.d.ts +89 -0
  197. package/dist/render/backend/webgpu/particlePass.js +280 -0
  198. package/dist/render/backend/webgpu/pipelineCache.d.ts +93 -0
  199. package/dist/render/backend/webgpu/pipelineCache.js +140 -0
  200. package/dist/render/backend/webgpu/plumePass.d.ts +69 -0
  201. package/dist/render/backend/webgpu/plumePass.js +213 -0
  202. package/dist/render/backend/webgpu/pointShadowPass.d.ts +88 -0
  203. package/dist/render/backend/webgpu/pointShadowPass.js +280 -0
  204. package/dist/render/backend/webgpu/postPass.d.ts +342 -0
  205. package/dist/render/backend/webgpu/postPass.js +366 -0
  206. package/dist/render/backend/webgpu/probePass.d.ts +108 -0
  207. package/dist/render/backend/webgpu/probePass.js +188 -0
  208. package/dist/render/backend/webgpu/reflectionPass.d.ts +29 -0
  209. package/dist/render/backend/webgpu/reflectionPass.js +87 -0
  210. package/dist/render/backend/webgpu/renderer.d.ts +3082 -0
  211. package/dist/render/backend/webgpu/renderer.js +10911 -0
  212. package/dist/render/backend/webgpu/scatterPass.d.ts +95 -0
  213. package/dist/render/backend/webgpu/scatterPass.js +266 -0
  214. package/dist/render/backend/webgpu/sdfTextPass.d.ts +86 -0
  215. package/dist/render/backend/webgpu/sdfTextPass.js +190 -0
  216. package/dist/render/backend/webgpu/shaderModules.d.ts +9 -0
  217. package/dist/render/backend/webgpu/shaderModules.js +45 -0
  218. package/dist/render/backend/webgpu/shaders/clusterBin.wgsl.d.ts +23 -0
  219. package/dist/render/backend/webgpu/shaders/clusterBin.wgsl.js +208 -0
  220. package/dist/render/backend/webgpu/skinPaletteRing.d.ts +67 -0
  221. package/dist/render/backend/webgpu/skinPaletteRing.js +97 -0
  222. package/dist/render/backend/webgpu/skinPaletteTexture.d.ts +17 -0
  223. package/dist/render/backend/webgpu/skinPaletteTexture.js +68 -0
  224. package/dist/render/backend/webgpu/skyPass.d.ts +102 -0
  225. package/dist/render/backend/webgpu/skyPass.js +70 -0
  226. package/dist/render/backend/webgpu/surfaceTexturePass.d.ts +41 -0
  227. package/dist/render/backend/webgpu/surfaceTexturePass.js +228 -0
  228. package/dist/render/backend/webgpu/textPass.d.ts +73 -0
  229. package/dist/render/backend/webgpu/textPass.js +190 -0
  230. package/dist/render/backend/webgpu/uniformRing.d.ts +133 -0
  231. package/dist/render/backend/webgpu/uniformRing.js +208 -0
  232. package/dist/render/backend/webgpu/waterPass.d.ts +73 -0
  233. package/dist/render/backend/webgpu/waterPass.js +160 -0
  234. package/dist/render/backend/webgpu/windStreakPass.d.ts +46 -0
  235. package/dist/render/backend/webgpu/windStreakPass.js +153 -0
  236. package/dist/render/billboard.d.ts +27 -0
  237. package/dist/render/billboard.js +79 -0
  238. package/dist/render/bloomChain.d.ts +66 -0
  239. package/dist/render/bloomChain.js +83 -0
  240. package/dist/render/bloomPass.d.ts +54 -0
  241. package/dist/render/bloomPass.js +219 -0
  242. package/dist/render/boltBatch.d.ts +39 -0
  243. package/dist/render/boltBatch.js +121 -0
  244. package/dist/render/boltPool.d.ts +135 -0
  245. package/dist/render/boltPool.js +259 -0
  246. package/dist/render/boom.d.ts +46 -0
  247. package/dist/render/boom.js +81 -0
  248. package/dist/render/camera.d.ts +119 -0
  249. package/dist/render/camera.js +304 -0
  250. package/dist/render/causticsRenderer.d.ts +63 -0
  251. package/dist/render/causticsRenderer.js +119 -0
  252. package/dist/render/cinematicCamera.d.ts +102 -0
  253. package/dist/render/cinematicCamera.js +227 -0
  254. package/dist/render/clusteredLights.d.ts +260 -0
  255. package/dist/render/clusteredLights.js +479 -0
  256. package/dist/render/colourGrade.d.ts +62 -0
  257. package/dist/render/colourGrade.js +91 -0
  258. package/dist/render/compute.d.ts +74 -0
  259. package/dist/render/compute.js +8 -0
  260. package/dist/render/contextLoss.d.ts +32 -0
  261. package/dist/render/contextLoss.js +46 -0
  262. package/dist/render/debugLines.d.ts +75 -0
  263. package/dist/render/debugLines.js +281 -0
  264. package/dist/render/decalPass.d.ts +34 -0
  265. package/dist/render/decalPass.js +103 -0
  266. package/dist/render/decalProjector.d.ts +140 -0
  267. package/dist/render/decalProjector.js +282 -0
  268. package/dist/render/decalQueue.d.ts +53 -0
  269. package/dist/render/decalQueue.js +87 -0
  270. package/dist/render/depthConvention.d.ts +314 -0
  271. package/dist/render/depthConvention.js +346 -0
  272. package/dist/render/drawingBuffer.d.ts +52 -0
  273. package/dist/render/drawingBuffer.js +67 -0
  274. package/dist/render/emptyTexture.d.ts +60 -0
  275. package/dist/render/emptyTexture.js +103 -0
  276. package/dist/render/envProbeArray.d.ts +85 -0
  277. package/dist/render/envProbeArray.js +164 -0
  278. package/dist/render/equirectToCube.d.ts +54 -0
  279. package/dist/render/equirectToCube.js +123 -0
  280. package/dist/render/flockGeometry.d.ts +23 -0
  281. package/dist/render/flockGeometry.js +43 -0
  282. package/dist/render/flockRenderer.d.ts +37 -0
  283. package/dist/render/flockRenderer.js +70 -0
  284. package/dist/render/frame/arena.d.ts +32 -0
  285. package/dist/render/frame/arena.js +65 -0
  286. package/dist/render/frame/index.d.ts +18 -0
  287. package/dist/render/frame/index.js +4 -0
  288. package/dist/render/frame/replay.d.ts +34 -0
  289. package/dist/render/frame/replay.js +48 -0
  290. package/dist/render/frame/resources.d.ts +25 -0
  291. package/dist/render/frame/resources.js +55 -0
  292. package/dist/render/frame/schedule.d.ts +37 -0
  293. package/dist/render/frame/schedule.js +61 -0
  294. package/dist/render/frameView.d.ts +19 -0
  295. package/dist/render/frameView.js +1 -0
  296. package/dist/render/gizmo.d.ts +236 -0
  297. package/dist/render/gizmo.js +727 -0
  298. package/dist/render/globalMedium.d.ts +124 -0
  299. package/dist/render/globalMedium.js +100 -0
  300. package/dist/render/globalMediumPass.d.ts +101 -0
  301. package/dist/render/globalMediumPass.js +250 -0
  302. package/dist/render/gpuCapability.d.ts +111 -0
  303. package/dist/render/gpuCapability.js +194 -0
  304. package/dist/render/gpuTimer.d.ts +87 -0
  305. package/dist/render/gpuTimer.js +145 -0
  306. package/dist/render/halfFloat.d.ts +4 -0
  307. package/dist/render/halfFloat.js +38 -0
  308. package/dist/render/handleRegistry.d.ts +54 -0
  309. package/dist/render/handleRegistry.js +84 -0
  310. package/dist/render/iesProfile.d.ts +64 -0
  311. package/dist/render/iesProfile.js +179 -0
  312. package/dist/render/imageTexels.d.ts +50 -0
  313. package/dist/render/imageTexels.js +91 -0
  314. package/dist/render/instancedMesh.d.ts +48 -0
  315. package/dist/render/instancedMesh.js +127 -0
  316. package/dist/render/instances.d.ts +69 -0
  317. package/dist/render/instances.js +52 -0
  318. package/dist/render/lightBudget.d.ts +397 -0
  319. package/dist/render/lightBudget.js +524 -0
  320. package/dist/render/lightMatrix.d.ts +3 -0
  321. package/dist/render/lightMatrix.js +45 -0
  322. package/dist/render/lightVolumeDraw.d.ts +132 -0
  323. package/dist/render/lightVolumeDraw.js +181 -0
  324. package/dist/render/lineBatch.d.ts +60 -0
  325. package/dist/render/lineBatch.js +160 -0
  326. package/dist/render/linePoints.d.ts +33 -0
  327. package/dist/render/linePoints.js +46 -0
  328. package/dist/render/livePointShadowSet.d.ts +72 -0
  329. package/dist/render/livePointShadowSet.js +258 -0
  330. package/dist/render/lod.d.ts +35 -0
  331. package/dist/render/lod.js +65 -0
  332. package/dist/render/mesh.d.ts +177 -0
  333. package/dist/render/mesh.js +466 -0
  334. package/dist/render/occlusion.d.ts +81 -0
  335. package/dist/render/occlusion.js +378 -0
  336. package/dist/render/oitPass.d.ts +67 -0
  337. package/dist/render/oitPass.js +213 -0
  338. package/dist/render/orderIndependent.d.ts +92 -0
  339. package/dist/render/orderIndependent.js +108 -0
  340. package/dist/render/particleBatch.d.ts +140 -0
  341. package/dist/render/particleBatch.js +186 -0
  342. package/dist/render/particleMaterial.d.ts +54 -0
  343. package/dist/render/particleMaterial.js +42 -0
  344. package/dist/render/particlePool.d.ts +124 -0
  345. package/dist/render/particlePool.js +182 -0
  346. package/dist/render/pass.d.ts +195 -0
  347. package/dist/render/pass.js +9 -0
  348. package/dist/render/passTarget.d.ts +86 -0
  349. package/dist/render/passTarget.js +121 -0
  350. package/dist/render/pickable.d.ts +31 -0
  351. package/dist/render/pickable.js +172 -0
  352. package/dist/render/planarReflection.d.ts +59 -0
  353. package/dist/render/planarReflection.js +194 -0
  354. package/dist/render/planarReflectionDraw.d.ts +31 -0
  355. package/dist/render/planarReflectionDraw.js +65 -0
  356. package/dist/render/plumeGeometry.d.ts +25 -0
  357. package/dist/render/plumeGeometry.js +61 -0
  358. package/dist/render/plumeMaterial.d.ts +31 -0
  359. package/dist/render/plumeMaterial.js +64 -0
  360. package/dist/render/plumeRenderer.d.ts +96 -0
  361. package/dist/render/plumeRenderer.js +185 -0
  362. package/dist/render/pointLightSelection.d.ts +175 -0
  363. package/dist/render/pointLightSelection.js +301 -0
  364. package/dist/render/pointShadowArray.d.ts +95 -0
  365. package/dist/render/pointShadowArray.js +219 -0
  366. package/dist/render/pointShadowBudget.d.ts +118 -0
  367. package/dist/render/pointShadowBudget.js +221 -0
  368. package/dist/render/pointShadowImage.d.ts +265 -0
  369. package/dist/render/pointShadowImage.js +339 -0
  370. package/dist/render/pointShadowMap.d.ts +93 -0
  371. package/dist/render/pointShadowMap.js +167 -0
  372. package/dist/render/pointShadowSystem.d.ts +195 -0
  373. package/dist/render/pointShadowSystem.js +336 -0
  374. package/dist/render/prefilterEnvMap.d.ts +124 -0
  375. package/dist/render/prefilterEnvMap.js +146 -0
  376. package/dist/render/prefilterPass.d.ts +44 -0
  377. package/dist/render/prefilterPass.js +98 -0
  378. package/dist/render/probeGrid.d.ts +122 -0
  379. package/dist/render/probeGrid.js +174 -0
  380. package/dist/render/rainField.d.ts +99 -0
  381. package/dist/render/rainField.js +168 -0
  382. package/dist/render/reflectionProbe.d.ts +188 -0
  383. package/dist/render/reflectionProbe.js +437 -0
  384. package/dist/render/renderQuality.d.ts +699 -0
  385. package/dist/render/renderQuality.js +293 -0
  386. package/dist/render/rendererHarness.d.ts +39 -0
  387. package/dist/render/rendererHarness.js +185 -0
  388. package/dist/render/resolutionGovernor.d.ts +107 -0
  389. package/dist/render/resolutionGovernor.js +144 -0
  390. package/dist/render/scatterDeform.d.ts +17 -0
  391. package/dist/render/scatterDeform.js +46 -0
  392. package/dist/render/sceneTarget.d.ts +288 -0
  393. package/dist/render/sceneTarget.js +856 -0
  394. package/dist/render/screenSpaceReflection.d.ts +233 -0
  395. package/dist/render/screenSpaceReflection.js +415 -0
  396. package/dist/render/sdfFont.d.ts +77 -0
  397. package/dist/render/sdfFont.js +86 -0
  398. package/dist/render/sdfTextLayout.d.ts +46 -0
  399. package/dist/render/sdfTextLayout.js +145 -0
  400. package/dist/render/sdfTextRenderer.d.ts +75 -0
  401. package/dist/render/sdfTextRenderer.js +194 -0
  402. package/dist/render/seaState.d.ts +25 -0
  403. package/dist/render/seaState.js +34 -0
  404. package/dist/render/segmentQuads.d.ts +29 -0
  405. package/dist/render/segmentQuads.js +75 -0
  406. package/dist/render/shader.d.ts +5 -0
  407. package/dist/render/shader.js +172 -0
  408. package/dist/render/shaders/ambientOcclusion.d.ts +45 -0
  409. package/dist/render/shaders/ambientOcclusion.js +352 -0
  410. package/dist/render/shaders/arcane.d.ts +19 -0
  411. package/dist/render/shaders/arcane.js +102 -0
  412. package/dist/render/shaders/bloom.d.ts +70 -0
  413. package/dist/render/shaders/bloom.js +227 -0
  414. package/dist/render/shaders/bolt.d.ts +17 -0
  415. package/dist/render/shaders/bolt.js +161 -0
  416. package/dist/render/shaders/caustics.d.ts +38 -0
  417. package/dist/render/shaders/caustics.js +167 -0
  418. package/dist/render/shaders/conditionals.d.ts +21 -0
  419. package/dist/render/shaders/conditionals.js +55 -0
  420. package/dist/render/shaders/decalProject.d.ts +25 -0
  421. package/dist/render/shaders/decalProject.js +125 -0
  422. package/dist/render/shaders/depth.d.ts +14 -0
  423. package/dist/render/shaders/depth.js +114 -0
  424. package/dist/render/shaders/depthOfField.d.ts +41 -0
  425. package/dist/render/shaders/depthOfField.js +139 -0
  426. package/dist/render/shaders/film.d.ts +15 -0
  427. package/dist/render/shaders/film.js +283 -0
  428. package/dist/render/shaders/fire.d.ts +12 -0
  429. package/dist/render/shaders/fire.js +178 -0
  430. package/dist/render/shaders/flat/directionalShadow.d.ts +1 -0
  431. package/dist/render/shaders/flat/directionalShadow.js +195 -0
  432. package/dist/render/shaders/flat/index.d.ts +135 -0
  433. package/dist/render/shaders/flat/index.js +387 -0
  434. package/dist/render/shaders/flat/lobes.d.ts +1 -0
  435. package/dist/render/shaders/flat/lobes.js +398 -0
  436. package/dist/render/shaders/flat/main.d.ts +2 -0
  437. package/dist/render/shaders/flat/main.js +1630 -0
  438. package/dist/render/shaders/flat/pointShadow.d.ts +1 -0
  439. package/dist/render/shaders/flat/pointShadow.js +322 -0
  440. package/dist/render/shaders/flat/preamble.d.ts +15 -0
  441. package/dist/render/shaders/flat/preamble.js +864 -0
  442. package/dist/render/shaders/flat/probeGrid.d.ts +21 -0
  443. package/dist/render/shaders/flat/probeGrid.js +151 -0
  444. package/dist/render/shaders/flat/surface.d.ts +2 -0
  445. package/dist/render/shaders/flat/surface.js +40 -0
  446. package/dist/render/shaders/flock.d.ts +11 -0
  447. package/dist/render/shaders/flock.js +102 -0
  448. package/dist/render/shaders/fog.d.ts +37 -0
  449. package/dist/render/shaders/fog.js +98 -0
  450. package/dist/render/shaders/fullscreen.d.ts +16 -0
  451. package/dist/render/shaders/fullscreen.js +27 -0
  452. package/dist/render/shaders/generated/ambientOcclusion.wgsl.d.ts +65 -0
  453. package/dist/render/shaders/generated/ambientOcclusion.wgsl.js +71 -0
  454. package/dist/render/shaders/generated/arcane.wgsl.d.ts +90 -0
  455. package/dist/render/shaders/generated/arcane.wgsl.js +96 -0
  456. package/dist/render/shaders/generated/bloom.wgsl.d.ts +69 -0
  457. package/dist/render/shaders/generated/bloom.wgsl.js +75 -0
  458. package/dist/render/shaders/generated/bolt.wgsl.d.ts +118 -0
  459. package/dist/render/shaders/generated/bolt.wgsl.js +124 -0
  460. package/dist/render/shaders/generated/caustics.wgsl.d.ts +118 -0
  461. package/dist/render/shaders/generated/caustics.wgsl.js +124 -0
  462. package/dist/render/shaders/generated/decalProject.wgsl.d.ts +61 -0
  463. package/dist/render/shaders/generated/decalProject.wgsl.js +67 -0
  464. package/dist/render/shaders/generated/depth.wgsl.d.ts +131 -0
  465. package/dist/render/shaders/generated/depth.wgsl.js +137 -0
  466. package/dist/render/shaders/generated/film.wgsl.d.ts +134 -0
  467. package/dist/render/shaders/generated/film.wgsl.js +140 -0
  468. package/dist/render/shaders/generated/fire.wgsl.d.ts +128 -0
  469. package/dist/render/shaders/generated/fire.wgsl.js +134 -0
  470. package/dist/render/shaders/generated/flat.wgsl.d.ts +9163 -0
  471. package/dist/render/shaders/generated/flat.wgsl.js +9192 -0
  472. package/dist/render/shaders/generated/flock.wgsl.d.ts +73 -0
  473. package/dist/render/shaders/generated/flock.wgsl.js +79 -0
  474. package/dist/render/shaders/generated/fullscreen.wgsl.d.ts +12 -0
  475. package/dist/render/shaders/generated/fullscreen.wgsl.js +18 -0
  476. package/dist/render/shaders/generated/globalMedium.wgsl.d.ts +130 -0
  477. package/dist/render/shaders/generated/globalMedium.wgsl.js +136 -0
  478. package/dist/render/shaders/generated/lightVolume.wgsl.d.ts +230 -0
  479. package/dist/render/shaders/generated/lightVolume.wgsl.js +239 -0
  480. package/dist/render/shaders/generated/line.wgsl.d.ts +128 -0
  481. package/dist/render/shaders/generated/line.wgsl.js +134 -0
  482. package/dist/render/shaders/generated/octahedralResolve.wgsl.d.ts +51 -0
  483. package/dist/render/shaders/generated/octahedralResolve.wgsl.js +57 -0
  484. package/dist/render/shaders/generated/oitResolve.wgsl.d.ts +23 -0
  485. package/dist/render/shaders/generated/oitResolve.wgsl.js +29 -0
  486. package/dist/render/shaders/generated/panel.wgsl.d.ts +48 -0
  487. package/dist/render/shaders/generated/panel.wgsl.js +54 -0
  488. package/dist/render/shaders/generated/particle.wgsl.d.ts +332 -0
  489. package/dist/render/shaders/generated/particle.wgsl.js +338 -0
  490. package/dist/render/shaders/generated/prefilter.wgsl.d.ts +61 -0
  491. package/dist/render/shaders/generated/prefilter.wgsl.js +67 -0
  492. package/dist/render/shaders/generated/rush.wgsl.d.ts +131 -0
  493. package/dist/render/shaders/generated/rush.wgsl.js +137 -0
  494. package/dist/render/shaders/generated/scatter.wgsl.d.ts +195 -0
  495. package/dist/render/shaders/generated/scatter.wgsl.js +201 -0
  496. package/dist/render/shaders/generated/sdfText.wgsl.d.ts +69 -0
  497. package/dist/render/shaders/generated/sdfText.wgsl.js +75 -0
  498. package/dist/render/shaders/generated/sky.wgsl.d.ts +100 -0
  499. package/dist/render/shaders/generated/sky.wgsl.js +106 -0
  500. package/dist/render/shaders/generated/smoke.wgsl.d.ts +85 -0
  501. package/dist/render/shaders/generated/smoke.wgsl.js +91 -0
  502. package/dist/render/shaders/generated/ssrResolve.wgsl.d.ts +18 -0
  503. package/dist/render/shaders/generated/ssrResolve.wgsl.js +24 -0
  504. package/dist/render/shaders/generated/ssrTrace.wgsl.d.ts +86 -0
  505. package/dist/render/shaders/generated/ssrTrace.wgsl.js +92 -0
  506. package/dist/render/shaders/generated/temporalResolve.wgsl.d.ts +46 -0
  507. package/dist/render/shaders/generated/temporalResolve.wgsl.js +52 -0
  508. package/dist/render/shaders/generated/text.wgsl.d.ts +98 -0
  509. package/dist/render/shaders/generated/text.wgsl.js +104 -0
  510. package/dist/render/shaders/generated/water.wgsl.d.ts +247 -0
  511. package/dist/render/shaders/generated/water.wgsl.js +253 -0
  512. package/dist/render/shaders/generated/windStreaks.wgsl.d.ts +73 -0
  513. package/dist/render/shaders/generated/windStreaks.wgsl.js +79 -0
  514. package/dist/render/shaders/gerstner.d.ts +21 -0
  515. package/dist/render/shaders/gerstner.js +110 -0
  516. package/dist/render/shaders/globalMedium.d.ts +56 -0
  517. package/dist/render/shaders/globalMedium.js +393 -0
  518. package/dist/render/shaders/lightVolume.d.ts +61 -0
  519. package/dist/render/shaders/lightVolume.js +527 -0
  520. package/dist/render/shaders/line.d.ts +18 -0
  521. package/dist/render/shaders/line.js +122 -0
  522. package/dist/render/shaders/morph.d.ts +26 -0
  523. package/dist/render/shaders/morph.js +61 -0
  524. package/dist/render/shaders/octahedral.d.ts +76 -0
  525. package/dist/render/shaders/octahedral.js +161 -0
  526. package/dist/render/shaders/octahedralResolve.d.ts +25 -0
  527. package/dist/render/shaders/octahedralResolve.js +81 -0
  528. package/dist/render/shaders/oitResolve.d.ts +17 -0
  529. package/dist/render/shaders/oitResolve.js +42 -0
  530. package/dist/render/shaders/outputTransform.d.ts +37 -0
  531. package/dist/render/shaders/outputTransform.js +106 -0
  532. package/dist/render/shaders/panel.d.ts +17 -0
  533. package/dist/render/shaders/panel.js +50 -0
  534. package/dist/render/shaders/particle.d.ts +82 -0
  535. package/dist/render/shaders/particle.js +431 -0
  536. package/dist/render/shaders/prefilter.d.ts +37 -0
  537. package/dist/render/shaders/prefilter.js +276 -0
  538. package/dist/render/shaders/rush.d.ts +21 -0
  539. package/dist/render/shaders/rush.js +355 -0
  540. package/dist/render/shaders/scatter.d.ts +14 -0
  541. package/dist/render/shaders/scatter.js +206 -0
  542. package/dist/render/shaders/sdfText.d.ts +9 -0
  543. package/dist/render/shaders/sdfText.js +65 -0
  544. package/dist/render/shaders/skinning.d.ts +17 -0
  545. package/dist/render/shaders/skinning.js +59 -0
  546. package/dist/render/shaders/sky.d.ts +10 -0
  547. package/dist/render/shaders/sky.js +242 -0
  548. package/dist/render/shaders/smoke.d.ts +8 -0
  549. package/dist/render/shaders/smoke.js +88 -0
  550. package/dist/render/shaders/ssrResolve.d.ts +15 -0
  551. package/dist/render/shaders/ssrResolve.js +28 -0
  552. package/dist/render/shaders/ssrTrace.d.ts +22 -0
  553. package/dist/render/shaders/ssrTrace.js +230 -0
  554. package/dist/render/shaders/tangentFrame.d.ts +17 -0
  555. package/dist/render/shaders/tangentFrame.js +70 -0
  556. package/dist/render/shaders/temporalResolve.d.ts +1 -0
  557. package/dist/render/shaders/temporalResolve.js +150 -0
  558. package/dist/render/shaders/text.d.ts +17 -0
  559. package/dist/render/shaders/text.js +155 -0
  560. package/dist/render/shaders/vertexChannel.d.ts +39 -0
  561. package/dist/render/shaders/vertexChannel.js +69 -0
  562. package/dist/render/shaders/water.d.ts +18 -0
  563. package/dist/render/shaders/water.js +354 -0
  564. package/dist/render/shaders/windStreaks.d.ts +14 -0
  565. package/dist/render/shaders/windStreaks.js +129 -0
  566. package/dist/render/shadowCasters.d.ts +107 -0
  567. package/dist/render/shadowCasters.js +1 -0
  568. package/dist/render/shadowMap.d.ts +10 -0
  569. package/dist/render/shadowMap.js +80 -0
  570. package/dist/render/shotPlacement.d.ts +80 -0
  571. package/dist/render/shotPlacement.js +183 -0
  572. package/dist/render/skinPalette.d.ts +90 -0
  573. package/dist/render/skinPalette.js +136 -0
  574. package/dist/render/ssrPass.d.ts +59 -0
  575. package/dist/render/ssrPass.js +196 -0
  576. package/dist/render/surfaceSheet.d.ts +52 -0
  577. package/dist/render/surfaceSheet.js +99 -0
  578. package/dist/render/surfaceTexture.d.ts +197 -0
  579. package/dist/render/surfaceTexture.js +116 -0
  580. package/dist/render/temporalAa.d.ts +104 -0
  581. package/dist/render/temporalAa.js +194 -0
  582. package/dist/render/temporalPass.d.ts +54 -0
  583. package/dist/render/temporalPass.js +135 -0
  584. package/dist/render/textLayout.d.ts +88 -0
  585. package/dist/render/textLayout.js +201 -0
  586. package/dist/render/textRenderer.d.ts +32 -0
  587. package/dist/render/textRenderer.js +176 -0
  588. package/dist/render/thirdPersonCamera.d.ts +272 -0
  589. package/dist/render/thirdPersonCamera.js +479 -0
  590. package/dist/render/trample.d.ts +57 -0
  591. package/dist/render/trample.js +134 -0
  592. package/dist/render/translucentQueue.d.ts +76 -0
  593. package/dist/render/translucentQueue.js +90 -0
  594. package/dist/render/uniformVectorBudget.d.ts +105 -0
  595. package/dist/render/uniformVectorBudget.js +201 -0
  596. package/dist/render/uploadStep.d.ts +14 -0
  597. package/dist/render/uploadStep.js +14 -0
  598. package/dist/render/vertexDefaults.d.ts +48 -0
  599. package/dist/render/vertexDefaults.js +111 -0
  600. package/dist/render/visibility.d.ts +22 -0
  601. package/dist/render/visibility.js +47 -0
  602. package/dist/render/waterDraw.d.ts +57 -0
  603. package/dist/render/waterDraw.js +102 -0
  604. package/dist/render/waterGrid.d.ts +62 -0
  605. package/dist/render/waterGrid.js +151 -0
  606. package/dist/render/waterRenderer.d.ts +163 -0
  607. package/dist/render/waterRenderer.js +165 -0
  608. package/dist/render/wind.d.ts +45 -0
  609. package/dist/render/wind.js +32 -0
  610. package/dist/render/windField.d.ts +34 -0
  611. package/dist/render/windField.js +13 -0
  612. package/dist/render/windStreakDraw.d.ts +73 -0
  613. package/dist/render/windStreakDraw.js +86 -0
  614. package/dist/render/windStreakRenderer.d.ts +37 -0
  615. package/dist/render/windStreakRenderer.js +86 -0
  616. package/dist/scene/node.d.ts +128 -0
  617. package/dist/scene/node.js +319 -0
  618. package/dist/scene/visit.d.ts +38 -0
  619. package/dist/scene/visit.js +43 -0
  620. package/dist/ui/clipMime.d.ts +46 -0
  621. package/dist/ui/clipMime.js +88 -0
  622. package/dist/ui/exportTarget.d.ts +305 -0
  623. package/dist/ui/exportTarget.js +368 -0
  624. package/dist/ui/frameOverlay.d.ts +59 -0
  625. package/dist/ui/frameOverlay.js +76 -0
  626. package/dist/ui/framePacer.d.ts +142 -0
  627. package/dist/ui/framePacer.js +284 -0
  628. package/dist/ui/frameRecorder.d.ts +188 -0
  629. package/dist/ui/frameRecorder.js +221 -0
  630. package/dist/ui/fullscreen.d.ts +72 -0
  631. package/dist/ui/fullscreen.js +92 -0
  632. package/dist/ui/pixelCursor.d.ts +28 -0
  633. package/dist/ui/pixelCursor.js +66 -0
  634. package/dist/ui/splash.d.ts +86 -0
  635. package/dist/ui/splash.js +300 -0
  636. package/dist/ui/stillFrame.d.ts +22 -0
  637. package/dist/ui/stillFrame.js +40 -0
  638. package/package.json +60 -0
  639. package/src/behavior/behaviorTree.ts +346 -0
  640. package/src/build/shaderComments.ts +0 -0
  641. package/src/cinematic/player.ts +209 -0
  642. package/src/cinematic/script.ts +231 -0
  643. package/src/core/bootGate.ts +49 -0
  644. package/src/core/loadTracker.ts +144 -0
  645. package/src/core/loop.ts +211 -0
  646. package/src/core/messageQueue.ts +145 -0
  647. package/src/core/onceSet.ts +65 -0
  648. package/src/core/preferences.ts +177 -0
  649. package/src/core/remoteSave.ts +347 -0
  650. package/src/core/rng.ts +101 -0
  651. package/src/core/stepBudget.ts +136 -0
  652. package/src/core/storage.ts +114 -0
  653. package/src/core/tickTrace.ts +129 -0
  654. package/src/core/timeCurve.ts +175 -0
  655. package/src/core/withDefaults.ts +28 -0
  656. package/src/dev/contactProbe.ts +115 -0
  657. package/src/dev/fpsMeter.ts +101 -0
  658. package/src/environment/celestialClock.ts +385 -0
  659. package/src/geometry/decal.ts +260 -0
  660. package/src/geometry/filmPatch.ts +158 -0
  661. package/src/geometry/growable.ts +165 -0
  662. package/src/geometry/lightVolume.ts +161 -0
  663. package/src/geometry/meshBuilder.ts +1397 -0
  664. package/src/geometry/pixelFont.ts +189 -0
  665. package/src/geometry/ribbon.ts +790 -0
  666. package/src/geometry/shellFill.ts +265 -0
  667. package/src/geometry/spline.ts +659 -0
  668. package/src/geometry/tangents.ts +173 -0
  669. package/src/geometry/textMesh.ts +96 -0
  670. package/src/geometry/treeBuilder.ts +114 -0
  671. package/src/host/display.ts +180 -0
  672. package/src/host/files.ts +77 -0
  673. package/src/host/lifecycle.ts +63 -0
  674. package/src/host/platformServices.ts +23 -0
  675. package/src/host/screen.ts +134 -0
  676. package/src/index.ts +730 -0
  677. package/src/input/actionMap.ts +377 -0
  678. package/src/input/activeDevice.ts +86 -0
  679. package/src/input/gamepadIdentity.ts +131 -0
  680. package/src/input/gamepadMapping.ts +121 -0
  681. package/src/input/input.ts +872 -0
  682. package/src/input/inputHarness.ts +226 -0
  683. package/src/input/rightGesture.ts +76 -0
  684. package/src/input/rumble.ts +138 -0
  685. package/src/input/touchControls.ts +451 -0
  686. package/src/input/typingTarget.ts +26 -0
  687. package/src/math/bounds.ts +153 -0
  688. package/src/math/color.ts +37 -0
  689. package/src/math/exact.ts +274 -0
  690. package/src/math/frustum.ts +115 -0
  691. package/src/math/intersect.ts +228 -0
  692. package/src/math/scalar.ts +109 -0
  693. package/src/math/spring.ts +106 -0
  694. package/src/nav/navGraph.ts +168 -0
  695. package/src/nav/navPath.ts +217 -0
  696. package/src/nav/navSearch.ts +200 -0
  697. package/src/physics/boxSurface.ts +96 -0
  698. package/src/physics/colliderSurface.ts +213 -0
  699. package/src/physics/compositeSurface.ts +111 -0
  700. package/src/physics/heightSurface.ts +234 -0
  701. package/src/physics/ribbonSurface.ts +642 -0
  702. package/src/render/ambientOcclusionPass.ts +200 -0
  703. package/src/render/areaLights.ts +194 -0
  704. package/src/render/areaShadowSet.ts +405 -0
  705. package/src/render/atmosphere.ts +186 -0
  706. package/src/render/backend/api.ts +802 -0
  707. package/src/render/backend/budget.ts +139 -0
  708. package/src/render/backend/createRenderer.ts +343 -0
  709. package/src/render/backend/deadline.ts +37 -0
  710. package/src/render/backend/probe.ts +152 -0
  711. package/src/render/backend/select.ts +288 -0
  712. package/src/render/backend/timer.ts +59 -0
  713. package/src/render/backend/webgl2/instanced.ts +46 -0
  714. package/src/render/backend/webgl2/morphTexture.ts +58 -0
  715. package/src/render/backend/webgl2/renderer.ts +7484 -0
  716. package/src/render/backend/webgl2/skinPaletteTexture.ts +70 -0
  717. package/src/render/backend/webgpu/boltPass.ts +205 -0
  718. package/src/render/backend/webgpu/buffers.ts +553 -0
  719. package/src/render/backend/webgpu/causticsPass.ts +174 -0
  720. package/src/render/backend/webgpu/clusterBinner.ts +259 -0
  721. package/src/render/backend/webgpu/depthPass.ts +261 -0
  722. package/src/render/backend/webgpu/device.ts +148 -0
  723. package/src/render/backend/webgpu/drawCommand.ts +79 -0
  724. package/src/render/backend/webgpu/environmentTexels.ts +96 -0
  725. package/src/render/backend/webgpu/filmPass.ts +123 -0
  726. package/src/render/backend/webgpu/flatPass.ts +635 -0
  727. package/src/render/backend/webgpu/flockPass.ts +163 -0
  728. package/src/render/backend/webgpu/gpuTimestamps.ts +255 -0
  729. package/src/render/backend/webgpu/insetPass.ts +123 -0
  730. package/src/render/backend/webgpu/instanced.ts +55 -0
  731. package/src/render/backend/webgpu/lightVolumePass.ts +203 -0
  732. package/src/render/backend/webgpu/linePass.ts +270 -0
  733. package/src/render/backend/webgpu/morphTexture.ts +61 -0
  734. package/src/render/backend/webgpu/panelPass.ts +138 -0
  735. package/src/render/backend/webgpu/particlePass.ts +370 -0
  736. package/src/render/backend/webgpu/pipelineCache.ts +152 -0
  737. package/src/render/backend/webgpu/plumePass.ts +292 -0
  738. package/src/render/backend/webgpu/pointShadowPass.ts +368 -0
  739. package/src/render/backend/webgpu/postPass.ts +470 -0
  740. package/src/render/backend/webgpu/probePass.ts +218 -0
  741. package/src/render/backend/webgpu/reflectionPass.ts +137 -0
  742. package/src/render/backend/webgpu/renderer.ts +13004 -0
  743. package/src/render/backend/webgpu/scatterPass.ts +354 -0
  744. package/src/render/backend/webgpu/sdfTextPass.ts +220 -0
  745. package/src/render/backend/webgpu/shaderModules.ts +49 -0
  746. package/src/render/backend/webgpu/shaders/clusterBin.wgsl.ts +219 -0
  747. package/src/render/backend/webgpu/skinPaletteRing.ts +105 -0
  748. package/src/render/backend/webgpu/skinPaletteTexture.ts +79 -0
  749. package/src/render/backend/webgpu/skyPass.ts +85 -0
  750. package/src/render/backend/webgpu/surfaceTexturePass.ts +257 -0
  751. package/src/render/backend/webgpu/textPass.ts +224 -0
  752. package/src/render/backend/webgpu/uniformRing.ts +228 -0
  753. package/src/render/backend/webgpu/waterPass.ts +211 -0
  754. package/src/render/backend/webgpu/windStreakPass.ts +196 -0
  755. package/src/render/billboard.ts +108 -0
  756. package/src/render/bloomChain.ts +101 -0
  757. package/src/render/bloomPass.ts +256 -0
  758. package/src/render/boltBatch.ts +141 -0
  759. package/src/render/boltPool.ts +360 -0
  760. package/src/render/boom.ts +123 -0
  761. package/src/render/camera.ts +348 -0
  762. package/src/render/causticsRenderer.ts +171 -0
  763. package/src/render/cinematicCamera.ts +278 -0
  764. package/src/render/clusteredLights.ts +598 -0
  765. package/src/render/colourGrade.ts +109 -0
  766. package/src/render/compute.ts +83 -0
  767. package/src/render/contextLoss.ts +50 -0
  768. package/src/render/debugLines.ts +411 -0
  769. package/src/render/decalPass.ts +124 -0
  770. package/src/render/decalProjector.ts +390 -0
  771. package/src/render/decalQueue.ts +110 -0
  772. package/src/render/depthConvention.ts +383 -0
  773. package/src/render/drawingBuffer.ts +89 -0
  774. package/src/render/emptyTexture.ts +130 -0
  775. package/src/render/envProbeArray.ts +201 -0
  776. package/src/render/equirectToCube.ts +160 -0
  777. package/src/render/flockGeometry.ts +53 -0
  778. package/src/render/flockRenderer.ts +111 -0
  779. package/src/render/frame/arena.ts +93 -0
  780. package/src/render/frame/index.ts +29 -0
  781. package/src/render/frame/replay.ts +50 -0
  782. package/src/render/frame/resources.ts +61 -0
  783. package/src/render/frame/schedule.ts +85 -0
  784. package/src/render/frameView.ts +20 -0
  785. package/src/render/gizmo.ts +923 -0
  786. package/src/render/globalMedium.ts +154 -0
  787. package/src/render/globalMediumPass.ts +323 -0
  788. package/src/render/gpuCapability.ts +244 -0
  789. package/src/render/gpuTimer.ts +182 -0
  790. package/src/render/halfFloat.ts +39 -0
  791. package/src/render/handleRegistry.ts +96 -0
  792. package/src/render/iesProfile.ts +215 -0
  793. package/src/render/imageTexels.ts +109 -0
  794. package/src/render/instancedMesh.ts +187 -0
  795. package/src/render/instances.ts +92 -0
  796. package/src/render/lightBudget.ts +655 -0
  797. package/src/render/lightMatrix.ts +69 -0
  798. package/src/render/lightVolumeDraw.ts +216 -0
  799. package/src/render/lineBatch.ts +180 -0
  800. package/src/render/linePoints.ts +61 -0
  801. package/src/render/livePointShadowSet.ts +285 -0
  802. package/src/render/lod.ts +86 -0
  803. package/src/render/mesh.ts +536 -0
  804. package/src/render/occlusion.ts +406 -0
  805. package/src/render/oitPass.ts +230 -0
  806. package/src/render/orderIndependent.ts +136 -0
  807. package/src/render/particleBatch.ts +299 -0
  808. package/src/render/particleMaterial.ts +84 -0
  809. package/src/render/particlePool.ts +291 -0
  810. package/src/render/pass.ts +203 -0
  811. package/src/render/passTarget.ts +225 -0
  812. package/src/render/pickable.ts +222 -0
  813. package/src/render/planarReflection.ts +233 -0
  814. package/src/render/planarReflectionDraw.ts +87 -0
  815. package/src/render/plumeGeometry.ts +75 -0
  816. package/src/render/plumeMaterial.ts +99 -0
  817. package/src/render/plumeRenderer.ts +272 -0
  818. package/src/render/pointLightSelection.ts +447 -0
  819. package/src/render/pointShadowArray.ts +276 -0
  820. package/src/render/pointShadowBudget.ts +305 -0
  821. package/src/render/pointShadowImage.ts +470 -0
  822. package/src/render/pointShadowMap.ts +228 -0
  823. package/src/render/pointShadowSystem.ts +408 -0
  824. package/src/render/prefilterEnvMap.ts +162 -0
  825. package/src/render/prefilterPass.ts +115 -0
  826. package/src/render/probeGrid.ts +248 -0
  827. package/src/render/rainField.ts +240 -0
  828. package/src/render/reflectionProbe.ts +530 -0
  829. package/src/render/renderQuality.ts +1054 -0
  830. package/src/render/rendererHarness.ts +214 -0
  831. package/src/render/resolutionGovernor.ts +189 -0
  832. package/src/render/scatterDeform.ts +72 -0
  833. package/src/render/sceneTarget.ts +1032 -0
  834. package/src/render/screenSpaceReflection.ts +524 -0
  835. package/src/render/sdfFont.ts +157 -0
  836. package/src/render/sdfTextLayout.ts +206 -0
  837. package/src/render/sdfTextRenderer.ts +233 -0
  838. package/src/render/seaState.ts +55 -0
  839. package/src/render/segmentQuads.ts +92 -0
  840. package/src/render/shader.ts +190 -0
  841. package/src/render/shaders/ambientOcclusion.ts +354 -0
  842. package/src/render/shaders/arcane.ts +103 -0
  843. package/src/render/shaders/bloom.ts +232 -0
  844. package/src/render/shaders/bolt.ts +164 -0
  845. package/src/render/shaders/caustics.ts +169 -0
  846. package/src/render/shaders/conditionals.ts +58 -0
  847. package/src/render/shaders/decalProject.ts +127 -0
  848. package/src/render/shaders/depth.ts +131 -0
  849. package/src/render/shaders/depthOfField.ts +141 -0
  850. package/src/render/shaders/film.ts +285 -0
  851. package/src/render/shaders/fire.ts +180 -0
  852. package/src/render/shaders/flat/directionalShadow.ts +196 -0
  853. package/src/render/shaders/flat/index.ts +502 -0
  854. package/src/render/shaders/flat/lobes.ts +399 -0
  855. package/src/render/shaders/flat/main.ts +1631 -0
  856. package/src/render/shaders/flat/pointShadow.ts +323 -0
  857. package/src/render/shaders/flat/preamble.ts +875 -0
  858. package/src/render/shaders/flat/probeGrid.ts +152 -0
  859. package/src/render/shaders/flat/surface.ts +41 -0
  860. package/src/render/shaders/flock.ts +103 -0
  861. package/src/render/shaders/fog.ts +99 -0
  862. package/src/render/shaders/fullscreen.ts +28 -0
  863. package/src/render/shaders/generated/ambientOcclusion.wgsl.ts +74 -0
  864. package/src/render/shaders/generated/arcane.wgsl.ts +98 -0
  865. package/src/render/shaders/generated/bloom.wgsl.ts +79 -0
  866. package/src/render/shaders/generated/bolt.wgsl.ts +127 -0
  867. package/src/render/shaders/generated/caustics.wgsl.ts +127 -0
  868. package/src/render/shaders/generated/decalProject.wgsl.ts +69 -0
  869. package/src/render/shaders/generated/depth.wgsl.ts +142 -0
  870. package/src/render/shaders/generated/film.wgsl.ts +143 -0
  871. package/src/render/shaders/generated/fire.wgsl.ts +137 -0
  872. package/src/render/shaders/generated/flat.wgsl.ts +9195 -0
  873. package/src/render/shaders/generated/flock.wgsl.ts +82 -0
  874. package/src/render/shaders/generated/fullscreen.wgsl.ts +20 -0
  875. package/src/render/shaders/generated/globalMedium.wgsl.ts +139 -0
  876. package/src/render/shaders/generated/lightVolume.wgsl.ts +242 -0
  877. package/src/render/shaders/generated/line.wgsl.ts +137 -0
  878. package/src/render/shaders/generated/octahedralResolve.wgsl.ts +60 -0
  879. package/src/render/shaders/generated/oitResolve.wgsl.ts +31 -0
  880. package/src/render/shaders/generated/panel.wgsl.ts +57 -0
  881. package/src/render/shaders/generated/particle.wgsl.ts +343 -0
  882. package/src/render/shaders/generated/prefilter.wgsl.ts +69 -0
  883. package/src/render/shaders/generated/rush.wgsl.ts +139 -0
  884. package/src/render/shaders/generated/scatter.wgsl.ts +205 -0
  885. package/src/render/shaders/generated/sdfText.wgsl.ts +78 -0
  886. package/src/render/shaders/generated/sky.wgsl.ts +109 -0
  887. package/src/render/shaders/generated/smoke.wgsl.ts +93 -0
  888. package/src/render/shaders/generated/ssrResolve.wgsl.ts +26 -0
  889. package/src/render/shaders/generated/ssrTrace.wgsl.ts +94 -0
  890. package/src/render/shaders/generated/temporalResolve.wgsl.ts +54 -0
  891. package/src/render/shaders/generated/text.wgsl.ts +107 -0
  892. package/src/render/shaders/generated/water.wgsl.ts +256 -0
  893. package/src/render/shaders/generated/windStreaks.wgsl.ts +82 -0
  894. package/src/render/shaders/gerstner.ts +110 -0
  895. package/src/render/shaders/globalMedium.ts +396 -0
  896. package/src/render/shaders/lightVolume.ts +546 -0
  897. package/src/render/shaders/line.ts +125 -0
  898. package/src/render/shaders/morph.ts +62 -0
  899. package/src/render/shaders/octahedral.ts +170 -0
  900. package/src/render/shaders/octahedralResolve.ts +83 -0
  901. package/src/render/shaders/oitResolve.ts +42 -0
  902. package/src/render/shaders/outputTransform.ts +107 -0
  903. package/src/render/shaders/panel.ts +51 -0
  904. package/src/render/shaders/particle.ts +438 -0
  905. package/src/render/shaders/prefilter.ts +278 -0
  906. package/src/render/shaders/rush.ts +357 -0
  907. package/src/render/shaders/scatter.ts +211 -0
  908. package/src/render/shaders/sdfText.ts +68 -0
  909. package/src/render/shaders/skinning.ts +59 -0
  910. package/src/render/shaders/sky.ts +243 -0
  911. package/src/render/shaders/smoke.ts +89 -0
  912. package/src/render/shaders/ssrResolve.ts +28 -0
  913. package/src/render/shaders/ssrTrace.ts +233 -0
  914. package/src/render/shaders/tangentFrame.ts +70 -0
  915. package/src/render/shaders/temporalResolve.ts +151 -0
  916. package/src/render/shaders/text.ts +156 -0
  917. package/src/render/shaders/vertexChannel.ts +71 -0
  918. package/src/render/shaders/water.ts +356 -0
  919. package/src/render/shaders/windStreaks.ts +130 -0
  920. package/src/render/shadowCasters.ts +124 -0
  921. package/src/render/shadowMap.ts +89 -0
  922. package/src/render/shotPlacement.ts +266 -0
  923. package/src/render/skinPalette.ts +157 -0
  924. package/src/render/ssrPass.ts +241 -0
  925. package/src/render/surfaceSheet.ts +158 -0
  926. package/src/render/surfaceTexture.ts +310 -0
  927. package/src/render/temporalAa.ts +221 -0
  928. package/src/render/temporalPass.ts +153 -0
  929. package/src/render/textLayout.ts +239 -0
  930. package/src/render/textRenderer.ts +201 -0
  931. package/src/render/thirdPersonCamera.ts +578 -0
  932. package/src/render/trample.ts +140 -0
  933. package/src/render/translucentQueue.ts +161 -0
  934. package/src/render/uniformVectorBudget.ts +246 -0
  935. package/src/render/uploadStep.ts +14 -0
  936. package/src/render/vertexDefaults.ts +115 -0
  937. package/src/render/visibility.ts +56 -0
  938. package/src/render/waterDraw.ts +167 -0
  939. package/src/render/waterGrid.ts +180 -0
  940. package/src/render/waterRenderer.ts +352 -0
  941. package/src/render/wind.ts +79 -0
  942. package/src/render/windField.ts +50 -0
  943. package/src/render/windStreakDraw.ts +131 -0
  944. package/src/render/windStreakRenderer.ts +130 -0
  945. package/src/scene/node.ts +336 -0
  946. package/src/scene/visit.ts +82 -0
  947. package/src/ui/clipMime.ts +109 -0
  948. package/src/ui/exportTarget.ts +491 -0
  949. package/src/ui/frameOverlay.ts +159 -0
  950. package/src/ui/framePacer.ts +351 -0
  951. package/src/ui/frameRecorder.ts +333 -0
  952. package/src/ui/fullscreen.ts +113 -0
  953. package/src/ui/pixelCursor.ts +99 -0
  954. package/src/ui/splash.ts +347 -0
  955. package/src/ui/stillFrame.ts +44 -0
package/dist/index.js ADDED
@@ -0,0 +1,320 @@
1
+ /*! DriftEngine | Copyright 2026 Drift Technologies | Apache-2.0 | https://github.com/drftrun/driftengine */
2
+ /** Public engine surface. Game code imports from '@driftengine/core' only. */
3
+ export { startLoop } from './core/loop.js';
4
+ export { StepBudget } from './core/stepBudget.js';
5
+ export { hashToUnit, mulberry32, pickBySeed, savableMulberry32 } from './core/rng.js';
6
+ export { exactAcos, exactCos, exactExp, exactSin } from './math/exact.js';
7
+ export { TickTrace } from './core/tickTrace.js';
8
+ export { BrowserStore, MemoryStore, defaultStore } from './core/storage.js';
9
+ /* The same seam over a backend that answers later, with the queue, the retry and the status. */
10
+ export { RemoteSaveStore, defaultSaveTimer } from './core/remoteSave.js';
11
+ /*
12
+ * The rest of the capability seam, on `KeyValueStore`'s pattern and for its reason: the engine
13
+ * declares what it needs and a host supplies it, so nothing under `src/` ever names a shell.
14
+ *
15
+ * The browser implementations are exported beside the interfaces because a consumer in a browser
16
+ * is a consumer with a host — an ordinary one — and should not have to write `BrowserDisplay`
17
+ * itself. `PlatformServices` has no default implementation on purpose: there is nothing honest a
18
+ * browser can do with an achievement, and a consumer that never asks for one ships nothing.
19
+ */
20
+ export { BrowserDisplay } from './host/display.js';
21
+ /*
22
+ * What a phone has instead of a window: an orientation, a safe area and a screen that sleeps.
23
+ * Separate from `DisplayControl` because a desktop shell has no use for it and a phone has no use
24
+ * for most of that — and public, because a game's own settings menu is what calls it.
25
+ */
26
+ export { BrowserScreenPresentation } from './host/screen.js';
27
+ export { BrowserLifecycle } from './host/lifecycle.js';
28
+ export { BrowserFileDialogs } from './host/files.js';
29
+ export { PreferenceStore, loadPreferences, savePreferences } from './core/preferences.js';
30
+ export { OnceSet } from './core/onceSet.js';
31
+ export { MAX_TIME_CURVE_AMOUNT, curveOffsetSec, curveSpanSec, linearCurve, timeCurve, } from './core/timeCurve.js';
32
+ export { CinematicPlayer } from './cinematic/player.js';
33
+ export { defineCinematic, validateCinematic } from './cinematic/script.js';
34
+ export { MessageQueue } from './core/messageQueue.js';
35
+ export { celestialStateAt, createCelestialState, moonIllumination, } from './environment/celestialClock.js';
36
+ export { TAU, DEG_TO_RAD, clamp, lerp, smoothstep, damp, dampTracking, angleDelta, dampAngle, wrapAngle, lerpAngle, } from './math/scalar.js';
37
+ export { hslToRgb, mixColor, mixColorInto, scaleColor } from './math/color.js';
38
+ export { Camera } from './render/camera.js';
39
+ export { ThirdPersonCamera } from './render/thirdPersonCamera.js';
40
+ export { CinematicCamera } from './render/cinematicCamera.js';
41
+ /*
42
+ * The arm's own timings, so a rig with a short boom can say so.
43
+ *
44
+ * `Boom` itself is exported because it is the one implementation of "shorten against geometry, but
45
+ * gradually" and a consumer with its own rig should use it rather than write a third — which is the
46
+ * argument its own header makes about the two that already existed.
47
+ */
48
+ export { Boom, DEFAULT_BOOM_TIMING } from './render/boom.js';
49
+ export { billboardMatrix, billboardMatrixY } from './render/billboard.js';
50
+ export { Mesh } from './render/mesh.js';
51
+ export { UPLOAD_BYTES_PER_STEP } from './render/uploadStep.js';
52
+ export { MAX_DEPTH_LAYER, Renderer, WebGL2Renderer } from './render/backend/webgl2/renderer.js';
53
+ /*
54
+ * **The class as well as its two types, from 2026-09-03.** Every renderer holds one and
55
+ * exposes it through `registerPickable` and `pickAt`, so picking has been reachable since
56
+ * it shipped — but only against the set a renderer owns. A consumer that wants a second
57
+ * set, over gizmo handles or over anything a renderer never draws, had the types to
58
+ * describe one and no way to build it.
59
+ */
60
+ export { PickableSet } from './render/pickable.js';
61
+ /* How big a piece of geometry is, which everything that culls or picks a detail level starts from. */
62
+ export { boundsOfBox, boundsOfPositions, createBounds } from './math/bounds.js';
63
+ export { createFrustum, frustumFromViewProjection, sphereInFrustum } from './math/frustum.js';
64
+ export { boundsVisible } from './render/visibility.js';
65
+ export { apparentSize, lodForBounds } from './render/lod.js';
66
+ /* A transform hierarchy. Additive: nothing in the renderer knows a node exists. */
67
+ export { SceneNode } from './scene/node.js';
68
+ export { MAX_JOINTS, MAX_MORPH_TARGETS, SKIN_PALETTE_TEXTURE_UNIT, morphTexelIndex, paletteTextureWidth, } from './render/skinPalette.js';
69
+ export { createVisitResult, visitVisible } from './scene/visit.js';
70
+ export { createPassAttachment } from './render/passTarget.js';
71
+ export { OcclusionBuffer } from './render/occlusion.js';
72
+ /*
73
+ * `Renderer` above stays exported and is not deprecated. `createRenderer` is the way to get
74
+ * whichever backend a browser will give you, and it is asynchronous because asking for a
75
+ * WebGPU adapter is; a consumer that does not want an await in its boot has no reason to
76
+ * take one.
77
+ */
78
+ export { createRenderer } from './render/backend/createRenderer.js';
79
+ /*
80
+ * The acceptance probe, exported because a consumer may want to ask the question itself — an
81
+ * editor deciding whether to offer a backend, a shell deciding what to tell the player — and
82
+ * because `demo/dev/backend-probe.html` drives it the way a consumer would rather than by
83
+ * reaching past the barrel into `src/render/`.
84
+ */
85
+ /*
86
+ * The colour grade: a lookup table over display values, applied at the composite.
87
+ *
88
+ * `identityGradeLut` is exported because it is where a consumer building one by hand starts —
89
+ * take the identity, bend it, hand it back — and because it is what the placeholder is.
90
+ */
91
+ export { GRADE_PLACEHOLDER_SIZE, MAX_GRADE_SIZE, identityGradeLut } from './render/colourGrade.js';
92
+ export { probeDevice } from './render/backend/probe.js';
93
+ /*
94
+ * Reading an image's texels back exactly, which no canvas and no `VideoFrame` will do.
95
+ *
96
+ * Here rather than in the package that needed it — `@driftengine/splats`, for `.sog` captures whose
97
+ * images are lookups rather than pictures — because it is raw WebGL and `AGENTS.md` allows that
98
+ * only under `render/`. The module's own header carries the measurement.
99
+ */
100
+ export { createImageTexelDecoder } from './render/imageTexels.js';
101
+ export { DEFAULT_RENDER_QUALITY, resolveRenderQuality } from './render/renderQuality.js';
102
+ /**
103
+ * The global medium's own arithmetic, so a consumer can clamp its numbers the way the engine will.
104
+ *
105
+ * The pass itself is not exported and should not be: `setGlobalMedium` is the whole surface, and a
106
+ * consumer holding a `GlobalMediumPass` would own a target the renderer already owns. What is here
107
+ * is the type the setter takes and the two bounds a settings screen has to know about.
108
+ */
109
+ export { DEFAULT_GLOBAL_MEDIUM, MAX_GLOBAL_MEDIUM_STEPS, WEAK_GPU_MEDIUM_STEPS, resolveGlobalMedium, } from './render/globalMedium.js';
110
+ /*
111
+ * Equirectangular to cube faces, and the roughness a prefiltered level stands for.
112
+ *
113
+ * Exported because a consumer that wants to load an environment needs the first, and a consumer
114
+ * writing its own probe tooling needs the second. Neither pulls in a decoder: reading a `.hdr` is
115
+ * `@driftengine/assets`, and a game that never loads one imports none of it.
116
+ */
117
+ export { equirectToCubeFaces } from './render/equirectToCube.js';
118
+ export { IRRADIANCE_EDGE, PREFILTER_SAMPLE_COUNTS, ggxMaxLevelFor, irradianceLevelFor, octahedralEdgeFor, roughnessForLevel, } from './render/prefilterEnvMap.js';
119
+ /**
120
+ * Where probes stand, and which of them light a point.
121
+ *
122
+ * Exported because placement is a consumer's decision and because a consumer sizing its own
123
+ * storage needs `MAX_ENV_PROBES` — every probe is one layer of one array texture, so the budget is
124
+ * memory rather than texture units. `nearestProbes` is the same trilinear blend the shader
125
+ * computes from three uniforms, which is what makes a consumer's bake ordering agree with what the
126
+ * lit pass will read.
127
+ */
128
+ export { MAX_ENV_PROBES, ProbeGrid, createProbeBlend, nearestProbes } from './render/probeGrid.js';
129
+ export { IES_ATLAS_WIDTH, packIesAtlas } from './render/iesProfile.js';
130
+ export { MAX_AREA_LIGHTS, createAreaLightBuffer, selectAreaLights } from './render/areaLights.js';
131
+ /**
132
+ * A rectangle's occlusion. Exported because a consumer sizing its own storage budget needs the
133
+ * layer arithmetic, and because `castingRange` is the one predicate that decides whether a
134
+ * declaration will actually cast — a consumer asserting that its fixtures do should ask the engine
135
+ * rather than re-implement the two conditions.
136
+ */
137
+ export { areaShadowLayerCount, castingRange, firstAreaShadowLayer, } from './render/areaShadowSet.js';
138
+ export { MAX_POINT_LIGHTS, SURFACE_TEXTURE_UNIT } from './render/lightBudget.js';
139
+ export { SurfaceTexture } from './render/surfaceTexture.js';
140
+ export { DEFAULT_GOVERNOR_LIMITS, ResolutionGovernor } from './render/resolutionGovernor.js';
141
+ export { isWeakGpuFamily } from './render/gpuCapability.js';
142
+ /**
143
+ * The same question `isWeakGpuFamily` answers, asked early enough to choose a profile with.
144
+ *
145
+ * `RendererApi.rendererName` and `CreatedRenderer.rendererName` are this answer after the fact,
146
+ * which is the right time for a boot log and too late for a decision.
147
+ */
148
+ export { describeGpu } from './render/gpuCapability.js';
149
+ export { DEFAULT_POINT_LIGHT_VIEW_RANGE, createPointLightBuffer, selectPointLights, } from './render/pointLightSelection.js';
150
+ export { computeLightMatrix } from './render/lightMatrix.js';
151
+ export { PlumeRenderer } from './render/plumeRenderer.js';
152
+ export { createEnvironment } from './render/backend/webgl2/renderer.js';
153
+ export { TrampleField, TRAMPLE_SLOTS } from './render/trample.js';
154
+ /*
155
+ * Turns a silent uniform miss into a warning. See `shader.ts` — writing to a uniform the
156
+ * program does not have is a legal no-op, which is how an effect can quietly not exist.
157
+ */
158
+ export { setUniformStrictMode } from './render/shader.js';
159
+ /*
160
+ * And everything an app is waiting for as one weighted number, which is the part every consumer
161
+ * was writing for itself. Ids and numbers only: what to call a stage depends on who is reading it,
162
+ * so the words stay with whoever is showing them.
163
+ */
164
+ export { LoadTracker } from './core/loadTracker.js';
165
+ /*
166
+ * Closing the inside of a model that is only a surface, which a great many bought models are: a
167
+ * car with no cabin, a building with no rooms. Drawn alone they are correct, and any opening in
168
+ * them shows straight through the object and out the far side. Takes sizes and fractions; what a
169
+ * subject looks like is the caller's to state.
170
+ */
171
+ export { buildShellFill, shellSkin, shellFillMatrix, DEFAULT_SHELL_PROFILE, } from './geometry/shellFill.js';
172
+ /*
173
+ * The grade a forward pass applies when nothing follows it.
174
+ *
175
+ * **Exported because a package cannot obey the rule otherwise.** `AGENTS.md`, 2026-08-17: every
176
+ * forward pass grades itself when nothing follows it, `outputTransform.ts` is the single
177
+ * definition, and *do not copy the curve*. A pass contributed through `registerPass` is a forward
178
+ * pass like any other — a splat cloud writes straight to the canvas with no composite — and until
179
+ * this line the only way for it to comply was to copy, which is what the rule forbids.
180
+ */
181
+ export { OUTPUT_TRANSFORM_GLSL } from './render/shaders/outputTransform.js';
182
+ export { PLUME_VERT, FIRE_FRAG } from './render/shaders/fire.js';
183
+ export { ARCANE_FRAG } from './render/shaders/arcane.js';
184
+ export { SMOKE_FRAG } from './render/shaders/smoke.js';
185
+ export { WaterRenderer } from './render/waterRenderer.js';
186
+ export { MeshBuilder } from './geometry/meshBuilder.js';
187
+ /* A tangent frame, which every map in the material track reads. */
188
+ export { generateTangents } from './geometry/tangents.js';
189
+ export { Spline, createSplineSample } from './geometry/spline.js';
190
+ export { RIBBON_COLLIDER_GIVE_M, RIBBON_STEP_M } from './geometry/ribbon.js';
191
+ export { buildRibbon } from './geometry/ribbon.js';
192
+ export { buildFilmPatch } from './geometry/filmPatch.js';
193
+ export { buildLightVolume } from './geometry/lightVolume.js';
194
+ export { buildTextMesh, textMeshHeightM, textMeshWidthM } from './geometry/textMesh.js';
195
+ export { CausticsRenderer } from './render/causticsRenderer.js';
196
+ export { buildSheets } from './render/surfaceSheet.js';
197
+ export { RibbonSurface, createSurfaceHit } from './physics/ribbonSurface.js';
198
+ export { CompositeSurface } from './physics/compositeSurface.js';
199
+ export { colliderSurface } from './physics/colliderSurface.js';
200
+ /*
201
+ * **Which way depth runs, reachable.** A consumer choosing a near plane or an offset for a decal
202
+ * has to know: a conventional buffer resolves about `z² / (near · 2^bits)` and a reversed float one
203
+ * is near enough uniform, and the difference is millimetres of offset and a factor on the near
204
+ * plane. Reported per renderer as `reversedDepth`, which is what the context *granted*; these are
205
+ * what the engine asks for, and the two agree everywhere except a WebGL2 context without
206
+ * `EXT_clip_control`.
207
+ */
208
+ export { DEPTH_CLEAR, DEPTH_COMPARE, DEPTH_COMPARE_EQUAL, DEPTH_FORMAT, DEPTH_OFFSET_SIGN, REVERSED_DEPTH, conventionalDepth, } from './render/depthConvention.js';
209
+ export { BoxSurface } from './physics/boxSurface.js';
210
+ export { heightSurface } from './physics/heightSurface.js';
211
+ export { DebugLines } from './render/debugLines.js';
212
+ /*
213
+ * The gizmo is a generator, the way `DebugLines` above it is: it answers what a ray is
214
+ * over and what a drag does, and fills line buffers the caller draws with `drawLines`.
215
+ * Nothing here touches a context.
216
+ */
217
+ export { GIZMO_GROUP_ACTIVE, GIZMO_GROUP_COLORS, GIZMO_GROUP_COUNT, GIZMO_GROUP_NEUTRAL, GIZMO_GROUP_X, GIZMO_GROUP_Y, GIZMO_GROUP_Z, GIZMO_NONE, GIZMO_ROTATE_X, GIZMO_ROTATE_Y, GIZMO_ROTATE_Z, GIZMO_SCALE_UNIFORM, GIZMO_SCALE_X, GIZMO_SCALE_Y, GIZMO_SCALE_Z, GIZMO_TRANSLATE_X, GIZMO_TRANSLATE_XY, GIZMO_TRANSLATE_Y, GIZMO_TRANSLATE_YZ, GIZMO_TRANSLATE_Z, GIZMO_TRANSLATE_ZX, Gizmo, gizmoScaleFor, } from './render/gizmo.js';
218
+ export { RainField } from './render/rainField.js';
219
+ export { coveredAbove } from './physics/heightSurface.js';
220
+ export { buildNavGraph, nearestNavNode } from './nav/navGraph.js';
221
+ export { NavSearch } from './nav/navSearch.js';
222
+ export { NavPath, createNavSteer } from './nav/navPath.js';
223
+ export { BehaviorRunner, FAILURE, RUNNING, SUCCESS, buildBehaviorTree, } from './behavior/behaviorTree.js';
224
+ export { projectDecal } from './geometry/decal.js';
225
+ export { DecalProjector } from './render/decalProjector.js';
226
+ export { ReflectiveSurface } from './render/screenSpaceReflection.js';
227
+ /*
228
+ * `@driftengine/physics` is re-exported **wholesale**, and the star is the point.
229
+ *
230
+ * This was a hand-written list of names, and it drifted: by the time Track B finished, seventy-nine
231
+ * of the package's hundred and ten exports were missing from it, so a consumer reaching for the
232
+ * solver, the joints, the queries, the controller or the ragdolls through this barrel found
233
+ * nothing. Nothing failed, because a name that is not re-exported is simply a name nobody can
234
+ * import — the quietest kind of gap there is.
235
+ *
236
+ * A star cannot drift. **What it costs** is that this file no longer lists what collision offers,
237
+ * so a reader has to open the package; **what would make it wrong** is a name collision between the
238
+ * two, which is a compile error here rather than a silent shadow — and it is why the physics
239
+ * package renamed `Pose` to `ShapePose` and `collide` to `collideShapes` before this line existed,
240
+ * since `Pose` already means a skeleton's pose one package over.
241
+ *
242
+ * Core depends on this package rather than the other way round, because the cameras, the contact
243
+ * probe and the ribbon builder all need the sweep.
244
+ */
245
+ export * from '@driftengine/physics';
246
+ export { AXIS_X, AXIS_Y, AXIS_Z, ColliderSet, aabbFromCenter, bodyBounds, boxCollider, boxShape, capsuleShape, colliderFromShape, createBodyBounds, cylinderShape, createMassProperties, ejectFromSolid, faceCount, faceVertices, fingerprintBodies, fingerprintColliders, hullShape, moveAxis, segmentHit, shapeBounds, shapeMassProperties, sphereShape, } from '@driftengine/physics';
247
+ export { InputSource } from './input/input.js';
248
+ export { isTypingTarget } from './input/typingTarget.js';
249
+ /* Positions rather than lettering, and the constant a consumer overrides to taste. */
250
+ export { DEFAULT_DEADZONE } from './input/gamepadMapping.js';
251
+ /* The platform's own ceiling on one haptic effect, so a settings screen can bound its slider. */
252
+ export { MAX_RUMBLE_MS } from './input/rumble.js';
253
+ export { ActionMap } from './input/actionMap.js';
254
+ export { TouchControls } from './input/touchControls.js';
255
+ export { pixelCursor } from './ui/pixelCursor.js';
256
+ export { fullscreenWanted, requestFullscreenOnGesture } from './ui/fullscreen.js';
257
+ /*
258
+ * The engine badge. `createRenderer` mounts it by default, so a game needs none of these names —
259
+ * they are here for the consumer that declines the automatic one and places its own, and because
260
+ * the two decisions behind it are worth reading before overriding either.
261
+ */
262
+ export { SPLASH_FADE_MS, SPLASH_HARD_CAP_MS, SPLASH_MIN_MS, forcedSplash, mountSplash, splashDecision, splashWanted, } from './ui/splash.js';
263
+ export { DEFAULT_CLIP_FPS, FrameRecorder, offerClip } from './ui/frameRecorder.js';
264
+ // Not on `FrameRecorder`, so a screenshot does not cost a clip pipeline. See the module.
265
+ export { stillFrame } from './ui/stillFrame.js';
266
+ /*
267
+ * From `clipMime` rather than `frameRecorder`, and re-exporting them from there would
268
+ * undo the point: a consumer asking whether this browser can record at all must not
269
+ * pull the recorder in to find out. See `ui/clipMime.ts`.
270
+ */
271
+ export { describeClipMime, supportedClipMimeType } from './ui/clipMime.js';
272
+ export { EXPORT_FALLBACK_SCALE, ExportTarget, clipBitrate, exportAspect, exportSizeExact, isDuplicateFrame, CLIP_FPS_LADDER, clipFpsFor, exportSizeFor, } from './ui/exportTarget.js';
273
+ export { FramePacer } from './ui/framePacer.js';
274
+ export { bakeOverlay, drawPixelText, pixelTextCells, pixelTextSize } from './ui/frameOverlay.js';
275
+ export { FpsMeter } from './dev/fpsMeter.js';
276
+ export { CONTACT_LIMIT, createContactReports, describeContacts } from './dev/contactProbe.js';
277
+ export { GPU_SLOTS, GpuTimer } from './render/gpuTimer.js';
278
+ export { classifyRightGesture } from './input/rightGesture.js';
279
+ export { createWindState, sampleWind } from './render/wind.js';
280
+ export { advanceWindField, createWindField } from './render/windField.js';
281
+ export { seaStateForAgitation, seaStateForWind } from './render/seaState.js';
282
+ export { InstancedMesh, createInstanceData, writeInstance } from './render/instancedMesh.js';
283
+ /*
284
+ * The instanced *mesh* surface, which is not the scatter above it: a scatter owns its own base
285
+ * geometry and carries a scale, a yaw and a wind response, because it describes a plant. These
286
+ * attach to a mesh the consumer already uploaded and carry a full transform, because a vehicle
287
+ * pitches and rolls and a yaw cannot say so.
288
+ */
289
+ export { createMeshInstances, packInstances, INSTANCE_FLOATS, INSTANCE_STRIDE, } from './render/instances.js';
290
+ export { ParticlePool } from './render/particlePool.js';
291
+ export { ParticleBatch } from './render/particleBatch.js';
292
+ export { PARTICLE_MOTE_FRAG, PARTICLE_SMOKE_FRAG, PARTICLE_SPARK_FRAG, PARTICLE_VERT, } from './render/shaders/particle.js';
293
+ export { BoltPool } from './render/boltPool.js';
294
+ export { BoltBatch } from './render/boltBatch.js';
295
+ export { createLineSegments, setPolyline } from './render/linePoints.js';
296
+ export { FlockRenderer } from './render/flockRenderer.js';
297
+ /*
298
+ * Text is reached through the renderer, not constructed.
299
+ *
300
+ * `TextRenderer` is no longer exported: it holds a `WebGL2RenderingContext`, so a caller that
301
+ * built one was a caller pinned to one backend — which is exactly what kept `showroom` off
302
+ * WebGPU. `renderer.createText()` hands back an opaque `TextHandle` and the renderer draws it,
303
+ * the same shape scatter, plumes, particles, flocks and bolts already have. The measuring
304
+ * helpers were statics on the class and are free functions now, because neither needs a device.
305
+ */
306
+ export { DEFAULT_TEXT_STYLE, textHeightPx, textWidthPx } from './render/textLayout.js';
307
+ export { GLYPH_HEIGHT, GLYPH_SPACING, GLYPH_WIDTH, countCells, forEachCell, forEachRun, glyphRows, hasGlyph, measureText, } from './geometry/pixelFont.js';
308
+ /*
309
+ * SDF text, reached the same way pixel text is: the verbs are on the renderer and the
310
+ * handle is opaque. What a consumer does need in its own hands is the metrics document,
311
+ * because the engine fetches nothing — `setSdfText` takes a parsed font and an atlas the
312
+ * consumer already owns, so a consumer that could not call `parseSdfFont` could not call
313
+ * `setSdfText` either. Phase one shipped the verbs and not this, which made the whole
314
+ * capability unreachable through the barrel; `demo/dev/sdf-text.ts` was reaching two
315
+ * directories deeper to work around it.
316
+ */
317
+ export { parseSdfFont } from './render/sdfFont.js';
318
+ export { DEFAULT_SDF_TEXT_STYLE, SdfTextLayout } from './render/sdfTextLayout.js';
319
+ export { WindStreakRenderer } from './render/windStreakRenderer.js';
320
+ export { buildTree } from './geometry/treeBuilder.js';
@@ -0,0 +1,181 @@
1
+ import type { KeyValueStore } from '../core/storage.ts';
2
+ import type { InputSource } from './input.ts';
3
+ import type { GamepadButton } from './gamepadMapping.ts';
4
+ /**
5
+ * Actions a game asks about, and the bindings that satisfy them.
6
+ *
7
+ * **This is what makes the gamepad worth having.** Without it every site that reads input carries
8
+ * the device branch by hand — `isDown('Space') || pad?.down('faceDown')` — every new device widens
9
+ * it, and a player cannot change either half. A game asks whether *jump* happened and does not ask
10
+ * which device said so.
11
+ *
12
+ * **The action name is the consumer's own string.** A game's verbs are a game's business, and an
13
+ * engine-side enumeration of them would be exactly the "needs to know what something *is*" boundary
14
+ * error `AGENTS.md` forbids.
15
+ */
16
+ /** One thing that can satisfy an action. */
17
+ export type Binding = {
18
+ readonly device: 'keyboard';
19
+ readonly code: string;
20
+ } | {
21
+ readonly device: 'gamepad';
22
+ readonly button: GamepadButton;
23
+ };
24
+ /** Jump, fire, pause: a state, bound to keys and buttons. */
25
+ export interface DigitalAction {
26
+ readonly keys?: readonly string[];
27
+ readonly buttons?: readonly GamepadButton[];
28
+ }
29
+ /**
30
+ * Move, look: a direction rather than a state.
31
+ *
32
+ * **The reason this cannot be a button-only design.** A stick is not a key, and a game that treated
33
+ * one as four keys would throw away the magnitude the player is actually controlling.
34
+ *
35
+ * Key directions follow the stick's convention, which is the specification's: **up is negative**.
36
+ * The alternative was to flip one of them, and an engine that silently disagrees with the API it
37
+ * wraps is one a consumer cannot reason about.
38
+ */
39
+ export interface AnalogAction {
40
+ readonly stick: 'left' | 'right';
41
+ /**
42
+ * One code or several, per direction.
43
+ *
44
+ * **Several, because `DigitalAction` above takes several and a player does not care which kind
45
+ * of action they are rebinding.** A game binding both `KeyW` and `ArrowUp` to forward — which is
46
+ * the ordinary thing to do — could express that for jump and not for movement, and the asymmetry
47
+ * was the whole of the gap: the alternative was two analog actions merged by hand at the call
48
+ * site, which is the engine handing back a job it already does.
49
+ */
50
+ readonly up?: string | readonly string[];
51
+ readonly down?: string | readonly string[];
52
+ readonly left?: string | readonly string[];
53
+ readonly right?: string | readonly string[];
54
+ }
55
+ export type ActionDefinition = DigitalAction | AnalogAction;
56
+ export declare class ActionMap {
57
+ private readonly input;
58
+ private readonly definitions;
59
+ /** The current bindings per digital action, which rebinding and loading replace. */
60
+ private readonly bindings;
61
+ private readonly defaults;
62
+ private warnedAboutRecord;
63
+ constructor(input: InputSource, definitions: Readonly<Record<string, ActionDefinition>>);
64
+ /** Whether anything bound to this action is held. */
65
+ down(action: string): boolean;
66
+ /** Whether anything bound to it went down since the last poll. Readable by anything. */
67
+ pressed(action: string): boolean;
68
+ /**
69
+ * The same edge, claimed: true for exactly one caller.
70
+ *
71
+ * **Claims through the device rather than keeping its own set**, so a claim made here is also
72
+ * gone from `input.keyPressed` and from the pad's own `pressed`. Two claim registers over one
73
+ * physical press is how a press gets acted on twice.
74
+ */
75
+ consumePress(action: string): boolean;
76
+ /**
77
+ * Fill `out` with an analog action's direction.
78
+ *
79
+ * **The larger of stick and keys, never the sum.** A player holding a key while pushing the
80
+ * stick the same way is asking to go that way, once; adding the contributions would send them at
81
+ * twice the speed, which is the bug a naive merge ships with. What it costs: the two cannot be
82
+ * combined to exceed the rim, which is the intent. What would make it wrong: an action where two
83
+ * devices genuinely should add, and nothing has asked for one.
84
+ *
85
+ * **This is the reader for a direction.** If the two axes are two separate controls — throttle
86
+ * and steering, pitch and roll — read them one at a time with `axis`, which does not normalise
87
+ * them against each other. See its note for what the joint normalisation cost one consumer.
88
+ */
89
+ vector(action: string, out: {
90
+ x: number;
91
+ y: number;
92
+ }): void;
93
+ /**
94
+ * One axis of an analog action, on its own, **not normalised against the other**.
95
+ *
96
+ * **`vector` is right for a direction and wrong for two controls**, and the difference is not
97
+ * cosmetic. On foot the two axes are one direction, so a keyboard diagonal must be shortened to
98
+ * the rim or the player walks faster askew than straight ahead — that is what `vector` is for and
99
+ * it should stay the default. At a wheel the same two axes are throttle and steering, which are
100
+ * two separate controls that happen to share an action: normalising them together means a driver
101
+ * holding forward and left gets 0.707 of each and **can never reach full lock while accelerating**.
102
+ *
103
+ * A consumer lost two weeks to this. The report was "the car does not turn and it is slow", the
104
+ * whole vehicle model was rewritten looking for it, and it was not in the vehicle model — it was
105
+ * `Math.hypot` three call frames away, doing exactly what it was written to do. They shipped four
106
+ * duplicate digital actions bound to the same keys to get around it.
107
+ *
108
+ * The pad is unchanged either way: a stick already gives its two axes independently, so a caller
109
+ * driving with one reads the same numbers from both methods. The keyboard is where they part.
110
+ */
111
+ axis(action: string, axis: 'x' | 'y'): number;
112
+ /**
113
+ * Fill the two scratch vectors for an analog action, and say whether there was one.
114
+ *
115
+ * Shared so that `vector` and `axis` cannot disagree about which device is being read or how a
116
+ * key becomes a number — the device choice in particular is subtle enough that two copies of it
117
+ * would drift.
118
+ */
119
+ private sample;
120
+ /**
121
+ * Whether the pad these actions read has motors this browser can drive.
122
+ *
123
+ * **Pad 0, which is the pad every other member of this class already reads.** An action map is
124
+ * one player's controls, so "the pad the actions come from" is the device a rumble belongs on;
125
+ * a consumer running local multiplayer reaches `InputSource.pad(n).rumble` directly.
126
+ *
127
+ * Grey the control out when this is false. It is re-read rather than cached, because a pad
128
+ * unplugged and plugged back in is a different device behind the same slot.
129
+ */
130
+ get canRumble(): boolean;
131
+ /**
132
+ * Rumble that pad for `durationMs`, at two magnitudes in [0, 1]. Answers whether it was taken.
133
+ *
134
+ * `false` where there is no pad, no actuator, or nothing to play. Never throws.
135
+ */
136
+ rumble(durationMs: number, strong: number, weak: number): boolean;
137
+ /** Stop whatever that pad is playing. Answers whether the platform took it. */
138
+ stopRumble(): boolean;
139
+ /**
140
+ * Whether any of a direction's codes is held.
141
+ *
142
+ * Allocation-free for both shapes: a single code is compared without wrapping it in an array,
143
+ * and an array is walked by index. `vector` runs once a tick.
144
+ */
145
+ private anyDown;
146
+ /** What currently satisfies an action. */
147
+ bindingsFor(action: string): readonly Binding[];
148
+ /**
149
+ * Give an action a binding, and say which actions lost it.
150
+ *
151
+ * **Reports rather than decides.** A binding already serving another action is the interesting
152
+ * case in every rebinding screen there has ever been, and what to do about it is a product
153
+ * decision: steal it silently, warn, or refuse. A consumer that wants uniqueness enforced reads
154
+ * the return and rebinds back.
155
+ */
156
+ rebind(action: string, binding: Binding): readonly string[];
157
+ /** Put one action, or every action, back to what the game shipped with. */
158
+ resetToDefaults(action?: string): void;
159
+ /**
160
+ * Write the bindings a player has actually changed, and nothing else.
161
+ *
162
+ * **A diff rather than a snapshot, and this is the load-bearing decision.** A snapshot freezes
163
+ * the map at the version that saved it: a game that later adds an action, or changes a default
164
+ * nobody had rebound, finds every returning player still on the old set with no way to tell a
165
+ * deliberate choice from a stale record. A diff means an untouched action always follows the
166
+ * current default and only real choices survive an update.
167
+ *
168
+ * Through `KeyValueStore` because the engine calls no platform API a consumer might want to
169
+ * supply differently — the rule that put saves behind this seam.
170
+ */
171
+ save(store: KeyValueStore, key: string): void;
172
+ /**
173
+ * Apply a stored record over the defaults.
174
+ *
175
+ * **An unreadable record is the defaults, reported once.** A player whose stored bindings cannot
176
+ * be parsed should get a working game rather than a broken one, and should not have that decided
177
+ * silently — the same shape as every other refusal in this engine.
178
+ */
179
+ load(store: KeyValueStore, key: string): void;
180
+ private any;
181
+ }