@itwin/core-frontend 5.2.0-dev.3 → 5.2.0-dev.31

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 (701) hide show
  1. package/CHANGELOG.md +76 -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 +5 -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.d.ts +3 -0
  58. package/lib/cjs/PlanarClipMaskState.d.ts.map +1 -1
  59. package/lib/cjs/PlanarClipMaskState.js +8 -4
  60. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  61. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSource.js +5 -1
  63. package/lib/cjs/RealityDataSource.js.map +1 -1
  64. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  65. package/lib/cjs/SelectionSet.js +1 -0
  66. package/lib/cjs/SelectionSet.js.map +1 -1
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +5 -5
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  71. package/lib/cjs/SpatialViewState.js +1 -1
  72. package/lib/cjs/SpatialViewState.js.map +1 -1
  73. package/lib/cjs/Sprites.js +2 -2
  74. package/lib/cjs/Sprites.js.map +1 -1
  75. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  76. package/lib/cjs/TentativePoint.js +10 -9
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewContext.d.ts +10 -1
  79. package/lib/cjs/ViewContext.d.ts.map +1 -1
  80. package/lib/cjs/ViewContext.js +12 -1
  81. package/lib/cjs/ViewContext.js.map +1 -1
  82. package/lib/cjs/ViewCreator2d.js +1 -1
  83. package/lib/cjs/ViewCreator2d.js.map +1 -1
  84. package/lib/cjs/ViewCreator3d.js +1 -1
  85. package/lib/cjs/ViewCreator3d.js.map +1 -1
  86. package/lib/cjs/ViewPose.d.ts.map +1 -1
  87. package/lib/cjs/ViewPose.js +4 -1
  88. package/lib/cjs/ViewPose.js.map +1 -1
  89. package/lib/cjs/ViewState.d.ts.map +1 -1
  90. package/lib/cjs/ViewState.js +17 -12
  91. package/lib/cjs/ViewState.js.map +1 -1
  92. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  93. package/lib/cjs/ViewingSpace.js +2 -0
  94. package/lib/cjs/ViewingSpace.js.map +1 -1
  95. package/lib/cjs/Viewport.d.ts.map +1 -1
  96. package/lib/cjs/Viewport.js +17 -10
  97. package/lib/cjs/Viewport.js.map +1 -1
  98. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  99. package/lib/cjs/common/ImageUtil.js +2 -1
  100. package/lib/cjs/common/ImageUtil.js.map +1 -1
  101. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  102. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  103. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  104. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  105. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  106. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  107. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  108. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  109. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  110. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  111. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  112. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  113. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  114. package/lib/cjs/internal/GoogleMapsDecorator.js +7 -7
  115. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  116. package/lib/cjs/internal/ScriptUtils.js +1 -0
  117. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  118. package/lib/cjs/internal/cross-package.d.ts +1 -1
  119. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  120. package/lib/cjs/internal/cross-package.js +2 -1
  121. package/lib/cjs/internal/cross-package.js.map +1 -1
  122. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  123. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  124. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  125. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  127. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  129. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  130. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  133. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  135. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +3 -3
  136. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  137. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts +4 -1
  138. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  139. package/lib/cjs/internal/render/webgl/BatchUniforms.js +16 -5
  140. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  141. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  142. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  143. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  145. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  148. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  150. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  151. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  152. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  153. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  154. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  155. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  156. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  157. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  158. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +14 -14
  160. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  162. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  164. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  165. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  166. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  167. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  168. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/Graphic.d.ts +3 -3
  170. package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
  171. package/lib/cjs/internal/render/webgl/Graphic.js +7 -7
  172. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  174. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  176. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  178. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  180. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  181. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +27 -11
  182. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  184. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  186. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  188. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  190. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  192. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  194. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts +2 -1
  196. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  197. package/lib/cjs/internal/render/webgl/RenderCommands.js +3 -1
  198. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  200. package/lib/cjs/internal/render/webgl/SceneCompositor.js +118 -85
  201. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  203. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  204. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  206. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  208. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  210. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  211. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  213. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  214. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  216. package/lib/cjs/internal/render/webgl/System.js +1 -1
  217. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  219. package/lib/cjs/internal/render/webgl/Target.js +12 -9
  220. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  221. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  222. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  223. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  224. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js +1 -1
  225. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  226. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  227. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  228. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  229. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  230. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  231. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  232. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  233. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  234. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  235. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  236. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  237. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  238. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  239. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  240. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  241. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  242. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  243. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  244. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  245. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  246. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  247. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  248. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  249. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  250. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  251. package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
  252. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  253. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  254. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  255. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  256. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  257. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  258. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  259. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  260. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  261. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  262. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  263. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  264. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  265. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  266. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +2 -0
  267. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  268. package/lib/cjs/internal/tile/PrimaryTileTree.js +17 -12
  269. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  270. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  271. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  272. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  273. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  274. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  275. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  276. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  277. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  278. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  279. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  280. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  281. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  282. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  283. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  284. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  285. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  286. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  287. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  288. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  289. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  290. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  291. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  292. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  293. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  294. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  295. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  296. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  297. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  298. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  299. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  300. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  301. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  302. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  303. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  304. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  305. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  306. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  307. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  308. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  309. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  310. package/lib/cjs/tile/GltfReader.js +69 -17
  311. package/lib/cjs/tile/GltfReader.js.map +1 -1
  312. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  313. package/lib/cjs/tile/RealityTile.js +2 -2
  314. package/lib/cjs/tile/RealityTile.js.map +1 -1
  315. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  316. package/lib/cjs/tile/RealityTileTree.js +5 -5
  317. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  318. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  319. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  320. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  321. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  322. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  323. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  324. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  325. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  326. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  327. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  328. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  329. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  330. package/lib/cjs/tile/map/MapTile.js +10 -8
  331. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  332. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  333. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  334. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  335. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  336. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  337. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  338. package/lib/cjs/tools/Tool.js +1 -1
  339. package/lib/cjs/tools/Tool.js.map +1 -1
  340. package/lib/cjs/tools/ToolAdmin.d.ts +5 -0
  341. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  342. package/lib/cjs/tools/ToolAdmin.js +9 -0
  343. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  344. package/lib/cjs/workers/ImdlParser/webpack.config.js +8 -0
  345. package/lib/esm/BackgroundMapGeometry.js +14 -14
  346. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  347. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  348. package/lib/esm/BriefcaseConnection.js +2 -2
  349. package/lib/esm/BriefcaseConnection.js.map +1 -1
  350. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  351. package/lib/esm/CheckpointConnection.js +4 -4
  352. package/lib/esm/CheckpointConnection.js.map +1 -1
  353. package/lib/esm/ContextRealityModelState.js.map +1 -1
  354. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  355. package/lib/esm/ElementLocateManager.js +8 -7
  356. package/lib/esm/ElementLocateManager.js.map +1 -1
  357. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  358. package/lib/esm/EmphasizeElements.js +3 -1
  359. package/lib/esm/EmphasizeElements.js.map +1 -1
  360. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  361. package/lib/esm/EnvironmentDecorations.js +4 -0
  362. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  363. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  364. package/lib/esm/FrustumAnimator.js +3 -2
  365. package/lib/esm/FrustumAnimator.js.map +1 -1
  366. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  367. package/lib/esm/GlobeAnimator.js +7 -6
  368. package/lib/esm/GlobeAnimator.js.map +1 -1
  369. package/lib/esm/HitDetail.d.ts.map +1 -1
  370. package/lib/esm/HitDetail.js +12 -7
  371. package/lib/esm/HitDetail.js.map +1 -1
  372. package/lib/esm/IModelApp.d.ts.map +1 -1
  373. package/lib/esm/IModelApp.js +7 -3
  374. package/lib/esm/IModelApp.js.map +1 -1
  375. package/lib/esm/IModelConnection.d.ts +4 -0
  376. package/lib/esm/IModelConnection.d.ts.map +1 -1
  377. package/lib/esm/IModelConnection.js +158 -16
  378. package/lib/esm/IModelConnection.js.map +1 -1
  379. package/lib/esm/IpcApp.d.ts.map +1 -1
  380. package/lib/esm/IpcApp.js +2 -2
  381. package/lib/esm/IpcApp.js.map +1 -1
  382. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  383. package/lib/esm/LinePlaneIntersect.js +2 -0
  384. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  385. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  386. package/lib/esm/LocalhostIpcApp.js +2 -1
  387. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  388. package/lib/esm/Marker.d.ts.map +1 -1
  389. package/lib/esm/Marker.js +5 -4
  390. package/lib/esm/Marker.js.map +1 -1
  391. package/lib/esm/ModelState.d.ts.map +1 -1
  392. package/lib/esm/ModelState.js +3 -3
  393. package/lib/esm/ModelState.js.map +1 -1
  394. package/lib/esm/NativeApp.d.ts.map +1 -1
  395. package/lib/esm/NativeApp.js +5 -4
  396. package/lib/esm/NativeApp.js.map +1 -1
  397. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  398. package/lib/esm/NativeAppLogger.js +1 -0
  399. package/lib/esm/NativeAppLogger.js.map +1 -1
  400. package/lib/esm/PlanarClipMaskState.d.ts +3 -0
  401. package/lib/esm/PlanarClipMaskState.d.ts.map +1 -1
  402. package/lib/esm/PlanarClipMaskState.js +8 -4
  403. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  404. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  405. package/lib/esm/RealityDataSource.js +5 -1
  406. package/lib/esm/RealityDataSource.js.map +1 -1
  407. package/lib/esm/SelectionSet.d.ts.map +1 -1
  408. package/lib/esm/SelectionSet.js +2 -1
  409. package/lib/esm/SelectionSet.js.map +1 -1
  410. package/lib/esm/SheetViewState.d.ts.map +1 -1
  411. package/lib/esm/SheetViewState.js +6 -6
  412. package/lib/esm/SheetViewState.js.map +1 -1
  413. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  414. package/lib/esm/SpatialViewState.js +2 -2
  415. package/lib/esm/SpatialViewState.js.map +1 -1
  416. package/lib/esm/Sprites.js +2 -2
  417. package/lib/esm/Sprites.js.map +1 -1
  418. package/lib/esm/TentativePoint.d.ts.map +1 -1
  419. package/lib/esm/TentativePoint.js +10 -9
  420. package/lib/esm/TentativePoint.js.map +1 -1
  421. package/lib/esm/ViewContext.d.ts +10 -1
  422. package/lib/esm/ViewContext.d.ts.map +1 -1
  423. package/lib/esm/ViewContext.js +12 -1
  424. package/lib/esm/ViewContext.js.map +1 -1
  425. package/lib/esm/ViewCreator2d.js +1 -1
  426. package/lib/esm/ViewCreator2d.js.map +1 -1
  427. package/lib/esm/ViewCreator3d.js +1 -1
  428. package/lib/esm/ViewCreator3d.js.map +1 -1
  429. package/lib/esm/ViewPose.d.ts.map +1 -1
  430. package/lib/esm/ViewPose.js +4 -1
  431. package/lib/esm/ViewPose.js.map +1 -1
  432. package/lib/esm/ViewState.d.ts.map +1 -1
  433. package/lib/esm/ViewState.js +18 -13
  434. package/lib/esm/ViewState.js.map +1 -1
  435. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  436. package/lib/esm/ViewingSpace.js +2 -0
  437. package/lib/esm/ViewingSpace.js.map +1 -1
  438. package/lib/esm/Viewport.d.ts.map +1 -1
  439. package/lib/esm/Viewport.js +18 -11
  440. package/lib/esm/Viewport.js.map +1 -1
  441. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  442. package/lib/esm/common/ImageUtil.js +2 -1
  443. package/lib/esm/common/ImageUtil.js.map +1 -1
  444. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  445. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  446. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  447. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  448. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  449. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  450. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  451. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  452. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  453. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  454. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  455. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  456. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  457. package/lib/esm/internal/GoogleMapsDecorator.js +7 -7
  458. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  459. package/lib/esm/internal/ScriptUtils.js +1 -0
  460. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  461. package/lib/esm/internal/cross-package.d.ts +1 -1
  462. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  463. package/lib/esm/internal/cross-package.js +1 -1
  464. package/lib/esm/internal/cross-package.js.map +1 -1
  465. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  466. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  467. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  468. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  469. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  470. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  472. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  473. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  474. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  475. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  476. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +4 -4
  479. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts +4 -1
  481. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  482. package/lib/esm/internal/render/webgl/BatchUniforms.js +16 -5
  483. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  484. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  485. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  486. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  488. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  489. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  490. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  491. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  492. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  493. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  494. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  495. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  497. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  498. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  499. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  500. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  501. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  502. package/lib/esm/internal/render/webgl/FeatureOverrides.js +15 -15
  503. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  504. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  505. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  506. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  507. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  508. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  509. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  510. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  511. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/Graphic.d.ts +3 -3
  513. package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
  514. package/lib/esm/internal/render/webgl/Graphic.js +7 -7
  515. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  516. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  517. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  519. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  521. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  523. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  524. package/lib/esm/internal/render/webgl/PlanarClassifier.js +28 -12
  525. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  526. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  527. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  528. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  529. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  530. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  531. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  532. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  533. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  534. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  535. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  536. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  537. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  538. package/lib/esm/internal/render/webgl/RenderCommands.d.ts +2 -1
  539. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  540. package/lib/esm/internal/render/webgl/RenderCommands.js +3 -1
  541. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  542. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  543. package/lib/esm/internal/render/webgl/SceneCompositor.js +119 -86
  544. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  545. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  546. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  547. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  548. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  549. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  550. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  551. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  552. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  553. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  554. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  555. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  556. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  557. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  558. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  559. package/lib/esm/internal/render/webgl/System.js +2 -2
  560. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  561. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  562. package/lib/esm/internal/render/webgl/Target.js +13 -10
  563. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  564. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  565. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  566. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  567. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js +1 -1
  568. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  569. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  570. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  571. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  572. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  573. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  574. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  575. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  576. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  577. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  578. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  579. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  580. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  581. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  582. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  583. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  584. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  585. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  586. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  587. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  588. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  589. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  590. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  591. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  592. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  593. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  594. package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
  595. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  596. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  597. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  598. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  599. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  600. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  601. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  602. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  603. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  604. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  605. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  606. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  607. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  608. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  609. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +2 -0
  610. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  611. package/lib/esm/internal/tile/PrimaryTileTree.js +16 -12
  612. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  613. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  614. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  615. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  616. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  617. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  618. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  619. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  620. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  621. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  622. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  623. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  624. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  625. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  626. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  627. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  628. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  629. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  630. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  631. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  632. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  633. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  634. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  635. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  636. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  637. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  638. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  639. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  640. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  641. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  642. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  643. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  644. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  645. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  646. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  647. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  648. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  649. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  650. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  651. package/lib/esm/tile/GltfReader.d.ts +5 -2
  652. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  653. package/lib/esm/tile/GltfReader.js +70 -18
  654. package/lib/esm/tile/GltfReader.js.map +1 -1
  655. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  656. package/lib/esm/tile/RealityTile.js +3 -3
  657. package/lib/esm/tile/RealityTile.js.map +1 -1
  658. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  659. package/lib/esm/tile/RealityTileTree.js +6 -6
  660. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  661. package/lib/esm/tile/TileAdmin.js.map +1 -1
  662. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  663. package/lib/esm/tile/TileDrawArgs.js +2 -1
  664. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  665. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  666. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  667. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  668. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  669. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  670. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  671. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  672. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  673. package/lib/esm/tile/map/MapTile.js +11 -9
  674. package/lib/esm/tile/map/MapTile.js.map +1 -1
  675. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  676. package/lib/esm/tile/map/MapTileTree.js +9 -8
  677. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  678. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  679. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  680. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  681. package/lib/esm/tools/Tool.js +2 -2
  682. package/lib/esm/tools/Tool.js.map +1 -1
  683. package/lib/esm/tools/ToolAdmin.d.ts +5 -0
  684. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  685. package/lib/esm/tools/ToolAdmin.js +9 -0
  686. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  687. package/lib/esm/workers/ImdlParser/webpack.config.js +8 -0
  688. package/lib/public/images/GoogleMaps_Logo_Gray.svg +50 -0
  689. package/lib/public/images/GoogleMaps_Logo_WithDarkOutline.svg +78 -0
  690. package/lib/public/images/GoogleMaps_Logo_WithLightOutline.svg +78 -0
  691. package/lib/public/locales/en/iModelJs.json +1 -1
  692. package/lib/public/scripts/draco_decoder.wasm +0 -0
  693. package/lib/public/scripts/draco_encoder.js +52 -0
  694. package/lib/public/scripts/draco_wasm_wrapper.js +117 -0
  695. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  696. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  697. package/package.json +25 -23
  698. package/lib/public/images/google_on_non_white.png +0 -0
  699. package/lib/public/images/google_on_non_white_hdpi.png +0 -0
  700. package/lib/public/images/google_on_white.png +0 -0
  701. package/lib/public/images/google_on_white_hdpi.png +0 -0
@@ -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":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Atmosphere } from \"@itwin/core-common\";\r\nimport { Matrix3d, Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { RenderPlanEllipsoid } from \"../RenderPlan\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { desync, sync, SyncTarget } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\n\r\nexport const MAX_SAMPLE_POINTS = 40; // Maximum number of sample points to be used for the in-scattering and out-scattering computations.\r\n\r\nexport class AtmosphereUniforms implements WebGLDisposable, SyncTarget {\r\n private _atmosphere?: Atmosphere.Settings;\r\n private _ellipsoid?: RenderPlanEllipsoid;\r\n\r\n // Main shader uniforms\r\n private readonly _earthScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _inverseEllipsoidRotationMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _atmosphereScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _atmosphereData = new Matrix4();\r\n /**\r\n * uniform mat3 u_atmosphereData;\r\n * { { atmosphereRadiusScaleFactor, atmosphereMaxDensityThresholdScaleFactor, densityFalloff, 0 },\r\n * { numViewRaySamples, numSunRaySamples, 0, 0 },\r\n * { earthCenter.x, earthCenter.y, earthCenter.z, 0 },\r\n * { scatteringCoefficients.x, scatteringCoefficients.y, scatteringCoefficients.z, 0 } }\r\n */\r\n public get atmosphereData() { return this._atmosphereData; }\r\n\r\n // Fragment shader uniforms\r\n private _exposure = 0.0;\r\n\r\n // utility\r\n public syncKey = 0;\r\n private _scratchMatrix3d = new Matrix3d();\r\n private _scratchPoint3d = new Point3d();\r\n\r\n public update(target: Target): void {\r\n const atmosphereHasNotChanged = this._atmosphere && target.plan.atmosphere && this._atmosphere.equals(target.plan.atmosphere);\r\n const ellipsoidHasNotChanged = this._ellipsoid && target.plan.ellipsoid && this._ellipsoid.equals(target.plan.ellipsoid);\r\n if (atmosphereHasNotChanged && ellipsoidHasNotChanged) {\r\n return;\r\n }\r\n\r\n this._atmosphere = target.plan.atmosphere;\r\n this._ellipsoid = target.plan.ellipsoid;\r\n desync(this);\r\n if (!this._atmosphere || !this._ellipsoid) {\r\n return;\r\n }\r\n\r\n this._updateAtmosphereScaleMatrix(this._atmosphere.atmosphereHeightAboveEarth);\r\n this._updateExposure(this._atmosphere.exposure);\r\n this._updateDensityFalloff(this._atmosphere.densityFalloff);\r\n this._updateEarthCenter(this._ellipsoid.ellipsoidCenter, target.uniforms.frustum.viewMatrix);\r\n this._updateEarthScaleMatrix(this._ellipsoid.ellipsoidRadii);\r\n this._updateInverseEllipsoidRotationMatrix(this._ellipsoid.ellipsoidRotation, target.uniforms.frustum.viewMatrix.matrix);\r\n this._updateAtmosphereRadiusScaleFactor(this._atmosphere.atmosphereHeightAboveEarth);\r\n this._updateAtmosphereMaxDensityThresholdScaleFactor(this._atmosphere.depthBelowEarthForMaxDensity);\r\n this._updateNumViewRaySamples(this._atmosphere.numViewRaySamples);\r\n this._updateNumSunRaySamples(this._atmosphere.numSunRaySamples);\r\n this._updateScatteringCoefficients(this._atmosphere.scatteringStrength, this._atmosphere.wavelengths);\r\n }\r\n\r\n private _updateEarthCenter(earthCenter: Point3d, viewMatrix: Transform) {\r\n viewMatrix.multiplyPoint3d(earthCenter, this._scratchPoint3d);\r\n this._atmosphereData.data[8] = this._scratchPoint3d.x;\r\n this._atmosphereData.data[9] = this._scratchPoint3d.y;\r\n this._atmosphereData.data[10] = this._scratchPoint3d.z;\r\n }\r\n\r\n private _updateInverseEllipsoidRotationMatrix(ellipsoidRotation: Matrix3d, viewRotation: Matrix3d) {\r\n viewRotation.inverse(this._scratchMatrix3d);\r\n ellipsoidRotation.multiplyMatrixInverseMatrix(this._scratchMatrix3d, this._inverseEllipsoidRotationMatrix);\r\n }\r\n\r\n private _updateEarthScaleMatrix(earthRadii: Point3d) {\r\n this._earthScaleMatrix.setAt(0, 0, earthRadii.x);\r\n this._earthScaleMatrix.setAt(1, 1, earthRadii.y);\r\n this._earthScaleMatrix.setAt(2, 2, earthRadii.z);\r\n }\r\n private _updateAtmosphereScaleMatrix(heightAboveSurface: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const scaleFactor = earthPolarRadius === 0 ? 1.0 : (earthPolarRadius + heightAboveSurface) / earthPolarRadius;\r\n this._earthScaleMatrix.scale(scaleFactor, this._atmosphereScaleMatrix);\r\n }\r\n\r\n private _updateAtmosphereRadiusScaleFactor(atmosphereHeightAboveEarth: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const minDensityThresholdRadius = earthPolarRadius + atmosphereHeightAboveEarth;\r\n const atmosphereRadiusScaleFactor = (earthPolarRadius === 0)\r\n ? 1\r\n : (minDensityThresholdRadius / earthPolarRadius);\r\n this.atmosphereData.data[0] = atmosphereRadiusScaleFactor;\r\n }\r\n\r\n private _updateAtmosphereMaxDensityThresholdScaleFactor(maxDensityDepthBelowEarth: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const maxDensityThresholdRadius = earthPolarRadius - maxDensityDepthBelowEarth;\r\n const atmosphereMaxDensityThresholdScaleFactor = (earthPolarRadius === 0)\r\n ? 1\r\n : (maxDensityThresholdRadius / earthPolarRadius);\r\n this.atmosphereData.data[1] = atmosphereMaxDensityThresholdScaleFactor;\r\n }\r\n\r\n private _updateDensityFalloff(densityFalloff: number) {\r\n this.atmosphereData.data[2] = densityFalloff;\r\n }\r\n\r\n private _updateScatteringCoefficients(scatteringStrength: number, wavelengths: Atmosphere.Wavelengths) {\r\n // Rayleigh scattering strength is inversely related to the 4th power of the wavelength -> 1/pow(wavelength, 4)\r\n // Because this produces very small values when the wavelengths are taken in nanometers,\r\n // we attempt to normalize them around 1 by taking the smallest wavelength of visible light as a baseline (violet light - 400nm)\r\n const violetLightWavelength = 400.0;\r\n this.atmosphereData.data[12] = ((violetLightWavelength / wavelengths.r) ** 4.0) * scatteringStrength;\r\n this.atmosphereData.data[13] = ((violetLightWavelength / wavelengths.g) ** 4.0) * scatteringStrength;\r\n this.atmosphereData.data[14] = ((violetLightWavelength / wavelengths.b) ** 4.0) * scatteringStrength;\r\n }\r\n\r\n private _updateExposure(exposure: number) {\r\n this._exposure = exposure;\r\n }\r\n\r\n public bindExposure(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n uniform.setUniform1f(this._exposure);\r\n }\r\n }\r\n\r\n private _updateNumViewRaySamples(_numViewRaySamples: number) {\r\n const numViewRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numViewRaySamples));\r\n this.atmosphereData.data[4] = numViewRaySamples;\r\n }\r\n\r\n private _updateNumSunRaySamples(_numSunRaySamples: number) {\r\n const numSunRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numSunRaySamples));\r\n this.atmosphereData.data[5] = numSunRaySamples;\r\n }\r\n\r\n public bindInverseRotationInverseEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n this._earthScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\r\n }\r\n }\r\n\r\n public bindInverseRotationInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n this._atmosphereScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\r\n }\r\n }\r\n\r\n public bindEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix));\r\n }\r\n\r\n public bindAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix));\r\n }\r\n\r\n public bindInverseEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix.inverse()!));\r\n }\r\n\r\n public bindInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix.inverse()!));\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return true;\r\n }\r\n\r\n public [Symbol.dispose]() { }\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AtmosphereUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AtmosphereUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { expectDefined } from \"@itwin/core-bentley\";\r\nimport { Atmosphere } from \"@itwin/core-common\";\r\nimport { Matrix3d, Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { RenderPlanEllipsoid } from \"../RenderPlan\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { desync, sync, SyncTarget } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\n\r\nexport const MAX_SAMPLE_POINTS = 40; // Maximum number of sample points to be used for the in-scattering and out-scattering computations.\r\n\r\nexport class AtmosphereUniforms implements WebGLDisposable, SyncTarget {\r\n private _atmosphere?: Atmosphere.Settings;\r\n private _ellipsoid?: RenderPlanEllipsoid;\r\n\r\n // Main shader uniforms\r\n private readonly _earthScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _inverseEllipsoidRotationMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _atmosphereScaleMatrix = new Matrix3d(new Float64Array([1, 0, 0, 0, 1, 0, 0, 0, 1]));\r\n private readonly _atmosphereData = new Matrix4();\r\n /**\r\n * uniform mat3 u_atmosphereData;\r\n * { { atmosphereRadiusScaleFactor, atmosphereMaxDensityThresholdScaleFactor, densityFalloff, 0 },\r\n * { numViewRaySamples, numSunRaySamples, 0, 0 },\r\n * { earthCenter.x, earthCenter.y, earthCenter.z, 0 },\r\n * { scatteringCoefficients.x, scatteringCoefficients.y, scatteringCoefficients.z, 0 } }\r\n */\r\n public get atmosphereData() { return this._atmosphereData; }\r\n\r\n // Fragment shader uniforms\r\n private _exposure = 0.0;\r\n\r\n // utility\r\n public syncKey = 0;\r\n private _scratchMatrix3d = new Matrix3d();\r\n private _scratchPoint3d = new Point3d();\r\n\r\n public update(target: Target): void {\r\n const atmosphereHasNotChanged = this._atmosphere && target.plan.atmosphere && this._atmosphere.equals(target.plan.atmosphere);\r\n const ellipsoidHasNotChanged = this._ellipsoid && target.plan.ellipsoid && this._ellipsoid.equals(target.plan.ellipsoid);\r\n if (atmosphereHasNotChanged && ellipsoidHasNotChanged) {\r\n return;\r\n }\r\n\r\n this._atmosphere = target.plan.atmosphere;\r\n this._ellipsoid = target.plan.ellipsoid;\r\n desync(this);\r\n if (!this._atmosphere || !this._ellipsoid) {\r\n return;\r\n }\r\n\r\n this._updateAtmosphereScaleMatrix(this._atmosphere.atmosphereHeightAboveEarth);\r\n this._updateExposure(this._atmosphere.exposure);\r\n this._updateDensityFalloff(this._atmosphere.densityFalloff);\r\n this._updateEarthCenter(this._ellipsoid.ellipsoidCenter, target.uniforms.frustum.viewMatrix);\r\n this._updateEarthScaleMatrix(this._ellipsoid.ellipsoidRadii);\r\n this._updateInverseEllipsoidRotationMatrix(this._ellipsoid.ellipsoidRotation, target.uniforms.frustum.viewMatrix.matrix);\r\n this._updateAtmosphereRadiusScaleFactor(this._atmosphere.atmosphereHeightAboveEarth);\r\n this._updateAtmosphereMaxDensityThresholdScaleFactor(this._atmosphere.depthBelowEarthForMaxDensity);\r\n this._updateNumViewRaySamples(this._atmosphere.numViewRaySamples);\r\n this._updateNumSunRaySamples(this._atmosphere.numSunRaySamples);\r\n this._updateScatteringCoefficients(this._atmosphere.scatteringStrength, this._atmosphere.wavelengths);\r\n }\r\n\r\n private _updateEarthCenter(earthCenter: Point3d, viewMatrix: Transform) {\r\n viewMatrix.multiplyPoint3d(earthCenter, this._scratchPoint3d);\r\n this._atmosphereData.data[8] = this._scratchPoint3d.x;\r\n this._atmosphereData.data[9] = this._scratchPoint3d.y;\r\n this._atmosphereData.data[10] = this._scratchPoint3d.z;\r\n }\r\n\r\n private _updateInverseEllipsoidRotationMatrix(ellipsoidRotation: Matrix3d, viewRotation: Matrix3d) {\r\n viewRotation.inverse(this._scratchMatrix3d);\r\n ellipsoidRotation.multiplyMatrixInverseMatrix(this._scratchMatrix3d, this._inverseEllipsoidRotationMatrix);\r\n }\r\n\r\n private _updateEarthScaleMatrix(earthRadii: Point3d) {\r\n this._earthScaleMatrix.setAt(0, 0, earthRadii.x);\r\n this._earthScaleMatrix.setAt(1, 1, earthRadii.y);\r\n this._earthScaleMatrix.setAt(2, 2, earthRadii.z);\r\n }\r\n private _updateAtmosphereScaleMatrix(heightAboveSurface: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const scaleFactor = earthPolarRadius === 0 ? 1.0 : (earthPolarRadius + heightAboveSurface) / earthPolarRadius;\r\n this._earthScaleMatrix.scale(scaleFactor, this._atmosphereScaleMatrix);\r\n }\r\n\r\n private _updateAtmosphereRadiusScaleFactor(atmosphereHeightAboveEarth: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const minDensityThresholdRadius = earthPolarRadius + atmosphereHeightAboveEarth;\r\n const atmosphereRadiusScaleFactor = (earthPolarRadius === 0)\r\n ? 1\r\n : (minDensityThresholdRadius / earthPolarRadius);\r\n this.atmosphereData.data[0] = atmosphereRadiusScaleFactor;\r\n }\r\n\r\n private _updateAtmosphereMaxDensityThresholdScaleFactor(maxDensityDepthBelowEarth: number) {\r\n const earthPolarRadius = this._earthScaleMatrix.at(2, 2);\r\n const maxDensityThresholdRadius = earthPolarRadius - maxDensityDepthBelowEarth;\r\n const atmosphereMaxDensityThresholdScaleFactor = (earthPolarRadius === 0)\r\n ? 1\r\n : (maxDensityThresholdRadius / earthPolarRadius);\r\n this.atmosphereData.data[1] = atmosphereMaxDensityThresholdScaleFactor;\r\n }\r\n\r\n private _updateDensityFalloff(densityFalloff: number) {\r\n this.atmosphereData.data[2] = densityFalloff;\r\n }\r\n\r\n private _updateScatteringCoefficients(scatteringStrength: number, wavelengths: Atmosphere.Wavelengths) {\r\n // Rayleigh scattering strength is inversely related to the 4th power of the wavelength -> 1/pow(wavelength, 4)\r\n // Because this produces very small values when the wavelengths are taken in nanometers,\r\n // we attempt to normalize them around 1 by taking the smallest wavelength of visible light as a baseline (violet light - 400nm)\r\n const violetLightWavelength = 400.0;\r\n this.atmosphereData.data[12] = ((violetLightWavelength / wavelengths.r) ** 4.0) * scatteringStrength;\r\n this.atmosphereData.data[13] = ((violetLightWavelength / wavelengths.g) ** 4.0) * scatteringStrength;\r\n this.atmosphereData.data[14] = ((violetLightWavelength / wavelengths.b) ** 4.0) * scatteringStrength;\r\n }\r\n\r\n private _updateExposure(exposure: number) {\r\n this._exposure = exposure;\r\n }\r\n\r\n public bindExposure(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n uniform.setUniform1f(this._exposure);\r\n }\r\n }\r\n\r\n private _updateNumViewRaySamples(_numViewRaySamples: number) {\r\n const numViewRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numViewRaySamples));\r\n this.atmosphereData.data[4] = numViewRaySamples;\r\n }\r\n\r\n private _updateNumSunRaySamples(_numSunRaySamples: number) {\r\n const numSunRaySamples = Math.max(0, Math.min(MAX_SAMPLE_POINTS, _numSunRaySamples));\r\n this.atmosphereData.data[5] = numSunRaySamples;\r\n }\r\n\r\n public bindInverseRotationInverseEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n this._earthScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\r\n }\r\n }\r\n\r\n public bindInverseRotationInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n this._atmosphereScaleMatrix.multiplyMatrixInverseMatrix(this._inverseEllipsoidRotationMatrix, this._scratchMatrix3d);\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._scratchMatrix3d));\r\n }\r\n }\r\n\r\n public bindEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._earthScaleMatrix));\r\n }\r\n\r\n public bindAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(this._atmosphereScaleMatrix));\r\n }\r\n\r\n public bindInverseEarthScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(expectDefined(this._earthScaleMatrix.inverse())));\r\n }\r\n\r\n public bindInverseAtmosphereScaleMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(Matrix3.fromMatrix3d(expectDefined(this._atmosphereScaleMatrix.inverse())));\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return true;\r\n }\r\n\r\n public [Symbol.dispose]() { }\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
@@ -120,7 +120,7 @@ export class VAOHandle {
120
120
  }
121
121
  /** Frees the WebGL vertex array object */
122
122
  [Symbol.dispose]() {
123
- if (!this.isDisposed) {
123
+ if (!this.isDisposed && undefined !== this._arrayObject) {
124
124
  this._context.deleteVertexArray(this._arrayObject);
125
125
  this._arrayObject = undefined;
126
126
  }
@@ -163,8 +163,10 @@ export class BufferHandle {
163
163
  /** Frees the WebGL buffer */
164
164
  [Symbol.dispose]() {
165
165
  if (!this.isDisposed) {
166
- System.instance.context.deleteBuffer(this._glBuffer);
167
- this._glBuffer = undefined;
166
+ if (undefined !== this._glBuffer) {
167
+ System.instance.context.deleteBuffer(this._glBuffer);
168
+ this._glBuffer = undefined;
169
+ }
168
170
  this._bytesUsed = 0;
169
171
  }
170
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport class BuffersContainer implements WebGLDisposable {\r\n public readonly linkages: BufferHandleLinkage[] = [];\r\n protected readonly _vao: VAOHandle;\r\n private readonly _context: WebGL2RenderingContext;\r\n\r\n public static create(): BuffersContainer {\r\n return new BuffersContainer(System.instance.context);\r\n }\r\n\r\n private constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n this._vao = new VAOHandle(this._context);\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n public [Symbol.dispose](): void {\r\n this._vao[Symbol.dispose]();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._vao.isDisposed;\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this.linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this.linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public unbind(): void {\r\n VAOHandle.unbind(this._context);\r\n }\r\n}\r\n\r\n/** A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VAOHandle implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n this._context.deleteVertexArray(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteBuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport class BuffersContainer implements WebGLDisposable {\r\n public readonly linkages: BufferHandleLinkage[] = [];\r\n protected readonly _vao: VAOHandle;\r\n private readonly _context: WebGL2RenderingContext;\r\n\r\n public static create(): BuffersContainer {\r\n return new BuffersContainer(System.instance.context);\r\n }\r\n\r\n private constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n this._vao = new VAOHandle(this._context);\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n public [Symbol.dispose](): void {\r\n this._vao[Symbol.dispose]();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._vao.isDisposed;\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this.linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this.linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public unbind(): void {\r\n VAOHandle.unbind(this._context);\r\n }\r\n}\r\n\r\n/** A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VAOHandle implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed && undefined !== this._arrayObject) {\r\n this._context.deleteVertexArray(this._arrayObject);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.deleteBuffer(this._glBuffer);\r\n this._glBuffer = undefined;\r\n }\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeMap.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,IAAI,EAAE,YAAY,CAAC;CACpB;AAkCD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;;WAuD9D,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;WAUzG,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS;CAG3I"}
1
+ {"version":3,"file":"AttributeMap.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,IAAI,EAAE,YAAY,CAAC;CACpB;AAkCD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;;WAuD9D,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;WAYzG,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS;CAG3I"}
@@ -91,6 +91,8 @@ export class AttributeMap {
91
91
  static findAttributeMap(techniqueId, instanced) {
92
92
  let entry = attributeMap._attrMaps.get(techniqueId);
93
93
  if (undefined === entry) {
94
+ // AttributeMap has a hard-coded entry for undefined techniqueId.
95
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
94
96
  entry = attributeMap._attrMaps.get(undefined);
95
97
  attributeMap._attrMaps.set(techniqueId, entry);
96
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeMap.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeMap.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { VariableType } from \"./ShaderBuilder\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/**\r\n * Describes the details of an attribute associated with an attribute name.\r\n * @internal\r\n */\r\nexport interface AttributeDetails {\r\n /** Index used by GPU for binding attribute location for the associated attribute name. */\r\n location: number;\r\n /** What type of variable used for binding the attribute location. */\r\n type: VariableType;\r\n}\r\n\r\ntype AttributeInfo = [string, number, VariableType];\r\n\r\nclass AttributeMapEntry {\r\n public readonly uninstanced = new Map<string, AttributeDetails>();\r\n public readonly instanced = new Map<string, AttributeDetails>();\r\n\r\n public constructor(attributes: AttributeInfo[]) {\r\n for (const attr of attributes) {\r\n const detail = { location: attr[1], type: attr[2] };\r\n this.uninstanced.set(attr[0], detail);\r\n this.instanced.set(attr[0], detail);\r\n }\r\n\r\n const instanceAttrs: Array<[string, VariableType]> = [\r\n [\"a_instanceMatrixRow0\", VariableType.Vec4],\r\n [\"a_instanceMatrixRow1\", VariableType.Vec4],\r\n [\"a_instanceMatrixRow2\", VariableType.Vec4],\r\n [\"a_instanceOverrides\", VariableType.Vec4],\r\n [\"a_instanceRgba\", VariableType.Vec4],\r\n [\"a_featureId\", VariableType.Vec3],\r\n [\"a_patternX\", VariableType.Float],\r\n [\"a_patternY\", VariableType.Float],\r\n ];\r\n\r\n let location = attributes.length;\r\n for (const attr of instanceAttrs) {\r\n this.instanced.set(attr[0], { location, type: attr[1] });\r\n ++location;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A class with static methods which provide access to a global mapping between techniques and attribute details (location and variable type).\r\n * These details are used when constructing shaders and when setting up buffers through implementations of the BuffersContainer abstract class.\r\n * @internal\r\n */\r\nexport class AttributeMap {\r\n private readonly _attrMaps: Map<TechniqueId | undefined, AttributeMapEntry>;\r\n\r\n public constructor() {\r\n const posOnly = new AttributeMapEntry([[\"a_pos\", 0, VariableType.Vec3]]);\r\n const skySphere = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_worldPos\", 1, VariableType.Vec3],\r\n ]);\r\n const polyline = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_prevIndex\", 1, VariableType.Vec3],\r\n [\"a_nextIndex\", 2, VariableType.Vec3],\r\n [\"a_param\", 3, VariableType.Float],\r\n ]);\r\n const edge = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_endPointAndQuadIndices\", 1, VariableType.Vec4],\r\n ]);\r\n const silhouette = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_endPointAndQuadIndices\", 1, VariableType.Vec4],\r\n [\"a_normals\", 2, VariableType.Vec4],\r\n ]);\r\n const pointCloud = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_color\", 1, VariableType.Vec3],\r\n ]);\r\n const realityMesh = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_norm\", 1, VariableType.Vec2],\r\n [\"a_uvParam\", 2, VariableType.Vec2],\r\n ]);\r\n const planarGrid = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_uvParam\", 1, VariableType.Vec2],\r\n ]);\r\n\r\n const screenPoints = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec2],\r\n ]);\r\n\r\n this._attrMaps = new Map<TechniqueId | undefined, AttributeMapEntry>([\r\n [undefined, posOnly],\r\n [TechniqueId.SkySphereGradient, skySphere],\r\n [TechniqueId.SkySphereTexture, skySphere],\r\n [TechniqueId.Polyline, polyline],\r\n [TechniqueId.Edge, edge],\r\n [TechniqueId.SilhouetteEdge, silhouette],\r\n [TechniqueId.PointCloud, pointCloud],\r\n [TechniqueId.VolClassCopyZ, screenPoints],\r\n [TechniqueId.RealityMesh, realityMesh],\r\n [TechniqueId.PlanarGrid, planarGrid],\r\n ]);\r\n }\r\n\r\n public static findAttributeMap(techniqueId: TechniqueId | undefined, instanced: boolean): Map<string, AttributeDetails> {\r\n let entry = attributeMap._attrMaps.get(techniqueId);\r\n if (undefined === entry) {\r\n entry = attributeMap._attrMaps.get(undefined)!;\r\n attributeMap._attrMaps.set(techniqueId, entry);\r\n }\r\n\r\n return instanced ? entry.instanced : entry.uninstanced;\r\n }\r\n\r\n public static findAttribute(attributeName: string, techniqueId: TechniqueId | undefined, instanced: boolean): AttributeDetails | undefined {\r\n return AttributeMap.findAttributeMap(techniqueId, instanced).get(attributeName);\r\n }\r\n}\r\n\r\nconst attributeMap = new AttributeMap();\r\n"]}
1
+ {"version":3,"file":"AttributeMap.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/AttributeMap.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAkBH,MAAM,iBAAiB;IACL,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEhE,YAAmB,UAA2B;QAC5C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,aAAa,GAAkC;YACnD,CAAC,sBAAsB,4BAAoB;YAC3C,CAAC,sBAAsB,4BAAoB;YAC3C,CAAC,sBAAsB,4BAAoB;YAC3C,CAAC,qBAAqB,4BAAoB;YAC1C,CAAC,gBAAgB,4BAAoB;YACrC,CAAC,aAAa,4BAAoB;YAClC,CAAC,YAAY,6BAAqB;YAClC,CAAC,YAAY,6BAAqB;SACnC,CAAC;QAEF,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzD,EAAE,QAAQ,CAAC;QACb,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACN,SAAS,CAAkD;IAE5E;QACE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,4BAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC;YACtC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,YAAY,EAAE,CAAC,4BAAoB;SACrC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;YACrC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,aAAa,EAAE,CAAC,4BAAoB;YACrC,CAAC,aAAa,EAAE,CAAC,4BAAoB;YACrC,CAAC,SAAS,EAAE,CAAC,6BAAqB;SACnC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC;YACjC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,0BAA0B,EAAE,CAAC,4BAAoB;SACnD,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;YACvC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,0BAA0B,EAAE,CAAC,4BAAoB;YAClD,CAAC,WAAW,EAAE,CAAC,4BAAoB;SACpC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;YACvC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,SAAS,EAAE,CAAC,4BAAoB;SAClC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;YACxC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,QAAQ,EAAE,CAAC,4BAAoB;YAChC,CAAC,WAAW,EAAE,CAAC,4BAAoB;SACpC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;YACvC,CAAC,OAAO,EAAE,CAAC,4BAAoB;YAC/B,CAAC,WAAW,EAAE,CAAC,4BAAoB;SACpC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,iBAAiB,CAAC;YACzC,CAAC,OAAO,EAAE,CAAC,4BAAoB;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAA6C;YACnE,CAAC,SAAS,EAAE,OAAO,CAAC;YACpB,yCAAgC,SAAS,CAAC;YAC1C,wCAA+B,SAAS,CAAC;YACzC,+BAAuB,QAAQ,CAAC;YAChC,2BAAmB,IAAI,CAAC;YACxB,qCAA6B,UAAU,CAAC;YACxC,iCAAyB,UAAU,CAAC;YACpC,qCAA4B,YAAY,CAAC;YACzC,kCAA0B,WAAW,CAAC;YACtC,iCAAyB,UAAU,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,WAAoC,EAAE,SAAkB;QACrF,IAAI,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,iEAAiE;YACjE,oEAAoE;YACpE,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC/C,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACzD,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,aAAqB,EAAE,WAAoC,EAAE,SAAkB;QACzG,OAAO,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClF,CAAC;CACF;AAED,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { VariableType } from \"./ShaderBuilder\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/**\r\n * Describes the details of an attribute associated with an attribute name.\r\n * @internal\r\n */\r\nexport interface AttributeDetails {\r\n /** Index used by GPU for binding attribute location for the associated attribute name. */\r\n location: number;\r\n /** What type of variable used for binding the attribute location. */\r\n type: VariableType;\r\n}\r\n\r\ntype AttributeInfo = [string, number, VariableType];\r\n\r\nclass AttributeMapEntry {\r\n public readonly uninstanced = new Map<string, AttributeDetails>();\r\n public readonly instanced = new Map<string, AttributeDetails>();\r\n\r\n public constructor(attributes: AttributeInfo[]) {\r\n for (const attr of attributes) {\r\n const detail = { location: attr[1], type: attr[2] };\r\n this.uninstanced.set(attr[0], detail);\r\n this.instanced.set(attr[0], detail);\r\n }\r\n\r\n const instanceAttrs: Array<[string, VariableType]> = [\r\n [\"a_instanceMatrixRow0\", VariableType.Vec4],\r\n [\"a_instanceMatrixRow1\", VariableType.Vec4],\r\n [\"a_instanceMatrixRow2\", VariableType.Vec4],\r\n [\"a_instanceOverrides\", VariableType.Vec4],\r\n [\"a_instanceRgba\", VariableType.Vec4],\r\n [\"a_featureId\", VariableType.Vec3],\r\n [\"a_patternX\", VariableType.Float],\r\n [\"a_patternY\", VariableType.Float],\r\n ];\r\n\r\n let location = attributes.length;\r\n for (const attr of instanceAttrs) {\r\n this.instanced.set(attr[0], { location, type: attr[1] });\r\n ++location;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A class with static methods which provide access to a global mapping between techniques and attribute details (location and variable type).\r\n * These details are used when constructing shaders and when setting up buffers through implementations of the BuffersContainer abstract class.\r\n * @internal\r\n */\r\nexport class AttributeMap {\r\n private readonly _attrMaps: Map<TechniqueId | undefined, AttributeMapEntry>;\r\n\r\n public constructor() {\r\n const posOnly = new AttributeMapEntry([[\"a_pos\", 0, VariableType.Vec3]]);\r\n const skySphere = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_worldPos\", 1, VariableType.Vec3],\r\n ]);\r\n const polyline = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_prevIndex\", 1, VariableType.Vec3],\r\n [\"a_nextIndex\", 2, VariableType.Vec3],\r\n [\"a_param\", 3, VariableType.Float],\r\n ]);\r\n const edge = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_endPointAndQuadIndices\", 1, VariableType.Vec4],\r\n ]);\r\n const silhouette = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_endPointAndQuadIndices\", 1, VariableType.Vec4],\r\n [\"a_normals\", 2, VariableType.Vec4],\r\n ]);\r\n const pointCloud = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_color\", 1, VariableType.Vec3],\r\n ]);\r\n const realityMesh = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_norm\", 1, VariableType.Vec2],\r\n [\"a_uvParam\", 2, VariableType.Vec2],\r\n ]);\r\n const planarGrid = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec3],\r\n [\"a_uvParam\", 1, VariableType.Vec2],\r\n ]);\r\n\r\n const screenPoints = new AttributeMapEntry([\r\n [\"a_pos\", 0, VariableType.Vec2],\r\n ]);\r\n\r\n this._attrMaps = new Map<TechniqueId | undefined, AttributeMapEntry>([\r\n [undefined, posOnly],\r\n [TechniqueId.SkySphereGradient, skySphere],\r\n [TechniqueId.SkySphereTexture, skySphere],\r\n [TechniqueId.Polyline, polyline],\r\n [TechniqueId.Edge, edge],\r\n [TechniqueId.SilhouetteEdge, silhouette],\r\n [TechniqueId.PointCloud, pointCloud],\r\n [TechniqueId.VolClassCopyZ, screenPoints],\r\n [TechniqueId.RealityMesh, realityMesh],\r\n [TechniqueId.PlanarGrid, planarGrid],\r\n ]);\r\n }\r\n\r\n public static findAttributeMap(techniqueId: TechniqueId | undefined, instanced: boolean): Map<string, AttributeDetails> {\r\n let entry = attributeMap._attrMaps.get(techniqueId);\r\n if (undefined === entry) {\r\n // AttributeMap has a hard-coded entry for undefined techniqueId.\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n entry = attributeMap._attrMaps.get(undefined)!;\r\n attributeMap._attrMaps.set(techniqueId, entry);\r\n }\r\n\r\n return instanced ? entry.instanced : entry.uninstanced;\r\n }\r\n\r\n public static findAttribute(attributeName: string, techniqueId: TechniqueId | undefined, instanced: boolean): AttributeDetails | undefined {\r\n return AttributeMap.findAttributeMap(techniqueId, instanced).get(attributeName);\r\n }\r\n}\r\n\r\nconst attributeMap = new AttributeMap();\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapDrape.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"AAYA,OAAO,EAA6B,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAItB;IACd,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwF;IAE/G,OAAO;IAMP,IAAoB,UAAU,IAAI,OAAO,CAAwD;IAElF,CAAC,MAAM,CAAC,OAAO,CAAC;IAKxB,UAAU,CAAC,OAAO,EAAE,aAAa;WAI1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,kBAAkB;IAIvF,eAAe,CAAC,OAAO,EAAE,YAAY;IAsDrC,IAAI,CAAC,MAAM,EAAE,MAAM;CAiE3B"}
1
+ {"version":3,"file":"BackgroundMapDrape.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"AAYA,OAAO,EAA6B,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAItB;IACd,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsG;IAE7H,OAAO;IAMP,IAAoB,UAAU,IAAI,OAAO,CAAwD;IAElF,CAAC,MAAM,CAAC,OAAO,CAAC;IAKxB,UAAU,CAAC,OAAO,EAAE,aAAa;WAI1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,kBAAkB;IAIvF,eAAe,CAAC,OAAO,EAAE,YAAY;IAsDrC,IAAI,CAAC,MAAM,EAAE,MAAM;CAiE3B"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module WebGL
7
7
  */
8
- import { assert, dispose } from "@itwin/core-bentley";
8
+ import { assert, dispose, expectDefined } from "@itwin/core-bentley";
9
9
  import { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from "@itwin/core-geometry";
10
10
  import { ColorDef, FrustumPlanes, RenderTexture, TextureTransparency } from "@itwin/core-common";
11
11
  import { GraphicsCollectorDrawArgs } from "../../../tile/internal";
@@ -33,7 +33,7 @@ export class BackgroundMapDrape extends TextureDrape {
33
33
  _debugFrustumGraphic = undefined;
34
34
  _symbologyOverrides = new FeatureSymbology.Overrides();
35
35
  _bgColor = ColorDef.from(0, 0, 0, 255);
36
- _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1));
36
+ _plane = expectDefined(Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1)));
37
37
  constructor(drapedTree, mapTree) {
38
38
  super();
39
39
  this._drapedTree = drapedTree;
@@ -86,7 +86,7 @@ export class BackgroundMapDrape extends TextureDrape {
86
86
  builder.setSymbology(ColorDef.green, ColorDef.green, 1);
87
87
  builder.addFrustum(context.viewingSpace.getFrustum());
88
88
  builder.setSymbology(ColorDef.red, ColorDef.red, 1);
89
- builder.addFrustum(this._debugFrustum);
89
+ builder.addFrustum(expectDefined(this._debugFrustum));
90
90
  builder.setSymbology(ColorDef.white, ColorDef.white, 1);
91
91
  builder.addFrustum(this._frustum);
92
92
  this._debugFrustumGraphic = builder.finish();
@@ -116,7 +116,7 @@ export class BackgroundMapDrape extends TextureDrape {
116
116
  const prevPlan = target.plan;
117
117
  const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);
118
118
  const stack = new BranchStack();
119
- stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);
119
+ stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline, prevPlan.contours);
120
120
  stack.setSymbologyOverrides(this._symbologyOverrides);
121
121
  const batchState = new BatchState(stack);
122
122
  System.instance.applyRenderState(drawingParams.state);
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../../tile/internal\";\r\nimport { SceneContext } from \"../../../ViewContext\";\r\nimport { ViewState3d } from \"../../../ViewState\";\r\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\r\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override[Symbol.dispose]() {\r\n super[Symbol.dispose]();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.layerRefHandler.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this[Symbol.dispose]();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, expectDefined } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../../tile/internal\";\r\nimport { SceneContext } from \"../../../ViewContext\";\r\nimport { ViewState3d } from \"../../../ViewState\";\r\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\r\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = expectDefined(Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1)));\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override[Symbol.dispose]() {\r\n super[Symbol.dispose]();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.layerRefHandler.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this[Symbol.dispose]();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(expectDefined(this._debugFrustum));\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline, prevPlan.contours);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
@@ -6,6 +6,7 @@ import { Batch } from "./Graphic";
6
6
  import { UniformHandle } from "./UniformHandle";
7
7
  import { Target } from "./Target";
8
8
  import { FeatureMode } from "./TechniqueFlags";
9
+ import { FeatureAppearanceProvider } from "@itwin/core-common";
9
10
  /** Maintains uniform variable state associated with the Batch currently being drawn by a Target.
10
11
  * @internal
11
12
  */
@@ -21,7 +22,9 @@ export declare class BatchUniforms {
21
22
  private _scratchBytes;
22
23
  private _scratchUint32;
23
24
  constructor(target: Target, batchState: BatchState);
24
- setCurrentBatch(batch: Batch | undefined): void;
25
+ clearCurrentBatch(): void;
26
+ setCurrentBatch(batch: Batch, provider: FeatureAppearanceProvider): void;
27
+ private _setCurrentBatch;
25
28
  resetBatchState(): void;
26
29
  get featureMode(): FeatureMode;
27
30
  bindNumThematicSensors(uniform: UniformHandle): void;
@@ -1 +1 @@
1
- {"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C;;GAEG;AACH,qBAAa,aAAa;IACxB,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACjC,OAAO,SAAK;IAEnB,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAA8C;gBAEjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAKlD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI;IAoC/C,eAAe,IAAI,IAAI;IAI9B,IAAW,WAAW,IAAI,WAAW,CAA8B;IAE5D,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxD,IAAW,gBAAgB,IAAI,OAAO,CAGrC;IAEM,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM5C,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASjD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMrC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK3C,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAUvD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmBtD,+BAA+B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAgB7D,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,GAAG,IAAI;CAW1F"}
1
+ {"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAM/D;;GAEG;AACH,qBAAa,aAAa;IACxB,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACjC,OAAO,SAAK;IAEnB,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAA8C;gBAEjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAKlD,iBAAiB,IAAI,IAAI;IAIzB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAI/E,OAAO,CAAC,gBAAgB;IAuCjB,eAAe,IAAI,IAAI;IAI9B,IAAW,WAAW,IAAI,WAAW,CAA8B;IAE5D,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxD,IAAW,gBAAgB,IAAI,OAAO,CAGrC;IAEM,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM5C,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASjD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMrC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK3C,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAUvD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmBtD,+BAA+B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAgB7D,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,GAAG,IAAI;CAW1F"}
@@ -6,6 +6,7 @@
6
6
  * @module WebGL
7
7
  */
8
8
  import { desync, sync } from "./Sync";
9
+ import { assert } from "@itwin/core-bentley";
9
10
  const scratchRgb = new Float32Array(3);
10
11
  const noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);
11
12
  /** Maintains uniform variable state associated with the Batch currently being drawn by a Target.
@@ -26,23 +27,33 @@ export class BatchUniforms {
26
27
  this.state = batchState;
27
28
  this._target = target;
28
29
  }
29
- setCurrentBatch(batch) {
30
+ clearCurrentBatch() {
31
+ this._setCurrentBatch(undefined, undefined);
32
+ }
33
+ setCurrentBatch(batch, provider) {
34
+ this._setCurrentBatch(batch, provider);
35
+ }
36
+ _setCurrentBatch(batch, provider) {
30
37
  desync(this);
31
- if (undefined !== batch)
38
+ let overrides;
39
+ if (undefined !== batch) {
40
+ assert(undefined !== provider);
41
+ overrides = batch.getOverrides(this._target, provider);
32
42
  this.state.push(batch, false);
33
- else
43
+ }
44
+ else {
34
45
  this.state.pop();
46
+ }
35
47
  const batchId = this.state.currentBatchId;
36
48
  this._scratchUint32[0] = batchId;
37
49
  this._batchId[0] = this._scratchBytes[0];
38
50
  this._batchId[1] = this._scratchBytes[1];
39
51
  this._batchId[2] = this._scratchBytes[2];
40
52
  this._batchId[3] = this._scratchBytes[3];
41
- const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;
42
53
  this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;
43
54
  let sensors;
44
55
  if (undefined !== batch && this._target.wantThematicSensors) {
45
- const distanceCutoff = this._target.plan.thematic.sensorSettings.distanceCutoff;
56
+ const distanceCutoff = this._target.plan.thematic?.sensorSettings.distanceCutoff ?? 0;
46
57
  if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures
47
58
  sensors = batch.getThematicSensors(this._target);
48
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { BatchState } from \"./BatchState\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { Batch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { FeatureMode } from \"./TechniqueFlags\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { Contours } from \"./Contours\";\r\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\r\n\r\nconst scratchRgb = new Float32Array(3);\r\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\r\n\r\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BatchUniforms {\r\n public readonly state: BatchState;\r\n private readonly _target: Target;\r\n private _featureMode = FeatureMode.None;\r\n public syncKey = 0;\r\n\r\n private _overrides?: FeatureOverrides;\r\n private _sensors?: ThematicSensors;\r\n private _contours?: Contours;\r\n private _batchId = new Float32Array(4);\r\n\r\n private _scratchBytes = new Uint8Array(4);\r\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\r\n\r\n public constructor(target: Target, batchState: BatchState) {\r\n this.state = batchState;\r\n this._target = target;\r\n }\r\n\r\n public setCurrentBatch(batch: Batch | undefined): void {\r\n desync(this);\r\n\r\n if (undefined !== batch)\r\n this.state.push(batch, false);\r\n else\r\n this.state.pop();\r\n\r\n const batchId = this.state.currentBatchId;\r\n this._scratchUint32[0] = batchId;\r\n this._batchId[0] = this._scratchBytes[0];\r\n this._batchId[1] = this._scratchBytes[1];\r\n this._batchId[2] = this._scratchBytes[2];\r\n this._batchId[3] = this._scratchBytes[3];\r\n\r\n const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;\r\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\r\n\r\n let sensors: ThematicSensors | undefined;\r\n if (undefined !== batch && this._target.wantThematicSensors) {\r\n const distanceCutoff = this._target.plan.thematic!.sensorSettings.distanceCutoff;\r\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\r\n sensors = batch.getThematicSensors(this._target);\r\n }\r\n this._sensors = sensors;\r\n\r\n if (undefined !== this._overrides)\r\n this._featureMode = FeatureMode.Overrides;\r\n else if (0 !== batchId)\r\n this._featureMode = FeatureMode.Pick;\r\n else\r\n this._featureMode = FeatureMode.None;\r\n\r\n this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;\r\n }\r\n\r\n public resetBatchState(): void {\r\n this.state.reset();\r\n }\r\n\r\n public get featureMode(): FeatureMode { return this._featureMode; }\r\n\r\n public bindNumThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindNumSensors(uniform);\r\n }\r\n\r\n public bindThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindTexture(uniform);\r\n }\r\n\r\n public get wantContourLines(): boolean {\r\n const contours = this._target.currentBranch.contourLine;\r\n return undefined !== contours && contours.displayContours && contours.groups.length > 0;\r\n }\r\n\r\n public bindContourLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._contours)\r\n this._contours.bindContourLUT(uniform);\r\n }\r\n\r\n public bindContourLUTWidth(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n if (undefined === this._contours)\r\n uniform.setUniform1ui(0);\r\n else\r\n this._contours.bindContourLUTWidth(uniform);\r\n }\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._overrides)\r\n this._overrides.bindLUT(uniform);\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n if (undefined !== this._overrides && !sync(this, uniform))\r\n this._overrides.bindLUTParams(uniform);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides)\r\n this._overrides.bindUniformSymbologyFlags(uniform);\r\n else\r\n uniform.setUniform1f(0);\r\n }\r\n\r\n public bindBatchId(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._batchId);\r\n }\r\n\r\n public bindUniformColorOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Rgb) {\r\n scratchRgb[0] = uo[4] / 255.0;\r\n scratchRgb[1] = uo[5] / 255.0;\r\n scratchRgb[2] = uo[6] / 255.0;\r\n uniform.setUniform3fv(scratchRgb);\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n }\r\n\r\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Alpha) {\r\n uniform.setUniform1f(uo[7]/255.0);\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n }\r\n\r\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n let nonLocatable = 0;\r\n if (!ignoreNonLocatable && undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\r\n }\r\n uniform.setUniform1i(nonLocatable);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { BatchState } from \"./BatchState\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { Batch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { FeatureMode } from \"./TechniqueFlags\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { Contours } from \"./Contours\";\r\nimport { OvrFlags } from \"../../../common/internal/render/OvrFlags\";\r\nimport { FeatureAppearanceProvider } from \"@itwin/core-common\";\r\nimport { assert } from \"@itwin/core-bentley\";\r\n\r\nconst scratchRgb = new Float32Array(3);\r\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\r\n\r\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BatchUniforms {\r\n public readonly state: BatchState;\r\n private readonly _target: Target;\r\n private _featureMode = FeatureMode.None;\r\n public syncKey = 0;\r\n\r\n private _overrides?: FeatureOverrides;\r\n private _sensors?: ThematicSensors;\r\n private _contours?: Contours;\r\n private _batchId = new Float32Array(4);\r\n\r\n private _scratchBytes = new Uint8Array(4);\r\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\r\n\r\n public constructor(target: Target, batchState: BatchState) {\r\n this.state = batchState;\r\n this._target = target;\r\n }\r\n\r\n public clearCurrentBatch(): void {\r\n this._setCurrentBatch(undefined, undefined);\r\n }\r\n\r\n public setCurrentBatch(batch: Batch, provider: FeatureAppearanceProvider): void {\r\n this._setCurrentBatch(batch, provider);\r\n }\r\n\r\n private _setCurrentBatch(batch: Batch | undefined, provider: FeatureAppearanceProvider | undefined): void {\r\n desync(this);\r\n\r\n let overrides;\r\n if (undefined !== batch) {\r\n assert(undefined !== provider);\r\n overrides = batch.getOverrides(this._target, provider);\r\n this.state.push(batch, false);\r\n } else {\r\n this.state.pop();\r\n }\r\n\r\n const batchId = this.state.currentBatchId;\r\n this._scratchUint32[0] = batchId;\r\n this._batchId[0] = this._scratchBytes[0];\r\n this._batchId[1] = this._scratchBytes[1];\r\n this._batchId[2] = this._scratchBytes[2];\r\n this._batchId[3] = this._scratchBytes[3];\r\n\r\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\r\n\r\n let sensors: ThematicSensors | undefined;\r\n if (undefined !== batch && this._target.wantThematicSensors) {\r\n const distanceCutoff = this._target.plan.thematic?.sensorSettings.distanceCutoff ?? 0;\r\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\r\n sensors = batch.getThematicSensors(this._target);\r\n }\r\n this._sensors = sensors;\r\n\r\n if (undefined !== this._overrides)\r\n this._featureMode = FeatureMode.Overrides;\r\n else if (0 !== batchId)\r\n this._featureMode = FeatureMode.Pick;\r\n else\r\n this._featureMode = FeatureMode.None;\r\n\r\n this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;\r\n }\r\n\r\n public resetBatchState(): void {\r\n this.state.reset();\r\n }\r\n\r\n public get featureMode(): FeatureMode { return this._featureMode; }\r\n\r\n public bindNumThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindNumSensors(uniform);\r\n }\r\n\r\n public bindThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindTexture(uniform);\r\n }\r\n\r\n public get wantContourLines(): boolean {\r\n const contours = this._target.currentBranch.contourLine;\r\n return undefined !== contours && contours.displayContours && contours.groups.length > 0;\r\n }\r\n\r\n public bindContourLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._contours)\r\n this._contours.bindContourLUT(uniform);\r\n }\r\n\r\n public bindContourLUTWidth(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n if (undefined === this._contours)\r\n uniform.setUniform1ui(0);\r\n else\r\n this._contours.bindContourLUTWidth(uniform);\r\n }\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._overrides)\r\n this._overrides.bindLUT(uniform);\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n if (undefined !== this._overrides && !sync(this, uniform))\r\n this._overrides.bindLUTParams(uniform);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides)\r\n this._overrides.bindUniformSymbologyFlags(uniform);\r\n else\r\n uniform.setUniform1f(0);\r\n }\r\n\r\n public bindBatchId(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._batchId);\r\n }\r\n\r\n public bindUniformColorOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Rgb) {\r\n scratchRgb[0] = uo[4] / 255.0;\r\n scratchRgb[1] = uo[5] / 255.0;\r\n scratchRgb[2] = uo[6] / 255.0;\r\n uniform.setUniform3fv(scratchRgb);\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n }\r\n\r\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Alpha) {\r\n uniform.setUniform1f(uo[7]/255.0);\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n }\r\n\r\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n let nonLocatable = 0;\r\n if (!ignoreNonLocatable && undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\r\n }\r\n uniform.setUniform1i(nonLocatable);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BranchState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BranchState.ts"],"names":[],"mappings":"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"}