@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":"AtmosphereUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AtmosphereUniforms.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*--------------------------------------------------------------------------------------------*/\nimport { Atmosphere } from \"@itwin/core-common\";\nimport { Matrix3d, Point3d, Transform } from \"@itwin/core-geometry\";\nimport { RenderPlanEllipsoid } from \"../RenderPlan\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { Matrix3, Matrix4 } from \"./Matrix\";\nimport { desync, sync, SyncTarget } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { UniformHandle } from \"./UniformHandle\";\n\nexport const MAX_SAMPLE_POINTS = 40; // Maximum number of sample points to be used for the in-scattering and out-scattering computations.\n\nexport class AtmosphereUniforms implements WebGLDisposable, SyncTarget {\n private _atmosphere?: Atmosphere.Settings;\n private _ellipsoid?: RenderPlanEllipsoid;\n\n // Main shader uniforms\n private readonly _earthScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _inverseEllipsoidRotationMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _atmosphereScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _atmosphereData = new Matrix4();\n /**\n * uniform mat3 u_atmosphereData;\n * { { atmosphereRadiusScaleFactor, atmosphereMaxDensityThresholdScaleFactor, densityFalloff, 0 },\n * { numViewRaySamples, numSunRaySamples, 0, 0 },\n * { earthCenter.x, earthCenter.y, earthCenter.z, 0 },\n * { scatteringCoefficients.x, scatteringCoefficients.y, scatteringCoefficients.z, 0 } }\n */\n public get atmosphereData() { return this._atmosphereData; }\n\n // Fragment shader uniforms\n private _exposure = 0.0;\n\n // utility\n public syncKey = 0;\n private _scratchMatrix3d = new Matrix3d();\n private _scratchPoint3d = new Point3d();\n\n public update(target: Target): void {\n const atmosphereHasNotChanged = this._atmosphere && target.plan.atmosphere && this._atmosphere.equals(target.plan.atmosphere);\n const ellipsoidHasNotChanged = this._ellipsoid && target.plan.ellipsoid && this._ellipsoid.equals(target.plan.ellipsoid);\n if (atmosphereHasNotChanged && ellipsoidHasNotChanged) {\n return;\n }\n\n this._atmosphere = target.plan.atmosphere;\n this._ellipsoid = target.plan.ellipsoid;\n desync(this);\n if (!this._atmosphere || !this._ellipsoid) {\n return;\n }\n\n this._updateAtmosphereScaleMatrix(this._atmosphere.atmosphereHeightAboveEarth);\n this._updateExposure(this._atmosphere.exposure);\n this._updateDensityFalloff(this._atmosphere.densityFalloff);\n this._updateEarthCenter(this._ellipsoid.ellipsoidCenter, target.uniforms.frustum.viewMatrix);\n this._updateEarthScaleMatrix(this._ellipsoid.ellipsoidRadii);\n this._updateInverseEllipsoidRotationMatrix(this._ellipsoid.ellipsoidRotation, target.uniforms.frustum.viewMatrix.matrix);\n this._updateAtmosphereRadiusScaleFactor(this._atmosphere.atmosphereHeightAboveEarth);\n this._updateAtmosphereMaxDensityThresholdScaleFactor(this._atmosphere.depthBelowEarthForMaxDensity);\n this._updateNumViewRaySamples(this._atmosphere.numViewRaySamples);\n this._updateNumSunRaySamples(this._atmosphere.numSunRaySamples);\n this._updateScatteringCoefficients(this._atmosphere.scatteringStrength, this._atmosphere.wavelengths);\n }\n\n private _updateEarthCenter(earthCenter: Point3d, viewMatrix: Transform) {\n viewMatrix.multiplyPoint3d(earthCenter, this._scratchPoint3d);\n this._atmosphereData.data[8] = this._scratchPoint3d.x;\n this._atmosphereData.data[9] = this._scratchPoint3d.y;\n this._atmosphereData.data[10] = this._scratchPoint3d.z;\n }\n\n private _updateInverseEllipsoidRotationMatrix(ellipsoidRotation: Matrix3d, viewRotation: Matrix3d) {\n viewRotation.inverse(this._scratchMatrix3d);\n ellipsoidRotation.multiplyMatrixInverseMatrix(this._scratchMatrix3d, this._inverseEllipsoidRotationMatrix);\n }\n\n private _updateEarthScaleMatrix(earthRadii: Point3d) {\n this._earthScaleMatrix.setAt(0, 0, earthRadii.x);\n this._earthScaleMatrix.setAt(1, 1, earthRadii.y);\n this._earthScaleMatrix.setAt(2, 2, earthRadii.z);\n }\n private _updateAtmosphereScaleMatrix(heightAboveSurface: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const scaleFactor = earthPolarRadius === 0 ? 1.0 : (earthPolarRadius + heightAboveSurface) / earthPolarRadius;\n this._earthScaleMatrix.scale(scaleFactor, this._atmosphereScaleMatrix);\n }\n\n private _updateAtmosphereRadiusScaleFactor(atmosphereHeightAboveEarth: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const minDensityThresholdRadius = earthPolarRadius + atmosphereHeightAboveEarth;\n const atmosphereRadiusScaleFactor = (earthPolarRadius === 0)\n ? 1\n : (minDensityThresholdRadius / earthPolarRadius);\n this.atmosphereData.data[0] = atmosphereRadiusScaleFactor;\n }\n\n private _updateAtmosphereMaxDensityThresholdScaleFactor(maxDensityDepthBelowEarth: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const maxDensityThresholdRadius = earthPolarRadius - maxDensityDepthBelowEarth;\n const atmosphereMaxDensityThresholdScaleFactor = (earthPolarRadius === 0)\n ? 1\n : (maxDensityThresholdRadius / earthPolarRadius);\n this.atmosphereData.data[1] = atmosphereMaxDensityThresholdScaleFactor;\n }\n\n private _updateDensityFalloff(densityFalloff: number) {\n this.atmosphereData.data[2] = densityFalloff;\n }\n\n private _updateScatteringCoefficients(scatteringStrength: number, wavelengths: Atmosphere.Wavelengths) {\n // Rayleigh scattering strength is inversely related to the 4th power of the wavelength -> 1/pow(wavelength, 4)\n // Because this produces very small values when the wavelengths are taken in nanometers,\n // we attempt to normalize them around 1 by taking the smallest wavelength of visible light as a baseline (violet light - 400nm)\n const violetLightWavelength = 400.0;\n this.atmosphereData.data[12] = ((violetLightWavelength / wavelengths.r) ** 4.0) * scatteringStrength;\n this.atmosphereData.data[13] = ((violetLightWavelength / wavelengths.g) ** 4.0) * scatteringStrength;\n this.atmosphereData.data[14] = ((violetLightWavelength / wavelengths.b) ** 4.0) * scatteringStrength;\n }\n\n private _updateExposure(exposure: number) {\n this._exposure = exposure;\n }\n\n public bindExposure(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n uniform.setUniform1f(this._exposure);\n }\n }\n\n private _updateNumViewRaySamples(_numViewRaySamples: number) {\n const numViewRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numViewRaySamples));\n this.atmosphereData.data[4] = numViewRaySamples;\n }\n\n private _updateNumSunRaySamples(_numSunRaySamples: number) {\n const numSunRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numSunRaySamples));\n this.atmosphereData.data[5] = numSunRaySamples;\n }\n\n public bindInverseRotationInverseEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n this._earthScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\n }\n }\n\n public bindInverseRotationInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n this._atmosphereScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\n }\n }\n\n public bindEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix));\n }\n\n public bindAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix));\n }\n\n public bindInverseEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix.inverse()!));\n }\n\n public bindInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix.inverse()!));\n }\n\n public get isDisposed(): boolean {\n return true;\n }\n\n public [Symbol.dispose]() { }\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n}\n"]}
1
+ {"version":3,"file":"AtmosphereUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AtmosphereUniforms.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*--------------------------------------------------------------------------------------------*/\nimport { Atmosphere } from \"@itwin/core-common\";\nimport { Matrix3d, Point3d, Transform } from \"@itwin/core-geometry\";\nimport { RenderPlanEllipsoid } from \"../RenderPlan\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { Matrix3, Matrix4 } from \"./Matrix\";\nimport { desync, sync, SyncTarget } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { UniformHandle } from \"./UniformHandle\";\n\nexport const MAX_SAMPLE_POINTS = 40; // Maximum number of sample points to be used for the in-scattering and out-scattering computations.\n\nexport class AtmosphereUniforms implements WebGLDisposable, SyncTarget {\n private _atmosphere?: Atmosphere.Settings;\n private _ellipsoid?: RenderPlanEllipsoid;\n\n // Main shader uniforms\n private readonly _earthScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _inverseEllipsoidRotationMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _atmosphereScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\n private readonly _atmosphereData = new Matrix4();\n /**\n * uniform mat3 u_atmosphereData;\n * { { atmosphereRadiusScaleFactor, atmosphereMaxDensityThresholdScaleFactor, densityFalloff, 0 },\n * { numViewRaySamples, numSunRaySamples, 0, 0 },\n * { earthCenter.x, earthCenter.y, earthCenter.z, 0 },\n * { scatteringCoefficients.x, scatteringCoefficients.y, scatteringCoefficients.z, 0 } }\n */\n public get atmosphereData() { return this._atmosphereData; }\n\n // Fragment shader uniforms\n private _exposure = 0.0;\n\n // utility\n public syncKey = 0;\n private _scratchMatrix3d = new Matrix3d();\n private _scratchPoint3d = new Point3d();\n\n public update(target: Target): void {\n const atmosphereHasNotChanged = this._atmosphere && target.plan.atmosphere && this._atmosphere.equals(target.plan.atmosphere);\n const ellipsoidHasNotChanged = this._ellipsoid && target.plan.ellipsoid && this._ellipsoid.equals(target.plan.ellipsoid);\n if (atmosphereHasNotChanged && ellipsoidHasNotChanged) {\n return;\n }\n\n this._atmosphere = target.plan.atmosphere;\n this._ellipsoid = target.plan.ellipsoid;\n desync(this);\n if (!this._atmosphere || !this._ellipsoid) {\n return;\n }\n\n this._updateAtmosphereScaleMatrix(this._atmosphere.atmosphereHeightAboveEarth);\n this._updateExposure(this._atmosphere.exposure);\n this._updateDensityFalloff(this._atmosphere.densityFalloff);\n this._updateEarthCenter(this._ellipsoid.ellipsoidCenter, target.uniforms.frustum.viewMatrix);\n this._updateEarthScaleMatrix(this._ellipsoid.ellipsoidRadii);\n this._updateInverseEllipsoidRotationMatrix(this._ellipsoid.ellipsoidRotation, target.uniforms.frustum.viewMatrix.matrix);\n this._updateAtmosphereRadiusScaleFactor(this._atmosphere.atmosphereHeightAboveEarth);\n this._updateAtmosphereMaxDensityThresholdScaleFactor(this._atmosphere.depthBelowEarthForMaxDensity);\n this._updateNumViewRaySamples(this._atmosphere.numViewRaySamples);\n this._updateNumSunRaySamples(this._atmosphere.numSunRaySamples);\n this._updateScatteringCoefficients(this._atmosphere.scatteringStrength, this._atmosphere.wavelengths);\n }\n\n private _updateEarthCenter(earthCenter: Point3d, viewMatrix: Transform) {\n viewMatrix.multiplyPoint3d(earthCenter, this._scratchPoint3d);\n this._atmosphereData.data[8] = this._scratchPoint3d.x;\n this._atmosphereData.data[9] = this._scratchPoint3d.y;\n this._atmosphereData.data[10] = this._scratchPoint3d.z;\n }\n\n private _updateInverseEllipsoidRotationMatrix(ellipsoidRotation: Matrix3d, viewRotation: Matrix3d) {\n viewRotation.inverse(this._scratchMatrix3d);\n ellipsoidRotation.multiplyMatrixInverseMatrix(this._scratchMatrix3d, this._inverseEllipsoidRotationMatrix);\n }\n\n private _updateEarthScaleMatrix(earthRadii: Point3d) {\n this._earthScaleMatrix.setAt(0, 0, earthRadii.x);\n this._earthScaleMatrix.setAt(1, 1, earthRadii.y);\n this._earthScaleMatrix.setAt(2, 2, earthRadii.z);\n }\n private _updateAtmosphereScaleMatrix(heightAboveSurface: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const scaleFactor = earthPolarRadius === 0 ? 1.0 : (earthPolarRadius + heightAboveSurface) / earthPolarRadius;\n this._earthScaleMatrix.scale(scaleFactor, this._atmosphereScaleMatrix);\n }\n\n private _updateAtmosphereRadiusScaleFactor(atmosphereHeightAboveEarth: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const minDensityThresholdRadius = earthPolarRadius + atmosphereHeightAboveEarth;\n const atmosphereRadiusScaleFactor = (earthPolarRadius === 0)\n ? 1\n : (minDensityThresholdRadius / earthPolarRadius);\n this.atmosphereData.data[0] = atmosphereRadiusScaleFactor;\n }\n\n private _updateAtmosphereMaxDensityThresholdScaleFactor(maxDensityDepthBelowEarth: number) {\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\n const maxDensityThresholdRadius = earthPolarRadius - maxDensityDepthBelowEarth;\n const atmosphereMaxDensityThresholdScaleFactor = (earthPolarRadius === 0)\n ? 1\n : (maxDensityThresholdRadius / earthPolarRadius);\n this.atmosphereData.data[1] = atmosphereMaxDensityThresholdScaleFactor;\n }\n\n private _updateDensityFalloff(densityFalloff: number) {\n this.atmosphereData.data[2] = densityFalloff;\n }\n\n private _updateScatteringCoefficients(scatteringStrength: number, wavelengths: Atmosphere.Wavelengths) {\n // Rayleigh scattering strength is inversely related to the 4th power of the wavelength -> 1/pow(wavelength, 4)\n // Because this produces very small values when the wavelengths are taken in nanometers,\n // we attempt to normalize them around 1 by taking the smallest wavelength of visible light as a baseline (violet light - 400nm)\n const violetLightWavelength = 400.0;\n this.atmosphereData.data[12] = ((violetLightWavelength / wavelengths.r) ** 4.0) * scatteringStrength;\n this.atmosphereData.data[13] = ((violetLightWavelength / wavelengths.g) ** 4.0) * scatteringStrength;\n this.atmosphereData.data[14] = ((violetLightWavelength / wavelengths.b) ** 4.0) * scatteringStrength;\n }\n\n private _updateExposure(exposure: number) {\n this._exposure = exposure;\n }\n\n public bindExposure(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n uniform.setUniform1f(this._exposure);\n }\n }\n\n private _updateNumViewRaySamples(_numViewRaySamples: number) {\n const numViewRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numViewRaySamples));\n this.atmosphereData.data[4] = numViewRaySamples;\n }\n\n private _updateNumSunRaySamples(_numSunRaySamples: number) {\n const numSunRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numSunRaySamples));\n this.atmosphereData.data[5] = numSunRaySamples;\n }\n\n public bindInverseRotationInverseEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n this._earthScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\n }\n }\n\n public bindInverseRotationInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform)) {\n this._atmosphereScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\n }\n }\n\n public bindEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix));\n }\n\n public bindAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix));\n }\n\n public bindInverseEarthScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix.inverse()!));\n }\n\n public bindInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix.inverse()!));\n }\n\n public get isDisposed(): boolean {\n return true;\n }\n\n public [Symbol.dispose]() { }\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n}\n"]}
@@ -54,7 +54,7 @@ export declare class BuffersContainer implements WebGLDisposable {
54
54
  private readonly _context;
55
55
  static create(): BuffersContainer;
56
56
  private constructor();
57
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
57
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
58
58
  dispose(): void;
59
59
  [Symbol.dispose](): void;
60
60
  get isDisposed(): boolean;
@@ -74,7 +74,7 @@ export declare class VAOHandle implements WebGLDisposable {
74
74
  /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */
75
75
  constructor(context: WebGL2RenderingContext);
76
76
  get isDisposed(): boolean;
77
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
77
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
78
78
  dispose(): void;
79
79
  /** Frees the WebGL vertex array object */
80
80
  [Symbol.dispose](): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ class BuffersContainer {
59
59
  this._context = context;
60
60
  this._vao = new VAOHandle(this._context);
61
61
  }
62
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
62
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
63
63
  dispose() {
64
64
  this[Symbol.dispose]();
65
65
  }
@@ -122,7 +122,7 @@ class VAOHandle {
122
122
  (0, core_bentley_1.assert)(!this.isDisposed);
123
123
  }
124
124
  get isDisposed() { return this._arrayObject === undefined; }
125
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
125
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
126
126
  dispose() {
127
127
  this[Symbol.dispose]();
128
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.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 { Point3d } from \"@itwin/core-geometry\";\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\n\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\n buffer: BufferHandle;\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\n}\n\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\n private constructor() { }\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\n return { buffer, params };\n }\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\n const clonedParams: BufferParameters[] = [];\n for (const param of linkage.params) {\n clonedParams.push(BufferParameters.clone(param));\n }\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\n }\n}\n\n/**\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\n * @internal\n */\nexport interface BufferParameters {\n /** Index used for binding attribute location for the associated BufferHandle. */\n glAttribLoc: number;\n /** Number of components for the attribute (1, 2, 3, or 4). */\n glSize: number;\n /** Data type of each component. */\n glType: number;\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\n glNormalized: boolean;\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\n glStride: number;\n /** Offset in bytes of the first component in the vertex attribute array. */\n glOffset: number;\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\n glInstanced: boolean;\n}\n\n/**\n * Provides convenience methods for creating a BuffersParameter interface.\n * @internal\n */\nexport namespace BufferParameters {\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\n }\n\n export function clone(params: BufferParameters): BufferParameters {\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\n }\n}\n\n/**\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\n * @internal\n */\nexport class BuffersContainer implements WebGLDisposable {\n public readonly linkages: BufferHandleLinkage[] = [];\n protected readonly _vao: VAOHandle;\n private readonly _context: WebGL2RenderingContext;\n\n public static create(): BuffersContainer {\n return new BuffersContainer(System.instance.context);\n }\n\n private constructor(context: WebGL2RenderingContext) {\n this._context = context;\n this._vao = new VAOHandle(this._context);\n }\n\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\n public [Symbol.dispose](): void {\n this._vao[Symbol.dispose]();\n }\n\n public get isDisposed(): boolean {\n return this._vao.isDisposed;\n }\n\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\n const linkage = BufferHandleLinkage.create(buffer, params);\n this.linkages.push(linkage);\n this._bindLinkage(linkage);\n }\n\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\n for (const linkage of linkages) {\n this.linkages.push(BufferHandleLinkage.clone(linkage));\n this._bindLinkage(linkage);\n }\n }\n\n private _bindLinkage(linkage: BufferHandleLinkage) {\n this.bind();\n linkage.buffer.bind();\n for (const p of linkage.params) {\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\n if (p.glInstanced) {\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\n }\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\n }\n this.unbind();\n }\n\n public bind(): void {\n this._vao.bind();\n }\n\n public unbind(): void {\n VAOHandle.unbind(this._context);\n }\n}\n\n/** A handle to a WebGLVertexArrayObjectOES.\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\n * @internal\n */\nexport class VAOHandle implements WebGLDisposable {\n private _context: WebGL2RenderingContext;\n private _arrayObject?: WebGLVertexArrayObjectOES;\n\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\n public constructor(context: WebGL2RenderingContext) {\n this._context = context;\n const arrayObject = this._context.createVertexArray();\n\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\n if (null !== arrayObject) {\n this._arrayObject = arrayObject;\n } else {\n this._arrayObject = undefined;\n }\n\n assert(!this.isDisposed);\n }\n\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\n\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** Frees the WebGL vertex array object */\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n this._context.deleteVertexArray(this._arrayObject!);\n this._arrayObject = undefined;\n }\n }\n\n /** Binds this vertex array object */\n public bind(): void {\n if (undefined !== this._arrayObject) {\n this._context.bindVertexArray(this._arrayObject);\n }\n }\n\n /** Ensures no vertex array object is bound */\n public static unbind(context: WebGL2RenderingContext): void {\n context.bindVertexArray(null);\n }\n}\n\n/**\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\n * @internal\n */\nexport class BufferHandle implements WebGLDisposable {\n private _target: GL.Buffer.Target;\n private _glBuffer?: WebGLBuffer;\n private _bytesUsed = 0;\n\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\n public constructor(target: GL.Buffer.Target) {\n this._target = target;\n const glBuffer = System.instance.context.createBuffer();\n\n // gl.createBuffer() returns WebGLBuffer | null...\n if (null !== glBuffer) {\n this._glBuffer = glBuffer;\n } else {\n this._glBuffer = undefined;\n }\n\n assert(!this.isDisposed);\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\n public get bytesUsed(): number { return this._bytesUsed; }\n\n /** Frees the WebGL buffer */\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteBuffer(this._glBuffer!);\n this._glBuffer = undefined;\n this._bytesUsed = 0;\n }\n }\n\n /** Binds this buffer to the target specified during construction */\n public bind(): void {\n if (undefined !== this._glBuffer) {\n System.instance.context.bindBuffer(this._target, this._glBuffer);\n }\n }\n\n /** Sets the specified target to be bound to no buffer */\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\n\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\n this.bind();\n System.instance.context.bufferData(this._target, data, usage);\n this.unbind();\n this._bytesUsed = data.byteLength;\n }\n\n /** Creates a BufferHandle and binds its data */\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\n const handle = new BufferHandle(target);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data, usage);\n return handle;\n }\n /** Creates a BufferHandle and binds its data */\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\n }\n\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\n}\n\nfunction setScale(index: number, value: number, array: Float32Array) {\n array[index] = 0.0 !== value ? 1.0 / value : value;\n}\n\n/**\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\n * params[0] = origin.x\n * params[1] = origin.y\n * params[2] = scale.x\n * params[3] = scale.y\n * @internal\n */\nexport function qparams2dToArray(params: QParams2d): Float32Array {\n const arr = new Float32Array(4);\n\n arr[0] = params.origin.x;\n arr[1] = params.origin.y;\n setScale(2, params.scale.x, arr);\n setScale(3, params.scale.y, arr);\n\n return arr;\n}\n\n/** @internal */\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\n const origin = new Float32Array(3);\n origin[0] = qorigin.x;\n origin[1] = qorigin.y;\n origin[2] = qorigin.z;\n return origin;\n}\n\n/** @internal */\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\n const scale = new Float32Array(3);\n setScale(0, qscale.x, scale);\n setScale(1, qscale.y, scale);\n setScale(2, qscale.z, scale);\n return scale;\n}\n\n/** Converts 3d quantization params to a pair of Float32Arrays\n * @internal\n */\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\n const origin = qorigin3dToArray(params.origin);\n const scale = qscale3dToArray(params.scale);\n return { origin, scale };\n}\n\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\n * @internal\n */\nexport class QBufferHandle2d extends BufferHandle {\n public readonly params: Float32Array;\n\n public constructor(qParams: QParams2d) {\n super(GL.Buffer.Target.ArrayBuffer);\n this.params = qparams2dToArray(qParams);\n }\n\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\n const handle = new QBufferHandle2d(qParams);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data);\n return handle;\n }\n}\n\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\n * @internal\n */\nexport class QBufferHandle3d extends BufferHandle {\n /** The quantization origin in x, y, and z */\n public readonly origin: Float32Array;\n /** The quantization scale in x, y, and z */\n public readonly scale: Float32Array;\n\n public constructor(qParams: QParams3d) {\n super(GL.Buffer.Target.ArrayBuffer);\n this.origin = qorigin3dToArray(qParams.origin);\n this.scale = qscale3dToArray(qParams.scale);\n }\n\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\n const handle = new QBufferHandle3d(qParams);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data);\n return handle;\n }\n}\n"]}
1
+ {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.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 { Point3d } from \"@itwin/core-geometry\";\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\n\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\n buffer: BufferHandle;\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\n}\n\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\n private constructor() { }\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\n return { buffer, params };\n }\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\n const clonedParams: BufferParameters[] = [];\n for (const param of linkage.params) {\n clonedParams.push(BufferParameters.clone(param));\n }\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\n }\n}\n\n/**\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\n * @internal\n */\nexport interface BufferParameters {\n /** Index used for binding attribute location for the associated BufferHandle. */\n glAttribLoc: number;\n /** Number of components for the attribute (1, 2, 3, or 4). */\n glSize: number;\n /** Data type of each component. */\n glType: number;\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\n glNormalized: boolean;\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\n glStride: number;\n /** Offset in bytes of the first component in the vertex attribute array. */\n glOffset: number;\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\n glInstanced: boolean;\n}\n\n/**\n * Provides convenience methods for creating a BuffersParameter interface.\n * @internal\n */\nexport namespace BufferParameters {\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\n }\n\n export function clone(params: BufferParameters): BufferParameters {\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\n }\n}\n\n/**\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\n * @internal\n */\nexport class BuffersContainer implements WebGLDisposable {\n public readonly linkages: BufferHandleLinkage[] = [];\n protected readonly _vao: VAOHandle;\n private readonly _context: WebGL2RenderingContext;\n\n public static create(): BuffersContainer {\n return new BuffersContainer(System.instance.context);\n }\n\n private constructor(context: WebGL2RenderingContext) {\n this._context = context;\n this._vao = new VAOHandle(this._context);\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\n public [Symbol.dispose](): void {\n this._vao[Symbol.dispose]();\n }\n\n public get isDisposed(): boolean {\n return this._vao.isDisposed;\n }\n\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\n const linkage = BufferHandleLinkage.create(buffer, params);\n this.linkages.push(linkage);\n this._bindLinkage(linkage);\n }\n\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\n for (const linkage of linkages) {\n this.linkages.push(BufferHandleLinkage.clone(linkage));\n this._bindLinkage(linkage);\n }\n }\n\n private _bindLinkage(linkage: BufferHandleLinkage) {\n this.bind();\n linkage.buffer.bind();\n for (const p of linkage.params) {\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\n if (p.glInstanced) {\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\n }\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\n }\n this.unbind();\n }\n\n public bind(): void {\n this._vao.bind();\n }\n\n public unbind(): void {\n VAOHandle.unbind(this._context);\n }\n}\n\n/** A handle to a WebGLVertexArrayObjectOES.\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\n * @internal\n */\nexport class VAOHandle implements WebGLDisposable {\n private _context: WebGL2RenderingContext;\n private _arrayObject?: WebGLVertexArrayObjectOES;\n\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\n public constructor(context: WebGL2RenderingContext) {\n this._context = context;\n const arrayObject = this._context.createVertexArray();\n\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\n if (null !== arrayObject) {\n this._arrayObject = arrayObject;\n } else {\n this._arrayObject = undefined;\n }\n\n assert(!this.isDisposed);\n }\n\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n /** Frees the WebGL vertex array object */\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n this._context.deleteVertexArray(this._arrayObject!);\n this._arrayObject = undefined;\n }\n }\n\n /** Binds this vertex array object */\n public bind(): void {\n if (undefined !== this._arrayObject) {\n this._context.bindVertexArray(this._arrayObject);\n }\n }\n\n /** Ensures no vertex array object is bound */\n public static unbind(context: WebGL2RenderingContext): void {\n context.bindVertexArray(null);\n }\n}\n\n/**\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\n * @internal\n */\nexport class BufferHandle implements WebGLDisposable {\n private _target: GL.Buffer.Target;\n private _glBuffer?: WebGLBuffer;\n private _bytesUsed = 0;\n\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\n public constructor(target: GL.Buffer.Target) {\n this._target = target;\n const glBuffer = System.instance.context.createBuffer();\n\n // gl.createBuffer() returns WebGLBuffer | null...\n if (null !== glBuffer) {\n this._glBuffer = glBuffer;\n } else {\n this._glBuffer = undefined;\n }\n\n assert(!this.isDisposed);\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\n public get bytesUsed(): number { return this._bytesUsed; }\n\n /** Frees the WebGL buffer */\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteBuffer(this._glBuffer!);\n this._glBuffer = undefined;\n this._bytesUsed = 0;\n }\n }\n\n /** Binds this buffer to the target specified during construction */\n public bind(): void {\n if (undefined !== this._glBuffer) {\n System.instance.context.bindBuffer(this._target, this._glBuffer);\n }\n }\n\n /** Sets the specified target to be bound to no buffer */\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\n\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\n this.bind();\n System.instance.context.bufferData(this._target, data, usage);\n this.unbind();\n this._bytesUsed = data.byteLength;\n }\n\n /** Creates a BufferHandle and binds its data */\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\n const handle = new BufferHandle(target);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data, usage);\n return handle;\n }\n /** Creates a BufferHandle and binds its data */\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\n }\n\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\n}\n\nfunction setScale(index: number, value: number, array: Float32Array) {\n array[index] = 0.0 !== value ? 1.0 / value : value;\n}\n\n/**\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\n * params[0] = origin.x\n * params[1] = origin.y\n * params[2] = scale.x\n * params[3] = scale.y\n * @internal\n */\nexport function qparams2dToArray(params: QParams2d): Float32Array {\n const arr = new Float32Array(4);\n\n arr[0] = params.origin.x;\n arr[1] = params.origin.y;\n setScale(2, params.scale.x, arr);\n setScale(3, params.scale.y, arr);\n\n return arr;\n}\n\n/** @internal */\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\n const origin = new Float32Array(3);\n origin[0] = qorigin.x;\n origin[1] = qorigin.y;\n origin[2] = qorigin.z;\n return origin;\n}\n\n/** @internal */\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\n const scale = new Float32Array(3);\n setScale(0, qscale.x, scale);\n setScale(1, qscale.y, scale);\n setScale(2, qscale.z, scale);\n return scale;\n}\n\n/** Converts 3d quantization params to a pair of Float32Arrays\n * @internal\n */\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\n const origin = qorigin3dToArray(params.origin);\n const scale = qscale3dToArray(params.scale);\n return { origin, scale };\n}\n\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\n * @internal\n */\nexport class QBufferHandle2d extends BufferHandle {\n public readonly params: Float32Array;\n\n public constructor(qParams: QParams2d) {\n super(GL.Buffer.Target.ArrayBuffer);\n this.params = qparams2dToArray(qParams);\n }\n\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\n const handle = new QBufferHandle2d(qParams);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data);\n return handle;\n }\n}\n\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\n * @internal\n */\nexport class QBufferHandle3d extends BufferHandle {\n /** The quantization origin in x, y, and z */\n public readonly origin: Float32Array;\n /** The quantization scale in x, y, and z */\n public readonly scale: Float32Array;\n\n public constructor(qParams: QParams3d) {\n super(GL.Buffer.Target.ArrayBuffer);\n this.origin = qorigin3dToArray(qParams.origin);\n this.scale = qscale3dToArray(qParams.scale);\n }\n\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\n const handle = new QBufferHandle3d(qParams);\n if (handle.isDisposed) {\n return undefined;\n }\n\n handle.bindData(data);\n return handle;\n }\n}\n"]}
@@ -10,7 +10,7 @@ export declare class ClippingProgram {
10
10
  constructor(src: ProgramBuilder);
11
11
  getProgram(numPlanes: number): ShaderProgram | undefined;
12
12
  [Symbol.dispose](): void;
13
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
13
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
14
14
  dispose(): void;
15
15
  }
16
16
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAE5B,OAAO,IAAI,OAAO;gBAIN,GAAG,EAAE,cAAc;IAK/B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAI/B,uDAAuD;IAChD,OAAO,IAAI,IAAI;CAGvB;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAE9E"}
1
+ {"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAE5B,OAAO,IAAI,OAAO;gBAIN,GAAG,EAAE,cAAc;IAK/B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAI/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAE9E"}
@@ -35,7 +35,7 @@ class ClippingProgram {
35
35
  [Symbol.dispose]() {
36
36
  this._program = (0, core_bentley_1.dispose)(this._program);
37
37
  }
38
- /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
38
+ /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */
39
39
  dispose() {
40
40
  this[Symbol.dispose]();
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClippingProgram.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA4CH,sDAEC;AA5CD,sDAA8C;AAG9C,qCAAkC;AAClC,8CAA8C;AAE9C,SAAS,qBAAqB,CAAC,GAAmB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAa,eAAe;IAChB,QAAQ,CAAiB;IAE5B,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,kCAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAED,YAAmB,GAAmB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,uDAAuD;IAChD,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;CACF;AAxBD,0CAwBC;AAED,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC","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 { dispose } from \"@itwin/core-bentley\";\nimport { ProgramBuilder } from \"./ShaderBuilder\";\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\nimport { System } from \"./System\";\nimport { addClipping } from \"./glsl/Clipping\";\n\nfunction createClippingBuilder(src: ProgramBuilder): ProgramBuilder {\n const builder = src.clone();\n builder.vert.headerComment += \"-Clip\";\n builder.frag.headerComment += \"-Clip\";\n addClipping(builder);\n return builder;\n}\n\n/** @internal */\nexport class ClippingProgram {\n protected _program?: ShaderProgram;\n\n public compile(): boolean {\n return undefined === this._program || CompileStatus.Success === this._program.compile();\n }\n\n public constructor(src: ProgramBuilder) {\n const builder = createClippingBuilder(src);\n this._program = builder.buildProgram(System.instance.context);\n }\n\n public getProgram(numPlanes: number): ShaderProgram | undefined {\n return numPlanes > 0 ? this._program : undefined;\n }\n\n public [Symbol.dispose](): void {\n this._program = dispose(this._program);\n }\n\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\n/** @internal */\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\n return new ClippingProgram(builder);\n}\n"]}
1
+ {"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClippingProgram.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AA4CH,sDAEC;AA5CD,sDAA8C;AAG9C,qCAAkC;AAClC,8CAA8C;AAE9C,SAAS,qBAAqB,CAAC,GAAmB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAa,eAAe;IAChB,QAAQ,CAAiB;IAE5B,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,kCAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAED,YAAmB,GAAmB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,qGAAqG;IAC9F,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;CACF;AAxBD,0CAwBC;AAED,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC","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 { dispose } from \"@itwin/core-bentley\";\nimport { ProgramBuilder } from \"./ShaderBuilder\";\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\nimport { System } from \"./System\";\nimport { addClipping } from \"./glsl/Clipping\";\n\nfunction createClippingBuilder(src: ProgramBuilder): ProgramBuilder {\n const builder = src.clone();\n builder.vert.headerComment += \"-Clip\";\n builder.frag.headerComment += \"-Clip\";\n addClipping(builder);\n return builder;\n}\n\n/** @internal */\nexport class ClippingProgram {\n protected _program?: ShaderProgram;\n\n public compile(): boolean {\n return undefined === this._program || CompileStatus.Success === this._program.compile();\n }\n\n public constructor(src: ProgramBuilder) {\n const builder = createClippingBuilder(src);\n this._program = builder.buildProgram(System.instance.context);\n }\n\n public getProgram(numPlanes: number): ShaderProgram | undefined {\n return numPlanes > 0 ? this._program : undefined;\n }\n\n public [Symbol.dispose](): void {\n this._program = dispose(this._program);\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n}\n\n/** @internal */\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\n return new ClippingProgram(builder);\n}\n"]}
@@ -32,6 +32,7 @@ export declare class FrustumUniforms {
32
32
  private readonly _viewUpVector;
33
33
  private readonly _planeData;
34
34
  private readonly _frustumData;
35
+ private readonly _worldFrustumZRange;
35
36
  readonly projectionMatrix32: Matrix4;
36
37
  private readonly _logZData;
37
38
  private readonly _viewUpVector32;
@@ -42,6 +43,7 @@ export declare class FrustumUniforms {
42
43
  bindUpVector(uniform: UniformHandle): void;
43
44
  get planes(): Float32Array;
44
45
  get frustum(): Float32Array;
46
+ get worldFrustumZRange(): Float32Array;
45
47
  get nearPlane(): number;
46
48
  get farPlane(): number;
47
49
  get type(): FrustumUniformType;
@@ -1 +1 @@
1
- {"version":3,"file":"FrustumUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,OAAO,EAAO,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,gBAAgB;AAChB,0BAAkB,kBAAkB;IAClC,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,WAAW,IAAA;CACZ;AAED,gBAAgB;AAChB,0BAAkB,KAAK;IACrB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;IACL,MAAM,IAAA;CACP;AAQD;;;GAGG;AACH,qBAAa,eAAe;IAE1B,SAAgB,WAAW,UAAiB;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,SAAgB,UAAU,YAA8B;IACxD,SAAgB,gBAAgB,WAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAGlD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,SAAgB,kBAAkB,UAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAGhD,OAAO,SAAK;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAMvB;;IAKK,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,IAAW,MAAM,IAAI,YAAY,CAA4B;IAG7D,IAAW,OAAO,IAAI,YAAY,CAA8B;IAEhE,IAAW,SAAS,IAAI,MAAM,CAAiD;IAC/E,IAAW,QAAQ,IAAI,MAAM,CAAgD;IAC7E,IAAW,IAAI,IAAI,kBAAkB,CAAkE;IACvG,IAAW,IAAI,IAAI,OAAO,CAAoD;IAC9E,IAAW,YAAY,IAAI,MAAM,CAA+B;IAGhE,IAAW,IAAI,IAAI,YAAY,CAA2B;IAEnD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAuF5E,sBAAsB,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAMxD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnF,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAS1F;AAWD,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,WAM9E"}
1
+ {"version":3,"file":"FrustumUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAW,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAO,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,gBAAgB;AAChB,0BAAkB,kBAAkB;IAClC,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,WAAW,IAAA;CACZ;AAED,gBAAgB;AAChB,0BAAkB,KAAK;IACrB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,KAAK,IAAA;IACL,MAAM,IAAA;CACP;AAQD;;;GAGG;AACH,qBAAa,eAAe;IAE1B,SAAgB,WAAW,UAAiB;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,SAAgB,UAAU,YAA8B;IACxD,SAAgB,gBAAgB,WAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAGlD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqC;IACzE,SAAgB,kBAAkB,UAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAGhD,OAAO,SAAK;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAOvB;;IAKK,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,IAAW,MAAM,IAAI,YAAY,CAA4B;IAG7D,IAAW,OAAO,IAAI,YAAY,CAA8B;IAGhE,IAAW,kBAAkB,IAAI,YAAY,CAAqC;IAElF,IAAW,SAAS,IAAI,MAAM,CAAiD;IAC/E,IAAW,QAAQ,IAAI,MAAM,CAAgD;IAC7E,IAAW,IAAI,IAAI,kBAAkB,CAAkE;IACvG,IAAW,IAAI,IAAI,OAAO,CAAoD;IAC9E,IAAW,YAAY,IAAI,MAAM,CAA+B;IAGhE,IAAW,IAAI,IAAI,YAAY,CAA2B;IAEnD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IA2F5E,sBAAsB,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAMxD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOnF,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAS1F;AAWD,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,WAM9E"}
@@ -30,6 +30,7 @@ class FrustumUniforms {
30
30
  // GPU state
31
31
  _planeData = new Float32Array(4);
32
32
  _frustumData = new Float32Array(3);
33
+ _worldFrustumZRange = new Float32Array(2);
33
34
  projectionMatrix32 = new Matrix_1.Matrix4();
34
35
  _logZData = new Float32Array(2);
35
36
  _viewUpVector32 = new Float32Array(3);
@@ -42,6 +43,7 @@ class FrustumUniforms {
42
43
  viewX: new core_geometry_1.Vector3d(),
43
44
  viewY: new core_geometry_1.Vector3d(),
44
45
  viewZ: new core_geometry_1.Vector3d(),
46
+ range: new core_geometry_1.Range3d(),
45
47
  };
46
48
  constructor() {
47
49
  }
@@ -57,6 +59,8 @@ class FrustumUniforms {
57
59
  get planes() { return this._planeData; }
58
60
  // uniform vec3 u_frustum; // { near, far, type }
59
61
  get frustum() { return this._frustumData; }
62
+ // uniform vec2 u_worldFrustumZRange // { min, max }
63
+ get worldFrustumZRange() { return this._worldFrustumZRange; }
60
64
  get nearPlane() { return this._frustumData[0 /* FrustumData.kNear */]; }
61
65
  get farPlane() { return this._frustumData[1 /* FrustumData.kFar */]; }
62
66
  get type() { return this.frustum[2 /* FrustumData.kType */]; }
@@ -69,6 +73,9 @@ class FrustumUniforms {
69
73
  return;
70
74
  (0, Sync_1.desync)(this);
71
75
  newFrustum.clone(this.planFrustum);
76
+ const range = newFrustum.toRange(this._scratch.range);
77
+ this._worldFrustumZRange[0] = range.low.z;
78
+ this._worldFrustumZRange[1] = range.high.z;
72
79
  const farLowerLeft = newFrustum.getCorner(core_common_1.Npc.LeftBottomRear);
73
80
  const farLowerRight = newFrustum.getCorner(core_common_1.Npc.RightBottomRear);
74
81
  const farUpperLeft = newFrustum.getCorner(core_common_1.Npc.LeftTopRear);
@@ -1 +1 @@
1
- {"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { Frustum, Npc } from \"@itwin/core-common\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\nimport { Matrix4 } from \"./Matrix\";\nimport { desync, sync } from \"./Sync\";\n\n/** @internal */\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\n TwoDee,\n Orthographic,\n Perspective,\n}\n\n/** @internal */\nexport const enum Plane { // eslint-disable-line no-restricted-syntax\n kTop,\n kBottom,\n kLeft,\n kRight,\n}\n\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\n kNear,\n kFar,\n kType,\n}\n\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\n * @internal\n */\nexport class FrustumUniforms {\n // CPU state. Do not modify - use APIs.\n public readonly planFrustum = new Frustum();\n private _planFraction = 0;\n private readonly _nearPlaneCenter = new Point3d();\n public readonly viewMatrix = Transform.createIdentity();\n public readonly projectionMatrix = Matrix4d.createIdentity();\n private readonly _worldUpVector = Vector3d.unitZ();\n private readonly _viewUpVector = Vector3d.unitZ();\n\n // GPU state\n private readonly _planeData: Float32Array = new Float32Array(4);\n private readonly _frustumData: Float32Array = new Float32Array(3);\n public readonly projectionMatrix32 = new Matrix4();\n private readonly _logZData = new Float32Array(2);\n private readonly _viewUpVector32 = new Float32Array(3);\n\n // SyncTarget\n public syncKey = 0;\n\n // Scratch variables\n private readonly _scratch = {\n point3d: new Point3d(),\n vec3d: new Vector3d(),\n viewX: new Vector3d(),\n viewY: new Vector3d(),\n viewZ: new Vector3d(),\n };\n\n public constructor() {\n }\n\n public bindProjectionMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix4(this.projectionMatrix32);\n }\n\n public bindUpVector(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._viewUpVector32);\n }\n\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\n public get planes(): Float32Array { return this._planeData; }\n\n // uniform vec3 u_frustum; // { near, far, type }\n public get frustum(): Float32Array { return this._frustumData; }\n\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\n public get planFraction(): number { return this._planFraction; }\n\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\n public get logZ(): Float32Array { return this._logZData; }\n\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\n return;\n\n desync(this);\n\n newFrustum.clone(this.planFrustum);\n\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\n\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\n\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\n\n this._planFraction = newFraction;\n\n if (!is3d || newFraction > 0.999) { // ortho or 2d\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\n\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\n\n this._nearPlaneCenter.setFrom(nearLowerLeft);\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\n\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\n } else { // perspective\n const scale = 1.0 / (1.0 - newFraction);\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\n\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\n\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\n\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\n cameraPosition,\n viewX,\n viewY,\n viewZ,\n });\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\n type: FrustumUniformType.Perspective,\n left: frustumLeft,\n right: frustumRight,\n bottom: frustumBottom,\n top: frustumTop,\n front: frustumFront,\n back: frustumBack,\n });\n\n this._nearPlaneCenter.setFrom(nearLowerLeft);\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\n\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\n }\n\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\n\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\n this._viewUpVector.normalizeInPlace();\n this._viewUpVector32[0] = this._viewUpVector.x;\n this._viewUpVector32[1] = this._viewUpVector.y;\n this._viewUpVector32[2] = this._viewUpVector.z;\n\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\n }\n\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\n desync(this);\n this.projectionMatrix.setFrom(newMatrix);\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\n }\n\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\n this._planeData[Plane.kTop] = top;\n this._planeData[Plane.kBottom] = bottom;\n this._planeData[Plane.kLeft] = left;\n this._planeData[Plane.kRight] = right;\n }\n\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\n this._frustumData[FrustumData.kNear] = nearPlane;\n this._frustumData[FrustumData.kFar] = farPlane;\n this._frustumData[FrustumData.kType] = type as number;\n\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\n }\n}\n\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\n const result = undefined !== out ? out : new Vector3d();\n result.x = p0.x - p1.x;\n result.y = p0.y - p1.y;\n result.z = p0.z - p1.z;\n result.normalizeInPlace();\n return result;\n}\n\n/** @internal */\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\n const result = undefined !== out ? out : new Point3d();\n result.x = p.x + v.x * scale;\n result.y = p.y + v.y * scale;\n result.z = p.z + v.z * scale;\n return result;\n}\n\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\n}\n\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\n const rot = result.matrix.coffs;\n rot[0] = viewX.x;\n rot[1] = viewX.y;\n rot[2] = viewX.z;\n rot[3] = viewY.x;\n rot[4] = viewY.y;\n rot[5] = viewY.z;\n rot[6] = viewZ.x;\n rot[7] = viewZ.y;\n rot[8] = viewZ.z;\n\n result.origin.x = -viewX.dotProduct(eye);\n result.origin.y = -viewY.dotProduct(eye);\n result.origin.z = -viewZ.dotProduct(eye);\n}\n\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\n Matrix4d.createRowValues(\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\n 0.0, 0.0, 0.0, 1.0,\n result);\n}\n\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\n Matrix4d.createRowValues(\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\n 0.0, 0.0, -1.0, 0.0,\n result);\n}\n"]}
1
+ {"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { Frustum, Npc } from \"@itwin/core-common\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\nimport { Matrix4 } from \"./Matrix\";\nimport { desync, sync } from \"./Sync\";\n\n/** @internal */\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\n TwoDee,\n Orthographic,\n Perspective,\n}\n\n/** @internal */\nexport const enum Plane { // eslint-disable-line no-restricted-syntax\n kTop,\n kBottom,\n kLeft,\n kRight,\n}\n\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\n kNear,\n kFar,\n kType,\n}\n\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\n * @internal\n */\nexport class FrustumUniforms {\n // CPU state. Do not modify - use APIs.\n public readonly planFrustum = new Frustum();\n private _planFraction = 0;\n private readonly _nearPlaneCenter = new Point3d();\n public readonly viewMatrix = Transform.createIdentity();\n public readonly projectionMatrix = Matrix4d.createIdentity();\n private readonly _worldUpVector = Vector3d.unitZ();\n private readonly _viewUpVector = Vector3d.unitZ();\n\n // GPU state\n private readonly _planeData: Float32Array = new Float32Array(4);\n private readonly _frustumData: Float32Array = new Float32Array(3);\n private readonly _worldFrustumZRange: Float32Array = new Float32Array(2);\n public readonly projectionMatrix32 = new Matrix4();\n private readonly _logZData = new Float32Array(2);\n private readonly _viewUpVector32 = new Float32Array(3);\n\n // SyncTarget\n public syncKey = 0;\n\n // Scratch variables\n private readonly _scratch = {\n point3d: new Point3d(),\n vec3d: new Vector3d(),\n viewX: new Vector3d(),\n viewY: new Vector3d(),\n viewZ: new Vector3d(),\n range: new Range3d(),\n };\n\n public constructor() {\n }\n\n public bindProjectionMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix4(this.projectionMatrix32);\n }\n\n public bindUpVector(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform3fv(this._viewUpVector32);\n }\n\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\n public get planes(): Float32Array { return this._planeData; }\n\n // uniform vec3 u_frustum; // { near, far, type }\n public get frustum(): Float32Array { return this._frustumData; }\n\n // uniform vec2 u_worldFrustumZRange // { min, max }\n public get worldFrustumZRange(): Float32Array { return this._worldFrustumZRange; }\n\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\n public get planFraction(): number { return this._planFraction; }\n\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\n public get logZ(): Float32Array { return this._logZData; }\n\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\n return;\n\n desync(this);\n\n newFrustum.clone(this.planFrustum);\n\n const range = newFrustum.toRange(this._scratch.range);\n this._worldFrustumZRange[0] = range.low.z;\n this._worldFrustumZRange[1] = range.high.z;\n\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\n\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\n\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\n\n this._planFraction = newFraction;\n\n if (!is3d || newFraction > 0.999) { // ortho or 2d\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\n\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\n\n this._nearPlaneCenter.setFrom(nearLowerLeft);\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\n\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\n } else { // perspective\n const scale = 1.0 / (1.0 - newFraction);\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\n\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\n\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\n\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\n cameraPosition,\n viewX,\n viewY,\n viewZ,\n });\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\n type: FrustumUniformType.Perspective,\n left: frustumLeft,\n right: frustumRight,\n bottom: frustumBottom,\n top: frustumTop,\n front: frustumFront,\n back: frustumBack,\n });\n\n this._nearPlaneCenter.setFrom(nearLowerLeft);\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\n\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\n }\n\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\n\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\n this._viewUpVector.normalizeInPlace();\n this._viewUpVector32[0] = this._viewUpVector.x;\n this._viewUpVector32[1] = this._viewUpVector.y;\n this._viewUpVector32[2] = this._viewUpVector.z;\n\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\n }\n\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\n desync(this);\n this.projectionMatrix.setFrom(newMatrix);\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\n }\n\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\n this._planeData[Plane.kTop] = top;\n this._planeData[Plane.kBottom] = bottom;\n this._planeData[Plane.kLeft] = left;\n this._planeData[Plane.kRight] = right;\n }\n\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\n this._frustumData[FrustumData.kNear] = nearPlane;\n this._frustumData[FrustumData.kFar] = farPlane;\n this._frustumData[FrustumData.kType] = type as number;\n\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\n }\n}\n\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\n const result = undefined !== out ? out : new Vector3d();\n result.x = p0.x - p1.x;\n result.y = p0.y - p1.y;\n result.z = p0.z - p1.z;\n result.normalizeInPlace();\n return result;\n}\n\n/** @internal */\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\n const result = undefined !== out ? out : new Point3d();\n result.x = p.x + v.x * scale;\n result.y = p.y + v.y * scale;\n result.z = p.z + v.z * scale;\n return result;\n}\n\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\n}\n\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\n const rot = result.matrix.coffs;\n rot[0] = viewX.x;\n rot[1] = viewX.y;\n rot[2] = viewX.z;\n rot[3] = viewY.x;\n rot[4] = viewY.y;\n rot[5] = viewY.z;\n rot[6] = viewZ.x;\n rot[7] = viewZ.y;\n rot[8] = viewZ.z;\n\n result.origin.x = -viewX.dotProduct(eye);\n result.origin.y = -viewY.dotProduct(eye);\n result.origin.z = -viewZ.dotProduct(eye);\n}\n\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\n Matrix4d.createRowValues(\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\n 0.0, 0.0, 0.0, 1.0,\n result);\n}\n\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\n Matrix4d.createRowValues(\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\n 0.0, 0.0, -1.0, 0.0,\n result);\n}\n"]}
@@ -47,7 +47,6 @@ export interface LayerTileData {
47
47
  * @param prevView The previous view state.
48
48
  * @param newView The new view state.
49
49
  * @returns {boolean} True if there is any difference in the model layer configuration; false otherwise.
50
- * @internal
51
50
  */
52
51
  export declare function compareMapLayer(prevView: ViewState, newView: ViewState): boolean;
53
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerParams.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/MapLayerParams.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAmD,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,qBAAa,gBAAgB;IAE4B,UAAU,EAAE,yBAAyB;IAAS,eAAe,EAAE,OAAO;IADtH,UAAU,EAAE,gBAAgB,CAAC;gBACxB,UAAU,EAAE,sBAAsB,EAAS,UAAU,EAAE,yBAAyB,EAAS,eAAe,EAAE,OAAO;IAGtH,KAAK,CAAC,eAAe,EAAE,OAAO;CAGtC;AAMD,KAAK,yBAAyB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEnE,cAAM,iBAAkB,YAAW,UAAU;IACxB,OAAO,EAAE,aAAa,GAAG,SAAS;IAAE,OAAO,CAAC,yBAAyB;gBAArE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAU,yBAAyB,EAAE,gBAAgB,GAAG,OAAO;IACpH,IAAW,WAAW,YAAyE;IAExF,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAexB,mBAAmB,IAAI,QAAQ,GAAG,SAAS;IAG3C,gBAAgB,IAAI,OAAO,GAAG,SAAS;IAIvC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CA8C3C;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,UAAU;IAChC,MAAM,EAAE,iBAAiB,EAAE;gBAA3B,MAAM,EAAE,iBAAiB,EAAE;WAChC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,EAAE;IA6CnD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGhC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,SAAS,CAAC;CACpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CA8BhF"}
1
+ {"version":3,"file":"MapLayerParams.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/MapLayerParams.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAmD,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,qBAAa,gBAAgB;IAE4B,UAAU,EAAE,yBAAyB;IAAS,eAAe,EAAE,OAAO;IADtH,UAAU,EAAE,gBAAgB,CAAC;gBACxB,UAAU,EAAE,sBAAsB,EAAS,UAAU,EAAE,yBAAyB,EAAS,eAAe,EAAE,OAAO;IAGtH,KAAK,CAAC,eAAe,EAAE,OAAO;CAGtC;AAMD,KAAK,yBAAyB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEnE,cAAM,iBAAkB,YAAW,UAAU;IACxB,OAAO,EAAE,aAAa,GAAG,SAAS;IAAE,OAAO,CAAC,yBAAyB;gBAArE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAU,yBAAyB,EAAE,gBAAgB,GAAG,OAAO;IACpH,IAAW,WAAW,YAAyE;IAExF,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAexB,mBAAmB,IAAI,QAAQ,GAAG,SAAS;IAG3C,gBAAgB,IAAI,OAAO,GAAG,SAAS;IAIvC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CA8C3C;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,UAAU;IAChC,MAAM,EAAE,iBAAiB,EAAE;gBAA3B,MAAM,EAAE,iBAAiB,EAAE;WAChC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,EAAE;IA6CnD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAGhC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,SAAS,CAAC;CACpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAsBhF"}
@@ -168,30 +168,21 @@ exports.LayerTextureParams = LayerTextureParams;
168
168
  * @param prevView The previous view state.
169
169
  * @param newView The new view state.
170
170
  * @returns {boolean} True if there is any difference in the model layer configuration; false otherwise.
171
- * @internal
172
171
  */
173
172
  function compareMapLayer(prevView, newView) {
174
- const prevLayers = prevView.displayStyle.getMapLayers(false);
175
- const newLayers = newView.displayStyle.getMapLayers(false);
176
- const prevModelIds = [];
177
- const newModelIds = [];
178
- for (const layer of prevLayers) {
179
- if (layer instanceof core_common_1.ModelMapLayerSettings && layer.drapeTarget === core_common_1.ModelMapLayerDrapeTarget.RealityData) {
180
- prevModelIds.push(layer.modelId);
181
- }
182
- }
183
- for (const layer of newLayers) {
184
- if (layer instanceof core_common_1.ModelMapLayerSettings && layer.drapeTarget === core_common_1.ModelMapLayerDrapeTarget.RealityData) {
185
- newModelIds.push(layer.modelId);
186
- }
187
- }
188
- if (prevModelIds.length !== newModelIds.length) {
173
+ const getDrapedModelIds = (view) => view.displayStyle
174
+ .getMapLayers(false)
175
+ .filter((layer) => layer instanceof core_common_1.ModelMapLayerSettings &&
176
+ (layer.drapeTarget === core_common_1.ModelMapLayerDrapeTarget.RealityData ||
177
+ layer.drapeTarget === core_common_1.ModelMapLayerDrapeTarget.IModel))
178
+ .map(layer => layer.modelId);
179
+ const prev = getDrapedModelIds(prevView);
180
+ const next = getDrapedModelIds(newView);
181
+ if (prev.length !== next.length)
189
182
  return true;
190
- }
191
- for (let i = 0; i < prevModelIds.length; i++) {
192
- if (prevModelIds[i] !== newModelIds[i]) {
183
+ for (let i = 0; i < prev.length; i++) {
184
+ if (prev[i] !== next[i])
193
185
  return true;
194
- }
195
186
  }
196
187
  return false;
197
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerParams.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/MapLayerParams.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\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Matrix4d, Range2d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { TerrainTexture } from \"../RenderTerrain\";\nimport { Matrix4 } from \"./Matrix\";\nimport { ModelMapLayerDrapeTarget, ModelMapLayerSettings, RenderTexture } from \"@itwin/core-common\";\nimport { assert, dispose, disposeArray } from \"@itwin/core-bentley\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { System } from \"./System\";\nimport { ViewState } from \"../../../ViewState\";\n\nexport class ProjectedTexture {\n public classifier: PlanarClassifier;\n constructor(classifier: RenderPlanarClassifier, public meshParams: MeshMapLayerGraphicParams, public targetRectangle: Range2d) {\n this.classifier = classifier as PlanarClassifier;\n }\n public clone(targetRectangle: Range2d) {\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\n }\n}\n\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchRange2d = Range2d.createNull();\n\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\nclass LayerTextureParam implements Disposable {\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\n\n public [Symbol.dispose](): void {\n this.texture = dispose(this.texture);\n }\n\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\n public getProjectionMatrix(): Matrix4d | undefined {\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\n }\n public getTerrainMatrix(): Matrix4 | undefined {\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\n }\n\n public getParams(result: Matrix4): Matrix4 {\n /** Entry 0 is 0 for */\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\n const projectedTexture = this._projectedTextureOrMatrix;\n\n result.data[0] = 1;\n result.data[1] = projectedTexture.classifier.textureImageCount;\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\n result.data[4] = scratchBytes[0];\n result.data[5] = scratchBytes[1];\n result.data[6] = scratchBytes[2];\n result.data[7] = scratchBytes[3];\n\n const points = [];\n const meshParams = projectedTexture.meshParams;\n // Calculate range in the tiles local coordinates.\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\n for (let i = 0, j = 8; i < 4; i++) {\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\n result.data[j++] = projectedPoint.x;\n result.data[j++] = projectedPoint.y;\n }\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\n if (x0 * y1 - x1 * y0 < 0) {\n const swap = ((i: number, j: number) => {\n const temp = result.data[i];\n result.data[i] = result.data[j];\n result.data[j] = temp;\n });\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\n swap(i, j);\n swap(i + 1, j + 1);\n }\n }\n } else {\n result.data[0] = 0;\n }\n return result;\n }\n}\n\n/** @internal */\nexport class LayerTextureParams implements Disposable {\n constructor(public params: LayerTextureParam[]) { }\n public static create(textures: TerrainOrProjectedTexture[]) {\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\n assert(textures.length <= maxTexturesPerMesh);\n\n const textureParams = new Array<LayerTextureParam>();\n for (const texture of textures) {\n if (texture instanceof TerrainTexture) {\n const terrainTexture = texture;\n const matrix = new Matrix4(); // Published as Mat4.\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\n matrix.data[0] = terrainTexture.translate.x;\n matrix.data[1] = terrainTexture.translate.y;\n matrix.data[2] = terrainTexture.scale.x;\n matrix.data[3] = terrainTexture.scale.y;\n\n if (terrainTexture.clipRectangle) {\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\n } else {\n matrix.data[4] = matrix.data[5] = 0;\n matrix.data[6] = matrix.data[7] = 1;\n }\n matrix.data[8] = (1.0 - terrainTexture.transparency);\n matrix.data[9] = terrainTexture.featureId;\n textureParams.push(new LayerTextureParam(terrainTexture.texture, matrix));\n } else {\n const classifier = texture.classifier;\n textureParams.push(new LayerTextureParam(classifier.getOrCreateClassifierTexture(), texture));\n }\n }\n\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\n const matrix = new Matrix4();\n matrix.data[0] = matrix.data[1] = 0.0;\n matrix.data[2] = matrix.data[3] = 1.0;\n matrix.data[4] = matrix.data[5] = 1;\n matrix.data[6] = matrix.data[7] = -1;\n matrix.data[15] = 0; // Denotes a terrain texture.\n textureParams.push(new LayerTextureParam(undefined, matrix));\n }\n return new LayerTextureParams(textureParams);\n }\n\n public [Symbol.dispose](): void {\n disposeArray(this.params);\n }\n}\n\nexport interface LayerTileData {\n ecefTransform: Transform;\n range: Range3d;\n layerClassifiers?: Map<number, RenderPlanarClassifier> | undefined;\n}\n\n/**\n * Compares the map layers of two view states, ensuring both the number of layers\n * and their order remain unchanged.\n * Returns true if the map layers differ in count, order, or model IDs; otherwise, returns false.\n *\n * @param prevView The previous view state.\n * @param newView The new view state.\n * @returns {boolean} True if there is any difference in the model layer configuration; false otherwise.\n * @internal\n */\nexport function compareMapLayer(prevView: ViewState, newView: ViewState): boolean {\n const prevLayers = prevView.displayStyle.getMapLayers(false);\n const newLayers = newView.displayStyle.getMapLayers(false);\n\n const prevModelIds: string[] = [];\n const newModelIds: string[] = [];\n\n for (const layer of prevLayers) {\n if (layer instanceof ModelMapLayerSettings && layer.drapeTarget === ModelMapLayerDrapeTarget.RealityData) {\n prevModelIds.push(layer.modelId);\n }\n }\n\n for (const layer of newLayers) {\n if (layer instanceof ModelMapLayerSettings && layer.drapeTarget === ModelMapLayerDrapeTarget.RealityData) {\n newModelIds.push(layer.modelId);\n }\n }\n\n if (prevModelIds.length !== newModelIds.length) {\n return true;\n }\n\n for (let i = 0; i < prevModelIds.length; i++) {\n if (prevModelIds[i] !== newModelIds[i]) {\n return true;\n }\n }\n\n return false;\n}"]}
1
+ {"version":3,"file":"MapLayerParams.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/MapLayerParams.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\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Matrix4d, Range2d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { TerrainTexture } from \"../RenderTerrain\";\nimport { Matrix4 } from \"./Matrix\";\nimport { ModelMapLayerDrapeTarget, ModelMapLayerSettings, RenderTexture } from \"@itwin/core-common\";\nimport { assert, dispose, disposeArray } from \"@itwin/core-bentley\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { System } from \"./System\";\nimport { ViewState } from \"../../../ViewState\";\n\nexport class ProjectedTexture {\n public classifier: PlanarClassifier;\n constructor(classifier: RenderPlanarClassifier, public meshParams: MeshMapLayerGraphicParams, public targetRectangle: Range2d) {\n this.classifier = classifier as PlanarClassifier;\n }\n public clone(targetRectangle: Range2d) {\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\n }\n}\n\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchRange2d = Range2d.createNull();\n\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\nclass LayerTextureParam implements Disposable {\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\n\n public [Symbol.dispose](): void {\n this.texture = dispose(this.texture);\n }\n\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\n public getProjectionMatrix(): Matrix4d | undefined {\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\n }\n public getTerrainMatrix(): Matrix4 | undefined {\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\n }\n\n public getParams(result: Matrix4): Matrix4 {\n /** Entry 0 is 0 for */\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\n const projectedTexture = this._projectedTextureOrMatrix;\n\n result.data[0] = 1;\n result.data[1] = projectedTexture.classifier.textureImageCount;\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\n result.data[4] = scratchBytes[0];\n result.data[5] = scratchBytes[1];\n result.data[6] = scratchBytes[2];\n result.data[7] = scratchBytes[3];\n\n const points = [];\n const meshParams = projectedTexture.meshParams;\n // Calculate range in the tiles local coordinates.\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\n for (let i = 0, j = 8; i < 4; i++) {\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\n result.data[j++] = projectedPoint.x;\n result.data[j++] = projectedPoint.y;\n }\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\n if (x0 * y1 - x1 * y0 < 0) {\n const swap = ((i: number, j: number) => {\n const temp = result.data[i];\n result.data[i] = result.data[j];\n result.data[j] = temp;\n });\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\n swap(i, j);\n swap(i + 1, j + 1);\n }\n }\n } else {\n result.data[0] = 0;\n }\n return result;\n }\n}\n\n/** @internal */\nexport class LayerTextureParams implements Disposable {\n constructor(public params: LayerTextureParam[]) { }\n public static create(textures: TerrainOrProjectedTexture[]) {\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\n assert(textures.length <= maxTexturesPerMesh);\n\n const textureParams = new Array<LayerTextureParam>();\n for (const texture of textures) {\n if (texture instanceof TerrainTexture) {\n const terrainTexture = texture;\n const matrix = new Matrix4(); // Published as Mat4.\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\n matrix.data[0] = terrainTexture.translate.x;\n matrix.data[1] = terrainTexture.translate.y;\n matrix.data[2] = terrainTexture.scale.x;\n matrix.data[3] = terrainTexture.scale.y;\n\n if (terrainTexture.clipRectangle) {\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\n } else {\n matrix.data[4] = matrix.data[5] = 0;\n matrix.data[6] = matrix.data[7] = 1;\n }\n matrix.data[8] = (1.0 - terrainTexture.transparency);\n matrix.data[9] = terrainTexture.featureId;\n textureParams.push(new LayerTextureParam(terrainTexture.texture, matrix));\n } else {\n const classifier = texture.classifier;\n textureParams.push(new LayerTextureParam(classifier.getOrCreateClassifierTexture(), texture));\n }\n }\n\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\n const matrix = new Matrix4();\n matrix.data[0] = matrix.data[1] = 0.0;\n matrix.data[2] = matrix.data[3] = 1.0;\n matrix.data[4] = matrix.data[5] = 1;\n matrix.data[6] = matrix.data[7] = -1;\n matrix.data[15] = 0; // Denotes a terrain texture.\n textureParams.push(new LayerTextureParam(undefined, matrix));\n }\n return new LayerTextureParams(textureParams);\n }\n\n public [Symbol.dispose](): void {\n disposeArray(this.params);\n }\n}\n\nexport interface LayerTileData {\n ecefTransform: Transform;\n range: Range3d;\n layerClassifiers?: Map<number, RenderPlanarClassifier> | undefined;\n}\n\n/**\n * Compares the map layers of two view states, ensuring both the number of layers\n * and their order remain unchanged.\n * Returns true if the map layers differ in count, order, or model IDs; otherwise, returns false.\n *\n * @param prevView The previous view state.\n * @param newView The new view state.\n * @returns {boolean} True if there is any difference in the model layer configuration; false otherwise.\n */\nexport function compareMapLayer(prevView: ViewState, newView: ViewState): boolean {\n const getDrapedModelIds = (view: ViewState): string[] =>\n view.displayStyle\n .getMapLayers(false)\n .filter((layer): layer is ModelMapLayerSettings =>\n layer instanceof ModelMapLayerSettings &&\n (layer.drapeTarget === ModelMapLayerDrapeTarget.RealityData ||\n layer.drapeTarget === ModelMapLayerDrapeTarget.IModel))\n .map(layer => layer.modelId);\n\n const prev = getDrapedModelIds(prevView);\n const next = getDrapedModelIds(newView);\n\n if (prev.length !== next.length)\n return true;\n\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== next[i])\n return true;\n }\n\n return false;\n}"]}