@itwin/core-frontend 4.1.0-dev.7 → 4.1.0-dev.70

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 (1224) hide show
  1. package/CHANGELOG.md +100 -1
  2. package/lib/cjs/AccuDraw.d.ts +3 -4
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +6 -7
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +7 -1
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +24 -6
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.d.ts +3 -2
  11. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  12. package/lib/cjs/BackgroundMapGeometry.js +47 -7
  13. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.d.ts +3 -3
  15. package/lib/cjs/BriefcaseConnection.js +3 -3
  16. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  17. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  18. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  19. package/lib/cjs/BriefcaseTxns.js +3 -3
  20. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  21. package/lib/cjs/ChangeFlags.d.ts +25 -12
  22. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  23. package/lib/cjs/ChangeFlags.js +24 -11
  24. package/lib/cjs/ChangeFlags.js.map +1 -1
  25. package/lib/cjs/CheckpointConnection.js +1 -1
  26. package/lib/cjs/CheckpointConnection.js.map +1 -1
  27. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  28. package/lib/cjs/DisplayStyleState.js +2 -1
  29. package/lib/cjs/DisplayStyleState.js.map +1 -1
  30. package/lib/cjs/DrawingViewState.d.ts +2 -2
  31. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  32. package/lib/cjs/DrawingViewState.js +3 -3
  33. package/lib/cjs/DrawingViewState.js.map +1 -1
  34. package/lib/cjs/ElementLocateManager.d.ts +0 -1
  35. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  36. package/lib/cjs/ElementLocateManager.js +11 -19
  37. package/lib/cjs/ElementLocateManager.js.map +1 -1
  38. package/lib/cjs/EnvironmentDecorations.js +1 -1
  39. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  40. package/lib/cjs/FrustumAnimator.js.map +1 -1
  41. package/lib/cjs/GeoServices.d.ts +37 -7
  42. package/lib/cjs/GeoServices.d.ts.map +1 -1
  43. package/lib/cjs/GeoServices.js +75 -25
  44. package/lib/cjs/GeoServices.js.map +1 -1
  45. package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
  46. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  47. package/lib/cjs/GraphicalEditingScope.js +1 -1
  48. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  49. package/lib/cjs/HitDetail.d.ts +100 -29
  50. package/lib/cjs/HitDetail.d.ts.map +1 -1
  51. package/lib/cjs/HitDetail.js +89 -36
  52. package/lib/cjs/HitDetail.js.map +1 -1
  53. package/lib/cjs/IModelApp.d.ts +18 -14
  54. package/lib/cjs/IModelApp.d.ts.map +1 -1
  55. package/lib/cjs/IModelApp.js +22 -18
  56. package/lib/cjs/IModelApp.js.map +1 -1
  57. package/lib/cjs/IModelConnection.d.ts +64 -19
  58. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  59. package/lib/cjs/IModelConnection.js +131 -20
  60. package/lib/cjs/IModelConnection.js.map +1 -1
  61. package/lib/cjs/IpcApp.d.ts +1 -1
  62. package/lib/cjs/IpcApp.d.ts.map +1 -1
  63. package/lib/cjs/IpcApp.js +4 -4
  64. package/lib/cjs/IpcApp.js.map +1 -1
  65. package/lib/cjs/LocalhostIpcApp.js +1 -1
  66. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  67. package/lib/cjs/Marker.d.ts +1 -1
  68. package/lib/cjs/Marker.d.ts.map +1 -1
  69. package/lib/cjs/Marker.js +3 -3
  70. package/lib/cjs/Marker.js.map +1 -1
  71. package/lib/cjs/NativeApp.d.ts.map +1 -1
  72. package/lib/cjs/NativeApp.js +4 -4
  73. package/lib/cjs/NativeApp.js.map +1 -1
  74. package/lib/cjs/NoRenderApp.d.ts +1 -1
  75. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  76. package/lib/cjs/NoRenderApp.js +1 -1
  77. package/lib/cjs/NoRenderApp.js.map +1 -1
  78. package/lib/cjs/RealityDataSource.js +1 -1
  79. package/lib/cjs/RealityDataSource.js.map +1 -1
  80. package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
  81. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  82. package/lib/cjs/SheetViewState.d.ts +9 -7
  83. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  84. package/lib/cjs/SheetViewState.js +22 -7
  85. package/lib/cjs/SheetViewState.js.map +1 -1
  86. package/lib/cjs/SpatialViewState.d.ts +20 -5
  87. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  88. package/lib/cjs/SpatialViewState.js +13 -5
  89. package/lib/cjs/SpatialViewState.js.map +1 -1
  90. package/lib/cjs/Sprites.js +2 -2
  91. package/lib/cjs/Sprites.js.map +1 -1
  92. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  93. package/lib/cjs/TentativePoint.js +10 -1
  94. package/lib/cjs/TentativePoint.js.map +1 -1
  95. package/lib/cjs/ViewContext.d.ts +19 -0
  96. package/lib/cjs/ViewContext.d.ts.map +1 -1
  97. package/lib/cjs/ViewContext.js +9 -0
  98. package/lib/cjs/ViewContext.js.map +1 -1
  99. package/lib/cjs/ViewCreator3d.d.ts +3 -6
  100. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  101. package/lib/cjs/ViewCreator3d.js +12 -33
  102. package/lib/cjs/ViewCreator3d.js.map +1 -1
  103. package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
  104. package/lib/cjs/ViewGlobalLocation.js +4 -3
  105. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  106. package/lib/cjs/ViewManager.d.ts +4 -2
  107. package/lib/cjs/ViewManager.d.ts.map +1 -1
  108. package/lib/cjs/ViewManager.js +4 -2
  109. package/lib/cjs/ViewManager.js.map +1 -1
  110. package/lib/cjs/ViewPose.d.ts +11 -11
  111. package/lib/cjs/ViewPose.d.ts.map +1 -1
  112. package/lib/cjs/ViewPose.js +17 -11
  113. package/lib/cjs/ViewPose.js.map +1 -1
  114. package/lib/cjs/ViewState.d.ts +44 -26
  115. package/lib/cjs/ViewState.d.ts.map +1 -1
  116. package/lib/cjs/ViewState.js +52 -25
  117. package/lib/cjs/ViewState.js.map +1 -1
  118. package/lib/cjs/ViewingSpace.js +1 -1
  119. package/lib/cjs/ViewingSpace.js.map +1 -1
  120. package/lib/cjs/Viewport.d.ts +59 -21
  121. package/lib/cjs/Viewport.d.ts.map +1 -1
  122. package/lib/cjs/Viewport.js +68 -25
  123. package/lib/cjs/Viewport.js.map +1 -1
  124. package/lib/cjs/ViewportSync.d.ts +2 -2
  125. package/lib/cjs/ViewportSync.d.ts.map +1 -1
  126. package/lib/cjs/ViewportSync.js +2 -2
  127. package/lib/cjs/ViewportSync.js.map +1 -1
  128. package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
  129. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
  130. package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
  131. package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +2 -0
  132. package/lib/cjs/common/ImageUtil.js.map +1 -0
  133. package/lib/cjs/common/ViewRect.d.ts.map +1 -0
  134. package/lib/cjs/common/ViewRect.js.map +1 -0
  135. package/lib/cjs/common/WorkerProxy.d.ts +73 -0
  136. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
  137. package/lib/cjs/common/WorkerProxy.js +54 -0
  138. package/lib/cjs/common/WorkerProxy.js.map +1 -0
  139. package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
  140. package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
  141. package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
  142. package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
  143. package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
  144. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
  145. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
  146. package/lib/cjs/common/imdl/CompactEdges.d.ts +27 -0
  147. package/lib/cjs/common/imdl/CompactEdges.d.ts.map +1 -0
  148. package/lib/cjs/common/imdl/CompactEdges.js +96 -0
  149. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -0
  150. package/lib/cjs/{imdl → common/imdl}/ImdlModel.d.ts +5 -0
  151. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
  152. package/lib/cjs/common/imdl/ImdlModel.js +71 -0
  153. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
  154. package/lib/{esm → cjs/common}/imdl/ImdlSchema.d.ts +68 -36
  155. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
  156. package/lib/cjs/common/imdl/ImdlSchema.js +23 -0
  157. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
  158. package/lib/cjs/{imdl/ImdlParser.d.ts → common/imdl/ParseImdlDocument.d.ts} +13 -8
  159. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  160. package/lib/cjs/{imdl/ImdlParser.js → common/imdl/ParseImdlDocument.js} +52 -37
  161. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
  162. package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
  163. package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
  164. package/lib/cjs/common/render/AnimationNodeId.js +19 -0
  165. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
  166. package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
  167. package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
  168. package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  169. package/lib/cjs/common/render/MaterialParams.js.map +1 -0
  170. package/lib/cjs/common/render/TextureParams.d.ts +30 -0
  171. package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
  172. package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  173. package/lib/cjs/common/render/TextureParams.js.map +1 -0
  174. package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +8 -8
  175. package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  176. package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +9 -9
  177. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
  178. package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
  179. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
  180. package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
  181. package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
  182. package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
  183. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
  184. package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
  185. package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
  186. package/lib/cjs/{imdl/ImdlModel.js → common/render/primitives/MeshParams.js} +2 -2
  187. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
  188. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
  189. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  190. package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
  191. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
  192. package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
  193. package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
  194. package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
  195. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
  196. package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
  197. package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
  198. package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
  199. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
  200. package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
  201. package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  202. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
  203. package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
  204. package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
  205. package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
  206. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
  207. package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
  208. package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
  209. package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
  210. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
  211. package/lib/{esm → cjs/common}/render/primitives/VertexTableSplitter.d.ts +20 -3
  212. package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  213. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +33 -23
  214. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
  215. package/lib/cjs/core-frontend.d.ts +45 -11
  216. package/lib/cjs/core-frontend.d.ts.map +1 -1
  217. package/lib/cjs/core-frontend.js +45 -11
  218. package/lib/cjs/core-frontend.js.map +1 -1
  219. package/lib/cjs/extension/ExtensionAdmin.js +1 -1
  220. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  221. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  222. package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
  223. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  224. package/lib/cjs/render/CanvasDecoration.d.ts +6 -2
  225. package/lib/cjs/render/CanvasDecoration.d.ts.map +1 -1
  226. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  227. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
  228. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  229. package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
  230. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
  231. package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
  232. package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
  233. package/lib/cjs/render/CreateTextureArgs.js +10 -0
  234. package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
  235. package/lib/cjs/render/GraphicBranch.d.ts +5 -7
  236. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  237. package/lib/cjs/render/GraphicBranch.js +1 -9
  238. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  239. package/lib/cjs/render/InstancedGraphicParams.d.ts +3 -4
  240. package/lib/cjs/render/InstancedGraphicParams.d.ts.map +1 -1
  241. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  242. package/lib/cjs/render/MockRender.d.ts +4 -4
  243. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  244. package/lib/cjs/render/MockRender.js +1 -1
  245. package/lib/cjs/render/MockRender.js.map +1 -1
  246. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  247. package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
  248. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  249. package/lib/cjs/render/Pixel.d.ts +57 -0
  250. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  251. package/lib/cjs/render/Pixel.js +41 -0
  252. package/lib/cjs/render/Pixel.js.map +1 -1
  253. package/lib/cjs/render/RealityMeshParams.js +2 -2
  254. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  255. package/lib/cjs/render/RenderSystem.d.ts +24 -10
  256. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  257. package/lib/cjs/render/RenderSystem.js +7 -8
  258. package/lib/cjs/render/RenderSystem.js.map +1 -1
  259. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  260. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  261. package/lib/cjs/render/RenderTarget.js.map +1 -1
  262. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  263. package/lib/cjs/render/VisibleFeature.d.ts +1 -1
  264. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  265. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  266. package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
  267. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  268. package/lib/cjs/render/primitives/EdgeParams.js +44 -80
  269. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  270. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts +1 -0
  271. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  272. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  273. package/lib/cjs/render/primitives/PointStringParams.d.ts +3 -11
  274. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
  275. package/lib/cjs/render/primitives/PointStringParams.js +27 -30
  276. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  277. package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
  278. package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
  279. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  280. package/lib/cjs/render/primitives/PolylineParams.d.ts +8 -37
  281. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  282. package/lib/cjs/render/primitives/PolylineParams.js +40 -48
  283. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  284. package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
  285. package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
  286. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  287. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +31 -0
  288. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  289. package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +62 -173
  290. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
  291. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  292. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  293. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  294. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  295. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  296. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
  297. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  298. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  299. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  300. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
  301. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  302. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +2 -1
  303. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  304. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +5 -2
  305. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  306. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  307. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  308. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +7 -4
  309. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  310. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +58 -31
  311. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  312. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +25 -29
  313. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  314. package/lib/cjs/render/webgl/BatchState.js +1 -1
  315. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  316. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  317. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  318. package/lib/cjs/render/webgl/BranchState.js +2 -0
  319. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  320. package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
  321. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  322. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  323. package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
  324. package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
  325. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  326. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
  327. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  328. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  329. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  330. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  331. package/lib/cjs/render/webgl/Graphic.d.ts +7 -1
  332. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  333. package/lib/cjs/render/webgl/Graphic.js +7 -2
  334. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  335. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  336. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  337. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  338. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  339. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  340. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  341. package/lib/cjs/render/webgl/Material.js.map +1 -1
  342. package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
  343. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  344. package/lib/cjs/render/webgl/Mesh.js +1 -1
  345. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  346. package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
  347. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  348. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  349. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  350. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  351. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  352. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  354. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  355. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  356. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  357. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  358. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  359. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  360. package/lib/cjs/render/webgl/SceneCompositor.d.ts +2 -1
  361. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  362. package/lib/cjs/render/webgl/SceneCompositor.js +5 -2
  363. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  364. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  365. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  366. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  367. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  368. package/lib/cjs/render/webgl/System.d.ts +7 -6
  369. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  370. package/lib/cjs/render/webgl/System.js +2 -2
  371. package/lib/cjs/render/webgl/System.js.map +1 -1
  372. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  373. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  374. package/lib/cjs/render/webgl/Target.js +14 -12
  375. package/lib/cjs/render/webgl/Target.js.map +1 -1
  376. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  377. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  378. package/lib/cjs/render/webgl/Texture.js +1 -1
  379. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  380. package/lib/cjs/render/webgl/UniformHandle.js +1 -1
  381. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  382. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  383. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  384. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  385. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  387. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/RealityMesh.js +32 -19
  389. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  390. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  391. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  392. package/lib/cjs/tile/B3dmReader.js +1 -1
  393. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  394. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  395. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  396. package/lib/cjs/tile/FetchCloudStorage.d.ts +15 -0
  397. package/lib/cjs/tile/FetchCloudStorage.d.ts.map +1 -0
  398. package/lib/cjs/tile/FetchCloudStorage.js +35 -0
  399. package/lib/cjs/tile/FetchCloudStorage.js.map +1 -0
  400. package/lib/cjs/tile/GltfReader.d.ts +13 -4
  401. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  402. package/lib/cjs/tile/GltfReader.js +80 -28
  403. package/lib/cjs/tile/GltfReader.js.map +1 -1
  404. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  405. package/lib/cjs/tile/IModelTile.js +4 -9
  406. package/lib/cjs/tile/IModelTile.js.map +1 -1
  407. package/lib/cjs/tile/IModelTileTree.d.ts +4 -1
  408. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  409. package/lib/cjs/tile/IModelTileTree.js +15 -0
  410. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  411. package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
  412. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
  413. package/lib/cjs/tile/ImdlDecoder.js +35 -0
  414. package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
  415. package/lib/{esm/imdl → cjs/tile}/ImdlGraphicsCreator.d.ts +1 -1
  416. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  417. package/lib/cjs/{imdl → tile}/ImdlGraphicsCreator.js +13 -13
  418. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
  419. package/lib/cjs/tile/ImdlParser.d.ts +26 -0
  420. package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
  421. package/lib/cjs/tile/ImdlParser.js +72 -0
  422. package/lib/cjs/tile/ImdlParser.js.map +1 -0
  423. package/lib/cjs/tile/ImdlReader.d.ts +6 -1
  424. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  425. package/lib/cjs/tile/ImdlReader.js +16 -11
  426. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  427. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
  428. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  429. package/lib/cjs/tile/PntsReader.js +1 -1
  430. package/lib/cjs/tile/PntsReader.js.map +1 -1
  431. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  432. package/lib/cjs/tile/PrimaryTileTree.js +2 -1
  433. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  434. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  435. package/lib/cjs/tile/RealityTile.d.ts +8 -3
  436. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  437. package/lib/cjs/tile/RealityTile.js +4 -1
  438. package/lib/cjs/tile/RealityTile.js.map +1 -1
  439. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  440. package/lib/cjs/tile/RealityTileLoader.js +10 -5
  441. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  442. package/lib/cjs/tile/RealityTileTree.js +1 -1
  443. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  444. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  445. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  446. package/lib/cjs/tile/TileAdmin.d.ts +14 -11
  447. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  448. package/lib/cjs/tile/TileAdmin.js +9 -52
  449. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  450. package/lib/cjs/tile/TileContent.d.ts +6 -0
  451. package/lib/cjs/tile/TileContent.d.ts.map +1 -1
  452. package/lib/cjs/tile/TileContent.js.map +1 -1
  453. package/lib/cjs/tile/TileStorage.js.map +1 -1
  454. package/lib/cjs/tile/internal.d.ts +9 -0
  455. package/lib/cjs/tile/internal.d.ts.map +1 -1
  456. package/lib/cjs/tile/internal.js +9 -0
  457. package/lib/cjs/tile/internal.js.map +1 -1
  458. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
  459. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  460. package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
  461. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  462. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts +6 -4
  463. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  464. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js +6 -4
  465. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  466. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  467. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  468. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -2
  469. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  470. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  471. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  472. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -23
  473. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  474. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts +11 -0
  475. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +1 -0
  476. package/lib/cjs/{imdl/ImdlSchema.js → tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js} +1 -1
  477. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +1 -0
  478. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  479. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  480. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +59 -0
  481. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  482. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +47 -0
  483. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  484. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +126 -0
  485. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  486. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +27 -0
  487. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  488. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +135 -0
  489. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  490. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  491. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  492. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js +22 -0
  493. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  494. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -1
  495. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  496. package/lib/cjs/tile/map/ImageryTileTree.js +16 -9
  497. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  498. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +67 -7
  499. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -1
  500. package/lib/cjs/tile/map/MapFeatureInfo.js +16 -2
  501. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  502. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  503. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
  504. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  505. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +4 -1
  506. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  507. package/lib/cjs/tile/map/MapLayerImageryProvider.js +3 -1
  508. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  509. package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
  510. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  511. package/lib/cjs/tile/map/MapLayerSources.js +3 -0
  512. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  513. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  514. package/lib/cjs/tile/map/MapTile.js +9 -1
  515. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  516. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  517. package/lib/cjs/tile/map/MapTileLoader.js +1 -15
  518. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  519. package/lib/cjs/tile/map/MapTileTree.d.ts +12 -3
  520. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  521. package/lib/cjs/tile/map/MapTileTree.js +33 -20
  522. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  523. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  524. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  525. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +3 -4
  526. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  527. package/lib/cjs/tile/map/MapTilingScheme.d.ts +4 -4
  528. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  529. package/lib/cjs/tile/map/MapTilingScheme.js +4 -4
  530. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  531. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  532. package/lib/cjs/tools/ElementSetTool.js +1 -1
  533. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  534. package/lib/cjs/tools/SelectTool.js +1 -1
  535. package/lib/cjs/tools/SelectTool.js.map +1 -1
  536. package/lib/cjs/tools/ToolAdmin.d.ts +8 -6
  537. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  538. package/lib/cjs/tools/ToolAdmin.js +11 -8
  539. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  540. package/lib/cjs/tools/ToolAssistance.d.ts +18 -0
  541. package/lib/cjs/tools/ToolAssistance.d.ts.map +1 -1
  542. package/lib/cjs/tools/ToolAssistance.js +8 -0
  543. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  544. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  545. package/lib/cjs/tools/ViewTool.js +3 -2
  546. package/lib/cjs/tools/ViewTool.js.map +1 -1
  547. package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
  548. package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
  549. package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
  550. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
  551. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
  552. package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
  553. package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
  554. package/lib/cjs/workers/RegisterWorker.js +36 -0
  555. package/lib/cjs/workers/RegisterWorker.js.map +1 -0
  556. package/lib/esm/AccuDraw.d.ts +3 -4
  557. package/lib/esm/AccuDraw.d.ts.map +1 -1
  558. package/lib/esm/AccuDraw.js +6 -7
  559. package/lib/esm/AccuDraw.js.map +1 -1
  560. package/lib/esm/AccuSnap.d.ts +7 -1
  561. package/lib/esm/AccuSnap.d.ts.map +1 -1
  562. package/lib/esm/AccuSnap.js +24 -6
  563. package/lib/esm/AccuSnap.js.map +1 -1
  564. package/lib/esm/BackgroundMapGeometry.d.ts +3 -2
  565. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  566. package/lib/esm/BackgroundMapGeometry.js +47 -7
  567. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  568. package/lib/esm/BriefcaseConnection.d.ts +3 -3
  569. package/lib/esm/BriefcaseConnection.js +3 -3
  570. package/lib/esm/BriefcaseConnection.js.map +1 -1
  571. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  572. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  573. package/lib/esm/BriefcaseTxns.js +3 -3
  574. package/lib/esm/BriefcaseTxns.js.map +1 -1
  575. package/lib/esm/ChangeFlags.d.ts +25 -12
  576. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  577. package/lib/esm/ChangeFlags.js +24 -11
  578. package/lib/esm/ChangeFlags.js.map +1 -1
  579. package/lib/esm/CheckpointConnection.js +1 -1
  580. package/lib/esm/CheckpointConnection.js.map +1 -1
  581. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  582. package/lib/esm/DisplayStyleState.js +2 -1
  583. package/lib/esm/DisplayStyleState.js.map +1 -1
  584. package/lib/esm/DrawingViewState.d.ts +2 -2
  585. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  586. package/lib/esm/DrawingViewState.js +3 -3
  587. package/lib/esm/DrawingViewState.js.map +1 -1
  588. package/lib/esm/ElementLocateManager.d.ts +0 -1
  589. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  590. package/lib/esm/ElementLocateManager.js +12 -20
  591. package/lib/esm/ElementLocateManager.js.map +1 -1
  592. package/lib/esm/EnvironmentDecorations.js +1 -1
  593. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  594. package/lib/esm/FrustumAnimator.js.map +1 -1
  595. package/lib/esm/GeoServices.d.ts +37 -7
  596. package/lib/esm/GeoServices.d.ts.map +1 -1
  597. package/lib/esm/GeoServices.js +75 -25
  598. package/lib/esm/GeoServices.js.map +1 -1
  599. package/lib/esm/GraphicalEditingScope.d.ts +2 -2
  600. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  601. package/lib/esm/GraphicalEditingScope.js +2 -2
  602. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  603. package/lib/esm/HitDetail.d.ts +100 -29
  604. package/lib/esm/HitDetail.d.ts.map +1 -1
  605. package/lib/esm/HitDetail.js +90 -37
  606. package/lib/esm/HitDetail.js.map +1 -1
  607. package/lib/esm/IModelApp.d.ts +18 -14
  608. package/lib/esm/IModelApp.d.ts.map +1 -1
  609. package/lib/esm/IModelApp.js +22 -18
  610. package/lib/esm/IModelApp.js.map +1 -1
  611. package/lib/esm/IModelConnection.d.ts +64 -19
  612. package/lib/esm/IModelConnection.d.ts.map +1 -1
  613. package/lib/esm/IModelConnection.js +132 -21
  614. package/lib/esm/IModelConnection.js.map +1 -1
  615. package/lib/esm/IpcApp.d.ts +1 -1
  616. package/lib/esm/IpcApp.d.ts.map +1 -1
  617. package/lib/esm/IpcApp.js +5 -5
  618. package/lib/esm/IpcApp.js.map +1 -1
  619. package/lib/esm/LocalhostIpcApp.js +2 -2
  620. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  621. package/lib/esm/Marker.d.ts +1 -1
  622. package/lib/esm/Marker.d.ts.map +1 -1
  623. package/lib/esm/Marker.js +3 -3
  624. package/lib/esm/Marker.js.map +1 -1
  625. package/lib/esm/NativeApp.d.ts.map +1 -1
  626. package/lib/esm/NativeApp.js +5 -5
  627. package/lib/esm/NativeApp.js.map +1 -1
  628. package/lib/esm/NoRenderApp.d.ts +1 -1
  629. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  630. package/lib/esm/NoRenderApp.js +1 -1
  631. package/lib/esm/NoRenderApp.js.map +1 -1
  632. package/lib/esm/RealityDataSource.js +1 -1
  633. package/lib/esm/RealityDataSource.js.map +1 -1
  634. package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
  635. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  636. package/lib/esm/SheetViewState.d.ts +9 -7
  637. package/lib/esm/SheetViewState.d.ts.map +1 -1
  638. package/lib/esm/SheetViewState.js +22 -7
  639. package/lib/esm/SheetViewState.js.map +1 -1
  640. package/lib/esm/SpatialViewState.d.ts +20 -5
  641. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  642. package/lib/esm/SpatialViewState.js +13 -5
  643. package/lib/esm/SpatialViewState.js.map +1 -1
  644. package/lib/esm/Sprites.js +2 -2
  645. package/lib/esm/Sprites.js.map +1 -1
  646. package/lib/esm/TentativePoint.d.ts.map +1 -1
  647. package/lib/esm/TentativePoint.js +10 -1
  648. package/lib/esm/TentativePoint.js.map +1 -1
  649. package/lib/esm/ViewContext.d.ts +19 -0
  650. package/lib/esm/ViewContext.d.ts.map +1 -1
  651. package/lib/esm/ViewContext.js +9 -0
  652. package/lib/esm/ViewContext.js.map +1 -1
  653. package/lib/esm/ViewCreator3d.d.ts +3 -6
  654. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  655. package/lib/esm/ViewCreator3d.js +14 -35
  656. package/lib/esm/ViewCreator3d.js.map +1 -1
  657. package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
  658. package/lib/esm/ViewGlobalLocation.js +4 -3
  659. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  660. package/lib/esm/ViewManager.d.ts +4 -2
  661. package/lib/esm/ViewManager.d.ts.map +1 -1
  662. package/lib/esm/ViewManager.js +4 -2
  663. package/lib/esm/ViewManager.js.map +1 -1
  664. package/lib/esm/ViewPose.d.ts +11 -11
  665. package/lib/esm/ViewPose.d.ts.map +1 -1
  666. package/lib/esm/ViewPose.js +17 -11
  667. package/lib/esm/ViewPose.js.map +1 -1
  668. package/lib/esm/ViewState.d.ts +44 -26
  669. package/lib/esm/ViewState.d.ts.map +1 -1
  670. package/lib/esm/ViewState.js +52 -25
  671. package/lib/esm/ViewState.js.map +1 -1
  672. package/lib/esm/ViewingSpace.js +1 -1
  673. package/lib/esm/ViewingSpace.js.map +1 -1
  674. package/lib/esm/Viewport.d.ts +59 -21
  675. package/lib/esm/Viewport.d.ts.map +1 -1
  676. package/lib/esm/Viewport.js +68 -25
  677. package/lib/esm/Viewport.js.map +1 -1
  678. package/lib/esm/ViewportSync.d.ts +2 -2
  679. package/lib/esm/ViewportSync.d.ts.map +1 -1
  680. package/lib/esm/ViewportSync.js +2 -2
  681. package/lib/esm/ViewportSync.js.map +1 -1
  682. package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
  683. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
  684. package/lib/esm/common/ImageUtil.d.ts.map +1 -0
  685. package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +2 -0
  686. package/lib/esm/common/ImageUtil.js.map +1 -0
  687. package/lib/esm/common/ViewRect.d.ts.map +1 -0
  688. package/lib/esm/common/ViewRect.js.map +1 -0
  689. package/lib/esm/common/WorkerProxy.d.ts +73 -0
  690. package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
  691. package/lib/esm/common/WorkerProxy.js +50 -0
  692. package/lib/esm/common/WorkerProxy.js.map +1 -0
  693. package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
  694. package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
  695. package/lib/esm/common/gltf/GltfModel.js.map +1 -0
  696. package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
  697. package/lib/esm/common/gltf/GltfParser.js.map +1 -0
  698. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
  699. package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
  700. package/lib/esm/common/imdl/CompactEdges.d.ts +27 -0
  701. package/lib/esm/common/imdl/CompactEdges.d.ts.map +1 -0
  702. package/lib/esm/common/imdl/CompactEdges.js +92 -0
  703. package/lib/esm/common/imdl/CompactEdges.js.map +1 -0
  704. package/lib/esm/{imdl → common/imdl}/ImdlModel.d.ts +5 -0
  705. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
  706. package/lib/esm/common/imdl/ImdlModel.js +67 -0
  707. package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
  708. package/lib/{cjs → esm/common}/imdl/ImdlSchema.d.ts +68 -36
  709. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
  710. package/lib/esm/common/imdl/ImdlSchema.js +20 -0
  711. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
  712. package/lib/esm/{imdl/ImdlParser.d.ts → common/imdl/ParseImdlDocument.d.ts} +13 -8
  713. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  714. package/lib/esm/{imdl/ImdlParser.js → common/imdl/ParseImdlDocument.js} +40 -25
  715. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
  716. package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
  717. package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
  718. package/lib/esm/common/render/AnimationNodeId.js +16 -0
  719. package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
  720. package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
  721. package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
  722. package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  723. package/lib/esm/common/render/MaterialParams.js.map +1 -0
  724. package/lib/esm/common/render/TextureParams.d.ts +30 -0
  725. package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
  726. package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  727. package/lib/esm/common/render/TextureParams.js.map +1 -0
  728. package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +8 -8
  729. package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  730. package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +9 -9
  731. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
  732. package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
  733. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
  734. package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
  735. package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
  736. package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
  737. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
  738. package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
  739. package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
  740. package/lib/esm/{imdl/ImdlSchema.js → common/render/primitives/MeshParams.js} +2 -2
  741. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
  742. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
  743. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  744. package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
  745. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
  746. package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
  747. package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
  748. package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
  749. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
  750. package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
  751. package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
  752. package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
  753. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
  754. package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
  755. package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  756. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
  757. package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
  758. package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
  759. package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
  760. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
  761. package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
  762. package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
  763. package/lib/esm/common/render/primitives/VertexTable.js +34 -0
  764. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
  765. package/lib/{cjs → esm/common}/render/primitives/VertexTableSplitter.d.ts +20 -3
  766. package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  767. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +31 -21
  768. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
  769. package/lib/esm/core-frontend.d.ts +45 -11
  770. package/lib/esm/core-frontend.d.ts.map +1 -1
  771. package/lib/esm/core-frontend.js +45 -11
  772. package/lib/esm/core-frontend.js.map +1 -1
  773. package/lib/esm/extension/ExtensionAdmin.js +1 -1
  774. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  775. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  776. package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
  777. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  778. package/lib/esm/render/CanvasDecoration.d.ts +6 -2
  779. package/lib/esm/render/CanvasDecoration.d.ts.map +1 -1
  780. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  781. package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
  782. package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  783. package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
  784. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
  785. package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
  786. package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
  787. package/lib/esm/render/CreateTextureArgs.js +9 -0
  788. package/lib/esm/render/CreateTextureArgs.js.map +1 -0
  789. package/lib/esm/render/GraphicBranch.d.ts +5 -7
  790. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  791. package/lib/esm/render/GraphicBranch.js +0 -8
  792. package/lib/esm/render/GraphicBranch.js.map +1 -1
  793. package/lib/esm/render/InstancedGraphicParams.d.ts +3 -4
  794. package/lib/esm/render/InstancedGraphicParams.d.ts.map +1 -1
  795. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  796. package/lib/esm/render/MockRender.d.ts +4 -4
  797. package/lib/esm/render/MockRender.d.ts.map +1 -1
  798. package/lib/esm/render/MockRender.js +1 -1
  799. package/lib/esm/render/MockRender.js.map +1 -1
  800. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  801. package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
  802. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  803. package/lib/esm/render/Pixel.d.ts +57 -0
  804. package/lib/esm/render/Pixel.d.ts.map +1 -1
  805. package/lib/esm/render/Pixel.js +41 -0
  806. package/lib/esm/render/Pixel.js.map +1 -1
  807. package/lib/esm/render/RealityMeshParams.js +2 -2
  808. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  809. package/lib/esm/render/RenderSystem.d.ts +24 -10
  810. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  811. package/lib/esm/render/RenderSystem.js +8 -9
  812. package/lib/esm/render/RenderSystem.js.map +1 -1
  813. package/lib/esm/render/RenderTarget.d.ts +1 -1
  814. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  815. package/lib/esm/render/RenderTarget.js.map +1 -1
  816. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  817. package/lib/esm/render/VisibleFeature.d.ts +1 -1
  818. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  819. package/lib/esm/render/VisibleFeature.js.map +1 -1
  820. package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
  821. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  822. package/lib/esm/render/primitives/EdgeParams.js +38 -74
  823. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  824. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts +1 -0
  825. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  826. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  827. package/lib/esm/render/primitives/PointStringParams.d.ts +3 -11
  828. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
  829. package/lib/esm/render/primitives/PointStringParams.js +25 -28
  830. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  831. package/lib/esm/render/primitives/Polyface.d.ts +1 -1
  832. package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
  833. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  834. package/lib/esm/render/primitives/PolylineParams.d.ts +8 -37
  835. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  836. package/lib/esm/render/primitives/PolylineParams.js +34 -43
  837. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  838. package/lib/esm/render/primitives/Strokes.d.ts +1 -1
  839. package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
  840. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  841. package/lib/esm/render/primitives/VertexTableBuilder.d.ts +31 -0
  842. package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  843. package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +62 -170
  844. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
  845. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  846. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  847. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  848. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  849. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  850. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
  851. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  852. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  853. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  854. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
  855. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  856. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +2 -1
  857. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  858. package/lib/esm/render/primitives/mesh/MeshBuilder.js +5 -2
  859. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  860. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  861. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  862. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +8 -5
  863. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  864. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +58 -31
  865. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  866. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +26 -30
  867. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  868. package/lib/esm/render/webgl/BatchState.js +1 -1
  869. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  870. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  871. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  872. package/lib/esm/render/webgl/BranchState.js +2 -0
  873. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  874. package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
  875. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  876. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  877. package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
  878. package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
  879. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  880. package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
  881. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  882. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  883. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  884. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  885. package/lib/esm/render/webgl/Graphic.d.ts +7 -1
  886. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  887. package/lib/esm/render/webgl/Graphic.js +7 -2
  888. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  889. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  890. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  891. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  892. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  893. package/lib/esm/render/webgl/Material.d.ts +1 -1
  894. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  895. package/lib/esm/render/webgl/Material.js.map +1 -1
  896. package/lib/esm/render/webgl/Mesh.d.ts +2 -2
  897. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/Mesh.js +1 -1
  899. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  900. package/lib/esm/render/webgl/MeshData.d.ts +2 -2
  901. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  903. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  904. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  905. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  906. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  907. package/lib/esm/render/webgl/PointString.js.map +1 -1
  908. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  909. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  911. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  912. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  913. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  914. package/lib/esm/render/webgl/SceneCompositor.d.ts +2 -1
  915. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  916. package/lib/esm/render/webgl/SceneCompositor.js +5 -2
  917. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  918. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  919. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  920. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  921. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  922. package/lib/esm/render/webgl/System.d.ts +7 -6
  923. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  924. package/lib/esm/render/webgl/System.js +2 -2
  925. package/lib/esm/render/webgl/System.js.map +1 -1
  926. package/lib/esm/render/webgl/Target.d.ts +1 -1
  927. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  928. package/lib/esm/render/webgl/Target.js +13 -11
  929. package/lib/esm/render/webgl/Target.js.map +1 -1
  930. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  931. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  932. package/lib/esm/render/webgl/Texture.js +1 -1
  933. package/lib/esm/render/webgl/Texture.js.map +1 -1
  934. package/lib/esm/render/webgl/UniformHandle.js +1 -1
  935. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  936. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  937. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  938. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  939. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  940. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  941. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  942. package/lib/esm/render/webgl/glsl/RealityMesh.js +32 -19
  943. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  944. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  945. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  946. package/lib/esm/tile/B3dmReader.js +1 -1
  947. package/lib/esm/tile/B3dmReader.js.map +1 -1
  948. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  949. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  950. package/lib/esm/tile/FetchCloudStorage.d.ts +15 -0
  951. package/lib/esm/tile/FetchCloudStorage.d.ts.map +1 -0
  952. package/lib/esm/tile/FetchCloudStorage.js +31 -0
  953. package/lib/esm/tile/FetchCloudStorage.js.map +1 -0
  954. package/lib/esm/tile/GltfReader.d.ts +13 -4
  955. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  956. package/lib/esm/tile/GltfReader.js +81 -29
  957. package/lib/esm/tile/GltfReader.js.map +1 -1
  958. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  959. package/lib/esm/tile/IModelTile.js +5 -10
  960. package/lib/esm/tile/IModelTile.js.map +1 -1
  961. package/lib/esm/tile/IModelTileTree.d.ts +4 -1
  962. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  963. package/lib/esm/tile/IModelTileTree.js +16 -1
  964. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  965. package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
  966. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
  967. package/lib/esm/tile/ImdlDecoder.js +31 -0
  968. package/lib/esm/tile/ImdlDecoder.js.map +1 -0
  969. package/lib/{cjs/imdl → esm/tile}/ImdlGraphicsCreator.d.ts +1 -1
  970. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  971. package/lib/esm/{imdl → tile}/ImdlGraphicsCreator.js +5 -5
  972. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
  973. package/lib/esm/tile/ImdlParser.d.ts +26 -0
  974. package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
  975. package/lib/esm/tile/ImdlParser.js +68 -0
  976. package/lib/esm/tile/ImdlParser.js.map +1 -0
  977. package/lib/esm/tile/ImdlReader.d.ts +6 -1
  978. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  979. package/lib/esm/tile/ImdlReader.js +13 -9
  980. package/lib/esm/tile/ImdlReader.js.map +1 -1
  981. package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
  982. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  983. package/lib/esm/tile/PntsReader.js +1 -1
  984. package/lib/esm/tile/PntsReader.js.map +1 -1
  985. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  986. package/lib/esm/tile/PrimaryTileTree.js +2 -1
  987. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  988. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  989. package/lib/esm/tile/RealityTile.d.ts +8 -3
  990. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  991. package/lib/esm/tile/RealityTile.js +4 -1
  992. package/lib/esm/tile/RealityTile.js.map +1 -1
  993. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  994. package/lib/esm/tile/RealityTileLoader.js +10 -5
  995. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  996. package/lib/esm/tile/RealityTileTree.js +1 -1
  997. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  998. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  999. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  1000. package/lib/esm/tile/TileAdmin.d.ts +14 -11
  1001. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1002. package/lib/esm/tile/TileAdmin.js +10 -30
  1003. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1004. package/lib/esm/tile/TileContent.d.ts +6 -0
  1005. package/lib/esm/tile/TileContent.d.ts.map +1 -1
  1006. package/lib/esm/tile/TileContent.js.map +1 -1
  1007. package/lib/esm/tile/TileStorage.js.map +1 -1
  1008. package/lib/esm/tile/internal.d.ts +9 -0
  1009. package/lib/esm/tile/internal.d.ts.map +1 -1
  1010. package/lib/esm/tile/internal.js +9 -0
  1011. package/lib/esm/tile/internal.js.map +1 -1
  1012. package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
  1013. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1014. package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
  1015. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1016. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts +6 -4
  1017. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  1018. package/lib/esm/tile/map/EllipsoidTerrainProvider.js +6 -4
  1019. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  1020. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  1021. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  1022. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -2
  1023. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  1024. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  1025. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1026. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -24
  1027. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1028. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts +11 -0
  1029. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +1 -0
  1030. package/lib/esm/{imdl/ImdlModel.js → tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js} +1 -1
  1031. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +1 -0
  1032. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  1033. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  1034. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +55 -0
  1035. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  1036. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +47 -0
  1037. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  1038. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +122 -0
  1039. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  1040. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +27 -0
  1041. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  1042. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +131 -0
  1043. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  1044. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  1045. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  1046. package/lib/esm/tile/map/ImageryProviders/WebMercator.js +18 -0
  1047. package/lib/esm/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  1048. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -1
  1049. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1050. package/lib/esm/tile/map/ImageryTileTree.js +16 -9
  1051. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1052. package/lib/esm/tile/map/MapFeatureInfo.d.ts +67 -7
  1053. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -1
  1054. package/lib/esm/tile/map/MapFeatureInfo.js +14 -1
  1055. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  1056. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1057. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
  1058. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1059. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +4 -1
  1060. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1061. package/lib/esm/tile/map/MapLayerImageryProvider.js +3 -1
  1062. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1063. package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
  1064. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1065. package/lib/esm/tile/map/MapLayerSources.js +3 -0
  1066. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1067. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1068. package/lib/esm/tile/map/MapTile.js +9 -1
  1069. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1070. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  1071. package/lib/esm/tile/map/MapTileLoader.js +1 -15
  1072. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1073. package/lib/esm/tile/map/MapTileTree.d.ts +12 -3
  1074. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1075. package/lib/esm/tile/map/MapTileTree.js +34 -21
  1076. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1077. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  1078. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1079. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +3 -4
  1080. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1081. package/lib/esm/tile/map/MapTilingScheme.d.ts +4 -4
  1082. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1083. package/lib/esm/tile/map/MapTilingScheme.js +4 -4
  1084. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1085. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1086. package/lib/esm/tools/ElementSetTool.js +1 -1
  1087. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1088. package/lib/esm/tools/SelectTool.js +1 -1
  1089. package/lib/esm/tools/SelectTool.js.map +1 -1
  1090. package/lib/esm/tools/ToolAdmin.d.ts +8 -6
  1091. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1092. package/lib/esm/tools/ToolAdmin.js +11 -8
  1093. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1094. package/lib/esm/tools/ToolAssistance.d.ts +18 -0
  1095. package/lib/esm/tools/ToolAssistance.d.ts.map +1 -1
  1096. package/lib/esm/tools/ToolAssistance.js +8 -0
  1097. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  1098. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1099. package/lib/esm/tools/ViewTool.js +3 -2
  1100. package/lib/esm/tools/ViewTool.js.map +1 -1
  1101. package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
  1102. package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
  1103. package/lib/esm/workers/ImdlParser/Worker.js +30 -0
  1104. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
  1105. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
  1106. package/lib/esm/workers/RegisterWorker.d.ts +9 -0
  1107. package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
  1108. package/lib/esm/workers/RegisterWorker.js +32 -0
  1109. package/lib/esm/workers/RegisterWorker.js.map +1 -0
  1110. package/lib/public/scripts/parse-imdl-worker.js +1 -0
  1111. package/lib/workers/webpack/parse-imdl-worker.js +1 -0
  1112. package/package.json +32 -69
  1113. package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
  1114. package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
  1115. package/lib/cjs/ImageUtil.d.ts.map +0 -1
  1116. package/lib/cjs/ImageUtil.js.map +0 -1
  1117. package/lib/cjs/ViewRect.d.ts.map +0 -1
  1118. package/lib/cjs/ViewRect.js.map +0 -1
  1119. package/lib/cjs/WebWorkerManager.d.ts +0 -49
  1120. package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
  1121. package/lib/cjs/WebWorkerManager.js +0 -155
  1122. package/lib/cjs/WebWorkerManager.js.map +0 -1
  1123. package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
  1124. package/lib/cjs/gltf/GltfModel.js.map +0 -1
  1125. package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
  1126. package/lib/cjs/gltf/GltfParser.js.map +0 -1
  1127. package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
  1128. package/lib/cjs/gltf/GltfSchema.js.map +0 -1
  1129. package/lib/cjs/imdl/ImdlGraphicsCreator.d.ts.map +0 -1
  1130. package/lib/cjs/imdl/ImdlGraphicsCreator.js.map +0 -1
  1131. package/lib/cjs/imdl/ImdlModel.d.ts.map +0 -1
  1132. package/lib/cjs/imdl/ImdlModel.js.map +0 -1
  1133. package/lib/cjs/imdl/ImdlParser.d.ts.map +0 -1
  1134. package/lib/cjs/imdl/ImdlParser.js.map +0 -1
  1135. package/lib/cjs/imdl/ImdlSchema.d.ts.map +0 -1
  1136. package/lib/cjs/imdl/ImdlSchema.js.map +0 -1
  1137. package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
  1138. package/lib/cjs/render/RenderMaterial.js.map +0 -1
  1139. package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
  1140. package/lib/cjs/render/RenderTexture.js.map +0 -1
  1141. package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
  1142. package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
  1143. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
  1144. package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
  1145. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
  1146. package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
  1147. package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
  1148. package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
  1149. package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
  1150. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  1151. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
  1152. package/lib/cjs/render-primitives.d.ts +0 -21
  1153. package/lib/cjs/render-primitives.d.ts.map +0 -1
  1154. package/lib/cjs/render-primitives.js +0 -41
  1155. package/lib/cjs/render-primitives.js.map +0 -1
  1156. package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
  1157. package/lib/esm/FrontendLoggerCategory.js.map +0 -1
  1158. package/lib/esm/ImageUtil.d.ts.map +0 -1
  1159. package/lib/esm/ImageUtil.js.map +0 -1
  1160. package/lib/esm/ViewRect.d.ts.map +0 -1
  1161. package/lib/esm/ViewRect.js.map +0 -1
  1162. package/lib/esm/WebWorkerManager.d.ts +0 -49
  1163. package/lib/esm/WebWorkerManager.d.ts.map +0 -1
  1164. package/lib/esm/WebWorkerManager.js +0 -150
  1165. package/lib/esm/WebWorkerManager.js.map +0 -1
  1166. package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
  1167. package/lib/esm/gltf/GltfModel.js.map +0 -1
  1168. package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
  1169. package/lib/esm/gltf/GltfParser.js.map +0 -1
  1170. package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
  1171. package/lib/esm/gltf/GltfSchema.js.map +0 -1
  1172. package/lib/esm/imdl/ImdlGraphicsCreator.d.ts.map +0 -1
  1173. package/lib/esm/imdl/ImdlGraphicsCreator.js.map +0 -1
  1174. package/lib/esm/imdl/ImdlModel.d.ts.map +0 -1
  1175. package/lib/esm/imdl/ImdlModel.js.map +0 -1
  1176. package/lib/esm/imdl/ImdlParser.d.ts.map +0 -1
  1177. package/lib/esm/imdl/ImdlParser.js.map +0 -1
  1178. package/lib/esm/imdl/ImdlSchema.d.ts.map +0 -1
  1179. package/lib/esm/imdl/ImdlSchema.js.map +0 -1
  1180. package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
  1181. package/lib/esm/render/RenderMaterial.js.map +0 -1
  1182. package/lib/esm/render/RenderTexture.d.ts.map +0 -1
  1183. package/lib/esm/render/RenderTexture.js.map +0 -1
  1184. package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
  1185. package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
  1186. package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
  1187. package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
  1188. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
  1189. package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
  1190. package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
  1191. package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
  1192. package/lib/esm/render/primitives/VertexTable.js.map +0 -1
  1193. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  1194. package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
  1195. package/lib/esm/render-primitives.d.ts +0 -21
  1196. package/lib/esm/render-primitives.d.ts.map +0 -1
  1197. package/lib/esm/render-primitives.js +0 -25
  1198. package/lib/esm/render-primitives.js.map +0 -1
  1199. /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  1200. /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  1201. /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  1202. /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  1203. /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
  1204. /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
  1205. /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  1206. /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
  1207. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  1208. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
  1209. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  1210. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
  1211. /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
  1212. /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  1213. /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  1214. /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  1215. /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  1216. /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
  1217. /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
  1218. /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  1219. /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
  1220. /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  1221. /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
  1222. /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  1223. /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
  1224. /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { DisplayParams } from \"../primitives/DisplayParams\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, OvrFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 2;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n if (flashed) {\r\n map.getElementIdPair(i, elemId);\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n }\r\n\r\n const newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hiliteSyncTarget = this.target.hiliteSyncTarget;\r\n const hiliteUpdated = !sync(hiliteSyncTarget, this._hiliteSyncObserver);\r\n\r\n const hilite = this.target.hilites;\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut)\r\n this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { DisplayParams } from \"../../common/render/primitives/DisplayParams\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, OvrFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 2;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n if (flashed) {\r\n map.getElementIdPair(i, elemId);\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n }\r\n\r\n const newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hiliteSyncTarget = this.target.hiliteSyncTarget;\r\n const hiliteUpdated = !sync(hiliteSyncTarget, this._hiliteSyncObserver);\r\n\r\n const hilite = this.target.hilites;\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut)\r\n this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
@@ -1,6 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
+ import { Id64String } from "@itwin/core-bentley";
4
5
  import { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ViewFlags } from "@itwin/core-common";
5
6
  import { Transform } from "@itwin/core-geometry";
6
7
  import { IModelConnection } from "../../IModelConnection";
@@ -20,6 +21,7 @@ import { RenderPass } from "./RenderFlags";
20
21
  import { Target } from "./Target";
21
22
  import { TextureDrape } from "./TextureDrape";
22
23
  import { ThematicSensors } from "./ThematicSensors";
24
+ import { BranchState } from "./BranchState";
23
25
  /** @internal */
24
26
  export declare abstract class Graphic extends RenderGraphic implements WebGLDisposable {
25
27
  abstract addCommands(_commands: RenderCommands): void;
@@ -48,6 +50,7 @@ export declare class GraphicOwner extends Graphic {
48
50
  export interface BatchContext {
49
51
  batchId: number;
50
52
  iModel?: IModelConnection;
53
+ viewAttachmentId?: Id64String;
51
54
  }
52
55
  /** @internal exported strictly for tests. */
53
56
  export declare class PerTargetBatchData {
@@ -89,9 +92,11 @@ export declare class Batch extends Graphic {
89
92
  readonly options: BatchOptions;
90
93
  get tileId(): string | undefined;
91
94
  get locateOnly(): boolean;
95
+ /** The following are valid only during a draw and reset afterward. */
92
96
  get batchId(): number;
93
97
  get batchIModel(): IModelConnection | undefined;
94
- setContext(batchId: number, iModel: IModelConnection | undefined): void;
98
+ get viewAttachmentId(): string | undefined;
99
+ setContext(batchId: number, branch: BranchState): void;
95
100
  resetContext(): void;
96
101
  constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions);
97
102
  private _isDisposed;
@@ -117,6 +122,7 @@ export declare class Branch extends Graphic {
117
122
  readonly frustum?: GraphicBranchFrustum;
118
123
  readonly appearanceProvider?: FeatureAppearanceProvider;
119
124
  readonly secondaryClassifiers?: PlanarClassifier[];
125
+ readonly viewAttachmentId?: Id64String;
120
126
  constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions);
121
127
  get isDisposed(): boolean;
122
128
  dispose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
@@ -157,15 +157,19 @@ class Batch extends Graphic {
157
157
  get locateOnly() {
158
158
  return true === this.options.locateOnly;
159
159
  }
160
+ /** The following are valid only during a draw and reset afterward. */
160
161
  get batchId() { return this._context.batchId; }
161
162
  get batchIModel() { return this._context.iModel; }
162
- setContext(batchId, iModel) {
163
+ get viewAttachmentId() { return this._context.viewAttachmentId; }
164
+ setContext(batchId, branch) {
163
165
  this._context.batchId = batchId;
164
- this._context.iModel = iModel;
166
+ this._context.iModel = branch.iModel;
167
+ this._context.viewAttachmentId = branch.viewAttachmentId;
165
168
  }
166
169
  resetContext() {
167
170
  this._context.batchId = 0;
168
171
  this._context.iModel = undefined;
172
+ this._context.viewAttachmentId = undefined;
169
173
  }
170
174
  constructor(graphic, features, range, options) {
171
175
  super();
@@ -226,6 +230,7 @@ class Branch extends Graphic {
226
230
  this.clips = opts.clipVolume;
227
231
  this.iModel = opts.iModel;
228
232
  this.frustum = opts.frustum;
233
+ this.viewAttachmentId = opts.viewAttachmentId;
229
234
  if (opts.hline)
230
235
  this.edgeSettings = EdgeSettings_1.EdgeSettings.create(opts.hline);
231
236
  if (opts.classifierOrDrape instanceof PlanarClassifier_1.PlanarClassifier)
@@ -1 +1 @@
1
- {"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAsD;AACtD,oDAAwI;AACxI,wDAAiD;AAEjD,0DAAuD;AACvD,oDAA6F;AAE7F,oDAA8D;AAI9D,iDAA8C;AAC9C,yDAAsD;AACtD,yDAAsD;AAKtD,iDAA8C;AAC9C,uDAAoD;AAEpD,gBAAgB;AAChB,MAAsB,OAAQ,SAAQ,6BAAa;IAI1C,iBAAiB,CAAC,SAAyB,EAAE,KAAiB,IAAU,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,WAAW,KAA4B,OAAO,SAAS,CAAC,CAAC,CAAC;CAClE;AAND,0BAMC;AAED,MAAa,YAAa,SAAQ,OAAO;IAGvC,YAAmB,OAAgB;QACjC,KAAK,EAAE,CAAC;QAMF,gBAAW,GAAG,KAAK,CAAC;QAL1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,OAAO,KAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAG7D,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,OAAO,KAAW,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5C,cAAc;QACnB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IACM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IACe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACe,WAAW;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;CACF;AAhCD,oCAgCC;AAUD,6CAA6C;AAC7C,MAAa,kBAAkB;IAK7B,YAAmB,MAAc;QAHd,sBAAiB,GAAG,IAAI,GAAG,EAAyD,CAAC;QAItG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACjD,IAAA,sBAAO,EAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,kBAAkB,CAAC,KAAY;QACpC,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5E,IAAI,CAAC,gBAAgB,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACxB,IAAI,CAAC,gBAAgB,GAAG,iCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAEM,mBAAmB,CAAC,KAAY;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgC,EAAE,MAAM,CAAC;QACpE,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,mCAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAClH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACtC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,IAAI,CAAC,gBAAgB;YACvB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAChD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExD,gBAAgB,CAAC,MAA+B;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CACF;AA3DD,gDA2DC;AAED,6CAA6C;AAC7C,MAAa,aAAa;IAIxB,YAAmB,KAAY;QAFd,UAAK,GAAyB,EAAE,CAAC;QAGhD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,kCAAkC;IAClC,IAAW,IAAI,KAA2B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,gBAAgB,CAAC,MAAc;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,KAAK,KAAK;YACd,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAEM,mBAAmB,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxDD,sCAwDC;AAED,gBAAgB;AAChB,MAAa,KAAM,SAAQ,OAAO;IAShC,yBAAyB;IACzB,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,UAAU,CAAC,OAAe,EAAE,MAAoC;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IAChC,CAAC;IACM,YAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;IACnC,CAAC;IAED,YAAmB,OAAsB,EAAE,QAA4B,EAAE,KAA0B,EAAE,OAAsB;QACzH,KAAK,EAAE,CAAC;QA1BO,aAAQ,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzD,iCAAiC;QACjB,kBAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QA+BhD,gBAAW,GAAG,KAAK,CAAC;QAN1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAGD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IAC3D,CAAC;IAED,sHAAsH;IAC/G,OAAO;QACZ,IAAA,sBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACtC,IAAA,qBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,sCAAsC,CAAC,CAAC;QACnF,IAAA,qBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,iCAAmB,CAAC,8BAA8B,EAAE,4CAA4C,CAAC,CAAC;QAC9I,IAAA,qBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAE3G,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEM,gBAAgB,CAAC,MAAc;QACpC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;CACF;AA/ED,sBA+EC;AAED,gBAAgB;AAChB,MAAa,MAAO,SAAQ,OAAO;IAajC,YAAmB,MAAqB,EAAE,YAAuB,EAAE,SAAqB,EAAE,IAA2B;QACnH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAE1C,IAAI,SAAS,KAAK,SAAS;YACzB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI;YACP,OAAO;QAET,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAoC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK;YACZ,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,iBAAiB,YAAY,mCAAgB;YACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;aAC5C,IAAI,IAAI,CAAC,iBAAiB,YAAY,2BAAY;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE7C,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAAoB,CAAC;YAC1D,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC/C,IAAI,UAAU,YAAY,mCAAgB;oBACxC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAE,EAAc,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,iBAAiB,CAAC,QAAwB;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACxF,OAAO,SAAS,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,+BAA+B,CAAC;IAC5F,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAClC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAClC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AA5ED,wBA4EC;AAED,gBAAgB;AAChB,MAAa,wBAAyB,SAAQ,OAAO;IAInD,YAAmB,OAAsB,EAAE,MAAc;QACvD,KAAK,EAAE,CAAC;QACR,IAAA,qBAAM,EAAC,OAAO,YAAY,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEe,OAAO;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEe,iBAAiB,CAAC,KAA8B;QAC9D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEe,WAAW,CAAC,QAAwB;QAClD,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAC9D,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,MAAM,CAAC,+BAA+B,GAAG,SAAS,CAAC;IAC9D,CAAC;CACF;AAtCD,4DAsCC;AAED,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,MAAM;IAC1C,YAAmB,SAAoB;QACrC,KAAK,CAAC,IAAI,6BAAa,EAAE,EAAE,yBAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE1D,mFAAmF;QACnF,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,mCAAgB,CAAC,SAAS,EAAE,CAAC;IACpE,CAAC;IAEM,IAAI,CAAC,IAAiB;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACtB;IACH,CAAC;CACF;AAdD,4CAcC;AACD,gBAAgB;AAChB,MAAa,aAAc,SAAQ,OAAO;IACxC,kFAAkF;IAClF,YAAmB,QAAyB;QAAI,KAAK,EAAE,CAAC;QAArC,aAAQ,GAAR,QAAQ,CAAiB;IAAa,CAAC;IAE1D,IAAW,UAAU,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAa,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAEM,OAAO;QACZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YACjC,IAAA,sBAAO,EAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC5C;IACH,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAmB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxD;IACH,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YACjC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACF;AAhCD,sCAgCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public setContext(batchId: number, iModel: IModelConnection | undefined) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = iModel;\r\n }\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, Id64String } from \"@itwin/core-bentley\";\r\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { GraphicBranch, GraphicBranchFrustum, GraphicBranchOptions } from \"../GraphicBranch\";\r\nimport { BatchOptions } from \"../GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { BranchState } from \"./BranchState\";\r\n\r\n/** @internal */\r\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\r\n public abstract addCommands(_commands: RenderCommands): void;\r\n public abstract get isDisposed(): boolean;\r\n public abstract get isPickable(): boolean;\r\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\r\n public toPrimitive(): Primitive | undefined { return undefined; }\r\n}\r\n\r\nexport class GraphicOwner extends Graphic {\r\n private readonly _graphic: Graphic;\r\n\r\n public constructor(graphic: Graphic) {\r\n super();\r\n this._graphic = graphic;\r\n }\r\n\r\n public get graphic(): RenderGraphic { return this._graphic; }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose(): void { this._isDisposed = true; }\r\n public disposeGraphic(): void {\r\n this.graphic.dispose();\r\n }\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n this._graphic.addCommands(commands);\r\n }\r\n public override get isPickable(): boolean {\r\n return this._graphic.isPickable;\r\n }\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n this._graphic.addHiliteCommands(commands, pass);\r\n }\r\n public override toPrimitive(): Primitive | undefined {\r\n return this._graphic.toPrimitive();\r\n }\r\n}\r\n\r\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\r\n * @internal\r\n */\r\nexport interface BatchContext {\r\n batchId: number;\r\n iModel?: IModelConnection;\r\n viewAttachmentId?: Id64String;\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetBatchData {\r\n public readonly target: Target;\r\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\r\n protected _thematicSensors?: ThematicSensors;\r\n\r\n public constructor(target: Target) {\r\n this.target = target;\r\n }\r\n\r\n public dispose(): void {\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n for (const value of this._featureOverrides.values())\r\n dispose(value);\r\n\r\n this._featureOverrides.clear();\r\n }\r\n\r\n public getThematicSensors(batch: Batch): ThematicSensors {\r\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\r\n this._thematicSensors = dispose(this._thematicSensors);\r\n\r\n if (!this._thematicSensors)\r\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\r\n\r\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\r\n return this._thematicSensors;\r\n }\r\n\r\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\r\n const source = this.target.currentFeatureSymbologyOverrides?.source;\r\n let ovrs = this._featureOverrides.get(source);\r\n if (!ovrs) {\r\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\r\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\r\n ovrs.initFromMap(batch.featureTable);\r\n }\r\n\r\n ovrs.update(batch.featureTable);\r\n return ovrs;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n if (this._thematicSensors)\r\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\r\n\r\n for (const ovrs of this._featureOverrides.values())\r\n stats.addFeatureOverrides(ovrs.byteLength);\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get featureOverrides() { return this._featureOverrides; }\r\n\r\n private onSourceDisposed(source: FeatureSymbology.Source): void {\r\n const ovrs = this._featureOverrides.get(source);\r\n if (ovrs) {\r\n this._featureOverrides.delete(source);\r\n ovrs.dispose();\r\n }\r\n }\r\n}\r\n\r\n/** @internal exported strictly for tests. */\r\nexport class PerTargetData {\r\n private readonly _batch: Batch;\r\n private readonly _data: PerTargetBatchData[] = [];\r\n\r\n public constructor(batch: Batch) {\r\n this._batch = batch;\r\n }\r\n\r\n public dispose(): void {\r\n for (const data of this._data) {\r\n data.target.onBatchDisposed(this._batch);\r\n data.dispose();\r\n }\r\n\r\n this._data.length = 0;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._data.length === 0;\r\n }\r\n\r\n /** Exposed strictly for tests. */\r\n public get data(): PerTargetBatchData[] { return this._data; }\r\n\r\n public onTargetDisposed(target: Target): void {\r\n const index = this._data.findIndex((x) => x.target === target);\r\n if (-1 === index)\r\n return;\r\n\r\n const data = this._data[index];\r\n data.dispose();\r\n this._data.splice(index, 1);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const data of this._data)\r\n data.collectStatistics(stats);\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n return this.getBatchData(target).getThematicSensors(this._batch);\r\n }\r\n\r\n public getFeatureOverrides(target: Target): FeatureOverrides {\r\n return this.getBatchData(target).getFeatureOverrides(this._batch);\r\n }\r\n\r\n private getBatchData(target: Target): PerTargetBatchData {\r\n let data = this._data.find((x) => x.target === target);\r\n if (!data) {\r\n this._data.push(data = new PerTargetBatchData(target));\r\n target.addBatch(this._batch);\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Batch extends Graphic {\r\n public readonly graphic: RenderGraphic;\r\n public readonly featureTable: RenderFeatureTable;\r\n public readonly range: ElementAlignedBox3d;\r\n private readonly _context: BatchContext = { batchId: 0 };\r\n /** Public strictly for tests. */\r\n public readonly perTargetData = new PerTargetData(this);\r\n public readonly options: BatchOptions;\r\n\r\n // Chiefly for debugging.\r\n public get tileId(): string | undefined {\r\n return this.options.tileId;\r\n }\r\n\r\n public get locateOnly(): boolean {\r\n return true === this.options.locateOnly;\r\n }\r\n\r\n /** The following are valid only during a draw and reset afterward. */\r\n public get batchId() { return this._context.batchId; }\r\n public get batchIModel() { return this._context.iModel; }\r\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\r\n\r\n public setContext(batchId: number, branch: BranchState) {\r\n this._context.batchId = batchId;\r\n this._context.iModel = branch.iModel;\r\n this._context.viewAttachmentId = branch.viewAttachmentId;\r\n }\r\n\r\n public resetContext() {\r\n this._context.batchId = 0;\r\n this._context.iModel = undefined;\r\n this._context.viewAttachmentId = undefined;\r\n }\r\n\r\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\r\n super();\r\n this.graphic = graphic;\r\n this.featureTable = features;\r\n this.range = range;\r\n this.options = options ?? {};\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean {\r\n return this._isDisposed && this.perTargetData.isDisposed;\r\n }\r\n\r\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\r\n public dispose() {\r\n dispose(this.graphic);\r\n\r\n this.perTargetData.dispose();\r\n this._isDisposed = true;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n stats.addFeatureTable(this.featureTable.byteLength);\r\n this.perTargetData.collectStatistics(stats);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addBatch(this);\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return true;\r\n }\r\n\r\n public getThematicSensors(target: Target): ThematicSensors {\r\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\r\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\r\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\r\n\r\n return this.perTargetData.getThematicSensors(target);\r\n }\r\n\r\n public getOverrides(target: Target): FeatureOverrides {\r\n return this.perTargetData.getFeatureOverrides(target);\r\n }\r\n\r\n public onTargetDisposed(target: Target) {\r\n this.perTargetData.onTargetDisposed(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Branch extends Graphic {\r\n public readonly branch: GraphicBranch;\r\n public localToWorldTransform: Transform;\r\n public readonly clips?: ClipVolume;\r\n public readonly planarClassifier?: PlanarClassifier;\r\n public readonly textureDrape?: TextureDrape;\r\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\r\n public readonly edgeSettings?: EdgeSettings;\r\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\r\n public readonly frustum?: GraphicBranchFrustum;\r\n public readonly appearanceProvider?: FeatureAppearanceProvider;\r\n public readonly secondaryClassifiers?: PlanarClassifier[];\r\n public readonly viewAttachmentId?: Id64String;\r\n\r\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\r\n super();\r\n this.branch = branch;\r\n this.localToWorldTransform = localToWorld;\r\n\r\n if (undefined !== viewFlags)\r\n branch.setViewFlags(viewFlags);\r\n\r\n if (!opts)\r\n return;\r\n\r\n this.appearanceProvider = opts.appearanceProvider;\r\n this.clips = opts.clipVolume as ClipVolume | undefined;\r\n this.iModel = opts.iModel;\r\n this.frustum = opts.frustum;\r\n this.viewAttachmentId = opts.viewAttachmentId;\r\n\r\n if (opts.hline)\r\n this.edgeSettings = EdgeSettings.create(opts.hline);\r\n\r\n if (opts.classifierOrDrape instanceof PlanarClassifier)\r\n this.planarClassifier = opts.classifierOrDrape;\r\n else if (opts.classifierOrDrape instanceof TextureDrape)\r\n this.textureDrape = opts.classifierOrDrape;\r\n\r\n if (opts.secondaryClassifiers) {\r\n this.secondaryClassifiers = new Array<PlanarClassifier>();\r\n opts.secondaryClassifiers.forEach((classifier) => {\r\n if (classifier instanceof PlanarClassifier)\r\n this.secondaryClassifiers?.push(classifier);\r\n });\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return 0 === this.branch.entries.length;\r\n }\r\n\r\n public dispose() {\r\n this.branch.dispose();\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.branch.collectStatistics(stats);\r\n }\r\n\r\n private shouldAddCommands(commands: RenderCommands): boolean {\r\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\r\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addBranch(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n if (this.shouldAddCommands(commands))\r\n commands.addHiliteBranch(this, pass);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AnimationTransformBranch extends Graphic {\r\n public readonly nodeId: number;\r\n public readonly graphic: Graphic;\r\n\r\n public constructor(graphic: RenderGraphic, nodeId: number) {\r\n super();\r\n assert(graphic instanceof Graphic);\r\n this.graphic = graphic;\r\n this.nodeId = nodeId;\r\n }\r\n\r\n public override dispose() {\r\n this.graphic.dispose();\r\n }\r\n\r\n public override get isDisposed() {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable() {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics) {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n\r\n public override addCommands(commands: RenderCommands) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addCommands(commands);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\r\n commands.target.currentAnimationTransformNodeId = this.nodeId;\r\n this.graphic.addHiliteCommands(commands, pass);\r\n commands.target.currentAnimationTransformNodeId = undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WorldDecorations extends Branch {\r\n public constructor(viewFlags: ViewFlags) {\r\n super(new GraphicBranch(), Transform.identity, viewFlags);\r\n\r\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\r\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\r\n }\r\n\r\n public init(decs: GraphicList): void {\r\n this.branch.clear();\r\n for (const dec of decs) {\r\n this.branch.add(dec);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class GraphicsArray extends Graphic {\r\n // Note: We assume the graphics array we get contains undisposed graphics to start\r\n constructor(public graphics: RenderGraphic[]) { super(); }\r\n\r\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphics.some((x) => (x as Graphic).isPickable);\r\n }\r\n\r\n public dispose() {\r\n for (const graphic of this.graphics)\r\n dispose(graphic);\r\n this.graphics.length = 0;\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addCommands(commands);\r\n }\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n for (const graphic of this.graphics) {\r\n (graphic as Graphic).addHiliteCommands(commands, pass);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n for (const graphic of this.graphics)\r\n graphic.collectStatistics(stats);\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
- import { EdgeTable, IndexedEdgeParams } from "../primitives/EdgeParams";
4
+ import { EdgeTable, IndexedEdgeParams } from "../../common/render/primitives/EdgeParams";
5
5
  import { RenderMemory } from "../RenderMemory";
6
6
  import { TextureHandle } from "./Texture";
7
7
  import { BuffersContainer } from "./AttributeBuffers";
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAC7C,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,OAAO;IAMA,OAAO,IAAI,IAAI;WAIR,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAK3D,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;CACF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,IAAW,UAAU,qBAA4B;IACjD,IAAoB,aAAa,SAAmB;IAEpD,OAAO;IAUA,OAAO,IAAI,IAAI;IAMtB,IAAW,UAAU,IAAI,OAAO,CAE/B;WAEa,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,SAAS;IAMzF,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAK9D,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAOzE,SAAS,CAAC,gBAAgB,IAAI,OAAO;cAClB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAEpE,IAAW,WAAW,gBAAsC;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM;IACtC,IAAW,WAAW,8CAAwE;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,cAAc,CAAC,MAAM,EAAE,MAAM;CAC9C"}
1
+ {"version":3,"file":"IndexedEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAC7C,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAE1C,OAAO;IAMA,OAAO,IAAI,IAAI;WAIR,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAK3D,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;CACF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,IAAW,UAAU,qBAA4B;IACjD,IAAoB,aAAa,SAAmB;IAEpD,OAAO;IAUA,OAAO,IAAI,IAAI;IAMtB,IAAW,UAAU,IAAI,OAAO,CAE/B;WAEa,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,SAAS;IAMzF,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAK9D,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAOzE,SAAS,CAAC,gBAAgB,IAAI,OAAO;cAClB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM;IAEpE,IAAW,WAAW,gBAAsC;IAC5C,OAAO,CAAC,MAAM,EAAE,MAAM;IACtC,IAAW,WAAW,8CAAwE;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,cAAc,CAAC,MAAM,EAAE,MAAM;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedEdgeGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { RenderMode } from \"@itwin/core-common\";\r\nimport { EdgeTable, IndexedEdgeParams } from \"../primitives/EdgeParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { TextureHandle } from \"./Texture\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\n\r\n/** @see [[EdgeTable]]\r\n * @internal\r\n */\r\nexport class EdgeLUT implements WebGLDisposable {\r\n public readonly texture: TextureHandle;\r\n public readonly numSegments: number;\r\n public readonly silhouettePadding: number;\r\n\r\n private constructor(texture: TextureHandle, numSegments: number, silhouettePadding: number) {\r\n this.texture = texture;\r\n this.numSegments = numSegments;\r\n this.silhouettePadding = silhouettePadding;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.texture);\r\n }\r\n\r\n public static create(table: EdgeTable): EdgeLUT | undefined {\r\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\r\n return texture ? new EdgeLUT(texture, table.numSegments, table.silhouettePadding) : undefined;\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this.texture.bytesUsed;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.texture.isDisposed;\r\n }\r\n}\r\n\r\n/** @see [[IndexedEdgeParams]]\r\n * @internal\r\n */\r\nexport class IndexedEdgeGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n public readonly edgeLut: EdgeLUT;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n public override get asIndexedEdge() { return this; }\r\n\r\n private constructor(mesh: MeshData, indices: BufferHandle, numIndices: number, lut: EdgeLUT) {\r\n super(mesh, numIndices);\r\n this.edgeLut = lut;\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.IndexedEdge, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n dispose(this.edgeLut);\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed && this._indices.isDisposed && this.edgeLut.isDisposed;\r\n }\r\n\r\n public static create(mesh: MeshData, params: IndexedEdgeParams): IndexedEdgeGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(params.indices.data);\r\n const lut = EdgeLUT.create(params.edges);\r\n return indexBuffer && lut ? new IndexedEdgeGeometry(mesh, indexBuffer, params.indices.length, lut) : undefined;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addIndexedEdges(this._indices.bytesUsed);\r\n stats.addEdgeTable(this.edgeLut.bytesUsed);\r\n }\r\n\r\n protected _draw(numInstances: number, instances?: BuffersContainer): void {\r\n const bufs = instances ?? this._buffers;\r\n bufs.bind();\r\n System.instance.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n }\r\n\r\n protected _wantWoWReversal(): boolean { return true; }\r\n protected override _getLineCode(params: ShaderProgramParams): number { return this.computeEdgeLineCode(params); }\r\n\r\n public get techniqueId() { return TechniqueId.IndexedEdge; }\r\n public override getPass(target: Target) { return this.computeEdgePass(target); }\r\n public get renderOrder() { return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge; }\r\n public override getColor(target: Target) { return this.computeEdgeColor(target); }\r\n public override wantMonochrome(target: Target) { return target.currentViewFlags.renderMode === RenderMode.Wireframe; }\r\n}\r\n"]}
1
+ {"version":3,"file":"IndexedEdgeGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { RenderMode } from \"@itwin/core-common\";\r\nimport { EdgeTable, IndexedEdgeParams } from \"../../common/render/primitives/EdgeParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { TextureHandle } from \"./Texture\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\n\r\n/** @see [[EdgeTable]]\r\n * @internal\r\n */\r\nexport class EdgeLUT implements WebGLDisposable {\r\n public readonly texture: TextureHandle;\r\n public readonly numSegments: number;\r\n public readonly silhouettePadding: number;\r\n\r\n private constructor(texture: TextureHandle, numSegments: number, silhouettePadding: number) {\r\n this.texture = texture;\r\n this.numSegments = numSegments;\r\n this.silhouettePadding = silhouettePadding;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.texture);\r\n }\r\n\r\n public static create(table: EdgeTable): EdgeLUT | undefined {\r\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\r\n return texture ? new EdgeLUT(texture, table.numSegments, table.silhouettePadding) : undefined;\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this.texture.bytesUsed;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.texture.isDisposed;\r\n }\r\n}\r\n\r\n/** @see [[IndexedEdgeParams]]\r\n * @internal\r\n */\r\nexport class IndexedEdgeGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n public readonly edgeLut: EdgeLUT;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n public override get asIndexedEdge() { return this; }\r\n\r\n private constructor(mesh: MeshData, indices: BufferHandle, numIndices: number, lut: EdgeLUT) {\r\n super(mesh, numIndices);\r\n this.edgeLut = lut;\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.IndexedEdge, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n dispose(this.edgeLut);\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed && this._indices.isDisposed && this.edgeLut.isDisposed;\r\n }\r\n\r\n public static create(mesh: MeshData, params: IndexedEdgeParams): IndexedEdgeGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(params.indices.data);\r\n const lut = EdgeLUT.create(params.edges);\r\n return indexBuffer && lut ? new IndexedEdgeGeometry(mesh, indexBuffer, params.indices.length, lut) : undefined;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addIndexedEdges(this._indices.bytesUsed);\r\n stats.addEdgeTable(this.edgeLut.bytesUsed);\r\n }\r\n\r\n protected _draw(numInstances: number, instances?: BuffersContainer): void {\r\n const bufs = instances ?? this._buffers;\r\n bufs.bind();\r\n System.instance.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n }\r\n\r\n protected _wantWoWReversal(): boolean { return true; }\r\n protected override _getLineCode(params: ShaderProgramParams): number { return this.computeEdgeLineCode(params); }\r\n\r\n public get techniqueId() { return TechniqueId.IndexedEdge; }\r\n public override getPass(target: Target) { return this.computeEdgePass(target); }\r\n public get renderOrder() { return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge; }\r\n public override getColor(target: Target) { return this.computeEdgeColor(target); }\r\n public override wantMonochrome(target: Target) { return target.currentViewFlags.renderMode === RenderMode.Wireframe; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { Matrix4 } from \"./Matrix\";\r\n\r\n/** @internal */\r\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\r\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\r\n}\r\n\r\nclass InstanceData {\r\n public readonly numInstances: number;\r\n public readonly range: Range3d;\r\n // A transform including only rtcCenter.\r\n private readonly _rtcOnlyTransform: Transform;\r\n // A transform from _rtcCenter including model matrix\r\n private readonly _rtcModelTransform: Transform;\r\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\r\n private readonly _modelMatrix = Transform.createIdentity();\r\n\r\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\r\n this.numInstances = numInstances;\r\n this.range = range;\r\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\r\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\r\n }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform): Transform {\r\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\r\n modelMatrix.clone(this._modelMatrix);\r\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\r\n }\r\n\r\n return this._rtcModelTransform;\r\n }\r\n\r\n public getRtcOnlyTransform(): Transform {\r\n return this._rtcOnlyTransform;\r\n }\r\n\r\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\r\n public get patternFeatureId(): Float32Array {\r\n return InstanceData._noFeatureId;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PatternTransforms {\r\n readonly orgTransform: Matrix4;\r\n readonly localToModel: Matrix4;\r\n readonly symbolToLocal: Matrix4;\r\n readonly origin: Float32Array;\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffers extends InstanceData {\r\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\r\n\r\n public readonly transforms: BufferHandle;\r\n public readonly featureIds?: BufferHandle;\r\n public readonly hasFeatures: boolean;\r\n public readonly symbology?: BufferHandle;\r\n public readonly patternParams = InstanceBuffers._patternParams;\r\n public readonly patternTransforms = undefined;\r\n public readonly viewIndependentOrigin = undefined;\r\n\r\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\r\n super(count, rtcCenter, range);\r\n this.transforms = transforms;\r\n this.featureIds = featureIds;\r\n this.hasFeatures = undefined !== featureIds;\r\n this.symbology = symbology;\r\n }\r\n\r\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\r\n const params: BufferParameters[] = [];\r\n const numRows = 3;\r\n let row = 0;\r\n while (row < numRows) {\r\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\r\n const floatsPerRow = 4;\r\n const bytesPerVertex = floatsPerRow * 4;\r\n const offset = row * bytesPerVertex;\r\n const stride = 3 * bytesPerVertex;\r\n const name = `a_instanceMatrixRow${row}`;\r\n const details = AttributeMap.findAttribute(name, techniqueId, true);\r\n assert(details !== undefined);\r\n const bParams: BufferParameters = {\r\n glAttribLoc: details.location,\r\n glSize: floatsPerRow,\r\n glType: GL.DataType.Float,\r\n glNormalized: false,\r\n glStride: stride,\r\n glOffset: offset,\r\n glInstanced: true,\r\n };\r\n params.push(bParams);\r\n row++;\r\n }\r\n return params;\r\n }\r\n\r\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\r\n const { count, featureIds, symbologyOverrides, transforms } = params;\r\n\r\n assert(count > 0 && Math.floor(count) === count);\r\n assert(count === transforms.length / 12);\r\n assert(undefined === featureIds || count === featureIds.length / 3);\r\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\r\n\r\n let idBuf: BufferHandle | undefined;\r\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\r\n return undefined;\r\n\r\n let symBuf: BufferHandle | undefined;\r\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\r\n return undefined;\r\n\r\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\r\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.transforms.isDisposed\r\n && (undefined === this.featureIds || this.featureIds.isDisposed)\r\n && (undefined === this.symbology || this.symbology.isDisposed);\r\n }\r\n\r\n public dispose() {\r\n dispose(this.transforms);\r\n dispose(this.featureIds);\r\n dispose(this.symbology);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\r\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\r\n\r\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\r\n stats.addInstances(bytesUsed);\r\n }\r\n\r\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\r\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\r\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\r\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\r\n }\r\n\r\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\r\n const range = out ?? new Range3d();\r\n\r\n const numFloatsPerTransform = 3 * 4;\r\n assert(0 === tfs.length % (3 * 4));\r\n\r\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\r\n }\r\n\r\n range.low.addInPlace(rtcCenter);\r\n range.high.addInPlace(rtcCenter);\r\n\r\n return range.clone(out);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PatternBuffers extends InstanceData {\r\n private readonly _featureId?: Float32Array;\r\n\r\n private constructor(\r\n count: number,\r\n rtcCenter: Point3d,\r\n range: Range3d,\r\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\r\n public readonly origin: Float32Array, // [ x, y ]\r\n public readonly orgTransform: Matrix4,\r\n public readonly localToModel: Matrix4,\r\n public readonly symbolToLocal: Matrix4,\r\n public readonly offsets: BufferHandle,\r\n featureId: number | undefined,\r\n public readonly viewIndependentOrigin: Point3d | undefined\r\n ) {\r\n super(count, rtcCenter, range);\r\n this.patternTransforms = this;\r\n if (undefined !== featureId) {\r\n this._featureId = new Float32Array([\r\n (featureId & 0x0000ff) >>> 0,\r\n (featureId & 0x00ff00) >>> 8,\r\n (featureId & 0xff0000) >>> 16,\r\n ]);\r\n }\r\n }\r\n\r\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\r\n const count = params.xyOffsets.byteLength / 2;\r\n assert(Math.floor(count) === count);\r\n\r\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\r\n if (!offsets)\r\n return undefined;\r\n\r\n return new PatternBuffers(\r\n count,\r\n new Point3d(),\r\n params.range,\r\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\r\n new Float32Array([params.origin.x, params.origin.y]),\r\n Matrix4.fromTransform(params.orgTransform),\r\n Matrix4.fromTransform(params.patternToModel),\r\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\r\n offsets,\r\n params.featureId,\r\n params.viewIndependentOrigin,\r\n );\r\n }\r\n\r\n public readonly patternTransforms: PatternTransforms;\r\n\r\n public get hasFeatures(): boolean {\r\n return undefined !== this._featureId;\r\n }\r\n\r\n public override get patternFeatureId(): Float32Array {\r\n return this._featureId ?? super.patternFeatureId;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.offsets.isDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.offsets);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addInstances(this.offsets.bytesUsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstancedGeometry extends CachedGeometry {\r\n private readonly _buffersContainer: BuffersContainer;\r\n private readonly _buffers: InstanceBuffers | PatternBuffers;\r\n private readonly _repr: LUTGeometry;\r\n private readonly _ownsBuffers: boolean;\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\r\n\r\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\r\n\r\n public override get asInstanced() { return this; }\r\n public override get asLUT() { return this._repr.asLUT; }\r\n public override get asMesh() { return this._repr.asMesh; }\r\n public override get asSurface() { return this._repr.asSurface; }\r\n public override get asEdge() { return this._repr.asEdge; }\r\n public override get asSilhouette() { return this._repr.asSilhouette; }\r\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\r\n\r\n public get renderOrder() { return this._repr.renderOrder; }\r\n public override get isLitSurface() { return this._repr.isLitSurface; }\r\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\r\n public override get hasAnimation() { return this._repr.hasAnimation; }\r\n public get qOrigin() { return this._repr.qOrigin; }\r\n public get qScale() { return this._repr.qScale; }\r\n public override get materialInfo() { return this._repr.materialInfo; }\r\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\r\n public override get isEdge() { return this._repr.isEdge; }\r\n public override get hasFeatures() { return this._buffers.hasFeatures; }\r\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\r\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\r\n\r\n public override getPass(target: Target) { return this._repr.getPass(target); }\r\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\r\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\r\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\r\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\r\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\r\n\r\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\r\n\r\n if (buffers.symbology) {\r\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\r\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\r\n assert(attrInstanceOverrides !== undefined);\r\n assert(attrInstanceRgba !== undefined);\r\n container.addBuffer(buffers.symbology, [\r\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\r\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\r\n ]);\r\n }\r\n if (buffers.featureIds) {\r\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\r\n assert(attrFeatureId !== undefined);\r\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\r\n }\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\r\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\r\n assert(undefined !== attrX && undefined !== attrY);\r\n container.addBuffer(buffers.offsets, [\r\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\r\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\r\n ]);\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\r\n super();\r\n this._repr = repr;\r\n this._ownsBuffers = ownsBuffers;\r\n this._buffers = buffers;\r\n this._buffersContainer = container;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n if (!this._repr.isDisposed)\r\n return false;\r\n\r\n return !this._ownsBuffers || this._buffers.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n this._repr.dispose();\r\n if (this._ownsBuffers)\r\n dispose(this._buffers);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target) {\r\n assert(false, \"Should never be called\");\r\n return false;\r\n }\r\n\r\n public draw() {\r\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\r\n }\r\n\r\n public override computeRange(output?: Range3d): Range3d {\r\n return this._buffers.range.clone(output);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this._repr.collectStatistics(stats);\r\n if (this._ownsBuffers)\r\n this._buffers.collectStatistics(stats);\r\n }\r\n\r\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\r\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\r\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\r\n}\r\n"]}
1
+ {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { Matrix4 } from \"./Matrix\";\r\n\r\n/** @internal */\r\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\r\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\r\n}\r\n\r\nclass InstanceData {\r\n public readonly numInstances: number;\r\n public readonly range: Range3d;\r\n // A transform including only rtcCenter.\r\n private readonly _rtcOnlyTransform: Transform;\r\n // A transform from _rtcCenter including model matrix\r\n private readonly _rtcModelTransform: Transform;\r\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\r\n private readonly _modelMatrix = Transform.createIdentity();\r\n\r\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\r\n this.numInstances = numInstances;\r\n this.range = range;\r\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\r\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\r\n }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform): Transform {\r\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\r\n modelMatrix.clone(this._modelMatrix);\r\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\r\n }\r\n\r\n return this._rtcModelTransform;\r\n }\r\n\r\n public getRtcOnlyTransform(): Transform {\r\n return this._rtcOnlyTransform;\r\n }\r\n\r\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\r\n public get patternFeatureId(): Float32Array {\r\n return InstanceData._noFeatureId;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PatternTransforms {\r\n readonly orgTransform: Matrix4;\r\n readonly localToModel: Matrix4;\r\n readonly symbolToLocal: Matrix4;\r\n readonly origin: Float32Array;\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffers extends InstanceData {\r\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\r\n\r\n public readonly transforms: BufferHandle;\r\n public readonly featureIds?: BufferHandle;\r\n public readonly hasFeatures: boolean;\r\n public readonly symbology?: BufferHandle;\r\n public readonly patternParams = InstanceBuffers._patternParams;\r\n public readonly patternTransforms = undefined;\r\n public readonly viewIndependentOrigin = undefined;\r\n\r\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\r\n super(count, rtcCenter, range);\r\n this.transforms = transforms;\r\n this.featureIds = featureIds;\r\n this.hasFeatures = undefined !== featureIds;\r\n this.symbology = symbology;\r\n }\r\n\r\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\r\n const params: BufferParameters[] = [];\r\n const numRows = 3;\r\n let row = 0;\r\n while (row < numRows) {\r\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\r\n const floatsPerRow = 4;\r\n const bytesPerVertex = floatsPerRow * 4;\r\n const offset = row * bytesPerVertex;\r\n const stride = 3 * bytesPerVertex;\r\n const name = `a_instanceMatrixRow${row}`;\r\n const details = AttributeMap.findAttribute(name, techniqueId, true);\r\n assert(details !== undefined);\r\n const bParams: BufferParameters = {\r\n glAttribLoc: details.location,\r\n glSize: floatsPerRow,\r\n glType: GL.DataType.Float,\r\n glNormalized: false,\r\n glStride: stride,\r\n glOffset: offset,\r\n glInstanced: true,\r\n };\r\n params.push(bParams);\r\n row++;\r\n }\r\n return params;\r\n }\r\n\r\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\r\n const { count, featureIds, symbologyOverrides, transforms } = params;\r\n\r\n assert(count > 0 && Math.floor(count) === count);\r\n assert(count === transforms.length / 12);\r\n assert(undefined === featureIds || count === featureIds.length / 3);\r\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\r\n\r\n let idBuf: BufferHandle | undefined;\r\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\r\n return undefined;\r\n\r\n let symBuf: BufferHandle | undefined;\r\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\r\n return undefined;\r\n\r\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\r\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.transforms.isDisposed\r\n && (undefined === this.featureIds || this.featureIds.isDisposed)\r\n && (undefined === this.symbology || this.symbology.isDisposed);\r\n }\r\n\r\n public dispose() {\r\n dispose(this.transforms);\r\n dispose(this.featureIds);\r\n dispose(this.symbology);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\r\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\r\n\r\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\r\n stats.addInstances(bytesUsed);\r\n }\r\n\r\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\r\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\r\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\r\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\r\n }\r\n\r\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\r\n const range = out ?? new Range3d();\r\n\r\n const numFloatsPerTransform = 3 * 4;\r\n assert(0 === tfs.length % (3 * 4));\r\n\r\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\r\n }\r\n\r\n range.low.addInPlace(rtcCenter);\r\n range.high.addInPlace(rtcCenter);\r\n\r\n return range.clone(out);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PatternBuffers extends InstanceData {\r\n private readonly _featureId?: Float32Array;\r\n\r\n private constructor(\r\n count: number,\r\n rtcCenter: Point3d,\r\n range: Range3d,\r\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\r\n public readonly origin: Float32Array, // [ x, y ]\r\n public readonly orgTransform: Matrix4,\r\n public readonly localToModel: Matrix4,\r\n public readonly symbolToLocal: Matrix4,\r\n public readonly offsets: BufferHandle,\r\n featureId: number | undefined,\r\n public readonly viewIndependentOrigin: Point3d | undefined,\r\n ) {\r\n super(count, rtcCenter, range);\r\n this.patternTransforms = this;\r\n if (undefined !== featureId) {\r\n this._featureId = new Float32Array([\r\n (featureId & 0x0000ff) >>> 0,\r\n (featureId & 0x00ff00) >>> 8,\r\n (featureId & 0xff0000) >>> 16,\r\n ]);\r\n }\r\n }\r\n\r\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\r\n const count = params.xyOffsets.byteLength / 2;\r\n assert(Math.floor(count) === count);\r\n\r\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\r\n if (!offsets)\r\n return undefined;\r\n\r\n return new PatternBuffers(\r\n count,\r\n new Point3d(),\r\n params.range,\r\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\r\n new Float32Array([params.origin.x, params.origin.y]),\r\n Matrix4.fromTransform(params.orgTransform),\r\n Matrix4.fromTransform(params.patternToModel),\r\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\r\n offsets,\r\n params.featureId,\r\n params.viewIndependentOrigin,\r\n );\r\n }\r\n\r\n public readonly patternTransforms: PatternTransforms;\r\n\r\n public get hasFeatures(): boolean {\r\n return undefined !== this._featureId;\r\n }\r\n\r\n public override get patternFeatureId(): Float32Array {\r\n return this._featureId ?? super.patternFeatureId;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.offsets.isDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.offsets);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addInstances(this.offsets.bytesUsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstancedGeometry extends CachedGeometry {\r\n private readonly _buffersContainer: BuffersContainer;\r\n private readonly _buffers: InstanceBuffers | PatternBuffers;\r\n private readonly _repr: LUTGeometry;\r\n private readonly _ownsBuffers: boolean;\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\r\n\r\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\r\n\r\n public override get asInstanced() { return this; }\r\n public override get asLUT() { return this._repr.asLUT; }\r\n public override get asMesh() { return this._repr.asMesh; }\r\n public override get asSurface() { return this._repr.asSurface; }\r\n public override get asEdge() { return this._repr.asEdge; }\r\n public override get asSilhouette() { return this._repr.asSilhouette; }\r\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\r\n\r\n public get renderOrder() { return this._repr.renderOrder; }\r\n public override get isLitSurface() { return this._repr.isLitSurface; }\r\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\r\n public override get hasAnimation() { return this._repr.hasAnimation; }\r\n public get qOrigin() { return this._repr.qOrigin; }\r\n public get qScale() { return this._repr.qScale; }\r\n public override get materialInfo() { return this._repr.materialInfo; }\r\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\r\n public override get isEdge() { return this._repr.isEdge; }\r\n public override get hasFeatures() { return this._buffers.hasFeatures; }\r\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\r\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\r\n\r\n public override getPass(target: Target) { return this._repr.getPass(target); }\r\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\r\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\r\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\r\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\r\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\r\n\r\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\r\n\r\n if (buffers.symbology) {\r\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\r\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\r\n assert(attrInstanceOverrides !== undefined);\r\n assert(attrInstanceRgba !== undefined);\r\n container.addBuffer(buffers.symbology, [\r\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\r\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\r\n ]);\r\n }\r\n if (buffers.featureIds) {\r\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\r\n assert(attrFeatureId !== undefined);\r\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\r\n }\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\r\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\r\n assert(undefined !== attrX && undefined !== attrY);\r\n container.addBuffer(buffers.offsets, [\r\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\r\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\r\n ]);\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\r\n super();\r\n this._repr = repr;\r\n this._ownsBuffers = ownsBuffers;\r\n this._buffers = buffers;\r\n this._buffersContainer = container;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n if (!this._repr.isDisposed)\r\n return false;\r\n\r\n return !this._ownsBuffers || this._buffers.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n this._repr.dispose();\r\n if (this._ownsBuffers)\r\n dispose(this._buffers);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target) {\r\n assert(false, \"Should never be called\");\r\n return false;\r\n }\r\n\r\n public draw() {\r\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\r\n }\r\n\r\n public override computeRange(output?: Range3d): Range3d {\r\n return this._buffers.range.clone(output);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this._repr.collectStatistics(stats);\r\n if (this._ownsBuffers)\r\n this._buffers.collectStatistics(stats);\r\n }\r\n\r\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\r\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\r\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\r\n}\r\n"]}