@itwin/core-frontend 5.2.0-dev.5 → 5.2.0-dev.7

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 (609) hide show
  1. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  2. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  3. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.js +2 -2
  5. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  6. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  7. package/lib/cjs/CheckpointConnection.js +3 -3
  8. package/lib/cjs/CheckpointConnection.js.map +1 -1
  9. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  10. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  11. package/lib/cjs/ElementLocateManager.js +7 -6
  12. package/lib/cjs/ElementLocateManager.js.map +1 -1
  13. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  14. package/lib/cjs/EmphasizeElements.js +3 -1
  15. package/lib/cjs/EmphasizeElements.js.map +1 -1
  16. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.js +4 -0
  18. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  19. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  20. package/lib/cjs/FrustumAnimator.js +3 -2
  21. package/lib/cjs/FrustumAnimator.js.map +1 -1
  22. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  23. package/lib/cjs/GlobeAnimator.js +7 -6
  24. package/lib/cjs/GlobeAnimator.js.map +1 -1
  25. package/lib/cjs/HitDetail.d.ts.map +1 -1
  26. package/lib/cjs/HitDetail.js +12 -7
  27. package/lib/cjs/HitDetail.js.map +1 -1
  28. package/lib/cjs/IModelApp.d.ts.map +1 -1
  29. package/lib/cjs/IModelApp.js +2 -1
  30. package/lib/cjs/IModelApp.js.map +1 -1
  31. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  32. package/lib/cjs/IModelConnection.js +8 -9
  33. package/lib/cjs/IModelConnection.js.map +1 -1
  34. package/lib/cjs/IpcApp.d.ts.map +1 -1
  35. package/lib/cjs/IpcApp.js +1 -1
  36. package/lib/cjs/IpcApp.js.map +1 -1
  37. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  38. package/lib/cjs/LinePlaneIntersect.js +2 -0
  39. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  40. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.js +2 -1
  42. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  43. package/lib/cjs/Marker.d.ts.map +1 -1
  44. package/lib/cjs/Marker.js +4 -3
  45. package/lib/cjs/Marker.js.map +1 -1
  46. package/lib/cjs/ModelState.d.ts.map +1 -1
  47. package/lib/cjs/ModelState.js +2 -2
  48. package/lib/cjs/ModelState.js.map +1 -1
  49. package/lib/cjs/NativeApp.d.ts.map +1 -1
  50. package/lib/cjs/NativeApp.js +5 -4
  51. package/lib/cjs/NativeApp.js.map +1 -1
  52. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  53. package/lib/cjs/NativeAppLogger.js +1 -0
  54. package/lib/cjs/NativeAppLogger.js.map +1 -1
  55. package/lib/cjs/PlanarClipMaskState.js +3 -3
  56. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  57. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  58. package/lib/cjs/SelectionSet.js +1 -0
  59. package/lib/cjs/SelectionSet.js.map +1 -1
  60. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  61. package/lib/cjs/SheetViewState.js +5 -5
  62. package/lib/cjs/SheetViewState.js.map +1 -1
  63. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  64. package/lib/cjs/SpatialViewState.js +1 -1
  65. package/lib/cjs/SpatialViewState.js.map +1 -1
  66. package/lib/cjs/Sprites.js +2 -2
  67. package/lib/cjs/Sprites.js.map +1 -1
  68. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  69. package/lib/cjs/TentativePoint.js +10 -9
  70. package/lib/cjs/TentativePoint.js.map +1 -1
  71. package/lib/cjs/ViewCreator2d.js +1 -1
  72. package/lib/cjs/ViewCreator2d.js.map +1 -1
  73. package/lib/cjs/ViewCreator3d.js +1 -1
  74. package/lib/cjs/ViewCreator3d.js.map +1 -1
  75. package/lib/cjs/ViewPose.d.ts.map +1 -1
  76. package/lib/cjs/ViewPose.js +4 -1
  77. package/lib/cjs/ViewPose.js.map +1 -1
  78. package/lib/cjs/ViewState.d.ts.map +1 -1
  79. package/lib/cjs/ViewState.js +17 -12
  80. package/lib/cjs/ViewState.js.map +1 -1
  81. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  82. package/lib/cjs/ViewingSpace.js +2 -0
  83. package/lib/cjs/ViewingSpace.js.map +1 -1
  84. package/lib/cjs/Viewport.d.ts.map +1 -1
  85. package/lib/cjs/Viewport.js +17 -10
  86. package/lib/cjs/Viewport.js.map +1 -1
  87. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  88. package/lib/cjs/common/ImageUtil.js +2 -1
  89. package/lib/cjs/common/ImageUtil.js.map +1 -1
  90. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  91. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  93. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  94. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  96. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  97. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  98. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  99. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  101. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  102. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  103. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  104. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  105. package/lib/cjs/internal/ScriptUtils.js +1 -0
  106. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  107. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  108. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  110. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  111. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  113. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  114. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  116. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  117. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  118. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  119. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  120. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  122. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  123. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  125. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  127. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  128. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  129. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  130. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  132. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  133. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  135. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  137. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  138. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  139. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  140. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  141. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  143. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  145. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  147. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  148. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  149. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  150. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  151. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  152. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  153. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  154. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  155. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  156. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  157. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  159. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  160. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  162. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  165. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  166. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  167. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  168. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  170. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  172. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  174. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  175. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  178. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  180. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  184. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  185. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  187. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  188. package/lib/cjs/internal/render/webgl/System.js +1 -1
  189. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  190. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  191. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  192. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  194. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  195. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  196. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  197. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  200. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  208. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  213. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  214. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  215. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  217. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  218. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  219. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  221. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  222. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  223. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  224. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  225. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  226. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  227. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  228. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  229. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  230. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  231. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  232. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  233. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  234. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  235. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  236. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  237. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  238. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  239. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  240. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  241. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  242. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  243. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  244. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  245. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  246. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  247. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  248. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  249. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  250. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  251. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  252. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  253. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  254. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  255. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  257. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  258. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  259. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  260. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  261. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  262. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  263. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  264. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  265. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  266. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  267. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  268. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  269. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  270. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  271. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  272. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  273. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  274. package/lib/cjs/tile/GltfReader.js +54 -16
  275. package/lib/cjs/tile/GltfReader.js.map +1 -1
  276. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  277. package/lib/cjs/tile/RealityTile.js +2 -2
  278. package/lib/cjs/tile/RealityTile.js.map +1 -1
  279. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  280. package/lib/cjs/tile/RealityTileTree.js +5 -5
  281. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  282. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  283. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  284. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  285. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  286. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  287. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  288. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  289. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  290. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  291. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  292. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  293. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  294. package/lib/cjs/tile/map/MapTile.js +10 -8
  295. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  296. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  298. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  299. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  300. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  301. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  302. package/lib/cjs/tools/Tool.js +1 -1
  303. package/lib/cjs/tools/Tool.js.map +1 -1
  304. package/lib/esm/BackgroundMapGeometry.js +14 -14
  305. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  306. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  307. package/lib/esm/BriefcaseConnection.js +2 -2
  308. package/lib/esm/BriefcaseConnection.js.map +1 -1
  309. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  310. package/lib/esm/CheckpointConnection.js +4 -4
  311. package/lib/esm/CheckpointConnection.js.map +1 -1
  312. package/lib/esm/ContextRealityModelState.js.map +1 -1
  313. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  314. package/lib/esm/ElementLocateManager.js +8 -7
  315. package/lib/esm/ElementLocateManager.js.map +1 -1
  316. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  317. package/lib/esm/EmphasizeElements.js +3 -1
  318. package/lib/esm/EmphasizeElements.js.map +1 -1
  319. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  320. package/lib/esm/EnvironmentDecorations.js +4 -0
  321. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  322. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  323. package/lib/esm/FrustumAnimator.js +3 -2
  324. package/lib/esm/FrustumAnimator.js.map +1 -1
  325. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  326. package/lib/esm/GlobeAnimator.js +7 -6
  327. package/lib/esm/GlobeAnimator.js.map +1 -1
  328. package/lib/esm/HitDetail.d.ts.map +1 -1
  329. package/lib/esm/HitDetail.js +12 -7
  330. package/lib/esm/HitDetail.js.map +1 -1
  331. package/lib/esm/IModelApp.d.ts.map +1 -1
  332. package/lib/esm/IModelApp.js +4 -3
  333. package/lib/esm/IModelApp.js.map +1 -1
  334. package/lib/esm/IModelConnection.d.ts.map +1 -1
  335. package/lib/esm/IModelConnection.js +9 -10
  336. package/lib/esm/IModelConnection.js.map +1 -1
  337. package/lib/esm/IpcApp.d.ts.map +1 -1
  338. package/lib/esm/IpcApp.js +2 -2
  339. package/lib/esm/IpcApp.js.map +1 -1
  340. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  341. package/lib/esm/LinePlaneIntersect.js +2 -0
  342. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  343. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  344. package/lib/esm/LocalhostIpcApp.js +2 -1
  345. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  346. package/lib/esm/Marker.d.ts.map +1 -1
  347. package/lib/esm/Marker.js +5 -4
  348. package/lib/esm/Marker.js.map +1 -1
  349. package/lib/esm/ModelState.d.ts.map +1 -1
  350. package/lib/esm/ModelState.js +3 -3
  351. package/lib/esm/ModelState.js.map +1 -1
  352. package/lib/esm/NativeApp.d.ts.map +1 -1
  353. package/lib/esm/NativeApp.js +5 -4
  354. package/lib/esm/NativeApp.js.map +1 -1
  355. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  356. package/lib/esm/NativeAppLogger.js +1 -0
  357. package/lib/esm/NativeAppLogger.js.map +1 -1
  358. package/lib/esm/PlanarClipMaskState.js +3 -3
  359. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  360. package/lib/esm/SelectionSet.d.ts.map +1 -1
  361. package/lib/esm/SelectionSet.js +2 -1
  362. package/lib/esm/SelectionSet.js.map +1 -1
  363. package/lib/esm/SheetViewState.d.ts.map +1 -1
  364. package/lib/esm/SheetViewState.js +6 -6
  365. package/lib/esm/SheetViewState.js.map +1 -1
  366. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  367. package/lib/esm/SpatialViewState.js +2 -2
  368. package/lib/esm/SpatialViewState.js.map +1 -1
  369. package/lib/esm/Sprites.js +2 -2
  370. package/lib/esm/Sprites.js.map +1 -1
  371. package/lib/esm/TentativePoint.d.ts.map +1 -1
  372. package/lib/esm/TentativePoint.js +10 -9
  373. package/lib/esm/TentativePoint.js.map +1 -1
  374. package/lib/esm/ViewCreator2d.js +1 -1
  375. package/lib/esm/ViewCreator2d.js.map +1 -1
  376. package/lib/esm/ViewCreator3d.js +1 -1
  377. package/lib/esm/ViewCreator3d.js.map +1 -1
  378. package/lib/esm/ViewPose.d.ts.map +1 -1
  379. package/lib/esm/ViewPose.js +4 -1
  380. package/lib/esm/ViewPose.js.map +1 -1
  381. package/lib/esm/ViewState.d.ts.map +1 -1
  382. package/lib/esm/ViewState.js +18 -13
  383. package/lib/esm/ViewState.js.map +1 -1
  384. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  385. package/lib/esm/ViewingSpace.js +2 -0
  386. package/lib/esm/ViewingSpace.js.map +1 -1
  387. package/lib/esm/Viewport.d.ts.map +1 -1
  388. package/lib/esm/Viewport.js +18 -11
  389. package/lib/esm/Viewport.js.map +1 -1
  390. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  391. package/lib/esm/common/ImageUtil.js +2 -1
  392. package/lib/esm/common/ImageUtil.js.map +1 -1
  393. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  394. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  395. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  396. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  397. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  398. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  399. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  400. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  401. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  402. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  403. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  404. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  405. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  406. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  407. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  408. package/lib/esm/internal/ScriptUtils.js +1 -0
  409. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  410. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  411. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  412. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  413. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  416. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  420. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  421. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  422. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  424. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  426. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  427. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  428. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  429. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  430. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  431. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  432. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  433. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  434. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  435. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  436. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  437. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  438. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  439. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  440. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  441. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  442. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  443. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  444. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  445. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  446. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  447. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  448. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  449. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  452. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  454. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  455. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  456. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  457. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  458. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  459. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  460. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  461. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  462. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  463. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  464. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  465. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  466. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  467. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  468. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  469. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  470. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  471. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  472. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  473. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  474. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  475. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  476. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  479. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  481. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  482. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  483. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  484. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  485. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  486. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  488. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  489. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  490. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  491. package/lib/esm/internal/render/webgl/System.js +2 -2
  492. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  493. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  494. package/lib/esm/internal/render/webgl/Target.js +11 -8
  495. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  497. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  498. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  499. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  500. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  501. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  502. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  503. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  504. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  505. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  506. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  507. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  509. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  510. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  511. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  514. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  515. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  516. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  517. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  518. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  519. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  520. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  521. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  522. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  523. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  524. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  525. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  526. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  527. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  528. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  529. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  531. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  532. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  533. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  534. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  535. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  536. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  537. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  538. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  539. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  540. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  541. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  542. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  543. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  544. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  545. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  546. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  547. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  548. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  549. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  550. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  551. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  552. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  553. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  554. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  555. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  556. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  557. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  558. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  559. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  560. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  561. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  562. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  563. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  564. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  565. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  566. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  567. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  568. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  569. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  570. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  571. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  572. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  573. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  574. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  575. package/lib/esm/tile/GltfReader.d.ts +5 -2
  576. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  577. package/lib/esm/tile/GltfReader.js +55 -17
  578. package/lib/esm/tile/GltfReader.js.map +1 -1
  579. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  580. package/lib/esm/tile/RealityTile.js +3 -3
  581. package/lib/esm/tile/RealityTile.js.map +1 -1
  582. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  583. package/lib/esm/tile/RealityTileTree.js +6 -6
  584. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  585. package/lib/esm/tile/TileAdmin.js.map +1 -1
  586. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  587. package/lib/esm/tile/TileDrawArgs.js +2 -1
  588. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  589. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  590. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  591. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  592. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  593. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  594. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  595. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  596. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  597. package/lib/esm/tile/map/MapTile.js +11 -9
  598. package/lib/esm/tile/map/MapTile.js.map +1 -1
  599. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  600. package/lib/esm/tile/map/MapTileTree.js +9 -8
  601. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  602. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  603. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  604. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  605. package/lib/esm/tools/Tool.js +2 -2
  606. package/lib/esm/tools/Tool.js.map +1 -1
  607. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  608. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  609. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"SolarShadowMap.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SolarShadowMap.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { ClipUtilities, ConvexClipPlaneSet, Geometry, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport {\n Frustum, FrustumPlanes, RenderMode, RenderTexture, SolarShadowSettings, TextureTransparency, ViewFlags,\n} from \"@itwin/core-common\";\nimport { RenderType } from \"@itwin/webgl-compatibility\";\nimport { Tile, TileDrawArgs, TileTreeReference, TileVisibility } from \"../../../tile/internal\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { EVSMGeometry } from \"./CachedGeometry\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass, TextureUnit } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture, TextureHandle } from \"./Texture\";\n\ntype ProcessTiles = (tiles: Tile[]) => void;\n\nfunction createDrawArgs(sceneContext: SceneContext, solarShadowMap: SolarShadowMap, tree: TileTreeReference, frustumPlanes: FrustumPlanes, processTiles: ProcessTiles): TileDrawArgs | undefined {\n class SolarShadowMapDrawArgs extends TileDrawArgs {\n private _useViewportMap?: boolean;\n private readonly _processTiles: ProcessTiles;\n\n constructor(private _mapFrustumPlanes: FrustumPlanes, private _shadowMap: SolarShadowMap, args: TileDrawArgs, process: ProcessTiles) {\n super(args);\n this._processTiles = process;\n }\n\n // The solar shadow projection is parallel - which can cause excessive tile selection if it is along an axis of an unbounded tile\n // tree such as the OSM buildings. Rev limit the selection here.\n public override get maxRealityTreeSelectionCount(): undefined | number { return 500; }\n\n public override processSelectedTiles(tiles: Tile[]): void {\n this._processTiles(tiles);\n }\n\n public override get frustumPlanes(): FrustumPlanes {\n if (true === this._useViewportMap)\n return super.frustumPlanes;\n else\n return this._mapFrustumPlanes;\n }\n\n public override get worldToViewMap(): Map4d {\n if (true === this._useViewportMap)\n return super.worldToViewMap;\n else\n return this._shadowMap.worldToViewMap;\n }\n\n public override drawGraphics(): void {\n const graphics = this.produceGraphics();\n if (graphics)\n this._shadowMap.addGraphic(graphics);\n }\n\n public override getPixelSize(tile: Tile): number {\n // For tiles that are part of the scene, size them based on the viewport frustum so that shadow map uses same resolution tiles as scene\n // - otherwise artifacts like shadow acne may result.\n // For tiles that are NOT part of the scene, size them based on the shadow frustum, not the viewport frustum\n // - otherwise excessive numbers of excessively detailed may be requested for the shadow map.\n if (undefined === this._useViewportMap) {\n this._useViewportMap = true;\n const vis = tile.computeVisibility(this);\n this._useViewportMap = TileVisibility.OutsideFrustum !== vis;\n }\n\n const size = super.getPixelSize(tile);\n this._useViewportMap = undefined;\n return size;\n }\n\n public static create(context: SceneContext, shadowMap: SolarShadowMap, tileTree: TileTreeReference, planes: FrustumPlanes, process: ProcessTiles) {\n const args = tileTree.createDrawArgs(context);\n return undefined !== args ? new SolarShadowMapDrawArgs(planes, shadowMap, args, process) : undefined;\n }\n }\n\n return SolarShadowMapDrawArgs.create(sceneContext, solarShadowMap, tree, frustumPlanes, processTiles);\n}\n\nconst shadowMapWidth = 4096; // size of original depth buffer map\nconst shadowMapHeight = shadowMapWidth; // TBD - Adjust for aspect ratio.\nconst evsmWidth = shadowMapWidth / 2; // EVSM buffer is 1/2 size each direction\nconst evsmHeight = shadowMapHeight / 2;\nconst postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\n\n// Bundles up the disposable, create-once-and-reuse members of a SolarShadowMap.\nclass Bundle implements WebGLDisposable {\n private constructor(\n public readonly depthTexture: Texture,\n public readonly shadowMapTexture: Texture,\n public readonly fbo: FrameBuffer,\n public readonly fboSM: FrameBuffer,\n public readonly evsmGeom: EVSMGeometry,\n public readonly renderCommands: RenderCommands) {\n }\n\n public static create(target: Target, stack: BranchStack, batch: BatchState): Bundle | undefined {\n const depthTextureHandle = System.instance.createDepthBuffer(shadowMapWidth, shadowMapHeight) as TextureHandle;\n if (undefined === depthTextureHandle)\n return undefined;\n\n let pixelDataType = GL.Texture.DataType.Float;\n switch (System.instance.maxRenderType) {\n case RenderType.TextureFloat:\n break;\n case RenderType.TextureHalfFloat:\n pixelDataType = System.instance.context.HALF_FLOAT;\n break;\n /* falls through */\n default:\n return undefined;\n }\n\n const colorTextures: TextureHandle[] = [];\n\n const fbo = FrameBuffer.create(colorTextures, depthTextureHandle);\n if (undefined === fbo)\n return undefined;\n\n // shadowMap texture is 1/4 size the depth texture (and averaged down when converting)\n const shadowMapTextureHandle = TextureHandle.createForAttachment(evsmWidth, evsmHeight, GL.Texture.Format.Rgba, pixelDataType);\n if (undefined === shadowMapTextureHandle)\n return undefined;\n\n const fboSM = FrameBuffer.create([shadowMapTextureHandle]);\n if (undefined === fboSM)\n return undefined;\n\n const depthTexture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: depthTextureHandle, transparency: TextureTransparency.Opaque });\n const evsmGeom = EVSMGeometry.createGeometry(depthTexture.texture.getHandle()!, shadowMapWidth, shadowMapHeight);\n if (undefined === evsmGeom)\n return undefined;\n\n const shadowMapTexture = new Texture({ type: RenderTexture.Type.Normal, ownership: \"external\", handle: shadowMapTextureHandle, transparency: TextureTransparency.Opaque });\n const renderCommands = new RenderCommands(target, stack, batch);\n return new Bundle(depthTexture, shadowMapTexture, fbo, fboSM, evsmGeom, renderCommands);\n }\n\n public get isDisposed(): boolean {\n return this.depthTexture.isDisposed\n && this.shadowMapTexture.isDisposed\n && this.fbo.isDisposed\n && this.fboSM.isDisposed\n && this.evsmGeom.isDisposed;\n }\n\n public [Symbol.dispose](): void {\n dispose(this.depthTexture);\n dispose(this.shadowMapTexture);\n dispose(this.fbo);\n dispose(this.fboSM);\n dispose(this.evsmGeom);\n }\n}\n\n/** Describes the set of parameters which, when they change, require us to recreate the shadow map. */\nclass ShadowMapParams {\n public readonly direction = new Vector3d();\n public readonly viewFrustum = new Frustum();\n public settings: SolarShadowSettings;\n\n public constructor(viewFrustum: Frustum, direction: Vector3d, settings: SolarShadowSettings) {\n direction.clone(this.direction);\n this.viewFrustum.setFrom(viewFrustum);\n this.settings = settings;\n }\n\n public update(viewFrustum: Frustum, direction: Vector3d, settings: SolarShadowSettings): void {\n this.settings = settings;\n this.viewFrustum.setFrom(viewFrustum);\n direction.clone(this.direction);\n }\n}\n\nconst defaultSunDirection = Vector3d.create(-1, -1, -1).normalize()!;\nconst scratchFrustum = new Frustum();\nconst scratchFrustumPlanes = FrustumPlanes.createEmpty();\n\nexport class SolarShadowMap implements RenderMemory.Consumer, WebGLDisposable {\n private _bundle?: Bundle;\n private _projectionMatrix = Matrix4d.createIdentity();\n private _graphics: RenderGraphic[] = [];\n private _shadowFrustum = new Frustum();\n private _isReady = false;\n private _isDrawing = false;\n private _enabled = false;\n private _params?: ShadowMapParams;\n private readonly _scratchRange = Range3d.createNull();\n private readonly _scratchTransform = Transform.createIdentity();\n\n private readonly _scratchViewFlags = new ViewFlags();\n private readonly _renderState: RenderState;\n private readonly _noZRenderState: RenderState;\n private readonly _batchState: BatchState;\n private _worldToViewMap = Map4d.createIdentity();\n private readonly _target: Target;\n\n // This exists chiefly for debugging. See ToggleShadowMapTilesTool.\n public onGraphicsChanged?: (graphics: RenderGraphic[]) => void;\n\n private getBundle(target: Target): Bundle | undefined {\n if (undefined === this._bundle) {\n this._bundle = Bundle.create(target, target.uniforms.branch.stack, this._batchState);\n assert(undefined !== this._bundle);\n }\n\n return this._bundle;\n }\n\n public get isReady() { return this._isReady; }\n public get isDrawing() { return this._isDrawing; }\n public get isEnabled() { return this._enabled; }\n public get projectionMatrix(): Matrix4d { return this._projectionMatrix; }\n public get depthTexture(): Texture | undefined { return undefined !== this._bundle ? this._bundle.depthTexture : undefined; }\n public get shadowMapTexture(): Texture | undefined { return undefined !== this._bundle ? this._bundle.shadowMapTexture : undefined; }\n public get settings(): SolarShadowSettings | undefined { return undefined !== this._params ? this._params.settings : undefined; }\n public get direction(): Vector3d | undefined { return undefined !== this._params ? this._params.direction : undefined; }\n public get frustum(): Frustum { return this._shadowFrustum; }\n public get worldToViewMap(): Map4d { return this._worldToViewMap; }\n public addGraphic(graphic: RenderGraphic) { this._graphics.push(graphic); }\n\n public constructor(target: Target) {\n this._target = target;\n this._renderState = new RenderState();\n this._renderState.flags.depthMask = true;\n this._renderState.flags.blend = false;\n this._renderState.flags.depthTest = true;\n\n this._noZRenderState = new RenderState();\n this._noZRenderState.flags.depthMask = false;\n\n this._batchState = new BatchState(target.uniforms.branch.stack);\n }\n\n public disable() {\n this._enabled = this._isReady = false;\n this._bundle = dispose(this._bundle);\n this.clearGraphics(true);\n this._target.uniforms.shadow.update();\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bundle = this._bundle;\n if (undefined !== bundle)\n stats.addShadowMap(bundle.depthTexture.bytesUsed + bundle.shadowMapTexture.bytesUsed);\n }\n\n public get isDisposed(): boolean { return undefined === this._bundle && 0 === this._graphics.length; }\n\n public [Symbol.dispose]() {\n this._bundle = dispose(this._bundle);\n this.clearGraphics(true);\n }\n\n private clearGraphics(notify: boolean) {\n for (const graphic of this._graphics)\n graphic[Symbol.dispose]();\n\n this._graphics.length = 0;\n if (notify)\n this.notifyGraphicsChanged();\n }\n\n private notifyGraphicsChanged(): void {\n if (undefined !== this.onGraphicsChanged)\n this.onGraphicsChanged(this._graphics);\n }\n\n public update(context: SceneContext | undefined) {\n this._isReady = false;\n this.clearGraphics(false);\n\n if (undefined === context || !context.viewport.view.isSpatialView()) {\n this.disable();\n this.notifyGraphicsChanged();\n return;\n }\n\n const view = context.viewport.view;\n const style = view.getDisplayStyle3d();\n const sunDirection = style.sunDirection ?? defaultSunDirection;\n\n const minimumHorizonDirection = -.01;\n if (sunDirection.z > minimumHorizonDirection) {\n this.notifyGraphicsChanged();\n return;\n }\n\n this._enabled = true;\n const viewFrustum = context.viewingSpace.getFrustum();\n const settings = style.settings.solarShadows;\n if (undefined === this._params)\n this._params = new ShadowMapParams(viewFrustum, sunDirection, settings);\n else\n this._params.update(viewFrustum, sunDirection, settings);\n\n const iModel = view.iModel;\n\n const worldToMapTransform = Transform.createRefs(Point3d.createZero(), Matrix3d.createRigidHeadsUp(this._params.direction.negate()).inverse()!);\n const worldToMap = Matrix4d.createTransform(worldToMapTransform);\n const mapToWorld = worldToMap.createInverse()!;\n\n // Start with entire project.\n const shadowRange = worldToMapTransform.multiplyRange(iModel.projectExtents);\n\n // Limit the map to only displayed models.\n const viewTileRange = Range3d.createNull();\n for (const ref of view.getTileTreeRefs()) {\n if (ref.castsShadows) {\n if (ref.isGlobal) {\n // A shadow-casting tile tree that spans the globe. Limit its range to the viewed extents.\n for (const p3 of viewFrustum.points) {\n const p4 = worldToMap.multiplyPoint3d(p3, 1);\n if (p4.w > 0.0001)\n viewTileRange.extendXYZW(p4.x, p4.y, p4.z, p4.w);\n else\n viewTileRange.high.z = Math.max(1.0, viewTileRange.high.z); // behind eye plane.\n }\n } else {\n ref.accumulateTransformedRange(viewTileRange, worldToMap, undefined);\n }\n }\n }\n\n if (!viewTileRange.isNull)\n viewTileRange.clone(shadowRange);\n\n // Expand shadow range to include both the shadowers and shadowed portion of background map.\n scratchFrustum.initFromRange(shadowRange);\n mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.\n const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();\n if (undefined !== backgroundMapGeometry) {\n const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum, iModel.projectExtents);\n if (!backgroundDepthRange.isNull)\n shadowRange.low.z = Math.min(shadowRange.low.z, backgroundDepthRange.low);\n }\n\n this._params.viewFrustum.transformBy(worldToMapTransform, scratchFrustum);\n scratchFrustumPlanes.init(scratchFrustum);\n\n const viewIntersectShadowRange = Range3d.createNull();\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(scratchFrustumPlanes.planes);\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, shadowRange, (points: GrowableXYZArray) => {\n for (const point of points.getPoint3dArray())\n viewIntersectShadowRange.extendPoint(point);\n });\n if (viewIntersectShadowRange.isNull) {\n this.notifyGraphicsChanged();\n return;\n }\n viewIntersectShadowRange.high.z = shadowRange.high.z; // We need to include shadowing geometry that may be outside view (along the solar axis).\n\n this._shadowFrustum.initFromRange(viewIntersectShadowRange);\n mapToWorld.multiplyPoint3dArrayQuietNormalize(this._shadowFrustum.points);\n\n const tileRange = Range3d.createNull();\n scratchFrustumPlanes.init(this._shadowFrustum);\n for (const ref of view.getTileTreeRefs()) {\n if (!ref.castsShadows)\n continue;\n\n const drawArgs = createDrawArgs(context, this, ref, scratchFrustumPlanes, (tiles: Tile[]) => {\n for (const tile of tiles)\n tileRange.extendRange(tileToMapTransform.multiplyRange(tile.range, this._scratchRange));\n });\n\n if (undefined === drawArgs)\n continue;\n\n const tileToMapTransform = worldToMapTransform.multiplyTransformTransform(drawArgs.location, this._scratchTransform);\n drawArgs.tree.draw(drawArgs);\n }\n\n if (tileRange.isNull) {\n this.clearGraphics(true);\n } else if (this._graphics.length > 0) {\n // Avoid an uninvertible matrix on empty range...\n if (Geometry.isAlmostEqualNumber(shadowRange.low.x, shadowRange.high.x) ||\n Geometry.isAlmostEqualNumber(shadowRange.low.y, shadowRange.high.y) ||\n Geometry.isAlmostEqualNumber(shadowRange.low.z, shadowRange.high.z)) {\n this.clearGraphics(true);\n return;\n }\n\n const frustumMap = this._shadowFrustum.toMap4d();\n if (undefined === frustumMap) {\n this.clearGraphics(true);\n assert(false);\n return;\n }\n\n this._projectionMatrix = frustumMap.transform0.clone();\n\n const worldToNpc = postProjectionMatrixNpc.multiplyMatrixMatrix(this._projectionMatrix);\n const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(shadowMapWidth, shadowMapHeight, 1))!;\n const npcToWorld = worldToNpc.createInverse();\n if (undefined === npcToWorld) {\n this.clearGraphics(true);\n return;\n }\n\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\n this._worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\n }\n\n this._target.uniforms.shadow.update();\n this.notifyGraphicsChanged();\n }\n\n public draw(target: Target) {\n assert(this.isEnabled);\n\n if (this.isReady || 0 === this._graphics.length)\n return;\n\n const bundle = this.getBundle(target);\n if (undefined === bundle)\n return;\n\n this._isDrawing = true;\n\n const prevState = System.instance.currentRenderState.clone();\n const gl = System.instance.context;\n gl.viewport(0, 0, shadowMapWidth, shadowMapHeight);\n\n // NB: textures and materials are needed because their transparencies affect whether or not a surface casts shadows\n const viewFlags = target.currentViewFlags.copy({\n renderMode: RenderMode.SmoothShade,\n wiremesh: false,\n transparency: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n });\n\n System.instance.applyRenderState(this._renderState);\n const prevPlan = target.plan;\n\n target.changeFrustum(this._shadowFrustum, this._shadowFrustum.getFraction(), true);\n target.uniforms.branch.changeRenderPlan(viewFlags, target.plan.is3d, target.plan.hline);\n\n const renderCommands = bundle.renderCommands;\n renderCommands.reset(target, target.uniforms.branch.stack, this._batchState);\n renderCommands.addGraphics(this._graphics);\n\n System.instance.frameBufferStack.execute(bundle.fbo, true, false, () => {\n System.instance.context.clearDepth(1.0);\n System.instance.context.clear(GL.BufferBit.Depth);\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaquePlanar), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\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.\n });\n\n // copy depth buffer to EVSM shadow buffer and average down for AA effect\n gl.viewport(0, 0, evsmWidth, evsmHeight);\n System.instance.frameBufferStack.execute(bundle.fboSM, true, false, () => {\n System.instance.applyRenderState(this._noZRenderState);\n const params = getDrawParams(target, bundle.evsmGeom);\n target.techniques.draw(params);\n });\n\n // mipmap resulting EVSM texture and set filtering options\n System.instance.activateTexture2d(TextureUnit.ShadowMap, bundle.shadowMapTexture.texture.getHandle());\n gl.generateMipmap(gl.TEXTURE_2D);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n System.instance.setMaxAnisotropy(undefined);\n // target.recordPerformanceMetric(\"Compute EVSM\");\n\n this._batchState.reset(); // Reset the batch Ids...\n target.changeRenderPlan(prevPlan);\n\n System.instance.applyRenderState(prevState);\n System.instance.context.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\n this.clearGraphics(false);\n this._isDrawing = false;\n this._isReady = true;\n }\n}\n"]}
1
+ {"version":3,"file":"SolarShadowMap.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SolarShadowMap.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, expectDefined } from \"@itwin/core-bentley\";\nimport { ClipUtilities, ConvexClipPlaneSet, Geometry, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Point3d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport {\n Frustum, FrustumPlanes, RenderMode, RenderTexture, SolarShadowSettings, TextureTransparency, ViewFlags,\n} from \"@itwin/core-common\";\nimport { RenderType } from \"@itwin/webgl-compatibility\";\nimport { Tile, TileDrawArgs, TileTreeReference, TileVisibility } from \"../../../tile/internal\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { EVSMGeometry } from \"./CachedGeometry\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass, TextureUnit } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture, TextureHandle } from \"./Texture\";\n\ntype ProcessTiles = (tiles: Tile[]) => void;\n\nfunction createDrawArgs(sceneContext: SceneContext, solarShadowMap: SolarShadowMap, tree: TileTreeReference, frustumPlanes: FrustumPlanes, processTiles: ProcessTiles): TileDrawArgs | undefined {\n class SolarShadowMapDrawArgs extends TileDrawArgs {\n private _useViewportMap?: boolean;\n private readonly _processTiles: ProcessTiles;\n\n constructor(private _mapFrustumPlanes: FrustumPlanes, private _shadowMap: SolarShadowMap, args: TileDrawArgs, process: ProcessTiles) {\n super(args);\n this._processTiles = process;\n }\n\n // The solar shadow projection is parallel - which can cause excessive tile selection if it is along an axis of an unbounded tile\n // tree such as the OSM buildings. Rev limit the selection here.\n public override get maxRealityTreeSelectionCount(): undefined | number { return 500; }\n\n public override processSelectedTiles(tiles: Tile[]): void {\n this._processTiles(tiles);\n }\n\n public override get frustumPlanes(): FrustumPlanes {\n if (true === this._useViewportMap)\n return super.frustumPlanes;\n else\n return this._mapFrustumPlanes;\n }\n\n public override get worldToViewMap(): Map4d {\n if (true === this._useViewportMap)\n return super.worldToViewMap;\n else\n return this._shadowMap.worldToViewMap;\n }\n\n public override drawGraphics(): void {\n const graphics = this.produceGraphics();\n if (graphics)\n this._shadowMap.addGraphic(graphics);\n }\n\n public override getPixelSize(tile: Tile): number {\n // For tiles that are part of the scene, size them based on the viewport frustum so that shadow map uses same resolution tiles as scene\n // - otherwise artifacts like shadow acne may result.\n // For tiles that are NOT part of the scene, size them based on the shadow frustum, not the viewport frustum\n // - otherwise excessive numbers of excessively detailed may be requested for the shadow map.\n if (undefined === this._useViewportMap) {\n this._useViewportMap = true;\n const vis = tile.computeVisibility(this);\n this._useViewportMap = TileVisibility.OutsideFrustum !== vis;\n }\n\n const size = super.getPixelSize(tile);\n this._useViewportMap = undefined;\n return size;\n }\n\n public static create(context: SceneContext, shadowMap: SolarShadowMap, tileTree: TileTreeReference, planes: FrustumPlanes, process: ProcessTiles) {\n const args = tileTree.createDrawArgs(context);\n return undefined !== args ? new SolarShadowMapDrawArgs(planes, shadowMap, args, process) : undefined;\n }\n }\n\n return SolarShadowMapDrawArgs.create(sceneContext, solarShadowMap, tree, frustumPlanes, processTiles);\n}\n\nconst shadowMapWidth = 4096; // size of original depth buffer map\nconst shadowMapHeight = shadowMapWidth; // TBD - Adjust for aspect ratio.\nconst evsmWidth = shadowMapWidth / 2; // EVSM buffer is 1/2 size each direction\nconst evsmHeight = shadowMapHeight / 2;\nconst postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\n\n// Bundles up the disposable, create-once-and-reuse members of a SolarShadowMap.\nclass Bundle implements WebGLDisposable {\n private constructor(\n public readonly depthTexture: Texture,\n public readonly shadowMapTexture: Texture,\n public readonly fbo: FrameBuffer,\n public readonly fboSM: FrameBuffer,\n public readonly evsmGeom: EVSMGeometry,\n public readonly renderCommands: RenderCommands) {\n }\n\n public static create(target: Target, stack: BranchStack, batch: BatchState): Bundle | undefined {\n const depthTextureHandle = System.instance.createDepthBuffer(shadowMapWidth, shadowMapHeight) as TextureHandle;\n if (undefined === depthTextureHandle)\n return undefined;\n\n let pixelDataType = GL.Texture.DataType.Float;\n switch (System.instance.maxRenderType) {\n case RenderType.TextureFloat:\n break;\n case RenderType.TextureHalfFloat:\n pixelDataType = System.instance.context.HALF_FLOAT;\n break;\n /* falls through */\n default:\n return undefined;\n }\n\n const colorTextures: TextureHandle[] = [];\n\n const fbo = FrameBuffer.create(colorTextures, depthTextureHandle);\n if (undefined === fbo)\n return undefined;\n\n // shadowMap texture is 1/4 size the depth texture (and averaged down when converting)\n const shadowMapTextureHandle = TextureHandle.createForAttachment(evsmWidth, evsmHeight, GL.Texture.Format.Rgba, pixelDataType);\n if (undefined === shadowMapTextureHandle)\n return undefined;\n\n const fboSM = FrameBuffer.create([shadowMapTextureHandle]);\n if (undefined === fboSM)\n return undefined;\n\n const depthTexture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: depthTextureHandle, transparency: TextureTransparency.Opaque });\n const evsmGeom = EVSMGeometry.createGeometry(expectDefined(depthTexture.texture.getHandle()), shadowMapWidth, shadowMapHeight);\n if (undefined === evsmGeom)\n return undefined;\n\n const shadowMapTexture = new Texture({ type: RenderTexture.Type.Normal, ownership: \"external\", handle: shadowMapTextureHandle, transparency: TextureTransparency.Opaque });\n const renderCommands = new RenderCommands(target, stack, batch);\n return new Bundle(depthTexture, shadowMapTexture, fbo, fboSM, evsmGeom, renderCommands);\n }\n\n public get isDisposed(): boolean {\n return this.depthTexture.isDisposed\n && this.shadowMapTexture.isDisposed\n && this.fbo.isDisposed\n && this.fboSM.isDisposed\n && this.evsmGeom.isDisposed;\n }\n\n public [Symbol.dispose](): void {\n dispose(this.depthTexture);\n dispose(this.shadowMapTexture);\n dispose(this.fbo);\n dispose(this.fboSM);\n dispose(this.evsmGeom);\n }\n}\n\n/** Describes the set of parameters which, when they change, require us to recreate the shadow map. */\nclass ShadowMapParams {\n public readonly direction = new Vector3d();\n public readonly viewFrustum = new Frustum();\n public settings: SolarShadowSettings;\n\n public constructor(viewFrustum: Frustum, direction: Vector3d, settings: SolarShadowSettings) {\n direction.clone(this.direction);\n this.viewFrustum.setFrom(viewFrustum);\n this.settings = settings;\n }\n\n public update(viewFrustum: Frustum, direction: Vector3d, settings: SolarShadowSettings): void {\n this.settings = settings;\n this.viewFrustum.setFrom(viewFrustum);\n direction.clone(this.direction);\n }\n}\n\n// We know that normalize won't fail on this hard-coded vector.\n// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\nconst defaultSunDirection = Vector3d.create(-1, -1, -1).normalize()!;\nconst scratchFrustum = new Frustum();\nconst scratchFrustumPlanes = FrustumPlanes.createEmpty();\n\nexport class SolarShadowMap implements RenderMemory.Consumer, WebGLDisposable {\n private _bundle?: Bundle;\n private _projectionMatrix = Matrix4d.createIdentity();\n private _graphics: RenderGraphic[] = [];\n private _shadowFrustum = new Frustum();\n private _isReady = false;\n private _isDrawing = false;\n private _enabled = false;\n private _params?: ShadowMapParams;\n private readonly _scratchRange = Range3d.createNull();\n private readonly _scratchTransform = Transform.createIdentity();\n\n private readonly _scratchViewFlags = new ViewFlags();\n private readonly _renderState: RenderState;\n private readonly _noZRenderState: RenderState;\n private readonly _batchState: BatchState;\n private _worldToViewMap = Map4d.createIdentity();\n private readonly _target: Target;\n\n // This exists chiefly for debugging. See ToggleShadowMapTilesTool.\n public onGraphicsChanged?: (graphics: RenderGraphic[]) => void;\n\n private getBundle(target: Target): Bundle | undefined {\n if (undefined === this._bundle) {\n this._bundle = Bundle.create(target, target.uniforms.branch.stack, this._batchState);\n assert(undefined !== this._bundle);\n }\n\n return this._bundle;\n }\n\n public get isReady() { return this._isReady; }\n public get isDrawing() { return this._isDrawing; }\n public get isEnabled() { return this._enabled; }\n public get projectionMatrix(): Matrix4d { return this._projectionMatrix; }\n public get depthTexture(): Texture | undefined { return undefined !== this._bundle ? this._bundle.depthTexture : undefined; }\n public get shadowMapTexture(): Texture | undefined { return undefined !== this._bundle ? this._bundle.shadowMapTexture : undefined; }\n public get settings(): SolarShadowSettings | undefined { return undefined !== this._params ? this._params.settings : undefined; }\n public get direction(): Vector3d | undefined { return undefined !== this._params ? this._params.direction : undefined; }\n public get frustum(): Frustum { return this._shadowFrustum; }\n public get worldToViewMap(): Map4d { return this._worldToViewMap; }\n public addGraphic(graphic: RenderGraphic) { this._graphics.push(graphic); }\n\n public constructor(target: Target) {\n this._target = target;\n this._renderState = new RenderState();\n this._renderState.flags.depthMask = true;\n this._renderState.flags.blend = false;\n this._renderState.flags.depthTest = true;\n\n this._noZRenderState = new RenderState();\n this._noZRenderState.flags.depthMask = false;\n\n this._batchState = new BatchState(target.uniforms.branch.stack);\n }\n\n public disable() {\n this._enabled = this._isReady = false;\n this._bundle = dispose(this._bundle);\n this.clearGraphics(true);\n this._target.uniforms.shadow.update();\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bundle = this._bundle;\n if (undefined !== bundle)\n stats.addShadowMap(bundle.depthTexture.bytesUsed + bundle.shadowMapTexture.bytesUsed);\n }\n\n public get isDisposed(): boolean { return undefined === this._bundle && 0 === this._graphics.length; }\n\n public [Symbol.dispose]() {\n this._bundle = dispose(this._bundle);\n this.clearGraphics(true);\n }\n\n private clearGraphics(notify: boolean) {\n for (const graphic of this._graphics)\n graphic[Symbol.dispose]();\n\n this._graphics.length = 0;\n if (notify)\n this.notifyGraphicsChanged();\n }\n\n private notifyGraphicsChanged(): void {\n if (undefined !== this.onGraphicsChanged)\n this.onGraphicsChanged(this._graphics);\n }\n\n public update(context: SceneContext | undefined) {\n this._isReady = false;\n this.clearGraphics(false);\n\n if (undefined === context || !context.viewport.view.isSpatialView()) {\n this.disable();\n this.notifyGraphicsChanged();\n return;\n }\n\n const view = context.viewport.view;\n const style = view.getDisplayStyle3d();\n const sunDirection = style.sunDirection ?? defaultSunDirection;\n\n const minimumHorizonDirection = -.01;\n if (sunDirection.z > minimumHorizonDirection) {\n this.notifyGraphicsChanged();\n return;\n }\n\n this._enabled = true;\n const viewFrustum = context.viewingSpace.getFrustum();\n const settings = style.settings.solarShadows;\n if (undefined === this._params)\n this._params = new ShadowMapParams(viewFrustum, sunDirection, settings);\n else\n this._params.update(viewFrustum, sunDirection, settings);\n\n const iModel = view.iModel;\n\n const worldToMapTransform = Transform.createRefs(Point3d.createZero(), expectDefined(Matrix3d.createRigidHeadsUp(this._params.direction.negate()).inverse()));\n const worldToMap = Matrix4d.createTransform(worldToMapTransform);\n const mapToWorld = expectDefined(worldToMap.createInverse());\n\n // Start with entire project.\n const shadowRange = worldToMapTransform.multiplyRange(iModel.projectExtents);\n\n // Limit the map to only displayed models.\n const viewTileRange = Range3d.createNull();\n for (const ref of view.getTileTreeRefs()) {\n if (ref.castsShadows) {\n if (ref.isGlobal) {\n // A shadow-casting tile tree that spans the globe. Limit its range to the viewed extents.\n for (const p3 of viewFrustum.points) {\n const p4 = worldToMap.multiplyPoint3d(p3, 1);\n if (p4.w > 0.0001)\n viewTileRange.extendXYZW(p4.x, p4.y, p4.z, p4.w);\n else\n viewTileRange.high.z = Math.max(1.0, viewTileRange.high.z); // behind eye plane.\n }\n } else {\n ref.accumulateTransformedRange(viewTileRange, worldToMap, undefined);\n }\n }\n }\n\n if (!viewTileRange.isNull)\n viewTileRange.clone(shadowRange);\n\n // Expand shadow range to include both the shadowers and shadowed portion of background map.\n scratchFrustum.initFromRange(shadowRange);\n mapToWorld.multiplyPoint3dArrayQuietNormalize(scratchFrustum.points); // This frustum represents the shadowing geometry. Intersect it with background geometry and expand the range depth to include that intersection.\n const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();\n if (undefined !== backgroundMapGeometry) {\n const backgroundDepthRange = backgroundMapGeometry.getFrustumIntersectionDepthRange(this._shadowFrustum, iModel.projectExtents);\n if (!backgroundDepthRange.isNull)\n shadowRange.low.z = Math.min(shadowRange.low.z, backgroundDepthRange.low);\n }\n\n this._params.viewFrustum.transformBy(worldToMapTransform, scratchFrustum);\n scratchFrustumPlanes.init(scratchFrustum);\n\n const viewIntersectShadowRange = Range3d.createNull();\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(scratchFrustumPlanes.planes);\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, shadowRange, (points: GrowableXYZArray) => {\n for (const point of points.getPoint3dArray())\n viewIntersectShadowRange.extendPoint(point);\n });\n if (viewIntersectShadowRange.isNull) {\n this.notifyGraphicsChanged();\n return;\n }\n viewIntersectShadowRange.high.z = shadowRange.high.z; // We need to include shadowing geometry that may be outside view (along the solar axis).\n\n this._shadowFrustum.initFromRange(viewIntersectShadowRange);\n mapToWorld.multiplyPoint3dArrayQuietNormalize(this._shadowFrustum.points);\n\n const tileRange = Range3d.createNull();\n scratchFrustumPlanes.init(this._shadowFrustum);\n for (const ref of view.getTileTreeRefs()) {\n if (!ref.castsShadows)\n continue;\n\n const drawArgs = createDrawArgs(context, this, ref, scratchFrustumPlanes, (tiles: Tile[]) => {\n for (const tile of tiles)\n tileRange.extendRange(tileToMapTransform.multiplyRange(tile.range, this._scratchRange));\n });\n\n if (undefined === drawArgs)\n continue;\n\n const tileToMapTransform = worldToMapTransform.multiplyTransformTransform(drawArgs.location, this._scratchTransform);\n drawArgs.tree.draw(drawArgs);\n }\n\n if (tileRange.isNull) {\n this.clearGraphics(true);\n } else if (this._graphics.length > 0) {\n // Avoid an uninvertible matrix on empty range...\n if (Geometry.isAlmostEqualNumber(shadowRange.low.x, shadowRange.high.x) ||\n Geometry.isAlmostEqualNumber(shadowRange.low.y, shadowRange.high.y) ||\n Geometry.isAlmostEqualNumber(shadowRange.low.z, shadowRange.high.z)) {\n this.clearGraphics(true);\n return;\n }\n\n const frustumMap = this._shadowFrustum.toMap4d();\n if (undefined === frustumMap) {\n this.clearGraphics(true);\n assert(false);\n return;\n }\n\n this._projectionMatrix = frustumMap.transform0.clone();\n\n const worldToNpc = postProjectionMatrixNpc.multiplyMatrixMatrix(this._projectionMatrix);\n const npcToView = expectDefined(Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(shadowMapWidth, shadowMapHeight, 1)));\n const npcToWorld = worldToNpc.createInverse();\n if (undefined === npcToWorld) {\n this.clearGraphics(true);\n return;\n }\n\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\n this._worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\n }\n\n this._target.uniforms.shadow.update();\n this.notifyGraphicsChanged();\n }\n\n public draw(target: Target) {\n assert(this.isEnabled);\n\n if (this.isReady || 0 === this._graphics.length)\n return;\n\n const bundle = this.getBundle(target);\n if (undefined === bundle)\n return;\n\n this._isDrawing = true;\n\n const prevState = System.instance.currentRenderState.clone();\n const gl = System.instance.context;\n gl.viewport(0, 0, shadowMapWidth, shadowMapHeight);\n\n // NB: textures and materials are needed because their transparencies affect whether or not a surface casts shadows\n const viewFlags = target.currentViewFlags.copy({\n renderMode: RenderMode.SmoothShade,\n wiremesh: false,\n transparency: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n });\n\n System.instance.applyRenderState(this._renderState);\n const prevPlan = target.plan;\n\n target.changeFrustum(this._shadowFrustum, this._shadowFrustum.getFraction(), true);\n target.uniforms.branch.changeRenderPlan(viewFlags, target.plan.is3d, target.plan.hline);\n\n const renderCommands = bundle.renderCommands;\n renderCommands.reset(target, target.uniforms.branch.stack, this._batchState);\n renderCommands.addGraphics(this._graphics);\n\n System.instance.frameBufferStack.execute(bundle.fbo, true, false, () => {\n System.instance.context.clearDepth(1.0);\n System.instance.context.clear(GL.BufferBit.Depth);\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaquePlanar), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\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.\n });\n\n // copy depth buffer to EVSM shadow buffer and average down for AA effect\n gl.viewport(0, 0, evsmWidth, evsmHeight);\n System.instance.frameBufferStack.execute(bundle.fboSM, true, false, () => {\n System.instance.applyRenderState(this._noZRenderState);\n const params = getDrawParams(target, bundle.evsmGeom);\n target.techniques.draw(params);\n });\n\n // mipmap resulting EVSM texture and set filtering options\n System.instance.activateTexture2d(TextureUnit.ShadowMap, bundle.shadowMapTexture.texture.getHandle());\n gl.generateMipmap(gl.TEXTURE_2D);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n System.instance.setMaxAnisotropy(undefined);\n // target.recordPerformanceMetric(\"Compute EVSM\");\n\n this._batchState.reset(); // Reset the batch Ids...\n target.changeRenderPlan(prevPlan);\n\n System.instance.applyRenderState(prevState);\n System.instance.context.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\n this.clearGraphics(false);\n this._isDrawing = false;\n this._isReady = true;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/System.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/System.ts"],"names":[],"mappings":"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"}
@@ -658,7 +658,7 @@ class System extends RenderSystem_1.RenderSystem {
658
658
  activateTextureCubeMap(unit, texture) { this.bindTexture(unit, GL_1.GL.Texture.Target.CubeMap, texture, true); }
659
659
  // Ensure *something* is bound to suppress 'no texture assigned to unit x' warnings.
660
660
  ensureSamplerBound(uniform, unit) {
661
- this.lineCodeTexture.bindSampler(uniform, unit);
661
+ (0, core_bentley_1.expectDefined)(this.lineCodeTexture).bindSampler(uniform, unit);
662
662
  }
663
663
  get maxRealityImageryLayers() {
664
664
  return 6;
@@ -1 +1 @@
1
- {"version":3,"file":"System.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/System.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, BentleyStatus, Dictionary, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { ColorDef, ElementAlignedBox3d, Frustum, Gradient, ImageBuffer, ImageBufferFormat, ImageSourceFormat, IModelError, RenderFeatureTable, RenderMaterial, RenderMaterialParams, RenderTexture, RenderTextureParams, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\nimport { ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { Capabilities, WebGLContext } from \"@itwin/webgl-compatibility\";\nimport { IModelApp } from \"../../../IModelApp\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { MapTileTreeReference, TileTreeReference } from \"../../../tile/internal\";\nimport { imageElementFromImageSource } from \"../../../common/ImageUtil\";\nimport { MeshParams } from \"../../../common/internal/render/MeshParams\";\nimport { PointStringParams } from \"../../../common/internal/render/PointStringParams\";\nimport { PolylineParams } from \"../../../common/internal/render/PolylineParams\";\nimport { TextureCacheKey } from \"../../../common/render/TextureParams\";\nimport { ViewRect } from \"../../../common/ViewRect\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../../../render/GraphicBranch\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../../render/GraphicBuilder\";\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../../../common/render/InstancedGraphicParams\";\nimport { PrimitiveBuilder } from \"../../../internal/render/PrimitiveBuilder\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { PointCloudArgs } from \"../../../common/internal/render/PointCloudPrimitive\";\nimport { RenderClipVolume } from \"../../../render/RenderClipVolume\";\nimport { RenderGraphic, RenderGraphicOwner } from \"../../../render/RenderGraphic\";\nimport { CreateRenderMaterialArgs } from \"../../../render/CreateRenderMaterialArgs\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\nimport {\n CreateGraphicFromTemplateArgs, PlanarGridProps, RenderInstances, RenderSystem,\n} from \"../../../render/RenderSystem\";\nimport { DebugShaderFile, GLTimerResultCallback, RenderDiagnostics, RenderSystemDebugControl } from \"../RenderSystemDebugControl\";\nimport { RenderTarget } from \"../../../render/RenderTarget\";\nimport { CreateTextureArgs, CreateTextureFromSourceArgs } from \"../../../render/CreateTextureArgs\";\nimport { ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams } from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { BackgroundMapDrape } from \"./BackgroundMapDrape\";\nimport { SkyBoxQuadsGeometry, SkySphereViewportQuadGeometry } from \"./CachedGeometry\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { Debug } from \"./Diagnostics\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DepthBuffer, FrameBufferStack } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { GLTimer } from \"./GLTimer\";\nimport { AnimationTransformBranch, Batch, Branch, Graphic, GraphicOwner, GraphicsArray } from \"./Graphic\";\nimport { InstanceBuffers, isInstancedGraphicParams, PatternBuffers, RenderInstancesImpl } from \"./InstancedGeometry\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LineCode } from \"./LineCode\";\nimport { Material } from \"./Material\";\nimport { MeshGraphic, MeshRenderGeometry } from \"./Mesh\";\nimport { PlanarGridGeometry } from \"./PlanarGrid\";\nimport { PointCloudGeometry } from \"./PointCloud\";\nimport { PointStringGeometry } from \"./PointString\";\nimport { PolylineGeometry } from \"./Polyline\";\nimport { Primitive, SkyCubePrimitive, SkySpherePrimitive } from \"./Primitive\";\nimport { RealityMeshGeometry } from \"./RealityMesh\";\nimport { RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { createScreenSpaceEffectBuilder, ScreenSpaceEffects } from \"./ScreenSpaceEffect\";\nimport { OffScreenTarget, OnScreenTarget } from \"./Target\";\nimport { Techniques } from \"./Technique\";\nimport { ExternalTextureLoader, Texture, TextureHandle } from \"./Texture\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\nimport { RenderInstancesParams } from \"../../../common/render/RenderInstancesParams\";\nimport { _batch, _branch, _featureTable, _nodes } from \"../../../common/internal/Symbols\";\nimport { RenderInstancesParamsImpl } from \"../../../internal/render/RenderInstancesParamsImpl\";\nimport { RenderSkyBoxParams } from \"../RenderSkyBoxParams\";\nimport { RenderAreaPattern } from \"../RenderAreaPattern\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport const enum ContextState {\n Uninitialized,\n Success,\n Error,\n}\n\ntype RenderGeometryImpl = MeshRenderGeometry | RealityMeshGeometry | PolylineGeometry | PointStringGeometry | PointCloudGeometry;\n\n/** Id map holds key value pairs for both materials and textures, useful for caching such objects.\n * @internal\n */\nexport class IdMap implements WebGLDisposable {\n private readonly _iModel: IModelConnection;\n /** Mapping of materials by their key values. */\n public readonly materials = new Map<string, RenderMaterial>();\n /** Mapping of textures by their key values. */\n public readonly textures = new Map<string, RenderTexture>();\n /** Mapping of textures using gradient symbology. */\n public readonly gradients = new Dictionary<Gradient.Symb, RenderTexture>((lhs, rhs) => Gradient.Symb.compareSymb(lhs, rhs));\n /** Pending promises to create a texture from an ImageSource. This prevents us from decoding the same ImageSource multiple times */\n public readonly texturesFromImageSources = new Map<string, Promise<RenderTexture | undefined>>();\n\n public constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n public get isDisposed(): boolean {\n return 0 === this.textures.size && 0 === this.gradients.size;\n }\n\n public [Symbol.dispose]() {\n const textureArr = Array.from(this.textures.values());\n const gradientArr = this.gradients.extractArrays().values;\n\n for (const texture of textureArr)\n dispose(texture);\n\n for (const gradient of gradientArr)\n dispose(gradient);\n\n this.textures.clear();\n this.gradients.clear();\n this.materials.clear();\n }\n\n /** Add a material to this IdMap, given that it has a valid key. */\n public addMaterial(material: RenderMaterial) {\n if (material.key)\n this.materials.set(material.key, material);\n }\n\n /** Add a texture to this IdMap, given that it has a valid string key. If specified, it will instead use the key parameter, which could also be a gradient symb. */\n public addTexture(texture: RenderTexture, key?: TextureCacheKey) {\n assert(texture instanceof Texture);\n if (undefined !== key) {\n if (\"string\" === typeof key)\n this.textures.set(key, texture);\n else\n this.addGradient(key, texture);\n } else if (texture.key)\n this.textures.set(texture.key, texture);\n }\n\n /** Add a texture to this IdMap using gradient symbology. */\n public addGradient(gradientSymb: Gradient.Symb, texture: RenderTexture) {\n this.gradients.set(gradientSymb, texture);\n }\n\n /** Find a cached material using its key. If not found, returns undefined. */\n public findMaterial(key: string): RenderMaterial | undefined {\n return this.materials.get(key);\n }\n\n /** Find a cached gradient using the gradient symbology. If not found, returns undefined. */\n public findGradient(symb: Gradient.Symb): RenderTexture | undefined {\n return this.gradients.get(symb);\n }\n\n /** Find or create a new material given material parameters. This will cache the material if its key is valid. */\n\n public getMaterial(params: RenderMaterialParams): RenderMaterial {\n if (!params.key || !Id64.isValidId64(params.key)) // Only cache persistent materials.\n return new Material(params);\n\n let material = this.materials.get(params.key);\n if (!material) {\n material = new Material(params);\n this.materials.set(params.key, material);\n }\n return material;\n }\n\n public findTexture(key?: string | Gradient.Symb): RenderTexture | undefined {\n if (undefined === key)\n return undefined;\n else if (typeof key === \"string\")\n return this.textures.get(key);\n else\n return this.findGradient(key);\n }\n\n\n public getTextureFromElement(key: Id64String, iModel: IModelConnection, params: RenderTextureParams, format: ImageSourceFormat): RenderTexture | undefined {\n let tex = this.findTexture(params.key);\n if (tex)\n return tex;\n\n const handle = TextureHandle.createForElement(key, iModel, params.type, format, (_, data) => {\n if (tex) {\n assert(tex instanceof Texture);\n tex.transparency = data.transparency ?? TextureTransparency.Mixed;\n }\n });\n\n if (!handle)\n return undefined;\n\n tex = new Texture({ handle, type: params.type, ownership: { key, iModel }, transparency: TextureTransparency.Opaque });\n this.addTexture(tex);\n return tex;\n }\n\n public async getTextureFromImageSource(args: CreateTextureFromSourceArgs, key: string): Promise<RenderTexture | undefined> {\n const texture = this.findTexture(key);\n if (texture)\n return texture;\n\n // Are we already in the process of decoding this image?\n let promise = this.texturesFromImageSources.get(key);\n if (promise)\n return promise;\n\n promise = this.createTextureFromImageSource(args, key);\n this.texturesFromImageSources.set(key, promise);\n return promise;\n }\n\n public async createTextureFromImageSource(args: CreateTextureFromSourceArgs, key: string): Promise<RenderTexture | undefined> {\n // JPEGs don't support transparency.\n const transparency = ImageSourceFormat.Jpeg === args.source.format ? TextureTransparency.Opaque : (args.transparency ?? TextureTransparency.Mixed);\n try {\n const image = await imageElementFromImageSource(args.source);\n if (!IModelApp.hasRenderSystem)\n return undefined;\n\n return IModelApp.renderSystem.createTexture({\n type: args.type,\n ownership: args.ownership,\n image: {\n source: image,\n transparency,\n },\n });\n } catch {\n return undefined;\n } finally {\n this.texturesFromImageSources.delete(key);\n }\n }\n\n\n public getTextureFromCubeImages(posX: HTMLImageElement, negX: HTMLImageElement, posY: HTMLImageElement, negY: HTMLImageElement, posZ: HTMLImageElement, negZ: HTMLImageElement, params: RenderTextureParams): RenderTexture | undefined {\n let tex = this.findTexture(params.key);\n if (tex)\n return tex;\n\n const handle = TextureHandle.createForCubeImages(posX, negX, posY, negY, posZ, negZ);\n if (!handle)\n return undefined;\n\n const ownership = params.key ? { key: params.key, iModel: this._iModel } : (params.isOwned ? \"external\" : undefined);\n tex = new Texture({ handle, ownership, type: params.type, transparency: TextureTransparency.Opaque });\n this.addTexture(tex);\n return tex;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const texture of this.textures.values())\n if (texture instanceof Texture)\n stats.addTexture(texture.bytesUsed);\n\n for (const gradient of this.gradients)\n if (gradient instanceof Texture)\n stats.addTexture(gradient.bytesUsed);\n }\n}\n\nexport type TextureBinding = WebGLTexture | undefined;\n\nconst enum VertexAttribState {\n Disabled = 0,\n Enabled = 1 << 0,\n Instanced = 1 << 2,\n InstancedEnabled = Instanced | Enabled,\n}\n\ninterface TextureCacheInfo {\n idMap: IdMap;\n key: TextureCacheKey;\n}\n\nfunction getMaterialColor(color: ColorDef | RgbColorProps | undefined): ColorDef | undefined {\n if (color instanceof ColorDef)\n return color;\n\n return color ? ColorDef.from(color.r, color.g, color.b) : undefined;\n}\n\n/** @internal */\nexport class System extends RenderSystem implements RenderSystemDebugControl, RenderMemory.Consumer, WebGLDisposable {\n public readonly canvas: HTMLCanvasElement;\n public readonly currentRenderState = new RenderState();\n public readonly context: WebGL2RenderingContext;\n public readonly frameBufferStack = new FrameBufferStack(); // frame buffers are not owned by the system\n private readonly _capabilities: Capabilities;\n public readonly resourceCache: Map<IModelConnection, IdMap>;\n public readonly glTimer: GLTimer;\n private readonly _textureBindings: TextureBinding[] = [];\n private _removeEventListener?: () => void;\n\n // NB: Increase the size of these arrays when the maximum number of attributes used by any one shader increases.\n private readonly _curVertexAttribStates: VertexAttribState[] = [\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n ];\n private readonly _nextVertexAttribStates: VertexAttribState[] = [\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n ];\n\n // The following are initialized immediately after the System is constructed.\n private _lineCodeTexture?: TextureHandle;\n private _noiseTexture?: TextureHandle;\n private _techniques?: Techniques;\n private _screenSpaceEffects?: ScreenSpaceEffects;\n public readonly debugShaderFiles: DebugShaderFile[] = [];\n\n public static get instance() { return IModelApp.renderSystem as System; }\n\n public get isValid(): boolean { return this.canvas !== undefined; }\n public get lineCodeTexture() { return this._lineCodeTexture; }\n public get noiseTexture() { return this._noiseTexture; }\n\n public get techniques() {\n assert(undefined !== this._techniques);\n return this._techniques;\n }\n\n public get screenSpaceEffects() {\n assert(undefined !== this._screenSpaceEffects);\n return this._screenSpaceEffects;\n }\n\n public override get maxTextureSize(): number { return this._capabilities.maxTextureSize; }\n public override get supportsCreateImageBitmap(): boolean { return this._capabilities.supportsCreateImageBitmap; }\n public get maxRenderType() { return this._capabilities.maxRenderType; }\n public get fragDepthDoesNotDisableEarlyZ() { return this._capabilities.driverBugs.fragDepthDoesNotDisableEarlyZ; }\n public get maxAntialiasSamples() { return this._capabilities.maxAntialiasSamples; }\n public get supportsNonPowerOf2Textures() { return this._capabilities.supportsNonPowerOf2Textures; }\n public get maxTexSizeAllow() { return this._capabilities.maxTexSizeAllow; }\n public get disjointTimerQuery() {\n const ext = this._capabilities.queryExtensionObject<any>(\"EXT_disjoint_timer_query_webgl2\");\n return ext ?? this._capabilities.queryExtensionObject<any>(\"EXT_disjoint_timer_query\");\n }\n\n public override get isMobile(): boolean { return this._capabilities.isMobile; }\n\n public setDrawBuffers(attachments: GLenum[]): void {\n this.context.drawBuffers(attachments);\n }\n\n public doIdleWork(): boolean {\n return this.techniques.idleCompileNextShader();\n }\n\n /** Return a Promise which when resolved indicates that all pending external textures have finished loading from the backend. */\n public override async waitForAllExternalTextures(): Promise<void> {\n const extTexLoader = ExternalTextureLoader.instance;\n if (extTexLoader.numActiveRequests < 1 && extTexLoader.numPendingRequests < 1)\n return Promise.resolve();\n const promise = new Promise<void>((resolve: any) => {\n extTexLoader.onTexturesLoaded.addOnce(() => {\n resolve();\n });\n });\n return promise;\n }\n\n public override get hasExternalTextureRequests(): boolean {\n const loader = ExternalTextureLoader.instance;\n return loader.numActiveRequests > 0 || loader.numPendingRequests > 0;\n }\n\n /** Attempt to create a WebGLRenderingContext, returning undefined if unsuccessful. */\n public static createContext(canvas: HTMLCanvasElement, useWebGL2: boolean, inputContextAttributes?: WebGLContextAttributes): WebGLContext | undefined {\n if (!useWebGL2)\n return undefined; // WebGL 2 is required.\n\n let contextAttributes: WebGLContextAttributes = { powerPreference: \"high-performance\" };\n if (undefined !== inputContextAttributes) {\n // NOTE: Order matters with spread operator - if caller wants to override powerPreference, he should be able to.\n contextAttributes = { ...contextAttributes, ...inputContextAttributes };\n }\n\n const context = canvas.getContext(\"webgl2\", contextAttributes);\n return context ?? undefined;\n }\n\n public static create(optionsIn?: RenderSystem.Options): System {\n const options: RenderSystem.Options = undefined !== optionsIn ? optionsIn : {};\n const canvas = document.createElement(\"canvas\");\n if (null === canvas)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to obtain HTMLCanvasElement\");\n\n const context = this.createContext(canvas, true, optionsIn?.contextAttributes);\n if (undefined === context)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to obtain WebGL context\");\n\n if (!(context instanceof WebGL2RenderingContext))\n throw new IModelError(BentleyStatus.ERROR, \"WebGL 2 support is required\");\n\n const capabilities = Capabilities.create(context, options.disabledExtensions);\n if (undefined === capabilities)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to initialize rendering capabilities\");\n\n // set actual gl state to match desired state defaults\n context.depthFunc(GL.DepthFunc.Default); // LessOrEqual\n\n return new this(canvas, context, capabilities, options);\n }\n\n public get isDisposed(): boolean {\n return undefined === this._techniques\n && undefined === this._lineCodeTexture\n && undefined === this._noiseTexture\n && undefined === this._screenSpaceEffects;\n }\n\n // Note: FrameBuffers inside of the FrameBufferStack are not owned by the System, and are only used as a central storage device\n public dispose() {\n this._techniques = dispose(this._techniques);\n this._screenSpaceEffects = dispose(this._screenSpaceEffects);\n this._lineCodeTexture = dispose(this._lineCodeTexture);\n this._noiseTexture = dispose(this._noiseTexture);\n\n // We must attempt to dispose of each idmap in the resourceCache (if idmap is already disposed, has no effect)\n this.resourceCache.forEach((idMap: IdMap) => {\n dispose(idMap);\n });\n\n this.resourceCache.clear();\n if (undefined !== this._removeEventListener) {\n this._removeEventListener();\n this._removeEventListener = undefined;\n }\n }\n\n public override onInitialized(): void {\n this._techniques = Techniques.create(this.context);\n\n const noiseDim = 4;\n const noiseArr = new Uint8Array([152, 235, 94, 173, 219, 215, 115, 176, 73, 205, 43, 201, 10, 81, 205, 198]);\n this._noiseTexture = TextureHandle.createForData(noiseDim, noiseDim, noiseArr, false, GL.Texture.WrapMode.Repeat, GL.Texture.Format.Luminance);\n assert(undefined !== this._noiseTexture, \"System.noiseTexture not created.\");\n\n this._lineCodeTexture = TextureHandle.createForData(LineCode.size, LineCode.count, new Uint8Array(LineCode.lineCodeData), false, GL.Texture.WrapMode.Repeat, GL.Texture.Format.Luminance);\n assert(undefined !== this._lineCodeTexture, \"System.lineCodeTexture not created.\");\n\n this._screenSpaceEffects = new ScreenSpaceEffects();\n }\n\n public createTarget(canvas: HTMLCanvasElement): RenderTarget {\n return new OnScreenTarget(canvas);\n }\n\n public createOffscreenTarget(rect: ViewRect): RenderTarget {\n return new OffScreenTarget(rect);\n }\n\n public createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\n return new PrimitiveBuilder(this, options);\n }\n\n public override createPlanarGrid(frustum: Frustum, grid: PlanarGridProps): RenderGraphic | undefined {\n return PlanarGridGeometry.create(frustum, grid, this);\n }\n\n public override createTerrainMesh(params: RealityMeshParams, transform?: Transform, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n return RealityMeshGeometry.createForTerrain(params, transform, disableTextureDisposal);\n }\n\n public override createRealityMeshGraphic(params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n return RealityMeshGeometry.createGraphic(this, params, disableTextureDisposal);\n }\n public override createRealityMeshGeometry(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n return RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);\n }\n\n public override createMeshGeometry(params: MeshParams, viOrigin?: Point3d): MeshRenderGeometry | undefined {\n return MeshRenderGeometry.create(params, viOrigin);\n }\n\n public override createPolylineGeometry(params: PolylineParams, viOrigin?: Point3d): PolylineGeometry | undefined {\n return PolylineGeometry.create(params, viOrigin);\n }\n\n public override createPointStringGeometry(params: PointStringParams, viOrigin?: Point3d): PointStringGeometry | undefined {\n return PointStringGeometry.create(params, viOrigin);\n }\n\n public override createAreaPattern(params: PatternGraphicParams): PatternBuffers | undefined {\n return PatternBuffers.create(params);\n }\n\n public override createRenderInstances(params: RenderInstancesParams): RenderInstances | undefined {\n return RenderInstancesImpl.create(params as RenderInstancesParamsImpl);\n }\n\n private createInstancedGraphic(geometry: RenderGeometry, instances: RenderInstances): RenderGraphic | undefined {\n const geom = geometry as RenderGeometryImpl;\n return this.createRenderGraphic(geom, InstanceBuffers.fromRenderInstances(instances, geom.computeRange()));\n }\n\n public override createGraphicFromTemplate(args: CreateGraphicFromTemplateArgs): RenderGraphic {\n const template = args.template;\n const instances = args.instances as RenderInstancesImpl | undefined;\n if (instances && !template.isInstanceable) {\n throw new Error(\"GraphicTemplate is not instanceable\");\n }\n\n const graphics: RenderGraphic[] = [];\n for (const node of template[_nodes]) {\n const nodeGraphics: RenderGraphic[] = [];\n for (const geometry of node.geometry) {\n const gf = instances ? this.createInstancedGraphic(geometry, instances) : this.createRenderGraphic(geometry);\n if (gf) {\n nodeGraphics.push(gf);\n }\n }\n\n if (nodeGraphics.length === 0) {\n continue;\n }\n\n if (node.transform) {\n const branch = new GraphicBranch();\n for (const gf of nodeGraphics) {\n branch.add(gf);\n }\n\n graphics.push(this.createGraphicBranch(branch, node.transform));\n } else {\n graphics.push(this.createGraphicList(nodeGraphics));\n }\n }\n\n let graphic = this.createGraphicList(graphics);\n if (instances && instances[_featureTable]) {\n const range = new Range3d();\n graphic.unionRange(range);\n graphic = this.createBatch(graphic, instances[_featureTable], range);\n } else if (template[_batch]) {\n graphic = this.createBatch(graphic, template[_batch].featureTable, template[_batch].range, template[_batch].options);\n }\n\n const templateBranch = template[_branch];\n if (templateBranch) {\n const branch = new GraphicBranch(true);\n if (templateBranch.viewFlagOverrides) {\n branch.setViewFlagOverrides(templateBranch.viewFlagOverrides);\n }\n\n branch.add(graphic);\n graphic = this.createBranch(branch, templateBranch.transform ?? Transform.createIdentity());\n }\n\n return graphic;\n }\n\n public override createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern | InstanceBuffers): RenderGraphic | undefined {\n const geom = geometry as RenderGeometryImpl;\n\n let buffers: InstanceBuffers | PatternBuffers | undefined;\n if (instances) {\n if (!geometry.isInstanceable) {\n throw new Error(\"RenderGeometry is not instanceable\");\n }\n\n if (instances instanceof PatternBuffers || instances instanceof InstanceBuffers) {\n buffers = instances;\n } else {\n assert(isInstancedGraphicParams(instances));\n buffers = InstanceBuffers.fromParams(instances, () => geom.computeRange());\n if (!buffers) {\n return undefined;\n }\n }\n }\n\n return geom.renderGeometryType === \"mesh\" ? MeshGraphic.create(geom, buffers) : Primitive.create(geom, buffers);\n }\n\n public override createPointCloudGeometry(args: PointCloudArgs): PointCloudGeometry {\n return new PointCloudGeometry(args);\n }\n\n public createGraphicList(primitives: RenderGraphic[]): RenderGraphic {\n return primitives.length === 1 ? primitives[0] : new GraphicsArray(primitives);\n }\n\n public createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions): RenderGraphic {\n return new Branch(branch, transform, undefined, options);\n }\n\n public override createAnimationTransformNode(graphic: RenderGraphic, nodeId: number): RenderGraphic {\n return new AnimationTransformBranch(graphic, nodeId);\n }\n\n public createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions): RenderGraphic {\n return new Batch(graphic, features, range, options);\n }\n\n public override createGraphicOwner(owned: RenderGraphic): RenderGraphicOwner {\n return new GraphicOwner(owned as Graphic);\n }\n\n public override createGraphicLayer(graphic: RenderGraphic, layerId: string) {\n return new Layer(graphic as Graphic, layerId);\n }\n\n public override createGraphicLayerContainer(graphic: RenderGraphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\n return new LayerContainer(graphic as Graphic, drawAsOverlay, transparency, elevation);\n }\n\n public override createSkyBox(params: RenderSkyBoxParams): RenderGraphic | undefined {\n if (\"cube\" === params.type)\n return SkyCubePrimitive.create(SkyBoxQuadsGeometry.create(params.texture));\n\n return SkySpherePrimitive.create(SkySphereViewportQuadGeometry.createGeometry(params));\n }\n\n public override createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\n return createScreenSpaceEffectBuilder(params);\n }\n\n public applyRenderState(newState: RenderState) {\n newState.apply(this.currentRenderState);\n this.currentRenderState.copyFrom(newState);\n }\n\n public createDepthBuffer(width: number, height: number, numSamples: number = 1): DepthBuffer | undefined {\n // Note: The buffer/texture created here have ownership passed to the caller (system will not dispose of these)\n if (numSamples > 1)\n return RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.DEPTH24_STENCIL8, numSamples);\n else\n return TextureHandle.createForAttachment(width, height, GL.Texture.Format.DepthStencil, this.context.UNSIGNED_INT_24_8);\n }\n\n /** Returns the corresponding IdMap for an IModelConnection. Creates a new one if it doesn't exist. */\n public createIModelMap(imodel: IModelConnection): IdMap {\n let idMap = this.resourceCache.get(imodel);\n if (!idMap) {\n idMap = new IdMap(imodel);\n this.resourceCache.set(imodel, idMap);\n }\n return idMap;\n }\n\n /** Removes an IModelConnection-IdMap pairing from the system's resource cache. */\n private removeIModelMap(imodel: IModelConnection) {\n const idMap = this.resourceCache.get(imodel);\n if (idMap === undefined)\n return;\n dispose(idMap);\n this.resourceCache.delete(imodel);\n }\n\n public override createRenderMaterial(args: CreateRenderMaterialArgs): RenderMaterial | undefined {\n if (args.source) {\n const cached = this.findMaterial(args.source.id, args.source.iModel);\n if (cached)\n return cached;\n }\n\n\n const params = new RenderMaterialParams();\n params.alpha = args.alpha;\n if (undefined !== args.diffuse?.weight)\n params.diffuse = args.diffuse.weight;\n\n params.diffuseColor = getMaterialColor(args.diffuse?.color);\n\n if (args.specular) {\n params.specularColor = getMaterialColor(args.specular?.color);\n if (undefined !== args.specular.weight)\n params.specular = args.specular.weight;\n\n if (undefined !== args.specular.exponent)\n params.specularExponent = args.specular.exponent;\n }\n\n if (args.textureMapping) {\n params.textureMapping = new TextureMapping(args.textureMapping.texture, new TextureMapping.Params({\n textureMat2x3: args.textureMapping.transform,\n mapMode: args.textureMapping.mode,\n textureWeight: args.textureMapping.weight,\n worldMapping: args.textureMapping.worldMapping,\n useConstantLod: args.textureMapping.useConstantLod,\n constantLodProps: args.textureMapping.constantLodProps,\n }));\n params.textureMapping.normalMapParams = args.textureMapping.normalMapParams;\n }\n\n if (args.source) {\n params.key = args.source.id;\n return this.getIdMap(args.source.iModel).getMaterial(params);\n } else {\n return new Material(params);\n }\n }\n\n /** Using its key, search for an existing material of an open iModel. */\n public override findMaterial(key: string, imodel: IModelConnection): RenderMaterial | undefined {\n const idMap = this.resourceCache.get(imodel);\n if (!idMap)\n return undefined;\n return idMap.findMaterial(key);\n }\n\n private getTextureCacheInfo(args: CreateTextureArgs): TextureCacheInfo | undefined {\n const owner = undefined !== args.ownership && args.ownership !== \"external\" ? args.ownership : undefined;\n return owner ? { idMap: this.getIdMap(owner.iModel), key: owner.key } : undefined;\n }\n\n public override createTexture(args: CreateTextureArgs): RenderTexture | undefined {\n const info = this.getTextureCacheInfo(args);\n const existing = info?.idMap.findTexture(info?.key);\n if (existing)\n return existing;\n\n const type = args.type ?? RenderTexture.Type.Normal;\n const source = args.image.source;\n\n let handle;\n if (source instanceof ImageBuffer)\n handle = TextureHandle.createForImageBuffer(source, type);\n else if (source instanceof ImageBitmap)\n handle = TextureHandle.createForImageBitmap(source, type);\n else if (source instanceof HTMLImageElement)\n handle = TextureHandle.createForImage(source, type);\n else\n assert(false);\n\n if (!handle)\n return undefined;\n\n const texture = new Texture({ handle, type, ownership: args.ownership, transparency: args.image.transparency ?? TextureTransparency.Mixed });\n if (texture && info)\n info.idMap.addTexture(texture, info.key);\n\n return texture;\n }\n\n public override async createTextureFromSource(args: CreateTextureFromSourceArgs): Promise<RenderTexture | undefined> {\n if (typeof args.ownership !== \"object\")\n return super.createTextureFromSource(args);\n\n return this.getIdMap(args.ownership.iModel).getTextureFromImageSource(args, args.ownership.key);\n }\n\n\n public override createTextureFromElement(id: Id64String, imodel: IModelConnection, params: RenderTextureParams, format: ImageSourceFormat): RenderTexture | undefined {\n return this.getIdMap(imodel).getTextureFromElement(id, imodel, params, format);\n }\n\n\n public override createTextureFromCubeImages(posX: HTMLImageElement, negX: HTMLImageElement, posY: HTMLImageElement, negY: HTMLImageElement, posZ: HTMLImageElement, negZ: HTMLImageElement, imodel: IModelConnection, params: RenderTextureParams): RenderTexture | undefined {\n return this.getIdMap(imodel).getTextureFromCubeImages(posX, negX, posY, negY, posZ, negZ, params);\n }\n\n /** Attempt to create a texture using gradient symbology. */\n public override getGradientTexture(symb: Gradient.Symb, iModel?: IModelConnection): RenderTexture | undefined {\n let width = 0x100;\n let height = 0x100;\n if (symb.mode === Gradient.Mode.Thematic) {\n // Pixels in each row are identical, no point in having width > 1.\n width = 1;\n // We want maximum height to minimize bleeding of margin color.\n height = this.maxTextureSize;\n }\n\n const source = symb.produceImage({ width, height, includeThematicMargin: true });\n return this.createTexture({\n image: {\n source,\n transparency: ImageBufferFormat.Rgba === source.format ? TextureTransparency.Mixed : TextureTransparency.Opaque,\n },\n ownership: iModel ? { iModel, key: symb } : undefined,\n type: RenderTexture.Type.Normal,\n });\n }\n\n /** Using its key, search for an existing texture of an open iModel. */\n public override findTexture(key: TextureCacheKey, imodel: IModelConnection): RenderTexture | undefined {\n const idMap = this.resourceCache.get(imodel);\n if (!idMap)\n return undefined;\n\n return idMap.findTexture(key);\n }\n\n public override createClipVolume(clipVector: ClipVector): RenderClipVolume | undefined {\n return ClipVolume.create(clipVector);\n }\n public override createBackgroundMapDrape(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\n return BackgroundMapDrape.create(drapedTree, mapTree);\n }\n\n protected constructor(canvas: HTMLCanvasElement, context: WebGL2RenderingContext, capabilities: Capabilities, options: RenderSystem.Options) {\n super(options);\n this.canvas = canvas;\n this.context = context;\n this._capabilities = capabilities;\n this.resourceCache = new Map<IModelConnection, IdMap>();\n this.glTimer = GLTimer.create(this);\n\n // Make this System a subscriber to the the IModelConnection onClose event\n this._removeEventListener = IModelConnection.onClose.addListener((imodel) => this.removeIModelMap(imodel));\n\n canvas.addEventListener(\"webglcontextlost\", async () => RenderSystem.contextLossHandler(), false);\n }\n\n /** Exposed strictly for tests. */\n public getIdMap(imodel: IModelConnection): IdMap {\n const map = this.resourceCache.get(imodel);\n return undefined !== map ? map : this.createIModelMap(imodel);\n }\n\n private bindTexture(unit: TextureUnit, target: GL.Texture.Target, texture: TextureBinding, makeActive: boolean): void {\n const index = unit - TextureUnit.Zero;\n if (this._textureBindings[index] === texture) {\n if (makeActive)\n this.context.activeTexture(unit);\n\n return;\n }\n\n this._textureBindings[index] = texture;\n this.context.activeTexture(unit);\n this.context.bindTexture(target, undefined !== texture ? texture : null);\n }\n\n /** Bind the specified texture to the specified unit. This may *or may not* make the texture *active* */\n public bindTexture2d(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.TwoDee, texture, false); }\n /** Bind the specified texture to the specified unit. This may *or may not* make the texture *active* */\n public bindTextureCubeMap(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.CubeMap, texture, false); }\n /** Bind the specified texture to the specified unit. This *always* makes the texture *active* */\n public activateTexture2d(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.TwoDee, texture, true); }\n /** Bind the specified texture to the specified unit. This *always* makes the texture *active* */\n public activateTextureCubeMap(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.CubeMap, texture, true); }\n\n // Ensure *something* is bound to suppress 'no texture assigned to unit x' warnings.\n public ensureSamplerBound(uniform: UniformHandle, unit: TextureUnit): void {\n this.lineCodeTexture!.bindSampler(uniform, unit);\n }\n\n public override get maxRealityImageryLayers() {\n return 6;\n }\n\n public disposeTexture(texture: WebGLTexture) {\n System.instance.context.deleteTexture(texture);\n for (let i = 0; i < this._textureBindings.length; i++) {\n if (this._textureBindings[i] === texture) {\n this._textureBindings[i] = undefined;\n break;\n }\n }\n }\n\n // System keeps track of current enabled state of vertex attribute arrays.\n // This prevents errors caused by leaving a vertex attrib array enabled after disposing of the buffer bound to it;\n // also prevents unnecessarily 'updating' the enabled state of a vertex attrib array when it hasn't actually changed.\n public enableVertexAttribArray(id: number, instanced: boolean): void {\n assert(id < this._nextVertexAttribStates.length, \"if you add new vertex attributes you must update array length\");\n assert(id < this._curVertexAttribStates.length, \"if you add new vertex attributes you must update array length\");\n\n this._nextVertexAttribStates[id] = instanced ? VertexAttribState.InstancedEnabled : VertexAttribState.Enabled;\n }\n\n public updateVertexAttribArrays(): void {\n const cur = this._curVertexAttribStates;\n const next = this._nextVertexAttribStates;\n const context = this.context;\n\n for (let i = 0; i < next.length; i++) {\n const oldState = cur[i];\n const newState = next[i];\n if (oldState !== newState) {\n // Update the enabled state if it changed.\n const wasEnabled = 0 !== (VertexAttribState.Enabled & oldState);\n const nowEnabled = 0 !== (VertexAttribState.Enabled & newState);\n if (wasEnabled !== nowEnabled) {\n if (nowEnabled) {\n context.enableVertexAttribArray(i);\n } else {\n context.disableVertexAttribArray(i);\n }\n }\n\n // Only update the divisor if the attribute is enabled.\n if (nowEnabled) {\n const wasInstanced = 0 !== (VertexAttribState.Instanced & oldState);\n const nowInstanced = 0 !== (VertexAttribState.Instanced & newState);\n if (wasInstanced !== nowInstanced) {\n this.vertexAttribDivisor(i, nowInstanced ? 1 : 0);\n }\n }\n\n cur[i] = newState;\n }\n\n // Set the attribute back to disabled, but preserve the divisor.\n next[i] &= ~VertexAttribState.Enabled;\n }\n }\n\n public vertexAttribDivisor(index: number, divisor: number) {\n this.context.vertexAttribDivisor(index, divisor);\n }\n\n public drawArrays(type: GL.PrimitiveType, first: number, count: number, numInstances: number): void {\n if (0 !== numInstances) {\n this.context.drawArraysInstanced(type, first, count, numInstances);\n } else {\n this.context.drawArrays(type, first, count);\n }\n }\n\n public invalidateFrameBuffer(attachments: number[]): void {\n this.context.invalidateFramebuffer(this.context.FRAMEBUFFER, attachments);\n }\n\n public enableDiagnostics(enable: RenderDiagnostics | undefined): void {\n enable = enable ?? RenderDiagnostics.All;\n Debug.printEnabled = RenderDiagnostics.None !== (enable & RenderDiagnostics.DebugOutput);\n Debug.evaluateEnabled = RenderDiagnostics.None !== (enable & RenderDiagnostics.WebGL);\n }\n\n // RenderSystemDebugControl\n public override get debugControl(): RenderSystemDebugControl { return this; }\n\n private _dpiAwareLOD?: boolean;\n public override get dpiAwareLOD(): boolean { return this._dpiAwareLOD ?? super.dpiAwareLOD; }\n public override set dpiAwareLOD(dpiAware: boolean) { this._dpiAwareLOD = dpiAware; }\n\n public loseContext(): boolean {\n const ext = this._capabilities.queryExtensionObject<WEBGL_lose_context>(\"WEBGL_lose_context\");\n if (undefined === ext)\n return false;\n\n ext.loseContext();\n return true;\n }\n\n public compileAllShaders(): boolean {\n return this.techniques.compileShaders();\n }\n\n public get isGLTimerSupported(): boolean { return this.glTimer.isSupported; }\n public set resultsCallback(callback: GLTimerResultCallback | undefined) {\n this.glTimer.resultsCallback = callback;\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n if (undefined !== this._lineCodeTexture)\n stats.addTexture(this._lineCodeTexture.bytesUsed);\n\n if (undefined !== this._noiseTexture)\n stats.addTexture(this._noiseTexture.bytesUsed);\n\n for (const idMap of this.resourceCache.values())\n idMap.collectStatistics(stats);\n }\n\n public setMaxAnisotropy(max: number | undefined): void {\n this._capabilities.setMaxAnisotropy(max, this.context);\n }\n}\n"]}
1
+ {"version":3,"file":"System.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/System.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, BentleyStatus, Dictionary, dispose, expectDefined, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { ColorDef, ElementAlignedBox3d, Frustum, Gradient, ImageBuffer, ImageBufferFormat, ImageSourceFormat, IModelError, RenderFeatureTable, RenderMaterial, RenderMaterialParams, RenderTexture, RenderTextureParams, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\nimport { ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { Capabilities, WebGLContext } from \"@itwin/webgl-compatibility\";\nimport { IModelApp } from \"../../../IModelApp\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { MapTileTreeReference, TileTreeReference } from \"../../../tile/internal\";\nimport { imageElementFromImageSource } from \"../../../common/ImageUtil\";\nimport { MeshParams } from \"../../../common/internal/render/MeshParams\";\nimport { PointStringParams } from \"../../../common/internal/render/PointStringParams\";\nimport { PolylineParams } from \"../../../common/internal/render/PolylineParams\";\nimport { TextureCacheKey } from \"../../../common/render/TextureParams\";\nimport { ViewRect } from \"../../../common/ViewRect\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../../../render/GraphicBranch\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../../render/GraphicBuilder\";\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../../../common/render/InstancedGraphicParams\";\nimport { PrimitiveBuilder } from \"../../../internal/render/PrimitiveBuilder\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { PointCloudArgs } from \"../../../common/internal/render/PointCloudPrimitive\";\nimport { RenderClipVolume } from \"../../../render/RenderClipVolume\";\nimport { RenderGraphic, RenderGraphicOwner } from \"../../../render/RenderGraphic\";\nimport { CreateRenderMaterialArgs } from \"../../../render/CreateRenderMaterialArgs\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\nimport {\n CreateGraphicFromTemplateArgs, PlanarGridProps, RenderInstances, RenderSystem,\n} from \"../../../render/RenderSystem\";\nimport { DebugShaderFile, GLTimerResultCallback, RenderDiagnostics, RenderSystemDebugControl } from \"../RenderSystemDebugControl\";\nimport { RenderTarget } from \"../../../render/RenderTarget\";\nimport { CreateTextureArgs, CreateTextureFromSourceArgs } from \"../../../render/CreateTextureArgs\";\nimport { ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams } from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { BackgroundMapDrape } from \"./BackgroundMapDrape\";\nimport { SkyBoxQuadsGeometry, SkySphereViewportQuadGeometry } from \"./CachedGeometry\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { Debug } from \"./Diagnostics\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DepthBuffer, FrameBufferStack } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { GLTimer } from \"./GLTimer\";\nimport { AnimationTransformBranch, Batch, Branch, Graphic, GraphicOwner, GraphicsArray } from \"./Graphic\";\nimport { InstanceBuffers, isInstancedGraphicParams, PatternBuffers, RenderInstancesImpl } from \"./InstancedGeometry\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LineCode } from \"./LineCode\";\nimport { Material } from \"./Material\";\nimport { MeshGraphic, MeshRenderGeometry } from \"./Mesh\";\nimport { PlanarGridGeometry } from \"./PlanarGrid\";\nimport { PointCloudGeometry } from \"./PointCloud\";\nimport { PointStringGeometry } from \"./PointString\";\nimport { PolylineGeometry } from \"./Polyline\";\nimport { Primitive, SkyCubePrimitive, SkySpherePrimitive } from \"./Primitive\";\nimport { RealityMeshGeometry } from \"./RealityMesh\";\nimport { RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { createScreenSpaceEffectBuilder, ScreenSpaceEffects } from \"./ScreenSpaceEffect\";\nimport { OffScreenTarget, OnScreenTarget } from \"./Target\";\nimport { Techniques } from \"./Technique\";\nimport { ExternalTextureLoader, Texture, TextureHandle } from \"./Texture\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\nimport { RenderInstancesParams } from \"../../../common/render/RenderInstancesParams\";\nimport { _batch, _branch, _featureTable, _nodes } from \"../../../common/internal/Symbols\";\nimport { RenderInstancesParamsImpl } from \"../../../internal/render/RenderInstancesParamsImpl\";\nimport { RenderSkyBoxParams } from \"../RenderSkyBoxParams\";\nimport { RenderAreaPattern } from \"../RenderAreaPattern\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport const enum ContextState {\n Uninitialized,\n Success,\n Error,\n}\n\ntype RenderGeometryImpl = MeshRenderGeometry | RealityMeshGeometry | PolylineGeometry | PointStringGeometry | PointCloudGeometry;\n\n/** Id map holds key value pairs for both materials and textures, useful for caching such objects.\n * @internal\n */\nexport class IdMap implements WebGLDisposable {\n private readonly _iModel: IModelConnection;\n /** Mapping of materials by their key values. */\n public readonly materials = new Map<string, RenderMaterial>();\n /** Mapping of textures by their key values. */\n public readonly textures = new Map<string, RenderTexture>();\n /** Mapping of textures using gradient symbology. */\n public readonly gradients = new Dictionary<Gradient.Symb, RenderTexture>((lhs, rhs) => Gradient.Symb.compareSymb(lhs, rhs));\n /** Pending promises to create a texture from an ImageSource. This prevents us from decoding the same ImageSource multiple times */\n public readonly texturesFromImageSources = new Map<string, Promise<RenderTexture | undefined>>();\n\n public constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n public get isDisposed(): boolean {\n return 0 === this.textures.size && 0 === this.gradients.size;\n }\n\n public [Symbol.dispose]() {\n const textureArr = Array.from(this.textures.values());\n const gradientArr = this.gradients.extractArrays().values;\n\n for (const texture of textureArr)\n dispose(texture);\n\n for (const gradient of gradientArr)\n dispose(gradient);\n\n this.textures.clear();\n this.gradients.clear();\n this.materials.clear();\n }\n\n /** Add a material to this IdMap, given that it has a valid key. */\n public addMaterial(material: RenderMaterial) {\n if (material.key)\n this.materials.set(material.key, material);\n }\n\n /** Add a texture to this IdMap, given that it has a valid string key. If specified, it will instead use the key parameter, which could also be a gradient symb. */\n public addTexture(texture: RenderTexture, key?: TextureCacheKey) {\n assert(texture instanceof Texture);\n if (undefined !== key) {\n if (\"string\" === typeof key)\n this.textures.set(key, texture);\n else\n this.addGradient(key, texture);\n } else if (texture.key)\n this.textures.set(texture.key, texture);\n }\n\n /** Add a texture to this IdMap using gradient symbology. */\n public addGradient(gradientSymb: Gradient.Symb, texture: RenderTexture) {\n this.gradients.set(gradientSymb, texture);\n }\n\n /** Find a cached material using its key. If not found, returns undefined. */\n public findMaterial(key: string): RenderMaterial | undefined {\n return this.materials.get(key);\n }\n\n /** Find a cached gradient using the gradient symbology. If not found, returns undefined. */\n public findGradient(symb: Gradient.Symb): RenderTexture | undefined {\n return this.gradients.get(symb);\n }\n\n /** Find or create a new material given material parameters. This will cache the material if its key is valid. */\n\n public getMaterial(params: RenderMaterialParams): RenderMaterial {\n if (!params.key || !Id64.isValidId64(params.key)) // Only cache persistent materials.\n return new Material(params);\n\n let material = this.materials.get(params.key);\n if (!material) {\n material = new Material(params);\n this.materials.set(params.key, material);\n }\n return material;\n }\n\n public findTexture(key?: string | Gradient.Symb): RenderTexture | undefined {\n if (undefined === key)\n return undefined;\n else if (typeof key === \"string\")\n return this.textures.get(key);\n else\n return this.findGradient(key);\n }\n\n\n public getTextureFromElement(key: Id64String, iModel: IModelConnection, params: RenderTextureParams, format: ImageSourceFormat): RenderTexture | undefined {\n let tex = this.findTexture(params.key);\n if (tex)\n return tex;\n\n const handle = TextureHandle.createForElement(key, iModel, params.type, format, (_, data) => {\n if (tex) {\n assert(tex instanceof Texture);\n tex.transparency = data.transparency ?? TextureTransparency.Mixed;\n }\n });\n\n if (!handle)\n return undefined;\n\n tex = new Texture({ handle, type: params.type, ownership: { key, iModel }, transparency: TextureTransparency.Opaque });\n this.addTexture(tex);\n return tex;\n }\n\n public async getTextureFromImageSource(args: CreateTextureFromSourceArgs, key: string): Promise<RenderTexture | undefined> {\n const texture = this.findTexture(key);\n if (texture)\n return texture;\n\n // Are we already in the process of decoding this image?\n let promise = this.texturesFromImageSources.get(key);\n if (promise)\n return promise;\n\n promise = this.createTextureFromImageSource(args, key);\n this.texturesFromImageSources.set(key, promise);\n return promise;\n }\n\n public async createTextureFromImageSource(args: CreateTextureFromSourceArgs, key: string): Promise<RenderTexture | undefined> {\n // JPEGs don't support transparency.\n const transparency = ImageSourceFormat.Jpeg === args.source.format ? TextureTransparency.Opaque : (args.transparency ?? TextureTransparency.Mixed);\n try {\n const image = await imageElementFromImageSource(args.source);\n if (!IModelApp.hasRenderSystem)\n return undefined;\n\n return IModelApp.renderSystem.createTexture({\n type: args.type,\n ownership: args.ownership,\n image: {\n source: image,\n transparency,\n },\n });\n } catch {\n return undefined;\n } finally {\n this.texturesFromImageSources.delete(key);\n }\n }\n\n\n public getTextureFromCubeImages(posX: HTMLImageElement, negX: HTMLImageElement, posY: HTMLImageElement, negY: HTMLImageElement, posZ: HTMLImageElement, negZ: HTMLImageElement, params: RenderTextureParams): RenderTexture | undefined {\n let tex = this.findTexture(params.key);\n if (tex)\n return tex;\n\n const handle = TextureHandle.createForCubeImages(posX, negX, posY, negY, posZ, negZ);\n if (!handle)\n return undefined;\n\n const ownership = params.key ? { key: params.key, iModel: this._iModel } : (params.isOwned ? \"external\" : undefined);\n tex = new Texture({ handle, ownership, type: params.type, transparency: TextureTransparency.Opaque });\n this.addTexture(tex);\n return tex;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const texture of this.textures.values())\n if (texture instanceof Texture)\n stats.addTexture(texture.bytesUsed);\n\n for (const gradient of this.gradients)\n if (gradient instanceof Texture)\n stats.addTexture(gradient.bytesUsed);\n }\n}\n\nexport type TextureBinding = WebGLTexture | undefined;\n\nconst enum VertexAttribState {\n Disabled = 0,\n Enabled = 1 << 0,\n Instanced = 1 << 2,\n InstancedEnabled = Instanced | Enabled,\n}\n\ninterface TextureCacheInfo {\n idMap: IdMap;\n key: TextureCacheKey;\n}\n\nfunction getMaterialColor(color: ColorDef | RgbColorProps | undefined): ColorDef | undefined {\n if (color instanceof ColorDef)\n return color;\n\n return color ? ColorDef.from(color.r, color.g, color.b) : undefined;\n}\n\n/** @internal */\nexport class System extends RenderSystem implements RenderSystemDebugControl, RenderMemory.Consumer, WebGLDisposable {\n public readonly canvas: HTMLCanvasElement;\n public readonly currentRenderState = new RenderState();\n public readonly context: WebGL2RenderingContext;\n public readonly frameBufferStack = new FrameBufferStack(); // frame buffers are not owned by the system\n private readonly _capabilities: Capabilities;\n public readonly resourceCache: Map<IModelConnection, IdMap>;\n public readonly glTimer: GLTimer;\n private readonly _textureBindings: TextureBinding[] = [];\n private _removeEventListener?: () => void;\n\n // NB: Increase the size of these arrays when the maximum number of attributes used by any one shader increases.\n private readonly _curVertexAttribStates: VertexAttribState[] = [\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n ];\n private readonly _nextVertexAttribStates: VertexAttribState[] = [\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled, VertexAttribState.Disabled,\n ];\n\n // The following are initialized immediately after the System is constructed.\n private _lineCodeTexture?: TextureHandle;\n private _noiseTexture?: TextureHandle;\n private _techniques?: Techniques;\n private _screenSpaceEffects?: ScreenSpaceEffects;\n public readonly debugShaderFiles: DebugShaderFile[] = [];\n\n public static get instance() { return IModelApp.renderSystem as System; }\n\n public get isValid(): boolean { return this.canvas !== undefined; }\n public get lineCodeTexture() { return this._lineCodeTexture; }\n public get noiseTexture() { return this._noiseTexture; }\n\n public get techniques() {\n assert(undefined !== this._techniques);\n return this._techniques;\n }\n\n public get screenSpaceEffects() {\n assert(undefined !== this._screenSpaceEffects);\n return this._screenSpaceEffects;\n }\n\n public override get maxTextureSize(): number { return this._capabilities.maxTextureSize; }\n public override get supportsCreateImageBitmap(): boolean { return this._capabilities.supportsCreateImageBitmap; }\n public get maxRenderType() { return this._capabilities.maxRenderType; }\n public get fragDepthDoesNotDisableEarlyZ() { return this._capabilities.driverBugs.fragDepthDoesNotDisableEarlyZ; }\n public get maxAntialiasSamples() { return this._capabilities.maxAntialiasSamples; }\n public get supportsNonPowerOf2Textures() { return this._capabilities.supportsNonPowerOf2Textures; }\n public get maxTexSizeAllow() { return this._capabilities.maxTexSizeAllow; }\n public get disjointTimerQuery() {\n const ext = this._capabilities.queryExtensionObject<any>(\"EXT_disjoint_timer_query_webgl2\");\n return ext ?? this._capabilities.queryExtensionObject<any>(\"EXT_disjoint_timer_query\");\n }\n\n public override get isMobile(): boolean { return this._capabilities.isMobile; }\n\n public setDrawBuffers(attachments: GLenum[]): void {\n this.context.drawBuffers(attachments);\n }\n\n public doIdleWork(): boolean {\n return this.techniques.idleCompileNextShader();\n }\n\n /** Return a Promise which when resolved indicates that all pending external textures have finished loading from the backend. */\n public override async waitForAllExternalTextures(): Promise<void> {\n const extTexLoader = ExternalTextureLoader.instance;\n if (extTexLoader.numActiveRequests < 1 && extTexLoader.numPendingRequests < 1)\n return Promise.resolve();\n const promise = new Promise<void>((resolve: any) => {\n extTexLoader.onTexturesLoaded.addOnce(() => {\n resolve();\n });\n });\n return promise;\n }\n\n public override get hasExternalTextureRequests(): boolean {\n const loader = ExternalTextureLoader.instance;\n return loader.numActiveRequests > 0 || loader.numPendingRequests > 0;\n }\n\n /** Attempt to create a WebGLRenderingContext, returning undefined if unsuccessful. */\n public static createContext(canvas: HTMLCanvasElement, useWebGL2: boolean, inputContextAttributes?: WebGLContextAttributes): WebGLContext | undefined {\n if (!useWebGL2)\n return undefined; // WebGL 2 is required.\n\n let contextAttributes: WebGLContextAttributes = { powerPreference: \"high-performance\" };\n if (undefined !== inputContextAttributes) {\n // NOTE: Order matters with spread operator - if caller wants to override powerPreference, he should be able to.\n contextAttributes = { ...contextAttributes, ...inputContextAttributes };\n }\n\n const context = canvas.getContext(\"webgl2\", contextAttributes);\n return context ?? undefined;\n }\n\n public static create(optionsIn?: RenderSystem.Options): System {\n const options: RenderSystem.Options = undefined !== optionsIn ? optionsIn : {};\n const canvas = document.createElement(\"canvas\");\n if (null === canvas)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to obtain HTMLCanvasElement\");\n\n const context = this.createContext(canvas, true, optionsIn?.contextAttributes);\n if (undefined === context)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to obtain WebGL context\");\n\n if (!(context instanceof WebGL2RenderingContext))\n throw new IModelError(BentleyStatus.ERROR, \"WebGL 2 support is required\");\n\n const capabilities = Capabilities.create(context, options.disabledExtensions);\n if (undefined === capabilities)\n throw new IModelError(BentleyStatus.ERROR, \"Failed to initialize rendering capabilities\");\n\n // set actual gl state to match desired state defaults\n context.depthFunc(GL.DepthFunc.Default); // LessOrEqual\n\n return new this(canvas, context, capabilities, options);\n }\n\n public get isDisposed(): boolean {\n return undefined === this._techniques\n && undefined === this._lineCodeTexture\n && undefined === this._noiseTexture\n && undefined === this._screenSpaceEffects;\n }\n\n // Note: FrameBuffers inside of the FrameBufferStack are not owned by the System, and are only used as a central storage device\n public dispose() {\n this._techniques = dispose(this._techniques);\n this._screenSpaceEffects = dispose(this._screenSpaceEffects);\n this._lineCodeTexture = dispose(this._lineCodeTexture);\n this._noiseTexture = dispose(this._noiseTexture);\n\n // We must attempt to dispose of each idmap in the resourceCache (if idmap is already disposed, has no effect)\n this.resourceCache.forEach((idMap: IdMap) => {\n dispose(idMap);\n });\n\n this.resourceCache.clear();\n if (undefined !== this._removeEventListener) {\n this._removeEventListener();\n this._removeEventListener = undefined;\n }\n }\n\n public override onInitialized(): void {\n this._techniques = Techniques.create(this.context);\n\n const noiseDim = 4;\n const noiseArr = new Uint8Array([152, 235, 94, 173, 219, 215, 115, 176, 73, 205, 43, 201, 10, 81, 205, 198]);\n this._noiseTexture = TextureHandle.createForData(noiseDim, noiseDim, noiseArr, false, GL.Texture.WrapMode.Repeat, GL.Texture.Format.Luminance);\n assert(undefined !== this._noiseTexture, \"System.noiseTexture not created.\");\n\n this._lineCodeTexture = TextureHandle.createForData(LineCode.size, LineCode.count, new Uint8Array(LineCode.lineCodeData), false, GL.Texture.WrapMode.Repeat, GL.Texture.Format.Luminance);\n assert(undefined !== this._lineCodeTexture, \"System.lineCodeTexture not created.\");\n\n this._screenSpaceEffects = new ScreenSpaceEffects();\n }\n\n public createTarget(canvas: HTMLCanvasElement): RenderTarget {\n return new OnScreenTarget(canvas);\n }\n\n public createOffscreenTarget(rect: ViewRect): RenderTarget {\n return new OffScreenTarget(rect);\n }\n\n public createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\n return new PrimitiveBuilder(this, options);\n }\n\n public override createPlanarGrid(frustum: Frustum, grid: PlanarGridProps): RenderGraphic | undefined {\n return PlanarGridGeometry.create(frustum, grid, this);\n }\n\n public override createTerrainMesh(params: RealityMeshParams, transform?: Transform, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n return RealityMeshGeometry.createForTerrain(params, transform, disableTextureDisposal);\n }\n\n public override createRealityMeshGraphic(params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n return RealityMeshGeometry.createGraphic(this, params, disableTextureDisposal);\n }\n public override createRealityMeshGeometry(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n return RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);\n }\n\n public override createMeshGeometry(params: MeshParams, viOrigin?: Point3d): MeshRenderGeometry | undefined {\n return MeshRenderGeometry.create(params, viOrigin);\n }\n\n public override createPolylineGeometry(params: PolylineParams, viOrigin?: Point3d): PolylineGeometry | undefined {\n return PolylineGeometry.create(params, viOrigin);\n }\n\n public override createPointStringGeometry(params: PointStringParams, viOrigin?: Point3d): PointStringGeometry | undefined {\n return PointStringGeometry.create(params, viOrigin);\n }\n\n public override createAreaPattern(params: PatternGraphicParams): PatternBuffers | undefined {\n return PatternBuffers.create(params);\n }\n\n public override createRenderInstances(params: RenderInstancesParams): RenderInstances | undefined {\n return RenderInstancesImpl.create(params as RenderInstancesParamsImpl);\n }\n\n private createInstancedGraphic(geometry: RenderGeometry, instances: RenderInstances): RenderGraphic | undefined {\n const geom = geometry as RenderGeometryImpl;\n return this.createRenderGraphic(geom, InstanceBuffers.fromRenderInstances(instances, geom.computeRange()));\n }\n\n public override createGraphicFromTemplate(args: CreateGraphicFromTemplateArgs): RenderGraphic {\n const template = args.template;\n const instances = args.instances as RenderInstancesImpl | undefined;\n if (instances && !template.isInstanceable) {\n throw new Error(\"GraphicTemplate is not instanceable\");\n }\n\n const graphics: RenderGraphic[] = [];\n for (const node of template[_nodes]) {\n const nodeGraphics: RenderGraphic[] = [];\n for (const geometry of node.geometry) {\n const gf = instances ? this.createInstancedGraphic(geometry, instances) : this.createRenderGraphic(geometry);\n if (gf) {\n nodeGraphics.push(gf);\n }\n }\n\n if (nodeGraphics.length === 0) {\n continue;\n }\n\n if (node.transform) {\n const branch = new GraphicBranch();\n for (const gf of nodeGraphics) {\n branch.add(gf);\n }\n\n graphics.push(this.createGraphicBranch(branch, node.transform));\n } else {\n graphics.push(this.createGraphicList(nodeGraphics));\n }\n }\n\n let graphic = this.createGraphicList(graphics);\n if (instances && instances[_featureTable]) {\n const range = new Range3d();\n graphic.unionRange(range);\n graphic = this.createBatch(graphic, instances[_featureTable], range);\n } else if (template[_batch]) {\n graphic = this.createBatch(graphic, template[_batch].featureTable, template[_batch].range, template[_batch].options);\n }\n\n const templateBranch = template[_branch];\n if (templateBranch) {\n const branch = new GraphicBranch(true);\n if (templateBranch.viewFlagOverrides) {\n branch.setViewFlagOverrides(templateBranch.viewFlagOverrides);\n }\n\n branch.add(graphic);\n graphic = this.createBranch(branch, templateBranch.transform ?? Transform.createIdentity());\n }\n\n return graphic;\n }\n\n public override createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern | InstanceBuffers): RenderGraphic | undefined {\n const geom = geometry as RenderGeometryImpl;\n\n let buffers: InstanceBuffers | PatternBuffers | undefined;\n if (instances) {\n if (!geometry.isInstanceable) {\n throw new Error(\"RenderGeometry is not instanceable\");\n }\n\n if (instances instanceof PatternBuffers || instances instanceof InstanceBuffers) {\n buffers = instances;\n } else {\n assert(isInstancedGraphicParams(instances));\n buffers = InstanceBuffers.fromParams(instances, () => geom.computeRange());\n if (!buffers) {\n return undefined;\n }\n }\n }\n\n return geom.renderGeometryType === \"mesh\" ? MeshGraphic.create(geom, buffers) : Primitive.create(geom, buffers);\n }\n\n public override createPointCloudGeometry(args: PointCloudArgs): PointCloudGeometry {\n return new PointCloudGeometry(args);\n }\n\n public createGraphicList(primitives: RenderGraphic[]): RenderGraphic {\n return primitives.length === 1 ? primitives[0] : new GraphicsArray(primitives);\n }\n\n public createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions): RenderGraphic {\n return new Branch(branch, transform, undefined, options);\n }\n\n public override createAnimationTransformNode(graphic: RenderGraphic, nodeId: number): RenderGraphic {\n return new AnimationTransformBranch(graphic, nodeId);\n }\n\n public createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions): RenderGraphic {\n return new Batch(graphic, features, range, options);\n }\n\n public override createGraphicOwner(owned: RenderGraphic): RenderGraphicOwner {\n return new GraphicOwner(owned as Graphic);\n }\n\n public override createGraphicLayer(graphic: RenderGraphic, layerId: string) {\n return new Layer(graphic as Graphic, layerId);\n }\n\n public override createGraphicLayerContainer(graphic: RenderGraphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\n return new LayerContainer(graphic as Graphic, drawAsOverlay, transparency, elevation);\n }\n\n public override createSkyBox(params: RenderSkyBoxParams): RenderGraphic | undefined {\n if (\"cube\" === params.type)\n return SkyCubePrimitive.create(SkyBoxQuadsGeometry.create(params.texture));\n\n return SkySpherePrimitive.create(SkySphereViewportQuadGeometry.createGeometry(params));\n }\n\n public override createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\n return createScreenSpaceEffectBuilder(params);\n }\n\n public applyRenderState(newState: RenderState) {\n newState.apply(this.currentRenderState);\n this.currentRenderState.copyFrom(newState);\n }\n\n public createDepthBuffer(width: number, height: number, numSamples: number = 1): DepthBuffer | undefined {\n // Note: The buffer/texture created here have ownership passed to the caller (system will not dispose of these)\n if (numSamples > 1)\n return RenderBufferMultiSample.create(width, height, WebGL2RenderingContext.DEPTH24_STENCIL8, numSamples);\n else\n return TextureHandle.createForAttachment(width, height, GL.Texture.Format.DepthStencil, this.context.UNSIGNED_INT_24_8);\n }\n\n /** Returns the corresponding IdMap for an IModelConnection. Creates a new one if it doesn't exist. */\n public createIModelMap(imodel: IModelConnection): IdMap {\n let idMap = this.resourceCache.get(imodel);\n if (!idMap) {\n idMap = new IdMap(imodel);\n this.resourceCache.set(imodel, idMap);\n }\n return idMap;\n }\n\n /** Removes an IModelConnection-IdMap pairing from the system's resource cache. */\n private removeIModelMap(imodel: IModelConnection) {\n const idMap = this.resourceCache.get(imodel);\n if (idMap === undefined)\n return;\n dispose(idMap);\n this.resourceCache.delete(imodel);\n }\n\n public override createRenderMaterial(args: CreateRenderMaterialArgs): RenderMaterial | undefined {\n if (args.source) {\n const cached = this.findMaterial(args.source.id, args.source.iModel);\n if (cached)\n return cached;\n }\n\n\n const params = new RenderMaterialParams();\n params.alpha = args.alpha;\n if (undefined !== args.diffuse?.weight)\n params.diffuse = args.diffuse.weight;\n\n params.diffuseColor = getMaterialColor(args.diffuse?.color);\n\n if (args.specular) {\n params.specularColor = getMaterialColor(args.specular?.color);\n if (undefined !== args.specular.weight)\n params.specular = args.specular.weight;\n\n if (undefined !== args.specular.exponent)\n params.specularExponent = args.specular.exponent;\n }\n\n if (args.textureMapping) {\n params.textureMapping = new TextureMapping(args.textureMapping.texture, new TextureMapping.Params({\n textureMat2x3: args.textureMapping.transform,\n mapMode: args.textureMapping.mode,\n textureWeight: args.textureMapping.weight,\n worldMapping: args.textureMapping.worldMapping,\n useConstantLod: args.textureMapping.useConstantLod,\n constantLodProps: args.textureMapping.constantLodProps,\n }));\n params.textureMapping.normalMapParams = args.textureMapping.normalMapParams;\n }\n\n if (args.source) {\n params.key = args.source.id;\n return this.getIdMap(args.source.iModel).getMaterial(params);\n } else {\n return new Material(params);\n }\n }\n\n /** Using its key, search for an existing material of an open iModel. */\n public override findMaterial(key: string, imodel: IModelConnection): RenderMaterial | undefined {\n const idMap = this.resourceCache.get(imodel);\n if (!idMap)\n return undefined;\n return idMap.findMaterial(key);\n }\n\n private getTextureCacheInfo(args: CreateTextureArgs): TextureCacheInfo | undefined {\n const owner = undefined !== args.ownership && args.ownership !== \"external\" ? args.ownership : undefined;\n return owner ? { idMap: this.getIdMap(owner.iModel), key: owner.key } : undefined;\n }\n\n public override createTexture(args: CreateTextureArgs): RenderTexture | undefined {\n const info = this.getTextureCacheInfo(args);\n const existing = info?.idMap.findTexture(info?.key);\n if (existing)\n return existing;\n\n const type = args.type ?? RenderTexture.Type.Normal;\n const source = args.image.source;\n\n let handle;\n if (source instanceof ImageBuffer)\n handle = TextureHandle.createForImageBuffer(source, type);\n else if (source instanceof ImageBitmap)\n handle = TextureHandle.createForImageBitmap(source, type);\n else if (source instanceof HTMLImageElement)\n handle = TextureHandle.createForImage(source, type);\n else\n assert(false);\n\n if (!handle)\n return undefined;\n\n const texture = new Texture({ handle, type, ownership: args.ownership, transparency: args.image.transparency ?? TextureTransparency.Mixed });\n if (texture && info)\n info.idMap.addTexture(texture, info.key);\n\n return texture;\n }\n\n public override async createTextureFromSource(args: CreateTextureFromSourceArgs): Promise<RenderTexture | undefined> {\n if (typeof args.ownership !== \"object\")\n return super.createTextureFromSource(args);\n\n return this.getIdMap(args.ownership.iModel).getTextureFromImageSource(args, args.ownership.key);\n }\n\n\n public override createTextureFromElement(id: Id64String, imodel: IModelConnection, params: RenderTextureParams, format: ImageSourceFormat): RenderTexture | undefined {\n return this.getIdMap(imodel).getTextureFromElement(id, imodel, params, format);\n }\n\n\n public override createTextureFromCubeImages(posX: HTMLImageElement, negX: HTMLImageElement, posY: HTMLImageElement, negY: HTMLImageElement, posZ: HTMLImageElement, negZ: HTMLImageElement, imodel: IModelConnection, params: RenderTextureParams): RenderTexture | undefined {\n return this.getIdMap(imodel).getTextureFromCubeImages(posX, negX, posY, negY, posZ, negZ, params);\n }\n\n /** Attempt to create a texture using gradient symbology. */\n public override getGradientTexture(symb: Gradient.Symb, iModel?: IModelConnection): RenderTexture | undefined {\n let width = 0x100;\n let height = 0x100;\n if (symb.mode === Gradient.Mode.Thematic) {\n // Pixels in each row are identical, no point in having width > 1.\n width = 1;\n // We want maximum height to minimize bleeding of margin color.\n height = this.maxTextureSize;\n }\n\n const source = symb.produceImage({ width, height, includeThematicMargin: true });\n return this.createTexture({\n image: {\n source,\n transparency: ImageBufferFormat.Rgba === source.format ? TextureTransparency.Mixed : TextureTransparency.Opaque,\n },\n ownership: iModel ? { iModel, key: symb } : undefined,\n type: RenderTexture.Type.Normal,\n });\n }\n\n /** Using its key, search for an existing texture of an open iModel. */\n public override findTexture(key: TextureCacheKey, imodel: IModelConnection): RenderTexture | undefined {\n const idMap = this.resourceCache.get(imodel);\n if (!idMap)\n return undefined;\n\n return idMap.findTexture(key);\n }\n\n public override createClipVolume(clipVector: ClipVector): RenderClipVolume | undefined {\n return ClipVolume.create(clipVector);\n }\n public override createBackgroundMapDrape(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\n return BackgroundMapDrape.create(drapedTree, mapTree);\n }\n\n protected constructor(canvas: HTMLCanvasElement, context: WebGL2RenderingContext, capabilities: Capabilities, options: RenderSystem.Options) {\n super(options);\n this.canvas = canvas;\n this.context = context;\n this._capabilities = capabilities;\n this.resourceCache = new Map<IModelConnection, IdMap>();\n this.glTimer = GLTimer.create(this);\n\n // Make this System a subscriber to the the IModelConnection onClose event\n this._removeEventListener = IModelConnection.onClose.addListener((imodel) => this.removeIModelMap(imodel));\n\n canvas.addEventListener(\"webglcontextlost\", async () => RenderSystem.contextLossHandler(), false);\n }\n\n /** Exposed strictly for tests. */\n public getIdMap(imodel: IModelConnection): IdMap {\n const map = this.resourceCache.get(imodel);\n return undefined !== map ? map : this.createIModelMap(imodel);\n }\n\n private bindTexture(unit: TextureUnit, target: GL.Texture.Target, texture: TextureBinding, makeActive: boolean): void {\n const index = unit - TextureUnit.Zero;\n if (this._textureBindings[index] === texture) {\n if (makeActive)\n this.context.activeTexture(unit);\n\n return;\n }\n\n this._textureBindings[index] = texture;\n this.context.activeTexture(unit);\n this.context.bindTexture(target, undefined !== texture ? texture : null);\n }\n\n /** Bind the specified texture to the specified unit. This may *or may not* make the texture *active* */\n public bindTexture2d(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.TwoDee, texture, false); }\n /** Bind the specified texture to the specified unit. This may *or may not* make the texture *active* */\n public bindTextureCubeMap(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.CubeMap, texture, false); }\n /** Bind the specified texture to the specified unit. This *always* makes the texture *active* */\n public activateTexture2d(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.TwoDee, texture, true); }\n /** Bind the specified texture to the specified unit. This *always* makes the texture *active* */\n public activateTextureCubeMap(unit: TextureUnit, texture: TextureBinding) { this.bindTexture(unit, GL.Texture.Target.CubeMap, texture, true); }\n\n // Ensure *something* is bound to suppress 'no texture assigned to unit x' warnings.\n public ensureSamplerBound(uniform: UniformHandle, unit: TextureUnit): void {\n expectDefined(this.lineCodeTexture).bindSampler(uniform, unit);\n }\n\n public override get maxRealityImageryLayers() {\n return 6;\n }\n\n public disposeTexture(texture: WebGLTexture) {\n System.instance.context.deleteTexture(texture);\n for (let i = 0; i < this._textureBindings.length; i++) {\n if (this._textureBindings[i] === texture) {\n this._textureBindings[i] = undefined;\n break;\n }\n }\n }\n\n // System keeps track of current enabled state of vertex attribute arrays.\n // This prevents errors caused by leaving a vertex attrib array enabled after disposing of the buffer bound to it;\n // also prevents unnecessarily 'updating' the enabled state of a vertex attrib array when it hasn't actually changed.\n public enableVertexAttribArray(id: number, instanced: boolean): void {\n assert(id < this._nextVertexAttribStates.length, \"if you add new vertex attributes you must update array length\");\n assert(id < this._curVertexAttribStates.length, \"if you add new vertex attributes you must update array length\");\n\n this._nextVertexAttribStates[id] = instanced ? VertexAttribState.InstancedEnabled : VertexAttribState.Enabled;\n }\n\n public updateVertexAttribArrays(): void {\n const cur = this._curVertexAttribStates;\n const next = this._nextVertexAttribStates;\n const context = this.context;\n\n for (let i = 0; i < next.length; i++) {\n const oldState = cur[i];\n const newState = next[i];\n if (oldState !== newState) {\n // Update the enabled state if it changed.\n const wasEnabled = 0 !== (VertexAttribState.Enabled & oldState);\n const nowEnabled = 0 !== (VertexAttribState.Enabled & newState);\n if (wasEnabled !== nowEnabled) {\n if (nowEnabled) {\n context.enableVertexAttribArray(i);\n } else {\n context.disableVertexAttribArray(i);\n }\n }\n\n // Only update the divisor if the attribute is enabled.\n if (nowEnabled) {\n const wasInstanced = 0 !== (VertexAttribState.Instanced & oldState);\n const nowInstanced = 0 !== (VertexAttribState.Instanced & newState);\n if (wasInstanced !== nowInstanced) {\n this.vertexAttribDivisor(i, nowInstanced ? 1 : 0);\n }\n }\n\n cur[i] = newState;\n }\n\n // Set the attribute back to disabled, but preserve the divisor.\n next[i] &= ~VertexAttribState.Enabled;\n }\n }\n\n public vertexAttribDivisor(index: number, divisor: number) {\n this.context.vertexAttribDivisor(index, divisor);\n }\n\n public drawArrays(type: GL.PrimitiveType, first: number, count: number, numInstances: number): void {\n if (0 !== numInstances) {\n this.context.drawArraysInstanced(type, first, count, numInstances);\n } else {\n this.context.drawArrays(type, first, count);\n }\n }\n\n public invalidateFrameBuffer(attachments: number[]): void {\n this.context.invalidateFramebuffer(this.context.FRAMEBUFFER, attachments);\n }\n\n public enableDiagnostics(enable: RenderDiagnostics | undefined): void {\n enable = enable ?? RenderDiagnostics.All;\n Debug.printEnabled = RenderDiagnostics.None !== (enable & RenderDiagnostics.DebugOutput);\n Debug.evaluateEnabled = RenderDiagnostics.None !== (enable & RenderDiagnostics.WebGL);\n }\n\n // RenderSystemDebugControl\n public override get debugControl(): RenderSystemDebugControl { return this; }\n\n private _dpiAwareLOD?: boolean;\n public override get dpiAwareLOD(): boolean { return this._dpiAwareLOD ?? super.dpiAwareLOD; }\n public override set dpiAwareLOD(dpiAware: boolean) { this._dpiAwareLOD = dpiAware; }\n\n public loseContext(): boolean {\n const ext = this._capabilities.queryExtensionObject<WEBGL_lose_context>(\"WEBGL_lose_context\");\n if (undefined === ext)\n return false;\n\n ext.loseContext();\n return true;\n }\n\n public compileAllShaders(): boolean {\n return this.techniques.compileShaders();\n }\n\n public get isGLTimerSupported(): boolean { return this.glTimer.isSupported; }\n public set resultsCallback(callback: GLTimerResultCallback | undefined) {\n this.glTimer.resultsCallback = callback;\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n if (undefined !== this._lineCodeTexture)\n stats.addTexture(this._lineCodeTexture.bytesUsed);\n\n if (undefined !== this._noiseTexture)\n stats.addTexture(this._noiseTexture.bytesUsed);\n\n for (const idMap of this.resourceCache.values())\n idMap.collectStatistics(stats);\n }\n\n public setMaxAnisotropy(max: number | undefined): void {\n this._capabilities.setMaxAnisotropy(max, this.context);\n }\n}\n"]}