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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +2 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +4 -0
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +156 -14
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts.map +1 -1
  37. package/lib/cjs/IpcApp.js +1 -1
  38. package/lib/cjs/IpcApp.js.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js +2 -0
  41. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js +2 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/Marker.d.ts.map +1 -1
  46. package/lib/cjs/Marker.js +4 -3
  47. package/lib/cjs/Marker.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts.map +1 -1
  49. package/lib/cjs/ModelState.js +2 -2
  50. package/lib/cjs/ModelState.js.map +1 -1
  51. package/lib/cjs/NativeApp.d.ts.map +1 -1
  52. package/lib/cjs/NativeApp.js +5 -4
  53. package/lib/cjs/NativeApp.js.map +1 -1
  54. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  55. package/lib/cjs/NativeAppLogger.js +1 -0
  56. package/lib/cjs/NativeAppLogger.js.map +1 -1
  57. package/lib/cjs/PlanarClipMaskState.js +3 -3
  58. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  59. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  60. package/lib/cjs/SelectionSet.js +1 -0
  61. package/lib/cjs/SelectionSet.js.map +1 -1
  62. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  63. package/lib/cjs/SheetViewState.js +5 -5
  64. package/lib/cjs/SheetViewState.js.map +1 -1
  65. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  66. package/lib/cjs/SpatialViewState.js +1 -1
  67. package/lib/cjs/SpatialViewState.js.map +1 -1
  68. package/lib/cjs/Sprites.js +2 -2
  69. package/lib/cjs/Sprites.js.map +1 -1
  70. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  71. package/lib/cjs/TentativePoint.js +10 -9
  72. package/lib/cjs/TentativePoint.js.map +1 -1
  73. package/lib/cjs/ViewCreator2d.js +1 -1
  74. package/lib/cjs/ViewCreator2d.js.map +1 -1
  75. package/lib/cjs/ViewCreator3d.js +1 -1
  76. package/lib/cjs/ViewCreator3d.js.map +1 -1
  77. package/lib/cjs/ViewPose.d.ts.map +1 -1
  78. package/lib/cjs/ViewPose.js +4 -1
  79. package/lib/cjs/ViewPose.js.map +1 -1
  80. package/lib/cjs/ViewState.d.ts.map +1 -1
  81. package/lib/cjs/ViewState.js +17 -12
  82. package/lib/cjs/ViewState.js.map +1 -1
  83. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  84. package/lib/cjs/ViewingSpace.js +2 -0
  85. package/lib/cjs/ViewingSpace.js.map +1 -1
  86. package/lib/cjs/Viewport.d.ts.map +1 -1
  87. package/lib/cjs/Viewport.js +17 -10
  88. package/lib/cjs/Viewport.js.map +1 -1
  89. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  90. package/lib/cjs/common/ImageUtil.js +2 -1
  91. package/lib/cjs/common/ImageUtil.js.map +1 -1
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  93. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  94. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  96. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  97. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  98. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  99. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  101. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  102. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  103. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  104. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  105. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  106. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  107. package/lib/cjs/internal/ScriptUtils.js +1 -0
  108. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  110. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  111. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  114. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  116. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  117. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  118. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  119. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  120. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +3 -3
  123. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  125. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  127. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  128. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  129. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  130. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  133. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  135. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  137. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  138. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  139. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  140. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  141. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  143. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  145. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  148. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  150. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  151. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  152. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  153. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  154. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  155. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  156. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  157. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +8 -8
  160. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  162. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  165. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  166. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  167. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  168. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  170. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  172. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  174. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  175. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  177. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  178. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  180. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  182. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  184. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  185. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  188. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  190. package/lib/cjs/internal/render/webgl/System.js +1 -1
  191. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  192. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  193. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  194. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  196. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  197. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  199. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  200. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  207. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  208. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  212. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  213. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  214. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  215. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  217. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  219. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  221. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  222. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  223. package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
  224. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  225. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  226. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  227. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  228. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  229. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  230. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  231. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  232. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  233. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  234. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  235. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  236. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  237. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  238. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  239. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  240. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  241. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  242. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  243. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  244. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  245. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  246. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  247. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  248. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  249. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  250. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  251. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  252. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  253. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  254. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  255. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  257. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  258. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  259. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  260. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  261. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  262. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  263. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  264. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  265. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  266. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  267. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  268. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  269. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  270. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  271. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  272. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  273. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  274. package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -4
  275. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  276. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  277. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  278. package/lib/cjs/tile/GltfReader.js +54 -16
  279. package/lib/cjs/tile/GltfReader.js.map +1 -1
  280. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  281. package/lib/cjs/tile/RealityTile.js +2 -2
  282. package/lib/cjs/tile/RealityTile.js.map +1 -1
  283. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  284. package/lib/cjs/tile/RealityTileTree.js +5 -5
  285. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  286. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  287. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  288. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  289. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  290. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  291. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  292. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  293. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  294. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  295. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  296. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  297. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  298. package/lib/cjs/tile/map/MapTile.js +10 -8
  299. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  300. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  302. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  303. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  304. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  305. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  306. package/lib/cjs/tools/Tool.js +1 -1
  307. package/lib/cjs/tools/Tool.js.map +1 -1
  308. package/lib/esm/BackgroundMapGeometry.js +14 -14
  309. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  310. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  311. package/lib/esm/BriefcaseConnection.js +2 -2
  312. package/lib/esm/BriefcaseConnection.js.map +1 -1
  313. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  314. package/lib/esm/CheckpointConnection.js +4 -4
  315. package/lib/esm/CheckpointConnection.js.map +1 -1
  316. package/lib/esm/ContextRealityModelState.js.map +1 -1
  317. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  318. package/lib/esm/ElementLocateManager.js +8 -7
  319. package/lib/esm/ElementLocateManager.js.map +1 -1
  320. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  321. package/lib/esm/EmphasizeElements.js +3 -1
  322. package/lib/esm/EmphasizeElements.js.map +1 -1
  323. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  324. package/lib/esm/EnvironmentDecorations.js +4 -0
  325. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  326. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  327. package/lib/esm/FrustumAnimator.js +3 -2
  328. package/lib/esm/FrustumAnimator.js.map +1 -1
  329. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  330. package/lib/esm/GlobeAnimator.js +7 -6
  331. package/lib/esm/GlobeAnimator.js.map +1 -1
  332. package/lib/esm/HitDetail.d.ts.map +1 -1
  333. package/lib/esm/HitDetail.js +12 -7
  334. package/lib/esm/HitDetail.js.map +1 -1
  335. package/lib/esm/IModelApp.d.ts.map +1 -1
  336. package/lib/esm/IModelApp.js +4 -3
  337. package/lib/esm/IModelApp.js.map +1 -1
  338. package/lib/esm/IModelConnection.d.ts +4 -0
  339. package/lib/esm/IModelConnection.d.ts.map +1 -1
  340. package/lib/esm/IModelConnection.js +158 -16
  341. package/lib/esm/IModelConnection.js.map +1 -1
  342. package/lib/esm/IpcApp.d.ts.map +1 -1
  343. package/lib/esm/IpcApp.js +2 -2
  344. package/lib/esm/IpcApp.js.map +1 -1
  345. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  346. package/lib/esm/LinePlaneIntersect.js +2 -0
  347. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  348. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  349. package/lib/esm/LocalhostIpcApp.js +2 -1
  350. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  351. package/lib/esm/Marker.d.ts.map +1 -1
  352. package/lib/esm/Marker.js +5 -4
  353. package/lib/esm/Marker.js.map +1 -1
  354. package/lib/esm/ModelState.d.ts.map +1 -1
  355. package/lib/esm/ModelState.js +3 -3
  356. package/lib/esm/ModelState.js.map +1 -1
  357. package/lib/esm/NativeApp.d.ts.map +1 -1
  358. package/lib/esm/NativeApp.js +5 -4
  359. package/lib/esm/NativeApp.js.map +1 -1
  360. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  361. package/lib/esm/NativeAppLogger.js +1 -0
  362. package/lib/esm/NativeAppLogger.js.map +1 -1
  363. package/lib/esm/PlanarClipMaskState.js +3 -3
  364. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  365. package/lib/esm/SelectionSet.d.ts.map +1 -1
  366. package/lib/esm/SelectionSet.js +2 -1
  367. package/lib/esm/SelectionSet.js.map +1 -1
  368. package/lib/esm/SheetViewState.d.ts.map +1 -1
  369. package/lib/esm/SheetViewState.js +6 -6
  370. package/lib/esm/SheetViewState.js.map +1 -1
  371. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  372. package/lib/esm/SpatialViewState.js +2 -2
  373. package/lib/esm/SpatialViewState.js.map +1 -1
  374. package/lib/esm/Sprites.js +2 -2
  375. package/lib/esm/Sprites.js.map +1 -1
  376. package/lib/esm/TentativePoint.d.ts.map +1 -1
  377. package/lib/esm/TentativePoint.js +10 -9
  378. package/lib/esm/TentativePoint.js.map +1 -1
  379. package/lib/esm/ViewCreator2d.js +1 -1
  380. package/lib/esm/ViewCreator2d.js.map +1 -1
  381. package/lib/esm/ViewCreator3d.js +1 -1
  382. package/lib/esm/ViewCreator3d.js.map +1 -1
  383. package/lib/esm/ViewPose.d.ts.map +1 -1
  384. package/lib/esm/ViewPose.js +4 -1
  385. package/lib/esm/ViewPose.js.map +1 -1
  386. package/lib/esm/ViewState.d.ts.map +1 -1
  387. package/lib/esm/ViewState.js +18 -13
  388. package/lib/esm/ViewState.js.map +1 -1
  389. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  390. package/lib/esm/ViewingSpace.js +2 -0
  391. package/lib/esm/ViewingSpace.js.map +1 -1
  392. package/lib/esm/Viewport.d.ts.map +1 -1
  393. package/lib/esm/Viewport.js +18 -11
  394. package/lib/esm/Viewport.js.map +1 -1
  395. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  396. package/lib/esm/common/ImageUtil.js +2 -1
  397. package/lib/esm/common/ImageUtil.js.map +1 -1
  398. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  399. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  400. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  401. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  402. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  403. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  404. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  405. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  406. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  407. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  408. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  409. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  410. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  411. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  412. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  413. package/lib/esm/internal/ScriptUtils.js +1 -0
  414. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  415. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  416. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  417. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  418. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  419. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  420. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  421. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  422. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  423. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  424. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  425. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  426. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  427. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  428. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +4 -4
  429. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  430. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  431. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  432. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  433. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  434. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  435. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  436. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  437. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  438. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  439. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  441. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  442. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  443. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  445. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  446. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  447. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  449. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  451. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  452. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  453. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  454. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  455. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  456. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  457. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  458. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  459. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  460. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  461. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  462. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  463. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  464. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  465. package/lib/esm/internal/render/webgl/PlanarClassifier.js +9 -9
  466. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  467. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  468. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  470. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  471. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  472. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  473. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  474. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  476. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  478. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  479. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  480. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  481. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  482. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  483. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  484. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  485. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  486. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  488. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  489. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  490. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  491. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  492. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  493. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  494. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  495. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  496. package/lib/esm/internal/render/webgl/System.js +2 -2
  497. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  498. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  499. package/lib/esm/internal/render/webgl/Target.js +11 -8
  500. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  501. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  502. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  503. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  504. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  505. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  506. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  507. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  509. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  510. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  511. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  514. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  515. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  516. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  517. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  518. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  519. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  521. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  523. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  524. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  525. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  526. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  527. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  528. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  529. package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
  530. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  531. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  532. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  533. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  534. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  535. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  536. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  537. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  538. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  539. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  540. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  541. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  542. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  543. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  544. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  545. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  546. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  547. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  548. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  549. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  550. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  551. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  552. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  553. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  554. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  555. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  556. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  557. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  558. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  559. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  560. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  561. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  562. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  563. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  564. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  565. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  566. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  567. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  568. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  569. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  570. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  571. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  572. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  573. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  574. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  575. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  576. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  577. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  578. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  579. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  580. package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -4
  581. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  582. package/lib/esm/tile/GltfReader.d.ts +5 -2
  583. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  584. package/lib/esm/tile/GltfReader.js +55 -17
  585. package/lib/esm/tile/GltfReader.js.map +1 -1
  586. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  587. package/lib/esm/tile/RealityTile.js +3 -3
  588. package/lib/esm/tile/RealityTile.js.map +1 -1
  589. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  590. package/lib/esm/tile/RealityTileTree.js +6 -6
  591. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  592. package/lib/esm/tile/TileAdmin.js.map +1 -1
  593. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  594. package/lib/esm/tile/TileDrawArgs.js +2 -1
  595. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  596. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  597. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  598. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  599. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  600. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  601. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  602. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  603. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  604. package/lib/esm/tile/map/MapTile.js +11 -9
  605. package/lib/esm/tile/map/MapTile.js.map +1 -1
  606. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  607. package/lib/esm/tile/map/MapTileTree.js +9 -8
  608. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  609. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  610. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  611. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  612. package/lib/esm/tools/Tool.js +2 -2
  613. package/lib/esm/tools/Tool.js.map +1 -1
  614. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  615. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  616. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Target.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, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, Range3d, Transform, XAndY, XYZ } from \"@itwin/core-geometry\";\nimport {\n AmbientOcclusion, AnalysisStyle, ContourDisplay, Frustum, ImageBuffer, ImageBufferFormat, Npc, RenderMode, RenderTexture, ThematicDisplayMode, ViewFlags,\n} from \"@itwin/core-common\";\nimport { ViewRect } from \"../../../common/ViewRect\";\nimport { canvasToImageBuffer, canvasToResizedCanvasWithBars, imageBufferToCanvas } from \"../../../common/ImageUtil\";\nimport { HiliteSet, ModelSubCategoryHiliteMode } from \"../../../SelectionSet\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { ReadImageBufferArgs, Viewport } from \"../../../Viewport\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { CanvasDecoration } from \"../../../render/CanvasDecoration\";\nimport { Decorations } from \"../../../render/Decorations\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { AnimationBranchStates } from \"../AnimationBranchState\";\nimport { Pixel } from \"../../../render/Pixel\";\nimport { GraphicList } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { createEmptyRenderPlan, RenderPlan } from \"../RenderPlan\";\nimport { PlanarClassifierMap, RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { RenderTextureDrape, TextureDrapeMap } from \"../RenderTextureDrape\";\nimport { RenderTarget } from \"../../../render/RenderTarget\";\nimport { PrimitiveVisibility, RenderTargetDebugControl } from \"../RenderTargetDebugControl\";\nimport { ScreenSpaceEffectContext } from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { Scene } from \"../../../render/Scene\";\nimport { QueryTileFeaturesOptions, QueryVisibleFeaturesCallback } from \"../../../render/VisibleFeature\";\nimport { BranchState } from \"./BranchState\";\nimport { CachedGeometry, SingleTexturedViewportQuadGeometry } from \"./CachedGeometry\";\nimport { ColorInfo } from \"./ColorInfo\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { Batch, Branch, WorldDecorations } from \"./Graphic\";\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\nimport { PerformanceMetrics } from \"./PerformanceMetrics\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { SceneCompositor } from \"./SceneCompositor\";\nimport { freeDrawParams } from \"./ScratchDrawParams\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { SolarShadowMap } from \"./SolarShadowMap\";\nimport { desync, SyncTarget } from \"./Sync\";\nimport { System } from \"./System\";\nimport { TargetUniforms } from \"./TargetUniforms\";\nimport { Techniques } from \"./Technique\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { TextureDrape } from \"./TextureDrape\";\nimport { EdgeSettings } from \"./EdgeSettings\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { VisibleTileFeatures } from \"./VisibleTileFeatures\";\nimport { FrameStatsCollector } from \"../FrameStatsCollector\";\nimport { ActiveSpatialClassifier } from \"../../../SpatialClassifiersState\";\nimport { AnimationNodeId } from \"../../../common/internal/render/AnimationNodeId\";\nimport { _implementationProhibited } from \"../../../common/internal/Symbols\";\n\nfunction swapImageByte(image: ImageBuffer, i0: number, i1: number) {\n const tmp = image.data[i0];\n image.data[i0] = image.data[i1];\n image.data[i1] = tmp;\n}\n\n/** @internal */\nexport interface Hilites {\n readonly elements: Id64.Uint32Set;\n readonly subcategories: Id64.Uint32Set;\n readonly models: Id64.Uint32Set;\n readonly isEmpty: boolean;\n readonly modelSubCategoryMode: ModelSubCategoryHiliteMode;\n}\n\nclass EmptyHiliteSet {\n public readonly elements: Id64.Uint32Set;\n public readonly subcategories: Id64.Uint32Set;\n public readonly models: Id64.Uint32Set;\n public readonly isEmpty = true;\n public readonly modelSubCategoryMode = \"union\";\n\n public constructor() {\n this.elements = this.subcategories = this.models = new Id64.Uint32Set();\n }\n}\n\ninterface ReadPixelResources {\n readonly texture: Texture2DHandle;\n readonly fbo: FrameBuffer;\n}\n\n/** @internal */\nexport abstract class Target extends RenderTarget implements RenderTargetDebugControl, WebGLDisposable {\n protected override readonly [_implementationProhibited] = undefined;\n public readonly graphics = new TargetGraphics();\n private _planarClassifiers?: PlanarClassifierMap;\n private _textureDrapes?: TextureDrapeMap;\n private _worldDecorations?: WorldDecorations;\n private _currPickExclusions = new Id64.Uint32Set();\n private _swapPickExclusions = new Id64.Uint32Set();\n public readonly pickExclusionsSyncTarget: SyncTarget = { syncKey: Number.MIN_SAFE_INTEGER };\n private _hilites: Hilites = new EmptyHiliteSet();\n private readonly _hiliteSyncTarget: SyncTarget = { syncKey: Number.MIN_SAFE_INTEGER };\n private _flashed: Id64.Uint32Pair = { lower: 0, upper: 0 };\n private _flashedId = Id64.invalid;\n private _flashIntensity: number = 0;\n private _renderCommands: RenderCommands;\n private _overlayRenderState: RenderState;\n protected _compositor: SceneCompositor;\n protected _fbo?: FrameBuffer;\n private _dcAssigned = false;\n public performanceMetrics?: PerformanceMetrics;\n public readonly decorationsState = BranchState.createForDecorations(); // Used when rendering view background and view/world overlays.\n public readonly uniforms = new TargetUniforms(this);\n public readonly renderRect = new ViewRect();\n public analysisStyle?: AnalysisStyle;\n public analysisTexture?: RenderTexture;\n public ambientOcclusionSettings = AmbientOcclusion.Settings.defaults;\n private _wantAmbientOcclusion = false;\n private _batches: Batch[] = [];\n public plan = createEmptyRenderPlan();\n private _animationBranches?: AnimationBranchStates;\n private _isReadPixelsInProgress = false;\n private _readPixelsSelector = Pixel.Selector.None;\n private _readPixelReusableResources?: ReadPixelResources;\n private _drawNonLocatable = true;\n private _currentlyDrawingClassifier?: PlanarClassifier;\n private _analysisFraction: number = 0;\n private _antialiasSamples = 1;\n // This exists strictly to be forwarded to ScreenSpaceEffects. Do not use it for anything else.\n private _viewport?: Viewport;\n private _screenSpaceEffects: string[] = [];\n public isFadeOutActive = false;\n public activeVolumeClassifierTexture?: WebGLTexture;\n public activeVolumeClassifierProps?: ActiveSpatialClassifier;\n public activeVolumeClassifierModelId?: Id64String;\n private _currentAnimationTransformNodeId?: number;\n\n // RenderTargetDebugControl\n public vcSupportIntersectingVolumes: boolean = false;\n public drawForReadPixels = false;\n public drawingBackgroundForReadPixels = false;\n public primitiveVisibility = PrimitiveVisibility.All;\n public displayDrapeFrustum = false;\n public displayMaskFrustum = false;\n public displayRealityTilePreload = false;\n public displayRealityTileRanges = false;\n public logRealityTiles = false;\n public displayNormalMaps = true;\n\n public freezeRealityTiles = false;\n\n public get shadowFrustum(): Frustum | undefined {\n const map = this.solarShadowMap;\n return map.isEnabled && map.isReady ? map.frustum : undefined;\n }\n\n public override get debugControl(): RenderTargetDebugControl { return this; }\n\n public get viewRect(): ViewRect {\n return this.renderRect;\n }\n\n protected constructor(rect?: ViewRect) {\n super();\n this._renderCommands = this.uniforms.branch.createRenderCommands(this.uniforms.batch.state);\n this._overlayRenderState = new RenderState();\n this._overlayRenderState.flags.depthMask = false;\n this._overlayRenderState.flags.blend = true;\n this._overlayRenderState.blend.setBlendFunc(GL.BlendFactor.One, GL.BlendFactor.OneMinusSrcAlpha);\n this._compositor = SceneCompositor.create(this); // compositor is created but not yet initialized... we are still undisposed\n this.renderRect = rect ? rect : new ViewRect(); // if the rect is undefined, expect that it will be updated dynamically in an OnScreenTarget\n if (undefined !== System.instance.antialiasSamples)\n this._antialiasSamples = System.instance.antialiasSamples;\n else\n this._antialiasSamples = (undefined !== System.instance.options.antialiasSamples ? System.instance.options.antialiasSamples : 1);\n }\n\n public get compositor() { return this._compositor; }\n public get isReadPixelsInProgress(): boolean { return this._isReadPixelsInProgress; }\n public get readPixelsSelector(): Pixel.Selector { return this._readPixelsSelector; }\n public get drawNonLocatable(): boolean { return this._drawNonLocatable; }\n\n public get techniques(): Techniques { return this.renderSystem.techniques; }\n\n public get hilites(): Hilites { return this._hilites; }\n public get hiliteSyncTarget(): SyncTarget { return this._hiliteSyncTarget; }\n\n public get pickExclusions(): Id64.Uint32Set { return this._currPickExclusions; }\n\n public get flashed(): Id64.Uint32Pair | undefined { return Id64.isValid(this._flashedId) ? this._flashed : undefined; }\n public get flashedId(): Id64String { return this._flashedId; }\n public get flashIntensity(): number { return this._flashIntensity; }\n\n public get analysisFraction(): number { return this._analysisFraction; }\n public set analysisFraction(fraction: number) { this._analysisFraction = fraction; }\n\n public override get animationBranches(): AnimationBranchStates | undefined {\n return this._animationBranches;\n }\n public override set animationBranches(branches: AnimationBranchStates | undefined) {\n this.disposeAnimationBranches();\n this._animationBranches = branches;\n }\n\n private disposeAnimationBranches(): void {\n this._animationBranches = undefined;\n }\n\n public override get antialiasSamples(): number { return this._antialiasSamples; }\n public override set antialiasSamples(numSamples: number) { this._antialiasSamples = numSamples; }\n\n public get solarShadowMap(): SolarShadowMap { return this.compositor.solarShadowMap; }\n public get isDrawingShadowMap(): boolean { return this.solarShadowMap.isEnabled && this.solarShadowMap.isDrawing; }\n public override getPlanarClassifier(id: Id64String): RenderPlanarClassifier | undefined {\n return undefined !== this._planarClassifiers ? this._planarClassifiers.get(id) : undefined;\n }\n public override createPlanarClassifier(properties?: ActiveSpatialClassifier): PlanarClassifier {\n return PlanarClassifier.create(properties, this);\n }\n public override getTextureDrape(id: Id64String): RenderTextureDrape | undefined {\n return undefined !== this._textureDrapes ? this._textureDrapes.get(id) : undefined;\n }\n\n public getWorldDecorations(decs: GraphicList): Branch {\n if (undefined === this._worldDecorations) {\n // Don't allow flags like monochrome etc to affect world decorations. Allow lighting in 3d only.\n const vf = new ViewFlags({\n renderMode: RenderMode.SmoothShade,\n clipVolume: false,\n whiteOnWhiteReversal: false,\n lighting: !this.is2d,\n shadows: false,\n });\n\n this._worldDecorations = new WorldDecorations(vf);\n }\n\n this._worldDecorations.init(decs);\n return this._worldDecorations;\n }\n\n public get currentBranch(): BranchState { return this.uniforms.branch.top; }\n public get currentViewFlags(): ViewFlags { return this.currentBranch.viewFlags; }\n public get currentTransform(): Transform { return this.currentBranch.transform; }\n public get currentTransparencyThreshold(): number { return this.currentEdgeSettings.transparencyThreshold; }\n public get currentEdgeSettings(): EdgeSettings { return this.currentBranch.edgeSettings; }\n public get currentFeatureSymbologyOverrides(): FeatureSymbology.Overrides { return this.currentBranch.symbologyOverrides; }\n public get currentPlanarClassifier(): PlanarClassifier | undefined { return this.currentBranch.planarClassifier; }\n public get currentlyDrawingClassifier(): PlanarClassifier | undefined { return this._currentlyDrawingClassifier; }\n public get currentTextureDrape(): TextureDrape | undefined {\n const drape = this.currentBranch.textureDrape;\n return undefined !== drape && drape.isReady ? drape : undefined;\n }\n public get currentPlanarClassifierOrDrape(): PlanarClassifier | TextureDrape | undefined {\n const drape = this.currentTextureDrape;\n return undefined === drape ? this.currentPlanarClassifier : drape;\n }\n public get currentContours(): ContourDisplay | undefined { return this.currentBranch.contourLine; }\n\n public modelToView(modelPt: XYZ, result?: Point3d): Point3d {\n return this.uniforms.branch.modelViewMatrix.multiplyPoint3dQuietNormalize(modelPt, result);\n }\n\n public get is2d(): boolean { return this.uniforms.frustum.is2d; }\n public get is3d(): boolean { return !this.is2d; }\n\n private _isDisposed = false;\n public get isDisposed(): boolean {\n return this.graphics.isDisposed\n && undefined === this._fbo\n && undefined === this._worldDecorations\n && undefined === this._planarClassifiers\n && undefined === this._textureDrapes\n && this._renderCommands.isEmpty\n && 0 === this._batches.length\n && this.uniforms.thematic.isDisposed\n && this._isDisposed;\n }\n\n protected allocateFbo(): FrameBuffer | undefined {\n if (this._fbo)\n return this._fbo;\n\n const rect = this.viewRect;\n const color = TextureHandle.createForAttachment(rect.width, rect.height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === color)\n return undefined;\n\n const depth = System.instance.createDepthBuffer(rect.width, rect.height, 1);\n if (undefined === depth) {\n color[Symbol.dispose]();\n return undefined;\n }\n\n this._fbo = FrameBuffer.create([color], depth);\n if (undefined === this._fbo) {\n color[Symbol.dispose]();\n depth[Symbol.dispose]();\n return undefined;\n }\n\n return this._fbo;\n }\n\n protected disposeFbo(): void {\n if (!this._fbo)\n return;\n\n const tx = this._fbo.getColor(0);\n const db = this._fbo.depthBuffer;\n this._fbo = dispose(this._fbo);\n this._dcAssigned = false;\n\n // We allocated our framebuffer's color attachment, so must dispose of it too.\n assert(undefined !== tx);\n dispose(tx);\n // We allocated our framebuffer's depth attachment, so must dispose of it too.\n assert(undefined !== db);\n dispose(db);\n }\n\n public override[Symbol.dispose]() {\n this.reset();\n this.disposeFbo();\n dispose(this._compositor);\n this._viewport = undefined;\n\n this._isDisposed = true;\n }\n\n public pushBranch(branch: Branch): void {\n this.uniforms.branch.pushBranch(branch);\n }\n public pushState(state: BranchState) {\n this.uniforms.branch.pushState(state);\n }\n public popBranch(): void {\n this.uniforms.branch.pop();\n }\n\n public pushViewClip(): void {\n this.uniforms.branch.pushViewClip();\n }\n\n public popViewClip(): void {\n this.uniforms.branch.popViewClip();\n }\n\n /** @internal */\n public isRangeOutsideActiveVolume(range: Range3d): boolean {\n return this.uniforms.branch.clipStack.isRangeClipped(range, this.currentTransform);\n }\n\n private readonly _scratchRange = new Range3d();\n\n /** @internal */\n public isGeometryOutsideActiveVolume(geom: CachedGeometry): boolean {\n if (!this.uniforms.branch.clipStack.hasClip || this.uniforms.branch.clipStack.hasOutsideColor)\n return false;\n\n const range = geom.computeRange(this._scratchRange);\n return this.isRangeOutsideActiveVolume(range);\n }\n\n public pushBatch(batch: Batch) {\n this.uniforms.batch.setCurrentBatch(batch);\n }\n public popBatch() {\n this.uniforms.batch.setCurrentBatch(undefined);\n }\n\n public addBatch(batch: Batch) {\n assert(this._batches.indexOf(batch) < 0);\n this._batches.push(batch);\n }\n\n public onBatchDisposed(batch: Batch) {\n const index = this._batches.indexOf(batch);\n assert(index > -1);\n this._batches.splice(index, 1);\n }\n\n public get wantAmbientOcclusion(): boolean {\n return this._wantAmbientOcclusion;\n }\n\n public get wantThematicDisplay(): boolean {\n return this.currentViewFlags.thematicDisplay && this.is3d && undefined !== this.uniforms.thematic.thematicDisplay;\n }\n\n public get wantAtmosphere(): boolean {\n return undefined !== this.plan.atmosphere;\n }\n\n public get wantThematicSensors(): boolean {\n const thematic = this.plan.thematic;\n return this.wantThematicDisplay && undefined !== thematic && ThematicDisplayMode.InverseDistanceWeightedSensors === thematic.displayMode && thematic.sensorSettings.sensors.length > 0;\n }\n\n public override updateSolarShadows(context: SceneContext | undefined): void {\n this.compositor.updateSolarShadows(context);\n }\n\n // ---- Implementation of RenderTarget interface ---- //\n\n public get renderSystem(): System { return System.instance; }\n\n public get planFraction() { return this.uniforms.frustum.planFraction; }\n public get planFrustum() { return this.uniforms.frustum.planFrustum; }\n\n public changeDecorations(decs: Decorations): void {\n this.graphics.decorations = decs;\n }\n\n public changeScene(scene: Scene) {\n this.graphics.changeScene(scene);\n\n this.changeTextureDrapes(scene.textureDrapes);\n this.changePlanarClassifiers(scene.planarClassifiers);\n\n this.changeDrapesOrClassifiers<RenderPlanarClassifier>(this._planarClassifiers, scene.planarClassifiers);\n this._planarClassifiers = scene.planarClassifiers;\n\n this.activeVolumeClassifierProps = scene.volumeClassifier?.classifier;\n this.activeVolumeClassifierModelId = scene.volumeClassifier?.modelId;\n }\n\n public override onBeforeRender(viewport: Viewport, setSceneNeedRedraw: (redraw: boolean) => void) {\n this._viewport = viewport;\n IModelFrameLifecycle.onBeforeRender.raiseEvent({\n renderSystem: this.renderSystem,\n viewport,\n setSceneNeedRedraw,\n });\n }\n\n private changeDrapesOrClassifiers<T extends Disposable>(oldMap: Map<string, T> | undefined, newMap: Map<string, T> | undefined): void {\n if (undefined === newMap) {\n if (undefined !== oldMap)\n for (const value of oldMap.values())\n value[Symbol.dispose]();\n\n return;\n }\n\n if (undefined !== oldMap) {\n for (const entry of oldMap)\n if (newMap.get(entry[0]) !== entry[1])\n entry[1][Symbol.dispose]();\n }\n }\n public changeTextureDrapes(textureDrapes: TextureDrapeMap | undefined) {\n this.changeDrapesOrClassifiers<RenderTextureDrape>(this._textureDrapes, textureDrapes);\n this._textureDrapes = textureDrapes;\n }\n public changePlanarClassifiers(planarClassifiers?: PlanarClassifierMap) {\n this.changeDrapesOrClassifiers<RenderPlanarClassifier>(this._planarClassifiers, planarClassifiers);\n this._planarClassifiers = planarClassifiers;\n }\n\n public changeDynamics(foreground: GraphicList | undefined, overlay: GraphicList | undefined) {\n this.graphics.changeDynamics(foreground, overlay);\n }\n\n public override overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\n this.uniforms.branch.overrideFeatureSymbology(ovr);\n }\n public override setHiliteSet(hilite: HiliteSet): void {\n this._hilites = hilite;\n desync(this._hiliteSyncTarget);\n }\n public override setFlashed(id: Id64String, intensity: number) {\n if (id !== this._flashedId) {\n this._flashedId = id;\n this._flashed = Id64.getUint32Pair(id);\n }\n\n this._flashIntensity = intensity;\n }\n\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\n this.uniforms.frustum.changeFrustum(newFrustum, newFraction, is3d);\n }\n\n public changeRenderPlan(plan: RenderPlan): void {\n this.plan = plan;\n\n if (this._dcAssigned && plan.is3d !== this.is3d) {\n // changed the dimensionality of the Target. World decorations no longer valid.\n // (lighting is enabled or disabled based on 2d vs 3d).\n this._worldDecorations = dispose(this._worldDecorations);\n\n // Turn off shadows if switching from 3d to 2d\n if (!plan.is3d)\n this.updateSolarShadows(undefined);\n }\n\n if (plan.is3d !== this.decorationsState.is3d)\n this.decorationsState.changeRenderPlan(this.decorationsState.viewFlags, plan.is3d, undefined);\n\n if (!this.assignDC())\n return;\n\n this.isFadeOutActive = plan.isFadeOutActive;\n this.analysisStyle = plan.analysisStyle;\n this.analysisTexture = plan.analysisTexture;\n\n this.uniforms.branch.updateViewClip(plan.clip, plan.clipStyle);\n\n let vf = plan.viewFlags;\n if (!plan.is3d)\n vf = vf.withRenderMode(RenderMode.Wireframe);\n\n if (RenderMode.SmoothShade === vf.renderMode && plan.is3d && undefined !== plan.ao && vf.ambientOcclusion) {\n this._wantAmbientOcclusion = true;\n this.ambientOcclusionSettings = plan.ao;\n } else {\n this._wantAmbientOcclusion = false;\n vf = vf.with(\"ambientOcclusion\", false);\n }\n\n this.uniforms.branch.changeRenderPlan(vf, plan.is3d, plan.hline, plan.contours);\n\n this.changeFrustum(plan.frustum, plan.fraction, plan.is3d);\n\n this.uniforms.thematic.update(this);\n\n this.uniforms.contours.update(this);\n\n this.uniforms.atmosphere.update(this);\n\n // NB: This must be done after changeFrustum() as some of the uniforms depend on the frustum.\n this.uniforms.updateRenderPlan(plan);\n }\n\n public drawFrame(sceneMilSecElapsed?: number): void {\n assert(this.renderSystem.frameBufferStack.isEmpty);\n if (!this.assignDC())\n return;\n\n this.paintScene(sceneMilSecElapsed);\n this.drawOverlayDecorations();\n assert(this.renderSystem.frameBufferStack.isEmpty);\n }\n\n protected drawOverlayDecorations(): void { }\n\n /**\n * Invoked via Viewport.changeView() when the owning Viewport is changed to look at a different view.\n * Invoked via dispose() when the target is being destroyed.\n * The primary difference is that in the former case we retain the SceneCompositor.\n */\n public override reset(_realityMapLayerChanged?: boolean): void {\n this.graphics[Symbol.dispose]();\n this._worldDecorations = dispose(this._worldDecorations);\n dispose(this.uniforms.thematic);\n\n // Ensure that only necessary classifiers are removed. If the reality map layer has not changed,\n // removing all classifiers would result in the loss of draping effects without triggering a refresh.\n if (_realityMapLayerChanged) {\n this.changePlanarClassifiers(undefined);\n } else if (this._planarClassifiers) {\n const filteredClassifiers = new Map(\n [...this._planarClassifiers.entries()]\n .filter(([key]) => key.toLowerCase().includes(\"maplayer\"))\n );\n this.changePlanarClassifiers(filteredClassifiers.size > 0 ? filteredClassifiers : undefined);\n }\n\n this.changeTextureDrapes(undefined);\n\n this._renderCommands.clear();\n\n // Clear FeatureOverrides for this Target.\n // This may not be strictly necessary as the Target may still be viewing some of these batches, but better to clean up and recreate\n // than to leave unused in memory.\n for (const batch of this._batches)\n batch.onTargetDisposed(this);\n\n this._batches = [];\n this.disposeAnimationBranches();\n\n freeDrawParams();\n ShaderProgramExecutor.freeParams();\n Primitive.freeParams();\n }\n\n public get wantInvertBlackBackground(): boolean { return false; }\n\n public computeEdgeWeight(pass: RenderPass, baseWeight: number): number {\n return this.currentEdgeSettings.getWeight(pass, this.currentViewFlags) ?? baseWeight;\n }\n public computeEdgeLineCode(pass: RenderPass, baseCode: number): number {\n return this.currentEdgeSettings.getLineCode(pass, this.currentViewFlags) ?? baseCode;\n }\n public computeEdgeColor(baseColor: ColorInfo): ColorInfo {\n const color = this.currentEdgeSettings.getColor(this.currentViewFlags);\n return undefined !== color ? ColorInfo.createUniform(color) : baseColor;\n }\n\n public beginPerfMetricFrame(sceneMilSecElapsed?: number, readPixels = false) {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.beginFrame();\n if (this.performanceMetrics)\n this.performanceMetrics.beginFrame(sceneMilSecElapsed);\n }\n }\n\n public endPerfMetricFrame(readPixels = false) {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endFrame();\n\n if (undefined === this.performanceMetrics)\n return;\n\n this.performanceMetrics.endOperation(); // End the 'CPU Total Time' operation\n this.performanceMetrics.completeFrameTimings(this._fbo!);\n }\n }\n\n public beginPerfMetricRecord(operation: string, readPixels = false): void {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.beginOperation(operation);\n if (this.performanceMetrics)\n this.performanceMetrics.beginOperation(operation);\n }\n }\n\n public endPerfMetricRecord(readPixels = false): void {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endOperation();\n if (this.performanceMetrics)\n this.performanceMetrics.endOperation();\n }\n }\n\n private _frameStatsCollector = new FrameStatsCollector();\n\n public get frameStatsCollector(): FrameStatsCollector { return this._frameStatsCollector; }\n\n public override assignFrameStatsCollector(collector: FrameStatsCollector) { this._frameStatsCollector = collector; }\n\n private paintScene(sceneMilSecElapsed?: number): void {\n if (!this._dcAssigned)\n return;\n\n this._frameStatsCollector.beginTime(\"totalFrameTime\");\n this.beginPerfMetricFrame(sceneMilSecElapsed, this.drawForReadPixels);\n this.beginPerfMetricRecord(\"Begin Paint\", this.drawForReadPixels);\n assert(undefined !== this._fbo);\n this._beginPaint(this._fbo);\n this.endPerfMetricRecord(this.drawForReadPixels);\n\n const gl = this.renderSystem.context;\n const rect = this.viewRect;\n gl.viewport(0, 0, rect.width, rect.height);\n\n // Set this to true to visualize the output of readPixels()...useful for debugging pick.\n if (this.drawForReadPixels) {\n this.beginReadPixels(Pixel.Selector.Feature);\n this.compositor.drawForReadPixels(this._renderCommands, this.graphics.overlays, this.graphics.decorations?.worldOverlay, this.graphics.decorations?.viewOverlay);\n this.endReadPixels();\n } else {\n // After the Target is first created or any time its dimensions change, SceneCompositor.preDraw() must update\n // the compositor's textures, framebuffers, etc. This *must* occur before any drawing occurs.\n // SceneCompositor.draw() checks this, but solar shadow maps, planar classifiers, and texture drapes try to draw\n // before then. So do it now.\n this.compositor.preDraw();\n\n this._frameStatsCollector.beginTime(\"classifiersTime\");\n this.beginPerfMetricRecord(\"Planar Classifiers\");\n this.drawPlanarClassifiers();\n this.endPerfMetricRecord();\n this._frameStatsCollector.endTime(\"classifiersTime\");\n\n this._frameStatsCollector.beginTime(\"shadowsTime\");\n this.beginPerfMetricRecord(\"Shadow Maps\");\n this.drawSolarShadowMap();\n this.endPerfMetricRecord();\n this._frameStatsCollector.endTime(\"shadowsTime\");\n\n this.beginPerfMetricRecord(\"Texture Drapes\");\n this.drawTextureDrapes();\n this.endPerfMetricRecord();\n\n this.beginPerfMetricRecord(\"Init Commands\");\n this._renderCommands.initForRender(this.graphics);\n this.endPerfMetricRecord();\n\n this.compositor.draw(this._renderCommands); // scene compositor gets disposed and then re-initialized... target remains undisposed\n\n this._frameStatsCollector.beginTime(\"overlaysTime\");\n this.beginPerfMetricRecord(\"Overlay Draws\");\n\n this.beginPerfMetricRecord(\"World Overlays\");\n this.drawPass(RenderPass.WorldOverlay);\n this.endPerfMetricRecord();\n\n this.beginPerfMetricRecord(\"View Overlays\");\n this.drawPass(RenderPass.ViewOverlay);\n this.endPerfMetricRecord();\n\n this.endPerfMetricRecord(); // End \"Overlay Draws\"\n this._frameStatsCollector.endTime(\"overlaysTime\");\n }\n\n // Apply screen-space effects. Note we do not reset this._isReadPixelsInProgress until *after* doing so, as screen-space effects only apply\n // during readPixels() if the effect shifts pixels from their original locations.\n this._frameStatsCollector.beginTime(\"screenspaceEffectsTime\");\n this.beginPerfMetricRecord(\"Screenspace Effects\", this.drawForReadPixels);\n this.renderSystem.screenSpaceEffects.apply(this);\n this.endPerfMetricRecord(this.drawForReadPixels);\n this._frameStatsCollector.endTime(\"screenspaceEffectsTime\");\n\n // Reset the batch IDs in all batches drawn for this call.\n this.uniforms.batch.resetBatchState();\n\n this.beginPerfMetricRecord(\"End Paint\", this.drawForReadPixels);\n this._endPaint();\n this.endPerfMetricRecord(this.drawForReadPixels);\n\n this.endPerfMetricFrame(this.drawForReadPixels);\n this._frameStatsCollector.endTime(\"totalFrameTime\");\n }\n\n private drawPass(pass: RenderPass): void {\n this.renderSystem.applyRenderState(this.getRenderState(pass));\n this.techniques.execute(this, this._renderCommands.getCommands(pass), pass);\n }\n\n private getRenderState(pass: RenderPass): RenderState {\n // the other passes are handled by SceneCompositor\n assert(RenderPass.ViewOverlay === pass || RenderPass.WorldOverlay === pass);\n return this._overlayRenderState;\n }\n\n private assignDC(): boolean {\n if (this._dcAssigned)\n return true;\n\n if (!this._assignDC())\n return false;\n\n const rect = this.viewRect;\n if (rect.width < 1 || rect.height < 1)\n return false;\n\n this.uniforms.viewRect.update(rect.width, rect.height);\n this._dcAssigned = true;\n\n return true;\n }\n\n public readPixels(rect: ViewRect, selector: Pixel.Selector, receiver: Pixel.Receiver, excludeNonLocatable: boolean, excludedElements?: Iterable<Id64String>): void {\n if (!this.assignDC())\n return;\n\n // if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)\n this.beginPerfMetricFrame(undefined, true);\n\n rect = this.cssViewRectToDeviceViewRect(rect);\n\n const gl = this.renderSystem.context;\n const viewRect = this.viewRect;\n gl.viewport(0, 0, viewRect.width, viewRect.height);\n\n // We can't reuse the previous frame's data for a variety of reasons, chief among them that some types of geometry (surfaces, translucent stuff) don't write\n // to the pick buffers and others we don't want - such as non-pickable decorations - do.\n // Render to an offscreen buffer so that we don't destroy the current color buffer.\n const resources = this.createOrReuseReadPixelResources(rect);\n if (resources === undefined) {\n receiver(undefined);\n return;\n }\n\n let result: Pixel.Buffer | undefined;\n\n this.renderSystem.frameBufferStack.execute(resources.fbo, true, false, () => {\n let updatedExclusions = false;\n if (excludedElements) {\n const swap = this._swapPickExclusions;\n swap.clear();\n for (const exclusion of excludedElements) {\n swap.addId(exclusion);\n }\n\n if (!this._currPickExclusions.equals(swap)) {\n this._swapPickExclusions = this._currPickExclusions;\n this._currPickExclusions = swap;\n updatedExclusions = true;\n desync(this.pickExclusionsSyncTarget);\n }\n }\n\n this._drawNonLocatable = !excludeNonLocatable;\n result = this.readPixelsFromFbo(rect, selector);\n this._drawNonLocatable = true;\n\n if (updatedExclusions) {\n this._currPickExclusions.clear();\n desync(this.pickExclusionsSyncTarget);\n }\n });\n\n this.disposeOrReuseReadPixelResources(resources);\n\n receiver(result);\n\n // Reset the batch IDs in all batches drawn for this call.\n this.uniforms.batch.resetBatchState();\n }\n\n private createOrReuseReadPixelResources(rect: ViewRect): ReadPixelResources | undefined {\n if (this._readPixelReusableResources !== undefined) {\n\n // To reuse a texture, we need it to be the same size or bigger than what we need\n if (this._readPixelReusableResources.texture.width >= rect.width && this._readPixelReusableResources.texture.height >= rect.height) {\n const resources = this._readPixelReusableResources;\n this._readPixelReusableResources = undefined;\n\n return resources;\n }\n }\n\n // Create a new texture/fbo\n const texture = TextureHandle.createForAttachment(rect.width, rect.height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (texture === undefined)\n return undefined;\n\n const fbo = FrameBuffer.create([texture]);\n if (fbo === undefined) {\n dispose(texture);\n return undefined;\n }\n\n return { texture, fbo };\n }\n\n private disposeOrReuseReadPixelResources({ texture, fbo }: ReadPixelResources) {\n const maxReusableTextureSize = 256;\n const isTooBigToReuse = texture.width > maxReusableTextureSize || texture.height > maxReusableTextureSize;\n\n let reuseResources = !isTooBigToReuse;\n\n if (reuseResources && this._readPixelReusableResources !== undefined) {\n\n // Keep the biggest texture\n if (this._readPixelReusableResources.texture.width > texture.width && this._readPixelReusableResources.texture.height > texture.height) {\n reuseResources = false; // The current resources being reused are better\n } else {\n // Free memory of the current reusable resources before replacing them\n dispose(this._readPixelReusableResources.fbo);\n dispose(this._readPixelReusableResources.texture);\n }\n }\n\n if (reuseResources) {\n this._readPixelReusableResources = { texture, fbo };\n } else {\n dispose(fbo);\n dispose(texture);\n }\n }\n\n private beginReadPixels(selector: Pixel.Selector, cullingFrustum?: Frustum): void {\n this.beginPerfMetricRecord(\"Init Commands\", true);\n\n this._isReadPixelsInProgress = true;\n this._readPixelsSelector = selector;\n\n // Temporarily turn off lighting to speed things up.\n // ###TODO: Disable textures *unless* they contain transparency. If we turn them off unconditionally then readPixels() will locate fully-transparent pixels, which we don't want.\n const vf = this.currentViewFlags.copy({\n transparency: false,\n lighting: false,\n shadows: false,\n acsTriad: false,\n grid: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n thematicDisplay: this.currentViewFlags.thematicDisplay && this.uniforms.thematic.wantIsoLines,\n });\n\n const top = this.currentBranch;\n const state = new BranchState({\n viewFlags: vf,\n symbologyOverrides: top.symbologyOverrides,\n is3d: top.is3d,\n edgeSettings: top.edgeSettings,\n transform: Transform.createIdentity(),\n clipVolume: top.clipVolume,\n contourLine: top.contourLine,\n });\n\n this.pushState(state);\n\n // Repopulate the command list, omitting non-pickable decorations and putting transparent stuff into the opaque passes.\n if (cullingFrustum)\n this._renderCommands.setCheckRange(cullingFrustum);\n\n this._renderCommands.initForReadPixels(this.graphics);\n this._renderCommands.clearCheckRange();\n this.endPerfMetricRecord(true);\n }\n\n private endReadPixels(preserveBatchState = false): void {\n // Pop the BranchState pushed by beginReadPixels.\n this.uniforms.branch.pop();\n if (!preserveBatchState)\n this.uniforms.batch.resetBatchState();\n\n this._isReadPixelsInProgress = false;\n }\n\n private readonly _scratchTmpFrustum = new Frustum();\n private readonly _scratchRectFrustum = new Frustum();\n private readPixelsFromFbo(rect: ViewRect, selector: Pixel.Selector): Pixel.Buffer | undefined {\n // Create a culling frustum based on the input rect. We can't do this if a screen-space effect is going to move pixels around.\n let rectFrust;\n if (!this.renderSystem.screenSpaceEffects.shouldApply(this)) {\n const viewRect = this.viewRect;\n const leftScale = (rect.left - viewRect.left) / (viewRect.right - viewRect.left);\n const rightScale = (viewRect.right - rect.right) / (viewRect.right - viewRect.left);\n const topScale = (rect.top - viewRect.top) / (viewRect.bottom - viewRect.top);\n const bottomScale = (viewRect.bottom - rect.bottom) / (viewRect.bottom - viewRect.top);\n\n const tmpFrust = this._scratchTmpFrustum;\n const planFrust = this.planFrustum;\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._000, leftScale, Npc._100);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._100, rightScale, Npc._000);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._010, leftScale, Npc._110);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._110, rightScale, Npc._010);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._001, leftScale, Npc._101);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._101, rightScale, Npc._001);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._011, leftScale, Npc._111);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._111, rightScale, Npc._011);\n\n rectFrust = this._scratchRectFrustum;\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._000, bottomScale, Npc._010);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._100, bottomScale, Npc._110);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._010, topScale, Npc._000);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._110, topScale, Npc._100);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._001, bottomScale, Npc._011);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._101, bottomScale, Npc._111);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._011, topScale, Npc._001);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._111, topScale, Npc._101);\n }\n\n this.beginReadPixels(selector, rectFrust);\n\n // Draw the scene\n this.compositor.drawForReadPixels(this._renderCommands, this.graphics.overlays, this.graphics.decorations?.worldOverlay, this.graphics.decorations?.viewOverlay);\n\n if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics) { // Only collect readPixels data if in disp-perf-test-app\n this.performanceMetrics.endOperation(); // End the 'CPU Total Time' operation\n if (this.performanceMetrics.gatherGlFinish && !this.renderSystem.isGLTimerSupported) {\n // Ensure all previously queued webgl commands are finished by reading back one pixel since gl.Finish didn't work\n this.performanceMetrics.beginOperation(\"Finish GPU Queue\");\n const gl = this.renderSystem.context;\n const bytes = new Uint8Array(4);\n this.renderSystem.frameBufferStack.execute(this._fbo!, true, false, () => {\n gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, bytes);\n });\n this.performanceMetrics.endOperation();\n }\n }\n\n // Apply any screen-space effects that shift pixels from their original locations.\n this.beginPerfMetricRecord(\"Screenspace Effects\", true);\n this.renderSystem.screenSpaceEffects.apply(this);\n this.endPerfMetricRecord(true); // End \"Screenspace Effects\"\n\n this.endReadPixels(true);\n\n this.beginPerfMetricRecord(\"Read Pixels\", true);\n const result = this.compositor.readPixels(rect, selector);\n this.endPerfMetricRecord(true);\n\n if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics) { // Only collect readPixels data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endFrame();\n if (this.performanceMetrics)\n this.performanceMetrics.endFrame();\n }\n\n return result;\n }\n\n public override queryVisibleTileFeatures(options: QueryTileFeaturesOptions, iModel: IModelConnection, callback: QueryVisibleFeaturesCallback): void {\n this.beginReadPixels(Pixel.Selector.Feature);\n callback(new VisibleTileFeatures(this._renderCommands, options, this, iModel));\n this.endReadPixels();\n }\n\n protected readImagePixels(out: Uint8Array, x: number, y: number, w: number, h: number): boolean {\n assert(this._fbo !== undefined);\n if (this._fbo === undefined)\n return false;\n\n const context = this.renderSystem.context;\n let didSucceed = true;\n this.renderSystem.frameBufferStack.execute(this._fbo, true, false, () => {\n try {\n context.readPixels(x, y, w, h, context.RGBA, context.UNSIGNED_BYTE, out);\n } catch {\n didSucceed = false;\n }\n });\n\n return didSucceed;\n }\n\n /** Returns a new size scaled up to a maximum size while maintaining proper aspect ratio. The new size will be\n * curSize adjusted so that it fits fully within maxSize in one dimension, maintaining its original aspect ratio.\n */\n private static _applyAspectRatioCorrection(curSize: XAndY, maxSize: XAndY): Point2d {\n const widthRatio = maxSize.x / curSize.x;\n const heightRatio = maxSize.y / curSize.y;\n const bestRatio = Math.min(widthRatio, heightRatio);\n return new Point2d(curSize.x * bestRatio, curSize.y * bestRatio);\n }\n\n public override readImageBuffer(args?: ReadImageBufferArgs): ImageBuffer | undefined {\n if (!this.assignDC())\n return undefined;\n\n // Determine and validate capture rect.\n const viewRect = this.renderRect; // already has device pixel ratio applied\n const captureRect = args?.rect ? this.cssViewRectToDeviceViewRect(args.rect) : viewRect;\n if (captureRect.isNull)\n return undefined;\n\n const topLeft = Point3d.create(captureRect.left, captureRect.top);\n const bottomRight = Point2d.create(captureRect.right - 1, captureRect.bottom - 1);\n if (!viewRect.containsPoint(topLeft) || !viewRect.containsPoint(bottomRight))\n return undefined;\n\n // ViewRect origin is at top-left. GL origin is at bottom-left.\n const bottom = viewRect.height - captureRect.bottom;\n const imageData = new Uint8Array(4 * captureRect.width * captureRect.height);\n if (!this.readImagePixels(imageData, captureRect.left, bottom, captureRect.width, captureRect.height))\n return undefined;\n\n // Alpha has already been blended. Make all pixels opaque, *except* for background pixels if background color is fully transparent.\n const preserveBGAlpha = 0 === this.uniforms.style.backgroundAlpha;\n let isEmptyImage = true;\n for (let i = 3; i < imageData.length; i += 4) {\n const a = imageData[i];\n if (!preserveBGAlpha || a > 0) {\n imageData[i] = 0xff;\n isEmptyImage = false;\n }\n }\n\n // Optimization for view attachments: if image consists entirely of transparent background pixels, don't bother producing an image.\n let image = !isEmptyImage ? ImageBuffer.create(imageData, ImageBufferFormat.Rgba, captureRect.width) : undefined;\n if (!image)\n return undefined;\n\n // Scale image.\n if (args?.size && (args.size.x !== captureRect.width || args.size.y !== captureRect.height)) {\n if (args.size.x <= 0 || args.size.y <= 0)\n return undefined;\n\n let canvas = imageBufferToCanvas(image, true);\n if (!canvas)\n return undefined;\n\n const adjustedSize = Target._applyAspectRatioCorrection({ x: captureRect.width, y: captureRect.height }, args.size);\n canvas = canvasToResizedCanvasWithBars(canvas, adjustedSize, new Point2d(args.size.x - adjustedSize.x, args.size.y - adjustedSize.y), this.uniforms.style.backgroundHexString);\n image = canvasToImageBuffer(canvas);\n if (!image)\n return undefined;\n }\n\n // Our image is upside-down by default. Flip it unless otherwise specified.\n if (!args?.upsideDown) {\n const halfHeight = Math.floor(image.height / 2);\n const numBytesPerRow = image.width * 4;\n for (let loY = 0; loY < halfHeight; loY++) {\n for (let x = 0; x < image.width; x++) {\n const hiY = (image.height - 1) - loY;\n const loIdx = loY * numBytesPerRow + x * 4;\n const hiIdx = hiY * numBytesPerRow + x * 4;\n\n swapImageByte(image, loIdx, hiIdx);\n swapImageByte(image, loIdx + 1, hiIdx + 1);\n swapImageByte(image, loIdx + 2, hiIdx + 2);\n swapImageByte(image, loIdx + 3, hiIdx + 3);\n }\n }\n }\n\n return image;\n }\n\n public copyImageToCanvas(overlayCanvas?: HTMLCanvasElement): HTMLCanvasElement {\n const image = this.readImageBuffer();\n const canvas = undefined !== image ? imageBufferToCanvas(image, false) : undefined;\n const retCanvas = undefined !== canvas ? canvas : document.createElement(\"canvas\");\n\n if (overlayCanvas) {\n const ctx = retCanvas.getContext(\"2d\")!;\n ctx.drawImage(overlayCanvas, 0, 0);\n }\n\n const pixelRatio = this.devicePixelRatio;\n retCanvas.getContext(\"2d\")!.scale(pixelRatio, pixelRatio);\n\n return retCanvas;\n }\n\n public drawPlanarClassifiers() {\n if (this._planarClassifiers) {\n this._planarClassifiers.forEach((classifier) => {\n this._currentlyDrawingClassifier = classifier as PlanarClassifier;\n this._currentlyDrawingClassifier.draw(this);\n this._currentlyDrawingClassifier = undefined;\n });\n }\n }\n public drawSolarShadowMap() {\n if (this.solarShadowMap.isEnabled)\n this.solarShadowMap.draw(this);\n }\n public drawTextureDrapes() {\n if (this._textureDrapes)\n this._textureDrapes.forEach((drape) => (drape as TextureDrape).draw(this));\n }\n\n public get screenSpaceEffects(): Iterable<string> {\n return this._screenSpaceEffects;\n }\n\n public set screenSpaceEffects(effects: Iterable<string>) {\n this._screenSpaceEffects = [...effects];\n }\n\n public get screenSpaceEffectContext(): ScreenSpaceEffectContext {\n assert(undefined !== this._viewport);\n return { viewport: this._viewport };\n }\n\n public get currentAnimationTransformNodeId(): number | undefined {\n return this._currentAnimationTransformNodeId;\n }\n public set currentAnimationTransformNodeId(id: number | undefined) {\n assert(undefined === this._currentAnimationTransformNodeId || undefined === id);\n this._currentAnimationTransformNodeId = id;\n }\n\n /** Given GraphicBranch.animationId identifying *any* node in the scene's schedule script, return the transform node Id\n * that should be used to filter the branch's graphics for display, or undefined if no filtering should be applied.\n */\n public getAnimationTransformNodeId(animationNodeId: number | undefined): number | undefined {\n if (undefined === this.animationBranches || undefined === this.currentAnimationTransformNodeId || undefined === animationNodeId)\n return undefined;\n\n return this.animationBranches.transformNodeIds.has(animationNodeId) ? animationNodeId : AnimationNodeId.Untransformed;\n }\n\n protected abstract _assignDC(): boolean;\n protected abstract _beginPaint(fbo: FrameBuffer): void;\n protected abstract _endPaint(): void;\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n this._compositor.collectStatistics(stats);\n const thematicBytes = this.uniforms.thematic.bytesUsed;\n if (0 < thematicBytes)\n stats.addThematicTexture(thematicBytes);\n\n const clipBytes = this.uniforms.branch.clipStack.bytesUsed;\n if (clipBytes)\n stats.addClipVolume(clipBytes);\n }\n\n protected cssViewRectToDeviceViewRect(rect: ViewRect): ViewRect {\n // NB: ViewRect constructor *floors* inputs.\n const ratio = this.devicePixelRatio;\n return new ViewRect(\n Math.floor(rect.left * ratio),\n Math.floor(rect.top * ratio),\n Math.floor(rect.right * ratio),\n Math.floor(rect.bottom * ratio));\n }\n\n public getRenderCommands(): Array<{ name: string, count: number }> {\n return this._renderCommands.dump();\n }\n}\n\nclass CanvasState {\n public readonly canvas: HTMLCanvasElement;\n public needsClear = false;\n private _isWebGLCanvas: boolean;\n\n public constructor(canvas: HTMLCanvasElement) {\n this.canvas = canvas;\n this._isWebGLCanvas = this.canvas === System.instance.canvas;\n }\n\n // Returns true if the rect actually changed.\n public updateDimensions(pixelRatio: number): boolean {\n const w = Math.floor(this.canvas.clientWidth * pixelRatio);\n const h = Math.floor(this.canvas.clientHeight * pixelRatio);\n\n // Do not update the dimensions if not needed, or if new width or height is 0, which is invalid.\n // NB: the 0-dimension check indirectly resolves an issue when a viewport is dropped and immediately re-added\n // to the view manager. See ViewManager.test.ts for more details. 0 is also the case when vpDiv.removeChild\n // is done on webGLCanvas, due to client sizes being 0 afterward.\n if (w === this.canvas.width && h === this.canvas.height || (0 === w || 0 === h))\n return false;\n\n // Must ensure internal bitmap grid dimensions of on-screen canvas match its own on-screen appearance.\n this.canvas.width = w;\n this.canvas.height = h;\n\n if (!this._isWebGLCanvas) {\n const ctx = this.canvas.getContext(\"2d\")!;\n ctx.scale(pixelRatio, pixelRatio); // apply the pixelRatio as a scale on the 2d context for drawing of decorations, etc.\n ctx.save();\n }\n\n return true;\n }\n\n public get width() { return this.canvas.width; }\n public get height() { return this.canvas.height; }\n}\n\n/** A Target that renders to a canvas on the screen\n * @internal\n */\nexport class OnScreenTarget extends Target {\n private readonly _2dCanvas: CanvasState;\n private readonly _webglCanvas: CanvasState;\n private _usingWebGLCanvas = false;\n private _blitGeom?: SingleTexturedViewportQuadGeometry;\n private _scratchProgParams?: ShaderProgramParams;\n private _scratchDrawParams?: DrawParams;\n private _devicePixelRatioOverride?: number;\n\n private get _curCanvas() { return this._usingWebGLCanvas ? this._webglCanvas : this._2dCanvas; }\n\n public constructor(canvas: HTMLCanvasElement) {\n super();\n this._2dCanvas = new CanvasState(canvas);\n this._webglCanvas = new CanvasState(this.renderSystem.canvas);\n }\n\n public override get isDisposed(): boolean {\n return undefined === this._blitGeom\n && undefined === this._scratchProgParams\n && undefined === this._scratchDrawParams\n && super.isDisposed;\n }\n\n public override[Symbol.dispose]() {\n this._blitGeom = dispose(this._blitGeom);\n this._scratchProgParams = undefined;\n this._scratchDrawParams = undefined;\n super[Symbol.dispose]();\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n super.collectStatistics(stats);\n if (undefined !== this._blitGeom)\n this._blitGeom.collectStatistics(stats);\n }\n\n public get devicePixelRatioOverride(): number | undefined { return this._devicePixelRatioOverride; }\n public set devicePixelRatioOverride(ovr: number | undefined) { this._devicePixelRatioOverride = ovr; }\n public override get devicePixelRatio(): number {\n if (undefined !== this.devicePixelRatioOverride)\n return this.devicePixelRatioOverride;\n\n if (false === this.renderSystem.options.dpiAwareViewports)\n return 1.0;\n\n if (undefined !== this.renderSystem.options.devicePixelRatioOverride)\n return this.renderSystem.options.devicePixelRatioOverride;\n\n return window.devicePixelRatio || 1.0;\n }\n\n public setViewRect(_rect: ViewRect, _temporary: boolean): void {\n assert(false);\n }\n\n /** Internal-only function for testing. Returns true if the FBO dimensions match the canvas dimensions */\n public checkFboDimensions(): boolean {\n if (undefined !== this._fbo) {\n const tx = this._fbo.getColor(0);\n if (tx.width !== this._curCanvas.width || tx.height !== this._curCanvas.height)\n return false;\n }\n return true;\n }\n\n protected _assignDC(): boolean {\n this.disposeFbo();\n const fbo = this.allocateFbo();\n if (!fbo)\n return false;\n\n const tx = fbo.getColor(0);\n assert(undefined !== tx.getHandle());\n this._blitGeom = SingleTexturedViewportQuadGeometry.createGeometry(tx.getHandle()!, TechniqueId.CopyColorNoAlpha);\n if (undefined === this._blitGeom)\n this.disposeFbo();\n\n return undefined !== this._blitGeom;\n }\n\n public updateViewRect(): boolean {\n const pixelRatio = this.devicePixelRatio;\n const changed2d = this._2dCanvas.updateDimensions(pixelRatio);\n const changedWebGL = this._webglCanvas.updateDimensions(pixelRatio);\n this.renderRect.init(0, 0, this._curCanvas.width, this._curCanvas.height);\n return this._usingWebGLCanvas ? changedWebGL : changed2d;\n }\n\n protected _beginPaint(fbo: FrameBuffer): void {\n // Render to our framebuffer\n const system = this.renderSystem;\n system.frameBufferStack.push(fbo, true, false);\n\n const viewRect = this.viewRect;\n\n // Ensure off-screen canvas is sufficiently large for on-screen canvas.\n // Using a portion of a larger canvas lets us avoid thrashing canvas resizes with multiple viewports.\n if (system.canvas.width < viewRect.width)\n system.canvas.width = viewRect.width;\n if (system.canvas.height < viewRect.height)\n system.canvas.height = viewRect.height;\n assert(system.context.drawingBufferWidth >= viewRect.width, \"offscreen context dimensions don't match onscreen\");\n assert(system.context.drawingBufferHeight >= viewRect.height, \"offscreen context dimensions don't match onscreen\");\n }\n\n private getDrawParams(target: OnScreenTarget, geom: SingleTexturedViewportQuadGeometry) {\n if (undefined === this._scratchProgParams) {\n this._scratchProgParams = new ShaderProgramParams();\n this._scratchDrawParams = new DrawParams();\n }\n\n this._scratchProgParams.init(target);\n this._scratchDrawParams!.init(this._scratchProgParams, geom);\n return this._scratchDrawParams!;\n }\n\n protected _endPaint(): void {\n if (undefined === this._blitGeom)\n return;\n\n // Blit the final image to the canvas.\n const drawParams = this.getDrawParams(this, this._blitGeom);\n\n const system = this.renderSystem;\n system.frameBufferStack.pop();\n system.applyRenderState(RenderState.defaults);\n system.techniques.draw(drawParams);\n\n if (this._usingWebGLCanvas)\n return; // We already drew (using WebGL) the framebuffer contents directly to the on-screen WebGL canvas.\n\n // Copy off-screen canvas contents to on-screen canvas\n const onscreenContext = this._2dCanvas.canvas.getContext(\"2d\", { alpha: true });\n assert(null !== onscreenContext);\n if (null !== onscreenContext) {\n const w = this.viewRect.width, h = this.viewRect.height;\n const yOffset = system.canvas.height - h; // drawImage has top as Y=0, GL has bottom as Y=0\n onscreenContext.save();\n\n if (this.uniforms.style.backgroundAlpha < 1) {\n // If background is transparent, we aren't guaranteed that every pixel will be overwritten - clear it.\n onscreenContext.clearRect(0, 0, w, h);\n }\n\n onscreenContext.setTransform(1, 0, 0, 1, 0, 0); // revert any previous devicePixelRatio scale for drawImage() call below.\n onscreenContext.drawImage(system.canvas, 0, yOffset, w, h, 0, 0, w, h);\n onscreenContext.restore();\n }\n }\n\n protected override drawOverlayDecorations(): void {\n const ctx = this._2dCanvas.canvas.getContext(\"2d\", { alpha: true })!;\n if (this._usingWebGLCanvas && this._2dCanvas.needsClear) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0); // revert any previous devicePixelRatio scale for clearRect() call below.\n ctx.clearRect(0, 0, this._2dCanvas.width, this._2dCanvas.height);\n ctx.restore();\n this._2dCanvas.needsClear = false;\n }\n\n const canvasDecs = this.graphics.canvasDecorations;\n if (canvasDecs) {\n for (const overlay of canvasDecs) {\n ctx.save();\n if (overlay.position)\n ctx.translate(overlay.position.x, overlay.position.y);\n\n overlay.drawDecoration(ctx);\n this._2dCanvas.needsClear = true;\n ctx.restore();\n }\n }\n }\n\n public override pickOverlayDecoration(pt: XAndY): CanvasDecoration | undefined {\n const overlays = this.graphics.canvasDecorations;\n if (undefined === overlays)\n return undefined;\n\n // loop over array backwards, because later entries are drawn on top.\n for (let i = overlays.length - 1; i >= 0; --i) {\n const overlay = overlays[i];\n if (undefined !== overlay.pick && overlay.pick(pt))\n return overlay;\n }\n return undefined;\n }\n\n public override onResized(): void {\n this.disposeFbo();\n }\n\n public override setRenderToScreen(toScreen: boolean): HTMLCanvasElement | undefined {\n if (toScreen === this._usingWebGLCanvas)\n return;\n\n // NB: need to force a buffer change in this case because nothing is changing sizes except the webglCanvas\n if (toScreen)\n this.compositor.forceBufferChange();\n\n this._usingWebGLCanvas = toScreen;\n return toScreen ? this._webglCanvas.canvas : undefined;\n }\n\n public override readImageToCanvas(overlayCanvas?: HTMLCanvasElement): HTMLCanvasElement {\n return this._usingWebGLCanvas || !overlayCanvas ? this.copyImageToCanvas(overlayCanvas) : this._2dCanvas.canvas;\n }\n}\n/** @internal */\nexport class OffScreenTarget extends Target {\n public constructor(rect: ViewRect) {\n super(rect);\n }\n\n public override onResized(): void {\n assert(false); // offscreen viewport's dimensions are set once, in constructor.\n }\n\n public updateViewRect(): boolean { return false; } // offscreen target does not dynamically resize the view rect\n\n public setViewRect(rect: ViewRect, temporary: boolean): void {\n if (this.renderRect.equals(rect))\n return;\n\n this.renderRect.setFrom(rect);\n if (temporary) {\n // Temporarily adjust view rect to create scene for a view attachment.\n // Will be reset before attachment is rendered - so don't blow away our framebuffers + textures\n return;\n }\n\n this.disposeFbo();\n dispose(this._compositor);\n }\n\n protected _assignDC(): boolean {\n return undefined !== this.allocateFbo();\n }\n\n protected _beginPaint(fbo: FrameBuffer): void {\n this.renderSystem.frameBufferStack.push(fbo, true, false);\n }\n\n protected _endPaint(): void {\n this.renderSystem.frameBufferStack.pop();\n }\n\n public override readImageToCanvas(): HTMLCanvasElement {\n return this.copyImageToCanvas();\n }\n}\n\nfunction interpolatePoint(p0: Point3d, fraction: number, p1: Point3d, out: Point3d): Point3d {\n let x: number;\n let y: number;\n let z: number;\n if (fraction <= 0.5) {\n x = p0.x + fraction * (p1.x - p0.x);\n y = p0.y + fraction * (p1.y - p0.y);\n z = p0.z + fraction * (p1.z - p0.z);\n } else {\n const t = fraction - 1.0;\n x = p1.x + t * (p1.x - p0.x);\n y = p1.y + t * (p1.y - p0.y);\n z = p1.z + t * (p1.z - p0.z);\n }\n\n return Point3d.create(x, y, z, out);\n}\n\nfunction interpolateFrustumPoint(destFrust: Frustum, srcFrust: Frustum, destPoint: Npc, scale: number, srcPoint: Npc): void {\n interpolatePoint(srcFrust.getCorner(destPoint), scale, srcFrust.getCorner(srcPoint), destFrust.points[destPoint]);\n}\n"]}
1
+ {"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Target.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, dispose, expectDefined, expectNotNull, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, Range3d, Transform, XAndY, XYZ } from \"@itwin/core-geometry\";\nimport {\n AmbientOcclusion, AnalysisStyle, ContourDisplay, Frustum, ImageBuffer, ImageBufferFormat, Npc, RenderMode, RenderTexture, ThematicDisplayMode, ViewFlags,\n} from \"@itwin/core-common\";\nimport { ViewRect } from \"../../../common/ViewRect\";\nimport { canvasToImageBuffer, canvasToResizedCanvasWithBars, imageBufferToCanvas } from \"../../../common/ImageUtil\";\nimport { HiliteSet, ModelSubCategoryHiliteMode } from \"../../../SelectionSet\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { ReadImageBufferArgs, Viewport } from \"../../../Viewport\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { CanvasDecoration } from \"../../../render/CanvasDecoration\";\nimport { Decorations } from \"../../../render/Decorations\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { AnimationBranchStates } from \"../AnimationBranchState\";\nimport { Pixel } from \"../../../render/Pixel\";\nimport { GraphicList } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { createEmptyRenderPlan, RenderPlan } from \"../RenderPlan\";\nimport { PlanarClassifierMap, RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { RenderTextureDrape, TextureDrapeMap } from \"../RenderTextureDrape\";\nimport { RenderTarget } from \"../../../render/RenderTarget\";\nimport { PrimitiveVisibility, RenderTargetDebugControl } from \"../RenderTargetDebugControl\";\nimport { ScreenSpaceEffectContext } from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { Scene } from \"../../../render/Scene\";\nimport { QueryTileFeaturesOptions, QueryVisibleFeaturesCallback } from \"../../../render/VisibleFeature\";\nimport { BranchState } from \"./BranchState\";\nimport { CachedGeometry, SingleTexturedViewportQuadGeometry } from \"./CachedGeometry\";\nimport { ColorInfo } from \"./ColorInfo\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { Batch, Branch, WorldDecorations } from \"./Graphic\";\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\nimport { PerformanceMetrics } from \"./PerformanceMetrics\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { RenderState } from \"./RenderState\";\nimport { SceneCompositor } from \"./SceneCompositor\";\nimport { freeDrawParams } from \"./ScratchDrawParams\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { SolarShadowMap } from \"./SolarShadowMap\";\nimport { desync, SyncTarget } from \"./Sync\";\nimport { System } from \"./System\";\nimport { TargetUniforms } from \"./TargetUniforms\";\nimport { Techniques } from \"./Technique\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { TextureDrape } from \"./TextureDrape\";\nimport { EdgeSettings } from \"./EdgeSettings\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { VisibleTileFeatures } from \"./VisibleTileFeatures\";\nimport { FrameStatsCollector } from \"../FrameStatsCollector\";\nimport { ActiveSpatialClassifier } from \"../../../SpatialClassifiersState\";\nimport { AnimationNodeId } from \"../../../common/internal/render/AnimationNodeId\";\nimport { _implementationProhibited } from \"../../../common/internal/Symbols\";\n\nfunction swapImageByte(image: ImageBuffer, i0: number, i1: number) {\n const tmp = image.data[i0];\n image.data[i0] = image.data[i1];\n image.data[i1] = tmp;\n}\n\n/** @internal */\nexport interface Hilites {\n readonly elements: Id64.Uint32Set;\n readonly subcategories: Id64.Uint32Set;\n readonly models: Id64.Uint32Set;\n readonly isEmpty: boolean;\n readonly modelSubCategoryMode: ModelSubCategoryHiliteMode;\n}\n\nclass EmptyHiliteSet {\n public readonly elements: Id64.Uint32Set;\n public readonly subcategories: Id64.Uint32Set;\n public readonly models: Id64.Uint32Set;\n public readonly isEmpty = true;\n public readonly modelSubCategoryMode = \"union\";\n\n public constructor() {\n this.elements = this.subcategories = this.models = new Id64.Uint32Set();\n }\n}\n\ninterface ReadPixelResources {\n readonly texture: Texture2DHandle;\n readonly fbo: FrameBuffer;\n}\n\n/** @internal */\nexport abstract class Target extends RenderTarget implements RenderTargetDebugControl, WebGLDisposable {\n protected override readonly [_implementationProhibited] = undefined;\n public readonly graphics = new TargetGraphics();\n private _planarClassifiers?: PlanarClassifierMap;\n private _textureDrapes?: TextureDrapeMap;\n private _worldDecorations?: WorldDecorations;\n private _currPickExclusions = new Id64.Uint32Set();\n private _swapPickExclusions = new Id64.Uint32Set();\n public readonly pickExclusionsSyncTarget: SyncTarget = { syncKey: Number.MIN_SAFE_INTEGER };\n private _hilites: Hilites = new EmptyHiliteSet();\n private readonly _hiliteSyncTarget: SyncTarget = { syncKey: Number.MIN_SAFE_INTEGER };\n private _flashed: Id64.Uint32Pair = { lower: 0, upper: 0 };\n private _flashedId = Id64.invalid;\n private _flashIntensity: number = 0;\n private _renderCommands: RenderCommands;\n private _overlayRenderState: RenderState;\n protected _compositor: SceneCompositor;\n protected _fbo?: FrameBuffer;\n private _dcAssigned = false;\n public performanceMetrics?: PerformanceMetrics;\n public readonly decorationsState = BranchState.createForDecorations(); // Used when rendering view background and view/world overlays.\n public readonly uniforms = new TargetUniforms(this);\n public readonly renderRect = new ViewRect();\n public analysisStyle?: AnalysisStyle;\n public analysisTexture?: RenderTexture;\n public ambientOcclusionSettings = AmbientOcclusion.Settings.defaults;\n private _wantAmbientOcclusion = false;\n private _batches: Batch[] = [];\n public plan = createEmptyRenderPlan();\n private _animationBranches?: AnimationBranchStates;\n private _isReadPixelsInProgress = false;\n private _readPixelsSelector = Pixel.Selector.None;\n private _readPixelReusableResources?: ReadPixelResources;\n private _drawNonLocatable = true;\n private _currentlyDrawingClassifier?: PlanarClassifier;\n private _analysisFraction: number = 0;\n private _antialiasSamples = 1;\n // This exists strictly to be forwarded to ScreenSpaceEffects. Do not use it for anything else.\n private _viewport?: Viewport;\n private _screenSpaceEffects: string[] = [];\n public isFadeOutActive = false;\n public activeVolumeClassifierTexture?: WebGLTexture;\n public activeVolumeClassifierProps?: ActiveSpatialClassifier;\n public activeVolumeClassifierModelId?: Id64String;\n private _currentAnimationTransformNodeId?: number;\n\n // RenderTargetDebugControl\n public vcSupportIntersectingVolumes: boolean = false;\n public drawForReadPixels = false;\n public drawingBackgroundForReadPixels = false;\n public primitiveVisibility = PrimitiveVisibility.All;\n public displayDrapeFrustum = false;\n public displayMaskFrustum = false;\n public displayRealityTilePreload = false;\n public displayRealityTileRanges = false;\n public logRealityTiles = false;\n public displayNormalMaps = true;\n\n public freezeRealityTiles = false;\n\n public get shadowFrustum(): Frustum | undefined {\n const map = this.solarShadowMap;\n return map.isEnabled && map.isReady ? map.frustum : undefined;\n }\n\n public override get debugControl(): RenderTargetDebugControl { return this; }\n\n public get viewRect(): ViewRect {\n return this.renderRect;\n }\n\n protected constructor(rect?: ViewRect) {\n super();\n this._renderCommands = this.uniforms.branch.createRenderCommands(this.uniforms.batch.state);\n this._overlayRenderState = new RenderState();\n this._overlayRenderState.flags.depthMask = false;\n this._overlayRenderState.flags.blend = true;\n this._overlayRenderState.blend.setBlendFunc(GL.BlendFactor.One, GL.BlendFactor.OneMinusSrcAlpha);\n this._compositor = SceneCompositor.create(this); // compositor is created but not yet initialized... we are still undisposed\n this.renderRect = rect ? rect : new ViewRect(); // if the rect is undefined, expect that it will be updated dynamically in an OnScreenTarget\n if (undefined !== System.instance.antialiasSamples)\n this._antialiasSamples = System.instance.antialiasSamples;\n else\n this._antialiasSamples = (undefined !== System.instance.options.antialiasSamples ? System.instance.options.antialiasSamples : 1);\n }\n\n public get compositor() { return this._compositor; }\n public get isReadPixelsInProgress(): boolean { return this._isReadPixelsInProgress; }\n public get readPixelsSelector(): Pixel.Selector { return this._readPixelsSelector; }\n public get drawNonLocatable(): boolean { return this._drawNonLocatable; }\n\n public get techniques(): Techniques { return this.renderSystem.techniques; }\n\n public get hilites(): Hilites { return this._hilites; }\n public get hiliteSyncTarget(): SyncTarget { return this._hiliteSyncTarget; }\n\n public get pickExclusions(): Id64.Uint32Set { return this._currPickExclusions; }\n\n public get flashed(): Id64.Uint32Pair | undefined { return Id64.isValid(this._flashedId) ? this._flashed : undefined; }\n public get flashedId(): Id64String { return this._flashedId; }\n public get flashIntensity(): number { return this._flashIntensity; }\n\n public get analysisFraction(): number { return this._analysisFraction; }\n public set analysisFraction(fraction: number) { this._analysisFraction = fraction; }\n\n public override get animationBranches(): AnimationBranchStates | undefined {\n return this._animationBranches;\n }\n public override set animationBranches(branches: AnimationBranchStates | undefined) {\n this.disposeAnimationBranches();\n this._animationBranches = branches;\n }\n\n private disposeAnimationBranches(): void {\n this._animationBranches = undefined;\n }\n\n public override get antialiasSamples(): number { return this._antialiasSamples; }\n public override set antialiasSamples(numSamples: number) { this._antialiasSamples = numSamples; }\n\n public get solarShadowMap(): SolarShadowMap { return this.compositor.solarShadowMap; }\n public get isDrawingShadowMap(): boolean { return this.solarShadowMap.isEnabled && this.solarShadowMap.isDrawing; }\n public override getPlanarClassifier(id: Id64String): RenderPlanarClassifier | undefined {\n return undefined !== this._planarClassifiers ? this._planarClassifiers.get(id) : undefined;\n }\n public override createPlanarClassifier(properties?: ActiveSpatialClassifier): PlanarClassifier {\n return PlanarClassifier.create(properties, this);\n }\n public override getTextureDrape(id: Id64String): RenderTextureDrape | undefined {\n return undefined !== this._textureDrapes ? this._textureDrapes.get(id) : undefined;\n }\n\n public getWorldDecorations(decs: GraphicList): Branch {\n if (undefined === this._worldDecorations) {\n // Don't allow flags like monochrome etc to affect world decorations. Allow lighting in 3d only.\n const vf = new ViewFlags({\n renderMode: RenderMode.SmoothShade,\n clipVolume: false,\n whiteOnWhiteReversal: false,\n lighting: !this.is2d,\n shadows: false,\n });\n\n this._worldDecorations = new WorldDecorations(vf);\n }\n\n this._worldDecorations.init(decs);\n return this._worldDecorations;\n }\n\n public get currentBranch(): BranchState { return this.uniforms.branch.top; }\n public get currentViewFlags(): ViewFlags { return this.currentBranch.viewFlags; }\n public get currentTransform(): Transform { return this.currentBranch.transform; }\n public get currentTransparencyThreshold(): number { return this.currentEdgeSettings.transparencyThreshold; }\n public get currentEdgeSettings(): EdgeSettings { return this.currentBranch.edgeSettings; }\n public get currentFeatureSymbologyOverrides(): FeatureSymbology.Overrides { return this.currentBranch.symbologyOverrides; }\n public get currentPlanarClassifier(): PlanarClassifier | undefined { return this.currentBranch.planarClassifier; }\n public get currentlyDrawingClassifier(): PlanarClassifier | undefined { return this._currentlyDrawingClassifier; }\n public get currentTextureDrape(): TextureDrape | undefined {\n const drape = this.currentBranch.textureDrape;\n return undefined !== drape && drape.isReady ? drape : undefined;\n }\n public get currentPlanarClassifierOrDrape(): PlanarClassifier | TextureDrape | undefined {\n const drape = this.currentTextureDrape;\n return undefined === drape ? this.currentPlanarClassifier : drape;\n }\n public get currentContours(): ContourDisplay | undefined { return this.currentBranch.contourLine; }\n\n public modelToView(modelPt: XYZ, result?: Point3d): Point3d {\n return this.uniforms.branch.modelViewMatrix.multiplyPoint3dQuietNormalize(modelPt, result);\n }\n\n public get is2d(): boolean { return this.uniforms.frustum.is2d; }\n public get is3d(): boolean { return !this.is2d; }\n\n private _isDisposed = false;\n public get isDisposed(): boolean {\n return this.graphics.isDisposed\n && undefined === this._fbo\n && undefined === this._worldDecorations\n && undefined === this._planarClassifiers\n && undefined === this._textureDrapes\n && this._renderCommands.isEmpty\n && 0 === this._batches.length\n && this.uniforms.thematic.isDisposed\n && this._isDisposed;\n }\n\n protected allocateFbo(): FrameBuffer | undefined {\n if (this._fbo)\n return this._fbo;\n\n const rect = this.viewRect;\n const color = TextureHandle.createForAttachment(rect.width, rect.height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === color)\n return undefined;\n\n const depth = System.instance.createDepthBuffer(rect.width, rect.height, 1);\n if (undefined === depth) {\n color[Symbol.dispose]();\n return undefined;\n }\n\n this._fbo = FrameBuffer.create([color], depth);\n if (undefined === this._fbo) {\n color[Symbol.dispose]();\n depth[Symbol.dispose]();\n return undefined;\n }\n\n return this._fbo;\n }\n\n protected disposeFbo(): void {\n if (!this._fbo)\n return;\n\n const tx = this._fbo.getColor(0);\n const db = this._fbo.depthBuffer;\n this._fbo = dispose(this._fbo);\n this._dcAssigned = false;\n\n // We allocated our framebuffer's color attachment, so must dispose of it too.\n assert(undefined !== tx);\n dispose(tx);\n // We allocated our framebuffer's depth attachment, so must dispose of it too.\n assert(undefined !== db);\n dispose(db);\n }\n\n public override[Symbol.dispose]() {\n this.reset();\n this.disposeFbo();\n dispose(this._compositor);\n this._viewport = undefined;\n\n this._isDisposed = true;\n }\n\n public pushBranch(branch: Branch): void {\n this.uniforms.branch.pushBranch(branch);\n }\n public pushState(state: BranchState) {\n this.uniforms.branch.pushState(state);\n }\n public popBranch(): void {\n this.uniforms.branch.pop();\n }\n\n public pushViewClip(): void {\n this.uniforms.branch.pushViewClip();\n }\n\n public popViewClip(): void {\n this.uniforms.branch.popViewClip();\n }\n\n /** @internal */\n public isRangeOutsideActiveVolume(range: Range3d): boolean {\n return this.uniforms.branch.clipStack.isRangeClipped(range, this.currentTransform);\n }\n\n private readonly _scratchRange = new Range3d();\n\n /** @internal */\n public isGeometryOutsideActiveVolume(geom: CachedGeometry): boolean {\n if (!this.uniforms.branch.clipStack.hasClip || this.uniforms.branch.clipStack.hasOutsideColor)\n return false;\n\n const range = geom.computeRange(this._scratchRange);\n return this.isRangeOutsideActiveVolume(range);\n }\n\n public pushBatch(batch: Batch) {\n this.uniforms.batch.setCurrentBatch(batch);\n }\n public popBatch() {\n this.uniforms.batch.setCurrentBatch(undefined);\n }\n\n public addBatch(batch: Batch) {\n assert(this._batches.indexOf(batch) < 0);\n this._batches.push(batch);\n }\n\n public onBatchDisposed(batch: Batch) {\n const index = this._batches.indexOf(batch);\n assert(index > -1);\n this._batches.splice(index, 1);\n }\n\n public get wantAmbientOcclusion(): boolean {\n return this._wantAmbientOcclusion;\n }\n\n public get wantThematicDisplay(): boolean {\n return this.currentViewFlags.thematicDisplay && this.is3d && undefined !== this.uniforms.thematic.thematicDisplay;\n }\n\n public get wantAtmosphere(): boolean {\n return undefined !== this.plan.atmosphere;\n }\n\n public get wantThematicSensors(): boolean {\n const thematic = this.plan.thematic;\n return this.wantThematicDisplay && undefined !== thematic && ThematicDisplayMode.InverseDistanceWeightedSensors === thematic.displayMode && thematic.sensorSettings.sensors.length > 0;\n }\n\n public override updateSolarShadows(context: SceneContext | undefined): void {\n this.compositor.updateSolarShadows(context);\n }\n\n // ---- Implementation of RenderTarget interface ---- //\n\n public get renderSystem(): System { return System.instance; }\n\n public get planFraction() { return this.uniforms.frustum.planFraction; }\n public get planFrustum() { return this.uniforms.frustum.planFrustum; }\n\n public changeDecorations(decs: Decorations): void {\n this.graphics.decorations = decs;\n }\n\n public changeScene(scene: Scene) {\n this.graphics.changeScene(scene);\n\n this.changeTextureDrapes(scene.textureDrapes);\n this.changePlanarClassifiers(scene.planarClassifiers);\n\n this.changeDrapesOrClassifiers<RenderPlanarClassifier>(this._planarClassifiers, scene.planarClassifiers);\n this._planarClassifiers = scene.planarClassifiers;\n\n this.activeVolumeClassifierProps = scene.volumeClassifier?.classifier;\n this.activeVolumeClassifierModelId = scene.volumeClassifier?.modelId;\n }\n\n public override onBeforeRender(viewport: Viewport, setSceneNeedRedraw: (redraw: boolean) => void) {\n this._viewport = viewport;\n IModelFrameLifecycle.onBeforeRender.raiseEvent({\n renderSystem: this.renderSystem,\n viewport,\n setSceneNeedRedraw,\n });\n }\n\n private changeDrapesOrClassifiers<T extends Disposable>(oldMap: Map<string, T> | undefined, newMap: Map<string, T> | undefined): void {\n if (undefined === newMap) {\n if (undefined !== oldMap)\n for (const value of oldMap.values())\n value[Symbol.dispose]();\n\n return;\n }\n\n if (undefined !== oldMap) {\n for (const entry of oldMap)\n if (newMap.get(entry[0]) !== entry[1])\n entry[1][Symbol.dispose]();\n }\n }\n public changeTextureDrapes(textureDrapes: TextureDrapeMap | undefined) {\n this.changeDrapesOrClassifiers<RenderTextureDrape>(this._textureDrapes, textureDrapes);\n this._textureDrapes = textureDrapes;\n }\n public changePlanarClassifiers(planarClassifiers?: PlanarClassifierMap) {\n this.changeDrapesOrClassifiers<RenderPlanarClassifier>(this._planarClassifiers, planarClassifiers);\n this._planarClassifiers = planarClassifiers;\n }\n\n public changeDynamics(foreground: GraphicList | undefined, overlay: GraphicList | undefined) {\n this.graphics.changeDynamics(foreground, overlay);\n }\n\n public override overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\n this.uniforms.branch.overrideFeatureSymbology(ovr);\n }\n public override setHiliteSet(hilite: HiliteSet): void {\n this._hilites = hilite;\n desync(this._hiliteSyncTarget);\n }\n public override setFlashed(id: Id64String, intensity: number) {\n if (id !== this._flashedId) {\n this._flashedId = id;\n this._flashed = Id64.getUint32Pair(id);\n }\n\n this._flashIntensity = intensity;\n }\n\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\n this.uniforms.frustum.changeFrustum(newFrustum, newFraction, is3d);\n }\n\n public changeRenderPlan(plan: RenderPlan): void {\n this.plan = plan;\n\n if (this._dcAssigned && plan.is3d !== this.is3d) {\n // changed the dimensionality of the Target. World decorations no longer valid.\n // (lighting is enabled or disabled based on 2d vs 3d).\n this._worldDecorations = dispose(this._worldDecorations);\n\n // Turn off shadows if switching from 3d to 2d\n if (!plan.is3d)\n this.updateSolarShadows(undefined);\n }\n\n if (plan.is3d !== this.decorationsState.is3d)\n this.decorationsState.changeRenderPlan(this.decorationsState.viewFlags, plan.is3d, undefined);\n\n if (!this.assignDC())\n return;\n\n this.isFadeOutActive = plan.isFadeOutActive;\n this.analysisStyle = plan.analysisStyle;\n this.analysisTexture = plan.analysisTexture;\n\n this.uniforms.branch.updateViewClip(plan.clip, plan.clipStyle);\n\n let vf = plan.viewFlags;\n if (!plan.is3d)\n vf = vf.withRenderMode(RenderMode.Wireframe);\n\n if (RenderMode.SmoothShade === vf.renderMode && plan.is3d && undefined !== plan.ao && vf.ambientOcclusion) {\n this._wantAmbientOcclusion = true;\n this.ambientOcclusionSettings = plan.ao;\n } else {\n this._wantAmbientOcclusion = false;\n vf = vf.with(\"ambientOcclusion\", false);\n }\n\n this.uniforms.branch.changeRenderPlan(vf, plan.is3d, plan.hline, plan.contours);\n\n this.changeFrustum(plan.frustum, plan.fraction, plan.is3d);\n\n this.uniforms.thematic.update(this);\n\n this.uniforms.contours.update(this);\n\n this.uniforms.atmosphere.update(this);\n\n // NB: This must be done after changeFrustum() as some of the uniforms depend on the frustum.\n this.uniforms.updateRenderPlan(plan);\n }\n\n public drawFrame(sceneMilSecElapsed?: number): void {\n assert(this.renderSystem.frameBufferStack.isEmpty);\n if (!this.assignDC())\n return;\n\n this.paintScene(sceneMilSecElapsed);\n this.drawOverlayDecorations();\n assert(this.renderSystem.frameBufferStack.isEmpty);\n }\n\n protected drawOverlayDecorations(): void { }\n\n /**\n * Invoked via Viewport.changeView() when the owning Viewport is changed to look at a different view.\n * Invoked via dispose() when the target is being destroyed.\n * The primary difference is that in the former case we retain the SceneCompositor.\n */\n public override reset(_realityMapLayerChanged?: boolean): void {\n this.graphics[Symbol.dispose]();\n this._worldDecorations = dispose(this._worldDecorations);\n dispose(this.uniforms.thematic);\n\n // Ensure that only necessary classifiers are removed. If the reality map layer has not changed,\n // removing all classifiers would result in the loss of draping effects without triggering a refresh.\n if (_realityMapLayerChanged) {\n this.changePlanarClassifiers(undefined);\n } else if (this._planarClassifiers) {\n const filteredClassifiers = new Map(\n [...this._planarClassifiers.entries()]\n .filter(([key]) => key.toLowerCase().includes(\"maplayer\"))\n );\n this.changePlanarClassifiers(filteredClassifiers.size > 0 ? filteredClassifiers : undefined);\n }\n\n this.changeTextureDrapes(undefined);\n\n this._renderCommands.clear();\n\n // Clear FeatureOverrides for this Target.\n // This may not be strictly necessary as the Target may still be viewing some of these batches, but better to clean up and recreate\n // than to leave unused in memory.\n for (const batch of this._batches)\n batch.onTargetDisposed(this);\n\n this._batches = [];\n this.disposeAnimationBranches();\n\n freeDrawParams();\n ShaderProgramExecutor.freeParams();\n Primitive.freeParams();\n }\n\n public get wantInvertBlackBackground(): boolean { return false; }\n\n public computeEdgeWeight(pass: RenderPass, baseWeight: number): number {\n return this.currentEdgeSettings.getWeight(pass, this.currentViewFlags) ?? baseWeight;\n }\n public computeEdgeLineCode(pass: RenderPass, baseCode: number): number {\n return this.currentEdgeSettings.getLineCode(pass, this.currentViewFlags) ?? baseCode;\n }\n public computeEdgeColor(baseColor: ColorInfo): ColorInfo {\n const color = this.currentEdgeSettings.getColor(this.currentViewFlags);\n return undefined !== color ? ColorInfo.createUniform(color) : baseColor;\n }\n\n public beginPerfMetricFrame(sceneMilSecElapsed?: number, readPixels = false) {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.beginFrame();\n if (this.performanceMetrics)\n this.performanceMetrics.beginFrame(sceneMilSecElapsed);\n }\n }\n\n public endPerfMetricFrame(readPixels = false) {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endFrame();\n\n if (undefined === this.performanceMetrics)\n return;\n\n this.performanceMetrics.endOperation(); // End the 'CPU Total Time' operation\n this.performanceMetrics.completeFrameTimings(expectDefined(this._fbo));\n }\n }\n\n public beginPerfMetricRecord(operation: string, readPixels = false): void {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.beginOperation(operation);\n if (this.performanceMetrics)\n this.performanceMetrics.beginOperation(operation);\n }\n }\n\n public endPerfMetricRecord(readPixels = false): void {\n if (!readPixels || (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)) { // only capture readPixel data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endOperation();\n if (this.performanceMetrics)\n this.performanceMetrics.endOperation();\n }\n }\n\n private _frameStatsCollector = new FrameStatsCollector();\n\n public get frameStatsCollector(): FrameStatsCollector { return this._frameStatsCollector; }\n\n public override assignFrameStatsCollector(collector: FrameStatsCollector) { this._frameStatsCollector = collector; }\n\n private paintScene(sceneMilSecElapsed?: number): void {\n if (!this._dcAssigned)\n return;\n\n this._frameStatsCollector.beginTime(\"totalFrameTime\");\n this.beginPerfMetricFrame(sceneMilSecElapsed, this.drawForReadPixels);\n this.beginPerfMetricRecord(\"Begin Paint\", this.drawForReadPixels);\n assert(undefined !== this._fbo);\n this._beginPaint(this._fbo);\n this.endPerfMetricRecord(this.drawForReadPixels);\n\n const gl = this.renderSystem.context;\n const rect = this.viewRect;\n gl.viewport(0, 0, rect.width, rect.height);\n\n // Set this to true to visualize the output of readPixels()...useful for debugging pick.\n if (this.drawForReadPixels) {\n this.beginReadPixels(Pixel.Selector.Feature);\n this.compositor.drawForReadPixels(this._renderCommands, this.graphics.overlays, this.graphics.decorations?.worldOverlay, this.graphics.decorations?.viewOverlay);\n this.endReadPixels();\n } else {\n // After the Target is first created or any time its dimensions change, SceneCompositor.preDraw() must update\n // the compositor's textures, framebuffers, etc. This *must* occur before any drawing occurs.\n // SceneCompositor.draw() checks this, but solar shadow maps, planar classifiers, and texture drapes try to draw\n // before then. So do it now.\n this.compositor.preDraw();\n\n this._frameStatsCollector.beginTime(\"classifiersTime\");\n this.beginPerfMetricRecord(\"Planar Classifiers\");\n this.drawPlanarClassifiers();\n this.endPerfMetricRecord();\n this._frameStatsCollector.endTime(\"classifiersTime\");\n\n this._frameStatsCollector.beginTime(\"shadowsTime\");\n this.beginPerfMetricRecord(\"Shadow Maps\");\n this.drawSolarShadowMap();\n this.endPerfMetricRecord();\n this._frameStatsCollector.endTime(\"shadowsTime\");\n\n this.beginPerfMetricRecord(\"Texture Drapes\");\n this.drawTextureDrapes();\n this.endPerfMetricRecord();\n\n this.beginPerfMetricRecord(\"Init Commands\");\n this._renderCommands.initForRender(this.graphics);\n this.endPerfMetricRecord();\n\n this.compositor.draw(this._renderCommands); // scene compositor gets disposed and then re-initialized... target remains undisposed\n\n this._frameStatsCollector.beginTime(\"overlaysTime\");\n this.beginPerfMetricRecord(\"Overlay Draws\");\n\n this.beginPerfMetricRecord(\"World Overlays\");\n this.drawPass(RenderPass.WorldOverlay);\n this.endPerfMetricRecord();\n\n this.beginPerfMetricRecord(\"View Overlays\");\n this.drawPass(RenderPass.ViewOverlay);\n this.endPerfMetricRecord();\n\n this.endPerfMetricRecord(); // End \"Overlay Draws\"\n this._frameStatsCollector.endTime(\"overlaysTime\");\n }\n\n // Apply screen-space effects. Note we do not reset this._isReadPixelsInProgress until *after* doing so, as screen-space effects only apply\n // during readPixels() if the effect shifts pixels from their original locations.\n this._frameStatsCollector.beginTime(\"screenspaceEffectsTime\");\n this.beginPerfMetricRecord(\"Screenspace Effects\", this.drawForReadPixels);\n this.renderSystem.screenSpaceEffects.apply(this);\n this.endPerfMetricRecord(this.drawForReadPixels);\n this._frameStatsCollector.endTime(\"screenspaceEffectsTime\");\n\n // Reset the batch IDs in all batches drawn for this call.\n this.uniforms.batch.resetBatchState();\n\n this.beginPerfMetricRecord(\"End Paint\", this.drawForReadPixels);\n this._endPaint();\n this.endPerfMetricRecord(this.drawForReadPixels);\n\n this.endPerfMetricFrame(this.drawForReadPixels);\n this._frameStatsCollector.endTime(\"totalFrameTime\");\n }\n\n private drawPass(pass: RenderPass): void {\n this.renderSystem.applyRenderState(this.getRenderState(pass));\n this.techniques.execute(this, this._renderCommands.getCommands(pass), pass);\n }\n\n private getRenderState(pass: RenderPass): RenderState {\n // the other passes are handled by SceneCompositor\n assert(RenderPass.ViewOverlay === pass || RenderPass.WorldOverlay === pass);\n return this._overlayRenderState;\n }\n\n private assignDC(): boolean {\n if (this._dcAssigned)\n return true;\n\n if (!this._assignDC())\n return false;\n\n const rect = this.viewRect;\n if (rect.width < 1 || rect.height < 1)\n return false;\n\n this.uniforms.viewRect.update(rect.width, rect.height);\n this._dcAssigned = true;\n\n return true;\n }\n\n public readPixels(rect: ViewRect, selector: Pixel.Selector, receiver: Pixel.Receiver, excludeNonLocatable: boolean, excludedElements?: Iterable<Id64String>): void {\n if (!this.assignDC())\n return;\n\n // if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics)\n this.beginPerfMetricFrame(undefined, true);\n\n rect = this.cssViewRectToDeviceViewRect(rect);\n\n const gl = this.renderSystem.context;\n const viewRect = this.viewRect;\n gl.viewport(0, 0, viewRect.width, viewRect.height);\n\n // We can't reuse the previous frame's data for a variety of reasons, chief among them that some types of geometry (surfaces, translucent stuff) don't write\n // to the pick buffers and others we don't want - such as non-pickable decorations - do.\n // Render to an offscreen buffer so that we don't destroy the current color buffer.\n const resources = this.createOrReuseReadPixelResources(rect);\n if (resources === undefined) {\n receiver(undefined);\n return;\n }\n\n let result: Pixel.Buffer | undefined;\n\n this.renderSystem.frameBufferStack.execute(resources.fbo, true, false, () => {\n let updatedExclusions = false;\n if (excludedElements) {\n const swap = this._swapPickExclusions;\n swap.clear();\n for (const exclusion of excludedElements) {\n swap.addId(exclusion);\n }\n\n if (!this._currPickExclusions.equals(swap)) {\n this._swapPickExclusions = this._currPickExclusions;\n this._currPickExclusions = swap;\n updatedExclusions = true;\n desync(this.pickExclusionsSyncTarget);\n }\n }\n\n this._drawNonLocatable = !excludeNonLocatable;\n result = this.readPixelsFromFbo(rect, selector);\n this._drawNonLocatable = true;\n\n if (updatedExclusions) {\n this._currPickExclusions.clear();\n desync(this.pickExclusionsSyncTarget);\n }\n });\n\n this.disposeOrReuseReadPixelResources(resources);\n\n receiver(result);\n\n // Reset the batch IDs in all batches drawn for this call.\n this.uniforms.batch.resetBatchState();\n }\n\n private createOrReuseReadPixelResources(rect: ViewRect): ReadPixelResources | undefined {\n if (this._readPixelReusableResources !== undefined) {\n\n // To reuse a texture, we need it to be the same size or bigger than what we need\n if (this._readPixelReusableResources.texture.width >= rect.width && this._readPixelReusableResources.texture.height >= rect.height) {\n const resources = this._readPixelReusableResources;\n this._readPixelReusableResources = undefined;\n\n return resources;\n }\n }\n\n // Create a new texture/fbo\n const texture = TextureHandle.createForAttachment(rect.width, rect.height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (texture === undefined)\n return undefined;\n\n const fbo = FrameBuffer.create([texture]);\n if (fbo === undefined) {\n dispose(texture);\n return undefined;\n }\n\n return { texture, fbo };\n }\n\n private disposeOrReuseReadPixelResources({ texture, fbo }: ReadPixelResources) {\n const maxReusableTextureSize = 256;\n const isTooBigToReuse = texture.width > maxReusableTextureSize || texture.height > maxReusableTextureSize;\n\n let reuseResources = !isTooBigToReuse;\n\n if (reuseResources && this._readPixelReusableResources !== undefined) {\n\n // Keep the biggest texture\n if (this._readPixelReusableResources.texture.width > texture.width && this._readPixelReusableResources.texture.height > texture.height) {\n reuseResources = false; // The current resources being reused are better\n } else {\n // Free memory of the current reusable resources before replacing them\n dispose(this._readPixelReusableResources.fbo);\n dispose(this._readPixelReusableResources.texture);\n }\n }\n\n if (reuseResources) {\n this._readPixelReusableResources = { texture, fbo };\n } else {\n dispose(fbo);\n dispose(texture);\n }\n }\n\n private beginReadPixels(selector: Pixel.Selector, cullingFrustum?: Frustum): void {\n this.beginPerfMetricRecord(\"Init Commands\", true);\n\n this._isReadPixelsInProgress = true;\n this._readPixelsSelector = selector;\n\n // Temporarily turn off lighting to speed things up.\n // ###TODO: Disable textures *unless* they contain transparency. If we turn them off unconditionally then readPixels() will locate fully-transparent pixels, which we don't want.\n const vf = this.currentViewFlags.copy({\n transparency: false,\n lighting: false,\n shadows: false,\n acsTriad: false,\n grid: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n thematicDisplay: this.currentViewFlags.thematicDisplay && this.uniforms.thematic.wantIsoLines,\n });\n\n const top = this.currentBranch;\n const state = new BranchState({\n viewFlags: vf,\n symbologyOverrides: top.symbologyOverrides,\n is3d: top.is3d,\n edgeSettings: top.edgeSettings,\n transform: Transform.createIdentity(),\n clipVolume: top.clipVolume,\n contourLine: top.contourLine,\n });\n\n this.pushState(state);\n\n // Repopulate the command list, omitting non-pickable decorations and putting transparent stuff into the opaque passes.\n if (cullingFrustum)\n this._renderCommands.setCheckRange(cullingFrustum);\n\n this._renderCommands.initForReadPixels(this.graphics);\n this._renderCommands.clearCheckRange();\n this.endPerfMetricRecord(true);\n }\n\n private endReadPixels(preserveBatchState = false): void {\n // Pop the BranchState pushed by beginReadPixels.\n this.uniforms.branch.pop();\n if (!preserveBatchState)\n this.uniforms.batch.resetBatchState();\n\n this._isReadPixelsInProgress = false;\n }\n\n private readonly _scratchTmpFrustum = new Frustum();\n private readonly _scratchRectFrustum = new Frustum();\n private readPixelsFromFbo(rect: ViewRect, selector: Pixel.Selector): Pixel.Buffer | undefined {\n // Create a culling frustum based on the input rect. We can't do this if a screen-space effect is going to move pixels around.\n let rectFrust;\n if (!this.renderSystem.screenSpaceEffects.shouldApply(this)) {\n const viewRect = this.viewRect;\n const leftScale = (rect.left - viewRect.left) / (viewRect.right - viewRect.left);\n const rightScale = (viewRect.right - rect.right) / (viewRect.right - viewRect.left);\n const topScale = (rect.top - viewRect.top) / (viewRect.bottom - viewRect.top);\n const bottomScale = (viewRect.bottom - rect.bottom) / (viewRect.bottom - viewRect.top);\n\n const tmpFrust = this._scratchTmpFrustum;\n const planFrust = this.planFrustum;\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._000, leftScale, Npc._100);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._100, rightScale, Npc._000);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._010, leftScale, Npc._110);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._110, rightScale, Npc._010);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._001, leftScale, Npc._101);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._101, rightScale, Npc._001);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._011, leftScale, Npc._111);\n interpolateFrustumPoint(tmpFrust, planFrust, Npc._111, rightScale, Npc._011);\n\n rectFrust = this._scratchRectFrustum;\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._000, bottomScale, Npc._010);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._100, bottomScale, Npc._110);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._010, topScale, Npc._000);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._110, topScale, Npc._100);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._001, bottomScale, Npc._011);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._101, bottomScale, Npc._111);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._011, topScale, Npc._001);\n interpolateFrustumPoint(rectFrust, tmpFrust, Npc._111, topScale, Npc._101);\n }\n\n this.beginReadPixels(selector, rectFrust);\n\n // Draw the scene\n this.compositor.drawForReadPixels(this._renderCommands, this.graphics.overlays, this.graphics.decorations?.worldOverlay, this.graphics.decorations?.viewOverlay);\n\n if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics) { // Only collect readPixels data if in disp-perf-test-app\n this.performanceMetrics.endOperation(); // End the 'CPU Total Time' operation\n if (this.performanceMetrics.gatherGlFinish && !this.renderSystem.isGLTimerSupported) {\n // Ensure all previously queued webgl commands are finished by reading back one pixel since gl.Finish didn't work\n this.performanceMetrics.beginOperation(\"Finish GPU Queue\");\n const gl = this.renderSystem.context;\n const bytes = new Uint8Array(4);\n this.renderSystem.frameBufferStack.execute(expectDefined(this._fbo), true, false, () => {\n gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, bytes);\n });\n this.performanceMetrics.endOperation();\n }\n }\n\n // Apply any screen-space effects that shift pixels from their original locations.\n this.beginPerfMetricRecord(\"Screenspace Effects\", true);\n this.renderSystem.screenSpaceEffects.apply(this);\n this.endPerfMetricRecord(true); // End \"Screenspace Effects\"\n\n this.endReadPixels(true);\n\n this.beginPerfMetricRecord(\"Read Pixels\", true);\n const result = this.compositor.readPixels(rect, selector);\n this.endPerfMetricRecord(true);\n\n if (this.performanceMetrics && !this.performanceMetrics.gatherCurPerformanceMetrics) { // Only collect readPixels data if in disp-perf-test-app\n if (this.renderSystem.isGLTimerSupported)\n this.renderSystem.glTimer.endFrame();\n if (this.performanceMetrics)\n this.performanceMetrics.endFrame();\n }\n\n return result;\n }\n\n public override queryVisibleTileFeatures(options: QueryTileFeaturesOptions, iModel: IModelConnection, callback: QueryVisibleFeaturesCallback): void {\n this.beginReadPixels(Pixel.Selector.Feature);\n callback(new VisibleTileFeatures(this._renderCommands, options, this, iModel));\n this.endReadPixels();\n }\n\n protected readImagePixels(out: Uint8Array, x: number, y: number, w: number, h: number): boolean {\n assert(this._fbo !== undefined);\n if (this._fbo === undefined)\n return false;\n\n const context = this.renderSystem.context;\n let didSucceed = true;\n this.renderSystem.frameBufferStack.execute(this._fbo, true, false, () => {\n try {\n context.readPixels(x, y, w, h, context.RGBA, context.UNSIGNED_BYTE, out);\n } catch {\n didSucceed = false;\n }\n });\n\n return didSucceed;\n }\n\n /** Returns a new size scaled up to a maximum size while maintaining proper aspect ratio. The new size will be\n * curSize adjusted so that it fits fully within maxSize in one dimension, maintaining its original aspect ratio.\n */\n private static _applyAspectRatioCorrection(curSize: XAndY, maxSize: XAndY): Point2d {\n const widthRatio = maxSize.x / curSize.x;\n const heightRatio = maxSize.y / curSize.y;\n const bestRatio = Math.min(widthRatio, heightRatio);\n return new Point2d(curSize.x * bestRatio, curSize.y * bestRatio);\n }\n\n public override readImageBuffer(args?: ReadImageBufferArgs): ImageBuffer | undefined {\n if (!this.assignDC())\n return undefined;\n\n // Determine and validate capture rect.\n const viewRect = this.renderRect; // already has device pixel ratio applied\n const captureRect = args?.rect ? this.cssViewRectToDeviceViewRect(args.rect) : viewRect;\n if (captureRect.isNull)\n return undefined;\n\n const topLeft = Point3d.create(captureRect.left, captureRect.top);\n const bottomRight = Point2d.create(captureRect.right - 1, captureRect.bottom - 1);\n if (!viewRect.containsPoint(topLeft) || !viewRect.containsPoint(bottomRight))\n return undefined;\n\n // ViewRect origin is at top-left. GL origin is at bottom-left.\n const bottom = viewRect.height - captureRect.bottom;\n const imageData = new Uint8Array(4 * captureRect.width * captureRect.height);\n if (!this.readImagePixels(imageData, captureRect.left, bottom, captureRect.width, captureRect.height))\n return undefined;\n\n // Alpha has already been blended. Make all pixels opaque, *except* for background pixels if background color is fully transparent.\n const preserveBGAlpha = 0 === this.uniforms.style.backgroundAlpha;\n let isEmptyImage = true;\n for (let i = 3; i < imageData.length; i += 4) {\n const a = imageData[i];\n if (!preserveBGAlpha || a > 0) {\n imageData[i] = 0xff;\n isEmptyImage = false;\n }\n }\n\n // Optimization for view attachments: if image consists entirely of transparent background pixels, don't bother producing an image.\n let image = !isEmptyImage ? ImageBuffer.create(imageData, ImageBufferFormat.Rgba, captureRect.width) : undefined;\n if (!image)\n return undefined;\n\n // Scale image.\n if (args?.size && (args.size.x !== captureRect.width || args.size.y !== captureRect.height)) {\n if (args.size.x <= 0 || args.size.y <= 0)\n return undefined;\n\n let canvas = imageBufferToCanvas(image, true);\n if (!canvas)\n return undefined;\n\n const adjustedSize = Target._applyAspectRatioCorrection({ x: captureRect.width, y: captureRect.height }, args.size);\n canvas = canvasToResizedCanvasWithBars(canvas, adjustedSize, new Point2d(args.size.x - adjustedSize.x, args.size.y - adjustedSize.y), this.uniforms.style.backgroundHexString);\n image = canvasToImageBuffer(canvas);\n if (!image)\n return undefined;\n }\n\n // Our image is upside-down by default. Flip it unless otherwise specified.\n if (!args?.upsideDown) {\n const halfHeight = Math.floor(image.height / 2);\n const numBytesPerRow = image.width * 4;\n for (let loY = 0; loY < halfHeight; loY++) {\n for (let x = 0; x < image.width; x++) {\n const hiY = (image.height - 1) - loY;\n const loIdx = loY * numBytesPerRow + x * 4;\n const hiIdx = hiY * numBytesPerRow + x * 4;\n\n swapImageByte(image, loIdx, hiIdx);\n swapImageByte(image, loIdx + 1, hiIdx + 1);\n swapImageByte(image, loIdx + 2, hiIdx + 2);\n swapImageByte(image, loIdx + 3, hiIdx + 3);\n }\n }\n }\n\n return image;\n }\n\n public copyImageToCanvas(overlayCanvas?: HTMLCanvasElement): HTMLCanvasElement {\n const image = this.readImageBuffer();\n const canvas = undefined !== image ? imageBufferToCanvas(image, false) : undefined;\n const retCanvas = undefined !== canvas ? canvas : document.createElement(\"canvas\");\n\n if (overlayCanvas) {\n const ctx = expectNotNull(retCanvas.getContext(\"2d\"));\n ctx.drawImage(overlayCanvas, 0, 0);\n }\n\n const pixelRatio = this.devicePixelRatio;\n expectNotNull(retCanvas.getContext(\"2d\")).scale(pixelRatio, pixelRatio);\n\n return retCanvas;\n }\n\n public drawPlanarClassifiers() {\n if (this._planarClassifiers) {\n this._planarClassifiers.forEach((classifier) => {\n this._currentlyDrawingClassifier = classifier as PlanarClassifier;\n this._currentlyDrawingClassifier.draw(this);\n this._currentlyDrawingClassifier = undefined;\n });\n }\n }\n public drawSolarShadowMap() {\n if (this.solarShadowMap.isEnabled)\n this.solarShadowMap.draw(this);\n }\n public drawTextureDrapes() {\n if (this._textureDrapes)\n this._textureDrapes.forEach((drape) => (drape as TextureDrape).draw(this));\n }\n\n public get screenSpaceEffects(): Iterable<string> {\n return this._screenSpaceEffects;\n }\n\n public set screenSpaceEffects(effects: Iterable<string>) {\n this._screenSpaceEffects = [...effects];\n }\n\n public get screenSpaceEffectContext(): ScreenSpaceEffectContext {\n assert(undefined !== this._viewport);\n return { viewport: this._viewport };\n }\n\n public get currentAnimationTransformNodeId(): number | undefined {\n return this._currentAnimationTransformNodeId;\n }\n public set currentAnimationTransformNodeId(id: number | undefined) {\n assert(undefined === this._currentAnimationTransformNodeId || undefined === id);\n this._currentAnimationTransformNodeId = id;\n }\n\n /** Given GraphicBranch.animationId identifying *any* node in the scene's schedule script, return the transform node Id\n * that should be used to filter the branch's graphics for display, or undefined if no filtering should be applied.\n */\n public getAnimationTransformNodeId(animationNodeId: number | undefined): number | undefined {\n if (undefined === this.animationBranches || undefined === this.currentAnimationTransformNodeId || undefined === animationNodeId)\n return undefined;\n\n return this.animationBranches.transformNodeIds.has(animationNodeId) ? animationNodeId : AnimationNodeId.Untransformed;\n }\n\n protected abstract _assignDC(): boolean;\n protected abstract _beginPaint(fbo: FrameBuffer): void;\n protected abstract _endPaint(): void;\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n this._compositor.collectStatistics(stats);\n const thematicBytes = this.uniforms.thematic.bytesUsed;\n if (0 < thematicBytes)\n stats.addThematicTexture(thematicBytes);\n\n const clipBytes = this.uniforms.branch.clipStack.bytesUsed;\n if (clipBytes)\n stats.addClipVolume(clipBytes);\n }\n\n protected cssViewRectToDeviceViewRect(rect: ViewRect): ViewRect {\n // NB: ViewRect constructor *floors* inputs.\n const ratio = this.devicePixelRatio;\n return new ViewRect(\n Math.floor(rect.left * ratio),\n Math.floor(rect.top * ratio),\n Math.floor(rect.right * ratio),\n Math.floor(rect.bottom * ratio));\n }\n\n public getRenderCommands(): Array<{ name: string, count: number }> {\n return this._renderCommands.dump();\n }\n}\n\nclass CanvasState {\n public readonly canvas: HTMLCanvasElement;\n public needsClear = false;\n private _isWebGLCanvas: boolean;\n\n public constructor(canvas: HTMLCanvasElement) {\n this.canvas = canvas;\n this._isWebGLCanvas = this.canvas === System.instance.canvas;\n }\n\n // Returns true if the rect actually changed.\n public updateDimensions(pixelRatio: number): boolean {\n const w = Math.floor(this.canvas.clientWidth * pixelRatio);\n const h = Math.floor(this.canvas.clientHeight * pixelRatio);\n\n // Do not update the dimensions if not needed, or if new width or height is 0, which is invalid.\n // NB: the 0-dimension check indirectly resolves an issue when a viewport is dropped and immediately re-added\n // to the view manager. See ViewManager.test.ts for more details. 0 is also the case when vpDiv.removeChild\n // is done on webGLCanvas, due to client sizes being 0 afterward.\n if (w === this.canvas.width && h === this.canvas.height || (0 === w || 0 === h))\n return false;\n\n // Must ensure internal bitmap grid dimensions of on-screen canvas match its own on-screen appearance.\n this.canvas.width = w;\n this.canvas.height = h;\n\n if (!this._isWebGLCanvas) {\n const ctx = expectNotNull(this.canvas.getContext(\"2d\"));\n ctx.scale(pixelRatio, pixelRatio); // apply the pixelRatio as a scale on the 2d context for drawing of decorations, etc.\n ctx.save();\n }\n\n return true;\n }\n\n public get width() { return this.canvas.width; }\n public get height() { return this.canvas.height; }\n}\n\n/** A Target that renders to a canvas on the screen\n * @internal\n */\nexport class OnScreenTarget extends Target {\n private readonly _2dCanvas: CanvasState;\n private readonly _webglCanvas: CanvasState;\n private _usingWebGLCanvas = false;\n private _blitGeom?: SingleTexturedViewportQuadGeometry;\n private _scratchProgParams?: ShaderProgramParams;\n private _scratchDrawParams?: DrawParams;\n private _devicePixelRatioOverride?: number;\n\n private get _curCanvas() { return this._usingWebGLCanvas ? this._webglCanvas : this._2dCanvas; }\n\n public constructor(canvas: HTMLCanvasElement) {\n super();\n this._2dCanvas = new CanvasState(canvas);\n this._webglCanvas = new CanvasState(this.renderSystem.canvas);\n }\n\n public override get isDisposed(): boolean {\n return undefined === this._blitGeom\n && undefined === this._scratchProgParams\n && undefined === this._scratchDrawParams\n && super.isDisposed;\n }\n\n public override[Symbol.dispose]() {\n this._blitGeom = dispose(this._blitGeom);\n this._scratchProgParams = undefined;\n this._scratchDrawParams = undefined;\n super[Symbol.dispose]();\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics): void {\n super.collectStatistics(stats);\n if (undefined !== this._blitGeom)\n this._blitGeom.collectStatistics(stats);\n }\n\n public get devicePixelRatioOverride(): number | undefined { return this._devicePixelRatioOverride; }\n public set devicePixelRatioOverride(ovr: number | undefined) { this._devicePixelRatioOverride = ovr; }\n public override get devicePixelRatio(): number {\n if (undefined !== this.devicePixelRatioOverride)\n return this.devicePixelRatioOverride;\n\n if (false === this.renderSystem.options.dpiAwareViewports)\n return 1.0;\n\n if (undefined !== this.renderSystem.options.devicePixelRatioOverride)\n return this.renderSystem.options.devicePixelRatioOverride;\n\n return window.devicePixelRatio || 1.0;\n }\n\n public setViewRect(_rect: ViewRect, _temporary: boolean): void {\n assert(false);\n }\n\n /** Internal-only function for testing. Returns true if the FBO dimensions match the canvas dimensions */\n public checkFboDimensions(): boolean {\n if (undefined !== this._fbo) {\n const tx = this._fbo.getColor(0);\n if (tx.width !== this._curCanvas.width || tx.height !== this._curCanvas.height)\n return false;\n }\n return true;\n }\n\n protected _assignDC(): boolean {\n this.disposeFbo();\n const fbo = this.allocateFbo();\n if (!fbo)\n return false;\n\n const tx = fbo.getColor(0);\n assert(undefined !== tx.getHandle());\n this._blitGeom = SingleTexturedViewportQuadGeometry.createGeometry(expectDefined(tx.getHandle()), TechniqueId.CopyColorNoAlpha);\n if (undefined === this._blitGeom)\n this.disposeFbo();\n\n return undefined !== this._blitGeom;\n }\n\n public updateViewRect(): boolean {\n const pixelRatio = this.devicePixelRatio;\n const changed2d = this._2dCanvas.updateDimensions(pixelRatio);\n const changedWebGL = this._webglCanvas.updateDimensions(pixelRatio);\n this.renderRect.init(0, 0, this._curCanvas.width, this._curCanvas.height);\n return this._usingWebGLCanvas ? changedWebGL : changed2d;\n }\n\n protected _beginPaint(fbo: FrameBuffer): void {\n // Render to our framebuffer\n const system = this.renderSystem;\n system.frameBufferStack.push(fbo, true, false);\n\n const viewRect = this.viewRect;\n\n // Ensure off-screen canvas is sufficiently large for on-screen canvas.\n // Using a portion of a larger canvas lets us avoid thrashing canvas resizes with multiple viewports.\n if (system.canvas.width < viewRect.width)\n system.canvas.width = viewRect.width;\n if (system.canvas.height < viewRect.height)\n system.canvas.height = viewRect.height;\n assert(system.context.drawingBufferWidth >= viewRect.width, \"offscreen context dimensions don't match onscreen\");\n assert(system.context.drawingBufferHeight >= viewRect.height, \"offscreen context dimensions don't match onscreen\");\n }\n\n private getDrawParams(target: OnScreenTarget, geom: SingleTexturedViewportQuadGeometry) {\n if (undefined === this._scratchProgParams) {\n this._scratchProgParams = new ShaderProgramParams();\n this._scratchDrawParams = new DrawParams();\n }\n\n this._scratchProgParams.init(target);\n if (undefined === this._scratchDrawParams) {\n throw new Error(\"OnScreenTarget.getDrawParams: this._scratchDrawParams is undefined\");\n }\n this._scratchDrawParams.init(this._scratchProgParams, geom);\n return this._scratchDrawParams;\n }\n\n protected _endPaint(): void {\n if (undefined === this._blitGeom)\n return;\n\n // Blit the final image to the canvas.\n const drawParams = this.getDrawParams(this, this._blitGeom);\n\n const system = this.renderSystem;\n system.frameBufferStack.pop();\n system.applyRenderState(RenderState.defaults);\n system.techniques.draw(drawParams);\n\n if (this._usingWebGLCanvas)\n return; // We already drew (using WebGL) the framebuffer contents directly to the on-screen WebGL canvas.\n\n // Copy off-screen canvas contents to on-screen canvas\n const onscreenContext = this._2dCanvas.canvas.getContext(\"2d\", { alpha: true });\n assert(null !== onscreenContext);\n if (null !== onscreenContext) {\n const w = this.viewRect.width, h = this.viewRect.height;\n const yOffset = system.canvas.height - h; // drawImage has top as Y=0, GL has bottom as Y=0\n onscreenContext.save();\n\n if (this.uniforms.style.backgroundAlpha < 1) {\n // If background is transparent, we aren't guaranteed that every pixel will be overwritten - clear it.\n onscreenContext.clearRect(0, 0, w, h);\n }\n\n onscreenContext.setTransform(1, 0, 0, 1, 0, 0); // revert any previous devicePixelRatio scale for drawImage() call below.\n onscreenContext.drawImage(system.canvas, 0, yOffset, w, h, 0, 0, w, h);\n onscreenContext.restore();\n }\n }\n\n protected override drawOverlayDecorations(): void {\n const ctx = expectNotNull(this._2dCanvas.canvas.getContext(\"2d\", { alpha: true }));\n if (this._usingWebGLCanvas && this._2dCanvas.needsClear) {\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0); // revert any previous devicePixelRatio scale for clearRect() call below.\n ctx.clearRect(0, 0, this._2dCanvas.width, this._2dCanvas.height);\n ctx.restore();\n this._2dCanvas.needsClear = false;\n }\n\n const canvasDecs = this.graphics.canvasDecorations;\n if (canvasDecs) {\n for (const overlay of canvasDecs) {\n ctx.save();\n if (overlay.position)\n ctx.translate(overlay.position.x, overlay.position.y);\n\n overlay.drawDecoration(ctx);\n this._2dCanvas.needsClear = true;\n ctx.restore();\n }\n }\n }\n\n public override pickOverlayDecoration(pt: XAndY): CanvasDecoration | undefined {\n const overlays = this.graphics.canvasDecorations;\n if (undefined === overlays)\n return undefined;\n\n // loop over array backwards, because later entries are drawn on top.\n for (let i = overlays.length - 1; i >= 0; --i) {\n const overlay = overlays[i];\n if (undefined !== overlay.pick && overlay.pick(pt))\n return overlay;\n }\n return undefined;\n }\n\n public override onResized(): void {\n this.disposeFbo();\n }\n\n public override setRenderToScreen(toScreen: boolean): HTMLCanvasElement | undefined {\n if (toScreen === this._usingWebGLCanvas)\n return;\n\n // NB: need to force a buffer change in this case because nothing is changing sizes except the webglCanvas\n if (toScreen)\n this.compositor.forceBufferChange();\n\n this._usingWebGLCanvas = toScreen;\n return toScreen ? this._webglCanvas.canvas : undefined;\n }\n\n public override readImageToCanvas(overlayCanvas?: HTMLCanvasElement): HTMLCanvasElement {\n return this._usingWebGLCanvas || !overlayCanvas ? this.copyImageToCanvas(overlayCanvas) : this._2dCanvas.canvas;\n }\n}\n/** @internal */\nexport class OffScreenTarget extends Target {\n public constructor(rect: ViewRect) {\n super(rect);\n }\n\n public override onResized(): void {\n assert(false); // offscreen viewport's dimensions are set once, in constructor.\n }\n\n public updateViewRect(): boolean { return false; } // offscreen target does not dynamically resize the view rect\n\n public setViewRect(rect: ViewRect, temporary: boolean): void {\n if (this.renderRect.equals(rect))\n return;\n\n this.renderRect.setFrom(rect);\n if (temporary) {\n // Temporarily adjust view rect to create scene for a view attachment.\n // Will be reset before attachment is rendered - so don't blow away our framebuffers + textures\n return;\n }\n\n this.disposeFbo();\n dispose(this._compositor);\n }\n\n protected _assignDC(): boolean {\n return undefined !== this.allocateFbo();\n }\n\n protected _beginPaint(fbo: FrameBuffer): void {\n this.renderSystem.frameBufferStack.push(fbo, true, false);\n }\n\n protected _endPaint(): void {\n this.renderSystem.frameBufferStack.pop();\n }\n\n public override readImageToCanvas(): HTMLCanvasElement {\n return this.copyImageToCanvas();\n }\n}\n\nfunction interpolatePoint(p0: Point3d, fraction: number, p1: Point3d, out: Point3d): Point3d {\n let x: number;\n let y: number;\n let z: number;\n if (fraction <= 0.5) {\n x = p0.x + fraction * (p1.x - p0.x);\n y = p0.y + fraction * (p1.y - p0.y);\n z = p0.z + fraction * (p1.z - p0.z);\n } else {\n const t = fraction - 1.0;\n x = p1.x + t * (p1.x - p0.x);\n y = p1.y + t * (p1.y - p0.y);\n z = p1.z + t * (p1.z - p0.z);\n }\n\n return Point3d.create(x, y, z, out);\n}\n\nfunction interpolateFrustumPoint(destFrust: Frustum, srcFrust: Frustum, destPoint: Npc, scale: number, srcPoint: Npc): void {\n interpolatePoint(srcFrust.getCorner(destPoint), scale, srcFrust.getCorner(srcPoint), destFrust.points[destPoint]);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Texture.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Texture.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Texture.ts"],"names":[],"mappings":"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"}