@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
@@ -1,353 +0,0 @@
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
- * Post-processing pipeline
6
- * Currently implements enhanced tone mapping in shader
7
- * SSAO and edge enhancement can be added as separate passes
8
- */
9
- export class PostProcessor {
10
- _device;
11
- options;
12
- colorFormat;
13
- isMultisampled;
14
- uniformBuffer;
15
- uniformStaging;
16
- uniformF32;
17
- uniformU32;
18
- bindGroupLayout;
19
- pipeline;
20
- cachedBindGroup = null;
21
- cachedDepthView = null;
22
- cachedObjectIdView = null;
23
- constructor(device, options = {}, sampleCount = 1) {
24
- this._device = device.getDevice();
25
- this.colorFormat = device.getFormat();
26
- this.isMultisampled = sampleCount > 1;
27
- this.options = {
28
- enableContactShading: false,
29
- contactRadius: 1.0,
30
- contactIntensity: 0.3,
31
- ...options,
32
- };
33
- this.uniformStaging = new ArrayBuffer(48);
34
- this.uniformF32 = new Float32Array(this.uniformStaging);
35
- this.uniformU32 = new Uint32Array(this.uniformStaging);
36
- this.uniformBuffer = this._device.createBuffer({
37
- // WGSL uniform layout for Params requires 48 bytes due to 16-byte alignment.
38
- size: 48,
39
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
40
- });
41
- this.bindGroupLayout = this._device.createBindGroupLayout({
42
- entries: [
43
- {
44
- binding: 0,
45
- visibility: GPUShaderStage.FRAGMENT,
46
- texture: { sampleType: 'depth', viewDimension: '2d', multisampled: this.isMultisampled },
47
- },
48
- {
49
- binding: 1,
50
- visibility: GPUShaderStage.FRAGMENT,
51
- texture: { sampleType: 'unfilterable-float', viewDimension: '2d', multisampled: this.isMultisampled },
52
- },
53
- {
54
- binding: 2,
55
- visibility: GPUShaderStage.FRAGMENT,
56
- buffer: { type: 'uniform' },
57
- },
58
- ],
59
- });
60
- const depthTexDecl = this.isMultisampled
61
- ? '@group(0) @binding(0) var depthTex: texture_depth_multisampled_2d;'
62
- : '@group(0) @binding(0) var depthTex: texture_depth_2d;';
63
- const idTexDecl = this.isMultisampled
64
- ? '@group(0) @binding(1) var idTex: texture_multisampled_2d<f32>;'
65
- : '@group(0) @binding(1) var idTex: texture_2d<f32>;';
66
- const depthLoadExpr = this.isMultisampled
67
- ? 'textureLoad(depthTex, c, 0u)'
68
- : 'textureLoad(depthTex, c, 0)';
69
- const idLoadExpr = this.isMultisampled
70
- ? 'textureLoad(idTex, c, 0u)'
71
- : 'textureLoad(idTex, c, 0)';
72
- const shader = this._device.createShaderModule({
73
- code: `
74
- struct Params {
75
- contactRadiusPx: f32,
76
- contactIntensity: f32,
77
- seamRadiusPx: f32,
78
- seamIntensity: f32,
79
- flags: vec4<u32>, // x=contactQuality y=seamQuality z=seamsEnabled w=reserved
80
- }
81
-
82
- ${depthTexDecl}
83
- ${idTexDecl}
84
- @group(0) @binding(2) var<uniform> params: Params;
85
-
86
- struct VsOut {
87
- @builtin(position) pos: vec4<f32>,
88
- }
89
-
90
- @vertex
91
- fn vs_main(@builtin(vertex_index) v: u32) -> VsOut {
92
- var o: VsOut;
93
- var p = array<vec2<f32>, 3>(
94
- vec2<f32>(-1.0, -3.0),
95
- vec2<f32>(-1.0, 1.0),
96
- vec2<f32>( 3.0, 1.0)
97
- );
98
- o.pos = vec4<f32>(p[v], 0.0, 1.0);
99
- return o;
100
- }
101
-
102
- fn sampleDepthClamped(ip: vec2<i32>, dims: vec2<i32>) -> f32 {
103
- let c = vec2<i32>(clamp(ip.x, 0, dims.x - 1), clamp(ip.y, 0, dims.y - 1));
104
- return ${depthLoadExpr};
105
- }
106
-
107
- fn decodeId24(encoded: vec4<f32>) -> u32 {
108
- let r = u32(round(encoded.r * 255.0)) & 255u;
109
- let g = u32(round(encoded.g * 255.0)) & 255u;
110
- let b = u32(round(encoded.b * 255.0)) & 255u;
111
- return (r << 16u) | (g << 8u) | b;
112
- }
113
-
114
- fn sampleIdClamped(ip: vec2<i32>, dims: vec2<i32>) -> u32 {
115
- let c = vec2<i32>(clamp(ip.x, 0, dims.x - 1), clamp(ip.y, 0, dims.y - 1));
116
- return decodeId24(${idLoadExpr});
117
- }
118
-
119
- @fragment
120
- fn fs_main(@builtin(position) fragPos: vec4<f32>) -> @location(0) vec4<f32> {
121
- let dimsU = textureDimensions(depthTex);
122
- let dims = vec2<i32>(i32(dimsU.x), i32(dimsU.y));
123
- let p = vec2<i32>(i32(fragPos.x), i32(fragPos.y));
124
-
125
- let center = sampleDepthClamped(p, dims);
126
- if (center <= 0.00001) {
127
- return vec4<f32>(0.0, 0.0, 0.0, 0.0);
128
- }
129
-
130
- let r = max(1, i32(params.contactRadiusPx));
131
- var accum = 0.0;
132
- var count = 0.0;
133
-
134
- // Reverse-Z: higher depth means closer to camera.
135
- let d1 = sampleDepthClamped(p + vec2<i32>( r, 0), dims);
136
- let d2 = sampleDepthClamped(p + vec2<i32>(-r, 0), dims);
137
- let d3 = sampleDepthClamped(p + vec2<i32>( 0, r), dims);
138
- let d4 = sampleDepthClamped(p + vec2<i32>( 0, -r), dims);
139
- accum += max(0.0, d1 - center);
140
- accum += max(0.0, d2 - center);
141
- accum += max(0.0, d3 - center);
142
- accum += max(0.0, d4 - center);
143
- count += 4.0;
144
-
145
- if (params.flags.x == 1u) {
146
- let d5 = sampleDepthClamped(p + vec2<i32>( r, r), dims);
147
- let d6 = sampleDepthClamped(p + vec2<i32>(-r, r), dims);
148
- let d7 = sampleDepthClamped(p + vec2<i32>( r, -r), dims);
149
- let d8 = sampleDepthClamped(p + vec2<i32>(-r, -r), dims);
150
- accum += max(0.0, d5 - center);
151
- accum += max(0.0, d6 - center);
152
- accum += max(0.0, d7 - center);
153
- accum += max(0.0, d8 - center);
154
- count += 4.0;
155
- }
156
-
157
- let contact = clamp((accum / max(count, 1.0)) * (120.0 * params.contactIntensity), 0.0, 0.7);
158
-
159
- var seam = 0.0;
160
- if (params.flags.z == 1u) {
161
- let idCenter = sampleIdClamped(p, dims);
162
- if (idCenter != 0u) {
163
- let rs = max(1, i32(params.seamRadiusPx));
164
- let idX1 = sampleIdClamped(p + vec2<i32>( rs, 0), dims);
165
- let idX0 = sampleIdClamped(p + vec2<i32>(-rs, 0), dims);
166
- let idY1 = sampleIdClamped(p + vec2<i32>(0, rs), dims);
167
- let idY0 = sampleIdClamped(p + vec2<i32>(0, -rs), dims);
168
-
169
- // Sample depths at same positions to filter coplanar entity boundaries.
170
- // Coplanar surfaces from different entities only differ by the z-hash
171
- // anti-z-fighting offset (~2.5e-4 relative). Two complementary gates:
172
- // - slope-aware first difference: depth-DISCONTINUOUS edges
173
- // (silhouettes, one surface occluding another).
174
- // - per-axis second difference > 3e-4: depth-CONTINUOUS creases
175
- // (wall/wall and floor/wall corners). At a corner the depth slope
176
- // changes across the seam, so |d(+r) + d(-r) - 2*center| measures
177
- // the slope mismatch; it stays at the z-hash offset (<= 2.55e-4)
178
- // for coplanar continuations. The old first-difference-only gate
179
- // flickered around its threshold along corners -> DASHED lines.
180
- // Known accepted edges of this gate: a coplanar feature narrower than
181
- // 2*rs px puts BOTH taps on the other entity (sum of two hash offsets,
182
- // up to 5.1e-4, can fire) — narrow inter-entity features deserve a seam
183
- // line anyway. In ortho the z-hash offset shrinks with the scene-fitted
184
- // far-near range, so large ortho views fall back to the 5e-4 gate.
185
- let sX1 = sampleDepthClamped(p + vec2<i32>( rs, 0), dims);
186
- let sX0 = sampleDepthClamped(p + vec2<i32>(-rs, 0), dims);
187
- let sY1 = sampleDepthClamped(p + vec2<i32>(0, rs), dims);
188
- let sY0 = sampleDepthClamped(p + vec2<i32>(0, -rs), dims);
189
- let depthRef = max(center, 0.0001);
190
- let depthRelThreshold = 5e-4;
191
- let creaseRelThreshold = 3e-4;
192
- let creaseX = abs(sX1 + sX0 - 2.0 * center) / depthRef > creaseRelThreshold;
193
- let creaseY = abs(sY1 + sY0 - 2.0 * center) / depthRef > creaseRelThreshold;
194
-
195
- // Discontinuity gate, slope-aware: a depth jump only counts as an
196
- // occlusion edge when it clearly exceeds the in-plane slope measured
197
- // on the OPPOSITE side of the pixel (2x asymmetry) on top of the
198
- // absolute floor. A flush coplanar joint viewed at a grazing angle
199
- // carries a huge per-pixel slope that used to trip the absolute
200
- // threshold and draw noisy dashed lines across floors/walls; its
201
- // jumps are symmetric, so the asymmetry test suppresses it. Genuine
202
- // silhouettes jump far beyond the opposite-side slope. Features whose
203
- // depth step shrinks below the local slope are sub-pixel at that
204
- // angle anyway, so fading their line out is the correct behaviour.
205
- let jX1 = abs(sX1 - center) / depthRef;
206
- let jX0 = abs(sX0 - center) / depthRef;
207
- let jY1 = abs(sY1 - center) / depthRef;
208
- let jY0 = abs(sY0 - center) / depthRef;
209
- let discX1 = jX1 > max(depthRelThreshold, 2.0 * jX0);
210
- let discX0 = jX0 > max(depthRelThreshold, 2.0 * jX1);
211
- let discY1 = jY1 > max(depthRelThreshold, 2.0 * jY0);
212
- let discY0 = jY0 > max(depthRelThreshold, 2.0 * jY1);
213
-
214
- let edge4Count =
215
- f32(idX1 != idCenter && idX1 != 0u && (creaseX || discX1)) +
216
- f32(idX0 != idCenter && idX0 != 0u && (creaseX || discX0)) +
217
- f32(idY1 != idCenter && idY1 != 0u && (creaseY || discY1)) +
218
- f32(idY0 != idCenter && idY0 != 0u && (creaseY || discY0));
219
- seam = edge4Count * 0.25;
220
-
221
- if (params.flags.y == 1u) {
222
- let idD1 = sampleIdClamped(p + vec2<i32>( rs, rs), dims);
223
- let idD2 = sampleIdClamped(p + vec2<i32>(-rs, rs), dims);
224
- let idD3 = sampleIdClamped(p + vec2<i32>( rs, -rs), dims);
225
- let idD4 = sampleIdClamped(p + vec2<i32>(-rs, -rs), dims);
226
- let sD1 = sampleDepthClamped(p + vec2<i32>( rs, rs), dims);
227
- let sD2 = sampleDepthClamped(p + vec2<i32>(-rs, rs), dims);
228
- let sD3 = sampleDepthClamped(p + vec2<i32>( rs, -rs), dims);
229
- let sD4 = sampleDepthClamped(p + vec2<i32>(-rs, -rs), dims);
230
- // Same crease + slope-aware discontinuity gates along the diagonals.
231
- let creaseD1 = abs(sD1 + sD4 - 2.0 * center) / depthRef > creaseRelThreshold;
232
- let creaseD2 = abs(sD2 + sD3 - 2.0 * center) / depthRef > creaseRelThreshold;
233
- let jD1 = abs(sD1 - center) / depthRef;
234
- let jD2 = abs(sD2 - center) / depthRef;
235
- let jD3 = abs(sD3 - center) / depthRef;
236
- let jD4 = abs(sD4 - center) / depthRef;
237
- let discD1 = jD1 > max(depthRelThreshold, 2.0 * jD4);
238
- let discD4 = jD4 > max(depthRelThreshold, 2.0 * jD1);
239
- let discD2 = jD2 > max(depthRelThreshold, 2.0 * jD3);
240
- let discD3 = jD3 > max(depthRelThreshold, 2.0 * jD2);
241
- let edgeDiagCount =
242
- f32(idD1 != idCenter && idD1 != 0u && (creaseD1 || discD1)) +
243
- f32(idD2 != idCenter && idD2 != 0u && (creaseD2 || discD2)) +
244
- f32(idD3 != idCenter && idD3 != 0u && (creaseD2 || discD3)) +
245
- f32(idD4 != idCenter && idD4 != 0u && (creaseD1 || discD4));
246
- let edgeDiag = edgeDiagCount * 0.25;
247
- seam = max(seam, (seam + edgeDiag) * 0.5);
248
- }
249
- }
250
- }
251
-
252
- let seamDarken = clamp(seam * params.seamIntensity, 0.0, 0.35);
253
- let overlay = max(contact, seamDarken);
254
- return vec4<f32>(0.0, 0.0, 0.0, overlay);
255
- }
256
- `,
257
- });
258
- this.pipeline = this._device.createRenderPipeline({
259
- layout: this._device.createPipelineLayout({ bindGroupLayouts: [this.bindGroupLayout] }),
260
- vertex: {
261
- module: shader,
262
- entryPoint: 'vs_main',
263
- },
264
- fragment: {
265
- module: shader,
266
- entryPoint: 'fs_main',
267
- targets: [{
268
- format: this.colorFormat,
269
- blend: {
270
- color: {
271
- srcFactor: 'zero',
272
- dstFactor: 'one-minus-src-alpha',
273
- },
274
- alpha: {
275
- srcFactor: 'zero',
276
- dstFactor: 'one',
277
- },
278
- },
279
- }],
280
- },
281
- primitive: {
282
- topology: 'triangle-list',
283
- cullMode: 'none',
284
- },
285
- });
286
- }
287
- /**
288
- * Apply lightweight contact shading in a fullscreen overlay pass.
289
- */
290
- apply(commandEncoder, options) {
291
- if (!this.options.enableContactShading && !options.enableSeparationLines) {
292
- return;
293
- }
294
- const contactQualityFlag = options.contactQuality === 'high' ? 1 : 0;
295
- const seamQualityFlag = options.separationQuality === 'high' ? 1 : 0;
296
- const contactRadiusPx = options.contactQuality === 'high' ? options.radius : options.radius * 0.5;
297
- const seamRadiusPx = options.separationQuality === 'high' ? options.separationRadius : 1.0;
298
- this.uniformF32[0] = contactRadiusPx;
299
- this.uniformF32[1] = options.intensity;
300
- this.uniformF32[2] = seamRadiusPx;
301
- this.uniformF32[3] = options.separationIntensity;
302
- this.uniformU32[4] = contactQualityFlag;
303
- this.uniformU32[5] = seamQualityFlag;
304
- this.uniformU32[6] = options.enableSeparationLines ? 1 : 0;
305
- this.uniformU32[7] = 0;
306
- this._device.queue.writeBuffer(this.uniformBuffer, 0, this.uniformStaging);
307
- if (this.cachedDepthView !== options.depthView || this.cachedObjectIdView !== options.objectIdView || this.cachedBindGroup === null) {
308
- this.cachedBindGroup = this._device.createBindGroup({
309
- layout: this.bindGroupLayout,
310
- entries: [
311
- { binding: 0, resource: options.depthView },
312
- { binding: 1, resource: options.objectIdView },
313
- { binding: 2, resource: { buffer: this.uniformBuffer } },
314
- ],
315
- });
316
- this.cachedDepthView = options.depthView;
317
- this.cachedObjectIdView = options.objectIdView;
318
- }
319
- const pass = commandEncoder.beginRenderPass({
320
- colorAttachments: [{
321
- view: options.targetView,
322
- loadOp: 'load',
323
- storeOp: 'store',
324
- }],
325
- });
326
- pass.setPipeline(this.pipeline);
327
- pass.setBindGroup(0, this.cachedBindGroup);
328
- pass.draw(3, 1, 0, 0);
329
- pass.end();
330
- }
331
- /**
332
- * Update post-processing options
333
- */
334
- updateOptions(options) {
335
- this.options = { ...this.options, ...options };
336
- }
337
- destroyed = false;
338
- /**
339
- * Destroy all GPU resources held by this post-processor.
340
- * After calling this method the post-processor is no longer usable.
341
- * Safe to call multiple times.
342
- */
343
- destroy() {
344
- if (this.destroyed)
345
- return;
346
- this.destroyed = true;
347
- this.uniformBuffer.destroy();
348
- this.cachedBindGroup = null;
349
- this.cachedDepthView = null;
350
- this.cachedObjectIdView = null;
351
- }
352
- }
353
- //# sourceMappingURL=post-processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-processor.js","sourceRoot":"","sources":["../src/post-processor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA8B/D;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACd,OAAO,CAAY;IACnB,OAAO,CAAuB;IAC9B,WAAW,CAAmB;IAC9B,cAAc,CAAU;IACxB,aAAa,CAAY;IACzB,cAAc,CAAc;IAC5B,UAAU,CAAe;IACzB,UAAU,CAAc;IACxB,eAAe,CAAqB;IACpC,QAAQ,CAAoB;IAC5B,eAAe,GAAwB,IAAI,CAAC;IAC5C,eAAe,GAA0B,IAAI,CAAC;IAC9C,kBAAkB,GAA0B,IAAI,CAAC;IAEzD,YAAY,MAAoB,EAAE,UAAgC,EAAE,EAAE,cAAsB,CAAC;QACzF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,WAAW,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG;YACX,oBAAoB,EAAE,KAAK;YAC3B,aAAa,EAAE,GAAG;YAClB,gBAAgB,EAAE,GAAG;YACrB,GAAG,OAAO;SACb,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,6EAA6E;YAC7E,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACtD,OAAO,EAAE;gBACL;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,QAAQ;oBACnC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;iBAC3F;gBACD;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,QAAQ;oBACnC,OAAO,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;iBACxG;gBACD;oBACI,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,cAAc,CAAC,QAAQ;oBACnC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC9B;aACJ;SACJ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc;YACpC,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,uDAAuD,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc;YACjC,CAAC,CAAC,gEAAgE;YAClE,CAAC,CAAC,mDAAmD,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;YACrC,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,6BAA6B,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc;YAClC,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,0BAA0B,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAC3C,IAAI,EAAE;;;;;;;;;EAShB,YAAY;EACZ,SAAS;;;;;;;;;;;;;;;;;;;;;WAqBA,aAAa;;;;;;;;;;;;sBAYF,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4I/B;SACQ,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC9C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACvF,MAAM,EAAE;gBACJ,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,SAAS;aACxB;YACD,QAAQ,EAAE;gBACN,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,CAAC;wBACN,MAAM,EAAE,IAAI,CAAC,WAAW;wBACxB,KAAK,EAAE;4BACH,KAAK,EAAE;gCACH,SAAS,EAAE,MAAM;gCACjB,SAAS,EAAE,qBAAqB;6BACnC;4BACD,KAAK,EAAE;gCACH,SAAS,EAAE,MAAM;gCACjB,SAAS,EAAE,KAAK;6BACnB;yBACJ;qBACJ,CAAC;aACL;YACD,SAAS,EAAE;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAiC,EAAE,OAAkC;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvE,OAAO;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;QAClG,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3F,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAClI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBAChD,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,OAAO,EAAE;oBACL,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE;oBAC3C,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE;oBAC9C,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE;iBAC3D;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,eAAe,CAAC;YACxC,gBAAgB,EAAE,CAAC;oBACf,IAAI,EAAE,OAAO,CAAC,UAAU;oBACxB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO;iBACnB,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAsC;QAChD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACnD,CAAC;IAEO,SAAS,GAAG,KAAK,CAAC;IAE1B;;;;OAIG;IACH,OAAO;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;CACJ"}