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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +5 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +4 -0
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +156 -14
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts.map +1 -1
  37. package/lib/cjs/IpcApp.js +1 -1
  38. package/lib/cjs/IpcApp.js.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js +2 -0
  41. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js +2 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/Marker.d.ts.map +1 -1
  46. package/lib/cjs/Marker.js +4 -3
  47. package/lib/cjs/Marker.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts.map +1 -1
  49. package/lib/cjs/ModelState.js +2 -2
  50. package/lib/cjs/ModelState.js.map +1 -1
  51. package/lib/cjs/NativeApp.d.ts.map +1 -1
  52. package/lib/cjs/NativeApp.js +5 -4
  53. package/lib/cjs/NativeApp.js.map +1 -1
  54. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  55. package/lib/cjs/NativeAppLogger.js +1 -0
  56. package/lib/cjs/NativeAppLogger.js.map +1 -1
  57. package/lib/cjs/PlanarClipMaskState.d.ts +3 -0
  58. package/lib/cjs/PlanarClipMaskState.d.ts.map +1 -1
  59. package/lib/cjs/PlanarClipMaskState.js +8 -4
  60. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  61. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSource.js +5 -1
  63. package/lib/cjs/RealityDataSource.js.map +1 -1
  64. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  65. package/lib/cjs/SelectionSet.js +1 -0
  66. package/lib/cjs/SelectionSet.js.map +1 -1
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +5 -5
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  71. package/lib/cjs/SpatialViewState.js +1 -1
  72. package/lib/cjs/SpatialViewState.js.map +1 -1
  73. package/lib/cjs/Sprites.js +2 -2
  74. package/lib/cjs/Sprites.js.map +1 -1
  75. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  76. package/lib/cjs/TentativePoint.js +10 -9
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewContext.d.ts +10 -1
  79. package/lib/cjs/ViewContext.d.ts.map +1 -1
  80. package/lib/cjs/ViewContext.js +12 -1
  81. package/lib/cjs/ViewContext.js.map +1 -1
  82. package/lib/cjs/ViewCreator2d.js +1 -1
  83. package/lib/cjs/ViewCreator2d.js.map +1 -1
  84. package/lib/cjs/ViewCreator3d.js +1 -1
  85. package/lib/cjs/ViewCreator3d.js.map +1 -1
  86. package/lib/cjs/ViewPose.d.ts.map +1 -1
  87. package/lib/cjs/ViewPose.js +4 -1
  88. package/lib/cjs/ViewPose.js.map +1 -1
  89. package/lib/cjs/ViewState.d.ts.map +1 -1
  90. package/lib/cjs/ViewState.js +17 -12
  91. package/lib/cjs/ViewState.js.map +1 -1
  92. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  93. package/lib/cjs/ViewingSpace.js +2 -0
  94. package/lib/cjs/ViewingSpace.js.map +1 -1
  95. package/lib/cjs/Viewport.d.ts.map +1 -1
  96. package/lib/cjs/Viewport.js +17 -10
  97. package/lib/cjs/Viewport.js.map +1 -1
  98. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  99. package/lib/cjs/common/ImageUtil.js +2 -1
  100. package/lib/cjs/common/ImageUtil.js.map +1 -1
  101. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  102. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  103. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  104. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  105. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  106. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  107. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  108. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  109. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  110. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  111. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  112. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  113. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  114. package/lib/cjs/internal/GoogleMapsDecorator.js +7 -7
  115. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  116. package/lib/cjs/internal/ScriptUtils.js +1 -0
  117. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  118. package/lib/cjs/internal/cross-package.d.ts +1 -1
  119. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  120. package/lib/cjs/internal/cross-package.js +2 -1
  121. package/lib/cjs/internal/cross-package.js.map +1 -1
  122. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  123. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  124. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  125. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  127. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  129. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  130. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  133. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  135. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +3 -3
  136. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  137. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts +4 -1
  138. package/lib/cjs/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  139. package/lib/cjs/internal/render/webgl/BatchUniforms.js +16 -5
  140. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  141. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  142. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  143. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  145. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  148. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  150. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  151. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  152. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  153. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  154. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  155. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  156. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  157. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  158. package/lib/cjs/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +14 -14
  160. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  162. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  164. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  165. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  166. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  167. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  168. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/Graphic.d.ts +3 -3
  170. package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
  171. package/lib/cjs/internal/render/webgl/Graphic.js +7 -7
  172. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  174. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  176. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  178. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  180. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  181. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +27 -11
  182. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  184. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  186. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  188. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  190. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  192. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  194. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts +2 -1
  196. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  197. package/lib/cjs/internal/render/webgl/RenderCommands.js +3 -1
  198. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  200. package/lib/cjs/internal/render/webgl/SceneCompositor.js +118 -85
  201. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  203. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  204. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  206. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  208. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  210. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  211. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  213. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  214. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  216. package/lib/cjs/internal/render/webgl/System.js +1 -1
  217. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  219. package/lib/cjs/internal/render/webgl/Target.js +12 -9
  220. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  221. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  222. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  223. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  224. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js +1 -1
  225. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  226. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  227. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  228. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  229. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  230. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  231. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  232. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  233. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  234. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  235. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  236. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  237. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  238. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  239. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  240. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  241. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  242. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  243. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  244. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  245. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  246. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  247. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  248. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  249. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  250. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  251. package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
  252. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  253. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  254. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  255. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  256. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  257. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  258. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  259. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  260. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  261. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  262. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  263. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  264. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  265. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  266. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +2 -0
  267. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  268. package/lib/cjs/internal/tile/PrimaryTileTree.js +17 -12
  269. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  270. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  271. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  272. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  273. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  274. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  275. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  276. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  277. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  278. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  279. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  280. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  281. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  282. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  283. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  284. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  285. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  286. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  287. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  288. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  289. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  290. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  291. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  292. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  293. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  294. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  295. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  296. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  297. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  298. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  299. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  300. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  301. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  302. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  303. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  304. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  305. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  306. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  307. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  308. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  309. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  310. package/lib/cjs/tile/GltfReader.js +69 -17
  311. package/lib/cjs/tile/GltfReader.js.map +1 -1
  312. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  313. package/lib/cjs/tile/RealityTile.js +2 -2
  314. package/lib/cjs/tile/RealityTile.js.map +1 -1
  315. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  316. package/lib/cjs/tile/RealityTileTree.js +5 -5
  317. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  318. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  319. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  320. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  321. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  322. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  323. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  324. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  325. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  326. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  327. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  328. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  329. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  330. package/lib/cjs/tile/map/MapTile.js +10 -8
  331. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  332. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  333. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  334. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  335. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  336. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  337. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  338. package/lib/cjs/tools/Tool.js +1 -1
  339. package/lib/cjs/tools/Tool.js.map +1 -1
  340. package/lib/cjs/tools/ToolAdmin.d.ts +5 -0
  341. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  342. package/lib/cjs/tools/ToolAdmin.js +9 -0
  343. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  344. package/lib/cjs/workers/ImdlParser/webpack.config.js +8 -0
  345. package/lib/esm/BackgroundMapGeometry.js +14 -14
  346. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  347. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  348. package/lib/esm/BriefcaseConnection.js +2 -2
  349. package/lib/esm/BriefcaseConnection.js.map +1 -1
  350. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  351. package/lib/esm/CheckpointConnection.js +4 -4
  352. package/lib/esm/CheckpointConnection.js.map +1 -1
  353. package/lib/esm/ContextRealityModelState.js.map +1 -1
  354. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  355. package/lib/esm/ElementLocateManager.js +8 -7
  356. package/lib/esm/ElementLocateManager.js.map +1 -1
  357. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  358. package/lib/esm/EmphasizeElements.js +3 -1
  359. package/lib/esm/EmphasizeElements.js.map +1 -1
  360. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  361. package/lib/esm/EnvironmentDecorations.js +4 -0
  362. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  363. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  364. package/lib/esm/FrustumAnimator.js +3 -2
  365. package/lib/esm/FrustumAnimator.js.map +1 -1
  366. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  367. package/lib/esm/GlobeAnimator.js +7 -6
  368. package/lib/esm/GlobeAnimator.js.map +1 -1
  369. package/lib/esm/HitDetail.d.ts.map +1 -1
  370. package/lib/esm/HitDetail.js +12 -7
  371. package/lib/esm/HitDetail.js.map +1 -1
  372. package/lib/esm/IModelApp.d.ts.map +1 -1
  373. package/lib/esm/IModelApp.js +7 -3
  374. package/lib/esm/IModelApp.js.map +1 -1
  375. package/lib/esm/IModelConnection.d.ts +4 -0
  376. package/lib/esm/IModelConnection.d.ts.map +1 -1
  377. package/lib/esm/IModelConnection.js +158 -16
  378. package/lib/esm/IModelConnection.js.map +1 -1
  379. package/lib/esm/IpcApp.d.ts.map +1 -1
  380. package/lib/esm/IpcApp.js +2 -2
  381. package/lib/esm/IpcApp.js.map +1 -1
  382. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  383. package/lib/esm/LinePlaneIntersect.js +2 -0
  384. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  385. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  386. package/lib/esm/LocalhostIpcApp.js +2 -1
  387. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  388. package/lib/esm/Marker.d.ts.map +1 -1
  389. package/lib/esm/Marker.js +5 -4
  390. package/lib/esm/Marker.js.map +1 -1
  391. package/lib/esm/ModelState.d.ts.map +1 -1
  392. package/lib/esm/ModelState.js +3 -3
  393. package/lib/esm/ModelState.js.map +1 -1
  394. package/lib/esm/NativeApp.d.ts.map +1 -1
  395. package/lib/esm/NativeApp.js +5 -4
  396. package/lib/esm/NativeApp.js.map +1 -1
  397. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  398. package/lib/esm/NativeAppLogger.js +1 -0
  399. package/lib/esm/NativeAppLogger.js.map +1 -1
  400. package/lib/esm/PlanarClipMaskState.d.ts +3 -0
  401. package/lib/esm/PlanarClipMaskState.d.ts.map +1 -1
  402. package/lib/esm/PlanarClipMaskState.js +8 -4
  403. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  404. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  405. package/lib/esm/RealityDataSource.js +5 -1
  406. package/lib/esm/RealityDataSource.js.map +1 -1
  407. package/lib/esm/SelectionSet.d.ts.map +1 -1
  408. package/lib/esm/SelectionSet.js +2 -1
  409. package/lib/esm/SelectionSet.js.map +1 -1
  410. package/lib/esm/SheetViewState.d.ts.map +1 -1
  411. package/lib/esm/SheetViewState.js +6 -6
  412. package/lib/esm/SheetViewState.js.map +1 -1
  413. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  414. package/lib/esm/SpatialViewState.js +2 -2
  415. package/lib/esm/SpatialViewState.js.map +1 -1
  416. package/lib/esm/Sprites.js +2 -2
  417. package/lib/esm/Sprites.js.map +1 -1
  418. package/lib/esm/TentativePoint.d.ts.map +1 -1
  419. package/lib/esm/TentativePoint.js +10 -9
  420. package/lib/esm/TentativePoint.js.map +1 -1
  421. package/lib/esm/ViewContext.d.ts +10 -1
  422. package/lib/esm/ViewContext.d.ts.map +1 -1
  423. package/lib/esm/ViewContext.js +12 -1
  424. package/lib/esm/ViewContext.js.map +1 -1
  425. package/lib/esm/ViewCreator2d.js +1 -1
  426. package/lib/esm/ViewCreator2d.js.map +1 -1
  427. package/lib/esm/ViewCreator3d.js +1 -1
  428. package/lib/esm/ViewCreator3d.js.map +1 -1
  429. package/lib/esm/ViewPose.d.ts.map +1 -1
  430. package/lib/esm/ViewPose.js +4 -1
  431. package/lib/esm/ViewPose.js.map +1 -1
  432. package/lib/esm/ViewState.d.ts.map +1 -1
  433. package/lib/esm/ViewState.js +18 -13
  434. package/lib/esm/ViewState.js.map +1 -1
  435. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  436. package/lib/esm/ViewingSpace.js +2 -0
  437. package/lib/esm/ViewingSpace.js.map +1 -1
  438. package/lib/esm/Viewport.d.ts.map +1 -1
  439. package/lib/esm/Viewport.js +18 -11
  440. package/lib/esm/Viewport.js.map +1 -1
  441. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  442. package/lib/esm/common/ImageUtil.js +2 -1
  443. package/lib/esm/common/ImageUtil.js.map +1 -1
  444. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  445. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  446. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  447. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  448. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  449. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  450. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  451. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  452. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  453. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  454. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  455. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  456. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  457. package/lib/esm/internal/GoogleMapsDecorator.js +7 -7
  458. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  459. package/lib/esm/internal/ScriptUtils.js +1 -0
  460. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  461. package/lib/esm/internal/cross-package.d.ts +1 -1
  462. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  463. package/lib/esm/internal/cross-package.js +1 -1
  464. package/lib/esm/internal/cross-package.js.map +1 -1
  465. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  466. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  467. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  468. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  469. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  470. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  472. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  473. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  474. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  475. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  476. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +4 -4
  479. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts +4 -1
  481. package/lib/esm/internal/render/webgl/BatchUniforms.d.ts.map +1 -1
  482. package/lib/esm/internal/render/webgl/BatchUniforms.js +16 -5
  483. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  484. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  485. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  486. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  488. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  489. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  490. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  491. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  492. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  493. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  494. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  495. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  497. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  498. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  499. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  500. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts +3 -3
  501. package/lib/esm/internal/render/webgl/FeatureOverrides.d.ts.map +1 -1
  502. package/lib/esm/internal/render/webgl/FeatureOverrides.js +15 -15
  503. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  504. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  505. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  506. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  507. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  508. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  509. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  510. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  511. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/Graphic.d.ts +3 -3
  513. package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
  514. package/lib/esm/internal/render/webgl/Graphic.js +7 -7
  515. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  516. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  517. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  519. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  521. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts +1 -0
  523. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  524. package/lib/esm/internal/render/webgl/PlanarClassifier.js +28 -12
  525. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  526. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  527. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  528. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  529. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  530. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  531. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  532. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  533. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  534. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  535. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  536. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  537. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  538. package/lib/esm/internal/render/webgl/RenderCommands.d.ts +2 -1
  539. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  540. package/lib/esm/internal/render/webgl/RenderCommands.js +3 -1
  541. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  542. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  543. package/lib/esm/internal/render/webgl/SceneCompositor.js +119 -86
  544. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  545. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  546. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  547. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  548. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  549. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  550. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  551. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  552. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  553. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  554. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  555. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  556. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  557. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  558. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  559. package/lib/esm/internal/render/webgl/System.js +2 -2
  560. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  561. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  562. package/lib/esm/internal/render/webgl/Target.js +13 -10
  563. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  564. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  565. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  566. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  567. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js +1 -1
  568. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  569. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  570. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  571. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  572. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  573. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  574. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  575. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  576. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  577. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  578. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  579. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  580. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  581. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  582. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  583. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  584. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  585. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  586. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  587. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  588. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  589. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  590. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  591. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  592. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  593. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  594. package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
  595. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  596. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  597. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  598. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  599. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  600. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  601. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  602. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  603. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  604. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  605. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  606. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  607. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  608. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  609. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +2 -0
  610. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  611. package/lib/esm/internal/tile/PrimaryTileTree.js +16 -12
  612. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  613. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  614. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  615. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  616. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  617. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  618. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  619. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  620. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  621. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  622. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  623. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  624. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  625. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  626. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  627. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  628. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  629. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  630. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  631. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  632. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  633. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  634. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  635. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  636. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  637. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  638. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  639. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  640. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  641. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  642. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  643. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  644. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  645. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  646. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  647. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  648. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  649. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  650. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  651. package/lib/esm/tile/GltfReader.d.ts +5 -2
  652. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  653. package/lib/esm/tile/GltfReader.js +70 -18
  654. package/lib/esm/tile/GltfReader.js.map +1 -1
  655. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  656. package/lib/esm/tile/RealityTile.js +3 -3
  657. package/lib/esm/tile/RealityTile.js.map +1 -1
  658. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  659. package/lib/esm/tile/RealityTileTree.js +6 -6
  660. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  661. package/lib/esm/tile/TileAdmin.js.map +1 -1
  662. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  663. package/lib/esm/tile/TileDrawArgs.js +2 -1
  664. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  665. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  666. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  667. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  668. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  669. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  670. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  671. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  672. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  673. package/lib/esm/tile/map/MapTile.js +11 -9
  674. package/lib/esm/tile/map/MapTile.js.map +1 -1
  675. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  676. package/lib/esm/tile/map/MapTileTree.js +9 -8
  677. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  678. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  679. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  680. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  681. package/lib/esm/tools/Tool.js +2 -2
  682. package/lib/esm/tools/Tool.js.map +1 -1
  683. package/lib/esm/tools/ToolAdmin.d.ts +5 -0
  684. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  685. package/lib/esm/tools/ToolAdmin.js +9 -0
  686. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  687. package/lib/esm/workers/ImdlParser/webpack.config.js +8 -0
  688. package/lib/public/images/GoogleMaps_Logo_Gray.svg +50 -0
  689. package/lib/public/images/GoogleMaps_Logo_WithDarkOutline.svg +78 -0
  690. package/lib/public/images/GoogleMaps_Logo_WithLightOutline.svg +78 -0
  691. package/lib/public/locales/en/iModelJs.json +1 -1
  692. package/lib/public/scripts/draco_decoder.wasm +0 -0
  693. package/lib/public/scripts/draco_encoder.js +52 -0
  694. package/lib/public/scripts/draco_wasm_wrapper.js +117 -0
  695. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  696. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  697. package/package.json +25 -23
  698. package/lib/public/images/google_on_non_white.png +0 -0
  699. package/lib/public/images/google_on_non_white_hdpi.png +0 -0
  700. package/lib/public/images/google_on_white.png +0 -0
  701. package/lib/public/images/google_on_white_hdpi.png +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, UintArray } from \"@itwin/core-bentley\";\r\nimport { CartographicRange, ColorDef, Quantization } from \"@itwin/core-common\";\r\nimport { Range2d, Range3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\r\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\r\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\r\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../../render/RenderMemory\";\r\nimport { RenderSystem, } from \"../../../render/RenderSystem\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { GL } from \"./GL\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\r\nimport { TerrainTexture } from \"../RenderTerrain\";\r\nimport { MapCartoRectangle, PlanarProjection, PlanarTilePatch } from \"../../../tile/internal\";\r\nimport { LayerTextureParams, ProjectedTexture } from \"./MapLayerParams\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n public readonly numBytesPerIndex: 1 | 2 | 4;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n this.numBytesPerIndex = numBytesPerIndex;\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\r\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\r\n\r\n }\r\n\r\n public static fromRealityMesh(params: RealityMeshParams) {\r\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\r\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\r\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override[Symbol.dispose]() {\r\n super[Symbol.dispose]();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements RenderGeometry {\r\n public readonly renderGeometryType: \"reality-mesh\" = \"reality-mesh\" as const;\r\n public readonly isInstanceable = false;\r\n public noDispose = false;\r\n public readonly hasTextures: boolean;\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private _realityMeshParams: RealityMeshGeometryParams;\r\n private readonly _indexType: GL.DataType;\r\n public textureParams: LayerTextureParams | undefined;\r\n private readonly _transform: Transform | undefined;\r\n public readonly baseColor: ColorDef | undefined;\r\n private _baseIsTransparent: boolean;\r\n private _isTerrain: boolean;\r\n private _disableTextureDisposal: boolean;\r\n\r\n private constructor(props: {\r\n realityMeshParams: RealityMeshGeometryParams;\r\n textureParams?: LayerTextureParams;\r\n transform?: Transform;\r\n baseColor?: ColorDef;\r\n baseIsTransparent: boolean;\r\n isTerrain: boolean;\r\n disableTextureDisposal: boolean;\r\n }) {\r\n super(props.realityMeshParams);\r\n this._realityMeshParams = props.realityMeshParams;\r\n this.textureParams = props.textureParams;\r\n this._transform = props.transform;\r\n this.baseColor = props.baseColor;\r\n this._baseIsTransparent = props.baseIsTransparent;\r\n this._isTerrain = props.isTerrain;\r\n this._disableTextureDisposal = props.disableTextureDisposal;\r\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\r\n\r\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\r\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\r\n }\r\n\r\n public override[Symbol.dispose]() {\r\n if (this.noDispose) {\r\n return;\r\n }\r\n\r\n super[Symbol.dispose]();\r\n dispose(this._realityMeshParams);\r\n if (true !== this._disableTextureDisposal)\r\n dispose(this.textureParams);\r\n }\r\n\r\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\r\n\r\n if (!params)\r\n return undefined;\r\n\r\n return new RealityMeshGeometry({\r\n realityMeshParams: params,\r\n transform,\r\n baseIsTransparent: false,\r\n isTerrain: true,\r\n disableTextureDisposal,\r\n });\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\r\n if (!params) return undefined;\r\n\r\n const { texture: meshTexture, featureID } = realityMesh;\r\n const tile = realityMesh.tileData;\r\n const layerClassifiers = tile?.layerClassifiers;\r\n const texture = meshTexture ? new TerrainTexture(meshTexture, featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n if (!layerClassifiers?.size || !tile) return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n\r\n const transformECEF = tile.ecefTransform\r\n\r\n const tileEcefRange = transformECEF.multiplyRange(tile.range);\r\n const cartographicRange = new CartographicRange(tileEcefRange, transformECEF);\r\n const boundingBox = cartographicRange.getLongitudeLatitudeBoundingBox();\r\n const mapCartoRectangle = MapCartoRectangle.fromRadians(\r\n boundingBox.low.x,\r\n boundingBox.low.y,\r\n boundingBox.high.x,\r\n boundingBox.high.y\r\n );\r\n\r\n const corners = tile.range.corners();\r\n\r\n const normal = Vector3d.createCrossProductToPoints(corners[0], corners[1], corners[2])?.normalize();\r\n if (!normal) {\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n const chordHeight = corners[0].distance(corners[3]) / 2;\r\n\r\n const realityPlanarTilePatch = new PlanarTilePatch(corners, normal, chordHeight);\r\n const realityProjection = new PlanarProjection(realityPlanarTilePatch);\r\n\r\n const realityMeshParams: MeshMapLayerGraphicParams = {\r\n projection: realityProjection,\r\n tileRectangle: mapCartoRectangle,\r\n tileId: undefined,\r\n baseColor: undefined,\r\n baseTransparent: false,\r\n layerClassifiers\r\n };\r\n\r\n const layerTextures: TerrainOrProjectedTexture[] = texture ? [texture] : [];\r\n\r\n layerClassifiers?.forEach((layerClassifier, layerIndex) => layerTextures[layerIndex] = new ProjectedTexture(layerClassifier, realityMeshParams, realityMeshParams.tileRectangle));\r\n\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: layerTextures.length > 0 ? LayerTextureParams.create(layerTextures) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\r\n const meshes = [];\r\n const textures = params.textures ?? [];\r\n const realityMesh = params.realityMesh as RealityMeshGeometry;\r\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\r\n // Collate the textures and classifiers layers into a single array.\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n (layer as TerrainTexture[]).push(texture);\r\n } else {\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\r\n\r\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n } else {\r\n let primaryLayer;\r\n while (primaryLayer === undefined)\r\n primaryLayer = layers.shift();\r\n if (!primaryLayer)\r\n return undefined;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n let layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n if (secondaryTexture instanceof ProjectedTexture) {\r\n layerTextures.push(secondaryTexture.clone(targetRectangle));\r\n } else {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull && textureRange) {\r\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n while (layerTextures.length > texturesPerMesh) {\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n layerTextures = layerTextures.slice(texturesPerMesh);\r\n }\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n if (featureTable) {\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity(), { disableClipStyle: params.disableClipStyle });\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n if (this.textureParams?.params) {\r\n for (const param of this.textureParams.params) {\r\n if (param.texture?.bytesUsed)\r\n stats.addTexture(param.texture.bytesUsed);\r\n }\r\n }\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, expectDefined, UintArray } from \"@itwin/core-bentley\";\r\nimport { CartographicRange, ColorDef, Quantization } from \"@itwin/core-common\";\r\nimport { Range2d, Range3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\r\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\r\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\r\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { RenderMemory } from \"../../../render/RenderMemory\";\r\nimport { RenderSystem, } from \"../../../render/RenderSystem\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { GL } from \"./GL\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\r\nimport { TerrainTexture } from \"../RenderTerrain\";\r\nimport { MapCartoRectangle, PlanarProjection, PlanarTilePatch } from \"../../../tile/internal\";\r\nimport { LayerTextureParams, ProjectedTexture } from \"./MapLayerParams\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n public readonly numBytesPerIndex: 1 | 2 | 4;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n this.numBytesPerIndex = numBytesPerIndex;\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\r\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\r\n\r\n }\r\n\r\n public static fromRealityMesh(params: RealityMeshParams) {\r\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\r\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\r\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override[Symbol.dispose]() {\r\n super[Symbol.dispose]();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements RenderGeometry {\r\n public readonly renderGeometryType: \"reality-mesh\" = \"reality-mesh\" as const;\r\n public readonly isInstanceable = false;\r\n public noDispose = false;\r\n public readonly hasTextures: boolean;\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private _realityMeshParams: RealityMeshGeometryParams;\r\n private readonly _indexType: GL.DataType;\r\n public textureParams: LayerTextureParams | undefined;\r\n private readonly _transform: Transform | undefined;\r\n public readonly baseColor: ColorDef | undefined;\r\n private _baseIsTransparent: boolean;\r\n private _isTerrain: boolean;\r\n private _disableTextureDisposal: boolean;\r\n\r\n private constructor(props: {\r\n realityMeshParams: RealityMeshGeometryParams;\r\n textureParams?: LayerTextureParams;\r\n transform?: Transform;\r\n baseColor?: ColorDef;\r\n baseIsTransparent: boolean;\r\n isTerrain: boolean;\r\n disableTextureDisposal: boolean;\r\n }) {\r\n super(props.realityMeshParams);\r\n this._realityMeshParams = props.realityMeshParams;\r\n this.textureParams = props.textureParams;\r\n this._transform = props.transform;\r\n this.baseColor = props.baseColor;\r\n this._baseIsTransparent = props.baseIsTransparent;\r\n this._isTerrain = props.isTerrain;\r\n this._disableTextureDisposal = props.disableTextureDisposal;\r\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\r\n\r\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\r\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\r\n }\r\n\r\n public override[Symbol.dispose]() {\r\n if (this.noDispose) {\r\n return;\r\n }\r\n\r\n super[Symbol.dispose]();\r\n dispose(this._realityMeshParams);\r\n if (true !== this._disableTextureDisposal)\r\n dispose(this.textureParams);\r\n }\r\n\r\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\r\n\r\n if (!params)\r\n return undefined;\r\n\r\n return new RealityMeshGeometry({\r\n realityMeshParams: params,\r\n transform,\r\n baseIsTransparent: false,\r\n isTerrain: true,\r\n disableTextureDisposal,\r\n });\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\r\n if (!params) return undefined;\r\n\r\n const { texture: meshTexture, featureID } = realityMesh;\r\n const tile = realityMesh.tileData;\r\n const layerClassifiers = tile?.layerClassifiers;\r\n const texture = meshTexture ? new TerrainTexture(meshTexture, featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n if (!layerClassifiers?.size || !tile) return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n\r\n const transformECEF = tile.ecefTransform\r\n\r\n const tileEcefRange = transformECEF.multiplyRange(tile.range);\r\n const cartographicRange = new CartographicRange(tileEcefRange, transformECEF);\r\n const boundingBox = cartographicRange.getLongitudeLatitudeBoundingBox();\r\n const mapCartoRectangle = MapCartoRectangle.fromRadians(\r\n boundingBox.low.x,\r\n boundingBox.low.y,\r\n boundingBox.high.x,\r\n boundingBox.high.y\r\n );\r\n\r\n const corners = tile.range.corners();\r\n\r\n const normal = Vector3d.createCrossProductToPoints(corners[0], corners[1], corners[2])?.normalize();\r\n if (!normal) {\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n const chordHeight = corners[0].distance(corners[3]) / 2;\r\n\r\n const realityPlanarTilePatch = new PlanarTilePatch(corners, normal, chordHeight);\r\n const realityProjection = new PlanarProjection(realityPlanarTilePatch);\r\n\r\n const realityMeshParams: MeshMapLayerGraphicParams = {\r\n projection: realityProjection,\r\n tileRectangle: mapCartoRectangle,\r\n tileId: undefined,\r\n baseColor: undefined,\r\n baseTransparent: false,\r\n layerClassifiers\r\n };\r\n\r\n const layerTextures: TerrainOrProjectedTexture[] = texture ? [texture] : [];\r\n\r\n layerClassifiers?.forEach((layerClassifier, layerIndex) => layerTextures[layerIndex] = new ProjectedTexture(layerClassifier, realityMeshParams, realityMeshParams.tileRectangle));\r\n\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: layerTextures.length > 0 ? LayerTextureParams.create(layerTextures) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\r\n const meshes = [];\r\n const textures = params.textures ?? [];\r\n const realityMesh = params.realityMesh as RealityMeshGeometry;\r\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\r\n // Collate the textures and classifiers layers into a single array.\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n (layer as TerrainTexture[]).push(texture);\r\n } else {\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\r\n\r\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n } else {\r\n let primaryLayer;\r\n while (primaryLayer === undefined)\r\n primaryLayer = layers.shift();\r\n if (!primaryLayer)\r\n return undefined;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n let layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n if (secondaryTexture instanceof ProjectedTexture) {\r\n layerTextures.push(secondaryTexture.clone(targetRectangle));\r\n } else {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull && textureRange) {\r\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n while (layerTextures.length > texturesPerMesh) {\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n layerTextures = layerTextures.slice(texturesPerMesh);\r\n }\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n if (featureTable) {\r\n branch.add(system.createBatch(expectDefined(primitive), featureTable, mesh.getRange(), { tileId }));\r\n }\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity(), { disableClipStyle: params.disableClipStyle });\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n if (this.textureParams?.params) {\r\n for (const param of this.textureParams.params) {\r\n if (param.texture?.bytesUsed)\r\n stats.addTexture(param.texture.bytesUsed);\r\n }\r\n }\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
@@ -40,7 +40,7 @@ class RenderBuffer {
40
40
  get isDisposed() { return this._glBuffer === undefined || this._glBuffer === null; }
41
41
  [Symbol.dispose]() {
42
42
  if (!this.isDisposed) {
43
- System_1.System.instance.context.deleteRenderbuffer(this._glBuffer);
43
+ System_1.System.instance.context.deleteRenderbuffer((0, core_bentley_1.expectDefined)(this._glBuffer));
44
44
  this._glBuffer = undefined;
45
45
  this._bytesUsed = 0;
46
46
  }
@@ -93,7 +93,7 @@ class RenderBufferMultiSample {
93
93
  get isDisposed() { return this._glBuffer === undefined || this._glBuffer === null; }
94
94
  [Symbol.dispose]() {
95
95
  if (!this.isDisposed) {
96
- System_1.System.instance.context.deleteRenderbuffer(this._glBuffer);
96
+ System_1.System.instance.context.deleteRenderbuffer((0, core_bentley_1.expectDefined)(this._glBuffer));
97
97
  this._glBuffer = undefined;
98
98
  }
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderBuffer.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\nfunction computeBytesUsed(width: number, height: number, format: GL.RenderBuffer.Format, numSamples: number): number {\r\n const bytesPerPixel = (GL.RenderBuffer.Format.DepthComponent16 === format ? 2 : 4);\r\n return width * height * bytesPerPixel * numSamples;\r\n}\r\n\r\n/** @internal */\r\nexport class RenderBuffer implements WebGLDisposable {\r\n private _glBuffer?: WebGLRenderbuffer;\r\n private _bytesUsed = 0;\r\n private _width: number;\r\n private _height: number;\r\n\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n public get width(): number { return this._width; }\r\n public get height(): number { return this._height; }\r\n\r\n public getHandle() { return this._glBuffer; }\r\n\r\n public static create(width: number, height: number, format = GL.RenderBuffer.Format.DepthComponent16) {\r\n const gl = System.instance.context;\r\n\r\n const glBuffer = gl.createRenderbuffer();\r\n if (null === glBuffer) {\r\n return undefined;\r\n }\r\n\r\n assert(0 < width && 0 < height);\r\n RenderBuffer.bindBuffer(glBuffer);\r\n gl.renderbufferStorage(GL.RenderBuffer.TARGET, format, width, height);\r\n RenderBuffer.unbind();\r\n\r\n return new RenderBuffer(glBuffer, width, height, computeBytesUsed(width, height, format, 1));\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteRenderbuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n public bind() {\r\n assert(undefined !== this._glBuffer);\r\n if (undefined !== this._glBuffer) {\r\n RenderBuffer.bindBuffer(this._glBuffer);\r\n }\r\n }\r\n\r\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\r\n this._glBuffer = glBuffer;\r\n this._bytesUsed = bytesUsed;\r\n this._width = width;\r\n this._height = height;\r\n }\r\n\r\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\r\n private static unbind() { this.bindBuffer(null); }\r\n}\r\n\r\n/**\r\n * A RenderBuffer for doing antialiasing (multisampling).\r\n * @internal\r\n */\r\nexport class RenderBufferMultiSample implements WebGLDisposable {\r\n private _glBuffer?: WebGLRenderbuffer;\r\n private _bytesUsed = 0;\r\n private _width: number;\r\n private _height: number;\r\n private _isDirty: boolean = false;\r\n\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n public get width(): number { return this._width; }\r\n public get height(): number { return this._height; }\r\n public get isDirty(): boolean { return this._isDirty; }\r\n public markBufferDirty(dirty: boolean) {\r\n this._isDirty = dirty;\r\n }\r\n\r\n public getHandle() { return this._glBuffer; }\r\n\r\n public static create(width: number, height: number, format: number, numSamples: number) {\r\n const gl = System.instance.context;\r\n const glBuffer = gl.createRenderbuffer();\r\n if (null === glBuffer)\r\n return undefined;\r\n\r\n assert(0 < width && 0 < height);\r\n RenderBufferMultiSample.bindBuffer(glBuffer);\r\n gl.renderbufferStorageMultisample(GL.RenderBuffer.TARGET, numSamples, format, width, height);\r\n RenderBufferMultiSample.unbind();\r\n\r\n return new RenderBufferMultiSample(glBuffer, width, height, computeBytesUsed(width, height, format, numSamples));\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteRenderbuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n }\r\n }\r\n\r\n public bind() {\r\n assert(undefined !== this._glBuffer);\r\n if (undefined !== this._glBuffer) {\r\n RenderBufferMultiSample.bindBuffer(this._glBuffer);\r\n }\r\n }\r\n\r\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\r\n this._glBuffer = glBuffer;\r\n this._bytesUsed = bytesUsed;\r\n this._width = width;\r\n this._height = height;\r\n }\r\n\r\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\r\n private static unbind() { this.bindBuffer(null); }\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderBuffer.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, expectDefined } from \"@itwin/core-bentley\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\nfunction computeBytesUsed(width: number, height: number, format: GL.RenderBuffer.Format, numSamples: number): number {\r\n const bytesPerPixel = (GL.RenderBuffer.Format.DepthComponent16 === format ? 2 : 4);\r\n return width * height * bytesPerPixel * numSamples;\r\n}\r\n\r\n/** @internal */\r\nexport class RenderBuffer implements WebGLDisposable {\r\n private _glBuffer?: WebGLRenderbuffer;\r\n private _bytesUsed = 0;\r\n private _width: number;\r\n private _height: number;\r\n\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n public get width(): number { return this._width; }\r\n public get height(): number { return this._height; }\r\n\r\n public getHandle() { return this._glBuffer; }\r\n\r\n public static create(width: number, height: number, format = GL.RenderBuffer.Format.DepthComponent16) {\r\n const gl = System.instance.context;\r\n\r\n const glBuffer = gl.createRenderbuffer();\r\n if (null === glBuffer) {\r\n return undefined;\r\n }\r\n\r\n assert(0 < width && 0 < height);\r\n RenderBuffer.bindBuffer(glBuffer);\r\n gl.renderbufferStorage(GL.RenderBuffer.TARGET, format, width, height);\r\n RenderBuffer.unbind();\r\n\r\n return new RenderBuffer(glBuffer, width, height, computeBytesUsed(width, height, format, 1));\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteRenderbuffer(expectDefined(this._glBuffer));\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n public bind() {\r\n assert(undefined !== this._glBuffer);\r\n if (undefined !== this._glBuffer) {\r\n RenderBuffer.bindBuffer(this._glBuffer);\r\n }\r\n }\r\n\r\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\r\n this._glBuffer = glBuffer;\r\n this._bytesUsed = bytesUsed;\r\n this._width = width;\r\n this._height = height;\r\n }\r\n\r\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\r\n private static unbind() { this.bindBuffer(null); }\r\n}\r\n\r\n/**\r\n * A RenderBuffer for doing antialiasing (multisampling).\r\n * @internal\r\n */\r\nexport class RenderBufferMultiSample implements WebGLDisposable {\r\n private _glBuffer?: WebGLRenderbuffer;\r\n private _bytesUsed = 0;\r\n private _width: number;\r\n private _height: number;\r\n private _isDirty: boolean = false;\r\n\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n public get width(): number { return this._width; }\r\n public get height(): number { return this._height; }\r\n public get isDirty(): boolean { return this._isDirty; }\r\n public markBufferDirty(dirty: boolean) {\r\n this._isDirty = dirty;\r\n }\r\n\r\n public getHandle() { return this._glBuffer; }\r\n\r\n public static create(width: number, height: number, format: number, numSamples: number) {\r\n const gl = System.instance.context;\r\n const glBuffer = gl.createRenderbuffer();\r\n if (null === glBuffer)\r\n return undefined;\r\n\r\n assert(0 < width && 0 < height);\r\n RenderBufferMultiSample.bindBuffer(glBuffer);\r\n gl.renderbufferStorageMultisample(GL.RenderBuffer.TARGET, numSamples, format, width, height);\r\n RenderBufferMultiSample.unbind();\r\n\r\n return new RenderBufferMultiSample(glBuffer, width, height, computeBytesUsed(width, height, format, numSamples));\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\r\n\r\n public [Symbol.dispose](): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteRenderbuffer(expectDefined(this._glBuffer));\r\n this._glBuffer = undefined;\r\n }\r\n }\r\n\r\n public bind() {\r\n assert(undefined !== this._glBuffer);\r\n if (undefined !== this._glBuffer) {\r\n RenderBufferMultiSample.bindBuffer(this._glBuffer);\r\n }\r\n }\r\n\r\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\r\n this._glBuffer = glBuffer;\r\n this._bytesUsed = bytesUsed;\r\n this._width = width;\r\n this._height = height;\r\n }\r\n\r\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\r\n private static unbind() { this.bindBuffer(null); }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
- import { Frustum, ViewFlags } from "@itwin/core-common";
4
+ import { FeatureAppearanceProvider, Frustum, ViewFlags } from "@itwin/core-common";
5
5
  import { GraphicList } from "../../../render/RenderGraphic";
6
6
  import { BranchStack } from "./BranchStack";
7
7
  import { BatchState } from "./BatchState";
@@ -30,6 +30,7 @@ export declare class RenderCommands implements Iterable<DrawCommands> {
30
30
  private _translucentOverrides;
31
31
  private _addTranslucentAsOpaque;
32
32
  private readonly _layers;
33
+ appearanceProvider?: FeatureAppearanceProvider;
33
34
  get target(): Target;
34
35
  [Symbol.iterator](): Iterator<DrawCommands>;
35
36
  get isEmpty(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ class RenderCommands {
34
34
  _translucentOverrides = false;
35
35
  _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.
36
36
  _layers;
37
+ appearanceProvider;
37
38
  get target() { return this._target; }
38
39
  [Symbol.iterator]() {
39
40
  return this._commands[Symbol.iterator]();
@@ -80,6 +81,7 @@ class RenderCommands {
80
81
  this._target = target;
81
82
  this._stack = stack;
82
83
  this._batchState = batchState;
84
+ this.appearanceProvider = undefined;
83
85
  this.clear();
84
86
  }
85
87
  collectGraphicsForPlanarProjection(scene) {
@@ -520,7 +522,7 @@ class RenderCommands {
520
522
  (0, core_bentley_1.assert)(!this._opaqueOverrides && !this._translucentOverrides);
521
523
  (0, core_bentley_1.assert)(undefined === this._curBatch);
522
524
  // If all features are overridden to be invisible, draw no graphics in this batch
523
- const overrides = batch.getOverrides(this.target);
525
+ const overrides = batch.getOverrides(this.target, this.appearanceProvider ?? this._stack.top);
524
526
  if (overrides.allHidden)
525
527
  return;
526
528
  if (!batch.range.isNull) {
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Decorations } from \"../../../render/Decorations\";\r\nimport { SurfaceType } from \"../../../common/internal/render/SurfaceParams\";\r\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { AnimationBranchState } from \"../AnimationBranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport {\r\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\r\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\r\n} from \"./DrawCommand\";\r\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\r\nimport { Layer, LayerContainer } from \"./Layer\";\r\nimport { LayerCommandLists } from \"./LayerCommands\";\r\nimport { MeshGraphic } from \"./Mesh\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { TargetGraphics } from \"./TargetGraphics\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\n\r\n/** A list of DrawCommands to be rendered, ordered by render pass.\r\n * @internal\r\n */\r\nexport class RenderCommands implements Iterable<DrawCommands> {\r\n private _frustumPlanes?: FrustumPlanes;\r\n private readonly _scratchFrustum = new Frustum();\r\n private readonly _scratchRange = new Range3d();\r\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\r\n private _target: Target;\r\n private _stack: BranchStack; // refers to the Target's BranchStack\r\n private _batchState: BatchState; // refers to the Target's BatchState\r\n private _forcedRenderPass: RenderPass = RenderPass.None;\r\n private _addLayersAsNormalGraphics = false;\r\n private _opaqueOverrides = false;\r\n private _translucentOverrides = false;\r\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\r\n private readonly _layers: LayerCommandLists;\r\n\r\n public get target(): Target { return this._target; }\r\n\r\n public [Symbol.iterator](): Iterator<DrawCommands> {\r\n return this._commands[Symbol.iterator]();\r\n }\r\n\r\n public get isEmpty(): boolean {\r\n for (const commands of this._commands)\r\n if (0 < commands.length)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public get isDrawingLayers() {\r\n switch (this._forcedRenderPass) {\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\r\n public get compositeFlags(): CompositeFlags {\r\n let flags = CompositeFlags.None;\r\n if (this.hasCommands(RenderPass.Translucent))\r\n flags |= CompositeFlags.Translucent;\r\n\r\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\r\n flags |= CompositeFlags.Hilite;\r\n\r\n if (this.target.wantAmbientOcclusion)\r\n flags |= CompositeFlags.AmbientOcclusion;\r\n\r\n return flags;\r\n }\r\n\r\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\r\n\r\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\r\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\r\n\r\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\r\n this._target = target;\r\n this._stack = stack;\r\n this._batchState = batchState;\r\n this._layers = new LayerCommandLists(this);\r\n\r\n for (let i = 0; i < RenderPass.COUNT; ++i)\r\n this._commands[i] = [];\r\n }\r\n\r\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\r\n this._target = target;\r\n this._stack = stack;\r\n this._batchState = batchState;\r\n this.clear();\r\n }\r\n\r\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\r\n assert(this._forcedRenderPass === RenderPass.None);\r\n assert(!this._addLayersAsNormalGraphics);\r\n\r\n this._addLayersAsNormalGraphics = true;\r\n this.addGraphics(scene);\r\n this._addLayersAsNormalGraphics = false;\r\n }\r\n\r\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\r\n this._forcedRenderPass = forcedPass;\r\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n /** Add backgroundMap graphics to their own render pass. */\r\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\r\n this._forcedRenderPass = RenderPass.BackgroundMap;\r\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n /** Add overlay graphics to the world overlay pass */\r\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\r\n this._forcedRenderPass = RenderPass.WorldOverlay;\r\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\r\n this._forcedRenderPass = forcedPass;\r\n for (const entry of dec) {\r\n (entry as Graphic).addCommands(this);\r\n }\r\n\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addWorldDecorations(decs: GraphicList): void {\r\n const world = this.target.getWorldDecorations(decs);\r\n this.pushAndPopBranch(world, () => {\r\n for (const entry of world.branch.entries) {\r\n (entry as Graphic).addCommands(this);\r\n }\r\n });\r\n }\r\n\r\n private addPickableDecorations(decs: Decorations): void {\r\n if (undefined !== decs.normal) {\r\n for (const normal of decs.normal) {\r\n const gf = normal as Graphic;\r\n if (gf.isPickable)\r\n gf.addCommands(this);\r\n }\r\n }\r\n\r\n if (undefined !== decs.world) {\r\n const world = this.target.getWorldDecorations(decs.world);\r\n this.pushAndPopBranch(world, () => {\r\n for (const gf of world.branch.entries) {\r\n if ((gf as Graphic).isPickable)\r\n (gf as Graphic).addCommands(this);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public addBackground(gf?: Graphic): void {\r\n if (undefined === gf)\r\n return;\r\n\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n\r\n this._forcedRenderPass = RenderPass.Background;\r\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addSkyBox(gf?: Graphic): void {\r\n if (undefined === gf)\r\n return;\r\n\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n\r\n this._forcedRenderPass = RenderPass.SkyBox;\r\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\r\n if (undefined === pass)\r\n pass = command.getPass(this.target);\r\n\r\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\r\n return;\r\n\r\n if (RenderPass.None !== this._forcedRenderPass) {\r\n // Add the command to the forced render pass (background).\r\n this.getCommands(this._forcedRenderPass).push(command);\r\n return;\r\n }\r\n\r\n if (!command.hasFeatures) {\r\n // Draw in general opaque pass so they are not in pick data.\r\n switch (pass) {\r\n case \"opaque-linear\":\r\n case \"opaque-planar\":\r\n pass = \"opaque\";\r\n break;\r\n case \"opaque-planar-translucent\":\r\n pass = \"opaque-translucent\";\r\n break;\r\n }\r\n }\r\n\r\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\r\n\r\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\r\n switch (command.renderOrder) {\r\n case RenderOrder.PlanarLitSurface:\r\n case RenderOrder.PlanarUnlitSurface:\r\n case RenderOrder.BlankingRegion:\r\n pass = \"opaque-planar\";\r\n break;\r\n case RenderOrder.LitSurface:\r\n case RenderOrder.UnlitSurface:\r\n pass = \"opaque\";\r\n break;\r\n default:\r\n pass = \"opaque-linear\";\r\n break;\r\n }\r\n }\r\n\r\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\r\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\r\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\r\n let opaquePass: RenderPass;\r\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\r\n opaquePass = Pass.toOpaquePass(pass);\r\n } else {\r\n switch (command.renderOrder) {\r\n case RenderOrder.PlanarLitSurface:\r\n case RenderOrder.PlanarUnlitSurface:\r\n case RenderOrder.BlankingRegion:\r\n opaquePass = RenderPass.OpaquePlanar;\r\n break;\r\n case RenderOrder.LitSurface:\r\n case RenderOrder.UnlitSurface:\r\n opaquePass = RenderPass.OpaqueGeneral;\r\n break;\r\n default:\r\n opaquePass = RenderPass.OpaqueLinear;\r\n break;\r\n }\r\n }\r\n\r\n this.getCommands(opaquePass).push(command);\r\n }\r\n\r\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\r\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\r\n this.getCommands(RenderPass.Translucent).push(command);\r\n\r\n if (!Pass.rendersOpaqueAndTranslucent(pass))\r\n this.getCommands(Pass.toRenderPass(pass)).push(command);\r\n }\r\n\r\n public getCommands(pass: RenderPass): DrawCommands {\r\n let idx = pass as number;\r\n assert(idx < this._commands.length);\r\n if (idx >= this._commands.length)\r\n idx -= 1;\r\n\r\n return this._commands[idx];\r\n }\r\n\r\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\r\n const idx = pass as number;\r\n this._commands[idx].splice(0);\r\n this._commands[idx] = cmds;\r\n }\r\n\r\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\r\n this.pushAndPopBranchForPass(pass, branch, () => {\r\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\r\n });\r\n }\r\n\r\n public processLayers(container: LayerContainer): void {\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n if (RenderPass.None !== this._forcedRenderPass)\r\n return;\r\n\r\n this._forcedRenderPass = container.renderPass;\r\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addLayerCommands(layer: Layer): void {\r\n if (this._addLayersAsNormalGraphics) {\r\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\r\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\r\n assert(this._forcedRenderPass === RenderPass.None);\r\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\r\n layer.graphic.addCommands(this);\r\n this._forcedRenderPass = RenderPass.None;\r\n return;\r\n }\r\n\r\n assert(this.isDrawingLayers);\r\n if (!this.isDrawingLayers)\r\n return;\r\n\r\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\r\n this._layers.currentLayer = layer;\r\n layer.graphic.addCommands(this);\r\n\r\n const cmds = this.getCommands(this._forcedRenderPass);\r\n this._layers.addCommands(cmds);\r\n\r\n cmds.length = 0;\r\n this._layers.currentLayer = undefined;\r\n }\r\n\r\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\r\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\r\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\r\n return;\r\n\r\n const prevPass = this._forcedRenderPass;\r\n this._forcedRenderPass = RenderPass.None;\r\n\r\n graphic.addHiliteCommands(this, pass);\r\n\r\n this._forcedRenderPass = prevPass;\r\n }\r\n\r\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\r\n const animId = branch.branch.animationId;\r\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\r\n }\r\n\r\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\r\n assert(!this.isDrawingLayers);\r\n\r\n const animState = this.getAnimationBranchState(branch);\r\n if (animState?.omit)\r\n return;\r\n\r\n assert(RenderPass.None !== pass);\r\n\r\n this._stack.pushBranch(branch);\r\n if (branch.planarClassifier)\r\n branch.planarClassifier.pushBatchState(this._batchState);\r\n\r\n if (branch.secondaryClassifiers)\r\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\r\n\r\n const cmds = this.getCommands(pass);\r\n const clip = animState?.clip as ClipVolume | undefined;\r\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\r\n if (pushClip)\r\n cmds.push(pushClip);\r\n\r\n const push = new PushBranchCommand(branch);\r\n cmds.push(push);\r\n\r\n func();\r\n\r\n this._stack.pop();\r\n if (cmds[cmds.length - 1] === push) {\r\n cmds.pop();\r\n if (pushClip)\r\n cmds.pop();\r\n } else {\r\n cmds.push(PopBranchCommand.instance);\r\n if (pushClip)\r\n cmds.push(PopClipCommand.instance);\r\n }\r\n }\r\n\r\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\r\n if (this.isDrawingLayers) {\r\n this._commands[RenderPass.Hilite].push(push);\r\n this._layers.pushAndPop(push, pop, func);\r\n\r\n const cmds = this._commands[RenderPass.Hilite];\r\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n\r\n return;\r\n }\r\n\r\n if (RenderPass.None === this._forcedRenderPass) {\r\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\r\n for (const cmds of this._commands)\r\n cmds.push(push);\r\n } else {\r\n // May want to add hilite commands as well - add the push command to that pass.\r\n this._commands[this._forcedRenderPass].push(push);\r\n this._commands[RenderPass.Hilite].push(push);\r\n }\r\n\r\n func();\r\n\r\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\r\n if (RenderPass.None === this._forcedRenderPass) {\r\n for (const cmds of this._commands) {\r\n assert(0 < cmds.length);\r\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n }\r\n } else {\r\n assert(0 < this._commands[this._forcedRenderPass].length);\r\n assert(0 < this._commands[RenderPass.Hilite].length);\r\n\r\n let cmds = this._commands[this._forcedRenderPass];\r\n if (cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n\r\n cmds = this._commands[RenderPass.Hilite];\r\n if (cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n }\r\n }\r\n\r\n public pushAndPopBranch(branch: Branch, func: () => void): void {\r\n const animState = this.getAnimationBranchState(branch);\r\n if (animState?.omit)\r\n return;\r\n\r\n if (animState?.clip)\r\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\r\n else\r\n this._pushAndPopBranch(branch, func);\r\n }\r\n\r\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\r\n this._stack.pushBranch(branch);\r\n if (branch.planarClassifier)\r\n branch.planarClassifier.pushBatchState(this._batchState);\r\n\r\n if (branch.secondaryClassifiers)\r\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\r\n\r\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushAndPopState(state: BranchState, func: () => void): void {\r\n this._stack.pushState(state);\r\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\r\n this._stack.pop();\r\n }\r\n\r\n public clear(): void {\r\n assert(this._batchState.isEmpty);\r\n this._clearCommands();\r\n }\r\n\r\n private _clearCommands(): void {\r\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\r\n this._layers.clear();\r\n }\r\n\r\n private initForPickOverlayDecorations(overlays: GraphicList): void {\r\n for (const overlay of overlays) {\r\n const gf = overlay as Graphic;\r\n if (gf.isPickable)\r\n gf.addCommands(this);\r\n }\r\n }\r\n\r\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\r\n this._clearCommands();\r\n\r\n this._addTranslucentAsOpaque = true;\r\n\r\n for (const sceneGf of sceneOverlays)\r\n (sceneGf as Graphic).addCommands(this);\r\n\r\n if (worldOverlayDecorations?.length) {\r\n this.pushAndPopState(this.target.decorationsState, () => {\r\n this.initForPickOverlayDecorations(worldOverlayDecorations);\r\n });\r\n }\r\n\r\n if (viewOverlayDecorations?.length) {\r\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\r\n this.initForPickOverlayDecorations(viewOverlayDecorations);\r\n });\r\n }\r\n\r\n this._addTranslucentAsOpaque = false;\r\n }\r\n\r\n public initForReadPixels(gfx: TargetGraphics): void {\r\n this.clear();\r\n\r\n // Set flag to force translucent geometry to be put into the opaque pass.\r\n this._addTranslucentAsOpaque = true;\r\n\r\n // Add the scene graphics.\r\n this.addGraphics(gfx.foreground);\r\n\r\n // Also add any pickable decorations.\r\n if (undefined !== gfx.decorations)\r\n this.addPickableDecorations(gfx.decorations);\r\n\r\n // Also background map is pickable\r\n this.addBackgroundMapGraphics(gfx.background);\r\n\r\n this._addTranslucentAsOpaque = false;\r\n\r\n this.setupClassificationByVolume();\r\n this._layers.outputCommands();\r\n }\r\n\r\n public initForRender(gfx: TargetGraphics): void {\r\n this.clear();\r\n\r\n this.addGraphics(gfx.foreground);\r\n this.addBackgroundMapGraphics(gfx.background);\r\n this.addOverlayGraphics(gfx.overlays);\r\n\r\n this.addGraphics(gfx.foregroundDynamics);\r\n this.addOverlayGraphics(gfx.overlayDynamics);\r\n\r\n const dec = gfx.decorations;\r\n if (undefined !== dec) {\r\n this.addBackground(dec.viewBackground as Graphic);\r\n\r\n this.addSkyBox(dec.skyBox as Graphic);\r\n\r\n if (undefined !== dec.normal && 0 < dec.normal.length)\r\n this.addGraphics(dec.normal);\r\n\r\n if (undefined !== dec.world && 0 < dec.world.length)\r\n this.addWorldDecorations(dec.world);\r\n\r\n this.pushAndPopState(this.target.decorationsState, () => {\r\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\r\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\r\n\r\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\r\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\r\n });\r\n }\r\n\r\n this.setupClassificationByVolume();\r\n this._layers.outputCommands();\r\n }\r\n\r\n public addPrimitive(prim: Primitive): void {\r\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\r\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\r\n // return;\r\n\r\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\r\n if (\"classification\" === prim.getPass(this.target)) {\r\n const geom = prim.cachedGeometry;\r\n geom.computeRange(this._scratchRange);\r\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\r\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\r\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const command = new PrimitiveCommand(prim);\r\n this.addPrimitiveCommand(command);\r\n\r\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\r\n const vf: ViewFlags = this.target.currentViewFlags;\r\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\r\n this.getCommands(RenderPass.HiddenEdge).push(command);\r\n }\r\n }\r\n\r\n public addBranch(branch: Branch): void {\r\n this.pushAndPopBranch(branch, () => {\r\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n });\r\n }\r\n\r\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\r\n let pass = RenderPass.Hilite;\r\n if (batch.graphic instanceof MeshGraphic) {\r\n const mg = batch.graphic;\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n } else if (batch.graphic instanceof GraphicsArray) {\r\n const ga = batch.graphic;\r\n if (ga.graphics[0] instanceof MeshGraphic) {\r\n const mg = ga.graphics[0];\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n } else if (ga.graphics[0] instanceof Branch) {\r\n const b = ga.graphics[0];\r\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\r\n const mg = b.branch.entries[0];\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n }\r\n }\r\n }\r\n return pass;\r\n }\r\n\r\n public addBatch(batch: Batch): void {\r\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\r\n return;\r\n\r\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\r\n // They may draw during both, or neither.\r\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\r\n // assert(RenderPass.None === this._forcedRenderPass);\r\n assert(!this._opaqueOverrides && !this._translucentOverrides);\r\n assert(undefined === this._curBatch);\r\n\r\n // If all features are overridden to be invisible, draw no graphics in this batch\r\n const overrides = batch.getOverrides(this.target);\r\n if (overrides.allHidden)\r\n return;\r\n\r\n if (!batch.range.isNull) {\r\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\r\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\r\n // return;\r\n\r\n if (undefined !== this._frustumPlanes) {\r\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\r\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\r\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const classifier = this._stack.top.planarClassifier;\r\n\r\n this._batchState.push(batch, true);\r\n\r\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\r\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\r\n this._opaqueOverrides = overrides.anyOpaque;\r\n this._translucentOverrides = overrides.anyTranslucent;\r\n\r\n if (undefined !== classifier) {\r\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\r\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\r\n }\r\n }\r\n\r\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\r\n let savedForcedRenderPass = RenderPass.None;\r\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.batchModelId === this.target.activeVolumeClassifierModelId) {\r\n savedForcedRenderPass = this._forcedRenderPass;\r\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\r\n }\r\n\r\n (batch.graphic as Graphic).addCommands(this);\r\n\r\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\r\n this._forcedRenderPass = savedForcedRenderPass;\r\n\r\n // If the batch contains hilited features, need to render them in the hilite pass\r\n const anyHilited = overrides.anyHilited;\r\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\r\n if (anyHilited || planarClassifierHilited)\r\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\r\n\r\n });\r\n\r\n this._opaqueOverrides = this._translucentOverrides = false;\r\n this._batchState.pop();\r\n }\r\n\r\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\r\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\r\n // Clear the culling frustum.\r\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\r\n\r\n private setupClassificationByVolume(): void {\r\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\r\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\r\n // nested branches and batches.\r\n const groupedCmds = this._commands[RenderPass.Classification];\r\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\r\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\r\n for (const cmd of groupedCmds) {\r\n switch (cmd.opcode) {\r\n case \"pushBranch\":\r\n case \"pushBatch\":\r\n case \"pushState\":\r\n pushCommands.push(cmd);\r\n break;\r\n case \"drawPrimitive\":\r\n for (const pushCmd of pushCommands) {\r\n byIndexCmds.push(pushCmd);\r\n }\r\n byIndexCmds.push(cmd);\r\n for (let i = pushCommands.length - 1; i >= 0; --i) {\r\n if (\"pushBatch\" === pushCommands[i].opcode)\r\n byIndexCmds.push(PopBatchCommand.instance);\r\n else // should be eith pushBranch or pushState opcode\r\n byIndexCmds.push(PopBranchCommand.instance);\r\n }\r\n break;\r\n case \"popBatch\":\r\n case \"popBranch\":\r\n pushCommands.pop();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public dump(): Array<{ name: string, count: number }> {\r\n const dump = [\r\n { name: \"Primitives\", count: 0 },\r\n { name: \"Batches\", count: 0 },\r\n { name: \"Branches\", count: 0 },\r\n ];\r\n\r\n for (const cmds of this._commands) {\r\n for (const cmd of cmds) {\r\n let index;\r\n switch (cmd.opcode) {\r\n case \"drawPrimitive\":\r\n index = 0;\r\n break;\r\n case \"pushBatch\":\r\n index = 1;\r\n break;\r\n case \"pushBranch\":\r\n index = 2;\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n dump[index].count++;\r\n }\r\n }\r\n\r\n return dump;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { FeatureAppearanceProvider, Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { Decorations } from \"../../../render/Decorations\";\r\nimport { SurfaceType } from \"../../../common/internal/render/SurfaceParams\";\r\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\r\nimport { AnimationBranchState } from \"../AnimationBranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport {\r\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\r\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\r\n} from \"./DrawCommand\";\r\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\r\nimport { Layer, LayerContainer } from \"./Layer\";\r\nimport { LayerCommandLists } from \"./LayerCommands\";\r\nimport { MeshGraphic } from \"./Mesh\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { TargetGraphics } from \"./TargetGraphics\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\n\r\n/** A list of DrawCommands to be rendered, ordered by render pass.\r\n * @internal\r\n */\r\nexport class RenderCommands implements Iterable<DrawCommands> {\r\n private _frustumPlanes?: FrustumPlanes;\r\n private readonly _scratchFrustum = new Frustum();\r\n private readonly _scratchRange = new Range3d();\r\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\r\n private _target: Target;\r\n private _stack: BranchStack; // refers to the Target's BranchStack\r\n private _batchState: BatchState; // refers to the Target's BatchState\r\n private _forcedRenderPass: RenderPass = RenderPass.None;\r\n private _addLayersAsNormalGraphics = false;\r\n private _opaqueOverrides = false;\r\n private _translucentOverrides = false;\r\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\r\n private readonly _layers: LayerCommandLists;\r\n public appearanceProvider?: FeatureAppearanceProvider;\r\n\r\n public get target(): Target { return this._target; }\r\n\r\n public [Symbol.iterator](): Iterator<DrawCommands> {\r\n return this._commands[Symbol.iterator]();\r\n }\r\n\r\n public get isEmpty(): boolean {\r\n for (const commands of this._commands)\r\n if (0 < commands.length)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public get isDrawingLayers() {\r\n switch (this._forcedRenderPass) {\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\r\n public get compositeFlags(): CompositeFlags {\r\n let flags = CompositeFlags.None;\r\n if (this.hasCommands(RenderPass.Translucent))\r\n flags |= CompositeFlags.Translucent;\r\n\r\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\r\n flags |= CompositeFlags.Hilite;\r\n\r\n if (this.target.wantAmbientOcclusion)\r\n flags |= CompositeFlags.AmbientOcclusion;\r\n\r\n return flags;\r\n }\r\n\r\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\r\n\r\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\r\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\r\n\r\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\r\n this._target = target;\r\n this._stack = stack;\r\n this._batchState = batchState;\r\n this._layers = new LayerCommandLists(this);\r\n\r\n for (let i = 0; i < RenderPass.COUNT; ++i)\r\n this._commands[i] = [];\r\n }\r\n\r\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\r\n this._target = target;\r\n this._stack = stack;\r\n this._batchState = batchState;\r\n this.appearanceProvider = undefined;\r\n this.clear();\r\n }\r\n\r\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\r\n assert(this._forcedRenderPass === RenderPass.None);\r\n assert(!this._addLayersAsNormalGraphics);\r\n\r\n this._addLayersAsNormalGraphics = true;\r\n this.addGraphics(scene);\r\n this._addLayersAsNormalGraphics = false;\r\n }\r\n\r\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\r\n this._forcedRenderPass = forcedPass;\r\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n /** Add backgroundMap graphics to their own render pass. */\r\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\r\n this._forcedRenderPass = RenderPass.BackgroundMap;\r\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n /** Add overlay graphics to the world overlay pass */\r\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\r\n this._forcedRenderPass = RenderPass.WorldOverlay;\r\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\r\n this._forcedRenderPass = forcedPass;\r\n for (const entry of dec) {\r\n (entry as Graphic).addCommands(this);\r\n }\r\n\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addWorldDecorations(decs: GraphicList): void {\r\n const world = this.target.getWorldDecorations(decs);\r\n this.pushAndPopBranch(world, () => {\r\n for (const entry of world.branch.entries) {\r\n (entry as Graphic).addCommands(this);\r\n }\r\n });\r\n }\r\n\r\n private addPickableDecorations(decs: Decorations): void {\r\n if (undefined !== decs.normal) {\r\n for (const normal of decs.normal) {\r\n const gf = normal as Graphic;\r\n if (gf.isPickable)\r\n gf.addCommands(this);\r\n }\r\n }\r\n\r\n if (undefined !== decs.world) {\r\n const world = this.target.getWorldDecorations(decs.world);\r\n this.pushAndPopBranch(world, () => {\r\n for (const gf of world.branch.entries) {\r\n if ((gf as Graphic).isPickable)\r\n (gf as Graphic).addCommands(this);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public addBackground(gf?: Graphic): void {\r\n if (undefined === gf)\r\n return;\r\n\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n\r\n this._forcedRenderPass = RenderPass.Background;\r\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addSkyBox(gf?: Graphic): void {\r\n if (undefined === gf)\r\n return;\r\n\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n\r\n this._forcedRenderPass = RenderPass.SkyBox;\r\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\r\n if (undefined === pass)\r\n pass = command.getPass(this.target);\r\n\r\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\r\n return;\r\n\r\n if (RenderPass.None !== this._forcedRenderPass) {\r\n // Add the command to the forced render pass (background).\r\n this.getCommands(this._forcedRenderPass).push(command);\r\n return;\r\n }\r\n\r\n if (!command.hasFeatures) {\r\n // Draw in general opaque pass so they are not in pick data.\r\n switch (pass) {\r\n case \"opaque-linear\":\r\n case \"opaque-planar\":\r\n pass = \"opaque\";\r\n break;\r\n case \"opaque-planar-translucent\":\r\n pass = \"opaque-translucent\";\r\n break;\r\n }\r\n }\r\n\r\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\r\n\r\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\r\n switch (command.renderOrder) {\r\n case RenderOrder.PlanarLitSurface:\r\n case RenderOrder.PlanarUnlitSurface:\r\n case RenderOrder.BlankingRegion:\r\n pass = \"opaque-planar\";\r\n break;\r\n case RenderOrder.LitSurface:\r\n case RenderOrder.UnlitSurface:\r\n pass = \"opaque\";\r\n break;\r\n default:\r\n pass = \"opaque-linear\";\r\n break;\r\n }\r\n }\r\n\r\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\r\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\r\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\r\n let opaquePass: RenderPass;\r\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\r\n opaquePass = Pass.toOpaquePass(pass);\r\n } else {\r\n switch (command.renderOrder) {\r\n case RenderOrder.PlanarLitSurface:\r\n case RenderOrder.PlanarUnlitSurface:\r\n case RenderOrder.BlankingRegion:\r\n opaquePass = RenderPass.OpaquePlanar;\r\n break;\r\n case RenderOrder.LitSurface:\r\n case RenderOrder.UnlitSurface:\r\n opaquePass = RenderPass.OpaqueGeneral;\r\n break;\r\n default:\r\n opaquePass = RenderPass.OpaqueLinear;\r\n break;\r\n }\r\n }\r\n\r\n this.getCommands(opaquePass).push(command);\r\n }\r\n\r\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\r\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\r\n this.getCommands(RenderPass.Translucent).push(command);\r\n\r\n if (!Pass.rendersOpaqueAndTranslucent(pass))\r\n this.getCommands(Pass.toRenderPass(pass)).push(command);\r\n }\r\n\r\n public getCommands(pass: RenderPass): DrawCommands {\r\n let idx = pass as number;\r\n assert(idx < this._commands.length);\r\n if (idx >= this._commands.length)\r\n idx -= 1;\r\n\r\n return this._commands[idx];\r\n }\r\n\r\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\r\n const idx = pass as number;\r\n this._commands[idx].splice(0);\r\n this._commands[idx] = cmds;\r\n }\r\n\r\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\r\n this.pushAndPopBranchForPass(pass, branch, () => {\r\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\r\n });\r\n }\r\n\r\n public processLayers(container: LayerContainer): void {\r\n assert(RenderPass.None === this._forcedRenderPass);\r\n if (RenderPass.None !== this._forcedRenderPass)\r\n return;\r\n\r\n this._forcedRenderPass = container.renderPass;\r\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\r\n this._forcedRenderPass = RenderPass.None;\r\n }\r\n\r\n public addLayerCommands(layer: Layer): void {\r\n if (this._addLayersAsNormalGraphics) {\r\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\r\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\r\n assert(this._forcedRenderPass === RenderPass.None);\r\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\r\n layer.graphic.addCommands(this);\r\n this._forcedRenderPass = RenderPass.None;\r\n return;\r\n }\r\n\r\n assert(this.isDrawingLayers);\r\n if (!this.isDrawingLayers)\r\n return;\r\n\r\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\r\n this._layers.currentLayer = layer;\r\n layer.graphic.addCommands(this);\r\n\r\n const cmds = this.getCommands(this._forcedRenderPass);\r\n this._layers.addCommands(cmds);\r\n\r\n cmds.length = 0;\r\n this._layers.currentLayer = undefined;\r\n }\r\n\r\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\r\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\r\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\r\n return;\r\n\r\n const prevPass = this._forcedRenderPass;\r\n this._forcedRenderPass = RenderPass.None;\r\n\r\n graphic.addHiliteCommands(this, pass);\r\n\r\n this._forcedRenderPass = prevPass;\r\n }\r\n\r\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\r\n const animId = branch.branch.animationId;\r\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\r\n }\r\n\r\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\r\n assert(!this.isDrawingLayers);\r\n\r\n const animState = this.getAnimationBranchState(branch);\r\n if (animState?.omit)\r\n return;\r\n\r\n assert(RenderPass.None !== pass);\r\n\r\n this._stack.pushBranch(branch);\r\n if (branch.planarClassifier)\r\n branch.planarClassifier.pushBatchState(this._batchState);\r\n\r\n if (branch.secondaryClassifiers)\r\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\r\n\r\n const cmds = this.getCommands(pass);\r\n const clip = animState?.clip as ClipVolume | undefined;\r\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\r\n if (pushClip)\r\n cmds.push(pushClip);\r\n\r\n const push = new PushBranchCommand(branch);\r\n cmds.push(push);\r\n\r\n func();\r\n\r\n this._stack.pop();\r\n if (cmds[cmds.length - 1] === push) {\r\n cmds.pop();\r\n if (pushClip)\r\n cmds.pop();\r\n } else {\r\n cmds.push(PopBranchCommand.instance);\r\n if (pushClip)\r\n cmds.push(PopClipCommand.instance);\r\n }\r\n }\r\n\r\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\r\n if (this.isDrawingLayers) {\r\n this._commands[RenderPass.Hilite].push(push);\r\n this._layers.pushAndPop(push, pop, func);\r\n\r\n const cmds = this._commands[RenderPass.Hilite];\r\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n\r\n return;\r\n }\r\n\r\n if (RenderPass.None === this._forcedRenderPass) {\r\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\r\n for (const cmds of this._commands)\r\n cmds.push(push);\r\n } else {\r\n // May want to add hilite commands as well - add the push command to that pass.\r\n this._commands[this._forcedRenderPass].push(push);\r\n this._commands[RenderPass.Hilite].push(push);\r\n }\r\n\r\n func();\r\n\r\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\r\n if (RenderPass.None === this._forcedRenderPass) {\r\n for (const cmds of this._commands) {\r\n assert(0 < cmds.length);\r\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n }\r\n } else {\r\n assert(0 < this._commands[this._forcedRenderPass].length);\r\n assert(0 < this._commands[RenderPass.Hilite].length);\r\n\r\n let cmds = this._commands[this._forcedRenderPass];\r\n if (cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n\r\n cmds = this._commands[RenderPass.Hilite];\r\n if (cmds[cmds.length - 1] === push)\r\n cmds.pop();\r\n else\r\n cmds.push(pop);\r\n }\r\n }\r\n\r\n public pushAndPopBranch(branch: Branch, func: () => void): void {\r\n const animState = this.getAnimationBranchState(branch);\r\n if (animState?.omit)\r\n return;\r\n\r\n if (animState?.clip)\r\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\r\n else\r\n this._pushAndPopBranch(branch, func);\r\n }\r\n\r\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\r\n this._stack.pushBranch(branch);\r\n if (branch.planarClassifier)\r\n branch.planarClassifier.pushBatchState(this._batchState);\r\n\r\n if (branch.secondaryClassifiers)\r\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\r\n\r\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushAndPopState(state: BranchState, func: () => void): void {\r\n this._stack.pushState(state);\r\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\r\n this._stack.pop();\r\n }\r\n\r\n public clear(): void {\r\n assert(this._batchState.isEmpty);\r\n this._clearCommands();\r\n }\r\n\r\n private _clearCommands(): void {\r\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\r\n this._layers.clear();\r\n }\r\n\r\n private initForPickOverlayDecorations(overlays: GraphicList): void {\r\n for (const overlay of overlays) {\r\n const gf = overlay as Graphic;\r\n if (gf.isPickable)\r\n gf.addCommands(this);\r\n }\r\n }\r\n\r\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\r\n this._clearCommands();\r\n\r\n this._addTranslucentAsOpaque = true;\r\n\r\n for (const sceneGf of sceneOverlays)\r\n (sceneGf as Graphic).addCommands(this);\r\n\r\n if (worldOverlayDecorations?.length) {\r\n this.pushAndPopState(this.target.decorationsState, () => {\r\n this.initForPickOverlayDecorations(worldOverlayDecorations);\r\n });\r\n }\r\n\r\n if (viewOverlayDecorations?.length) {\r\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\r\n this.initForPickOverlayDecorations(viewOverlayDecorations);\r\n });\r\n }\r\n\r\n this._addTranslucentAsOpaque = false;\r\n }\r\n\r\n public initForReadPixels(gfx: TargetGraphics): void {\r\n this.clear();\r\n\r\n // Set flag to force translucent geometry to be put into the opaque pass.\r\n this._addTranslucentAsOpaque = true;\r\n\r\n // Add the scene graphics.\r\n this.addGraphics(gfx.foreground);\r\n\r\n // Also add any pickable decorations.\r\n if (undefined !== gfx.decorations)\r\n this.addPickableDecorations(gfx.decorations);\r\n\r\n // Also background map is pickable\r\n this.addBackgroundMapGraphics(gfx.background);\r\n\r\n this._addTranslucentAsOpaque = false;\r\n\r\n this.setupClassificationByVolume();\r\n this._layers.outputCommands();\r\n }\r\n\r\n public initForRender(gfx: TargetGraphics): void {\r\n this.clear();\r\n\r\n this.addGraphics(gfx.foreground);\r\n this.addBackgroundMapGraphics(gfx.background);\r\n this.addOverlayGraphics(gfx.overlays);\r\n\r\n this.addGraphics(gfx.foregroundDynamics);\r\n this.addOverlayGraphics(gfx.overlayDynamics);\r\n\r\n const dec = gfx.decorations;\r\n if (undefined !== dec) {\r\n this.addBackground(dec.viewBackground as Graphic);\r\n\r\n this.addSkyBox(dec.skyBox as Graphic);\r\n\r\n if (undefined !== dec.normal && 0 < dec.normal.length)\r\n this.addGraphics(dec.normal);\r\n\r\n if (undefined !== dec.world && 0 < dec.world.length)\r\n this.addWorldDecorations(dec.world);\r\n\r\n this.pushAndPopState(this.target.decorationsState, () => {\r\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\r\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\r\n\r\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\r\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\r\n });\r\n }\r\n\r\n this.setupClassificationByVolume();\r\n this._layers.outputCommands();\r\n }\r\n\r\n public addPrimitive(prim: Primitive): void {\r\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\r\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\r\n // return;\r\n\r\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\r\n if (\"classification\" === prim.getPass(this.target)) {\r\n const geom = prim.cachedGeometry;\r\n geom.computeRange(this._scratchRange);\r\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\r\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\r\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const command = new PrimitiveCommand(prim);\r\n this.addPrimitiveCommand(command);\r\n\r\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\r\n const vf: ViewFlags = this.target.currentViewFlags;\r\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\r\n this.getCommands(RenderPass.HiddenEdge).push(command);\r\n }\r\n }\r\n\r\n public addBranch(branch: Branch): void {\r\n this.pushAndPopBranch(branch, () => {\r\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\r\n });\r\n }\r\n\r\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\r\n let pass = RenderPass.Hilite;\r\n if (batch.graphic instanceof MeshGraphic) {\r\n const mg = batch.graphic;\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n } else if (batch.graphic instanceof GraphicsArray) {\r\n const ga = batch.graphic;\r\n if (ga.graphics[0] instanceof MeshGraphic) {\r\n const mg = ga.graphics[0];\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n } else if (ga.graphics[0] instanceof Branch) {\r\n const b = ga.graphics[0];\r\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\r\n const mg = b.branch.entries[0];\r\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\r\n pass = RenderPass.HiliteClassification;\r\n }\r\n }\r\n }\r\n return pass;\r\n }\r\n\r\n public addBatch(batch: Batch): void {\r\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\r\n return;\r\n\r\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\r\n // They may draw during both, or neither.\r\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\r\n // assert(RenderPass.None === this._forcedRenderPass);\r\n assert(!this._opaqueOverrides && !this._translucentOverrides);\r\n assert(undefined === this._curBatch);\r\n\r\n // If all features are overridden to be invisible, draw no graphics in this batch\r\n const overrides = batch.getOverrides(this.target, this.appearanceProvider ?? this._stack.top);\r\n if (overrides.allHidden)\r\n return;\r\n\r\n if (!batch.range.isNull) {\r\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\r\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\r\n // return;\r\n\r\n if (undefined !== this._frustumPlanes) {\r\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\r\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\r\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const classifier = this._stack.top.planarClassifier;\r\n\r\n this._batchState.push(batch, true);\r\n\r\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\r\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\r\n this._opaqueOverrides = overrides.anyOpaque;\r\n this._translucentOverrides = overrides.anyTranslucent;\r\n\r\n if (undefined !== classifier) {\r\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\r\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\r\n }\r\n }\r\n\r\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\r\n let savedForcedRenderPass = RenderPass.None;\r\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.batchModelId === this.target.activeVolumeClassifierModelId) {\r\n savedForcedRenderPass = this._forcedRenderPass;\r\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\r\n }\r\n\r\n (batch.graphic as Graphic).addCommands(this);\r\n\r\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\r\n this._forcedRenderPass = savedForcedRenderPass;\r\n\r\n // If the batch contains hilited features, need to render them in the hilite pass\r\n const anyHilited = overrides.anyHilited;\r\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\r\n if (anyHilited || planarClassifierHilited)\r\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\r\n\r\n });\r\n\r\n this._opaqueOverrides = this._translucentOverrides = false;\r\n this._batchState.pop();\r\n }\r\n\r\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\r\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\r\n // Clear the culling frustum.\r\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\r\n\r\n private setupClassificationByVolume(): void {\r\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\r\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\r\n // nested branches and batches.\r\n const groupedCmds = this._commands[RenderPass.Classification];\r\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\r\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\r\n for (const cmd of groupedCmds) {\r\n switch (cmd.opcode) {\r\n case \"pushBranch\":\r\n case \"pushBatch\":\r\n case \"pushState\":\r\n pushCommands.push(cmd);\r\n break;\r\n case \"drawPrimitive\":\r\n for (const pushCmd of pushCommands) {\r\n byIndexCmds.push(pushCmd);\r\n }\r\n byIndexCmds.push(cmd);\r\n for (let i = pushCommands.length - 1; i >= 0; --i) {\r\n if (\"pushBatch\" === pushCommands[i].opcode)\r\n byIndexCmds.push(PopBatchCommand.instance);\r\n else // should be eith pushBranch or pushState opcode\r\n byIndexCmds.push(PopBranchCommand.instance);\r\n }\r\n break;\r\n case \"popBatch\":\r\n case \"popBranch\":\r\n pushCommands.pop();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public dump(): Array<{ name: string, count: number }> {\r\n const dump = [\r\n { name: \"Primitives\", count: 0 },\r\n { name: \"Batches\", count: 0 },\r\n { name: \"Branches\", count: 0 },\r\n ];\r\n\r\n for (const cmds of this._commands) {\r\n for (const cmd of cmds) {\r\n let index;\r\n switch (cmd.opcode) {\r\n case \"drawPrimitive\":\r\n index = 0;\r\n break;\r\n case \"pushBatch\":\r\n index = 1;\r\n break;\r\n case \"pushBranch\":\r\n index = 2;\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n dump[index].count++;\r\n }\r\n }\r\n\r\n return dump;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"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"}