@ifc-lite/renderer 3.2.0 → 5.0.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 (399) hide show
  1. package/dist/aabb-edges.d.ts +10 -0
  2. package/dist/aabb-edges.d.ts.map +1 -1
  3. package/dist/aabb-edges.js +13 -0
  4. package/dist/aabb-edges.js.map +1 -1
  5. package/dist/ao-params.d.ts +85 -0
  6. package/dist/ao-params.d.ts.map +1 -0
  7. package/dist/ao-params.js +109 -0
  8. package/dist/ao-params.js.map +1 -0
  9. package/dist/ao-pass.d.ts +47 -0
  10. package/dist/ao-pass.d.ts.map +1 -0
  11. package/dist/ao-pass.js +157 -0
  12. package/dist/ao-pass.js.map +1 -0
  13. package/dist/camera-matrices.d.ts +3 -0
  14. package/dist/camera-matrices.d.ts.map +1 -1
  15. package/dist/camera-matrices.js +12 -1
  16. package/dist/camera-matrices.js.map +1 -1
  17. package/dist/camera-orientation.d.ts +62 -0
  18. package/dist/camera-orientation.d.ts.map +1 -0
  19. package/dist/camera-orientation.js +155 -0
  20. package/dist/camera-orientation.js.map +1 -0
  21. package/dist/camera-projection.d.ts +3 -1
  22. package/dist/camera-projection.d.ts.map +1 -1
  23. package/dist/camera-projection.js +26 -20
  24. package/dist/camera-projection.js.map +1 -1
  25. package/dist/camera-surface-zoom.d.ts +32 -0
  26. package/dist/camera-surface-zoom.d.ts.map +1 -0
  27. package/dist/camera-surface-zoom.js +37 -0
  28. package/dist/camera-surface-zoom.js.map +1 -0
  29. package/dist/camera.d.ts +32 -61
  30. package/dist/camera.d.ts.map +1 -1
  31. package/dist/camera.js +71 -167
  32. package/dist/camera.js.map +1 -1
  33. package/dist/clash-solid-pipeline.d.ts +9 -3
  34. package/dist/clash-solid-pipeline.d.ts.map +1 -1
  35. package/dist/clash-solid-pipeline.js +31 -8
  36. package/dist/clash-solid-pipeline.js.map +1 -1
  37. package/dist/constants.d.ts +1 -1
  38. package/dist/constants.d.ts.map +1 -1
  39. package/dist/constants.js +4 -3
  40. package/dist/constants.js.map +1 -1
  41. package/dist/depth-reconstruct.d.ts +43 -0
  42. package/dist/depth-reconstruct.d.ts.map +1 -0
  43. package/dist/depth-reconstruct.js +35 -0
  44. package/dist/depth-reconstruct.js.map +1 -0
  45. package/dist/device.js +1 -1
  46. package/dist/device.js.map +1 -1
  47. package/dist/edge-params.d.ts +43 -0
  48. package/dist/edge-params.d.ts.map +1 -0
  49. package/dist/edge-params.js +63 -0
  50. package/dist/edge-params.js.map +1 -0
  51. package/dist/edge-pass.d.ts +38 -0
  52. package/dist/edge-pass.d.ts.map +1 -0
  53. package/dist/edge-pass.js +111 -0
  54. package/dist/edge-pass.js.map +1 -0
  55. package/dist/environment.d.ts +26 -15
  56. package/dist/environment.d.ts.map +1 -1
  57. package/dist/environment.js +24 -13
  58. package/dist/environment.js.map +1 -1
  59. package/dist/federation-registry.d.ts +16 -0
  60. package/dist/federation-registry.d.ts.map +1 -1
  61. package/dist/federation-registry.js +80 -9
  62. package/dist/federation-registry.js.map +1 -1
  63. package/dist/gpu-static-upload.d.ts +39 -0
  64. package/dist/gpu-static-upload.d.ts.map +1 -0
  65. package/dist/gpu-static-upload.js +70 -0
  66. package/dist/gpu-static-upload.js.map +1 -0
  67. package/dist/gpu-upload-guard.d.ts +12 -23
  68. package/dist/gpu-upload-guard.d.ts.map +1 -1
  69. package/dist/gpu-upload-guard.js +12 -26
  70. package/dist/gpu-upload-guard.js.map +1 -1
  71. package/dist/index.d.ts +58 -35
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +255 -284
  74. package/dist/index.js.map +1 -1
  75. package/dist/instanced-render.d.ts +25 -5
  76. package/dist/instanced-render.d.ts.map +1 -1
  77. package/dist/instanced-render.js +50 -13
  78. package/dist/instanced-render.js.map +1 -1
  79. package/dist/instanced-rte.d.ts +17 -0
  80. package/dist/instanced-rte.d.ts.map +1 -0
  81. package/dist/instanced-rte.js +32 -0
  82. package/dist/instanced-rte.js.map +1 -0
  83. package/dist/mesh-material.d.ts +26 -0
  84. package/dist/mesh-material.d.ts.map +1 -0
  85. package/dist/mesh-material.js +52 -0
  86. package/dist/mesh-material.js.map +1 -0
  87. package/dist/mesh-rte-uniforms.d.ts +47 -0
  88. package/dist/mesh-rte-uniforms.d.ts.map +1 -0
  89. package/dist/mesh-rte-uniforms.js +60 -0
  90. package/dist/mesh-rte-uniforms.js.map +1 -0
  91. package/dist/model-bounds-tracker.d.ts +7 -0
  92. package/dist/model-bounds-tracker.d.ts.map +1 -1
  93. package/dist/model-bounds-tracker.js +16 -5
  94. package/dist/model-bounds-tracker.js.map +1 -1
  95. package/dist/model-translation.d.ts +1 -1
  96. package/dist/model-translation.d.ts.map +1 -1
  97. package/dist/model-translation.js +50 -2
  98. package/dist/model-translation.js.map +1 -1
  99. package/dist/overlay-theme-uniforms.d.ts +54 -0
  100. package/dist/overlay-theme-uniforms.d.ts.map +1 -0
  101. package/dist/overlay-theme-uniforms.js +89 -0
  102. package/dist/overlay-theme-uniforms.js.map +1 -0
  103. package/dist/overlay-theme.d.ts +73 -0
  104. package/dist/overlay-theme.d.ts.map +1 -0
  105. package/dist/overlay-theme.js +24 -0
  106. package/dist/overlay-theme.js.map +1 -0
  107. package/dist/pick-rte-snapshot.d.ts +7 -0
  108. package/dist/pick-rte-snapshot.d.ts.map +1 -0
  109. package/dist/pick-rte-snapshot.js +15 -0
  110. package/dist/pick-rte-snapshot.js.map +1 -0
  111. package/dist/pick-types.d.ts +17 -0
  112. package/dist/pick-types.d.ts.map +1 -0
  113. package/dist/pick-types.js +5 -0
  114. package/dist/pick-types.js.map +1 -0
  115. package/dist/pick-uniforms.d.ts +6 -0
  116. package/dist/pick-uniforms.d.ts.map +1 -1
  117. package/dist/pick-uniforms.js +22 -18
  118. package/dist/pick-uniforms.js.map +1 -1
  119. package/dist/pick-world-position.d.ts +18 -0
  120. package/dist/pick-world-position.d.ts.map +1 -0
  121. package/dist/pick-world-position.js +21 -0
  122. package/dist/pick-world-position.js.map +1 -0
  123. package/dist/picker-readbacks.d.ts +6 -0
  124. package/dist/picker-readbacks.d.ts.map +1 -0
  125. package/dist/picker-readbacks.js +20 -0
  126. package/dist/picker-readbacks.js.map +1 -0
  127. package/dist/picker-rte-uniforms.d.ts +6 -0
  128. package/dist/picker-rte-uniforms.d.ts.map +1 -0
  129. package/dist/picker-rte-uniforms.js +41 -0
  130. package/dist/picker-rte-uniforms.js.map +1 -0
  131. package/dist/picker.d.ts +6 -7
  132. package/dist/picker.d.ts.map +1 -1
  133. package/dist/picker.js +88 -115
  134. package/dist/picker.js.map +1 -1
  135. package/dist/picking-manager.d.ts +8 -0
  136. package/dist/picking-manager.d.ts.map +1 -1
  137. package/dist/picking-manager.js +46 -19
  138. package/dist/picking-manager.js.map +1 -1
  139. package/dist/pipeline.d.ts +3 -7
  140. package/dist/pipeline.d.ts.map +1 -1
  141. package/dist/pipeline.js +27 -31
  142. package/dist/pipeline.js.map +1 -1
  143. package/dist/point-picker.d.ts +5 -1
  144. package/dist/point-picker.d.ts.map +1 -1
  145. package/dist/point-picker.js +49 -9
  146. package/dist/point-picker.js.map +1 -1
  147. package/dist/pointcloud/point-cloud-handle-ids.d.ts +22 -0
  148. package/dist/pointcloud/point-cloud-handle-ids.d.ts.map +1 -0
  149. package/dist/pointcloud/point-cloud-handle-ids.js +31 -0
  150. package/dist/pointcloud/point-cloud-handle-ids.js.map +1 -0
  151. package/dist/pointcloud/point-cloud-node.d.ts +14 -6
  152. package/dist/pointcloud/point-cloud-node.d.ts.map +1 -1
  153. package/dist/pointcloud/point-cloud-node.js.map +1 -1
  154. package/dist/pointcloud/point-cloud-pick-sources.d.ts +47 -0
  155. package/dist/pointcloud/point-cloud-pick-sources.d.ts.map +1 -0
  156. package/dist/pointcloud/point-cloud-pick-sources.js +32 -0
  157. package/dist/pointcloud/point-cloud-pick-sources.js.map +1 -0
  158. package/dist/pointcloud/point-cloud-placement.d.ts.map +1 -1
  159. package/dist/pointcloud/point-cloud-placement.js +20 -5
  160. package/dist/pointcloud/point-cloud-placement.js.map +1 -1
  161. package/dist/pointcloud/point-cloud-ray-transform.d.ts +78 -4
  162. package/dist/pointcloud/point-cloud-ray-transform.d.ts.map +1 -1
  163. package/dist/pointcloud/point-cloud-ray-transform.js +31 -84
  164. package/dist/pointcloud/point-cloud-ray-transform.js.map +1 -1
  165. package/dist/pointcloud/point-cloud-renderer.d.ts +21 -19
  166. package/dist/pointcloud/point-cloud-renderer.d.ts.map +1 -1
  167. package/dist/pointcloud/point-cloud-renderer.js +46 -52
  168. package/dist/pointcloud/point-cloud-renderer.js.map +1 -1
  169. package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts +44 -0
  170. package/dist/pointcloud/point-cloud-stream-lifecycle.d.ts.map +1 -0
  171. package/dist/pointcloud/point-cloud-stream-lifecycle.js +44 -0
  172. package/dist/pointcloud/point-cloud-stream-lifecycle.js.map +1 -0
  173. package/dist/pointcloud/point-cloud-uniforms.d.ts +5 -0
  174. package/dist/pointcloud/point-cloud-uniforms.d.ts.map +1 -1
  175. package/dist/pointcloud/point-cloud-uniforms.js +55 -44
  176. package/dist/pointcloud/point-cloud-uniforms.js.map +1 -1
  177. package/dist/pointcloud/point-cloud-visibility.d.ts +10 -0
  178. package/dist/pointcloud/point-cloud-visibility.d.ts.map +1 -0
  179. package/dist/pointcloud/point-cloud-visibility.js +18 -0
  180. package/dist/pointcloud/point-cloud-visibility.js.map +1 -0
  181. package/dist/pointcloud/point-pipeline.d.ts +4 -9
  182. package/dist/pointcloud/point-pipeline.d.ts.map +1 -1
  183. package/dist/pointcloud/point-pipeline.js +4 -9
  184. package/dist/pointcloud/point-pipeline.js.map +1 -1
  185. package/dist/pointcloud/point-shader.wgsl.d.ts +1 -21
  186. package/dist/pointcloud/point-shader.wgsl.d.ts.map +1 -1
  187. package/dist/pointcloud/point-shader.wgsl.js +25 -5
  188. package/dist/pointcloud/point-shader.wgsl.js.map +1 -1
  189. package/dist/post-pass-chain.d.ts +38 -0
  190. package/dist/post-pass-chain.d.ts.map +1 -0
  191. package/dist/post-pass-chain.js +105 -0
  192. package/dist/post-pass-chain.js.map +1 -0
  193. package/dist/raycast-engine.d.ts +7 -5
  194. package/dist/raycast-engine.d.ts.map +1 -1
  195. package/dist/raycast-engine.js +17 -20
  196. package/dist/raycast-engine.js.map +1 -1
  197. package/dist/raycast-point-cloud-query.d.ts +1 -1
  198. package/dist/raycast-point-cloud-query.d.ts.map +1 -1
  199. package/dist/reference-image-pipeline.d.ts +1 -1
  200. package/dist/reference-image-pipeline.d.ts.map +1 -1
  201. package/dist/reference-image-pipeline.js +25 -7
  202. package/dist/reference-image-pipeline.js.map +1 -1
  203. package/dist/reference-images.d.ts +1 -1
  204. package/dist/reference-images.d.ts.map +1 -1
  205. package/dist/reference-images.js +13 -5
  206. package/dist/reference-images.js.map +1 -1
  207. package/dist/relative-to-eye.d.ts +146 -0
  208. package/dist/relative-to-eye.d.ts.map +1 -0
  209. package/dist/relative-to-eye.js +326 -0
  210. package/dist/relative-to-eye.js.map +1 -0
  211. package/dist/render-section-draw.d.ts +11 -0
  212. package/dist/render-section-draw.d.ts.map +1 -1
  213. package/dist/render-section-draw.js +6 -3
  214. package/dist/render-section-draw.js.map +1 -1
  215. package/dist/renderer-color-readback.d.ts +50 -0
  216. package/dist/renderer-color-readback.d.ts.map +1 -0
  217. package/dist/renderer-color-readback.js +145 -0
  218. package/dist/renderer-color-readback.js.map +1 -0
  219. package/dist/renderer-overlays.d.ts +20 -10
  220. package/dist/renderer-overlays.d.ts.map +1 -1
  221. package/dist/renderer-overlays.js +44 -34
  222. package/dist/renderer-overlays.js.map +1 -1
  223. package/dist/renderer-screenshot.d.ts +4 -0
  224. package/dist/renderer-screenshot.d.ts.map +1 -0
  225. package/dist/renderer-screenshot.js +17 -0
  226. package/dist/renderer-screenshot.js.map +1 -0
  227. package/dist/renderer-symbolic-overlays.d.ts +4 -2
  228. package/dist/renderer-symbolic-overlays.d.ts.map +1 -1
  229. package/dist/renderer-symbolic-overlays.js +33 -13
  230. package/dist/renderer-symbolic-overlays.js.map +1 -1
  231. package/dist/renderer-viewport.d.ts +45 -0
  232. package/dist/renderer-viewport.d.ts.map +1 -1
  233. package/dist/renderer-viewport.js +44 -0
  234. package/dist/renderer-viewport.js.map +1 -1
  235. package/dist/rte-clip-space.d.ts +12 -0
  236. package/dist/rte-clip-space.d.ts.map +1 -0
  237. package/dist/rte-clip-space.js +22 -0
  238. package/dist/rte-clip-space.js.map +1 -0
  239. package/dist/rte-frustum.d.ts +24 -0
  240. package/dist/rte-frustum.d.ts.map +1 -0
  241. package/dist/rte-frustum.js +45 -0
  242. package/dist/rte-frustum.js.map +1 -0
  243. package/dist/scene-batch-upload.d.ts.map +1 -1
  244. package/dist/scene-batch-upload.js +14 -38
  245. package/dist/scene-batch-upload.js.map +1 -1
  246. package/dist/scene-device-recovery.d.ts.map +1 -1
  247. package/dist/scene-device-recovery.js +5 -9
  248. package/dist/scene-device-recovery.js.map +1 -1
  249. package/dist/scene-finalize-regroup.d.ts +54 -0
  250. package/dist/scene-finalize-regroup.d.ts.map +1 -0
  251. package/dist/scene-finalize-regroup.js +136 -0
  252. package/dist/scene-finalize-regroup.js.map +1 -0
  253. package/dist/scene-instance-bounds.d.ts +12 -0
  254. package/dist/scene-instance-bounds.d.ts.map +1 -0
  255. package/dist/scene-instance-bounds.js +48 -0
  256. package/dist/scene-instance-bounds.js.map +1 -0
  257. package/dist/scene-instance-materialization.d.ts +4 -1
  258. package/dist/scene-instance-materialization.d.ts.map +1 -1
  259. package/dist/scene-instance-materialization.js +21 -6
  260. package/dist/scene-instance-materialization.js.map +1 -1
  261. package/dist/scene-instance-translation.d.ts +17 -0
  262. package/dist/scene-instance-translation.d.ts.map +1 -0
  263. package/dist/scene-instance-translation.js +50 -0
  264. package/dist/scene-instance-translation.js.map +1 -0
  265. package/dist/scene-instance-types.d.ts +6 -0
  266. package/dist/scene-instance-types.d.ts.map +1 -1
  267. package/dist/scene-model-translation.d.ts +2 -0
  268. package/dist/scene-model-translation.d.ts.map +1 -1
  269. package/dist/scene-model-translation.js +1 -1
  270. package/dist/scene-model-translation.js.map +1 -1
  271. package/dist/scene-rect-select.d.ts +11 -1
  272. package/dist/scene-rect-select.d.ts.map +1 -1
  273. package/dist/scene-rect-select.js +7 -4
  274. package/dist/scene-rect-select.js.map +1 -1
  275. package/dist/scene.d.ts +27 -20
  276. package/dist/scene.d.ts.map +1 -1
  277. package/dist/scene.js +109 -238
  278. package/dist/scene.js.map +1 -1
  279. package/dist/section-2d-lift.d.ts +10 -2
  280. package/dist/section-2d-lift.d.ts.map +1 -1
  281. package/dist/section-2d-lift.js +14 -6
  282. package/dist/section-2d-lift.js.map +1 -1
  283. package/dist/section-2d-line-buffer.d.ts +12 -4
  284. package/dist/section-2d-line-buffer.d.ts.map +1 -1
  285. package/dist/section-2d-line-buffer.js +59 -33
  286. package/dist/section-2d-line-buffer.js.map +1 -1
  287. package/dist/section-2d-overlay.d.ts +18 -72
  288. package/dist/section-2d-overlay.d.ts.map +1 -1
  289. package/dist/section-2d-overlay.js +72 -103
  290. package/dist/section-2d-overlay.js.map +1 -1
  291. package/dist/section-2d-types.d.ts +38 -0
  292. package/dist/section-2d-types.d.ts.map +1 -0
  293. package/dist/section-2d-types.js +6 -0
  294. package/dist/section-2d-types.js.map +1 -0
  295. package/dist/section-cap-pipelines.d.ts +6 -0
  296. package/dist/section-cap-pipelines.d.ts.map +1 -0
  297. package/dist/section-cap-pipelines.js +87 -0
  298. package/dist/section-cap-pipelines.js.map +1 -0
  299. package/dist/section-plane-geometry.d.ts +24 -0
  300. package/dist/section-plane-geometry.d.ts.map +1 -0
  301. package/dist/section-plane-geometry.js +93 -0
  302. package/dist/section-plane-geometry.js.map +1 -0
  303. package/dist/section-plane.d.ts +26 -24
  304. package/dist/section-plane.d.ts.map +1 -1
  305. package/dist/section-plane.js +57 -182
  306. package/dist/section-plane.js.map +1 -1
  307. package/dist/shaders/ao.wgsl.d.ts +2 -0
  308. package/dist/shaders/ao.wgsl.d.ts.map +1 -0
  309. package/dist/shaders/ao.wgsl.js +234 -0
  310. package/dist/shaders/ao.wgsl.js.map +1 -0
  311. package/dist/shaders/color-transfer.wgsl.d.ts +28 -0
  312. package/dist/shaders/color-transfer.wgsl.d.ts.map +1 -0
  313. package/dist/shaders/color-transfer.wgsl.js +55 -0
  314. package/dist/shaders/color-transfer.wgsl.js.map +1 -0
  315. package/dist/shaders/depth-reconstruct.wgsl.d.ts +16 -0
  316. package/dist/shaders/depth-reconstruct.wgsl.d.ts.map +1 -0
  317. package/dist/shaders/depth-reconstruct.wgsl.js +69 -0
  318. package/dist/shaders/depth-reconstruct.wgsl.js.map +1 -0
  319. package/dist/shaders/edges.wgsl.d.ts +2 -0
  320. package/dist/shaders/edges.wgsl.d.ts.map +1 -0
  321. package/dist/shaders/edges.wgsl.js +158 -0
  322. package/dist/shaders/edges.wgsl.js.map +1 -0
  323. package/dist/shaders/main-rte-shadow.wgsl.d.ts +4 -0
  324. package/dist/shaders/main-rte-shadow.wgsl.d.ts.map +1 -0
  325. package/dist/shaders/main-rte-shadow.wgsl.js +54 -0
  326. package/dist/shaders/main-rte-shadow.wgsl.js.map +1 -0
  327. package/dist/shaders/main.wgsl.d.ts +1 -6
  328. package/dist/shaders/main.wgsl.d.ts.map +1 -1
  329. package/dist/shaders/main.wgsl.js +183 -228
  330. package/dist/shaders/main.wgsl.js.map +1 -1
  331. package/dist/shaders/relative-to-eye.wgsl.d.ts +12 -0
  332. package/dist/shaders/relative-to-eye.wgsl.d.ts.map +1 -0
  333. package/dist/shaders/relative-to-eye.wgsl.js +40 -0
  334. package/dist/shaders/relative-to-eye.wgsl.js.map +1 -0
  335. package/dist/shaders/section-2d-overlay.wgsl.d.ts +28 -12
  336. package/dist/shaders/section-2d-overlay.wgsl.d.ts.map +1 -1
  337. package/dist/shaders/section-2d-overlay.wgsl.js +40 -13
  338. package/dist/shaders/section-2d-overlay.wgsl.js.map +1 -1
  339. package/dist/shaders/shadow.wgsl.d.ts +1 -1
  340. package/dist/shaders/shadow.wgsl.d.ts.map +1 -1
  341. package/dist/shaders/shadow.wgsl.js +25 -7
  342. package/dist/shaders/shadow.wgsl.js.map +1 -1
  343. package/dist/shaders/sky.wgsl.d.ts +1 -11
  344. package/dist/shaders/sky.wgsl.d.ts.map +1 -1
  345. package/dist/shaders/sky.wgsl.js +17 -19
  346. package/dist/shaders/sky.wgsl.js.map +1 -1
  347. package/dist/shaders/specular.wgsl.d.ts +34 -0
  348. package/dist/shaders/specular.wgsl.d.ts.map +1 -0
  349. package/dist/shaders/specular.wgsl.js +134 -0
  350. package/dist/shaders/specular.wgsl.js.map +1 -0
  351. package/dist/shaders/symbolic-overlay.wgsl.d.ts +2 -9
  352. package/dist/shaders/symbolic-overlay.wgsl.d.ts.map +1 -1
  353. package/dist/shaders/symbolic-overlay.wgsl.js +88 -17
  354. package/dist/shaders/symbolic-overlay.wgsl.js.map +1 -1
  355. package/dist/shaders/textured.wgsl.d.ts.map +1 -1
  356. package/dist/shaders/textured.wgsl.js +11 -9
  357. package/dist/shaders/textured.wgsl.js.map +1 -1
  358. package/dist/shadow-light-matrix.d.ts +7 -0
  359. package/dist/shadow-light-matrix.d.ts.map +1 -1
  360. package/dist/shadow-light-matrix.js +11 -0
  361. package/dist/shadow-light-matrix.js.map +1 -1
  362. package/dist/shadow-occluder-batches.d.ts +10 -0
  363. package/dist/shadow-occluder-batches.d.ts.map +1 -0
  364. package/dist/shadow-occluder-batches.js +39 -0
  365. package/dist/shadow-occluder-batches.js.map +1 -0
  366. package/dist/shadow-occluders.d.ts.map +1 -1
  367. package/dist/shadow-occluders.js +4 -0
  368. package/dist/shadow-occluders.js.map +1 -1
  369. package/dist/shadow-pass.d.ts +5 -51
  370. package/dist/shadow-pass.d.ts.map +1 -1
  371. package/dist/shadow-pass.js +49 -45
  372. package/dist/shadow-pass.js.map +1 -1
  373. package/dist/shadow-types.d.ts +39 -0
  374. package/dist/shadow-types.d.ts.map +1 -0
  375. package/dist/shadow-types.js +15 -0
  376. package/dist/shadow-types.js.map +1 -0
  377. package/dist/symbolic-overlay-geometry.d.ts +7 -0
  378. package/dist/symbolic-overlay-geometry.d.ts.map +1 -0
  379. package/dist/symbolic-overlay-geometry.js +43 -0
  380. package/dist/symbolic-overlay-geometry.js.map +1 -0
  381. package/dist/symbolic-overlay-pipelines.d.ts +24 -36
  382. package/dist/symbolic-overlay-pipelines.d.ts.map +1 -1
  383. package/dist/symbolic-overlay-pipelines.js +175 -182
  384. package/dist/symbolic-overlay-pipelines.js.map +1 -1
  385. package/dist/symbolic-text-atlas.d.ts +21 -0
  386. package/dist/symbolic-text-atlas.d.ts.map +1 -1
  387. package/dist/symbolic-text-atlas.js +29 -1
  388. package/dist/symbolic-text-atlas.js.map +1 -1
  389. package/dist/types.d.ts +20 -26
  390. package/dist/types.d.ts.map +1 -1
  391. package/dist/visual-enhancement.d.ts +30 -1
  392. package/dist/visual-enhancement.d.ts.map +1 -1
  393. package/dist/visual-enhancement.js +44 -12
  394. package/dist/visual-enhancement.js.map +1 -1
  395. package/package.json +3 -3
  396. package/dist/post-processor.d.ts +0 -60
  397. package/dist/post-processor.d.ts.map +0 -1
  398. package/dist/post-processor.js +0 -353
  399. package/dist/post-processor.js.map +0 -1
@@ -25,13 +25,12 @@
25
25
  * Rust (`verify_recomposition`), this lands instanced + flat geometry in one
26
26
  * frame. (See instanced-render.test.ts for the GPU-free proof.)
27
27
  *
28
- * PRECISION: the per-instance matrix is f32, so its translation jitters at
29
- * national-grid magnitudes (the f32-collapse the local-frame work targets). Fine
30
- * for building-local models; an f64 per-instance origin is the path for
31
- * georef-scale. That would be IFNS v3: v2 and header word 7 are both spent —
32
- * word 7 now carries the instance record stride (#2985), and an f64 origin is a
33
- * per-instance field, so it appends as trailing field 2 behind `itemId` and
34
- * moves the stride from 92 to 116 rather than claiming a header word. */
28
+ * PRECISION: the GPU record remains an f32 matrix for V1 rendering, but the
29
+ * decoded template origin is f64. V2 appends high/low lanes to the record.
30
+ * CPU records retain a split world anchor, while each render submission replaces
31
+ * the GPU copy with the f64 drawable-minus-camera delta. This keeps colour,
32
+ * picking, and shadows in one precision contract without GPU world subtraction.
33
+ */
35
34
  import { MathUtils } from './math.js';
36
35
  import { OPAQUE_ALPHA_CUTOFF } from './overlay-routing.js';
37
36
  /**
@@ -56,11 +55,14 @@ export const SWAP_ZUP_TO_YUP = {
56
55
  * [68..83] rgba (4 f32)
57
56
  * [84..87] flags (u32 — bit 0 = selected; bit 1 = hidden)
58
57
  */
59
- export const INSTANCE_STRIDE_BYTES = 88;
58
+ export const INSTANCE_STRIDE_BYTES = 120;
60
59
  /** Byte offset of the rgba colour within an instance record (patched by lens/IDS overlays). */
61
60
  export const INSTANCE_COLOR_OFFSET = 68;
62
61
  /** Byte offset of the flags u32 within an instance record (patched by selection/visibility). */
63
62
  export const INSTANCE_FLAGS_OFFSET = 84;
63
+ /** V2: two vec4 lanes hold a split Y-up source anchor on CPU, submission delta on GPU. */
64
+ export const INSTANCE_ANCHOR_HIGH_OFFSET = 88;
65
+ export const INSTANCE_ANCHOR_LOW_OFFSET = 104;
64
66
  /** flags bit 0 — this occurrence is selected (blue highlight in the shader). */
65
67
  export const INSTANCE_FLAG_SELECTED = 1;
66
68
  /** flags bit 1 — this occurrence is hidden (hide/isolate); the shader discards it
@@ -94,12 +96,28 @@ export function composeInstanceMatrix(transformRowMajor, origin) {
94
96
  const instMat = MathUtils.multiply(SWAP_ZUP_TO_YUP, MathUtils.multiply(relK, t));
95
97
  return instMat.m;
96
98
  }
99
+ /**
100
+ * Canonical f64 world anchor for one occurrence's template origin. The IFNS
101
+ * transform coefficients are f32 by format, but evaluating them against the
102
+ * template's f64 origin before narrowing preserves the source residual that a
103
+ * composed f32 translation loses at national-grid offsets. Result is renderer
104
+ * Y-up, matching `composeInstanceMatrix` and every CPU consumer.
105
+ */
106
+ export function composeInstanceAnchor(transformRowMajor, origin) {
107
+ const x = transformRowMajor[0] * origin[0] + transformRowMajor[1] * origin[1]
108
+ + transformRowMajor[2] * origin[2] + transformRowMajor[3];
109
+ const y = transformRowMajor[4] * origin[0] + transformRowMajor[5] * origin[1]
110
+ + transformRowMajor[6] * origin[2] + transformRowMajor[7];
111
+ const z = transformRowMajor[8] * origin[0] + transformRowMajor[9] * origin[1]
112
+ + transformRowMajor[10] * origin[2] + transformRowMajor[11];
113
+ return [x, z, -y];
114
+ }
97
115
  /**
98
116
  * Write one occurrence's interleaved record (mat4 column-major + entityId + rgba)
99
117
  * into `dv` at `byteOffset`. Little-endian to match the GPU buffer + the IFNS
100
118
  * decoder. Exposed for the unit test.
101
119
  */
102
- export function writeInstanceRecord(dv, byteOffset, instanceMatrix, entityId, color, flags = 0) {
120
+ export function writeInstanceRecord(dv, byteOffset, instanceMatrix, entityId, color, flags = 0, anchor = [instanceMatrix[12], instanceMatrix[13], instanceMatrix[14]]) {
103
121
  for (let j = 0; j < 16; j++) {
104
122
  dv.setFloat32(byteOffset + j * 4, instanceMatrix[j], true);
105
123
  }
@@ -108,6 +126,18 @@ export function writeInstanceRecord(dv, byteOffset, instanceMatrix, entityId, co
108
126
  dv.setFloat32(byteOffset + INSTANCE_COLOR_OFFSET + j * 4, color[j], true);
109
127
  }
110
128
  dv.setUint32(byteOffset + INSTANCE_FLAGS_OFFSET, flags >>> 0, true);
129
+ writeInstanceAnchor(dv, byteOffset, anchor);
130
+ }
131
+ /** Write V2's split source-anchor lanes without touching selection/colour fields.
132
+ * The renderer overwrites the GPU copy per submission with an RTE delta. */
133
+ export function writeInstanceAnchor(dv, byteOffset, anchor) {
134
+ for (let axis = 0; axis < 3; axis++) {
135
+ const high = Math.fround(anchor[axis]);
136
+ dv.setFloat32(byteOffset + INSTANCE_ANCHOR_HIGH_OFFSET + axis * 4, high, true);
137
+ dv.setFloat32(byteOffset + INSTANCE_ANCHOR_LOW_OFFSET + axis * 4, Math.fround(anchor[axis] - high), true);
138
+ }
139
+ dv.setFloat32(byteOffset + INSTANCE_ANCHOR_HIGH_OFFSET + 12, 0, true);
140
+ dv.setFloat32(byteOffset + INSTANCE_ANCHOR_LOW_OFFSET + 12, 0, true);
111
141
  }
112
142
  /**
113
143
  * Turn a decoded IFNS shard into render-ready templates. Each template's
@@ -117,9 +147,9 @@ export function writeInstanceRecord(dv, byteOffset, instanceMatrix, entityId, co
117
147
  *
118
148
  * TRANSPARENT instances (colour alpha < OPAQUE_ALPHA_CUTOFF — glass, IfcSpace,
119
149
  * openings) are EXCLUDED: the instanced pipeline is the opaque clone (no alpha
120
- * blend, depth-write on), so drawing glass here renders it opaque (and fs_main's
121
- * glass-fresnel tints it near-white). They render correctly via the flat
122
- * transparent pipeline instead — which the emit-both path still produces. Uses
150
+ * blend, depth-write on), so drawing glass here renders it opaque. They render
151
+ * correctly via the flat transparent pipeline instead — which the emit-both
152
+ * path still produces, and which alone carries the glass material (#5386). Uses
123
153
  * the SAME 0.99 cutoff as the flat opaque/transparent split (overlay-routing.ts).
124
154
  */
125
155
  export function prepareInstancedRender(shard) {
@@ -142,6 +172,8 @@ export function prepareInstancedRender(shard) {
142
172
  const buffer = new ArrayBuffer(insts.length * INSTANCE_STRIDE_BYTES);
143
173
  const dv = new DataView(buffer);
144
174
  const entityIds = new Uint32Array(insts.length);
175
+ const canonicalAnchors = new Float64Array(insts.length * 3);
176
+ const canonicalMatrixTranslations = new Float32Array(insts.length * 3);
145
177
  // The shard's stride already answered "does anything here name an item"
146
178
  // (the encoder derives it from the data), so a model with none pays no
147
179
  // per-template allocation and no zero-fill for a column that would be all
@@ -150,9 +182,12 @@ export function prepareInstancedRender(shard) {
150
182
  for (let i = 0; i < insts.length; i++) {
151
183
  const inst = insts[i];
152
184
  const mat = composeInstanceMatrix(inst.transform, tmpl.origin);
185
+ const anchor = composeInstanceAnchor(inst.transform, tmpl.origin);
153
186
  // flags = 0: every occurrence starts unselected.
154
- writeInstanceRecord(dv, i * INSTANCE_STRIDE_BYTES, mat, inst.entityId, inst.color, 0);
187
+ writeInstanceRecord(dv, i * INSTANCE_STRIDE_BYTES, mat, inst.entityId, inst.color, 0, anchor);
155
188
  entityIds[i] = inst.entityId >>> 0;
189
+ canonicalAnchors.set(anchor, i * 3);
190
+ canonicalMatrixTranslations.set([mat[12], mat[13], mat[14]], i * 3);
156
191
  if (itemIds)
157
192
  itemIds[i] = (inst.itemId ?? 0) >>> 0;
158
193
  }
@@ -166,6 +201,8 @@ export function prepareInstancedRender(shard) {
166
201
  instanceCount: insts.length,
167
202
  entityIds,
168
203
  itemIds,
204
+ canonicalAnchors,
205
+ canonicalMatrixTranslations,
169
206
  });
170
207
  }
171
208
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"instanced-render.js","sourceRoot":"","sources":["../src/instanced-render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instanced-render.js","sourceRoot":"","sources":["../src/instanced-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type WorldPoint } from './relative-to-eye.js';
2
+ export interface InstancedRteTemplate {
3
+ instanceBuffer: GPUBuffer;
4
+ instanceCount: number;
5
+ /** Canonical f64 Y-up drawable origins, xyz for each instance. */
6
+ canonicalAnchors: Float64Array;
7
+ }
8
+ /**
9
+ * Refresh per-instance `(drawable - camera)` lanes for one GPU submission.
10
+ *
11
+ * This is intentionally the sole writer of the V2 lanes after upload. It
12
+ * applies the shared f64 boundary/envelope check before any f32 rounding, so
13
+ * a colour, picker or shadow pass cannot independently subtract two large
14
+ * rounded origins on the GPU.
15
+ */
16
+ export declare function uploadInstancedRteDeltas(device: GPUDevice, templates: readonly InstancedRteTemplate[], camera: WorldPoint): void;
17
+ //# sourceMappingURL=instanced-rte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instanced-rte.d.ts","sourceRoot":"","sources":["../src/instanced-rte.ts"],"names":[],"mappings":"AAUA,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,SAAS,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,gBAAgB,EAAE,YAAY,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,MAAM,EAAE,UAAU,GACjB,IAAI,CAoBN"}
@@ -0,0 +1,32 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /** Camera-relative instance-record uploads shared by colour, pick and shadow. */
5
+ import { INSTANCE_ANCHOR_HIGH_OFFSET, INSTANCE_STRIDE_BYTES, } from './instanced-render.js';
6
+ import { packRteDrawableDelta } from './relative-to-eye.js';
7
+ /**
8
+ * Refresh per-instance `(drawable - camera)` lanes for one GPU submission.
9
+ *
10
+ * This is intentionally the sole writer of the V2 lanes after upload. It
11
+ * applies the shared f64 boundary/envelope check before any f32 rounding, so
12
+ * a colour, picker or shadow pass cannot independently subtract two large
13
+ * rounded origins on the GPU.
14
+ */
15
+ export function uploadInstancedRteDeltas(device, templates, camera) {
16
+ const packed = new Float32Array(8);
17
+ for (const template of templates) {
18
+ if (template.canonicalAnchors.length !== template.instanceCount * 3) {
19
+ throw new RangeError('Instanced RTE anchors do not match the instance-buffer record count.');
20
+ }
21
+ for (let instance = 0; instance < template.instanceCount; instance++) {
22
+ const source = instance * 3;
23
+ packRteDrawableDelta([
24
+ template.canonicalAnchors[source],
25
+ template.canonicalAnchors[source + 1],
26
+ template.canonicalAnchors[source + 2],
27
+ ], camera, packed, 0);
28
+ device.queue.writeBuffer(template.instanceBuffer, instance * INSTANCE_STRIDE_BYTES + INSTANCE_ANCHOR_HIGH_OFFSET, packed);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=instanced-rte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instanced-rte.js","sourceRoot":"","sources":["../src/instanced-rte.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,iFAAiF;AAEjF,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAS7E;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,SAA0C,EAC1C,MAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,KAAK,QAAQ,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;QAC/F,CAAC;QACD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;YAC5B,oBAAoB,CAAC;gBACnB,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAE;gBAClC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAE;gBACtC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAE;aACvC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,QAAQ,CAAC,cAAc,EACvB,QAAQ,GAAG,qBAAqB,GAAG,2BAA2B,EAC9D,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Material } from './types.js';
2
+ /** A dielectric: plaster, concrete, masonry, timber, paint. */
3
+ export declare const DEFAULT_MATERIAL_METALLIC = 0;
4
+ /**
5
+ * Matte. Building finishes are mostly rough, and at this roughness the sun's
6
+ * highlight on a dielectric is a broad, faint sheen that leaves a white wall
7
+ * as it was (`mesh-material.test.ts` pins that). At the 0.6 this lane used to
8
+ * hold, the highlight washed a whitish film over every sunlit coloured roof.
9
+ */
10
+ export declare const DEFAULT_MATERIAL_ROUGHNESS = 0.9;
11
+ /**
12
+ * Glass. Architectural glass is optically smooth, so it mirrors the sky at
13
+ * grazing angles and shows a tight sun glint; that reflection is what makes a
14
+ * pane read as glass.
15
+ */
16
+ export declare const GLASS_ROUGHNESS = 0.05;
17
+ /**
18
+ * Write a draw's material into the mesh uniform's material row: metallic,
19
+ * roughness, transmission (1 = drawn as glass) and padding.
20
+ *
21
+ * @param authoredAlpha The alpha of the colour the geometry was authored
22
+ * with, before any X-Ray or compare fade. Defaults to opaque.
23
+ * @param material A caller-supplied finish; its fields win over the defaults.
24
+ */
25
+ export declare function packMeshMaterial(out: Float32Array, authoredAlpha?: number, material?: Partial<Pick<Material, 'metallic' | 'roughness'>>): void;
26
+ //# sourceMappingURL=mesh-material.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-material.d.ts","sourceRoot":"","sources":["../src/mesh-material.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,YAAY,EACjB,aAAa,SAAI,EACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC,GAC3D,IAAI,CAON"}
@@ -0,0 +1,52 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * The material row of the main mesh uniform (#5386): `metallicRoughness`
6
+ * and `transmission`, right after `baseColor`. The fragment stage's specular
7
+ * term (`shaders/specular.wgsl.ts`) reads it.
8
+ *
9
+ * No IFC finish reaches the renderer yet (IfcSurfaceStyleRendering's specular
10
+ * fields are not extracted), so a draw's material is derived here: a caller's
11
+ * `Mesh.material` if it supplies one, else a matte dielectric, or glass when
12
+ * the AUTHORED colour is translucent.
13
+ *
14
+ * Authored, not drawn: X-Ray and compare fade an opaque element by lowering
15
+ * the alpha the draw carries (`baseColor.a`), and a fade must not turn a wall
16
+ * into a pane of glass. Only the colour the geometry was authored with says
17
+ * what the surface is, so every writer passes that alpha here.
18
+ */
19
+ import { MESH_UNIFORM_OFFSET } from './mesh-rte-uniforms.js';
20
+ import { OPAQUE_ALPHA_CUTOFF } from './overlay-routing.js';
21
+ /** A dielectric: plaster, concrete, masonry, timber, paint. */
22
+ export const DEFAULT_MATERIAL_METALLIC = 0;
23
+ /**
24
+ * Matte. Building finishes are mostly rough, and at this roughness the sun's
25
+ * highlight on a dielectric is a broad, faint sheen that leaves a white wall
26
+ * as it was (`mesh-material.test.ts` pins that). At the 0.6 this lane used to
27
+ * hold, the highlight washed a whitish film over every sunlit coloured roof.
28
+ */
29
+ export const DEFAULT_MATERIAL_ROUGHNESS = 0.9;
30
+ /**
31
+ * Glass. Architectural glass is optically smooth, so it mirrors the sky at
32
+ * grazing angles and shows a tight sun glint; that reflection is what makes a
33
+ * pane read as glass.
34
+ */
35
+ export const GLASS_ROUGHNESS = 0.05;
36
+ /**
37
+ * Write a draw's material into the mesh uniform's material row: metallic,
38
+ * roughness, transmission (1 = drawn as glass) and padding.
39
+ *
40
+ * @param authoredAlpha The alpha of the colour the geometry was authored
41
+ * with, before any X-Ray or compare fade. Defaults to opaque.
42
+ * @param material A caller-supplied finish; its fields win over the defaults.
43
+ */
44
+ export function packMeshMaterial(out, authoredAlpha = 1, material) {
45
+ const glass = authoredAlpha < OPAQUE_ALPHA_CUTOFF;
46
+ const at = MESH_UNIFORM_OFFSET.metallicRoughness;
47
+ out[at] = material?.metallic ?? DEFAULT_MATERIAL_METALLIC;
48
+ out[at + 1] = material?.roughness ?? (glass ? GLASS_ROUGHNESS : DEFAULT_MATERIAL_ROUGHNESS);
49
+ out[at + 2] = glass ? 1 : 0;
50
+ out[at + 3] = 0;
51
+ }
52
+ //# sourceMappingURL=mesh-material.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-material.js","sourceRoot":"","sources":["../src/mesh-material.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAiB,EACjB,aAAa,GAAG,CAAC,EACjB,QAA4D;IAE5D,MAAM,KAAK,GAAG,aAAa,GAAG,mBAAmB,CAAC;IAClD,MAAM,EAAE,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;IACjD,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,IAAI,yBAAyB,CAAC;IAC1D,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAC5F,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ABI and ingress helpers for the main mesh shader's RTE fields (#5049).
3
+ *
4
+ * The mesh uniform deliberately remains one contiguous block because batches
5
+ * own their bind groups. Keeping the offsets and flag bits here prevents the
6
+ * CPU writers, WGSL and picker-adjacent render paths from growing independent
7
+ * interpretations of the appended RTE lanes.
8
+ */
9
+ import type { ClipBox } from './types.js';
10
+ import { type RelativeToEyeFrame } from './relative-to-eye.js';
11
+ export declare const MESH_UNIFORM_FLOATS = 92;
12
+ export declare const MESH_UNIFORM_BYTES: number;
13
+ export declare const MESH_UNIFORM_OFFSET: {
14
+ readonly viewProj: 0;
15
+ readonly model: 16;
16
+ readonly baseColor: 32;
17
+ readonly metallicRoughness: 36;
18
+ readonly sectionPlane: 40;
19
+ readonly flags: 44;
20
+ readonly clipBoxMin: 48;
21
+ readonly quantParams: 56;
22
+ readonly rteViewProj: 60;
23
+ readonly drawableDelta: 76;
24
+ readonly rteCameraOrigin: 84;
25
+ };
26
+ /** flags.x: vertex and fragment values are camera-relative RTE coordinates. */
27
+ export declare const MESH_FLAG_RTE_DRAWABLE: number;
28
+ /** Byte offset of flags.x, suitable for `queue.writeBuffer`. */
29
+ export declare const MESH_FLAGS_BYTE_OFFSET: number;
30
+ export interface MeshSectionPlane {
31
+ normal: readonly [number, number, number];
32
+ distance: number;
33
+ enabled: boolean;
34
+ }
35
+ /**
36
+ * Replace world-space clipping inputs with the one camera-relative frame used
37
+ * by the mesh vertex shader. Plane normals are translations-invariant; only
38
+ * `d` changes: dot(world, n) - d == dot(world-eye, n) - (d-dot(eye,n)).
39
+ *
40
+ * The conversion happens in f64 before the final uniform f32 write. At a
41
+ * 5,000 km source offset this is the difference between a stable centimetre
42
+ * cut/crop boundary and an entire several-decimetre quantisation cell.
43
+ */
44
+ export declare function packRteFragmentSpace(frame: RelativeToEyeFrame, section: MeshSectionPlane | null | undefined, clipBox: ClipBox | null | undefined, out: Float32Array): void;
45
+ /** Pack the shared camera high/low lanes used by V2 instance anchors. */
46
+ export declare function packRteCameraOrigin(frame: RelativeToEyeFrame, out: Float32Array): void;
47
+ //# sourceMappingURL=mesh-rte-uniforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-rte-uniforms.d.ts","sourceRoot":"","sources":["../src/mesh-rte-uniforms.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,kBAAkB,QAAuD,CAAC;AAEvF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;CAYtB,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,QAA6D,CAAC;AAEjG,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACnC,GAAG,EAAE,YAAY,GAChB,IAAI,CAkBN;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAKtF"}
@@ -0,0 +1,60 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { packRteOrigin } from './relative-to-eye.js';
5
+ import { packRteClipBox, rtePlaneDistance } from './rte-clip-space.js';
6
+ export const MESH_UNIFORM_FLOATS = 92;
7
+ export const MESH_UNIFORM_BYTES = MESH_UNIFORM_FLOATS * Float32Array.BYTES_PER_ELEMENT;
8
+ export const MESH_UNIFORM_OFFSET = {
9
+ viewProj: 0,
10
+ model: 16,
11
+ baseColor: 32,
12
+ metallicRoughness: 36,
13
+ sectionPlane: 40,
14
+ flags: 44,
15
+ clipBoxMin: 48,
16
+ quantParams: 56,
17
+ rteViewProj: 60,
18
+ drawableDelta: 76,
19
+ rteCameraOrigin: 84,
20
+ };
21
+ /** flags.x: vertex and fragment values are camera-relative RTE coordinates. */
22
+ export const MESH_FLAG_RTE_DRAWABLE = 1 << 16;
23
+ /** Byte offset of flags.x, suitable for `queue.writeBuffer`. */
24
+ export const MESH_FLAGS_BYTE_OFFSET = MESH_UNIFORM_OFFSET.flags * Float32Array.BYTES_PER_ELEMENT;
25
+ /**
26
+ * Replace world-space clipping inputs with the one camera-relative frame used
27
+ * by the mesh vertex shader. Plane normals are translations-invariant; only
28
+ * `d` changes: dot(world, n) - d == dot(world-eye, n) - (d-dot(eye,n)).
29
+ *
30
+ * The conversion happens in f64 before the final uniform f32 write. At a
31
+ * 5,000 km source offset this is the difference between a stable centimetre
32
+ * cut/crop boundary and an entire several-decimetre quantisation cell.
33
+ */
34
+ export function packRteFragmentSpace(frame, section, clipBox, out) {
35
+ if (out.length < MESH_UNIFORM_FLOATS) {
36
+ throw new RangeError(`Mesh RTE uniform needs ${MESH_UNIFORM_FLOATS} floats.`);
37
+ }
38
+ const eye = frame.getCameraWorld();
39
+ const sectionOffset = MESH_UNIFORM_OFFSET.sectionPlane;
40
+ if (section?.enabled) {
41
+ const [nx, ny, nz] = section.normal;
42
+ out[sectionOffset] = nx;
43
+ out[sectionOffset + 1] = ny;
44
+ out[sectionOffset + 2] = nz;
45
+ out[sectionOffset + 3] = rtePlaneDistance(section.distance, section.normal, eye);
46
+ }
47
+ else {
48
+ out.fill(0, sectionOffset, sectionOffset + 4);
49
+ }
50
+ const clipOffset = MESH_UNIFORM_OFFSET.clipBoxMin;
51
+ packRteClipBox(clipBox, eye, out, clipOffset);
52
+ }
53
+ /** Pack the shared camera high/low lanes used by V2 instance anchors. */
54
+ export function packRteCameraOrigin(frame, out) {
55
+ if (out.length < MESH_UNIFORM_FLOATS) {
56
+ throw new RangeError(`Mesh RTE uniform needs ${MESH_UNIFORM_FLOATS} floats.`);
57
+ }
58
+ packRteOrigin(frame.getCameraWorld(), out, MESH_UNIFORM_OFFSET.rteCameraOrigin);
59
+ }
60
+ //# sourceMappingURL=mesh-rte-uniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-rte-uniforms.js","sourceRoot":"","sources":["../src/mesh-rte-uniforms.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,OAAO,EAAE,aAAa,EAA2B,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,YAAY,CAAC,iBAAiB,CAAC;AAEvF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;IACb,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,EAAE;IAChB,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;IACd,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,EAAE;CACX,CAAC;AAEX,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,CAAC;AAE9C,gEAAgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC;AAQjG;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyB,EACzB,OAA4C,EAC5C,OAAmC,EACnC,GAAiB;IAEjB,IAAI,GAAG,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAAC,0BAA0B,mBAAmB,UAAU,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,mBAAmB,CAAC,YAAY,CAAC;IACvD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACpC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QACxB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,KAAyB,EAAE,GAAiB;IAC9E,IAAI,GAAG,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAAC,0BAA0B,mBAAmB,UAAU,CAAC,CAAC;IAChF,CAAC;IACD,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAClF,CAAC"}
@@ -92,5 +92,12 @@ export declare class ModelBoundsTracker {
92
92
  * "expand" would no-op. We detect the placeholder by its exact symmetric
93
93
  * signature and replace it with the actual annotation AABB instead. */
94
94
  expandWithFlatVertices(positions: Float32Array, stride: number): void;
95
+ /**
96
+ * Fold one f32-local drawable through its f64 source anchor. Overlay
97
+ * vertices must never be widened to absolute f32 just to update the scene
98
+ * bounds: that would make camera framing disagree with the RTE draw.
99
+ */
100
+ expandWithAnchoredVertices(positions: Float32Array, origin: readonly [number, number, number], stride: number): void;
101
+ private expandWithVertices;
95
102
  }
96
103
  //# sourceMappingURL=model-bounds-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-bounds-tracker.d.ts","sourceRoot":"","sources":["../src/model-bounds-tracker.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6EAA6E;IAC7E,UAAU,IAAI,cAAc,GAAG,IAAI,CAAC;IACpC,2EAA2E;IAC3E,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,kBAAkB;IAGf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAA+B;gBAEhB,OAAO,EAAE,kBAAkB;IAExD,0EAA0E;IAC1E,GAAG,IAAI,cAAc,GAAG,IAAI;IAI5B,yCAAyC;IACzC,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIjC;;;;;;;;OAQG;IACH,SAAS,IAAI,IAAI;IAiBjB,6EAA6E;IAC7E,oBAAoB,IAAI,IAAI;IAmB5B,6DAA6D;IAC7D,gBAAgB,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAgCxJ;;;;;;;;;4EASwE;IACxE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAoCxE"}
1
+ {"version":3,"file":"model-bounds-tracker.d.ts","sourceRoot":"","sources":["../src/model-bounds-tracker.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6EAA6E;IAC7E,UAAU,IAAI,cAAc,GAAG,IAAI,CAAC;IACpC,2EAA2E;IAC3E,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,kBAAkB;IAGf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAA+B;gBAEhB,OAAO,EAAE,kBAAkB;IAExD,0EAA0E;IAC1E,GAAG,IAAI,cAAc,GAAG,IAAI;IAI5B,yCAAyC;IACzC,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIjC;;;;;;;;OAQG;IACH,SAAS,IAAI,IAAI;IAiBjB,6EAA6E;IAC7E,oBAAoB,IAAI,IAAI;IAmB5B,6DAA6D;IAC7D,gBAAgB,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAgCxJ;;;;;;;;;4EASwE;IACxE,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrE;;;;OAIG;IACH,0BAA0B,CACtB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,MAAM,GACf,IAAI;IAIP,OAAO,CAAC,kBAAkB;CAwC7B"}
@@ -101,7 +101,18 @@ export class ModelBoundsTracker {
101
101
  * "expand" would no-op. We detect the placeholder by its exact symmetric
102
102
  * signature and replace it with the actual annotation AABB instead. */
103
103
  expandWithFlatVertices(positions, stride) {
104
- if (positions.length === 0)
104
+ this.expandWithVertices(positions.length, stride, (index, axis) => positions[index + axis]);
105
+ }
106
+ /**
107
+ * Fold one f32-local drawable through its f64 source anchor. Overlay
108
+ * vertices must never be widened to absolute f32 just to update the scene
109
+ * bounds: that would make camera framing disagree with the RTE draw.
110
+ */
111
+ expandWithAnchoredVertices(positions, origin, stride) {
112
+ this.expandWithVertices(positions.length, stride, (index, axis) => positions[index + axis] + origin[axis]);
113
+ }
114
+ expandWithVertices(length, stride, coordinateAt) {
115
+ if (length === 0)
105
116
  return;
106
117
  const isPlaceholderCube = (b) => b.min.x === -100 && b.min.y === -100 && b.min.z === -100
107
118
  && b.max.x === 100 && b.max.y === 100 && b.max.z === 100;
@@ -112,10 +123,10 @@ export class ModelBoundsTracker {
112
123
  };
113
124
  }
114
125
  let expanded = false;
115
- for (let i = 0; i + 2 < positions.length; i += stride) {
116
- const x = positions[i];
117
- const y = positions[i + 1];
118
- const z = positions[i + 2];
126
+ for (let i = 0; i + 2 < length; i += stride) {
127
+ const x = coordinateAt(i, 0);
128
+ const y = coordinateAt(i, 1);
129
+ const z = coordinateAt(i, 2);
119
130
  if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
120
131
  continue;
121
132
  if (x < this.bounds.min.x)
@@ -1 +1 @@
1
- {"version":3,"file":"model-bounds-tracker.js","sourceRoot":"","sources":["../src/model-bounds-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-bounds-tracker.js","sourceRoot":"","sources":["../src/model-bounds-tracker.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ export declare class ModelTranslations {
88
88
  * undoing the OLD yaw that was in effect when it was written — a
89
89
  * non-translation edit into bytes 0..47 cannot be folded this way and is a
90
90
  * STOP condition (see plan #4890 §5). */
91
- placeInstances(data: ArrayBuffer, modelIndex: number, stride: number): boolean;
91
+ placeInstances(data: ArrayBuffer, modelIndex: number, stride: number, canonicalAnchors?: Float64Array, canonicalMatrixTranslations?: Float32Array): boolean;
92
92
  clear(): void;
93
93
  }
94
94
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"model-translation.d.ts","sourceRoot":"","sources":["../src/model-translation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-translation.d.ts","sourceRoot":"","sources":["../src/model-translation.ts"],"names":[],"mappings":"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"}