@itwin/core-frontend 5.2.0-dev.1 → 5.2.0-dev.10

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 (616) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +2 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +4 -0
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +156 -14
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts.map +1 -1
  37. package/lib/cjs/IpcApp.js +1 -1
  38. package/lib/cjs/IpcApp.js.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js +2 -0
  41. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js +2 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/Marker.d.ts.map +1 -1
  46. package/lib/cjs/Marker.js +4 -3
  47. package/lib/cjs/Marker.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts.map +1 -1
  49. package/lib/cjs/ModelState.js +2 -2
  50. package/lib/cjs/ModelState.js.map +1 -1
  51. package/lib/cjs/NativeApp.d.ts.map +1 -1
  52. package/lib/cjs/NativeApp.js +5 -4
  53. package/lib/cjs/NativeApp.js.map +1 -1
  54. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  55. package/lib/cjs/NativeAppLogger.js +1 -0
  56. package/lib/cjs/NativeAppLogger.js.map +1 -1
  57. package/lib/cjs/PlanarClipMaskState.js +3 -3
  58. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  59. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  60. package/lib/cjs/SelectionSet.js +1 -0
  61. package/lib/cjs/SelectionSet.js.map +1 -1
  62. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  63. package/lib/cjs/SheetViewState.js +5 -5
  64. package/lib/cjs/SheetViewState.js.map +1 -1
  65. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  66. package/lib/cjs/SpatialViewState.js +1 -1
  67. package/lib/cjs/SpatialViewState.js.map +1 -1
  68. package/lib/cjs/Sprites.js +2 -2
  69. package/lib/cjs/Sprites.js.map +1 -1
  70. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  71. package/lib/cjs/TentativePoint.js +10 -9
  72. package/lib/cjs/TentativePoint.js.map +1 -1
  73. package/lib/cjs/ViewCreator2d.js +1 -1
  74. package/lib/cjs/ViewCreator2d.js.map +1 -1
  75. package/lib/cjs/ViewCreator3d.js +1 -1
  76. package/lib/cjs/ViewCreator3d.js.map +1 -1
  77. package/lib/cjs/ViewPose.d.ts.map +1 -1
  78. package/lib/cjs/ViewPose.js +4 -1
  79. package/lib/cjs/ViewPose.js.map +1 -1
  80. package/lib/cjs/ViewState.d.ts.map +1 -1
  81. package/lib/cjs/ViewState.js +17 -12
  82. package/lib/cjs/ViewState.js.map +1 -1
  83. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  84. package/lib/cjs/ViewingSpace.js +2 -0
  85. package/lib/cjs/ViewingSpace.js.map +1 -1
  86. package/lib/cjs/Viewport.d.ts.map +1 -1
  87. package/lib/cjs/Viewport.js +17 -10
  88. package/lib/cjs/Viewport.js.map +1 -1
  89. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  90. package/lib/cjs/common/ImageUtil.js +2 -1
  91. package/lib/cjs/common/ImageUtil.js.map +1 -1
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  93. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  94. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  96. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  97. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  98. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  99. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  101. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  102. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  103. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  104. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  105. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  106. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  107. package/lib/cjs/internal/ScriptUtils.js +1 -0
  108. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  110. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  111. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  114. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  116. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  117. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  118. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  119. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  120. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  123. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  125. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  127. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  128. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  129. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  130. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  133. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  135. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  137. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  138. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  139. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  140. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  141. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  143. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  145. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  148. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  150. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  151. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  152. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  153. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  154. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  155. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  156. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  157. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  160. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  162. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  165. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  166. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  167. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  168. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  170. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  172. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  174. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  175. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  177. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  178. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  180. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  182. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  184. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  185. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  188. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  190. package/lib/cjs/internal/render/webgl/System.js +1 -1
  191. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  192. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  193. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  194. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  196. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  197. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  199. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  200. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  207. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  208. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  212. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  213. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  214. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  215. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  217. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  219. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  221. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  222. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  223. package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
  224. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  225. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  226. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  227. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  228. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  229. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  230. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  231. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  232. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  233. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  234. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  235. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  236. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  237. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  238. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  239. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  240. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  241. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  242. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  243. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  244. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  245. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  246. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  247. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  248. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  249. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  250. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  251. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  252. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  253. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  254. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  255. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  257. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  258. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  259. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  260. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  261. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  262. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  263. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  264. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  265. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  266. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  267. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  268. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  269. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  270. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  271. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  272. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  273. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  274. package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -4
  275. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  276. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  277. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  278. package/lib/cjs/tile/GltfReader.js +54 -16
  279. package/lib/cjs/tile/GltfReader.js.map +1 -1
  280. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  281. package/lib/cjs/tile/RealityTile.js +2 -2
  282. package/lib/cjs/tile/RealityTile.js.map +1 -1
  283. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  284. package/lib/cjs/tile/RealityTileTree.js +5 -5
  285. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  286. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  287. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  288. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  289. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  290. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  291. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  292. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  293. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  294. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  295. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  296. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  297. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  298. package/lib/cjs/tile/map/MapTile.js +10 -8
  299. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  300. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  302. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  303. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  304. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  305. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  306. package/lib/cjs/tools/Tool.js +1 -1
  307. package/lib/cjs/tools/Tool.js.map +1 -1
  308. package/lib/esm/BackgroundMapGeometry.js +14 -14
  309. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  310. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  311. package/lib/esm/BriefcaseConnection.js +2 -2
  312. package/lib/esm/BriefcaseConnection.js.map +1 -1
  313. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  314. package/lib/esm/CheckpointConnection.js +4 -4
  315. package/lib/esm/CheckpointConnection.js.map +1 -1
  316. package/lib/esm/ContextRealityModelState.js.map +1 -1
  317. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  318. package/lib/esm/ElementLocateManager.js +8 -7
  319. package/lib/esm/ElementLocateManager.js.map +1 -1
  320. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  321. package/lib/esm/EmphasizeElements.js +3 -1
  322. package/lib/esm/EmphasizeElements.js.map +1 -1
  323. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  324. package/lib/esm/EnvironmentDecorations.js +4 -0
  325. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  326. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  327. package/lib/esm/FrustumAnimator.js +3 -2
  328. package/lib/esm/FrustumAnimator.js.map +1 -1
  329. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  330. package/lib/esm/GlobeAnimator.js +7 -6
  331. package/lib/esm/GlobeAnimator.js.map +1 -1
  332. package/lib/esm/HitDetail.d.ts.map +1 -1
  333. package/lib/esm/HitDetail.js +12 -7
  334. package/lib/esm/HitDetail.js.map +1 -1
  335. package/lib/esm/IModelApp.d.ts.map +1 -1
  336. package/lib/esm/IModelApp.js +4 -3
  337. package/lib/esm/IModelApp.js.map +1 -1
  338. package/lib/esm/IModelConnection.d.ts +4 -0
  339. package/lib/esm/IModelConnection.d.ts.map +1 -1
  340. package/lib/esm/IModelConnection.js +158 -16
  341. package/lib/esm/IModelConnection.js.map +1 -1
  342. package/lib/esm/IpcApp.d.ts.map +1 -1
  343. package/lib/esm/IpcApp.js +2 -2
  344. package/lib/esm/IpcApp.js.map +1 -1
  345. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  346. package/lib/esm/LinePlaneIntersect.js +2 -0
  347. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  348. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  349. package/lib/esm/LocalhostIpcApp.js +2 -1
  350. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  351. package/lib/esm/Marker.d.ts.map +1 -1
  352. package/lib/esm/Marker.js +5 -4
  353. package/lib/esm/Marker.js.map +1 -1
  354. package/lib/esm/ModelState.d.ts.map +1 -1
  355. package/lib/esm/ModelState.js +3 -3
  356. package/lib/esm/ModelState.js.map +1 -1
  357. package/lib/esm/NativeApp.d.ts.map +1 -1
  358. package/lib/esm/NativeApp.js +5 -4
  359. package/lib/esm/NativeApp.js.map +1 -1
  360. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  361. package/lib/esm/NativeAppLogger.js +1 -0
  362. package/lib/esm/NativeAppLogger.js.map +1 -1
  363. package/lib/esm/PlanarClipMaskState.js +3 -3
  364. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  365. package/lib/esm/SelectionSet.d.ts.map +1 -1
  366. package/lib/esm/SelectionSet.js +2 -1
  367. package/lib/esm/SelectionSet.js.map +1 -1
  368. package/lib/esm/SheetViewState.d.ts.map +1 -1
  369. package/lib/esm/SheetViewState.js +6 -6
  370. package/lib/esm/SheetViewState.js.map +1 -1
  371. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  372. package/lib/esm/SpatialViewState.js +2 -2
  373. package/lib/esm/SpatialViewState.js.map +1 -1
  374. package/lib/esm/Sprites.js +2 -2
  375. package/lib/esm/Sprites.js.map +1 -1
  376. package/lib/esm/TentativePoint.d.ts.map +1 -1
  377. package/lib/esm/TentativePoint.js +10 -9
  378. package/lib/esm/TentativePoint.js.map +1 -1
  379. package/lib/esm/ViewCreator2d.js +1 -1
  380. package/lib/esm/ViewCreator2d.js.map +1 -1
  381. package/lib/esm/ViewCreator3d.js +1 -1
  382. package/lib/esm/ViewCreator3d.js.map +1 -1
  383. package/lib/esm/ViewPose.d.ts.map +1 -1
  384. package/lib/esm/ViewPose.js +4 -1
  385. package/lib/esm/ViewPose.js.map +1 -1
  386. package/lib/esm/ViewState.d.ts.map +1 -1
  387. package/lib/esm/ViewState.js +18 -13
  388. package/lib/esm/ViewState.js.map +1 -1
  389. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  390. package/lib/esm/ViewingSpace.js +2 -0
  391. package/lib/esm/ViewingSpace.js.map +1 -1
  392. package/lib/esm/Viewport.d.ts.map +1 -1
  393. package/lib/esm/Viewport.js +18 -11
  394. package/lib/esm/Viewport.js.map +1 -1
  395. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  396. package/lib/esm/common/ImageUtil.js +2 -1
  397. package/lib/esm/common/ImageUtil.js.map +1 -1
  398. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  399. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  400. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  401. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  402. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  403. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  404. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  405. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  406. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  407. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  408. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  409. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  410. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  411. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  412. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  413. package/lib/esm/internal/ScriptUtils.js +1 -0
  414. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  415. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  416. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  417. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  418. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  419. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  420. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  421. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  422. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  423. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  424. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  425. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  426. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  427. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  428. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  429. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  430. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  431. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  432. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  433. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  434. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  435. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  436. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  437. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  438. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  439. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  441. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  442. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  443. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  445. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  446. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  447. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  449. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  451. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  452. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  453. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  454. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  455. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  456. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  457. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  458. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  459. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  460. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  461. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  462. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  463. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  464. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  465. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  466. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  467. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  468. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  470. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  471. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  472. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  473. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  474. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  476. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  478. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  479. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  480. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  481. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  482. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  483. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  484. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  485. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  486. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  488. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  489. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  490. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  491. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  492. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  493. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  494. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  495. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  496. package/lib/esm/internal/render/webgl/System.js +2 -2
  497. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  498. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  499. package/lib/esm/internal/render/webgl/Target.js +11 -8
  500. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  501. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  502. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  503. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  504. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  505. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  506. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  507. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  509. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  510. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  511. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  514. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  515. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  516. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  517. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  518. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  519. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  521. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  523. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  524. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  525. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  526. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  527. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  528. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  529. package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
  530. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  531. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  532. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  533. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  534. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  535. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  536. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  537. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  538. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  539. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  540. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  541. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  542. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  543. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  544. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  545. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  546. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  547. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  548. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  549. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  550. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  551. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  552. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  553. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  554. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  555. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  556. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  557. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  558. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  559. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  560. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  561. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  562. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  563. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  564. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  565. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  566. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  567. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  568. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  569. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  570. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  571. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  572. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  573. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  574. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  575. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  576. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  577. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  578. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  579. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  580. package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -4
  581. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  582. package/lib/esm/tile/GltfReader.d.ts +5 -2
  583. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  584. package/lib/esm/tile/GltfReader.js +55 -17
  585. package/lib/esm/tile/GltfReader.js.map +1 -1
  586. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  587. package/lib/esm/tile/RealityTile.js +3 -3
  588. package/lib/esm/tile/RealityTile.js.map +1 -1
  589. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  590. package/lib/esm/tile/RealityTileTree.js +6 -6
  591. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  592. package/lib/esm/tile/TileAdmin.js.map +1 -1
  593. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  594. package/lib/esm/tile/TileDrawArgs.js +2 -1
  595. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  596. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  597. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  598. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  599. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  600. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  601. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  602. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  603. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  604. package/lib/esm/tile/map/MapTile.js +11 -9
  605. package/lib/esm/tile/map/MapTile.js.map +1 -1
  606. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  607. package/lib/esm/tile/map/MapTileTree.js +9 -8
  608. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  609. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  610. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  611. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  612. package/lib/esm/tools/Tool.js +2 -2
  613. package/lib/esm/tools/Tool.js.map +1 -1
  614. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  615. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  616. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"VertexTableBuilder.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableBuilder.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 Rendering\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, Range2d } from \"@itwin/core-geometry\";\nimport {\n ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, FillFlags, QParams2d, QParams3d, QPoint2d, QPoint3dList,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"./AuxChannelTable\";\nimport { computeDimensions, VertexTable } from \"./VertexTable\";\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"./SurfaceParams\";\nimport { MeshParams } from \"./MeshParams\";\nimport { Point3dList } from \"./MeshPrimitive\";\nimport { VertexIndices } from \"./VertexIndices\";\nimport { createEdgeParams } from \"./EdgeParams\";\nimport { MeshArgs } from \"../../../render/MeshArgs\";\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\n\n/** @internal */\nexport function createMeshParams(args: MeshArgs, maxDimension: number, enableIndexedEdges: boolean): MeshParams {\n const builder = createMeshBuilder(args);\n const vertices = builder.build(args.colors, args.features, maxDimension);\n\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices);\n\n const surface: SurfaceParams = {\n type: builder.type,\n indices: surfaceIndices,\n fillFlags: args.fillFlags ?? FillFlags.ByView,\n hasBakedLighting: true === args.hasBakedLighting,\n textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,\n material: createSurfaceMaterial(args.material),\n };\n\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;\n const edges = createEdgeParams({ meshArgs: args, maxWidth: maxDimension, createIndexed: enableIndexedEdges });\n return {\n vertices,\n surface,\n edges,\n isPlanar: !!args.isPlanar,\n auxChannels: channels,\n };\n}\n\n/** Builds a VertexTable from some data type supplying the vertex data.\n * @internal\n */\nexport abstract class VertexTableBuilder {\n public data?: Uint8Array;\n private _curIndex: number = 0;\n\n public abstract get numVertices(): number;\n public abstract get numRgbaPerVertex(): number;\n public abstract get qparams(): QParams3d;\n public abstract get usesUnquantizedPositions(): boolean;\n public get uvParams(): QParams2d | undefined { return undefined; }\n public abstract appendVertex(vertIndex: number): void;\n\n public appendColorTable(colorIndex: ColorIndex) {\n if (undefined !== colorIndex.nonUniform) {\n for (const color of colorIndex.nonUniform.colors) {\n this.appendColor(color);\n }\n }\n }\n\n protected advance(nBytes: number) {\n this._curIndex += nBytes;\n assert(this._curIndex <= this.data!.length);\n }\n\n protected append8(val: number) {\n assert(0 <= val);\n assert(val <= 0xff);\n assert(val === Math.floor(val));\n\n this.data![this._curIndex] = val;\n this.advance(1);\n }\n protected append16(val: number) {\n this.append8(val & 0x00ff);\n this.append8(val >>> 8);\n }\n protected append32(val: number) {\n this.append16(val & 0x0000ffff);\n this.append16(val >>> 16);\n }\n\n private appendColor(tbgr: number) {\n const colors = ColorDef.getColors(tbgr);\n\n // invert transparency => alpha\n colors.t = 255 - colors.t;\n\n // premultiply alpha...\n switch (colors.t) {\n case 0:\n colors.r = colors.g = colors.b = 0;\n break;\n case 255:\n break;\n default: {\n const f = colors.t / 255.0;\n colors.r = Math.floor(colors.r * f + 0.5);\n colors.g = Math.floor(colors.g * f + 0.5);\n colors.b = Math.floor(colors.b * f + 0.5);\n break;\n }\n }\n\n // Store 32-bit value in little-endian order (red first)\n this.append8(colors.r);\n this.append8(colors.g);\n this.append8(colors.b);\n this.append8(colors.t);\n }\n\n public build(colorIndex: ColorIndex, featureIndex: FeatureIndex, maxDimension: number): VertexTable {\n const { numVertices, numRgbaPerVertex } = this;\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors, maxDimension);\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\n\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\n\n this.data = data;\n for (let i = 0; i < numVertices; i++)\n this.appendVertex(i);\n\n this.appendColorTable(colorIndex);\n\n this.data = undefined;\n\n return {\n data,\n qparams: this.qparams,\n usesUnquantizedPositions: this.usesUnquantizedPositions,\n width: dimensions.width,\n height: dimensions.height,\n hasTranslucency: colorIndex.hasAlpha,\n uniformColor: colorIndex.uniform,\n numVertices,\n numRgbaPerVertex,\n uvParams: this.uvParams,\n featureIndexType: featureIndex.type,\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\n };\n }\n\n public static buildFromPolylines(args: PolylineArgs, maxDimension: number): VertexTable | undefined {\n const polylines = args.polylines;\n if (polylines.length === 0)\n return undefined;\n\n const builder = createPolylineBuilder(args);\n return builder.build(args.colors, args.features, maxDimension);\n }\n}\n\ntype VertexData = PolylineArgs | MeshArgs;\ntype Quantized<T extends VertexData> = Omit<T, \"points\"> & { points: QPoint3dList };\ntype Unquantized<T extends VertexData> = Omit<T, \"points\"> & { points: Omit<Point3dList, \"add\"> };\n\nnamespace Quantized { // eslint-disable-line @typescript-eslint/no-redeclare\n /**\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\n * pos.x 00\n * pos.y 02\n * pos.z 04\n * colorIndex 06\n * featureIndex 08 (24 bits)\n * materialIndex 0B (for meshes that use a material atlas; otherwise unused). NOTE: Currently front-end code does not produce material atlases.\n */\n export class SimpleBuilder<T extends Quantized<VertexData>> extends VertexTableBuilder {\n public args: T;\n protected _qpoints: QPoint3dList;\n\n public constructor(args: T) {\n super();\n this._qpoints = args.points;\n this.args = args;\n assert(undefined !== this.args.points);\n }\n\n public get numVertices() { return this.args.points.length; }\n public get numRgbaPerVertex() { return 3; }\n public get usesUnquantizedPositions() { return false; }\n public get qparams() {\n return this._qpoints.params;\n }\n\n public appendVertex(vertIndex: number): void {\n this.appendPosition(vertIndex);\n this.appendColorIndex(vertIndex);\n this.appendFeatureIndex(vertIndex);\n }\n\n protected appendPosition(vertIndex: number) {\n this.append16(this._qpoints.list[vertIndex].x);\n this.append16(this._qpoints.list[vertIndex].y);\n this.append16(this._qpoints.list[vertIndex].z);\n }\n\n protected appendColorIndex(vertIndex: number) {\n if (undefined !== this.args.colors.nonUniform) {\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\n } else {\n this.advance(2);\n }\n }\n\n protected appendFeatureIndex(vertIndex: number) {\n if (undefined !== this.args.features.featureIDs) {\n this.append32(this.args.features.featureIDs[vertIndex]);\n } else {\n this.advance(4);\n }\n }\n }\n\n /** Supplies vertex data from a MeshArgs. */\n export class MeshBuilder extends SimpleBuilder<Quantized<MeshArgs>> {\n public readonly type: SurfaceType;\n\n protected constructor(args: Quantized<MeshArgs>, type: SurfaceType) {\n super(args);\n this.type = type;\n }\n\n public static create(args: Quantized<MeshArgs>): MeshBuilder {\n if (args.isVolumeClassifier)\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\n\n const isLit = undefined !== args.normals && 0 < args.normals.length;\n const isTextured = undefined !== args.textureMapping;\n\n let uvParams: QParams2d | undefined;\n\n if (args.textureMapping) {\n const uvRange = Range2d.createNull();\n const fpts = args.textureMapping.uvParams;\n const pt2d = new Point2d();\n if (undefined !== fpts && fpts.length > 0)\n for (let i = 0; i < args.points.length; i++)\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\n\n uvParams = QParams2d.fromRange(uvRange);\n }\n\n if (isLit)\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\n else\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\n }\n }\n\n /** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\n * The color index is left uninitialized as it is unused.\n */\n class TexturedMeshBuilder extends MeshBuilder {\n private _qparams: QParams2d;\n private _qpoint = new QPoint2d();\n\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\n super(args, type);\n this._qparams = qparams;\n assert(undefined !== args.textureMapping);\n }\n\n public override get numRgbaPerVertex() { return 4; }\n public override get uvParams() { return this._qparams; }\n\n public override appendVertex(vertIndex: number) {\n this.appendPosition(vertIndex);\n this.appendNormal(vertIndex);\n this.appendFeatureIndex(vertIndex);\n this.appendUVParams(vertIndex);\n }\n\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\n\n protected appendUVParams(vertIndex: number) {\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\n this.append16(this._qpoint.x);\n this.append16(this._qpoint.y);\n }\n }\n\n /** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d) {\n super(args, qparams, SurfaceType.TexturedLit);\n assert(undefined !== args.normals);\n }\n\n protected override appendNormal(vertIndex: number) { this.append16(this.args.normals![vertIndex].value); }\n }\n\n /** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\n class LitMeshBuilder extends MeshBuilder {\n public constructor(args: Quantized<MeshArgs>) {\n super(args, SurfaceType.Lit);\n assert(undefined !== args.normals);\n }\n\n public override get numRgbaPerVertex() { return 4; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(this.args.normals![vertIndex].value);\n this.advance(2); // 2 unused bytes\n }\n }\n}\n\n/** Builders in this namespace store vertex positions as 32-bit floats instead of quantizing to 16-bit unsigned integers.\n * This is preferred for decoration graphics, which might contain ranges of positions that exceed the limits for quantization; if quantized,\n * they could produce visual artifacts.\n * Each builder produces a VertexTable that starts with the following layout:\n * pos.x: 00\n * pos.y: 04\n * pos.z: 08\n * featureIndex: 0C\n * materialIndex:0F (NOTE: frontend code currently doesn't produce material atlases, so this is always zero).\n * Followed (by default) by:\n * colorIndex: 10\n * unused: 12\n * Subclasses may add 4 more bytes and/or overwrite the final 4 bytes above.\n */\nnamespace Unquantized { // eslint-disable-line @typescript-eslint/no-redeclare\n const u32Array = new Uint32Array(1);\n const f32Array = new Float32Array(u32Array.buffer);\n\n // colorIndex: 10\n // unused: 12\n export class SimpleBuilder<T extends Unquantized<VertexData>> extends VertexTableBuilder {\n public args: T;\n protected _points: Point3d[];\n private _qparams3d: QParams3d;\n\n public constructor(args: T) {\n super();\n assert(!(args.points instanceof QPoint3dList));\n this._qparams3d = QParams3d.fromRange(args.points.range);\n this.args = args;\n this._points = args.points;\n }\n\n public get numVertices() { return this._points.length; }\n public get numRgbaPerVertex() { return 5; }\n public get usesUnquantizedPositions() { return true; }\n public get qparams() { return this._qparams3d; }\n\n public appendVertex(vertIndex: number): void {\n this.appendTransposePosAndFeatureNdx(vertIndex);\n this.appendColorIndex(vertIndex);\n }\n\n private appendFloat32(val: number) {\n f32Array[0] = val;\n this.append32(u32Array[0]);\n }\n\n private convertFloat32(val: number): number {\n f32Array[0] = val;\n return u32Array[0];\n }\n\n protected appendTransposePosAndFeatureNdx(vertIndex: number) {\n // transpose position xyz vals into [0].xyz - [3].xyz, and add feature index at .w\n // this is to order things to let shader code access much more efficiently\n const pt = this._points[vertIndex];\n const x = this.convertFloat32 (pt.x);\n const y = this.convertFloat32 (pt.y);\n const z = this.convertFloat32 (pt.z);\n const featID = (this.args.features.featureIDs) ? this.args.features.featureIDs[vertIndex] : 0;\n this.append8(x & 0x000000ff);\n this.append8(y & 0x000000ff);\n this.append8(z & 0x000000ff);\n this.append8(featID & 0x000000ff);\n this.append8((x >>> 8) & 0x000000ff);\n this.append8((y >>> 8) & 0x000000ff);\n this.append8((z >>> 8) & 0x000000ff);\n this.append8((featID >>> 8) & 0x000000ff);\n this.append8((x >>> 16) & 0x000000ff);\n this.append8((y >>> 16) & 0x000000ff);\n this.append8((z >>> 16) & 0x000000ff);\n this.append8((featID >>> 16) & 0x000000ff);\n this.append8(x >>> 24);\n this.append8(y >>> 24);\n this.append8(z >>> 24);\n this.append8(featID >>> 24);\n }\n\n protected appendPosition(vertIndex: number) {\n const pt = this._points[vertIndex];\n this.appendFloat32(pt.x);\n this.appendFloat32(pt.y);\n this.appendFloat32(pt.z);\n }\n\n protected appendFeatureIndex(vertIndex: number) {\n if (this.args.features.featureIDs)\n this.append32(this.args.features.featureIDs[vertIndex]);\n else\n this.advance(4);\n }\n\n protected _appendColorIndex(vertIndex: number) {\n if (undefined !== this.args.colors.nonUniform)\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\n else\n this.advance(2);\n }\n\n protected appendColorIndex(vertIndex: number) {\n this._appendColorIndex(vertIndex);\n this.advance(2);\n }\n }\n\n export class MeshBuilder extends SimpleBuilder<Unquantized<MeshArgs>> {\n public readonly type: SurfaceType;\n\n protected constructor(args: Unquantized<MeshArgs>, type: SurfaceType) {\n super(args);\n this.type = type;\n }\n\n public static create(args: Unquantized<MeshArgs>): MeshBuilder {\n if (args.isVolumeClassifier)\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\n\n const isLit = undefined !== args.normals && 0 < args.normals.length;\n const isTextured = undefined !== args.textureMapping;\n\n let uvParams: QParams2d | undefined;\n\n if (args.textureMapping) {\n const uvRange = Range2d.createNull();\n const fpts = args.textureMapping.uvParams;\n const pt2d = new Point2d();\n if (undefined !== fpts && fpts.length > 0)\n for (let i = 0; i < args.points.length; i++)\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\n\n uvParams = QParams2d.fromRange(uvRange);\n }\n\n if (isLit)\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\n else\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\n }\n }\n\n // u: 10\n // v: 12\n class TexturedMeshBuilder extends MeshBuilder {\n private _qparams: QParams2d;\n private _qpoint = new QPoint2d();\n\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d, type = SurfaceType.Textured) {\n super(args, type);\n this._qparams = qparams;\n assert(undefined !== args.textureMapping);\n }\n\n public override get uvParams() { return this._qparams; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\n this.append16(this._qpoint.x);\n this.append16(this._qpoint.y);\n }\n\n protected override appendColorIndex() { }\n }\n\n // u: 10\n // v: 12\n // normal: 14\n // unused: 16\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d) {\n super(args, qparams, SurfaceType.TexturedLit);\n assert(undefined !== args.normals);\n }\n\n public override get numRgbaPerVertex() { return 6; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(this.args.normals![vertIndex].value);\n this.advance(2);\n }\n }\n\n // color: 10\n // normal: 12\n class LitMeshBuilder extends MeshBuilder {\n public constructor(args: Unquantized<MeshArgs>) {\n super(args, SurfaceType.Lit);\n assert(undefined !== args.normals);\n }\n\n protected override appendColorIndex(vertIndex: number) {\n super._appendColorIndex(vertIndex);\n }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(this.args.normals![vertIndex].value);\n }\n }\n}\n\nfunction createMeshBuilder(args: MeshArgs): VertexTableBuilder & { type: SurfaceType } {\n if (args.points instanceof QPoint3dList)\n return Quantized.MeshBuilder.create(args as Quantized<MeshArgs>);\n else\n return Unquantized.MeshBuilder.create(args as Unquantized<MeshArgs>);\n}\n\nfunction createPolylineBuilder(args: PolylineArgs): VertexTableBuilder {\n if (args.points instanceof QPoint3dList)\n return new Quantized.SimpleBuilder(args as Quantized<PolylineArgs>);\n else\n return new Unquantized.SimpleBuilder(args as Unquantized<PolylineArgs>);\n}\n"]}
1
+ {"version":3,"file":"VertexTableBuilder.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableBuilder.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 Rendering\n */\n\nimport { assert, expectDefined } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, Range2d } from \"@itwin/core-geometry\";\nimport {\n ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, FillFlags, QParams2d, QParams3d, QPoint2d, QPoint3dList,\n} from \"@itwin/core-common\";\nimport { AuxChannelTable } from \"./AuxChannelTable\";\nimport { computeDimensions, VertexTable } from \"./VertexTable\";\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"./SurfaceParams\";\nimport { MeshParams } from \"./MeshParams\";\nimport { Point3dList } from \"./MeshPrimitive\";\nimport { VertexIndices } from \"./VertexIndices\";\nimport { createEdgeParams } from \"./EdgeParams\";\nimport { MeshArgs } from \"../../../render/MeshArgs\";\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\n\n/** @internal */\nexport function createMeshParams(args: MeshArgs, maxDimension: number, enableIndexedEdges: boolean): MeshParams {\n const builder = createMeshBuilder(args);\n const vertices = builder.build(args.colors, args.features, maxDimension);\n\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices);\n\n const surface: SurfaceParams = {\n type: builder.type,\n indices: surfaceIndices,\n fillFlags: args.fillFlags ?? FillFlags.ByView,\n hasBakedLighting: true === args.hasBakedLighting,\n textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,\n material: createSurfaceMaterial(args.material),\n };\n\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;\n const edges = createEdgeParams({ meshArgs: args, maxWidth: maxDimension, createIndexed: enableIndexedEdges });\n return {\n vertices,\n surface,\n edges,\n isPlanar: !!args.isPlanar,\n auxChannels: channels,\n };\n}\n\n/** Builds a VertexTable from some data type supplying the vertex data.\n * @internal\n */\nexport abstract class VertexTableBuilder {\n public data?: Uint8Array;\n private _curIndex: number = 0;\n\n public abstract get numVertices(): number;\n public abstract get numRgbaPerVertex(): number;\n public abstract get qparams(): QParams3d;\n public abstract get usesUnquantizedPositions(): boolean;\n public get uvParams(): QParams2d | undefined { return undefined; }\n public abstract appendVertex(vertIndex: number): void;\n\n public appendColorTable(colorIndex: ColorIndex) {\n if (undefined !== colorIndex.nonUniform) {\n for (const color of colorIndex.nonUniform.colors) {\n this.appendColor(color);\n }\n }\n }\n\n protected advance(nBytes: number) {\n this._curIndex += nBytes;\n assert(undefined !== this.data);\n assert(this._curIndex <= this.data.length);\n }\n\n protected append8(val: number) {\n assert(0 <= val);\n assert(val <= 0xff);\n assert(val === Math.floor(val));\n\n expectDefined(this.data)[this._curIndex] = val;\n this.advance(1);\n }\n protected append16(val: number) {\n this.append8(val & 0x00ff);\n this.append8(val >>> 8);\n }\n protected append32(val: number) {\n this.append16(val & 0x0000ffff);\n this.append16(val >>> 16);\n }\n\n private appendColor(tbgr: number) {\n const colors = ColorDef.getColors(tbgr);\n\n // invert transparency => alpha\n colors.t = 255 - colors.t;\n\n // premultiply alpha...\n switch (colors.t) {\n case 0:\n colors.r = colors.g = colors.b = 0;\n break;\n case 255:\n break;\n default: {\n const f = colors.t / 255.0;\n colors.r = Math.floor(colors.r * f + 0.5);\n colors.g = Math.floor(colors.g * f + 0.5);\n colors.b = Math.floor(colors.b * f + 0.5);\n break;\n }\n }\n\n // Store 32-bit value in little-endian order (red first)\n this.append8(colors.r);\n this.append8(colors.g);\n this.append8(colors.b);\n this.append8(colors.t);\n }\n\n public build(colorIndex: ColorIndex, featureIndex: FeatureIndex, maxDimension: number): VertexTable {\n const { numVertices, numRgbaPerVertex } = this;\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors, maxDimension);\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\n\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\n\n this.data = data;\n for (let i = 0; i < numVertices; i++)\n this.appendVertex(i);\n\n this.appendColorTable(colorIndex);\n\n this.data = undefined;\n\n return {\n data,\n qparams: this.qparams,\n usesUnquantizedPositions: this.usesUnquantizedPositions,\n width: dimensions.width,\n height: dimensions.height,\n hasTranslucency: colorIndex.hasAlpha,\n uniformColor: colorIndex.uniform,\n numVertices,\n numRgbaPerVertex,\n uvParams: this.uvParams,\n featureIndexType: featureIndex.type,\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\n };\n }\n\n public static buildFromPolylines(args: PolylineArgs, maxDimension: number): VertexTable | undefined {\n const polylines = args.polylines;\n if (polylines.length === 0)\n return undefined;\n\n const builder = createPolylineBuilder(args);\n return builder.build(args.colors, args.features, maxDimension);\n }\n}\n\ntype VertexData = PolylineArgs | MeshArgs;\ntype Quantized<T extends VertexData> = Omit<T, \"points\"> & { points: QPoint3dList };\ntype Unquantized<T extends VertexData> = Omit<T, \"points\"> & { points: Omit<Point3dList, \"add\"> };\n\nnamespace Quantized { // eslint-disable-line @typescript-eslint/no-redeclare\n /**\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\n * pos.x 00\n * pos.y 02\n * pos.z 04\n * colorIndex 06\n * featureIndex 08 (24 bits)\n * materialIndex 0B (for meshes that use a material atlas; otherwise unused). NOTE: Currently front-end code does not produce material atlases.\n */\n export class SimpleBuilder<T extends Quantized<VertexData>> extends VertexTableBuilder {\n public args: T;\n protected _qpoints: QPoint3dList;\n\n public constructor(args: T) {\n super();\n this._qpoints = args.points;\n this.args = args;\n assert(undefined !== this.args.points);\n }\n\n public get numVertices() { return this.args.points.length; }\n public get numRgbaPerVertex() { return 3; }\n public get usesUnquantizedPositions() { return false; }\n public get qparams() {\n return this._qpoints.params;\n }\n\n public appendVertex(vertIndex: number): void {\n this.appendPosition(vertIndex);\n this.appendColorIndex(vertIndex);\n this.appendFeatureIndex(vertIndex);\n }\n\n protected appendPosition(vertIndex: number) {\n this.append16(this._qpoints.list[vertIndex].x);\n this.append16(this._qpoints.list[vertIndex].y);\n this.append16(this._qpoints.list[vertIndex].z);\n }\n\n protected appendColorIndex(vertIndex: number) {\n if (undefined !== this.args.colors.nonUniform) {\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\n } else {\n this.advance(2);\n }\n }\n\n protected appendFeatureIndex(vertIndex: number) {\n if (undefined !== this.args.features.featureIDs) {\n this.append32(this.args.features.featureIDs[vertIndex]);\n } else {\n this.advance(4);\n }\n }\n }\n\n /** Supplies vertex data from a MeshArgs. */\n export class MeshBuilder extends SimpleBuilder<Quantized<MeshArgs>> {\n public readonly type: SurfaceType;\n\n protected constructor(args: Quantized<MeshArgs>, type: SurfaceType) {\n super(args);\n this.type = type;\n }\n\n public static create(args: Quantized<MeshArgs>): MeshBuilder {\n if (args.isVolumeClassifier)\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\n\n const isLit = undefined !== args.normals && 0 < args.normals.length;\n const isTextured = undefined !== args.textureMapping;\n\n let uvParams: QParams2d | undefined;\n\n if (args.textureMapping) {\n const uvRange = Range2d.createNull();\n const fpts = args.textureMapping.uvParams;\n const pt2d = new Point2d();\n if (undefined !== fpts && fpts.length > 0)\n for (let i = 0; i < args.points.length; i++)\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\n\n uvParams = QParams2d.fromRange(uvRange);\n }\n\n if (isLit)\n // If isTextured is true, uvParams will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\n else\n // If isTextured is true, uvParams will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\n }\n }\n\n /** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\n * The color index is left uninitialized as it is unused.\n */\n class TexturedMeshBuilder extends MeshBuilder {\n private _qparams: QParams2d;\n private _qpoint = new QPoint2d();\n\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\n super(args, type);\n this._qparams = qparams;\n assert(undefined !== args.textureMapping);\n }\n\n public override get numRgbaPerVertex() { return 4; }\n public override get uvParams() { return this._qparams; }\n\n public override appendVertex(vertIndex: number) {\n this.appendPosition(vertIndex);\n this.appendNormal(vertIndex);\n this.appendFeatureIndex(vertIndex);\n this.appendUVParams(vertIndex);\n }\n\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\n\n protected appendUVParams(vertIndex: number) {\n this._qpoint.init(expectDefined(this.args.textureMapping).uvParams[vertIndex], this._qparams);\n this.append16(this._qpoint.x);\n this.append16(this._qpoint.y);\n }\n }\n\n /** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d) {\n super(args, qparams, SurfaceType.TexturedLit);\n assert(undefined !== args.normals);\n }\n\n protected override appendNormal(vertIndex: number) { this.append16(expectDefined(this.args.normals)[vertIndex].value); }\n }\n\n /** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\n class LitMeshBuilder extends MeshBuilder {\n public constructor(args: Quantized<MeshArgs>) {\n super(args, SurfaceType.Lit);\n assert(undefined !== args.normals);\n }\n\n public override get numRgbaPerVertex() { return 4; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(expectDefined(this.args.normals)[vertIndex].value);\n this.advance(2); // 2 unused bytes\n }\n }\n}\n\n/** Builders in this namespace store vertex positions as 32-bit floats instead of quantizing to 16-bit unsigned integers.\n * This is preferred for decoration graphics, which might contain ranges of positions that exceed the limits for quantization; if quantized,\n * they could produce visual artifacts.\n * Each builder produces a VertexTable that starts with the following layout:\n * pos.x: 00\n * pos.y: 04\n * pos.z: 08\n * featureIndex: 0C\n * materialIndex:0F (NOTE: frontend code currently doesn't produce material atlases, so this is always zero).\n * Followed (by default) by:\n * colorIndex: 10\n * unused: 12\n * Subclasses may add 4 more bytes and/or overwrite the final 4 bytes above.\n */\nnamespace Unquantized { // eslint-disable-line @typescript-eslint/no-redeclare\n const u32Array = new Uint32Array(1);\n const f32Array = new Float32Array(u32Array.buffer);\n\n // colorIndex: 10\n // unused: 12\n export class SimpleBuilder<T extends Unquantized<VertexData>> extends VertexTableBuilder {\n public args: T;\n protected _points: Point3d[];\n private _qparams3d: QParams3d;\n\n public constructor(args: T) {\n super();\n assert(!(args.points instanceof QPoint3dList));\n this._qparams3d = QParams3d.fromRange(args.points.range);\n this.args = args;\n this._points = args.points;\n }\n\n public get numVertices() { return this._points.length; }\n public get numRgbaPerVertex() { return 5; }\n public get usesUnquantizedPositions() { return true; }\n public get qparams() { return this._qparams3d; }\n\n public appendVertex(vertIndex: number): void {\n this.appendTransposePosAndFeatureNdx(vertIndex);\n this.appendColorIndex(vertIndex);\n }\n\n private appendFloat32(val: number) {\n f32Array[0] = val;\n this.append32(u32Array[0]);\n }\n\n private convertFloat32(val: number): number {\n f32Array[0] = val;\n return u32Array[0];\n }\n\n protected appendTransposePosAndFeatureNdx(vertIndex: number) {\n // transpose position xyz vals into [0].xyz - [3].xyz, and add feature index at .w\n // this is to order things to let shader code access much more efficiently\n const pt = this._points[vertIndex];\n const x = this.convertFloat32 (pt.x);\n const y = this.convertFloat32 (pt.y);\n const z = this.convertFloat32 (pt.z);\n const featID = (this.args.features.featureIDs) ? this.args.features.featureIDs[vertIndex] : 0;\n this.append8(x & 0x000000ff);\n this.append8(y & 0x000000ff);\n this.append8(z & 0x000000ff);\n this.append8(featID & 0x000000ff);\n this.append8((x >>> 8) & 0x000000ff);\n this.append8((y >>> 8) & 0x000000ff);\n this.append8((z >>> 8) & 0x000000ff);\n this.append8((featID >>> 8) & 0x000000ff);\n this.append8((x >>> 16) & 0x000000ff);\n this.append8((y >>> 16) & 0x000000ff);\n this.append8((z >>> 16) & 0x000000ff);\n this.append8((featID >>> 16) & 0x000000ff);\n this.append8(x >>> 24);\n this.append8(y >>> 24);\n this.append8(z >>> 24);\n this.append8(featID >>> 24);\n }\n\n protected appendPosition(vertIndex: number) {\n const pt = this._points[vertIndex];\n this.appendFloat32(pt.x);\n this.appendFloat32(pt.y);\n this.appendFloat32(pt.z);\n }\n\n protected appendFeatureIndex(vertIndex: number) {\n if (this.args.features.featureIDs)\n this.append32(this.args.features.featureIDs[vertIndex]);\n else\n this.advance(4);\n }\n\n protected _appendColorIndex(vertIndex: number) {\n if (undefined !== this.args.colors.nonUniform)\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\n else\n this.advance(2);\n }\n\n protected appendColorIndex(vertIndex: number) {\n this._appendColorIndex(vertIndex);\n this.advance(2);\n }\n }\n\n export class MeshBuilder extends SimpleBuilder<Unquantized<MeshArgs>> {\n public readonly type: SurfaceType;\n\n protected constructor(args: Unquantized<MeshArgs>, type: SurfaceType) {\n super(args);\n this.type = type;\n }\n\n public static create(args: Unquantized<MeshArgs>): MeshBuilder {\n if (args.isVolumeClassifier)\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\n\n const isLit = undefined !== args.normals && 0 < args.normals.length;\n const isTextured = undefined !== args.textureMapping;\n\n let uvParams: QParams2d | undefined;\n\n if (args.textureMapping) {\n const uvRange = Range2d.createNull();\n const fpts = args.textureMapping.uvParams;\n const pt2d = new Point2d();\n if (undefined !== fpts && fpts.length > 0)\n for (let i = 0; i < args.points.length; i++)\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\n\n uvParams = QParams2d.fromRange(uvRange);\n }\n\n if (isLit)\n // If isTextured is true, uvParams will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\n else\n // If isTextured is true, uvParams will always be defined.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\n }\n }\n\n // u: 10\n // v: 12\n class TexturedMeshBuilder extends MeshBuilder {\n private _qparams: QParams2d;\n private _qpoint = new QPoint2d();\n\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d, type = SurfaceType.Textured) {\n super(args, type);\n this._qparams = qparams;\n assert(undefined !== args.textureMapping);\n }\n\n public override get uvParams() { return this._qparams; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n\n this._qpoint.init(expectDefined(this.args.textureMapping).uvParams[vertIndex], this._qparams);\n this.append16(this._qpoint.x);\n this.append16(this._qpoint.y);\n }\n\n protected override appendColorIndex() { }\n }\n\n // u: 10\n // v: 12\n // normal: 14\n // unused: 16\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d) {\n super(args, qparams, SurfaceType.TexturedLit);\n assert(undefined !== args.normals);\n }\n\n public override get numRgbaPerVertex() { return 6; }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(expectDefined(this.args.normals)[vertIndex].value);\n this.advance(2);\n }\n }\n\n // color: 10\n // normal: 12\n class LitMeshBuilder extends MeshBuilder {\n public constructor(args: Unquantized<MeshArgs>) {\n super(args, SurfaceType.Lit);\n assert(undefined !== args.normals);\n }\n\n protected override appendColorIndex(vertIndex: number) {\n super._appendColorIndex(vertIndex);\n }\n\n public override appendVertex(vertIndex: number) {\n super.appendVertex(vertIndex);\n this.append16(expectDefined(this.args.normals)[vertIndex].value);\n }\n }\n}\n\nfunction createMeshBuilder(args: MeshArgs): VertexTableBuilder & { type: SurfaceType } {\n if (args.points instanceof QPoint3dList)\n return Quantized.MeshBuilder.create(args as Quantized<MeshArgs>);\n else\n return Unquantized.MeshBuilder.create(args as Unquantized<MeshArgs>);\n}\n\nfunction createPolylineBuilder(args: PolylineArgs): VertexTableBuilder {\n if (args.points instanceof QPoint3dList)\n return new Quantized.SimpleBuilder(args as Quantized<PolylineArgs>);\n else\n return new Unquantized.SimpleBuilder(args as Unquantized<PolylineArgs>);\n}\n"]}
@@ -48,7 +48,7 @@ export class ExtensionAdmin {
48
48
  provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises
49
49
  }
50
50
  catch (e) {
51
- throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : ""}: ${e}`);
51
+ throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : ""}: ${String(e)}`);
52
52
  }
53
53
  }
54
54
  /**
@@ -105,7 +105,7 @@ export class ExtensionAdmin {
105
105
  await extension.provider.execute();
106
106
  }
107
107
  catch (e) {
108
- Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${e}`);
108
+ Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${String(e)}`);
109
109
  }
110
110
  }
111
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionAdmin.js","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.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 Extensions\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\n\nimport { FrontendLoggerCategory } from \"../common/FrontendLoggerCategory\";\nimport type { ExtensionManifest, ExtensionProvider } from \"./Extension\";\n\n/** The Extensions loading system has the following goals:\n * 1. Only fetch what is needed when it is required\n * 1. Load a manifest file\n * 2. Load the the main module when necessary (usually at an activation event)\n * 2. Download the extension's files\n *\n * 3 ways to load an Extension into the system:\n *\n * 1. Load both the Extension Manifest and import the main module of the extension from a local file/package.\n * 2. A minimum set of properties to get the manifest and javascript from a remote server.\n * 3. A minimum set of properties to get the manifest and javascript from Bentley's Extension Service.\n *\n * An Extension must be added to ExtensionAdmin before it can be executed during activation events.\n */\n\n/**\n * A \"ready to use\" Extension (contains a manifest object and an extension provider to help execute).\n * Will be used as the type for in-memory extensions in the ExtensionAdmin\n */\ninterface InstalledExtension {\n /** An extension provider that has been added to ExtensionAdmin */\n provider: ExtensionProvider;\n /** The manifest (package.json) of the extension */\n manifest: ExtensionManifest;\n}\n\n/** The Extension Admin controls the list of currently loaded Extensions.\n *\n * @alpha\n */\nexport class ExtensionAdmin {\n /** Defines the set of extensions that are currently known and can be invoked during activation events. */\n private _extensions: Map<string, InstalledExtension> = new Map<string, InstalledExtension>();\n private _hosts: string[];\n\n /** Fired when an Extension has been added or removed.\n * @internal\n */\n public onStartup = async () => {\n await this.activateExtensionEvents(\"onStartup\");\n };\n\n public constructor() {\n this._hosts = [];\n }\n\n /**\n * Adds an extension.\n * The manifest will be fetched and the extension will be activated on an activation event.\n * @param provider\n * @alpha\n */\n public async addExtension(provider: ExtensionProvider): Promise<void> {\n if (provider.hostname) {\n const hostName = provider.hostname;\n if (this._hosts.length > 0 && this._hosts.indexOf(hostName) < 0) {\n throw new Error(`Error loading extension: ${hostName} was not registered.`);\n }\n }\n try {\n const manifest = await provider.getManifest();\n this._extensions.set(manifest.name, {\n manifest,\n provider,\n });\n // TODO - temporary fix to execute the missed startup event\n if (manifest.activationEvents.includes(\"onStartup\"))\n provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises\n } catch (e) {\n throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : \"\"}: ${e}`);\n }\n }\n\n /**\n * Adds a list of extensions\n * @param providers\n * @alpha\n */\n public async addExtensions(providers: ExtensionProvider[]): Promise<void[]> {\n return Promise.all(\n providers.map(async (provider) => this.addExtension(provider)),\n );\n }\n\n /**\n * Registers a hostname for an extension.\n * Once a hostname has been registered, only remote extensions from registered hosts are permitted to be added.\n * @param hostUrl (string) Accepts both URLs and hostnames (e.g., http://localhost:3000, yourdomain.com, https://www.yourdomain.com, etc.).\n */\n public registerHost(hostUrl: string) {\n const hostname = this.getHostName(hostUrl);\n if (this._hosts.indexOf(hostname) < 0) {\n this._hosts.push(hostname);\n }\n }\n\n /** Returns the hostname of an input string. Throws an error if input is not a valid hostname (or URL). */\n private getHostName(inputUrl: string): string {\n // inputs without a protocol (e.g., http://) will throw an error in URL constructor\n const inputWithProtocol = /(http|https):\\/\\//.test(inputUrl) ?\n inputUrl :\n `https://${inputUrl}`;\n try {\n const hostname = new URL(inputWithProtocol).hostname.replace(\"www.\", \"\");\n return hostname;\n } catch (e) {\n if (e instanceof TypeError) {\n throw new Error(\"Argument hostUrl should be a valid URL or hostname (i.e. http://localhost:3000, yourdomain.com, etc.).\");\n }\n throw e;\n }\n }\n\n /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */\n private async activateExtensionEvents(event: string) {\n for (const extension of this._extensions.values()) {\n if (!extension.manifest.activationEvents)\n continue;\n\n for (const activationEvent of extension.manifest.activationEvents) {\n if (activationEvent === event) {\n this._execute(extension); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n }\n }\n\n /** Executes the extension. Catches and logs any errors (so that an extension will not crash the main application). */\n private async _execute(extension: InstalledExtension) {\n try {\n await extension.provider.execute();\n } catch (e) {\n Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${e}`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ExtensionAdmin.js","sourceRoot":"","sources":["../../../src/extension/ExtensionAdmin.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 Extensions\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\n\nimport { FrontendLoggerCategory } from \"../common/FrontendLoggerCategory\";\nimport type { ExtensionManifest, ExtensionProvider } from \"./Extension\";\n\n/** The Extensions loading system has the following goals:\n * 1. Only fetch what is needed when it is required\n * 1. Load a manifest file\n * 2. Load the the main module when necessary (usually at an activation event)\n * 2. Download the extension's files\n *\n * 3 ways to load an Extension into the system:\n *\n * 1. Load both the Extension Manifest and import the main module of the extension from a local file/package.\n * 2. A minimum set of properties to get the manifest and javascript from a remote server.\n * 3. A minimum set of properties to get the manifest and javascript from Bentley's Extension Service.\n *\n * An Extension must be added to ExtensionAdmin before it can be executed during activation events.\n */\n\n/**\n * A \"ready to use\" Extension (contains a manifest object and an extension provider to help execute).\n * Will be used as the type for in-memory extensions in the ExtensionAdmin\n */\ninterface InstalledExtension {\n /** An extension provider that has been added to ExtensionAdmin */\n provider: ExtensionProvider;\n /** The manifest (package.json) of the extension */\n manifest: ExtensionManifest;\n}\n\n/** The Extension Admin controls the list of currently loaded Extensions.\n *\n * @alpha\n */\nexport class ExtensionAdmin {\n /** Defines the set of extensions that are currently known and can be invoked during activation events. */\n private _extensions: Map<string, InstalledExtension> = new Map<string, InstalledExtension>();\n private _hosts: string[];\n\n /** Fired when an Extension has been added or removed.\n * @internal\n */\n public onStartup = async () => {\n await this.activateExtensionEvents(\"onStartup\");\n };\n\n public constructor() {\n this._hosts = [];\n }\n\n /**\n * Adds an extension.\n * The manifest will be fetched and the extension will be activated on an activation event.\n * @param provider\n * @alpha\n */\n public async addExtension(provider: ExtensionProvider): Promise<void> {\n if (provider.hostname) {\n const hostName = provider.hostname;\n if (this._hosts.length > 0 && this._hosts.indexOf(hostName) < 0) {\n throw new Error(`Error loading extension: ${hostName} was not registered.`);\n }\n }\n try {\n const manifest = await provider.getManifest();\n this._extensions.set(manifest.name, {\n manifest,\n provider,\n });\n // TODO - temporary fix to execute the missed startup event\n if (manifest.activationEvents.includes(\"onStartup\"))\n provider.execute(); // eslint-disable-line @typescript-eslint/no-floating-promises\n } catch (e) {\n throw new Error(`Failed to get extension manifest ${provider.hostname ? `at ${provider.hostname}` : \"\"}: ${String(e)}`);\n }\n }\n\n /**\n * Adds a list of extensions\n * @param providers\n * @alpha\n */\n public async addExtensions(providers: ExtensionProvider[]): Promise<void[]> {\n return Promise.all(\n providers.map(async (provider) => this.addExtension(provider)),\n );\n }\n\n /**\n * Registers a hostname for an extension.\n * Once a hostname has been registered, only remote extensions from registered hosts are permitted to be added.\n * @param hostUrl (string) Accepts both URLs and hostnames (e.g., http://localhost:3000, yourdomain.com, https://www.yourdomain.com, etc.).\n */\n public registerHost(hostUrl: string) {\n const hostname = this.getHostName(hostUrl);\n if (this._hosts.indexOf(hostname) < 0) {\n this._hosts.push(hostname);\n }\n }\n\n /** Returns the hostname of an input string. Throws an error if input is not a valid hostname (or URL). */\n private getHostName(inputUrl: string): string {\n // inputs without a protocol (e.g., http://) will throw an error in URL constructor\n const inputWithProtocol = /(http|https):\\/\\//.test(inputUrl) ?\n inputUrl :\n `https://${inputUrl}`;\n try {\n const hostname = new URL(inputWithProtocol).hostname.replace(\"www.\", \"\");\n return hostname;\n } catch (e) {\n if (e instanceof TypeError) {\n throw new Error(\"Argument hostUrl should be a valid URL or hostname (i.e. http://localhost:3000, yourdomain.com, etc.).\");\n }\n throw e;\n }\n }\n\n /** Loops over all enabled Extensions and triggers each one if the provided event is defined. */\n private async activateExtensionEvents(event: string) {\n for (const extension of this._extensions.values()) {\n if (!extension.manifest.activationEvents)\n continue;\n\n for (const activationEvent of extension.manifest.activationEvents) {\n if (activationEvent === event) {\n this._execute(extension); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n }\n }\n\n /** Executes the extension. Catches and logs any errors (so that an extension will not crash the main application). */\n private async _execute(extension: InstalledExtension) {\n try {\n await extension.provider.execute();\n } catch (e) {\n Logger.logError(FrontendLoggerCategory.Extensions, `Error executing extension ${extension.manifest.name}: ${String(e)}`);\n }\n }\n}\n"]}
@@ -47,7 +47,7 @@ export class LogoDecoration {
47
47
  * @see [[CanvasDecoration.drawDecoration]]
48
48
  */
49
49
  drawDecoration(ctx) {
50
- if (this.isLoaded) {
50
+ if (this.isLoaded && this._sprite?.image !== undefined) {
51
51
  // Draw image with an origin at the top left corner
52
52
  ctx.drawImage(this._sprite.image, 0, 0);
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleMapsDecorator.js","sourceRoot":"","sources":["../../../src/internal/GoogleMapsDecorator.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\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { CanvasDecoration } from \"../render/CanvasDecoration\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { IModelApp } from \"../IModelApp\";\nimport { Decorator } from \"../ViewManager\";\nimport { IconSprites, Sprite } from \"../Sprites\";\nimport { RealityTile } from \"../tile/internal\";\nimport { ScreenViewport } from \"../Viewport\";\n\n/** Layer types that can be added to the map.\n * @internal\n */\ntype GoogleMapsMapTypes = \"roadmap\" | \"satellite\" | \"terrain\";\n\n/** A simple decorator that shows the logo at a given screen position.\n * @internal\n */\nexport class LogoDecoration implements CanvasDecoration {\n private _sprite?: Sprite;\n\n /** The current position of the logo in view coordinates. */\n public readonly position = new Point3d();\n\n private _offset: Point3d | undefined;\n\n public set offset(offset: Point3d | undefined) {\n this._offset = offset;\n }\n\n /** The logo offset in view coordinates.*/\n public get offset() {\n return this._offset;\n }\n\n /** Move the logo to the lower left corner of the screen. */\n public moveToLowerLeftCorner(context: DecorateContext): boolean {\n if (!this._sprite || !this._sprite.isLoaded)\n return false;\n\n this.position.x = this._offset?.x ?? 0;\n this.position.y = context.viewport.parentDiv.clientHeight - this._sprite.size.y;\n if (this._offset?.y)\n this.position.y -= this._offset.y;\n return true;\n }\n\n /* TODO: Add other move methods as needed */\n\n /** Indicate if the logo is loaded and ready to be drawn. */\n public get isLoaded() { return this._sprite?.isLoaded ?? false; }\n\n public async activate(sprite: Sprite): Promise<boolean> {\n this._sprite = sprite;\n return new Promise<boolean>((resolve, _reject) => {\n sprite.loadPromise.then(() => {\n resolve(true);\n }).catch(() => {\n resolve (false);\n });\n });\n }\n\n /** Draw this sprite onto the supplied canvas.\n * @see [[CanvasDecoration.drawDecoration]]\n */\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\n if (this.isLoaded) {\n // Draw image with an origin at the top left corner\n ctx.drawImage(this._sprite!.image!, 0, 0);\n }\n }\n\n public decorate(context: DecorateContext) {\n context.addCanvasDecoration(this);\n }\n}\n\n/** A decorator that adds the Google Maps logo to the lower left corner of the screen.\n * @internal\n */\nexport class GoogleMapsDecorator implements Decorator {\n public readonly logo = new LogoDecoration();\n private _showCreditsOnScreen?: boolean;\n\n /** Create a new GoogleMapsDecorator.\n * @param showCreditsOnScreen If true, the data attributions/copyrights from the Google Photorealistic 3D Tiles will be displayed on screen. The Google Maps logo will always be displayed.\n */\n constructor(showCreditsOnScreen?: boolean) {\n this._showCreditsOnScreen = showCreditsOnScreen;\n }\n\n /** Activate the logo based on the given map type. */\n public async activate(mapType: GoogleMapsMapTypes): Promise<boolean> {\n // Pick the logo that is the most visible on the background map\n const imageName = mapType === \"roadmap\" ?\n \"google_on_white\" :\n \"google_on_non_white\";\n\n // We need to move the logo right after the 'i.js' button\n this.logo.offset = new Point3d(45, 10);\n\n return this.logo.activate(IconSprites.getSpriteFromUrl(`${IModelApp.publicPath}images/${imageName}.png`));\n };\n\n /** Decorate implementation */\n public decorate = (context: DecorateContext) => {\n if (!this.logo.isLoaded)\n return;\n this.logo.moveToLowerLeftCorner(context);\n this.logo.decorate(context);\n\n if (!this._showCreditsOnScreen)\n return;\n\n // Get data attribution (copyright) text\n const copyrightMap = getCopyrights(context.viewport);\n // Order by most occurances to least\n // See https://developers.google.com/maps/documentation/tile/create-renderer#display-attributions\n const sortedCopyrights = [...copyrightMap.entries()].sort((a, b) => b[1] - a[1]);\n const copyrightText = sortedCopyrights.map(([key]) => ` • ${key}`).join(\"\");\n\n // Create and add element, offset to leave space for i.js and Google logos\n const elem = document.createElement(\"div\");\n elem.innerHTML = copyrightText;\n elem.style.color = \"white\";\n elem.style.fontSize = \"11px\";\n elem.style.textWrap = \"wrap\";\n elem.style.position = \"absolute\";\n elem.style.bottom = \"10px\";\n elem.style.left = \"107px\";\n\n context.addHtmlDecoration(elem);\n };\n}\n\n/** Get copyrights from tiles currently in the viewport.\n * @internal\n */\nexport function getCopyrights(vp: ScreenViewport): Map<string, number> {\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\n const copyrightMap = new Map<string, number>();\n if (tiles) {\n for (const tile of tiles as Set<RealityTile>) {\n if (tile.copyright) {\n for (const copyright of tile.copyright.split(\";\")) {\n const currentCount = copyrightMap.get(copyright);\n copyrightMap.set(copyright, currentCount ? currentCount + 1 : 1);\n }\n }\n }\n }\n return copyrightMap;\n}"]}
1
+ {"version":3,"file":"GoogleMapsDecorator.js","sourceRoot":"","sources":["../../../src/internal/GoogleMapsDecorator.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\nimport { Point3d } from \"@itwin/core-geometry\";\nimport { CanvasDecoration } from \"../render/CanvasDecoration\";\nimport { DecorateContext } from \"../ViewContext\";\nimport { IModelApp } from \"../IModelApp\";\nimport { Decorator } from \"../ViewManager\";\nimport { IconSprites, Sprite } from \"../Sprites\";\nimport { RealityTile } from \"../tile/internal\";\nimport { ScreenViewport } from \"../Viewport\";\n\n/** Layer types that can be added to the map.\n * @internal\n */\ntype GoogleMapsMapTypes = \"roadmap\" | \"satellite\" | \"terrain\";\n\n/** A simple decorator that shows the logo at a given screen position.\n * @internal\n */\nexport class LogoDecoration implements CanvasDecoration {\n private _sprite?: Sprite;\n\n /** The current position of the logo in view coordinates. */\n public readonly position = new Point3d();\n\n private _offset: Point3d | undefined;\n\n public set offset(offset: Point3d | undefined) {\n this._offset = offset;\n }\n\n /** The logo offset in view coordinates.*/\n public get offset() {\n return this._offset;\n }\n\n /** Move the logo to the lower left corner of the screen. */\n public moveToLowerLeftCorner(context: DecorateContext): boolean {\n if (!this._sprite || !this._sprite.isLoaded)\n return false;\n\n this.position.x = this._offset?.x ?? 0;\n this.position.y = context.viewport.parentDiv.clientHeight - this._sprite.size.y;\n if (this._offset?.y)\n this.position.y -= this._offset.y;\n return true;\n }\n\n /* TODO: Add other move methods as needed */\n\n /** Indicate if the logo is loaded and ready to be drawn. */\n public get isLoaded() { return this._sprite?.isLoaded ?? false; }\n\n public async activate(sprite: Sprite): Promise<boolean> {\n this._sprite = sprite;\n return new Promise<boolean>((resolve, _reject) => {\n sprite.loadPromise.then(() => {\n resolve(true);\n }).catch(() => {\n resolve (false);\n });\n });\n }\n\n /** Draw this sprite onto the supplied canvas.\n * @see [[CanvasDecoration.drawDecoration]]\n */\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\n if (this.isLoaded && this._sprite?.image !== undefined) {\n // Draw image with an origin at the top left corner\n ctx.drawImage(this._sprite.image, 0, 0);\n }\n }\n\n public decorate(context: DecorateContext) {\n context.addCanvasDecoration(this);\n }\n}\n\n/** A decorator that adds the Google Maps logo to the lower left corner of the screen.\n * @internal\n */\nexport class GoogleMapsDecorator implements Decorator {\n public readonly logo = new LogoDecoration();\n private _showCreditsOnScreen?: boolean;\n\n /** Create a new GoogleMapsDecorator.\n * @param showCreditsOnScreen If true, the data attributions/copyrights from the Google Photorealistic 3D Tiles will be displayed on screen. The Google Maps logo will always be displayed.\n */\n constructor(showCreditsOnScreen?: boolean) {\n this._showCreditsOnScreen = showCreditsOnScreen;\n }\n\n /** Activate the logo based on the given map type. */\n public async activate(mapType: GoogleMapsMapTypes): Promise<boolean> {\n // Pick the logo that is the most visible on the background map\n const imageName = mapType === \"roadmap\" ?\n \"google_on_white\" :\n \"google_on_non_white\";\n\n // We need to move the logo right after the 'i.js' button\n this.logo.offset = new Point3d(45, 10);\n\n return this.logo.activate(IconSprites.getSpriteFromUrl(`${IModelApp.publicPath}images/${imageName}.png`));\n };\n\n /** Decorate implementation */\n public decorate = (context: DecorateContext) => {\n if (!this.logo.isLoaded)\n return;\n this.logo.moveToLowerLeftCorner(context);\n this.logo.decorate(context);\n\n if (!this._showCreditsOnScreen)\n return;\n\n // Get data attribution (copyright) text\n const copyrightMap = getCopyrights(context.viewport);\n // Order by most occurances to least\n // See https://developers.google.com/maps/documentation/tile/create-renderer#display-attributions\n const sortedCopyrights = [...copyrightMap.entries()].sort((a, b) => b[1] - a[1]);\n const copyrightText = sortedCopyrights.map(([key]) => ` • ${key}`).join(\"\");\n\n // Create and add element, offset to leave space for i.js and Google logos\n const elem = document.createElement(\"div\");\n elem.innerHTML = copyrightText;\n elem.style.color = \"white\";\n elem.style.fontSize = \"11px\";\n elem.style.textWrap = \"wrap\";\n elem.style.position = \"absolute\";\n elem.style.bottom = \"10px\";\n elem.style.left = \"107px\";\n\n context.addHtmlDecoration(elem);\n };\n}\n\n/** Get copyrights from tiles currently in the viewport.\n * @internal\n */\nexport function getCopyrights(vp: ScreenViewport): Map<string, number> {\n const tiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\n const copyrightMap = new Map<string, number>();\n if (tiles) {\n for (const tile of tiles as Set<RealityTile>) {\n if (tile.copyright) {\n for (const copyright of tile.copyright.split(\";\")) {\n const currentCount = copyrightMap.get(copyright);\n copyrightMap.set(copyright, currentCount ? currentCount + 1 : 1);\n }\n }\n }\n }\n return copyrightMap;\n}"]}
@@ -86,6 +86,7 @@ function isTimelineEntryEqual(a, b) {
86
86
  const c2 = b.getColor(t);
87
87
  if ((c1 === undefined) !== (c2 === undefined))
88
88
  return false;
89
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
89
90
  if (c1 !== undefined && !c1.equals(c2))
90
91
  return false;
91
92
  // Cutting Plane (CLIPPING)
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptUtils.js","sourceRoot":"","sources":["../../../src/internal/ScriptUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Id64String } from \"@itwin/core-bentley\";\nimport { RenderSchedule } from \"@itwin/core-common\";\n\n/** @internal */\nexport function getScriptDelta(prev: RenderSchedule.Script | undefined | null, next: RenderSchedule.Script): Set<Id64String> {\n if (!prev || !prev.modelTimelines || prev.modelTimelines.length === 0) {\n return getAllElementIdsFromScript(next);\n }\n\n const changed = new Set<Id64String>();\n\n const prevModels = new Map(prev.modelTimelines.map(m => [m.modelId, m]));\n const nextModels = new Map(next.modelTimelines.map(m => [m.modelId, m]));\n\n for (const modelId of new Set([...prevModels.keys(), ...nextModels.keys()])) {\n const prevModel = prevModels.get(modelId);\n const nextModel = nextModels.get(modelId);\n\n if (!prevModel || !nextModel) {\n const timelines = (prevModel ?? nextModel)?.elementTimelines ?? [];\n for (const timeline of timelines)\n for (const id of timeline.elementIds)\n changed.add(id);\n continue;\n }\n\n const prevTimelineMap = new Map(prevModel.elementTimelines.map(et => [et.batchId, et]));\n const nextTimelineMap = new Map(nextModel.elementTimelines.map(et => [et.batchId, et]));\n\n const allBatchIds = new Set([...prevTimelineMap.keys(), ...nextTimelineMap.keys()]);\n for (const batchId of allBatchIds) {\n const prevTimeline = prevTimelineMap.get(batchId);\n const nextTimeline = nextTimelineMap.get(batchId);\n\n if (!prevTimeline || !nextTimeline) {\n const ids = (prevTimeline ?? nextTimeline)?.elementIds ?? [];\n for (const id of ids)\n changed.add(id);\n continue;\n }\n\n if (!isTimelineEntryEqual(prevTimeline, nextTimeline)) {\n for (const id of nextTimeline.elementIds)\n changed.add(id);\n }\n }\n }\n return changed;\n}\n\nfunction collectTimelineEntryTimes(timeline: RenderSchedule.ElementTimeline): number[] {\n const result = new Set<number>();\n\n if (timeline.cuttingPlane) {\n for (const entry of timeline.cuttingPlane) {\n result.add(entry.time);\n }\n }\n if (timeline.visibility) {\n for (const entry of timeline.visibility) {\n result.add(entry.time);\n }\n }\n if (timeline.transform) {\n for (const entry of timeline.transform) {\n result.add(entry.time);\n }\n }\n if (timeline.color) {\n for (const entry of timeline.color) {\n result.add(entry.time);\n }\n }\n return Array.from(result);\n}\n\nfunction isTimelineEntryEqual(a: RenderSchedule.ElementTimeline, b: RenderSchedule.ElementTimeline): boolean {\n const timesSet = new Set<number>([\n ...collectTimelineEntryTimes(a),\n ...collectTimelineEntryTimes(b),\n ]);\n let times = Array.from(timesSet).sort((x, y) => x - y);\n if (times.length === 0) {\n times = [0, 0.25, 0.5, 0.75, 1];\n }\n\n for (const [] of a.elementIds) {\n for (const t of times) {\n // Check visibility\n const v1 = a.getVisibility(t);\n const v2 = b.getVisibility(t);\n if (Math.abs(v1 - v2) > 0.01) return false;\n\n // Check Transform\n const tf1 = a.getAnimationTransform(t);\n const tf2 = b.getAnimationTransform(t);\n if (!tf1.isAlmostEqual(tf2)) return false;\n\n // Check Color\n const c1 = a.getColor(t);\n const c2 = b.getColor(t);\n if ((c1 === undefined) !== (c2 === undefined))\n return false;\n\n if (c1 !== undefined && !c1.equals(c2!))\n return false;\n\n // Cutting Plane (CLIPPING)\n const clip1 = a.getCuttingPlane?.(t);\n const clip2 = b.getCuttingPlane?.(t);\n\n const oneUndefined = (clip1 === undefined) !== (clip2 === undefined);\n\n if (oneUndefined) return false;\n if (clip1 && clip2) {\n if (\n !clip1.getOriginRef().isAlmostEqual(clip2.getOriginRef(), 1e-6) ||\n !clip1.getNormalRef().isAlmostEqual(clip2.getNormalRef(), 1e-6)\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n\nfunction getAllElementIdsFromScript(script: RenderSchedule.Script): Set<Id64String> {\n const ids = new Set<Id64String>();\n for (const modelTimeline of script.modelTimelines) {\n for (const elementTimeline of modelTimeline.elementTimelines) {\n for (const id of elementTimeline.elementIds)\n ids.add(id);\n }\n }\n return ids;\n}"]}
1
+ {"version":3,"file":"ScriptUtils.js","sourceRoot":"","sources":["../../../src/internal/ScriptUtils.ts"],"names":[],"mappings":"AAGA,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,IAA8C,EAAE,IAA2B;IACxG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IAEtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,KAAK,MAAM,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,gBAAgB,IAAI,EAAE,CAAC;YACnE,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAC9B,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,UAAU;oBAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAExF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;gBAC7D,KAAK,MAAM,EAAE,IAAI,GAAG;oBAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;gBACtD,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,UAAU;oBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAwC;IACzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAiC,EAAE,CAAiC;IAChG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS;QAC/B,GAAG,yBAAyB,CAAC,CAAC,CAAC;QAC/B,GAAG,yBAAyB,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,mBAAmB;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;gBAAE,OAAO,KAAK,CAAC;YAE3C,kBAAkB;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE1C,cAAc;YACd,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC;gBAC3C,OAAO,KAAK,CAAC;YAEf,oEAAoE;YACpE,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAG,CAAC;gBACrC,OAAO,KAAK,CAAC;YAEf,2BAA2B;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YAErE,IAAI,YAAY;gBAAE,OAAO,KAAK,CAAC;YAC/B,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,IACE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC;oBAC/D,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,EAC/D,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,MAA6B;IAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAc,CAAC;IAClC,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClD,KAAK,MAAM,eAAe,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;YAC7D,KAAK,MAAM,EAAE,IAAI,eAAe,CAAC,UAAU;gBACzC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { Id64String } from \"@itwin/core-bentley\";\nimport { RenderSchedule } from \"@itwin/core-common\";\n\n/** @internal */\nexport function getScriptDelta(prev: RenderSchedule.Script | undefined | null, next: RenderSchedule.Script): Set<Id64String> {\n if (!prev || !prev.modelTimelines || prev.modelTimelines.length === 0) {\n return getAllElementIdsFromScript(next);\n }\n\n const changed = new Set<Id64String>();\n\n const prevModels = new Map(prev.modelTimelines.map(m => [m.modelId, m]));\n const nextModels = new Map(next.modelTimelines.map(m => [m.modelId, m]));\n\n for (const modelId of new Set([...prevModels.keys(), ...nextModels.keys()])) {\n const prevModel = prevModels.get(modelId);\n const nextModel = nextModels.get(modelId);\n\n if (!prevModel || !nextModel) {\n const timelines = (prevModel ?? nextModel)?.elementTimelines ?? [];\n for (const timeline of timelines)\n for (const id of timeline.elementIds)\n changed.add(id);\n continue;\n }\n\n const prevTimelineMap = new Map(prevModel.elementTimelines.map(et => [et.batchId, et]));\n const nextTimelineMap = new Map(nextModel.elementTimelines.map(et => [et.batchId, et]));\n\n const allBatchIds = new Set([...prevTimelineMap.keys(), ...nextTimelineMap.keys()]);\n for (const batchId of allBatchIds) {\n const prevTimeline = prevTimelineMap.get(batchId);\n const nextTimeline = nextTimelineMap.get(batchId);\n\n if (!prevTimeline || !nextTimeline) {\n const ids = (prevTimeline ?? nextTimeline)?.elementIds ?? [];\n for (const id of ids)\n changed.add(id);\n continue;\n }\n\n if (!isTimelineEntryEqual(prevTimeline, nextTimeline)) {\n for (const id of nextTimeline.elementIds)\n changed.add(id);\n }\n }\n }\n return changed;\n}\n\nfunction collectTimelineEntryTimes(timeline: RenderSchedule.ElementTimeline): number[] {\n const result = new Set<number>();\n\n if (timeline.cuttingPlane) {\n for (const entry of timeline.cuttingPlane) {\n result.add(entry.time);\n }\n }\n if (timeline.visibility) {\n for (const entry of timeline.visibility) {\n result.add(entry.time);\n }\n }\n if (timeline.transform) {\n for (const entry of timeline.transform) {\n result.add(entry.time);\n }\n }\n if (timeline.color) {\n for (const entry of timeline.color) {\n result.add(entry.time);\n }\n }\n return Array.from(result);\n}\n\nfunction isTimelineEntryEqual(a: RenderSchedule.ElementTimeline, b: RenderSchedule.ElementTimeline): boolean {\n const timesSet = new Set<number>([\n ...collectTimelineEntryTimes(a),\n ...collectTimelineEntryTimes(b),\n ]);\n let times = Array.from(timesSet).sort((x, y) => x - y);\n if (times.length === 0) {\n times = [0, 0.25, 0.5, 0.75, 1];\n }\n\n for (const [] of a.elementIds) {\n for (const t of times) {\n // Check visibility\n const v1 = a.getVisibility(t);\n const v2 = b.getVisibility(t);\n if (Math.abs(v1 - v2) > 0.01) return false;\n\n // Check Transform\n const tf1 = a.getAnimationTransform(t);\n const tf2 = b.getAnimationTransform(t);\n if (!tf1.isAlmostEqual(tf2)) return false;\n\n // Check Color\n const c1 = a.getColor(t);\n const c2 = b.getColor(t);\n if ((c1 === undefined) !== (c2 === undefined))\n return false;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (c1 !== undefined && !c1.equals(c2!))\n return false;\n\n // Cutting Plane (CLIPPING)\n const clip1 = a.getCuttingPlane?.(t);\n const clip2 = b.getCuttingPlane?.(t);\n\n const oneUndefined = (clip1 === undefined) !== (clip2 === undefined);\n\n if (oneUndefined) return false;\n if (clip1 && clip2) {\n if (\n !clip1.getOriginRef().isAlmostEqual(clip2.getOriginRef(), 1e-6) ||\n !clip1.getNormalRef().isAlmostEqual(clip2.getNormalRef(), 1e-6)\n ) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n\nfunction getAllElementIdsFromScript(script: RenderSchedule.Script): Set<Id64String> {\n const ids = new Set<Id64String>();\n for (const modelTimeline of script.modelTimelines) {\n for (const elementTimeline of modelTimeline.elementTimelines) {\n for (const id of elementTimeline.elementIds)\n ids.add(id);\n }\n }\n return ids;\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UpsampleRealityMeshParams.d.ts","sourceRoot":"","sources":["../../../../src/internal/render/UpsampleRealityMeshParams.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,OAAO,EAAE,OAAO,EACjB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,iBAAiB,EAA4B,MAAM,gCAAgC,CAAC;AAiB7F,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAMD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,0BAA0B,CAqFvH"}
1
+ {"version":3,"file":"UpsampleRealityMeshParams.d.ts","sourceRoot":"","sources":["../../../../src/internal/render/UpsampleRealityMeshParams.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,OAAO,EAAE,OAAO,EACjB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,iBAAiB,EAA4B,MAAM,gCAAgC,CAAC;AAkB7F,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAMD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,0BAA0B,CAqFvH"}
@@ -8,6 +8,7 @@
8
8
  import { Range1d, Range2d, Vector3d, } from "@itwin/core-geometry";
9
9
  import { OctEncodedNormal, QParams2d, QPoint2d, QPoint3d, Quantization, } from "@itwin/core-common";
10
10
  import { RealityMeshParamsBuilder } from "../../render/RealityMeshParams";
11
+ import { expectDefined } from "@itwin/core-bentley";
11
12
  class UpsampleIndexMap extends Map {
12
13
  _next = 0;
13
14
  indices = new Array();
@@ -189,7 +190,7 @@ function addClipped(params, triangleIndices, indexMap, clipAxes, clipIndex, adde
189
190
  addedPoints.push(interpolateQPoint3d(getPoint(index, scratchQPoint3d), getPoint(nextIndex, scratchQPoint3d1), fraction));
190
191
  addedParams.push(interpolateQPoint2d(getParam(index, scratchQPoint2d), getParam(nextIndex, scratchQPoint2d1), fraction));
191
192
  if (parentNormals)
192
- addedNormals.push(interpolateOctEncodedNormal(getNormal(index), getNormal(nextIndex), fraction));
193
+ addedNormals.push(interpolateOctEncodedNormal(expectDefined(getNormal(index)), expectDefined(getNormal(nextIndex)), fraction));
193
194
  }
194
195
  }
195
196
  if (clipOutput.length > 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"UpsampleRealityMeshParams.js","sourceRoot":"","sources":["../../../../src/internal/render/UpsampleRealityMeshParams.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 Rendering\n */\n\nimport {\n Range1d, Range2d, Vector3d,\n} from \"@itwin/core-geometry\";\nimport {\n OctEncodedNormal, QParams2d, QPoint2d, QPoint3d, Quantization,\n} from \"@itwin/core-common\";\nimport { RealityMeshParams, RealityMeshParamsBuilder } from \"../../render/RealityMeshParams\";\n\nclass UpsampleIndexMap extends Map<number, number> {\n private _next = 0;\n public indices = new Array<number>();\n\n public addTriangle(indices: number[]) {\n for (const index of indices) {\n let mapIndex = this.get(index);\n if (undefined === mapIndex)\n this.set(index, mapIndex = this._next++);\n\n this.indices.push(mapIndex);\n }\n }\n}\n\nexport interface UpsampledRealityMeshParams {\n heightRange: Range1d;\n mesh: RealityMeshParams;\n}\n\nclass ClipAxis {\n constructor(public vertical: boolean, public lessThan: boolean, public value: number) { }\n}\n\nexport function upsampleRealityMeshParams(params: RealityMeshParams, uvSampleRange: Range2d): UpsampledRealityMeshParams {\n const indexMap = new UpsampleIndexMap();\n const uvParams = QParams2d.fromZeroToOne();\n const uvLow = QPoint2d.create(uvSampleRange.low, uvParams);\n const uvHigh = QPoint2d.create(uvSampleRange.high, uvParams);\n const uvRange = Range2d.createXYXY(uvLow.x, uvLow.y, uvHigh.x, uvHigh.y);\n\n const clipAxes = new Array<ClipAxis>();\n const addedPoints = new Array<QPoint3d>(), addedParams = new Array<QPoint2d>(), addedNormals = new Array<number>();\n if (uvLow.x > 0)\n clipAxes.push(new ClipAxis(true, false, uvLow.x));\n if (uvHigh.x < Quantization.rangeScale16)\n clipAxes.push(new ClipAxis(true, true, uvHigh.x));\n if (uvLow.y > 0)\n clipAxes.push(new ClipAxis(false, false, uvLow.y));\n if (uvHigh.y < Quantization.rangeScale16)\n clipAxes.push(new ClipAxis(false, true, uvHigh.y));\n\n const triangleRange = Range2d.createNull();\n for (let i = 0; i < params.indices.length;) {\n const triangleIndices = [params.indices[i++], params.indices[i++], params.indices[i++]];\n\n Range2d.createNull(triangleRange);\n for (const index of triangleIndices) {\n const paramIndex = 2 * index;\n triangleRange.extendXY(params.uvs.points[paramIndex], params.uvs.points[paramIndex + 1]);\n }\n\n if (uvRange.intersectsRange(triangleRange)) {\n if (uvRange.containsRange(triangleRange)) {\n indexMap.addTriangle(triangleIndices);\n } else {\n addClipped(params, triangleIndices, indexMap, clipAxes, 0, addedPoints, addedParams, addedNormals);\n }\n }\n }\n\n const parentPoints = params.positions;\n const parentParams = params.uvs;\n const parentNormals = params.normals;\n const parentPointCount = parentPoints.points.length / 3;\n\n const zRange = Range1d.createNull();\n const builder = new RealityMeshParamsBuilder({\n positionRange: parentPoints.params.computeRange(),\n initialVertexCapacity: indexMap.size,\n initialIndexCapacity: indexMap.indices.length,\n wantNormals: parentNormals !== undefined,\n });\n\n const pos = new QPoint3d();\n const uv = new QPoint2d();\n for (const entry of indexMap.entries()) {\n const parentIndex = entry[0];\n let normal: number | undefined;\n if (parentIndex < parentPointCount) {\n const pointIndex = 3 * parentIndex;\n pos.setFromScalars(parentPoints.points[pointIndex], parentPoints.points[pointIndex + 1], parentPoints.points[pointIndex + 2]);\n const paramIndex = 2 * parentIndex;\n uv.setFromScalars(parentParams.points[paramIndex], parentParams.points[paramIndex + 1]);\n if (parentNormals)\n normal = parentNormals[parentIndex];\n } else {\n const addedIndex = parentIndex - parentPointCount;\n addedPoints[addedIndex].clone(pos);\n addedParams[addedIndex].clone(uv);\n if (addedNormals.length > 0)\n normal = addedNormals[addedIndex];\n }\n\n builder.addQuantizedVertex(pos, uv, normal);\n zRange.extendX(pos.z);\n }\n\n builder.addIndices(indexMap.indices);\n\n const mesh = builder.finish();\n const qParams = mesh.positions.params;\n return {\n mesh: builder.finish(),\n heightRange: Range1d.createXX(\n Quantization.unquantize(zRange.low, qParams.origin.z, qParams.scale.z),\n Quantization.unquantize(zRange.high, qParams.origin.z, qParams.scale.z),\n ),\n };\n}\n\nfunction interpolate(value0: number, value1: number, fraction: number) {\n return value0 + (value1 - value0) * fraction;\n}\n\nfunction interpolateInt(value0: number, value1: number, fraction: number) {\n return Math.floor(.5 + interpolate(value0, value1, fraction));\n}\n\nfunction interpolateQPoint3d(qPoint: QPoint3d, qNext: QPoint3d, fraction: number): QPoint3d {\n return QPoint3d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction), interpolateInt(qPoint.z, qNext.z, fraction));\n}\n\nfunction interpolateQPoint2d(qPoint: QPoint2d, qNext: QPoint2d, fraction: number): QPoint2d {\n return QPoint2d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction));\n}\n\nfunction interpolateOctEncodedNormal(normal0: number, normal1: number, fraction: number): number {\n const n0 = OctEncodedNormal.decodeValue(normal0);\n const n1 = OctEncodedNormal.decodeValue(normal1);\n if (undefined !== n0 && undefined !== n1) {\n const n = Vector3d.create(interpolate(n0.x, n1.x, fraction), interpolate(n0.y, n1.y, fraction), interpolate(n0.z, n1.z, fraction));\n n.normalizeInPlace();\n return OctEncodedNormal.encode(n);\n } else {\n return OctEncodedNormal.encode(Vector3d.create(0, 0, 1));\n }\n}\n\nfunction addClipped(params: RealityMeshParams, triangleIndices: number[], indexMap: UpsampleIndexMap, clipAxes: ClipAxis[], clipIndex: number, addedPoints: QPoint3d[], addedParams: QPoint2d[], addedNormals: number[]) {\n if (clipIndex === clipAxes.length) {\n indexMap.addTriangle(triangleIndices);\n return;\n }\n\n const inside = [false, false, false];\n const values = [0, 0, 0];\n const clipOutput: number[] = [];\n\n const parentPoints = params.positions.points;\n const parentParams = params.uvs.points;\n const parentNormals = params.normals;\n\n const clipAxis = clipAxes[clipIndex++];\n const clipValue = clipAxis.value;\n\n const parentPointCount = parentPoints.length / 3;\n const scratchQPoint3d = new QPoint3d(), scratchQPoint3d1 = new QPoint3d();\n const scratchQPoint2d = new QPoint2d(), scratchQPoint2d1 = new QPoint2d();\n\n const getPoint = (index: number, result: QPoint3d): QPoint3d => {\n if (index < parentPointCount) {\n const pointIndex = index * 3;\n result.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\n } else {\n addedPoints[index - parentPointCount].clone(result);\n }\n\n return result;\n };\n\n const getParam = (index: number, result: QPoint2d): QPoint2d => {\n if (index < parentPointCount) {\n const pointIndex = index * 2;\n result.setFromScalars(parentParams[pointIndex], parentParams[pointIndex + 1]);\n } else {\n addedParams[index - parentPointCount].clone(result);\n }\n return result;\n };\n\n const getNormal = (index: number): number | undefined => {\n if (!parentNormals)\n return undefined;\n\n return (index < parentPointCount) ? parentNormals[index] : addedNormals[index - parentPointCount];\n };\n\n for (let i = 0; i < 3; i++) {\n const index = triangleIndices[i];\n const thisParam = getParam(index, scratchQPoint2d);\n const thisValue = clipAxis.vertical ? thisParam.x : thisParam.y;\n values[i] = thisValue;\n inside[i] = clipAxis.lessThan ? (thisValue < clipValue) : (thisValue > clipValue);\n }\n\n for (let i = 0; i < 3; i++) {\n const index = triangleIndices[i];\n const next = (i + 1) % 3;\n if (inside[i])\n clipOutput.push(index);\n if (inside[i] !== inside[next]) {\n const nextIndex = triangleIndices[next];\n const fraction = (clipValue - values[i]) / (values[next] - values[i]);\n\n clipOutput.push(parentPointCount + addedPoints.length);\n addedPoints.push(interpolateQPoint3d(getPoint(index, scratchQPoint3d), getPoint(nextIndex, scratchQPoint3d1), fraction));\n addedParams.push(interpolateQPoint2d(getParam(index, scratchQPoint2d), getParam(nextIndex, scratchQPoint2d1), fraction));\n if (parentNormals)\n addedNormals.push(interpolateOctEncodedNormal(getNormal(index)!, getNormal(nextIndex)!, fraction));\n\n }\n }\n\n if (clipOutput.length > 2) {\n addClipped(params, clipOutput.slice(0, 3), indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\n if (clipOutput.length > 3)\n addClipped(params, [clipOutput[0], clipOutput[2], clipOutput[3]], indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\n }\n}\n\n"]}
1
+ {"version":3,"file":"UpsampleRealityMeshParams.js","sourceRoot":"","sources":["../../../../src/internal/render/UpsampleRealityMeshParams.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 Rendering\n */\n\nimport {\n Range1d, Range2d, Vector3d,\n} from \"@itwin/core-geometry\";\nimport {\n OctEncodedNormal, QParams2d, QPoint2d, QPoint3d, Quantization,\n} from \"@itwin/core-common\";\nimport { RealityMeshParams, RealityMeshParamsBuilder } from \"../../render/RealityMeshParams\";\nimport { expectDefined } from \"@itwin/core-bentley\";\n\nclass UpsampleIndexMap extends Map<number, number> {\n private _next = 0;\n public indices = new Array<number>();\n\n public addTriangle(indices: number[]) {\n for (const index of indices) {\n let mapIndex = this.get(index);\n if (undefined === mapIndex)\n this.set(index, mapIndex = this._next++);\n\n this.indices.push(mapIndex);\n }\n }\n}\n\nexport interface UpsampledRealityMeshParams {\n heightRange: Range1d;\n mesh: RealityMeshParams;\n}\n\nclass ClipAxis {\n constructor(public vertical: boolean, public lessThan: boolean, public value: number) { }\n}\n\nexport function upsampleRealityMeshParams(params: RealityMeshParams, uvSampleRange: Range2d): UpsampledRealityMeshParams {\n const indexMap = new UpsampleIndexMap();\n const uvParams = QParams2d.fromZeroToOne();\n const uvLow = QPoint2d.create(uvSampleRange.low, uvParams);\n const uvHigh = QPoint2d.create(uvSampleRange.high, uvParams);\n const uvRange = Range2d.createXYXY(uvLow.x, uvLow.y, uvHigh.x, uvHigh.y);\n\n const clipAxes = new Array<ClipAxis>();\n const addedPoints = new Array<QPoint3d>(), addedParams = new Array<QPoint2d>(), addedNormals = new Array<number>();\n if (uvLow.x > 0)\n clipAxes.push(new ClipAxis(true, false, uvLow.x));\n if (uvHigh.x < Quantization.rangeScale16)\n clipAxes.push(new ClipAxis(true, true, uvHigh.x));\n if (uvLow.y > 0)\n clipAxes.push(new ClipAxis(false, false, uvLow.y));\n if (uvHigh.y < Quantization.rangeScale16)\n clipAxes.push(new ClipAxis(false, true, uvHigh.y));\n\n const triangleRange = Range2d.createNull();\n for (let i = 0; i < params.indices.length;) {\n const triangleIndices = [params.indices[i++], params.indices[i++], params.indices[i++]];\n\n Range2d.createNull(triangleRange);\n for (const index of triangleIndices) {\n const paramIndex = 2 * index;\n triangleRange.extendXY(params.uvs.points[paramIndex], params.uvs.points[paramIndex + 1]);\n }\n\n if (uvRange.intersectsRange(triangleRange)) {\n if (uvRange.containsRange(triangleRange)) {\n indexMap.addTriangle(triangleIndices);\n } else {\n addClipped(params, triangleIndices, indexMap, clipAxes, 0, addedPoints, addedParams, addedNormals);\n }\n }\n }\n\n const parentPoints = params.positions;\n const parentParams = params.uvs;\n const parentNormals = params.normals;\n const parentPointCount = parentPoints.points.length / 3;\n\n const zRange = Range1d.createNull();\n const builder = new RealityMeshParamsBuilder({\n positionRange: parentPoints.params.computeRange(),\n initialVertexCapacity: indexMap.size,\n initialIndexCapacity: indexMap.indices.length,\n wantNormals: parentNormals !== undefined,\n });\n\n const pos = new QPoint3d();\n const uv = new QPoint2d();\n for (const entry of indexMap.entries()) {\n const parentIndex = entry[0];\n let normal: number | undefined;\n if (parentIndex < parentPointCount) {\n const pointIndex = 3 * parentIndex;\n pos.setFromScalars(parentPoints.points[pointIndex], parentPoints.points[pointIndex + 1], parentPoints.points[pointIndex + 2]);\n const paramIndex = 2 * parentIndex;\n uv.setFromScalars(parentParams.points[paramIndex], parentParams.points[paramIndex + 1]);\n if (parentNormals)\n normal = parentNormals[parentIndex];\n } else {\n const addedIndex = parentIndex - parentPointCount;\n addedPoints[addedIndex].clone(pos);\n addedParams[addedIndex].clone(uv);\n if (addedNormals.length > 0)\n normal = addedNormals[addedIndex];\n }\n\n builder.addQuantizedVertex(pos, uv, normal);\n zRange.extendX(pos.z);\n }\n\n builder.addIndices(indexMap.indices);\n\n const mesh = builder.finish();\n const qParams = mesh.positions.params;\n return {\n mesh: builder.finish(),\n heightRange: Range1d.createXX(\n Quantization.unquantize(zRange.low, qParams.origin.z, qParams.scale.z),\n Quantization.unquantize(zRange.high, qParams.origin.z, qParams.scale.z),\n ),\n };\n}\n\nfunction interpolate(value0: number, value1: number, fraction: number) {\n return value0 + (value1 - value0) * fraction;\n}\n\nfunction interpolateInt(value0: number, value1: number, fraction: number) {\n return Math.floor(.5 + interpolate(value0, value1, fraction));\n}\n\nfunction interpolateQPoint3d(qPoint: QPoint3d, qNext: QPoint3d, fraction: number): QPoint3d {\n return QPoint3d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction), interpolateInt(qPoint.z, qNext.z, fraction));\n}\n\nfunction interpolateQPoint2d(qPoint: QPoint2d, qNext: QPoint2d, fraction: number): QPoint2d {\n return QPoint2d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction));\n}\n\nfunction interpolateOctEncodedNormal(normal0: number, normal1: number, fraction: number): number {\n const n0 = OctEncodedNormal.decodeValue(normal0);\n const n1 = OctEncodedNormal.decodeValue(normal1);\n if (undefined !== n0 && undefined !== n1) {\n const n = Vector3d.create(interpolate(n0.x, n1.x, fraction), interpolate(n0.y, n1.y, fraction), interpolate(n0.z, n1.z, fraction));\n n.normalizeInPlace();\n return OctEncodedNormal.encode(n);\n } else {\n return OctEncodedNormal.encode(Vector3d.create(0, 0, 1));\n }\n}\n\nfunction addClipped(params: RealityMeshParams, triangleIndices: number[], indexMap: UpsampleIndexMap, clipAxes: ClipAxis[], clipIndex: number, addedPoints: QPoint3d[], addedParams: QPoint2d[], addedNormals: number[]) {\n if (clipIndex === clipAxes.length) {\n indexMap.addTriangle(triangleIndices);\n return;\n }\n\n const inside = [false, false, false];\n const values = [0, 0, 0];\n const clipOutput: number[] = [];\n\n const parentPoints = params.positions.points;\n const parentParams = params.uvs.points;\n const parentNormals = params.normals;\n\n const clipAxis = clipAxes[clipIndex++];\n const clipValue = clipAxis.value;\n\n const parentPointCount = parentPoints.length / 3;\n const scratchQPoint3d = new QPoint3d(), scratchQPoint3d1 = new QPoint3d();\n const scratchQPoint2d = new QPoint2d(), scratchQPoint2d1 = new QPoint2d();\n\n const getPoint = (index: number, result: QPoint3d): QPoint3d => {\n if (index < parentPointCount) {\n const pointIndex = index * 3;\n result.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\n } else {\n addedPoints[index - parentPointCount].clone(result);\n }\n\n return result;\n };\n\n const getParam = (index: number, result: QPoint2d): QPoint2d => {\n if (index < parentPointCount) {\n const pointIndex = index * 2;\n result.setFromScalars(parentParams[pointIndex], parentParams[pointIndex + 1]);\n } else {\n addedParams[index - parentPointCount].clone(result);\n }\n return result;\n };\n\n const getNormal = (index: number): number | undefined => {\n if (!parentNormals)\n return undefined;\n\n return (index < parentPointCount) ? parentNormals[index] : addedNormals[index - parentPointCount];\n };\n\n for (let i = 0; i < 3; i++) {\n const index = triangleIndices[i];\n const thisParam = getParam(index, scratchQPoint2d);\n const thisValue = clipAxis.vertical ? thisParam.x : thisParam.y;\n values[i] = thisValue;\n inside[i] = clipAxis.lessThan ? (thisValue < clipValue) : (thisValue > clipValue);\n }\n\n for (let i = 0; i < 3; i++) {\n const index = triangleIndices[i];\n const next = (i + 1) % 3;\n if (inside[i])\n clipOutput.push(index);\n if (inside[i] !== inside[next]) {\n const nextIndex = triangleIndices[next];\n const fraction = (clipValue - values[i]) / (values[next] - values[i]);\n\n clipOutput.push(parentPointCount + addedPoints.length);\n addedPoints.push(interpolateQPoint3d(getPoint(index, scratchQPoint3d), getPoint(nextIndex, scratchQPoint3d1), fraction));\n addedParams.push(interpolateQPoint2d(getParam(index, scratchQPoint2d), getParam(nextIndex, scratchQPoint2d1), fraction));\n if (parentNormals)\n addedNormals.push(interpolateOctEncodedNormal(expectDefined(getNormal(index)), expectDefined(getNormal(nextIndex)), fraction));\n\n }\n }\n\n if (clipOutput.length > 2) {\n addClipped(params, clipOutput.slice(0, 3), indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\n if (clipOutput.length > 3)\n addClipped(params, [clipOutput[0], clipOutput[2], clipOutput[3]], indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\n }\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AtmosphereUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AtmosphereUniforms.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAW,OAAO,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAgB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,qBAAa,kBAAmB,YAAW,eAAe,EAAE,UAAU;IACpE,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAsB;IAGzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+D;IACjG,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAA+D;IAC/G,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA+D;IACtG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD;;;;;;OAMG;IACH,IAAW,cAAc,YAAmC;IAG5D,OAAO,CAAC,SAAS,CAAO;IAGjB,OAAO,SAAK;IACnB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAiB;IAEjC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,qCAAqC;IAK7C,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,+CAA+C;IASvD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,eAAe;IAIhB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,uBAAuB;IAKxB,0CAA0C,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOxE,+CAA+C,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAO7E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKvD,2BAA2B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzD,gCAAgC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrE,IAAW,UAAU,IAAI,OAAO,CAE/B;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;IACvB,qGAAqG;IAC9F,OAAO;CAGf"}
1
+ {"version":3,"file":"AtmosphereUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AtmosphereUniforms.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAW,OAAO,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAgB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,qBAAa,kBAAmB,YAAW,eAAe,EAAE,UAAU;IACpE,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAsB;IAGzC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+D;IACjG,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAA+D;IAC/G,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA+D;IACtG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD;;;;;;OAMG;IACH,IAAW,cAAc,YAAmC;IAG5D,OAAO,CAAC,SAAS,CAAO;IAGjB,OAAO,SAAK;IACnB,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAiB;IAEjC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,qCAAqC;IAK7C,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kCAAkC;IAS1C,OAAO,CAAC,+CAA+C;IASvD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,eAAe;IAIhB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMjD,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,uBAAuB;IAKxB,0CAA0C,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOxE,+CAA+C,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAO7E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKlD,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKvD,2BAA2B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzD,gCAAgC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrE,IAAW,UAAU,IAAI,OAAO,CAE/B;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;IACvB,qGAAqG;IAC9F,OAAO;CAGf"}
@@ -1,3 +1,8 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { expectDefined } from "@itwin/core-bentley";
1
6
  import { Matrix3d, Point3d } from "@itwin/core-geometry";
2
7
  import { Matrix3, Matrix4 } from "./Matrix";
3
8
  import { desync, sync } from "./Sync";
@@ -134,11 +139,11 @@ export class AtmosphereUniforms {
134
139
  }
135
140
  bindInverseEarthScaleMatrix(uniform) {
136
141
  if (!sync(this, uniform))
137
- uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix.inverse()));
142
+ uniform.setMatrix3(Matrix3.fromMatrix3d(expectDefined(this._earthScaleMatrix.inverse())));
138
143
  }
139
144
  bindInverseAtmosphereScaleMatrix(uniform) {
140
145
  if (!sync(this, uniform))
141
- uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix.inverse()));
146
+ uniform.setMatrix3(Matrix3.fromMatrix3d(expectDefined(this._atmosphereScaleMatrix.inverse())));
142
147
  }
143
148
  get isDisposed() {
144
149
  return true;
@@ -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 - will not be removed until after 2026-06-13. 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 { expectDefined } from \"@itwin/core-bentley\";\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(expectDefined(this._earthScaleMatrix.inverse())));\n }\n\n public bindInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(Matrix3.fromMatrix3d(expectDefined(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"]}