@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
@@ -0,0 +1,496 @@
1
+ import type { Bounds } from '../../math/bounds.ts';
2
+ import type { Vec3 } from '../../math/color.ts';
3
+ import type { ReadonlyMat4 } from 'gl-matrix';
4
+ import type { MeshData } from '../mesh.ts';
5
+ import type { ProbeBakeOptions } from '../reflectionProbe.ts';
6
+ import type { Renderer, TranslucentMeshOptions } from './webgl2/renderer.ts';
7
+ import type { MeshInstances } from '../instances.ts';
8
+ import type { SurfaceMaterial } from '../surfaceTexture.ts';
9
+ import type { TextStyle } from '../textLayout.ts';
10
+ import type { SdfFont } from '../sdfFont.ts';
11
+ import type { SdfTextStyle } from '../sdfTextLayout.ts';
12
+ import type { FrameTimer } from './timer.ts';
13
+ /**
14
+ * Geometry on the device, as something a consumer holds and hands back.
15
+ *
16
+ * **Opaque on purpose, and the opacity is forced rather than chosen.** `Mesh` has private
17
+ * fields, which makes it *nominal* in TypeScript: no other type can ever satisfy it, however
18
+ * identical its shape, so a WebGPU mesh cannot be a `Mesh` and the shared surface cannot
19
+ * name one. That is not a flaw in `Mesh` — the privacy is what keeps `WebGLBuffer`s out of
20
+ * reach — it just means the surface has to describe the handle rather than the object.
21
+ *
22
+ * A consumer receives one from `createMesh` and passes it to `drawMesh`. There is nothing to
23
+ * read on it, which is the point: the backend that made it is the only thing that can.
24
+ */
25
+ export interface MeshHandle {
26
+ readonly bounds: Bounds;
27
+ /**
28
+ * Whether all of this mesh's geometry has reached the device.
29
+ *
30
+ * True for every mesh `createMesh` returns; false between the steps of one from
31
+ * `createMeshIncremental`, until its last. **Nothing incomplete is drawn** — see that method
32
+ * for why, and for what a `done` upload with this still false means.
33
+ *
34
+ * Named here for the reason `bounds` is: both backends' meshes genuinely carry it, so a
35
+ * consumer can ask without reaching past this surface for a backend-specific type.
36
+ */
37
+ readonly complete: boolean;
38
+ }
39
+ /** A mesh on its way to the device, and the iterator that gets it there. */
40
+ export interface IncrementalMeshHandle {
41
+ /**
42
+ * Usable at once — it can be held, measured against `bounds`, and disposed — but not drawn
43
+ * until the upload finishes.
44
+ */
45
+ readonly mesh: MeshHandle;
46
+ /**
47
+ * Advance the upload by one bounded step. Done when it returns `done`.
48
+ *
49
+ * The call that returns `done` is the one that does the last step's work rather than an empty
50
+ * call after it, so a mesh takes exactly as many calls as it has chunks and a caller counting
51
+ * stops against a frame budget counts the right number.
52
+ */
53
+ readonly upload: Iterator<void, void>;
54
+ }
55
+ /**
56
+ * An instanced batch on the device, held by a consumer and handed back.
57
+ *
58
+ * **The second nominal type this surface hit, and for the same reason as `MeshHandle`.**
59
+ * `InstancedMesh` holds `WebGLBuffer`s in private fields, which makes it nominal: no WebGPU
60
+ * object can ever satisfy it however identical its shape. The privacy is right — it is what
61
+ * keeps a VAO out of a consumer's reach — so the surface describes the handle instead.
62
+ *
63
+ * A consumer gets one from `createScatter` and passes it to `drawScatter` and
64
+ * `uploadScatter`. Passing one backend's handle to the other is a caller error.
65
+ */
66
+ export interface ScatterHandle {
67
+ }
68
+ /**
69
+ * A mesh made drawable many times over, held by a consumer and handed back.
70
+ *
71
+ * Opaque for the reason `ScatterHandle` is, and distinct from it because what it batches is
72
+ * different: a scatter owns its own base geometry, and this one is *attached to a mesh the
73
+ * consumer already uploaded*. A car body is tens of megabytes and a second copy of it to draw it
74
+ * thirty times would defeat the point.
75
+ *
76
+ * A consumer gets one from `createInstanced` and passes it to `uploadInstanced`,
77
+ * `drawInstanced` and `drawTranslucentInstanced`.
78
+ */
79
+ export interface InstancedHandle {
80
+ }
81
+ /**
82
+ * A body of water on the device: its meshes and the numbers its grid settled.
83
+ *
84
+ * Opaque for the reason `MeshHandle` and `ScatterHandle` are — `WaterRenderer` holds
85
+ * `WebGLBuffer`s privately and is therefore nominal. The third of these, and the last one the
86
+ * derivation could not carry without help.
87
+ */
88
+ export interface WaterHandle {
89
+ }
90
+ /**
91
+ * A plume batch on the device. Opaque for the reason `MeshHandle` explains.
92
+ */
93
+ export interface PlumeHandle {
94
+ }
95
+ /** A particle pool on the device. Opaque for the reason `MeshHandle` explains. */
96
+ export interface ParticleHandle {
97
+ }
98
+ /**
99
+ * A wind-streak lattice on the device. Opaque for the reason `MeshHandle` explains.
100
+ *
101
+ * **`strengthFor` does not survive the widening, and that is deliberate.** It is on
102
+ * `WindStreakRenderer` so a caller can size its own budget against the same ramp the draw uses;
103
+ * naming it here would oblige every backend to carry a method rather than a lattice. The ramp
104
+ * itself is `windStreakStrength` in `windStreakDraw.ts`, which a consumer can call with the
105
+ * thresholds it chose and which is the one both backends draw with.
106
+ */
107
+ export interface WindStreakHandle {
108
+ }
109
+ /** A flock on the device. Opaque for the reason `MeshHandle` explains. */
110
+ export interface FlockHandle {
111
+ }
112
+ /** A water-lit surface on the device. Opaque for the reason `MeshHandle` explains. */
113
+ export interface CausticsHandle {
114
+ }
115
+ /** A batch of electrical arcs on the device. Opaque for the reason `MeshHandle` explains. */
116
+ export interface BoltHandle {
117
+ }
118
+ /** A batch of polyline segments on the device. Opaque for the reason `MeshHandle` explains. */
119
+ export interface LineHandle {
120
+ }
121
+ /**
122
+ * One text object: a string laid out as instanced glyph cubes. Opaque for the reason
123
+ * `MeshHandle` explains, and opaque *at all* for a reason the others did not have — it used to
124
+ * be a class holding a `WebGL2RenderingContext`, which pinned every caller of it to WebGL2.
125
+ */
126
+ export interface TextHandle {
127
+ }
128
+ /**
129
+ * One SDF text label: a string laid out as flat, textured quads from a distance-field font.
130
+ * Opaque for the reason `MeshHandle` explains, and for `TextHandle`'s own reason too — the
131
+ * concrete class on each backend holds a `WebGL2RenderingContext` or a `GPUDevice`'s buffers
132
+ * privately, so no shared type could name one without this.
133
+ */
134
+ export interface SdfTextHandle {
135
+ }
136
+ /**
137
+ * A caller's image on the device. Opaque for the reason `MeshHandle` explains.
138
+ *
139
+ * The boundary it guards is the interesting one: the engine ships no image assets and fetches
140
+ * nothing, so what goes in is a `TexImageSource` the consumer already has and what comes back
141
+ * is a GPU object with sane sampler state. Where the pixels came from stays theirs.
142
+ */
143
+ export interface SurfaceTextureHandle {
144
+ }
145
+ /**
146
+ * The public surface of the renderer, as a type a second backend can be checked against.
147
+ *
148
+ * **Derived rather than written.** `keyof` over a class yields its public members only — every
149
+ * `private` field, and this class has ninety-four of them holding `WebGLProgram`s and
150
+ * `WebGLUniformLocation`s, is excluded automatically. So this is exactly what a consumer can
151
+ * reach and nothing else, without a list anybody has to maintain.
152
+ *
153
+ * The point is that it cannot drift. Add a method to `Renderer` and `WebGPURenderer` stops
154
+ * compiling until it has one too, which is the compile-time form of the failure the
155
+ * 2026-08-02 design spec named as the real risk: a fallback that rots because only the
156
+ * developer's own backend is ever exercised. **That mechanism is free and it is the whole
157
+ * reason this file exists.**
158
+ *
159
+ * Eighty members: up from seventy-five with the five instanced-draw methods, which are widened
160
+ * for the reason the scatter ones are — a batch handle is nominal on WebGL2, holding a
161
+ * `WebGLBuffer` in a private field, so no WebGPU object can satisfy it however identical its
162
+ * shape. It is not meant to be read; it is meant to be enforced.
163
+ */
164
+ /** What a mesh needs to be told at creation that its geometry cannot say. */
165
+ export interface MeshOptions {
166
+ /**
167
+ * Whether this mesh's positions will be rewritten with `updateMesh`.
168
+ *
169
+ * Costs a `DYNAMIC_DRAW` hint on WebGL2 and a CPU-side copy of the interleaved vertex data on
170
+ * WebGPU, which interleaves every attribute into one buffer and so cannot patch a position
171
+ * without the rest of the vertex in hand. Both are paid only where a consumer asks.
172
+ */
173
+ readonly dynamic?: boolean;
174
+ }
175
+ export type RendererApi = Omit<{
176
+ [K in keyof Renderer]: Renderer[K];
177
+ }, 'gpuTimer' | 'createMesh' | 'createMeshIncremental' | 'updateMesh' | 'drawMesh' | 'disposeMesh' | 'drawTranslucentMesh' | 'drawLightVolume' | 'drawFilm' | 'createScatter' | 'drawScatter' | 'uploadScatter' | 'disposeScatter' | 'createInstanced' | 'uploadInstanced' | 'drawInstanced' | 'drawTranslucentInstanced' | 'disposeInstanced' | 'createWater' | 'drawWater' | 'disposeWater' | 'createPlumes' | 'drawPlumes' | 'disposePlumes' | 'setPlumeScale' | 'createCaustics' | 'drawCaustics' | 'disposeCaustics' | 'createParticles' | 'drawParticles' | 'disposeParticles' | 'createWindStreaks' | 'drawWindStreaks' | 'disposeWindStreaks' | 'createFlock' | 'drawFlock' | 'disposeFlock' | 'createBolts' | 'drawBolts' | 'disposeBolts' | 'createLines' | 'drawLines' | 'disposeLines' | 'createText' | 'setText' | 'setPlate' | 'drawText' | 'textWidth' | 'disposeText' | 'createSdfText' | 'setSdfText' | 'drawSdfText' | 'disposeSdfText' | 'createSurfaceTexture' | 'updateSurfaceTexture' | 'disposeSurfaceTexture' | 'setSurfaceTexture' | 'setMaterial'> & {
178
+ /** Upload a caller's image. See `SurfaceTextureHandle` for the boundary this guards. */
179
+ createSurfaceTexture(source: TexImageSource, options?: Parameters<Renderer['createSurfaceTexture']>[1]): SurfaceTextureHandle;
180
+ /**
181
+ * Replace a texture's pixels, keeping the GPU object and its sampler state.
182
+ *
183
+ * The binding a draw loop already holds stays valid, so the swap is a swap rather than a
184
+ * rebuild. Not a hot path: it re-uploads the whole image and rebuilds the mip chain.
185
+ */
186
+ updateSurfaceTexture(texture: SurfaceTextureHandle, source: TexImageSource): void;
187
+ disposeSurfaceTexture(texture: SurfaceTextureHandle): void;
188
+ /**
189
+ * Choose the texture the following `drawMesh` calls sample, or null for none.
190
+ *
191
+ * Pass state, because a texture belongs to a material and a material covers many draws.
192
+ * `bindMeshPass` resets it, so a pass cannot inherit a material from the one before it.
193
+ */
194
+ setSurfaceTexture(texture: SurfaceTextureHandle | null, uScale?: number, vScale?: number, cutout?: number): void;
195
+ /**
196
+ * Everything the following `drawMesh` calls sample, in one call. Null for none.
197
+ *
198
+ * Pass state, exactly as `setSurfaceTexture` is, and `bindMeshPass` resets it for the same
199
+ * reason. This is the shape the maps of Phase 1.3 arrive through — a field each rather than a
200
+ * setter each — and `setSurfaceTexture` is now a wrapper over it.
201
+ */
202
+ setMaterial(material: SurfaceMaterial<SurfaceTextureHandle> | null): void;
203
+ /**
204
+ * A 3D text object: one string, drawn as instanced glyph cubes over the scene.
205
+ *
206
+ * Create one per message slot and reuse it — `setText` is a no-op when the string has not
207
+ * changed, and that skip is the difference between a free overlay and a per-frame upload.
208
+ */
209
+ createText(): TextHandle;
210
+ /** Lay a string out. A no-op when it is the string already laid out. */
211
+ setText(text: TextHandle, content: string): void;
212
+ /**
213
+ * A solid rectangle of cells, for a keycap or a backing plate — not a run of block glyphs,
214
+ * which comes out striped and sized in whole glyph widths. See `TextLayout.setPlate`.
215
+ */
216
+ setPlate(text: TextHandle, widthCells: number, heightCells: number, bottomCell: number): void;
217
+ /**
218
+ * Draw a laid-out string over the scene.
219
+ *
220
+ * The viewport is the caller's rather than the drawing buffer's, because an overlay is
221
+ * positioned in whatever box the caller is laying out in and that is not always the canvas.
222
+ * `originY` is a baseline, measured from the top.
223
+ */
224
+ drawText(text: TextHandle, viewportWidth: number, viewportHeight: number, originX: number, originY: number, style: TextStyle, timeSec: number): void;
225
+ /** Width of the string this handle currently holds. See `textWidthPx` for the static form. */
226
+ textWidth(text: TextHandle, cellSize: number): number;
227
+ /** Release a text object. Takes no context; see `Renderer.disposeScatter`. */
228
+ disposeText(text: TextHandle): void;
229
+ /**
230
+ * A text label from an SDF font. Opt-in: a consumer that never calls this pays nothing,
231
+ * which is what keeps `pixelFont.ts`'s no-asset promise true for everybody else.
232
+ */
233
+ createSdfText(): SdfTextHandle;
234
+ /**
235
+ * Lay a string out against a font, and retain the atlas `drawSdfText` will sample.
236
+ *
237
+ * The engine fetches nothing: `font` was parsed from a metrics document the caller already
238
+ * had, and `atlas` is a texture the caller already uploaded through `createSurfaceTexture`.
239
+ * A no-op, and no re-upload, when neither the text nor the style moved since the last call.
240
+ */
241
+ setSdfText(text: SdfTextHandle, font: SdfFont, atlas: SurfaceTextureHandle, content: string, style: SdfTextStyle): void;
242
+ /**
243
+ * Draw a laid-out SDF string into the scene, at `model`, against the frame's own
244
+ * view-projection — the same one `drawMesh` uses. See `Renderer.drawSdfText`.
245
+ */
246
+ drawSdfText(text: SdfTextHandle, model: Float32Array, color: Vec3, opacity: number): void;
247
+ /** Release an SDF text label. Takes no context; see `Renderer.disposeScatter`. */
248
+ disposeSdfText(text: SdfTextHandle): void;
249
+ /** Build a lattice of wind-borne debris. See `WindStreakHandle` for why it is opaque. */
250
+ createWindStreaks(options?: Parameters<Renderer['createWindStreaks']>[0]): WindStreakHandle;
251
+ /** Draw the wind, after the opaque scene. The engine decides whether the camera is under. */
252
+ drawWindStreaks(streaks: WindStreakHandle, camera: Parameters<Renderer['drawWindStreaks']>[1], wind: Parameters<Renderer['drawWindStreaks']>[2], timeSeconds: number, tint: Vec3, env: Parameters<Renderer['drawWindStreaks']>[5]): void;
253
+ /** Release a lattice. Takes no context; see `Renderer.disposeScatter`. */
254
+ disposeWindStreaks(streaks: WindStreakHandle): void;
255
+ /** Scale one plume in a batch, 0 to hide it — a fire that is not always burning. */
256
+ setPlumeScale(plumes: PlumeHandle, index: number, scale: number): void;
257
+ /**
258
+ * A surface lit by nearby water. Null where the profile has water off or there are no sheets,
259
+ * so a scene's own `drawCaustics(null, …)` guard reads the same on either backend.
260
+ */
261
+ createCaustics(sheets: Parameters<Renderer['createCaustics']>[0]): CausticsHandle | null;
262
+ /** Add the water's light to an already-shaded scene. Draw after the opaque pass. */
263
+ drawCaustics(caustics: CausticsHandle | null, camera: Parameters<Renderer['drawCaustics']>[1], timeSeconds: number, env: Parameters<Renderer['drawCaustics']>[3], windX?: number, windZ?: number, strength?: number): void;
264
+ disposeCaustics(caustics: CausticsHandle | null): void;
265
+ /** Build a flock of `count` birds. See `FlockHandle` for why it is opaque. */
266
+ createFlock(count: number): FlockHandle;
267
+ /** Draw a flock. Every bird's path comes from its index and the clock. */
268
+ drawFlock(flock: FlockHandle, camera: Parameters<Renderer['drawFlock']>[1], timeSeconds: number, params: Parameters<Renderer['drawFlock']>[3], tint: Vec3, windX?: number, windZ?: number): void;
269
+ /** Release a flock. Takes no context; see `Renderer.disposeScatter`. */
270
+ disposeFlock(flock: FlockHandle): void;
271
+ /** Build a batch for electrical arcs. `capacity` is in segments, not arcs. */
272
+ createBolts(segmentCapacity: number, label?: string): BoltHandle;
273
+ /** Draw a pool of arcs, after the opaque scene. */
274
+ drawBolts(batch: BoltHandle, data: Parameters<Renderer['drawBolts']>[1], camera: Parameters<Renderer['drawBolts']>[2], env: Parameters<Renderer['drawBolts']>[3], timeSeconds: number, core: Vec3, edge: Vec3, widthM: number, coreGain: number, minWidthPerMetre?: number): void;
275
+ /** Release a batch of arcs. Takes no context; see `Renderer.disposeScatter`. */
276
+ disposeBolts(batch: BoltHandle): void;
277
+ /**
278
+ * Build a batch for a polyline. `capacity` is in segments, not points.
279
+ *
280
+ * There is no portable wide line: WebGL2 clamps `lineWidth` to one pixel on nearly every
281
+ * driver and WebGPU has no line width at all, so a stroke is a triangle everywhere or it
282
+ * is nowhere. See `Renderer.createLines`.
283
+ *
284
+ * **One handle, one polyline's geometry, for the frame it is drawn in.** Drawing a handle
285
+ * more than once a frame with unchanged content is fine; drawing it more than once with
286
+ * *different* content in the same frame is not — see `Renderer.createLines` for the reason,
287
+ * which is backend-specific: WebGPU reads the last write only, WebGL2 reads whichever content
288
+ * was current at each call. A consumer that wants several polylines whose geometry differs
289
+ * within one frame needs several handles.
290
+ */
291
+ createLines(segmentCapacity: number, label?: string): LineHandle;
292
+ /**
293
+ * Draw a polyline, after the opaque scene.
294
+ *
295
+ * `widthM` is the stroke's own half-width and `minWidthPerMetre` the floor that keeps a
296
+ * distant line above a pixel. `softness` widens the antialiased edge inward, as a fraction
297
+ * of the half-width; zero is a clean edge. See `Renderer.drawLines`.
298
+ */
299
+ drawLines(lines: LineHandle, data: Parameters<Renderer['drawLines']>[1], model: Parameters<Renderer['drawLines']>[2], camera: Parameters<Renderer['drawLines']>[3], env: Parameters<Renderer['drawLines']>[4], color: Vec3, widthM: number, opacity: number, softness?: number, minWidthPerMetre?: number, additive?: boolean): void;
300
+ /** Release a batch of line segments. Takes no context; see `Renderer.disposeScatter`. */
301
+ disposeLines(lines: LineHandle): void;
302
+ /** Base geometry plus placement in, handle out. See `ScatterHandle` for why it is opaque. */
303
+ createScatter(base: MeshData, data: Parameters<Renderer['createScatter']>[1]): ScatterHandle;
304
+ /** Draw every live instance of a batch this renderer made, in one call. */
305
+ drawScatter(scatter: ScatterHandle, data: Parameters<Renderer['drawScatter']>[1], camera: Parameters<Renderer['drawScatter']>[2], env: Parameters<Renderer['drawScatter']>[3], windX: number, windZ: number, windGust: number, timeSeconds: number, trample?: Float32Array | null): void;
306
+ /** Push changed instances. Only for batches that move; foliage is uploaded once. */
307
+ uploadScatter(scatter: ScatterHandle, data: Parameters<Renderer['uploadScatter']>[1]): void;
308
+ /** Release a batch this renderer made. Takes no context; see `Renderer.disposeScatter`. */
309
+ disposeScatter(scatter: ScatterHandle): void;
310
+ /**
311
+ * Make a mesh drawable many times over, at up to `capacity` placements.
312
+ *
313
+ * **Takes a mesh already on the device**, unlike `createScatter`, which uploads its own base.
314
+ * The geometry an instanced draw repeats is usually the expensive kind — a loaded model rather
315
+ * than a blade of grass — and a second copy of it is the cost this exists to avoid.
316
+ *
317
+ * **One batch per mesh.** WebGL2 attaches the per-instance attributes to that mesh's own vertex
318
+ * array, of which a mesh has one, so a second batch would rebind the attributes the first draws
319
+ * through and place one batch's instances by the other's matrices. Refused, loudly.
320
+ *
321
+ * **What it gives up** is skinning and morphing on the instanced mesh: the joint attributes
322
+ * want the two locations the matrix does, and a morph weight is per draw, so every instance
323
+ * would wear one expression. Both are refused where the variant is built rather than dropped
324
+ * quietly.
325
+ */
326
+ createInstanced(mesh: MeshHandle, capacity: number): InstancedHandle;
327
+ /**
328
+ * Push placement and colour to the device. Only `data.count` instances are written.
329
+ *
330
+ * Called per frame for a batch that moves, exactly as `uploadScatter` is for one that does.
331
+ * Allocates nothing: the staging array belongs to the batch.
332
+ */
333
+ uploadInstanced(batch: InstancedHandle, data: MeshInstances): void;
334
+ /**
335
+ * Draw every live instance of a batch, in one call and one material.
336
+ *
337
+ * The material is whatever `setMaterial` and the surface setters last established, exactly as
338
+ * for `drawMesh` — which is the point: a batch spends **one** slot of the frame's material ring
339
+ * where the same meshes drawn individually spend one each.
340
+ */
341
+ drawInstanced(batch: InstancedHandle, data: MeshInstances): void;
342
+ /**
343
+ * The blended twin, for an instanced mesh whose material is not opaque.
344
+ *
345
+ * Takes the same options as `drawTranslucentMesh` and for the same reasons — a set of blended
346
+ * surfaces that all write depth rejects itself, so a model whose interior is glass wants
347
+ * `depthWrite: false` here as much as it does there.
348
+ */
349
+ drawTranslucentInstanced(batch: InstancedHandle, data: MeshInstances, opacity: number, options?: TranslucentMeshOptions): void;
350
+ /** Release a batch. The mesh it was attached to is the caller's and is not released. */
351
+ disposeInstanced(batch: InstancedHandle): void;
352
+ /** Build a body of water. See `WaterHandle` for why it is opaque. */
353
+ createWater(resolution?: number, nearExtent?: number, farHalfExtent?: number): WaterHandle;
354
+ /** Draw a body of water this renderer made, after the opaque scene. */
355
+ drawWater(water: WaterHandle, camera: Parameters<Renderer['drawWater']>[1], timeSeconds: number, settings: Parameters<Renderer['drawWater']>[3], env: Parameters<Renderer['drawWater']>[4], windX?: number, windZ?: number): void;
356
+ /** Release a body of water. Takes no context; see `Renderer.disposeScatter`. */
357
+ disposeWater(water: WaterHandle): void;
358
+ /** Build a plume batch from placements and a named material. */
359
+ createPlumes(plumes: Parameters<Renderer['createPlumes']>[0], options: Parameters<Renderer['createPlumes']>[1]): PlumeHandle;
360
+ /** Draw a plume batch, after the opaque scene. */
361
+ drawPlumes(plumes: PlumeHandle, camera: Parameters<Renderer['drawPlumes']>[1], timeSeconds: number, env: Parameters<Renderer['drawPlumes']>[3], windX?: number, windZ?: number, originX?: number, originY?: number, originZ?: number): void;
362
+ /** Release a plume batch. */
363
+ disposePlumes(plumes: PlumeHandle): void;
364
+ /**
365
+ * Build a particle pool from a capacity and a named material.
366
+ *
367
+ * **`reuse` is re-typed here, and it has to be.** `ParticleBatchOptions.reuse` names the
368
+ * concrete `ParticleBatch`, so the surface handed back a `ParticleHandle` from this very
369
+ * method and then refused to accept it — a consumer that had done everything else right
370
+ * could not share a program without holding the WebGL2 class it had just been moved off.
371
+ * That is the same defect as the one that pinned callers to `Renderer` itself, arrived at
372
+ * from the input side.
373
+ *
374
+ * **WebGPU ignores it, and that is correct rather than a gap.** Its pipelines are cached on
375
+ * `particle:${material}:${blend}` — exactly what decides the program — so pools that would
376
+ * have shared one already do. WebGL2 still needs telling, and still checks that the two
377
+ * materials match.
378
+ */
379
+ createParticles(capacity: number, options: Omit<Parameters<Renderer['createParticles']>[1], 'reuse'> & {
380
+ readonly reuse?: ParticleHandle;
381
+ }): ParticleHandle;
382
+ /** Draw a pool's live particles, after the opaque scene. */
383
+ drawParticles(batch: ParticleHandle, data: Parameters<Renderer['drawParticles']>[1], camera: Parameters<Renderer['drawParticles']>[2], env: Parameters<Renderer['drawParticles']>[3], timeSeconds: number): void;
384
+ /** Release a particle pool. */
385
+ disposeParticles(batch: ParticleHandle): void;
386
+ /** Draw a wet film over geometry, using a handle as the surface it lies on. */
387
+ drawFilm(mesh: MeshHandle, camera: Parameters<Renderer['drawFilm']>[1], timeSeconds: number, env: Parameters<Renderer['drawFilm']>[3], sheen: number, options?: Parameters<Renderer['drawFilm']>[5]): void;
388
+ /**
389
+ * Light the scene from an environment it did not photograph.
390
+ *
391
+ * Takes the equirectangular image rather than six faces, so the renderer converts at its own
392
+ * probe size and a caller cannot hand it faces of the wrong dimension. Downstream of the cube
393
+ * this is exactly a bake: the same prefilter, the same spherical-harmonic projection.
394
+ *
395
+ * Answers `false` and says why when the profile has no probe — `reflectionProbeSize` defaults to
396
+ * zero, so a consumer that never asked for one gets a refusal in words rather than an
397
+ * environment that silently did nothing.
398
+ */
399
+ setEnvironmentImage(image: {
400
+ readonly width: number;
401
+ readonly height: number;
402
+ readonly data: Float32Array;
403
+ }, options?: ProbeBakeOptions): boolean;
404
+ /** Draw a volume of light along the view ray, using a handle as its bounding geometry. */
405
+ drawLightVolume(mesh: MeshHandle, model: ReadonlyMat4, camera: Parameters<Renderer['drawLightVolume']>[2], strength: number, reachM: number, spread: number, options?: Parameters<Renderer['drawLightVolume']>[6]): void;
406
+ /**
407
+ * Geometry in, handle out. Widened for the reason `MeshHandle` explains: `Mesh` is nominal.
408
+ *
409
+ * The second member the derivation could not carry, and found the same way as the first —
410
+ * by a second backend failing to compile against it rather than by anybody noticing.
411
+ */
412
+ createMesh(data: MeshData, options?: MeshOptions): MeshHandle;
413
+ /**
414
+ * Geometry in, handle out — but the geometry lands over as many frames as the caller gives it.
415
+ *
416
+ * **What this is for.** A game streaming a world in squares held a 4 ms frame budget and
417
+ * honoured it exactly, for the half of the work it owned. The other half was one `createMesh`
418
+ * per material group, about two dozen a square, all of them in whichever frame the build
419
+ * happened to finish in and outside every budget. Attributed in the browser over a drive into
420
+ * a town, every frame over 50 ms was `createMesh` and nothing else, and disposal and
421
+ * bookkeeping never reached 2. Spreading a square across its groups would not have been
422
+ * enough: one group was 248,928 of that square's 367,542 triangles, so the group itself had to
423
+ * become divisible, and `createMesh` is where that is decided.
424
+ *
425
+ * Drive `upload` under a frame budget — `StepBudget` is the pump built for it — and the
426
+ * geometry arrives over as many frames as that allows. A mesh of *n* chunks takes exactly *n*
427
+ * calls, and the call that returns `done` is the one that does the last of the work.
428
+ *
429
+ * **A mesh that has not finished arriving is not drawn.** `complete` says so, and `drawMesh`,
430
+ * `drawTranslucentMesh` and `drawLightVolume` skip it in silence. Drawing what had landed was
431
+ * the alternative and is worse — a mesh whose triangle count grows over several frames is a
432
+ * stranger artefact than a square that is briefly absent, and it is the direction a streaming
433
+ * consumer already treats as safe. So a consumer that never drives the iterator gets a mesh
434
+ * that never appears, not a fan of triangles through the origin.
435
+ *
436
+ * **A lost device or context ends the upload.** The iterator reports `done` and the mesh stays
437
+ * incomplete, which is the pair that distinguishes an abandoned upload from a finished one.
438
+ * There is no way to detect a half-uploaded mesh from the outside, so the engine says what it
439
+ * does rather than leaving a consumer to guess.
440
+ *
441
+ * What is paid up front and not spread: validation, the bounds, the buffer allocations and the
442
+ * pipeline warming. The bounds are the deliberate one — a streamer places and culls a region
443
+ * from them before a byte of it has landed.
444
+ */
445
+ createMeshIncremental(data: MeshData, options?: MeshOptions): IncrementalMeshHandle;
446
+ /**
447
+ * Rewrite a mesh's positions, and its normals where the caller has them.
448
+ *
449
+ * **What this exists for is cloth**, and it is a gap the engine shipped with: `ClothBody` has
450
+ * been in `@driftengine/physics` since 2.9 and nothing could draw its output. A mesh was
451
+ * immutable, so a deforming surface could only be drawn by recreating it every frame — a GPU
452
+ * buffer allocation per frame, which the frame rules forbid — or by splitting it into rigid
453
+ * quads with a matrix each, which caps the resolution at the number of draw calls a consumer
454
+ * can afford. A consumer found it by trying to hang a banner.
455
+ *
456
+ * **Only positions and normals.** Colour, emissive and the rest describe what a surface *is*
457
+ * and do not change because it bent; rewriting them every frame would be uploading unchanged
458
+ * bytes. The vertex *count* is fixed: the index buffer, the pipeline and every other attribute
459
+ * are sized against it, and an update of a different size is refused naming both.
460
+ *
461
+ * The mesh must have been created with `{ dynamic: true }`. That is not ceremony — it decides
462
+ * the buffer hint on one backend and what has to be kept on the other, and a mesh that never
463
+ * deforms should pay for neither.
464
+ */
465
+ updateMesh(mesh: MeshHandle, positions: Float32Array, normals?: Float32Array): void;
466
+ /** Draw a handle this renderer made. Passing one from the other backend is a caller error. */
467
+ drawMesh(mesh: MeshHandle, model: ReadonlyMat4, depthLayer?: number, tint?: Vec3 | null): void;
468
+ /** Release the geometry behind a handle. */
469
+ disposeMesh(mesh: MeshHandle): void;
470
+ /**
471
+ * Draw a handle with blending, back to front against what is already there.
472
+ *
473
+ * Lit and fogged by default; `options` can turn either off, independently — see
474
+ * `TranslucentMeshOptions` and `Renderer.drawTranslucentMesh` for what each means and why
475
+ * a caller might want one without the other. Both backends read the same defaults, so a
476
+ * call with no fourth argument draws exactly as it did before this existed.
477
+ *
478
+ * `depthWrite` and `depthLayer` are the two that decide how a *set* of blended surfaces
479
+ * resolves against itself: whether this draw claims the depth buffer, and which of two
480
+ * coplanar surfaces wins where they coincide. Per-draw state on WebGL2 and pipeline state on
481
+ * WebGPU, and the same depth either way — `depthOffsetForLayer` is the one decision both read.
482
+ */
483
+ drawTranslucentMesh(mesh: MeshHandle, model: ReadonlyMat4, opacity: number, options?: TranslucentMeshOptions): void;
484
+ /**
485
+ * Widened, because this is the one member that cannot cross as it stands.
486
+ *
487
+ * `GpuTimer` is a `WebGLQuery` pool. Left derived, it would oblige a WebGPU renderer to
488
+ * produce one, which it cannot do and should not fake. Every other member of this surface
489
+ * is already backend-neutral; the audit that established that is worth repeating before
490
+ * anything else is overridden here, because each override is a place the two backends are
491
+ * allowed to differ and therefore a place the compiler stops helping.
492
+ */
493
+ readonly gpuTimer: FrameTimer;
494
+ };
495
+ /** Which backend is actually drawing. Reported, never inferred. */
496
+ export type RenderBackend = 'webgl2' | 'webgpu';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
1
+ /**
2
+ * What a frame asked of a backend, against what that backend allows.
3
+ *
4
+ * **This exists because a ceiling firing was unobservable.** The WebGPU backend holds ten per-frame
5
+ * ceilings — draws, material changes, overlays, water bodies, light volumes, plumes, three kinds of
6
+ * effect batch and the scatter shadow round — and past any of them it skips the work and writes one
7
+ * `console.warn` for the lifetime of the renderer. WebGL2 holds none of them and draws everything.
8
+ * So a scene over a ceiling renders differently on the two backends, silently, and a consumer
9
+ * developing against WebGL2 has no way to see it coming.
10
+ *
11
+ * **The cost of that was measured from outside.** A consumer spent weeks on ground that
12
+ * vanished and reappeared as the camera moved; its own report still lists, as the decisive
13
+ * experiment nobody has run, *"ask the reporter for the console"*. It wrote a draw counter and a
14
+ * per-material `reach` field of its own to guess at a worst case this renderer already knew
15
+ * exactly.
16
+ *
17
+ * **A count, not a log.** A warning cannot be asserted on, cannot be read from a headless check,
18
+ * and is gone by the time anybody looks. A number can be all three, and the whole point of the
19
+ * shape below is that `dropped` is one boolean a consumer's own suite can fail on.
20
+ */
21
+ /** One ceiling's frame. Updated in place, so holding a reference to it is the intended use. */
22
+ export interface BudgetLine {
23
+ /** What a consumer would call the thing, not what the ring holding it is called. */
24
+ readonly name: string;
25
+ /**
26
+ * How many were **asked for**, including any that were refused.
27
+ *
28
+ * The distinction is the whole value of this field. A ring naturally knows how many slots it
29
+ * handed out, which tops out at the ceiling and says a frame is exactly full; what a consumer
30
+ * needs is how far past it the scene went, because that is the number that says how much to cut.
31
+ */
32
+ readonly used: number;
33
+ /** The ceiling, or `null` where this backend imposes none. */
34
+ readonly ceiling: number | null;
35
+ /** How many were asked for and not drawn. */
36
+ readonly dropped: number;
37
+ }
38
+ /**
39
+ * The half a backend writes: a line it can count against.
40
+ *
41
+ * Separate from `BudgetLine` so that what a consumer is handed is read-only — a caller able to
42
+ * call `drop()` on the renderer's own budget could clear a check that was about to fail.
43
+ */
44
+ export interface BudgetCounter extends BudgetLine {
45
+ /** One more of this thing was asked for, whether or not it will fit. */
46
+ ask(): void;
47
+ /** One of them was refused, and the frame is marked. */
48
+ drop(): void;
49
+ }
50
+ /**
51
+ * Every ceiling a backend imposes, counted for the frame just drawn.
52
+ *
53
+ * **The lines and the array holding them are allocated once and updated in place**, so a consumer
54
+ * reading this every frame allocates nothing — which is what `AGENTS.md` requires of anything on a
55
+ * per-frame path, and a budget nobody can afford to read every frame is a budget nobody reads.
56
+ */
57
+ export declare class FrameBudget {
58
+ private readonly all;
59
+ private anyDropped;
60
+ /**
61
+ * Declare a line. Called at construction, never in a frame.
62
+ *
63
+ * `ceiling` is `null` for a backend that imposes none — reported rather than omitted, because a
64
+ * line that disappears on one backend is a line a cross-backend check cannot compare.
65
+ */
66
+ line(name: string, ceiling: number | null): BudgetCounter;
67
+ /** Every line, in the order declared. The same array every frame. */
68
+ get lines(): readonly BudgetLine[];
69
+ /**
70
+ * Whether anything at all was refused this frame.
71
+ *
72
+ * **The one thing worth asserting on**, and the reason it is a field rather than a walk over
73
+ * `lines`: a consumer's headless check wants `expect(renderer.frameBudget.dropped).toBe(false)`
74
+ * on every scene it renders, and a check that has to know which lines exist is a check that
75
+ * misses the line added after it was written.
76
+ */
77
+ get dropped(): boolean;
78
+ /** @internal Marked by a line, not by a caller. */
79
+ markDropped(): void;
80
+ /** Start a frame. Keeps every line object; clears what they hold. */
81
+ reset(): void;
82
+ }