@itwin/core-frontend 5.0.0-dev.99 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/lib/cjs/AccuDraw.d.ts +2 -0
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +22 -41
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +1 -0
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +71 -3
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/BriefcaseConnection.d.ts +1 -1
  11. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  13. package/lib/cjs/CatalogConnection.d.ts +71 -0
  14. package/lib/cjs/CatalogConnection.d.ts.map +1 -0
  15. package/lib/cjs/CatalogConnection.js +95 -0
  16. package/lib/cjs/CatalogConnection.js.map +1 -0
  17. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  18. package/lib/cjs/ElementLocateManager.js +5 -2
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
  21. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  22. package/lib/cjs/GraphicalEditingScope.js +1 -1
  23. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  24. package/lib/cjs/HitDetail.d.ts +30 -3
  25. package/lib/cjs/HitDetail.d.ts.map +1 -1
  26. package/lib/cjs/HitDetail.js +14 -0
  27. package/lib/cjs/HitDetail.js.map +1 -1
  28. package/lib/cjs/IModelApp.d.ts +16 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +20 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +18 -6
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +27 -6
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts +2 -2
  37. package/lib/cjs/IpcApp.d.ts.map +1 -1
  38. package/lib/cjs/IpcApp.js +1 -1
  39. package/lib/cjs/IpcApp.js.map +1 -1
  40. package/lib/cjs/ModelState.d.ts.map +1 -1
  41. package/lib/cjs/ModelState.js +7 -5
  42. package/lib/cjs/ModelState.js.map +1 -1
  43. package/lib/cjs/NativeApp.d.ts +2 -1
  44. package/lib/cjs/NativeApp.d.ts.map +1 -1
  45. package/lib/cjs/NativeApp.js +1 -0
  46. package/lib/cjs/NativeApp.js.map +1 -1
  47. package/lib/cjs/SelectionSet.d.ts +7 -7
  48. package/lib/cjs/SelectionSet.js +3 -3
  49. package/lib/cjs/SelectionSet.js.map +1 -1
  50. package/lib/cjs/ViewContext.d.ts +4 -1
  51. package/lib/cjs/ViewContext.d.ts.map +1 -1
  52. package/lib/cjs/ViewContext.js +10 -5
  53. package/lib/cjs/ViewContext.js.map +1 -1
  54. package/lib/cjs/ViewManager.js +2 -2
  55. package/lib/cjs/ViewManager.js.map +1 -1
  56. package/lib/cjs/ViewState.d.ts +1 -1
  57. package/lib/cjs/ViewState.js +1 -1
  58. package/lib/cjs/ViewState.js.map +1 -1
  59. package/lib/cjs/Viewport.d.ts +7 -5
  60. package/lib/cjs/Viewport.d.ts.map +1 -1
  61. package/lib/cjs/Viewport.js +10 -5
  62. package/lib/cjs/Viewport.js.map +1 -1
  63. package/lib/cjs/core-frontend.d.ts +2 -1
  64. package/lib/cjs/core-frontend.d.ts.map +1 -1
  65. package/lib/cjs/core-frontend.js +1 -0
  66. package/lib/cjs/core-frontend.js.map +1 -1
  67. package/lib/cjs/extension/ExtensionRuntime.js +15 -2
  68. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  69. package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  70. package/lib/cjs/extension/providers/ExtensionLoadScript.js +24 -6
  71. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  72. package/lib/cjs/internal/cross-package.d.ts +1 -1
  73. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  74. package/lib/cjs/internal/cross-package.js +3 -1
  75. package/lib/cjs/internal/cross-package.js.map +1 -1
  76. package/lib/cjs/internal/render/MockRender.d.ts +1 -1
  77. package/lib/cjs/internal/render/MockRender.d.ts.map +1 -1
  78. package/lib/cjs/internal/render/MockRender.js +1 -1
  79. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  80. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  81. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  82. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
  83. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  84. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  85. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  86. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
  87. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  88. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
  89. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  90. package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
  91. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  92. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  93. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  94. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +7 -0
  95. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  96. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +0 -1
  97. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  98. package/lib/cjs/internal/render/webgl/MapLayerParams.js +11 -20
  99. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  100. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  101. package/lib/cjs/internal/render/webgl/RenderCommands.js +2 -3
  102. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  103. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +9 -0
  104. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  105. package/lib/cjs/internal/render/webgl/SceneCompositor.js +86 -11
  106. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  107. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  108. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  109. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  110. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  111. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
  112. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
  114. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +2 -2
  116. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  117. package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  118. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +20 -8
  119. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  120. package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
  121. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/Target.js +2 -2
  123. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts +3 -3
  125. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/TargetGraphics.js +10 -7
  127. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
  129. package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
  130. package/lib/cjs/internal/render/webgl/Technique.js +3 -3
  131. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  132. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  133. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  134. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  135. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  137. package/lib/cjs/internal/render/webgl/glsl/Contours.js +31 -1
  138. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  139. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  140. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +7 -2
  141. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  143. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  144. package/lib/cjs/internal/tile/ClassifierTileTree.js +3 -1
  145. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  146. package/lib/cjs/internal/tile/GraphicsCollector.d.ts +2 -0
  147. package/lib/cjs/internal/tile/GraphicsCollector.d.ts.map +1 -1
  148. package/lib/cjs/internal/tile/GraphicsCollector.js +2 -0
  149. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  150. package/lib/cjs/internal/tile/IModelTile.d.ts.map +1 -1
  151. package/lib/cjs/internal/tile/IModelTile.js +6 -0
  152. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  153. package/lib/cjs/internal/tile/IModelTileTree.d.ts +4 -1
  154. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  155. package/lib/cjs/internal/tile/IModelTileTree.js +6 -0
  156. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  157. package/lib/cjs/internal/tile/ImdlDecoder.d.ts +2 -0
  158. package/lib/cjs/internal/tile/ImdlDecoder.d.ts.map +1 -1
  159. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  160. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  161. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  162. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +2 -1
  163. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  164. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  165. package/lib/cjs/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  166. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  167. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -0
  168. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  169. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  170. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  171. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  172. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +9 -4
  173. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  174. package/lib/cjs/internal/tile/PrimaryTileTree.js +34 -11
  175. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  176. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +15 -3
  177. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  178. package/lib/cjs/internal/tile/RealityModelTileTree.js +27 -32
  179. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  180. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  181. package/lib/cjs/internal/tile/RealityTileLoader.js +2 -1
  182. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  183. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  184. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  185. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  186. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  187. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  188. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  189. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  190. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  191. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  192. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  193. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  194. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  195. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  196. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  197. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  198. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  199. package/lib/cjs/properties/AngleDescription.d.ts +4 -1
  200. package/lib/cjs/properties/AngleDescription.d.ts.map +1 -1
  201. package/lib/cjs/properties/AngleDescription.js +10 -2
  202. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  203. package/lib/cjs/properties/FormattedQuantityDescription.d.ts +11 -1
  204. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  205. package/lib/cjs/properties/FormattedQuantityDescription.js +7 -2
  206. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  207. package/lib/cjs/properties/LengthDescription.d.ts +12 -3
  208. package/lib/cjs/properties/LengthDescription.d.ts.map +1 -1
  209. package/lib/cjs/properties/LengthDescription.js +30 -6
  210. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  211. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +103 -7
  212. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  213. package/lib/cjs/quantity-formatting/QuantityFormatter.js +212 -23
  214. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  215. package/lib/cjs/render/Decorations.d.ts +1 -1
  216. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  217. package/lib/cjs/render/Decorations.js +1 -1
  218. package/lib/cjs/render/Decorations.js.map +1 -1
  219. package/lib/cjs/render/GraphicBranch.d.ts +1 -1
  220. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  221. package/lib/cjs/render/GraphicBranch.js +1 -1
  222. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  223. package/lib/cjs/render/Pixel.d.ts +13 -2
  224. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  225. package/lib/cjs/render/Pixel.js +20 -8
  226. package/lib/cjs/render/Pixel.js.map +1 -1
  227. package/lib/cjs/render/RenderGraphic.d.ts +1 -1
  228. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  229. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  230. package/lib/cjs/render/RenderSystem.d.ts +2 -2
  231. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  232. package/lib/cjs/render/RenderSystem.js.map +1 -1
  233. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  234. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  235. package/lib/cjs/render/RenderTarget.js.map +1 -1
  236. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  237. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  238. package/lib/cjs/request/Request.d.ts +2 -2
  239. package/lib/cjs/request/Request.js.map +1 -1
  240. package/lib/cjs/tile/ImdlReader.d.ts +3 -2
  241. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  242. package/lib/cjs/tile/ImdlReader.js +1 -0
  243. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  244. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  245. package/lib/cjs/tile/RealityTileTree.js +1 -1
  246. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  247. package/lib/cjs/tile/Tile.d.ts +1 -1
  248. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  249. package/lib/cjs/tile/Tile.js +1 -1
  250. package/lib/cjs/tile/Tile.js.map +1 -1
  251. package/lib/cjs/tile/TileAdmin.d.ts +10 -0
  252. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  253. package/lib/cjs/tile/TileAdmin.js +3 -0
  254. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  255. package/lib/cjs/tile/TileDrawArgs.d.ts +1 -0
  256. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  257. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  258. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  259. package/lib/cjs/tile/TileTree.d.ts +1 -1
  260. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  261. package/lib/cjs/tile/TileTree.js +1 -1
  262. package/lib/cjs/tile/TileTree.js.map +1 -1
  263. package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
  264. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  265. package/lib/cjs/tile/TileTreeReference.js +1 -1
  266. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  267. package/lib/cjs/tile/internal.d.ts +3 -2
  268. package/lib/cjs/tile/internal.d.ts.map +1 -1
  269. package/lib/cjs/tile/internal.js +3 -2
  270. package/lib/cjs/tile/internal.js.map +1 -1
  271. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +1 -1
  272. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/CesiumTerrainProvider.js +3 -4
  274. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  275. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  276. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  277. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  278. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  279. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +10 -0
  280. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  281. package/lib/cjs/tile/map/MapCartoRectangle.js +12 -0
  282. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  283. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
  284. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  285. package/lib/cjs/tile/map/MapLayerImageryProvider.js +9 -5
  286. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  287. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  288. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  289. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  290. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  291. package/lib/cjs/tile/map/QuadId.d.ts +15 -0
  292. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/QuadId.js +12 -0
  294. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  295. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  296. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  298. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  299. package/lib/cjs/tools/AccuDrawTool.d.ts +0 -12
  300. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  301. package/lib/cjs/tools/AccuDrawTool.js +2 -60
  302. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  303. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +7 -1
  304. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  305. package/lib/cjs/tools/AccuDrawViewportUI.js +29 -19
  306. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  307. package/lib/cjs/tools/ElementSetTool.d.ts +9 -1
  308. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  309. package/lib/cjs/tools/ElementSetTool.js +128 -7
  310. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  311. package/lib/cjs/tools/MeasureTool.d.ts +9 -0
  312. package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
  313. package/lib/cjs/tools/MeasureTool.js +53 -22
  314. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  315. package/lib/cjs/tools/SelectTool.d.ts +2 -2
  316. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  317. package/lib/cjs/tools/SelectTool.js +26 -97
  318. package/lib/cjs/tools/SelectTool.js.map +1 -1
  319. package/lib/cjs/tools/Tool.d.ts +10 -1
  320. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  321. package/lib/cjs/tools/Tool.js +27 -4
  322. package/lib/cjs/tools/Tool.js.map +1 -1
  323. package/lib/cjs/tools/ToolAdmin.d.ts +1 -0
  324. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  325. package/lib/cjs/tools/ToolAdmin.js +8 -2
  326. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  327. package/lib/cjs/tools/ToolSettings.d.ts +5 -0
  328. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  329. package/lib/cjs/tools/ToolSettings.js +5 -0
  330. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  331. package/lib/cjs/tools/ViewTool.d.ts +26 -18
  332. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  333. package/lib/cjs/tools/ViewTool.js +39 -87
  334. package/lib/cjs/tools/ViewTool.js.map +1 -1
  335. package/lib/esm/AccuDraw.d.ts +2 -0
  336. package/lib/esm/AccuDraw.d.ts.map +1 -1
  337. package/lib/esm/AccuDraw.js +23 -42
  338. package/lib/esm/AccuDraw.js.map +1 -1
  339. package/lib/esm/AccuSnap.d.ts +1 -0
  340. package/lib/esm/AccuSnap.d.ts.map +1 -1
  341. package/lib/esm/AccuSnap.js +71 -3
  342. package/lib/esm/AccuSnap.js.map +1 -1
  343. package/lib/esm/BriefcaseConnection.d.ts +1 -1
  344. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  345. package/lib/esm/BriefcaseConnection.js.map +1 -1
  346. package/lib/esm/CatalogConnection.d.ts +71 -0
  347. package/lib/esm/CatalogConnection.d.ts.map +1 -0
  348. package/lib/esm/CatalogConnection.js +92 -0
  349. package/lib/esm/CatalogConnection.js.map +1 -0
  350. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  351. package/lib/esm/ElementLocateManager.js +5 -2
  352. package/lib/esm/ElementLocateManager.js.map +1 -1
  353. package/lib/esm/GraphicalEditingScope.d.ts +1 -1
  354. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  355. package/lib/esm/GraphicalEditingScope.js +1 -1
  356. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  357. package/lib/esm/HitDetail.d.ts +30 -3
  358. package/lib/esm/HitDetail.d.ts.map +1 -1
  359. package/lib/esm/HitDetail.js +14 -0
  360. package/lib/esm/HitDetail.js.map +1 -1
  361. package/lib/esm/IModelApp.d.ts +16 -1
  362. package/lib/esm/IModelApp.d.ts.map +1 -1
  363. package/lib/esm/IModelApp.js +21 -2
  364. package/lib/esm/IModelApp.js.map +1 -1
  365. package/lib/esm/IModelConnection.d.ts +18 -6
  366. package/lib/esm/IModelConnection.d.ts.map +1 -1
  367. package/lib/esm/IModelConnection.js +27 -6
  368. package/lib/esm/IModelConnection.js.map +1 -1
  369. package/lib/esm/IpcApp.d.ts +2 -2
  370. package/lib/esm/IpcApp.d.ts.map +1 -1
  371. package/lib/esm/IpcApp.js +1 -1
  372. package/lib/esm/IpcApp.js.map +1 -1
  373. package/lib/esm/ModelState.d.ts.map +1 -1
  374. package/lib/esm/ModelState.js +7 -5
  375. package/lib/esm/ModelState.js.map +1 -1
  376. package/lib/esm/NativeApp.d.ts +2 -1
  377. package/lib/esm/NativeApp.d.ts.map +1 -1
  378. package/lib/esm/NativeApp.js +1 -0
  379. package/lib/esm/NativeApp.js.map +1 -1
  380. package/lib/esm/SelectionSet.d.ts +7 -7
  381. package/lib/esm/SelectionSet.js +3 -3
  382. package/lib/esm/SelectionSet.js.map +1 -1
  383. package/lib/esm/ViewContext.d.ts +4 -1
  384. package/lib/esm/ViewContext.d.ts.map +1 -1
  385. package/lib/esm/ViewContext.js +10 -5
  386. package/lib/esm/ViewContext.js.map +1 -1
  387. package/lib/esm/ViewManager.js +2 -2
  388. package/lib/esm/ViewManager.js.map +1 -1
  389. package/lib/esm/ViewState.d.ts +1 -1
  390. package/lib/esm/ViewState.js +1 -1
  391. package/lib/esm/ViewState.js.map +1 -1
  392. package/lib/esm/Viewport.d.ts +7 -5
  393. package/lib/esm/Viewport.d.ts.map +1 -1
  394. package/lib/esm/Viewport.js +10 -5
  395. package/lib/esm/Viewport.js.map +1 -1
  396. package/lib/esm/core-frontend.d.ts +2 -1
  397. package/lib/esm/core-frontend.d.ts.map +1 -1
  398. package/lib/esm/core-frontend.js +1 -0
  399. package/lib/esm/core-frontend.js.map +1 -1
  400. package/lib/esm/extension/ExtensionRuntime.js +15 -2
  401. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  402. package/lib/esm/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  403. package/lib/esm/extension/providers/ExtensionLoadScript.js +1 -6
  404. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  405. package/lib/esm/internal/cross-package.d.ts +1 -1
  406. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  407. package/lib/esm/internal/cross-package.js +1 -1
  408. package/lib/esm/internal/cross-package.js.map +1 -1
  409. package/lib/esm/internal/render/MockRender.d.ts +1 -1
  410. package/lib/esm/internal/render/MockRender.d.ts.map +1 -1
  411. package/lib/esm/internal/render/MockRender.js +1 -1
  412. package/lib/esm/internal/render/MockRender.js.map +1 -1
  413. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
  420. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  421. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
  422. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
  424. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  426. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  427. package/lib/esm/internal/render/webgl/FrustumUniforms.js +8 -1
  428. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  429. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +0 -1
  430. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  431. package/lib/esm/internal/render/webgl/MapLayerParams.js +11 -20
  432. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  434. package/lib/esm/internal/render/webgl/RenderCommands.js +2 -3
  435. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  436. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +9 -0
  437. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  438. package/lib/esm/internal/render/webgl/SceneCompositor.js +86 -11
  439. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  441. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  442. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  443. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
  445. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  446. package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
  447. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/SolarShadowMap.js +2 -2
  449. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/SurfaceGeometry.js +20 -8
  452. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
  454. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  455. package/lib/esm/internal/render/webgl/Target.js +2 -2
  456. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  457. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts +3 -3
  458. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  459. package/lib/esm/internal/render/webgl/TargetGraphics.js +10 -7
  460. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  461. package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
  462. package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
  463. package/lib/esm/internal/render/webgl/Technique.js +3 -3
  464. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  466. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  467. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  468. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  470. package/lib/esm/internal/render/webgl/glsl/Contours.js +31 -1
  471. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  472. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  473. package/lib/esm/internal/render/webgl/glsl/Fragment.js +7 -2
  474. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  476. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  477. package/lib/esm/internal/tile/ClassifierTileTree.js +3 -1
  478. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  479. package/lib/esm/internal/tile/GraphicsCollector.d.ts +2 -0
  480. package/lib/esm/internal/tile/GraphicsCollector.d.ts.map +1 -1
  481. package/lib/esm/internal/tile/GraphicsCollector.js +2 -0
  482. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  483. package/lib/esm/internal/tile/IModelTile.d.ts.map +1 -1
  484. package/lib/esm/internal/tile/IModelTile.js +7 -1
  485. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  486. package/lib/esm/internal/tile/IModelTileTree.d.ts +4 -1
  487. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  488. package/lib/esm/internal/tile/IModelTileTree.js +7 -1
  489. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  490. package/lib/esm/internal/tile/ImdlDecoder.d.ts +2 -0
  491. package/lib/esm/internal/tile/ImdlDecoder.d.ts.map +1 -1
  492. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  493. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  494. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  495. package/lib/esm/internal/tile/ImdlGraphicsCreator.js +2 -1
  496. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  497. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  498. package/lib/esm/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  499. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  500. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -0
  501. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  502. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  503. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  504. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  505. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +9 -4
  506. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  507. package/lib/esm/internal/tile/PrimaryTileTree.js +36 -13
  508. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  509. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +15 -3
  510. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  511. package/lib/esm/internal/tile/RealityModelTileTree.js +26 -32
  512. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  513. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  514. package/lib/esm/internal/tile/RealityTileLoader.js +2 -1
  515. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  516. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  517. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  518. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  519. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  520. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  521. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  522. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  523. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  524. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  525. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  526. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  527. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  528. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  529. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  531. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  532. package/lib/esm/properties/AngleDescription.d.ts +4 -1
  533. package/lib/esm/properties/AngleDescription.d.ts.map +1 -1
  534. package/lib/esm/properties/AngleDescription.js +10 -2
  535. package/lib/esm/properties/AngleDescription.js.map +1 -1
  536. package/lib/esm/properties/FormattedQuantityDescription.d.ts +11 -1
  537. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  538. package/lib/esm/properties/FormattedQuantityDescription.js +7 -2
  539. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  540. package/lib/esm/properties/LengthDescription.d.ts +12 -3
  541. package/lib/esm/properties/LengthDescription.d.ts.map +1 -1
  542. package/lib/esm/properties/LengthDescription.js +30 -6
  543. package/lib/esm/properties/LengthDescription.js.map +1 -1
  544. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +103 -7
  545. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  546. package/lib/esm/quantity-formatting/QuantityFormatter.js +210 -23
  547. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  548. package/lib/esm/render/Decorations.d.ts +1 -1
  549. package/lib/esm/render/Decorations.d.ts.map +1 -1
  550. package/lib/esm/render/Decorations.js +1 -1
  551. package/lib/esm/render/Decorations.js.map +1 -1
  552. package/lib/esm/render/GraphicBranch.d.ts +1 -1
  553. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  554. package/lib/esm/render/GraphicBranch.js +1 -1
  555. package/lib/esm/render/GraphicBranch.js.map +1 -1
  556. package/lib/esm/render/Pixel.d.ts +13 -2
  557. package/lib/esm/render/Pixel.d.ts.map +1 -1
  558. package/lib/esm/render/Pixel.js +20 -8
  559. package/lib/esm/render/Pixel.js.map +1 -1
  560. package/lib/esm/render/RenderGraphic.d.ts +1 -1
  561. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  562. package/lib/esm/render/RenderGraphic.js.map +1 -1
  563. package/lib/esm/render/RenderSystem.d.ts +2 -2
  564. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  565. package/lib/esm/render/RenderSystem.js.map +1 -1
  566. package/lib/esm/render/RenderTarget.d.ts +1 -1
  567. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  568. package/lib/esm/render/RenderTarget.js.map +1 -1
  569. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  570. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  571. package/lib/esm/request/Request.d.ts +2 -2
  572. package/lib/esm/request/Request.js.map +1 -1
  573. package/lib/esm/tile/ImdlReader.d.ts +3 -2
  574. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  575. package/lib/esm/tile/ImdlReader.js +1 -0
  576. package/lib/esm/tile/ImdlReader.js.map +1 -1
  577. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  578. package/lib/esm/tile/RealityTileTree.js +2 -2
  579. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  580. package/lib/esm/tile/Tile.d.ts +1 -1
  581. package/lib/esm/tile/Tile.d.ts.map +1 -1
  582. package/lib/esm/tile/Tile.js +1 -1
  583. package/lib/esm/tile/Tile.js.map +1 -1
  584. package/lib/esm/tile/TileAdmin.d.ts +10 -0
  585. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  586. package/lib/esm/tile/TileAdmin.js +3 -0
  587. package/lib/esm/tile/TileAdmin.js.map +1 -1
  588. package/lib/esm/tile/TileDrawArgs.d.ts +1 -0
  589. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  590. package/lib/esm/tile/TileDrawArgs.js +2 -0
  591. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  592. package/lib/esm/tile/TileTree.d.ts +1 -1
  593. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  594. package/lib/esm/tile/TileTree.js +1 -1
  595. package/lib/esm/tile/TileTree.js.map +1 -1
  596. package/lib/esm/tile/TileTreeReference.d.ts +1 -1
  597. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  598. package/lib/esm/tile/TileTreeReference.js +1 -1
  599. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  600. package/lib/esm/tile/internal.d.ts +3 -2
  601. package/lib/esm/tile/internal.d.ts.map +1 -1
  602. package/lib/esm/tile/internal.js +3 -2
  603. package/lib/esm/tile/internal.js.map +1 -1
  604. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +1 -1
  605. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  606. package/lib/esm/tile/map/CesiumTerrainProvider.js +4 -5
  607. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  608. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  609. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  610. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  611. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  612. package/lib/esm/tile/map/MapCartoRectangle.d.ts +10 -0
  613. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  614. package/lib/esm/tile/map/MapCartoRectangle.js +12 -0
  615. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  616. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
  617. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  618. package/lib/esm/tile/map/MapLayerImageryProvider.js +9 -5
  619. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  620. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  621. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  622. package/lib/esm/tile/map/MapTileTree.js +3 -5
  623. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  624. package/lib/esm/tile/map/QuadId.d.ts +15 -0
  625. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  626. package/lib/esm/tile/map/QuadId.js +12 -0
  627. package/lib/esm/tile/map/QuadId.js.map +1 -1
  628. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  629. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  630. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  631. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  632. package/lib/esm/tools/AccuDrawTool.d.ts +0 -12
  633. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  634. package/lib/esm/tools/AccuDrawTool.js +3 -60
  635. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  636. package/lib/esm/tools/AccuDrawViewportUI.d.ts +7 -1
  637. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  638. package/lib/esm/tools/AccuDrawViewportUI.js +30 -20
  639. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  640. package/lib/esm/tools/ElementSetTool.d.ts +9 -1
  641. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  642. package/lib/esm/tools/ElementSetTool.js +130 -9
  643. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  644. package/lib/esm/tools/MeasureTool.d.ts +9 -0
  645. package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
  646. package/lib/esm/tools/MeasureTool.js +53 -22
  647. package/lib/esm/tools/MeasureTool.js.map +1 -1
  648. package/lib/esm/tools/SelectTool.d.ts +2 -2
  649. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  650. package/lib/esm/tools/SelectTool.js +26 -97
  651. package/lib/esm/tools/SelectTool.js.map +1 -1
  652. package/lib/esm/tools/Tool.d.ts +10 -1
  653. package/lib/esm/tools/Tool.d.ts.map +1 -1
  654. package/lib/esm/tools/Tool.js +27 -4
  655. package/lib/esm/tools/Tool.js.map +1 -1
  656. package/lib/esm/tools/ToolAdmin.d.ts +1 -0
  657. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  658. package/lib/esm/tools/ToolAdmin.js +8 -2
  659. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  660. package/lib/esm/tools/ToolSettings.d.ts +5 -0
  661. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  662. package/lib/esm/tools/ToolSettings.js +5 -0
  663. package/lib/esm/tools/ToolSettings.js.map +1 -1
  664. package/lib/esm/tools/ViewTool.d.ts +26 -18
  665. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  666. package/lib/esm/tools/ViewTool.js +39 -87
  667. package/lib/esm/tools/ViewTool.js.map +1 -1
  668. package/lib/public/locales/en/CoreTools.json +0 -5
  669. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  670. package/lib/public/sprites/SnapPerpendicularPoint.png +0 -0
  671. package/lib/public/sprites/SnapTangentPoint.png +0 -0
  672. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  673. package/package.json +20 -16
  674. package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +0 -1
  675. package/lib/cjs/tile/LayerTileTreeHandler.js.map +0 -1
  676. package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  677. package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +0 -1
  678. package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +0 -1
  679. package/lib/esm/tile/LayerTileTreeHandler.js.map +0 -1
  680. package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  681. package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
@@ -437,9 +437,8 @@ class RenderCommands {
437
437
  this.addGraphics(gfx.foreground);
438
438
  this.addBackgroundMapGraphics(gfx.background);
439
439
  this.addOverlayGraphics(gfx.overlays);
440
- const dynamics = gfx.dynamics;
441
- if (dynamics && dynamics.length > 0)
442
- this.addDecorations(dynamics);
440
+ this.addGraphics(gfx.foregroundDynamics);
441
+ this.addOverlayGraphics(gfx.overlayDynamics);
443
442
  const dec = gfx.decorations;
444
443
  if (undefined !== dec) {
445
444
  this.addBackground(dec.viewBackground);
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\nimport { Decorations } from \"../../../render/Decorations\";\nimport { SurfaceType } from \"../../../common/internal/render/SurfaceParams\";\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { AnimationBranchState } from \"../AnimationBranchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchState } from \"./BranchState\";\nimport {\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\n} from \"./DrawCommand\";\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LayerCommandLists } from \"./LayerCommands\";\nimport { MeshGraphic } from \"./Mesh\";\nimport { Primitive } from \"./Primitive\";\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { Target } from \"./Target\";\nimport { ClipVolume } from \"./ClipVolume\";\n\n/** A list of DrawCommands to be rendered, ordered by render pass.\n * @internal\n */\nexport class RenderCommands implements Iterable<DrawCommands> {\n private _frustumPlanes?: FrustumPlanes;\n private readonly _scratchFrustum = new Frustum();\n private readonly _scratchRange = new Range3d();\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\n private _target: Target;\n private _stack: BranchStack; // refers to the Target's BranchStack\n private _batchState: BatchState; // refers to the Target's BatchState\n private _forcedRenderPass: RenderPass = RenderPass.None;\n private _addLayersAsNormalGraphics = false;\n private _opaqueOverrides = false;\n private _translucentOverrides = false;\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\n private readonly _layers: LayerCommandLists;\n\n public get target(): Target { return this._target; }\n\n public [Symbol.iterator](): Iterator<DrawCommands> {\n return this._commands[Symbol.iterator]();\n }\n\n public get isEmpty(): boolean {\n for (const commands of this._commands)\n if (0 < commands.length)\n return false;\n\n return true;\n }\n\n public get isDrawingLayers() {\n switch (this._forcedRenderPass) {\n case RenderPass.OpaqueLayers:\n case RenderPass.TranslucentLayers:\n case RenderPass.OverlayLayers:\n return true;\n default:\n return false;\n }\n }\n\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\n public get compositeFlags(): CompositeFlags {\n let flags = CompositeFlags.None;\n if (this.hasCommands(RenderPass.Translucent))\n flags |= CompositeFlags.Translucent;\n\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\n flags |= CompositeFlags.Hilite;\n\n if (this.target.wantAmbientOcclusion)\n flags |= CompositeFlags.AmbientOcclusion;\n\n return flags;\n }\n\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\n\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\n\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this._layers = new LayerCommandLists(this);\n\n for (let i = 0; i < RenderPass.COUNT; ++i)\n this._commands[i] = [];\n }\n\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this.clear();\n }\n\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\n assert(this._forcedRenderPass === RenderPass.None);\n assert(!this._addLayersAsNormalGraphics);\n\n this._addLayersAsNormalGraphics = true;\n this.addGraphics(scene);\n this._addLayersAsNormalGraphics = false;\n }\n\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n /** Add backgroundMap graphics to their own render pass. */\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.BackgroundMap;\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n /** Add overlay graphics to the world overlay pass */\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.WorldOverlay;\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n for (const entry of dec) {\n (entry as Graphic).addCommands(this);\n }\n\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addWorldDecorations(decs: GraphicList): void {\n const world = this.target.getWorldDecorations(decs);\n this.pushAndPopBranch(world, () => {\n for (const entry of world.branch.entries) {\n (entry as Graphic).addCommands(this);\n }\n });\n }\n\n private addPickableDecorations(decs: Decorations): void {\n if (undefined !== decs.normal) {\n for (const normal of decs.normal) {\n const gf = normal as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n if (undefined !== decs.world) {\n const world = this.target.getWorldDecorations(decs.world);\n this.pushAndPopBranch(world, () => {\n for (const gf of world.branch.entries) {\n if ((gf as Graphic).isPickable)\n (gf as Graphic).addCommands(this);\n }\n });\n }\n }\n\n public addBackground(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.Background;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addSkyBox(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.SkyBox;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\n if (undefined === pass)\n pass = command.getPass(this.target);\n\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\n return;\n\n if (RenderPass.None !== this._forcedRenderPass) {\n // Add the command to the forced render pass (background).\n this.getCommands(this._forcedRenderPass).push(command);\n return;\n }\n\n if (!command.hasFeatures) {\n // Draw in general opaque pass so they are not in pick data.\n switch (pass) {\n case \"opaque-linear\":\n case \"opaque-planar\":\n pass = \"opaque\";\n break;\n case \"opaque-planar-translucent\":\n pass = \"opaque-translucent\";\n break;\n }\n }\n\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\n\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n pass = \"opaque-planar\";\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n pass = \"opaque\";\n break;\n default:\n pass = \"opaque-linear\";\n break;\n }\n }\n\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\n let opaquePass: RenderPass;\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\n opaquePass = Pass.toOpaquePass(pass);\n } else {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n opaquePass = RenderPass.OpaquePlanar;\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n opaquePass = RenderPass.OpaqueGeneral;\n break;\n default:\n opaquePass = RenderPass.OpaqueLinear;\n break;\n }\n }\n\n this.getCommands(opaquePass).push(command);\n }\n\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\n this.getCommands(RenderPass.Translucent).push(command);\n\n if (!Pass.rendersOpaqueAndTranslucent(pass))\n this.getCommands(Pass.toRenderPass(pass)).push(command);\n }\n\n public getCommands(pass: RenderPass): DrawCommands {\n let idx = pass as number;\n assert(idx < this._commands.length);\n if (idx >= this._commands.length)\n idx -= 1;\n\n return this._commands[idx];\n }\n\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\n const idx = pass as number;\n this._commands[idx].splice(0);\n this._commands[idx] = cmds;\n }\n\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\n this.pushAndPopBranchForPass(pass, branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\n });\n }\n\n public processLayers(container: LayerContainer): void {\n assert(RenderPass.None === this._forcedRenderPass);\n if (RenderPass.None !== this._forcedRenderPass)\n return;\n\n this._forcedRenderPass = container.renderPass;\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addLayerCommands(layer: Layer): void {\n if (this._addLayersAsNormalGraphics) {\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\n assert(this._forcedRenderPass === RenderPass.None);\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\n layer.graphic.addCommands(this);\n this._forcedRenderPass = RenderPass.None;\n return;\n }\n\n assert(this.isDrawingLayers);\n if (!this.isDrawingLayers)\n return;\n\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\n this._layers.currentLayer = layer;\n layer.graphic.addCommands(this);\n\n const cmds = this.getCommands(this._forcedRenderPass);\n this._layers.addCommands(cmds);\n\n cmds.length = 0;\n this._layers.currentLayer = undefined;\n }\n\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\n return;\n\n const prevPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.None;\n\n graphic.addHiliteCommands(this, pass);\n\n this._forcedRenderPass = prevPass;\n }\n\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\n const animId = branch.branch.animationId;\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\n }\n\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\n assert(!this.isDrawingLayers);\n\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n assert(RenderPass.None !== pass);\n\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n const cmds = this.getCommands(pass);\n const clip = animState?.clip as ClipVolume | undefined;\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\n if (pushClip)\n cmds.push(pushClip);\n\n const push = new PushBranchCommand(branch);\n cmds.push(push);\n\n func();\n\n this._stack.pop();\n if (cmds[cmds.length - 1] === push) {\n cmds.pop();\n if (pushClip)\n cmds.pop();\n } else {\n cmds.push(PopBranchCommand.instance);\n if (pushClip)\n cmds.push(PopClipCommand.instance);\n }\n }\n\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n if (this.isDrawingLayers) {\n this._commands[RenderPass.Hilite].push(push);\n this._layers.pushAndPop(push, pop, func);\n\n const cmds = this._commands[RenderPass.Hilite];\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n return;\n }\n\n if (RenderPass.None === this._forcedRenderPass) {\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\n for (const cmds of this._commands)\n cmds.push(push);\n } else {\n // May want to add hilite commands as well - add the push command to that pass.\n this._commands[this._forcedRenderPass].push(push);\n this._commands[RenderPass.Hilite].push(push);\n }\n\n func();\n\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\n if (RenderPass.None === this._forcedRenderPass) {\n for (const cmds of this._commands) {\n assert(0 < cmds.length);\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n } else {\n assert(0 < this._commands[this._forcedRenderPass].length);\n assert(0 < this._commands[RenderPass.Hilite].length);\n\n let cmds = this._commands[this._forcedRenderPass];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n cmds = this._commands[RenderPass.Hilite];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n }\n\n public pushAndPopBranch(branch: Branch, func: () => void): void {\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n if (animState?.clip)\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\n else\n this._pushAndPopBranch(branch, func);\n }\n\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\n\n this._stack.pop();\n }\n\n public pushAndPopState(state: BranchState, func: () => void): void {\n this._stack.pushState(state);\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\n this._stack.pop();\n }\n\n public clear(): void {\n assert(this._batchState.isEmpty);\n this._clearCommands();\n }\n\n private _clearCommands(): void {\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\n this._layers.clear();\n }\n\n private initForPickOverlayDecorations(overlays: GraphicList): void {\n for (const overlay of overlays) {\n const gf = overlay as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\n this._clearCommands();\n\n this._addTranslucentAsOpaque = true;\n\n for (const sceneGf of sceneOverlays)\n (sceneGf as Graphic).addCommands(this);\n\n if (worldOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState, () => {\n this.initForPickOverlayDecorations(worldOverlayDecorations);\n });\n }\n\n if (viewOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\n this.initForPickOverlayDecorations(viewOverlayDecorations);\n });\n }\n\n this._addTranslucentAsOpaque = false;\n }\n\n public initForReadPixels(gfx: TargetGraphics): void {\n this.clear();\n\n // Set flag to force translucent geometry to be put into the opaque pass.\n this._addTranslucentAsOpaque = true;\n\n // Add the scene graphics.\n this.addGraphics(gfx.foreground);\n\n // Also add any pickable decorations.\n if (undefined !== gfx.decorations)\n this.addPickableDecorations(gfx.decorations);\n\n // Also background map is pickable\n this.addBackgroundMapGraphics(gfx.background);\n\n this._addTranslucentAsOpaque = false;\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public initForRender(gfx: TargetGraphics): void {\n this.clear();\n\n this.addGraphics(gfx.foreground);\n this.addBackgroundMapGraphics(gfx.background);\n this.addOverlayGraphics(gfx.overlays);\n\n const dynamics = gfx.dynamics;\n if (dynamics && dynamics.length > 0)\n this.addDecorations(dynamics);\n\n const dec = gfx.decorations;\n if (undefined !== dec) {\n this.addBackground(dec.viewBackground as Graphic);\n\n this.addSkyBox(dec.skyBox as Graphic);\n\n if (undefined !== dec.normal && 0 < dec.normal.length)\n this.addGraphics(dec.normal);\n\n if (undefined !== dec.world && 0 < dec.world.length)\n this.addWorldDecorations(dec.world);\n\n this.pushAndPopState(this.target.decorationsState, () => {\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\n\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\n });\n }\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public addPrimitive(prim: Primitive): void {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\n // return;\n\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\n if (\"classification\" === prim.getPass(this.target)) {\n const geom = prim.cachedGeometry;\n geom.computeRange(this._scratchRange);\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const command = new PrimitiveCommand(prim);\n this.addPrimitiveCommand(command);\n\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\n const vf: ViewFlags = this.target.currentViewFlags;\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\n this.getCommands(RenderPass.HiddenEdge).push(command);\n }\n }\n\n public addBranch(branch: Branch): void {\n this.pushAndPopBranch(branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n });\n }\n\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\n let pass = RenderPass.Hilite;\n if (batch.graphic instanceof MeshGraphic) {\n const mg = batch.graphic;\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (batch.graphic instanceof GraphicsArray) {\n const ga = batch.graphic;\n if (ga.graphics[0] instanceof MeshGraphic) {\n const mg = ga.graphics[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (ga.graphics[0] instanceof Branch) {\n const b = ga.graphics[0];\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\n const mg = b.branch.entries[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n }\n }\n }\n return pass;\n }\n\n public addBatch(batch: Batch): void {\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\n return;\n\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\n // They may draw during both, or neither.\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\n // assert(RenderPass.None === this._forcedRenderPass);\n assert(!this._opaqueOverrides && !this._translucentOverrides);\n assert(undefined === this._curBatch);\n\n // If all features are overridden to be invisible, draw no graphics in this batch\n const overrides = batch.getOverrides(this.target);\n if (overrides.allHidden)\n return;\n\n if (!batch.range.isNull) {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\n // return;\n\n if (undefined !== this._frustumPlanes) {\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const classifier = this._stack.top.planarClassifier;\n\n this._batchState.push(batch, true);\n\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\n this._opaqueOverrides = overrides.anyOpaque;\n this._translucentOverrides = overrides.anyTranslucent;\n\n if (undefined !== classifier) {\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\n }\n }\n\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\n let savedForcedRenderPass = RenderPass.None;\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.batchModelId === this.target.activeVolumeClassifierModelId) {\n savedForcedRenderPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\n }\n\n (batch.graphic as Graphic).addCommands(this);\n\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\n this._forcedRenderPass = savedForcedRenderPass;\n\n // If the batch contains hilited features, need to render them in the hilite pass\n const anyHilited = overrides.anyHilited;\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\n if (anyHilited || planarClassifierHilited)\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\n\n });\n\n this._opaqueOverrides = this._translucentOverrides = false;\n this._batchState.pop();\n }\n\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\n // Clear the culling frustum.\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\n\n private setupClassificationByVolume(): void {\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\n // nested branches and batches.\n const groupedCmds = this._commands[RenderPass.Classification];\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\n for (const cmd of groupedCmds) {\n switch (cmd.opcode) {\n case \"pushBranch\":\n case \"pushBatch\":\n case \"pushState\":\n pushCommands.push(cmd);\n break;\n case \"drawPrimitive\":\n for (const pushCmd of pushCommands) {\n byIndexCmds.push(pushCmd);\n }\n byIndexCmds.push(cmd);\n for (let i = pushCommands.length - 1; i >= 0; --i) {\n if (\"pushBatch\" === pushCommands[i].opcode)\n byIndexCmds.push(PopBatchCommand.instance);\n else // should be eith pushBranch or pushState opcode\n byIndexCmds.push(PopBranchCommand.instance);\n }\n break;\n case \"popBatch\":\n case \"popBranch\":\n pushCommands.pop();\n break;\n }\n }\n }\n\n public dump(): Array<{ name: string, count: number }> {\n const dump = [\n { name: \"Primitives\", count: 0 },\n { name: \"Batches\", count: 0 },\n { name: \"Branches\", count: 0 },\n ];\n\n for (const cmds of this._commands) {\n for (const cmd of cmds) {\n let index;\n switch (cmd.opcode) {\n case \"drawPrimitive\":\n index = 0;\n break;\n case \"pushBatch\":\n index = 1;\n break;\n case \"pushBranch\":\n index = 2;\n break;\n default:\n continue;\n }\n\n dump[index].count++;\n }\n }\n\n return dump;\n }\n}\n"]}
1
+ {"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\nimport { Decorations } from \"../../../render/Decorations\";\nimport { SurfaceType } from \"../../../common/internal/render/SurfaceParams\";\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { AnimationBranchState } from \"../AnimationBranchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchState } from \"./BranchState\";\nimport {\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\n} from \"./DrawCommand\";\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LayerCommandLists } from \"./LayerCommands\";\nimport { MeshGraphic } from \"./Mesh\";\nimport { Primitive } from \"./Primitive\";\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { Target } from \"./Target\";\nimport { ClipVolume } from \"./ClipVolume\";\n\n/** A list of DrawCommands to be rendered, ordered by render pass.\n * @internal\n */\nexport class RenderCommands implements Iterable<DrawCommands> {\n private _frustumPlanes?: FrustumPlanes;\n private readonly _scratchFrustum = new Frustum();\n private readonly _scratchRange = new Range3d();\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\n private _target: Target;\n private _stack: BranchStack; // refers to the Target's BranchStack\n private _batchState: BatchState; // refers to the Target's BatchState\n private _forcedRenderPass: RenderPass = RenderPass.None;\n private _addLayersAsNormalGraphics = false;\n private _opaqueOverrides = false;\n private _translucentOverrides = false;\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\n private readonly _layers: LayerCommandLists;\n\n public get target(): Target { return this._target; }\n\n public [Symbol.iterator](): Iterator<DrawCommands> {\n return this._commands[Symbol.iterator]();\n }\n\n public get isEmpty(): boolean {\n for (const commands of this._commands)\n if (0 < commands.length)\n return false;\n\n return true;\n }\n\n public get isDrawingLayers() {\n switch (this._forcedRenderPass) {\n case RenderPass.OpaqueLayers:\n case RenderPass.TranslucentLayers:\n case RenderPass.OverlayLayers:\n return true;\n default:\n return false;\n }\n }\n\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\n public get compositeFlags(): CompositeFlags {\n let flags = CompositeFlags.None;\n if (this.hasCommands(RenderPass.Translucent))\n flags |= CompositeFlags.Translucent;\n\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\n flags |= CompositeFlags.Hilite;\n\n if (this.target.wantAmbientOcclusion)\n flags |= CompositeFlags.AmbientOcclusion;\n\n return flags;\n }\n\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\n\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\n\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this._layers = new LayerCommandLists(this);\n\n for (let i = 0; i < RenderPass.COUNT; ++i)\n this._commands[i] = [];\n }\n\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this.clear();\n }\n\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\n assert(this._forcedRenderPass === RenderPass.None);\n assert(!this._addLayersAsNormalGraphics);\n\n this._addLayersAsNormalGraphics = true;\n this.addGraphics(scene);\n this._addLayersAsNormalGraphics = false;\n }\n\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n /** Add backgroundMap graphics to their own render pass. */\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.BackgroundMap;\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n /** Add overlay graphics to the world overlay pass */\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.WorldOverlay;\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n for (const entry of dec) {\n (entry as Graphic).addCommands(this);\n }\n\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addWorldDecorations(decs: GraphicList): void {\n const world = this.target.getWorldDecorations(decs);\n this.pushAndPopBranch(world, () => {\n for (const entry of world.branch.entries) {\n (entry as Graphic).addCommands(this);\n }\n });\n }\n\n private addPickableDecorations(decs: Decorations): void {\n if (undefined !== decs.normal) {\n for (const normal of decs.normal) {\n const gf = normal as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n if (undefined !== decs.world) {\n const world = this.target.getWorldDecorations(decs.world);\n this.pushAndPopBranch(world, () => {\n for (const gf of world.branch.entries) {\n if ((gf as Graphic).isPickable)\n (gf as Graphic).addCommands(this);\n }\n });\n }\n }\n\n public addBackground(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.Background;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addSkyBox(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.SkyBox;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\n if (undefined === pass)\n pass = command.getPass(this.target);\n\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\n return;\n\n if (RenderPass.None !== this._forcedRenderPass) {\n // Add the command to the forced render pass (background).\n this.getCommands(this._forcedRenderPass).push(command);\n return;\n }\n\n if (!command.hasFeatures) {\n // Draw in general opaque pass so they are not in pick data.\n switch (pass) {\n case \"opaque-linear\":\n case \"opaque-planar\":\n pass = \"opaque\";\n break;\n case \"opaque-planar-translucent\":\n pass = \"opaque-translucent\";\n break;\n }\n }\n\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\n\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n pass = \"opaque-planar\";\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n pass = \"opaque\";\n break;\n default:\n pass = \"opaque-linear\";\n break;\n }\n }\n\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\n let opaquePass: RenderPass;\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\n opaquePass = Pass.toOpaquePass(pass);\n } else {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n opaquePass = RenderPass.OpaquePlanar;\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n opaquePass = RenderPass.OpaqueGeneral;\n break;\n default:\n opaquePass = RenderPass.OpaqueLinear;\n break;\n }\n }\n\n this.getCommands(opaquePass).push(command);\n }\n\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\n this.getCommands(RenderPass.Translucent).push(command);\n\n if (!Pass.rendersOpaqueAndTranslucent(pass))\n this.getCommands(Pass.toRenderPass(pass)).push(command);\n }\n\n public getCommands(pass: RenderPass): DrawCommands {\n let idx = pass as number;\n assert(idx < this._commands.length);\n if (idx >= this._commands.length)\n idx -= 1;\n\n return this._commands[idx];\n }\n\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\n const idx = pass as number;\n this._commands[idx].splice(0);\n this._commands[idx] = cmds;\n }\n\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\n this.pushAndPopBranchForPass(pass, branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\n });\n }\n\n public processLayers(container: LayerContainer): void {\n assert(RenderPass.None === this._forcedRenderPass);\n if (RenderPass.None !== this._forcedRenderPass)\n return;\n\n this._forcedRenderPass = container.renderPass;\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addLayerCommands(layer: Layer): void {\n if (this._addLayersAsNormalGraphics) {\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\n assert(this._forcedRenderPass === RenderPass.None);\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\n layer.graphic.addCommands(this);\n this._forcedRenderPass = RenderPass.None;\n return;\n }\n\n assert(this.isDrawingLayers);\n if (!this.isDrawingLayers)\n return;\n\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\n this._layers.currentLayer = layer;\n layer.graphic.addCommands(this);\n\n const cmds = this.getCommands(this._forcedRenderPass);\n this._layers.addCommands(cmds);\n\n cmds.length = 0;\n this._layers.currentLayer = undefined;\n }\n\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\n return;\n\n const prevPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.None;\n\n graphic.addHiliteCommands(this, pass);\n\n this._forcedRenderPass = prevPass;\n }\n\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\n const animId = branch.branch.animationId;\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\n }\n\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\n assert(!this.isDrawingLayers);\n\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n assert(RenderPass.None !== pass);\n\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n const cmds = this.getCommands(pass);\n const clip = animState?.clip as ClipVolume | undefined;\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\n if (pushClip)\n cmds.push(pushClip);\n\n const push = new PushBranchCommand(branch);\n cmds.push(push);\n\n func();\n\n this._stack.pop();\n if (cmds[cmds.length - 1] === push) {\n cmds.pop();\n if (pushClip)\n cmds.pop();\n } else {\n cmds.push(PopBranchCommand.instance);\n if (pushClip)\n cmds.push(PopClipCommand.instance);\n }\n }\n\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n if (this.isDrawingLayers) {\n this._commands[RenderPass.Hilite].push(push);\n this._layers.pushAndPop(push, pop, func);\n\n const cmds = this._commands[RenderPass.Hilite];\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n return;\n }\n\n if (RenderPass.None === this._forcedRenderPass) {\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\n for (const cmds of this._commands)\n cmds.push(push);\n } else {\n // May want to add hilite commands as well - add the push command to that pass.\n this._commands[this._forcedRenderPass].push(push);\n this._commands[RenderPass.Hilite].push(push);\n }\n\n func();\n\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\n if (RenderPass.None === this._forcedRenderPass) {\n for (const cmds of this._commands) {\n assert(0 < cmds.length);\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n } else {\n assert(0 < this._commands[this._forcedRenderPass].length);\n assert(0 < this._commands[RenderPass.Hilite].length);\n\n let cmds = this._commands[this._forcedRenderPass];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n cmds = this._commands[RenderPass.Hilite];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n }\n\n public pushAndPopBranch(branch: Branch, func: () => void): void {\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n if (animState?.clip)\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\n else\n this._pushAndPopBranch(branch, func);\n }\n\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\n\n this._stack.pop();\n }\n\n public pushAndPopState(state: BranchState, func: () => void): void {\n this._stack.pushState(state);\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\n this._stack.pop();\n }\n\n public clear(): void {\n assert(this._batchState.isEmpty);\n this._clearCommands();\n }\n\n private _clearCommands(): void {\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\n this._layers.clear();\n }\n\n private initForPickOverlayDecorations(overlays: GraphicList): void {\n for (const overlay of overlays) {\n const gf = overlay as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\n this._clearCommands();\n\n this._addTranslucentAsOpaque = true;\n\n for (const sceneGf of sceneOverlays)\n (sceneGf as Graphic).addCommands(this);\n\n if (worldOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState, () => {\n this.initForPickOverlayDecorations(worldOverlayDecorations);\n });\n }\n\n if (viewOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\n this.initForPickOverlayDecorations(viewOverlayDecorations);\n });\n }\n\n this._addTranslucentAsOpaque = false;\n }\n\n public initForReadPixels(gfx: TargetGraphics): void {\n this.clear();\n\n // Set flag to force translucent geometry to be put into the opaque pass.\n this._addTranslucentAsOpaque = true;\n\n // Add the scene graphics.\n this.addGraphics(gfx.foreground);\n\n // Also add any pickable decorations.\n if (undefined !== gfx.decorations)\n this.addPickableDecorations(gfx.decorations);\n\n // Also background map is pickable\n this.addBackgroundMapGraphics(gfx.background);\n\n this._addTranslucentAsOpaque = false;\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public initForRender(gfx: TargetGraphics): void {\n this.clear();\n\n this.addGraphics(gfx.foreground);\n this.addBackgroundMapGraphics(gfx.background);\n this.addOverlayGraphics(gfx.overlays);\n\n this.addGraphics(gfx.foregroundDynamics);\n this.addOverlayGraphics(gfx.overlayDynamics);\n\n const dec = gfx.decorations;\n if (undefined !== dec) {\n this.addBackground(dec.viewBackground as Graphic);\n\n this.addSkyBox(dec.skyBox as Graphic);\n\n if (undefined !== dec.normal && 0 < dec.normal.length)\n this.addGraphics(dec.normal);\n\n if (undefined !== dec.world && 0 < dec.world.length)\n this.addWorldDecorations(dec.world);\n\n this.pushAndPopState(this.target.decorationsState, () => {\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\n\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\n });\n }\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public addPrimitive(prim: Primitive): void {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\n // return;\n\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\n if (\"classification\" === prim.getPass(this.target)) {\n const geom = prim.cachedGeometry;\n geom.computeRange(this._scratchRange);\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const command = new PrimitiveCommand(prim);\n this.addPrimitiveCommand(command);\n\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\n const vf: ViewFlags = this.target.currentViewFlags;\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\n this.getCommands(RenderPass.HiddenEdge).push(command);\n }\n }\n\n public addBranch(branch: Branch): void {\n this.pushAndPopBranch(branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n });\n }\n\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\n let pass = RenderPass.Hilite;\n if (batch.graphic instanceof MeshGraphic) {\n const mg = batch.graphic;\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (batch.graphic instanceof GraphicsArray) {\n const ga = batch.graphic;\n if (ga.graphics[0] instanceof MeshGraphic) {\n const mg = ga.graphics[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (ga.graphics[0] instanceof Branch) {\n const b = ga.graphics[0];\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\n const mg = b.branch.entries[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n }\n }\n }\n return pass;\n }\n\n public addBatch(batch: Batch): void {\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\n return;\n\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\n // They may draw during both, or neither.\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\n // assert(RenderPass.None === this._forcedRenderPass);\n assert(!this._opaqueOverrides && !this._translucentOverrides);\n assert(undefined === this._curBatch);\n\n // If all features are overridden to be invisible, draw no graphics in this batch\n const overrides = batch.getOverrides(this.target);\n if (overrides.allHidden)\n return;\n\n if (!batch.range.isNull) {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\n // return;\n\n if (undefined !== this._frustumPlanes) {\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const classifier = this._stack.top.planarClassifier;\n\n this._batchState.push(batch, true);\n\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\n this._opaqueOverrides = overrides.anyOpaque;\n this._translucentOverrides = overrides.anyTranslucent;\n\n if (undefined !== classifier) {\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\n }\n }\n\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\n let savedForcedRenderPass = RenderPass.None;\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.batchModelId === this.target.activeVolumeClassifierModelId) {\n savedForcedRenderPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\n }\n\n (batch.graphic as Graphic).addCommands(this);\n\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\n this._forcedRenderPass = savedForcedRenderPass;\n\n // If the batch contains hilited features, need to render them in the hilite pass\n const anyHilited = overrides.anyHilited;\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\n if (anyHilited || planarClassifierHilited)\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\n\n });\n\n this._opaqueOverrides = this._translucentOverrides = false;\n this._batchState.pop();\n }\n\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\n // Clear the culling frustum.\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\n\n private setupClassificationByVolume(): void {\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\n // nested branches and batches.\n const groupedCmds = this._commands[RenderPass.Classification];\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\n for (const cmd of groupedCmds) {\n switch (cmd.opcode) {\n case \"pushBranch\":\n case \"pushBatch\":\n case \"pushState\":\n pushCommands.push(cmd);\n break;\n case \"drawPrimitive\":\n for (const pushCmd of pushCommands) {\n byIndexCmds.push(pushCmd);\n }\n byIndexCmds.push(cmd);\n for (let i = pushCommands.length - 1; i >= 0; --i) {\n if (\"pushBatch\" === pushCommands[i].opcode)\n byIndexCmds.push(PopBatchCommand.instance);\n else // should be eith pushBranch or pushState opcode\n byIndexCmds.push(PopBranchCommand.instance);\n }\n break;\n case \"popBatch\":\n case \"popBranch\":\n pushCommands.pop();\n break;\n }\n }\n }\n\n public dump(): Array<{ name: string, count: number }> {\n const dump = [\n { name: \"Primitives\", count: 0 },\n { name: \"Batches\", count: 0 },\n { name: \"Branches\", count: 0 },\n ];\n\n for (const cmds of this._commands) {\n for (const cmd of cmds) {\n let index;\n switch (cmd.opcode) {\n case \"drawPrimitive\":\n index = 0;\n break;\n case \"pushBatch\":\n index = 1;\n break;\n case \"pushBranch\":\n index = 2;\n break;\n default:\n continue;\n }\n\n dump[index].count++;\n }\n }\n\n return dump;\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
+ import { ContourDisplay } from "@itwin/core-common";
4
5
  import { SceneContext } from "../../../ViewContext";
5
6
  import { ViewRect } from "../../../common/ViewRect";
6
7
  import { Pixel } from "../../../render/Pixel";
@@ -18,6 +19,12 @@ import { ShaderProgramExecutor } from "./ShaderProgram";
18
19
  import { EyeDomeLighting } from "./EDL";
19
20
  export declare function collectTextureStatistics(texture: TextureHandle | undefined, stats: RenderMemory.Statistics): void;
20
21
  export declare function collectGeometryStatistics(geom: CachedGeometry | undefined, stats: RenderMemory.Statistics): void;
22
+ interface ContourPixels {
23
+ display: ContourDisplay;
24
+ data: Uint32Array;
25
+ zLow: number;
26
+ zHigh: number;
27
+ }
21
28
  /** Orchestrates rendering of the scene on behalf of a Target.
22
29
  * This base class exists only so we don't have to export all the types of the shared Compositor members like Textures, FrameBuffers, etc.
23
30
  * @internal
@@ -34,6 +41,7 @@ export declare abstract class SceneCompositor implements WebGLDisposable, Render
34
41
  abstract drawForReadPixels(_commands: RenderCommands, sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void;
35
42
  abstract readPixels(rect: ViewRect, selector: Pixel.Selector): Pixel.Buffer | undefined;
36
43
  abstract readDepthAndOrder(rect: ViewRect): Uint8Array | undefined;
44
+ abstract readContours(rect: ViewRect): ContourPixels | undefined;
37
45
  abstract readFeatureIds(rect: ViewRect): Uint8Array | undefined;
38
46
  abstract updateSolarShadows(context: SceneContext | undefined): void;
39
47
  abstract drawPrimitive(primitive: Primitive, exec: ShaderProgramExecutor, outputsToPick: boolean): void;
@@ -48,4 +56,5 @@ export declare abstract class SceneCompositor implements WebGLDisposable, Render
48
56
  static create(target: Target): SceneCompositor;
49
57
  abstract collectStatistics(stats: RenderMemory.Statistics): void;
50
58
  }
59
+ export {};
51
60
  //# sourceMappingURL=SceneCompositor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAC2D,cAAc,EAE/E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAW,eAAe,EAAE,MAAM,OAAO,CAAC;AAGjD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGjH;AA0bD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAGhH;AA8SD;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,eAAe,EAAE,YAAY,CAAC,QAAQ;IACrF,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAEpC,aAAoB,UAAU,IAAI,OAAO,CAAC;aAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;aACxB,OAAO,IAAI,IAAI;aACf,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;aACrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,uBAAuB,EAAE,WAAW,GAAG,SAAS,EAAE,sBAAsB,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;aACjL,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;aAC9E,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;aAC3D,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;aAC9F,iBAAiB,IAAI,IAAI;IAEzC,8GAA8G;IAC9G,aAAoB,oBAAoB,IAAI,WAAW,CAAC;IAExD,aAAoB,UAAU,IAAI,aAAa,CAAC;IAChD,aAAoB,aAAa,IAAI,aAAa,CAAC;IACnD,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C,IAAW,eAAe,IAAI,OAAO,CAAkC;IAEvE,SAAS,aAAa,MAAM,EAAE,MAAM;WAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;aAIrC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;CACxE"}
1
+ {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,8 @@ class Textures {
47
47
  featureId;
48
48
  depthAndOrder;
49
49
  depthAndOrderHidden; // only used if AO and multisampling
50
+ contours;
51
+ contoursMsBuff;
50
52
  hilite;
51
53
  occlusion;
52
54
  occlusionBlur;
@@ -64,6 +66,8 @@ class Textures {
64
66
  && undefined === this.color
65
67
  && undefined === this.featureId
66
68
  && undefined === this.depthAndOrder
69
+ && undefined === this.contours
70
+ && undefined === this.contoursMsBuff
67
71
  && undefined === this.depthAndOrderHidden
68
72
  && undefined === this.hilite
69
73
  && undefined === this.occlusion
@@ -83,6 +87,8 @@ class Textures {
83
87
  this.color = (0, core_bentley_1.dispose)(this.color);
84
88
  this.featureId = (0, core_bentley_1.dispose)(this.featureId);
85
89
  this.depthAndOrder = (0, core_bentley_1.dispose)(this.depthAndOrder);
90
+ this.contours = (0, core_bentley_1.dispose)(this.contours);
91
+ this.contoursMsBuff = (0, core_bentley_1.dispose)(this.contoursMsBuff);
86
92
  this.depthAndOrderHidden = (0, core_bentley_1.dispose)(this.depthAndOrderHidden);
87
93
  this.hilite = (0, core_bentley_1.dispose)(this.hilite);
88
94
  this.occlusion = (0, core_bentley_1.dispose)(this.occlusion);
@@ -102,6 +108,8 @@ class Textures {
102
108
  collectTextureStatistics(this.color, stats);
103
109
  collectTextureStatistics(this.featureId, stats);
104
110
  collectTextureStatistics(this.depthAndOrder, stats);
111
+ collectTextureStatistics(this.contours, stats);
112
+ collectMsBufferStatistics(this.contoursMsBuff, stats);
105
113
  collectTextureStatistics(this.depthAndOrderHidden, stats);
106
114
  collectTextureStatistics(this.hilite, stats);
107
115
  collectTextureStatistics(this.occlusion, stats);
@@ -140,11 +148,13 @@ class Textures {
140
148
  this.color = Texture_1.TextureHandle.createForAttachment(width, height, GL_1.GL.Texture.Format.Rgba, GL_1.GL.Texture.DataType.UnsignedByte);
141
149
  this.featureId = Texture_1.TextureHandle.createForAttachment(width, height, GL_1.GL.Texture.Format.Rgba, GL_1.GL.Texture.DataType.UnsignedByte);
142
150
  this.depthAndOrder = Texture_1.TextureHandle.createForAttachment(width, height, GL_1.GL.Texture.Format.Rgba, GL_1.GL.Texture.DataType.UnsignedByte);
151
+ this.contours = Texture_1.TextureHandle.createForAttachment(width, height, GL_1.GL.Texture.Format.Rgba, GL_1.GL.Texture.DataType.UnsignedByte);
143
152
  let rVal = undefined !== this.accumulation
144
153
  && undefined !== this.revealage
145
154
  && undefined !== this.color
146
155
  && undefined !== this.featureId
147
156
  && undefined !== this.depthAndOrder
157
+ && undefined !== this.contours
148
158
  && undefined !== this.hilite;
149
159
  if (rVal && numSamples > 1) {
150
160
  rVal = this.enableMultiSampling(width, height, numSamples);
@@ -189,12 +199,14 @@ class Textures {
189
199
  this.featureIdMsBuffHidden = RenderBuffer_1.RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.RGBA8, numSamples);
190
200
  this.depthAndOrderMsBuff = RenderBuffer_1.RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.RGBA8, numSamples);
191
201
  this.depthAndOrderMsBuffHidden = RenderBuffer_1.RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.RGBA8, numSamples);
202
+ this.contoursMsBuff = RenderBuffer_1.RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.RGBA8, numSamples);
192
203
  this.hiliteMsBuff = RenderBuffer_1.RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.RGBA8, numSamples);
193
204
  return undefined !== this.colorMsBuff
194
205
  && undefined !== this.featureIdMsBuff
195
206
  && undefined !== this.featureIdMsBuffHidden
196
207
  && undefined !== this.depthAndOrderMsBuff
197
208
  && undefined !== this.depthAndOrderMsBuffHidden
209
+ && undefined !== this.contoursMsBuff
198
210
  && undefined !== this.hiliteMsBuff;
199
211
  }
200
212
  disableMultiSampling() {
@@ -203,6 +215,7 @@ class Textures {
203
215
  this.featureIdMsBuffHidden = (0, core_bentley_1.dispose)(this.featureIdMsBuffHidden);
204
216
  this.depthAndOrderMsBuff = (0, core_bentley_1.dispose)(this.depthAndOrderMsBuff);
205
217
  this.depthAndOrderMsBuffHidden = (0, core_bentley_1.dispose)(this.depthAndOrderMsBuffHidden);
218
+ this.contoursMsBuff = (0, core_bentley_1.dispose)(this.contoursMsBuff);
206
219
  this.hiliteMsBuff = (0, core_bentley_1.dispose)(this.hiliteMsBuff);
207
220
  return true;
208
221
  }
@@ -212,6 +225,7 @@ class FrameBuffers {
212
225
  opaqueColor;
213
226
  opaqueAndCompositeColor;
214
227
  depthAndOrder;
228
+ contours;
215
229
  hilite;
216
230
  hiliteUsingStencil;
217
231
  stencilSet;
@@ -236,9 +250,10 @@ class FrameBuffers {
236
250
  if (!this.initPotentialMSFbos(textures, depth, depthMS))
237
251
  return false;
238
252
  this.depthAndOrder = FrameBuffer_1.FrameBuffer.create([textures.depthAndOrder], depth);
253
+ this.contours = FrameBuffer_1.FrameBuffer.create([textures.contours], depth);
239
254
  this.hilite = FrameBuffer_1.FrameBuffer.create([textures.hilite], depth);
240
255
  this.hiliteUsingStencil = FrameBuffer_1.FrameBuffer.create([textures.hilite], depth);
241
- if (!this.depthAndOrder || !this.hilite || !this.hiliteUsingStencil)
256
+ if (!this.depthAndOrder || !this.contours || !this.hilite || !this.hiliteUsingStencil)
242
257
  return false;
243
258
  (0, core_bentley_1.assert)(undefined === this.opaqueAll);
244
259
  if (!this.initPotentialMSMRTFbos(textures, depth, depthMS))
@@ -275,17 +290,28 @@ class FrameBuffers {
275
290
  }
276
291
  initPotentialMSMRTFbos(textures, depth, depthMs) {
277
292
  const boundColor = System_1.System.instance.frameBufferStack.currentColorBuffer;
278
- (0, core_bentley_1.assert)(undefined !== boundColor && undefined !== textures.color && undefined !== textures.featureId && undefined !== textures.depthAndOrder && undefined !== textures.accumulation && undefined !== textures.revealage);
279
- const colorAndPick = [boundColor, textures.featureId, textures.depthAndOrder];
293
+ (0, core_bentley_1.assert)(undefined !== boundColor &&
294
+ undefined !== textures.color &&
295
+ undefined !== textures.featureId &&
296
+ undefined !== textures.depthAndOrder &&
297
+ undefined !== textures.contours &&
298
+ undefined !== textures.accumulation &&
299
+ undefined !== textures.revealage);
300
+ const colorAndPick = [boundColor, textures.featureId, textures.depthAndOrder, textures.contours];
280
301
  if (undefined === depthMs) {
281
302
  this.opaqueAll = FrameBuffer_1.FrameBuffer.create(colorAndPick, depth);
282
303
  colorAndPick[0] = textures.color;
283
304
  this.opaqueAndCompositeAll = FrameBuffer_1.FrameBuffer.create(colorAndPick, depth);
284
305
  }
285
306
  else {
286
- (0, core_bentley_1.assert)(undefined !== textures.colorMsBuff && undefined !== textures.featureIdMsBuff && undefined !== textures.featureIdMsBuffHidden && undefined !== textures.depthAndOrderMsBuff && undefined !== textures.depthAndOrderMsBuffHidden);
287
- const colorAndPickMsBuffs = [textures.colorMsBuff, textures.featureIdMsBuff, textures.depthAndOrderMsBuff];
288
- const colorAndPickFilters = [GL_1.GL.MultiSampling.Filter.Linear, GL_1.GL.MultiSampling.Filter.Nearest, GL_1.GL.MultiSampling.Filter.Nearest];
307
+ (0, core_bentley_1.assert)(undefined !== textures.colorMsBuff &&
308
+ undefined !== textures.featureIdMsBuff &&
309
+ undefined !== textures.featureIdMsBuffHidden &&
310
+ undefined !== textures.contoursMsBuff &&
311
+ undefined !== textures.depthAndOrderMsBuff &&
312
+ undefined !== textures.depthAndOrderMsBuffHidden);
313
+ const colorAndPickMsBuffs = [textures.colorMsBuff, textures.featureIdMsBuff, textures.depthAndOrderMsBuff, textures.contoursMsBuff];
314
+ const colorAndPickFilters = [GL_1.GL.MultiSampling.Filter.Linear, GL_1.GL.MultiSampling.Filter.Nearest, GL_1.GL.MultiSampling.Filter.Nearest, GL_1.GL.MultiSampling.Filter.Nearest];
289
315
  this.opaqueAll = FrameBuffer_1.FrameBuffer.create(colorAndPick, depth, colorAndPickMsBuffs, colorAndPickFilters, depthMs);
290
316
  colorAndPick[0] = textures.color;
291
317
  this.opaqueAndCompositeAll = FrameBuffer_1.FrameBuffer.create(colorAndPick, depth, colorAndPickMsBuffs, colorAndPickFilters, depthMs);
@@ -394,7 +420,7 @@ class FrameBuffers {
394
420
  return this.initPotentialMSFbos(textures, depth, undefined);
395
421
  }
396
422
  get isDisposed() {
397
- return undefined === this.opaqueColor && undefined === this.opaqueAndCompositeColor && undefined === this.depthAndOrder
423
+ return undefined === this.opaqueColor && undefined === this.opaqueAndCompositeColor && undefined === this.depthAndOrder && undefined === this.contours
398
424
  && undefined === this.hilite && undefined === this.hiliteUsingStencil && undefined === this.occlusion
399
425
  && undefined === this.occlusionBlur && undefined === this.stencilSet && undefined === this.altZOnly
400
426
  && undefined === this.volClassCreateBlend && undefined === this.volClassCreateBlendAltZ && undefined === this.opaqueAll
@@ -407,6 +433,7 @@ class FrameBuffers {
407
433
  this.opaqueColor = (0, core_bentley_1.dispose)(this.opaqueColor);
408
434
  this.opaqueAndCompositeColor = (0, core_bentley_1.dispose)(this.opaqueAndCompositeColor);
409
435
  this.depthAndOrder = (0, core_bentley_1.dispose)(this.depthAndOrder);
436
+ this.contours = (0, core_bentley_1.dispose)(this.contours);
410
437
  this.hilite = (0, core_bentley_1.dispose)(this.hilite);
411
438
  this.hiliteUsingStencil = (0, core_bentley_1.dispose)(this.hiliteUsingStencil);
412
439
  this.occlusion = (0, core_bentley_1.dispose)(this.occlusion);
@@ -523,6 +550,7 @@ class PixelBuffer {
523
550
  _selector;
524
551
  _featureId;
525
552
  _depthAndOrder;
553
+ _contours;
526
554
  _batchState;
527
555
  _scratchModelFeature = core_common_1.ModelFeature.create();
528
556
  get _numPixels() { return this._rect.width * this._rect.height; }
@@ -579,11 +607,12 @@ class PixelBuffer {
579
607
  depth = Math.max(0.0, depth);
580
608
  return depth;
581
609
  }
582
- decodeRenderOrderRgba(depthAndOrder) {
583
- this._scratchUint32Array[0] = depthAndOrder;
610
+ decodeRenderOrderRgba(depthAndOrder) { return this.decodeUint8(depthAndOrder, 16); }
611
+ decodeUint8(rgba32, basis) {
612
+ this._scratchUint32Array[0] = rgba32;
584
613
  const encByte = this._scratchUint8Array[0];
585
614
  const enc = encByte / 255.0;
586
- const dec = Math.floor(16.0 * enc + 0.5);
615
+ const dec = Math.floor(basis * enc + 0.5);
587
616
  return dec;
588
617
  }
589
618
  _invalidPixelData = new Pixel_1.Pixel.Data();
@@ -635,6 +664,28 @@ class PixelBuffer {
635
664
  }
636
665
  }
637
666
  }
667
+ let contour;
668
+ if (this._contours) {
669
+ const contour32 = this.getPixel32(this._contours.data, index);
670
+ if (contour32) { // undefined means out of bounds; zero means not a contour.
671
+ const groupIndexAndType = this.decodeUint8(contour32, 32);
672
+ const groupIndex = groupIndexAndType & ~(8 | 16);
673
+ const group = this._contours.display.groups[groupIndex];
674
+ if (group) {
675
+ const elevationFraction = this.decodeDepthRgba(contour32);
676
+ let elevation = elevationFraction * (this._contours.zHigh - this._contours.zLow) + this._contours.zLow;
677
+ // The shader rounds to the nearest contour elevation using single-precision arithmetic.
678
+ // Re-round here using double-precision to get closer.
679
+ const interval = group.contourDef.minorInterval;
680
+ elevation = (elevation >= 0 ? Math.floor((elevation + interval / 2) / interval) : Math.ceil((elevation - interval / 2) / interval)) * interval;
681
+ contour = {
682
+ group,
683
+ elevation,
684
+ isMajor: groupIndexAndType > 15,
685
+ };
686
+ }
687
+ }
688
+ }
638
689
  let featureTable, iModel, transformToIModel, tileId, viewAttachmentId, inSectionDrawingAttachment;
639
690
  if (undefined !== batchInfo) {
640
691
  featureTable = batchInfo.featureTable;
@@ -655,6 +706,7 @@ class PixelBuffer {
655
706
  tileId,
656
707
  viewAttachmentId,
657
708
  inSectionDrawingAttachment,
709
+ contour,
658
710
  });
659
711
  }
660
712
  constructor(rect, selector, compositor) {
@@ -675,6 +727,10 @@ class PixelBuffer {
675
727
  else
676
728
  this._selector &= ~Pixel_1.Pixel.Selector.Feature;
677
729
  }
730
+ // Note: readContours is a no-op unless contours are actually being drawn.
731
+ if (Pixel_1.Pixel.Selector.None !== (selector & Pixel_1.Pixel.Selector.Contours)) {
732
+ this._contours = compositor.readContours(rect);
733
+ }
678
734
  }
679
735
  get isEmpty() { return Pixel_1.Pixel.Selector.None === this._selector; }
680
736
  static create(rect, selector, compositor) {
@@ -1359,7 +1415,26 @@ class Compositor extends SceneCompositor {
1359
1415
  readPixels(rect, selector) {
1360
1416
  return PixelBuffer.create(rect, selector, this);
1361
1417
  }
1362
- readDepthAndOrder(rect) { return this.readFrameBuffer(rect, this._fbos.depthAndOrder); }
1418
+ readDepthAndOrder(rect) {
1419
+ return this.readFrameBuffer(rect, this._fbos.depthAndOrder);
1420
+ }
1421
+ readContours(rect) {
1422
+ // Are we actually drawing any contours? If not, don't bother reading an array of all zeroes off the GPU.
1423
+ const contours = this.target.plan.contours;
1424
+ if (!contours || !contours.displayContours || contours.groups.length === 0) {
1425
+ return undefined;
1426
+ }
1427
+ const info = this.readFrameBuffer(rect, this._fbos.contours);
1428
+ if (!info) {
1429
+ return undefined;
1430
+ }
1431
+ return {
1432
+ data: new Uint32Array(info.buffer),
1433
+ display: contours,
1434
+ zLow: this.target.uniforms.frustum.worldFrustumZRange[0],
1435
+ zHigh: this.target.uniforms.frustum.worldFrustumZRange[1],
1436
+ };
1437
+ }
1363
1438
  readFeatureIds(rect) {
1364
1439
  const tex = this._textures.featureId;
1365
1440
  if (undefined === tex)