@itwin/core-frontend 5.0.0-dev.40 → 5.0.0-dev.49

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 (566) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/AccuDraw.d.ts +21 -3
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +174 -56
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.js +1 -1
  7. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  8. package/lib/cjs/BriefcaseTxns.d.ts +1 -1
  9. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js +1 -1
  11. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  12. package/lib/cjs/DrawingViewState.js +2 -2
  13. package/lib/cjs/DrawingViewState.js.map +1 -1
  14. package/lib/cjs/EnvironmentDecorations.d.ts +1 -1
  15. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  16. package/lib/cjs/EnvironmentDecorations.js +1 -1
  17. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  18. package/lib/cjs/GraphicalEditingScope.d.ts +3 -1
  19. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.js +7 -3
  21. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  22. package/lib/cjs/IModelApp.d.ts +0 -5
  23. package/lib/cjs/IModelApp.d.ts.map +1 -1
  24. package/lib/cjs/IModelApp.js +0 -5
  25. package/lib/cjs/IModelApp.js.map +1 -1
  26. package/lib/cjs/IModelConnection.js +1 -1
  27. package/lib/cjs/IModelConnection.js.map +1 -1
  28. package/lib/cjs/NoRenderApp.d.ts +1 -1
  29. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  30. package/lib/cjs/NoRenderApp.js +1 -2
  31. package/lib/cjs/NoRenderApp.js.map +1 -1
  32. package/lib/cjs/SheetViewState.js +6 -6
  33. package/lib/cjs/SheetViewState.js.map +1 -1
  34. package/lib/cjs/SubCategoriesCache.d.ts +1 -1
  35. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  36. package/lib/cjs/SubCategoriesCache.js +1 -1
  37. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  38. package/lib/cjs/Tiles.d.ts +1 -1
  39. package/lib/cjs/Tiles.d.ts.map +1 -1
  40. package/lib/cjs/Tiles.js +6 -6
  41. package/lib/cjs/Tiles.js.map +1 -1
  42. package/lib/cjs/ViewManager.js +1 -1
  43. package/lib/cjs/ViewManager.js.map +1 -1
  44. package/lib/cjs/ViewState.js +1 -1
  45. package/lib/cjs/ViewState.js.map +1 -1
  46. package/lib/cjs/Viewport.d.ts +5 -3
  47. package/lib/cjs/Viewport.d.ts.map +1 -1
  48. package/lib/cjs/Viewport.js +8 -4
  49. package/lib/cjs/Viewport.js.map +1 -1
  50. package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
  51. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  52. package/lib/cjs/core-frontend.d.ts +1 -0
  53. package/lib/cjs/core-frontend.d.ts.map +1 -1
  54. package/lib/cjs/core-frontend.js +1 -0
  55. package/lib/cjs/core-frontend.js.map +1 -1
  56. package/lib/cjs/internal/render/RenderGeometry.d.ts +1 -2
  57. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -1
  58. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  59. package/lib/cjs/render/Decorations.d.ts +3 -2
  60. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  61. package/lib/cjs/render/Decorations.js +5 -1
  62. package/lib/cjs/render/Decorations.js.map +1 -1
  63. package/lib/cjs/render/GraphicBranch.d.ts +4 -2
  64. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  65. package/lib/cjs/render/GraphicBranch.js +5 -1
  66. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  67. package/lib/cjs/render/MockRender.d.ts +2 -2
  68. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  69. package/lib/cjs/render/MockRender.js +3 -4
  70. package/lib/cjs/render/MockRender.js.map +1 -1
  71. package/lib/cjs/render/RenderGraphic.d.ts +3 -2
  72. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  73. package/lib/cjs/render/RenderGraphic.js +4 -1
  74. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  75. package/lib/cjs/render/RenderPlanarClassifier.d.ts +3 -3
  76. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  78. package/lib/cjs/render/RenderSystem.d.ts +9 -8
  79. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  80. package/lib/cjs/render/RenderSystem.js +3 -0
  81. package/lib/cjs/render/RenderSystem.js.map +1 -1
  82. package/lib/cjs/render/RenderTarget.d.ts +3 -3
  83. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  84. package/lib/cjs/render/RenderTarget.js +1 -1
  85. package/lib/cjs/render/RenderTarget.js.map +1 -1
  86. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  87. package/lib/cjs/render/VisibleFeature.js +60 -3
  88. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  89. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts +2 -0
  90. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/AtmosphereUniforms.js +5 -1
  92. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  93. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +6 -2
  94. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/AttributeBuffers.js +12 -4
  96. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  97. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts +1 -1
  98. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  100. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  101. package/lib/cjs/render/webgl/CachedGeometry.d.ts +8 -8
  102. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/CachedGeometry.js +8 -8
  104. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  105. package/lib/cjs/render/webgl/ClippingProgram.d.ts +2 -0
  106. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  107. package/lib/cjs/render/webgl/ClippingProgram.js +5 -1
  108. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  109. package/lib/cjs/render/webgl/Contours.d.ts +1 -1
  110. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -1
  111. package/lib/cjs/render/webgl/Contours.js +1 -1
  112. package/lib/cjs/render/webgl/Contours.js.map +1 -1
  113. package/lib/cjs/render/webgl/Disposable.d.ts +1 -2
  114. package/lib/cjs/render/webgl/Disposable.d.ts.map +1 -1
  115. package/lib/cjs/render/webgl/Disposable.js +4 -0
  116. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  117. package/lib/cjs/render/webgl/EDL.d.ts +1 -1
  118. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/EDL.js +3 -3
  120. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  121. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +3 -3
  122. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  123. package/lib/cjs/render/webgl/EdgeGeometry.js +4 -4
  124. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  125. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -1
  126. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  127. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  128. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  129. package/lib/cjs/render/webgl/FrameBuffer.d.ts +1 -1
  130. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  131. package/lib/cjs/render/webgl/FrameBuffer.js +1 -1
  132. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  133. package/lib/cjs/render/webgl/Graphic.d.ts +2 -2
  134. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/Graphic.js +11 -11
  136. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  137. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  138. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  139. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +2 -2
  140. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  141. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +4 -4
  142. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/InstancedGeometry.js +5 -6
  144. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  145. package/lib/cjs/render/webgl/Layer.js +1 -1
  146. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  147. package/lib/cjs/render/webgl/Mesh.d.ts +1 -1
  148. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  149. package/lib/cjs/render/webgl/Mesh.js +1 -1
  150. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  151. package/lib/cjs/render/webgl/MeshData.d.ts +1 -1
  152. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  153. package/lib/cjs/render/webgl/MeshData.js +2 -2
  154. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  155. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +1 -1
  156. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  157. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  158. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  159. package/lib/cjs/render/webgl/PointCloud.d.ts +1 -1
  160. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  161. package/lib/cjs/render/webgl/PointCloud.js +1 -1
  162. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  163. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  164. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  165. package/lib/cjs/render/webgl/PointString.js +1 -1
  166. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  167. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  168. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/Polyline.js +1 -1
  170. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  171. package/lib/cjs/render/webgl/RealityMesh.d.ts +6 -10
  172. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/RealityMesh.js +6 -6
  174. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  175. package/lib/cjs/render/webgl/RenderBuffer.d.ts +2 -2
  176. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  177. package/lib/cjs/render/webgl/RenderBuffer.js +2 -2
  178. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  179. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  180. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  181. package/lib/cjs/render/webgl/SceneCompositor.js +6 -6
  182. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  183. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  184. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  185. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  186. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  187. package/lib/cjs/render/webgl/ShaderProgram.d.ts +5 -1
  188. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  189. package/lib/cjs/render/webgl/ShaderProgram.js +11 -3
  190. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  191. package/lib/cjs/render/webgl/SolarShadowMap.d.ts +1 -1
  192. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  193. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  194. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  195. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  196. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  198. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  199. package/lib/cjs/render/webgl/System.d.ts +1 -1
  200. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  201. package/lib/cjs/render/webgl/System.js +1 -1
  202. package/lib/cjs/render/webgl/System.js.map +1 -1
  203. package/lib/cjs/render/webgl/Target.d.ts +2 -2
  204. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/Target.js +9 -10
  206. package/lib/cjs/render/webgl/Target.js.map +1 -1
  207. package/lib/cjs/render/webgl/TargetGraphics.d.ts +1 -1
  208. package/lib/cjs/render/webgl/TargetGraphics.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/TargetGraphics.js +1 -1
  210. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  211. package/lib/cjs/render/webgl/Technique.d.ts +6 -0
  212. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/Technique.js +97 -15
  214. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  215. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  216. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  217. package/lib/cjs/render/webgl/Texture.js +1 -1
  218. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  219. package/lib/cjs/render/webgl/TextureDrape.d.ts +1 -1
  220. package/lib/cjs/render/webgl/TextureDrape.d.ts.map +1 -1
  221. package/lib/cjs/render/webgl/TextureDrape.js +1 -1
  222. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  223. package/lib/cjs/render/webgl/ThematicSensors.d.ts +1 -1
  224. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/ThematicSensors.js +1 -1
  226. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  227. package/lib/cjs/render/webgl/ThematicUniforms.d.ts +1 -1
  228. package/lib/cjs/render/webgl/ThematicUniforms.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  230. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  231. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  232. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  233. package/lib/cjs/render/webgl/VertexLUT.js +2 -2
  234. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  235. package/lib/cjs/render/webgl/VisibleTileFeatures.js +60 -3
  236. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  237. package/lib/cjs/tile/ClassifierTileTree.js +1 -1
  238. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  239. package/lib/cjs/tile/DynamicIModelTile.js +3 -3
  240. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  241. package/lib/cjs/tile/IModelTileTree.d.ts +1 -1
  242. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  243. package/lib/cjs/tile/IModelTileTree.js +12 -10
  244. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  245. package/lib/cjs/tile/ImdlDecoder.d.ts +1 -1
  246. package/lib/cjs/tile/ImdlDecoder.js +1 -1
  247. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  248. package/lib/cjs/tile/LRUTileList.d.ts +1 -1
  249. package/lib/cjs/tile/LRUTileList.d.ts.map +1 -1
  250. package/lib/cjs/tile/LRUTileList.js +1 -1
  251. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  252. package/lib/cjs/tile/OrbitGtTileTree.d.ts +1 -1
  253. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  254. package/lib/cjs/tile/OrbitGtTileTree.js +6 -6
  255. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  256. package/lib/cjs/tile/PrimaryTileTree.js +1 -1
  257. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  258. package/lib/cjs/tile/Tile.d.ts +2 -0
  259. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  260. package/lib/cjs/tile/Tile.js +6 -2
  261. package/lib/cjs/tile/Tile.js.map +1 -1
  262. package/lib/cjs/tile/TileAdmin.js +1 -1
  263. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  264. package/lib/cjs/tile/TileTree.d.ts +2 -0
  265. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  266. package/lib/cjs/tile/TileTree.js +5 -1
  267. package/lib/cjs/tile/TileTree.js.map +1 -1
  268. package/lib/cjs/tile/TileTreeOwner.d.ts +1 -1
  269. package/lib/cjs/tile/TileTreeOwner.d.ts.map +1 -1
  270. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  271. package/lib/cjs/tile/map/ImageryTileTree.d.ts +1 -1
  272. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  274. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  275. package/lib/cjs/tools/AccuDrawTool.d.ts +4 -2
  276. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  277. package/lib/cjs/tools/AccuDrawTool.js +34 -56
  278. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  279. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +154 -0
  280. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -0
  281. package/lib/cjs/tools/AccuDrawViewportUI.js +715 -0
  282. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -0
  283. package/lib/esm/AccuDraw.d.ts +21 -3
  284. package/lib/esm/AccuDraw.d.ts.map +1 -1
  285. package/lib/esm/AccuDraw.js +174 -56
  286. package/lib/esm/AccuDraw.js.map +1 -1
  287. package/lib/esm/BriefcaseConnection.js +1 -1
  288. package/lib/esm/BriefcaseConnection.js.map +1 -1
  289. package/lib/esm/BriefcaseTxns.d.ts +1 -1
  290. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  291. package/lib/esm/BriefcaseTxns.js +1 -1
  292. package/lib/esm/BriefcaseTxns.js.map +1 -1
  293. package/lib/esm/DrawingViewState.js +2 -2
  294. package/lib/esm/DrawingViewState.js.map +1 -1
  295. package/lib/esm/EnvironmentDecorations.d.ts +1 -1
  296. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  297. package/lib/esm/EnvironmentDecorations.js +1 -1
  298. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  299. package/lib/esm/GraphicalEditingScope.d.ts +3 -1
  300. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  301. package/lib/esm/GraphicalEditingScope.js +7 -3
  302. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  303. package/lib/esm/IModelApp.d.ts +0 -5
  304. package/lib/esm/IModelApp.d.ts.map +1 -1
  305. package/lib/esm/IModelApp.js +0 -5
  306. package/lib/esm/IModelApp.js.map +1 -1
  307. package/lib/esm/IModelConnection.js +1 -1
  308. package/lib/esm/IModelConnection.js.map +1 -1
  309. package/lib/esm/NoRenderApp.d.ts +1 -1
  310. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  311. package/lib/esm/NoRenderApp.js +1 -2
  312. package/lib/esm/NoRenderApp.js.map +1 -1
  313. package/lib/esm/SheetViewState.js +6 -6
  314. package/lib/esm/SheetViewState.js.map +1 -1
  315. package/lib/esm/SubCategoriesCache.d.ts +1 -1
  316. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  317. package/lib/esm/SubCategoriesCache.js +1 -1
  318. package/lib/esm/SubCategoriesCache.js.map +1 -1
  319. package/lib/esm/Tiles.d.ts +1 -1
  320. package/lib/esm/Tiles.d.ts.map +1 -1
  321. package/lib/esm/Tiles.js +6 -6
  322. package/lib/esm/Tiles.js.map +1 -1
  323. package/lib/esm/ViewManager.js +1 -1
  324. package/lib/esm/ViewManager.js.map +1 -1
  325. package/lib/esm/ViewState.js +1 -1
  326. package/lib/esm/ViewState.js.map +1 -1
  327. package/lib/esm/Viewport.d.ts +5 -3
  328. package/lib/esm/Viewport.d.ts.map +1 -1
  329. package/lib/esm/Viewport.js +8 -4
  330. package/lib/esm/Viewport.js.map +1 -1
  331. package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
  332. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  333. package/lib/esm/core-frontend.d.ts +1 -0
  334. package/lib/esm/core-frontend.d.ts.map +1 -1
  335. package/lib/esm/core-frontend.js +1 -0
  336. package/lib/esm/core-frontend.js.map +1 -1
  337. package/lib/esm/internal/render/RenderGeometry.d.ts +1 -2
  338. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -1
  339. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  340. package/lib/esm/render/Decorations.d.ts +3 -2
  341. package/lib/esm/render/Decorations.d.ts.map +1 -1
  342. package/lib/esm/render/Decorations.js +5 -1
  343. package/lib/esm/render/Decorations.js.map +1 -1
  344. package/lib/esm/render/GraphicBranch.d.ts +4 -2
  345. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  346. package/lib/esm/render/GraphicBranch.js +5 -1
  347. package/lib/esm/render/GraphicBranch.js.map +1 -1
  348. package/lib/esm/render/MockRender.d.ts +2 -2
  349. package/lib/esm/render/MockRender.d.ts.map +1 -1
  350. package/lib/esm/render/MockRender.js +3 -4
  351. package/lib/esm/render/MockRender.js.map +1 -1
  352. package/lib/esm/render/RenderGraphic.d.ts +3 -2
  353. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  354. package/lib/esm/render/RenderGraphic.js +4 -1
  355. package/lib/esm/render/RenderGraphic.js.map +1 -1
  356. package/lib/esm/render/RenderPlanarClassifier.d.ts +3 -3
  357. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  358. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  359. package/lib/esm/render/RenderSystem.d.ts +9 -8
  360. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  361. package/lib/esm/render/RenderSystem.js +3 -0
  362. package/lib/esm/render/RenderSystem.js.map +1 -1
  363. package/lib/esm/render/RenderTarget.d.ts +3 -3
  364. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  365. package/lib/esm/render/RenderTarget.js +1 -1
  366. package/lib/esm/render/RenderTarget.js.map +1 -1
  367. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  368. package/lib/esm/render/VisibleFeature.js +60 -3
  369. package/lib/esm/render/VisibleFeature.js.map +1 -1
  370. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts +2 -0
  371. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  372. package/lib/esm/render/webgl/AtmosphereUniforms.js +5 -1
  373. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  374. package/lib/esm/render/webgl/AttributeBuffers.d.ts +6 -2
  375. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  376. package/lib/esm/render/webgl/AttributeBuffers.js +12 -4
  377. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  378. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts +1 -1
  379. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  380. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  381. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  382. package/lib/esm/render/webgl/CachedGeometry.d.ts +8 -8
  383. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  384. package/lib/esm/render/webgl/CachedGeometry.js +8 -8
  385. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  386. package/lib/esm/render/webgl/ClippingProgram.d.ts +2 -0
  387. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  388. package/lib/esm/render/webgl/ClippingProgram.js +5 -1
  389. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  390. package/lib/esm/render/webgl/Contours.d.ts +1 -1
  391. package/lib/esm/render/webgl/Contours.d.ts.map +1 -1
  392. package/lib/esm/render/webgl/Contours.js +1 -1
  393. package/lib/esm/render/webgl/Contours.js.map +1 -1
  394. package/lib/esm/render/webgl/Disposable.d.ts +1 -2
  395. package/lib/esm/render/webgl/Disposable.d.ts.map +1 -1
  396. package/lib/esm/render/webgl/Disposable.js +4 -0
  397. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  398. package/lib/esm/render/webgl/EDL.d.ts +1 -1
  399. package/lib/esm/render/webgl/EDL.d.ts.map +1 -1
  400. package/lib/esm/render/webgl/EDL.js +3 -3
  401. package/lib/esm/render/webgl/EDL.js.map +1 -1
  402. package/lib/esm/render/webgl/EdgeGeometry.d.ts +3 -3
  403. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  404. package/lib/esm/render/webgl/EdgeGeometry.js +4 -4
  405. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  406. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -1
  407. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  408. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  409. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  410. package/lib/esm/render/webgl/FrameBuffer.d.ts +1 -1
  411. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  412. package/lib/esm/render/webgl/FrameBuffer.js +1 -1
  413. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  414. package/lib/esm/render/webgl/Graphic.d.ts +2 -2
  415. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  416. package/lib/esm/render/webgl/Graphic.js +11 -11
  417. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  418. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  419. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  420. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +2 -2
  421. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  422. package/lib/esm/render/webgl/InstancedGeometry.d.ts +4 -4
  423. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  424. package/lib/esm/render/webgl/InstancedGeometry.js +5 -6
  425. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  426. package/lib/esm/render/webgl/Layer.js +1 -1
  427. package/lib/esm/render/webgl/Layer.js.map +1 -1
  428. package/lib/esm/render/webgl/Mesh.d.ts +1 -1
  429. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  430. package/lib/esm/render/webgl/Mesh.js +1 -1
  431. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  432. package/lib/esm/render/webgl/MeshData.d.ts +1 -1
  433. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/MeshData.js +2 -2
  435. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  436. package/lib/esm/render/webgl/PlanarClassifier.d.ts +1 -1
  437. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  438. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  439. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  440. package/lib/esm/render/webgl/PointCloud.d.ts +1 -1
  441. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  442. package/lib/esm/render/webgl/PointCloud.js +1 -1
  443. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  444. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  445. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  446. package/lib/esm/render/webgl/PointString.js +1 -1
  447. package/lib/esm/render/webgl/PointString.js.map +1 -1
  448. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  449. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  450. package/lib/esm/render/webgl/Polyline.js +1 -1
  451. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  452. package/lib/esm/render/webgl/RealityMesh.d.ts +6 -10
  453. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/RealityMesh.js +6 -6
  455. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  456. package/lib/esm/render/webgl/RenderBuffer.d.ts +2 -2
  457. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RenderBuffer.js +2 -2
  459. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  460. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  461. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/SceneCompositor.js +6 -6
  463. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  464. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  465. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  466. package/lib/esm/render/webgl/ScreenSpaceEffect.js +2 -2
  467. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  468. package/lib/esm/render/webgl/ShaderProgram.d.ts +5 -1
  469. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  470. package/lib/esm/render/webgl/ShaderProgram.js +11 -3
  471. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  472. package/lib/esm/render/webgl/SolarShadowMap.d.ts +1 -1
  473. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  474. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  475. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  476. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  477. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  478. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  479. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  480. package/lib/esm/render/webgl/System.d.ts +1 -1
  481. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  482. package/lib/esm/render/webgl/System.js +1 -1
  483. package/lib/esm/render/webgl/System.js.map +1 -1
  484. package/lib/esm/render/webgl/Target.d.ts +2 -2
  485. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  486. package/lib/esm/render/webgl/Target.js +9 -10
  487. package/lib/esm/render/webgl/Target.js.map +1 -1
  488. package/lib/esm/render/webgl/TargetGraphics.d.ts +1 -1
  489. package/lib/esm/render/webgl/TargetGraphics.d.ts.map +1 -1
  490. package/lib/esm/render/webgl/TargetGraphics.js +1 -1
  491. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  492. package/lib/esm/render/webgl/Technique.d.ts +6 -0
  493. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  494. package/lib/esm/render/webgl/Technique.js +98 -16
  495. package/lib/esm/render/webgl/Technique.js.map +1 -1
  496. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  497. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  498. package/lib/esm/render/webgl/Texture.js +1 -1
  499. package/lib/esm/render/webgl/Texture.js.map +1 -1
  500. package/lib/esm/render/webgl/TextureDrape.d.ts +1 -1
  501. package/lib/esm/render/webgl/TextureDrape.d.ts.map +1 -1
  502. package/lib/esm/render/webgl/TextureDrape.js +1 -1
  503. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  504. package/lib/esm/render/webgl/ThematicSensors.d.ts +1 -1
  505. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  506. package/lib/esm/render/webgl/ThematicSensors.js +1 -1
  507. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  508. package/lib/esm/render/webgl/ThematicUniforms.d.ts +1 -1
  509. package/lib/esm/render/webgl/ThematicUniforms.d.ts.map +1 -1
  510. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  511. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  512. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  513. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  514. package/lib/esm/render/webgl/VertexLUT.js +2 -2
  515. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  516. package/lib/esm/render/webgl/VisibleTileFeatures.js +60 -3
  517. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  518. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  519. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  520. package/lib/esm/tile/DynamicIModelTile.js +3 -3
  521. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  522. package/lib/esm/tile/IModelTileTree.d.ts +1 -1
  523. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  524. package/lib/esm/tile/IModelTileTree.js +12 -10
  525. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  526. package/lib/esm/tile/ImdlDecoder.d.ts +1 -1
  527. package/lib/esm/tile/ImdlDecoder.js +1 -1
  528. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  529. package/lib/esm/tile/LRUTileList.d.ts +1 -1
  530. package/lib/esm/tile/LRUTileList.d.ts.map +1 -1
  531. package/lib/esm/tile/LRUTileList.js +1 -1
  532. package/lib/esm/tile/LRUTileList.js.map +1 -1
  533. package/lib/esm/tile/OrbitGtTileTree.d.ts +1 -1
  534. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  535. package/lib/esm/tile/OrbitGtTileTree.js +6 -6
  536. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  537. package/lib/esm/tile/PrimaryTileTree.js +1 -1
  538. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  539. package/lib/esm/tile/Tile.d.ts +2 -0
  540. package/lib/esm/tile/Tile.d.ts.map +1 -1
  541. package/lib/esm/tile/Tile.js +6 -2
  542. package/lib/esm/tile/Tile.js.map +1 -1
  543. package/lib/esm/tile/TileAdmin.js +1 -1
  544. package/lib/esm/tile/TileAdmin.js.map +1 -1
  545. package/lib/esm/tile/TileTree.d.ts +2 -0
  546. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  547. package/lib/esm/tile/TileTree.js +5 -1
  548. package/lib/esm/tile/TileTree.js.map +1 -1
  549. package/lib/esm/tile/TileTreeOwner.d.ts +1 -1
  550. package/lib/esm/tile/TileTreeOwner.d.ts.map +1 -1
  551. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  552. package/lib/esm/tile/map/ImageryTileTree.d.ts +1 -1
  553. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  554. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  555. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  556. package/lib/esm/tools/AccuDrawTool.d.ts +4 -2
  557. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  558. package/lib/esm/tools/AccuDrawTool.js +34 -56
  559. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  560. package/lib/esm/tools/AccuDrawViewportUI.d.ts +154 -0
  561. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -0
  562. package/lib/esm/tools/AccuDrawViewportUI.js +711 -0
  563. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -0
  564. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  565. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  566. package/package.json +16 -17
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,EAAiB,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAgB,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,oBAAoB,EAAmB,aAAa,EAAE,MAAM,WAAW,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,MAAM,UAAU,gBAAgB,CAAC,OAAsB,EAAE,OAAgB,EAAE,cAAuB;IAChG,IAAI,OAAO,CAAC,OAAO;QACjB,OAAO,KAAK,CAAC;IAEf,IAAI,OAAO,KAAK,OAAO,CAAC,oBAAoB;QAC1C,OAAO,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/H,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACjI,CAAC;AAKD,MAAM,oBAAoB,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;AAE7D,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAkB3B,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,IAAW,6BAA6B,KAAK,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC1F,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpD,iBAAiB;IACjB,IAAW,OAAO,KAA6B,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7E,IAAW,UAAU,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAW,SAAS,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,2BAA2B;QACjC,IAAI,CAAC,sBAAsB,6BAAqB,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;YAC/B,OAAO;QAET,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,4BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,iCAAyB,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,KAAK,iCAAwB,CAAC;YACvC,IAAI,CAAC,sBAAsB,sCAA8B,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,OAAO;QAET,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,KAAK,6BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,gCAAwB,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,gCAAsB,CAAC;YACrC,IAAI,CAAC,sBAAsB,oCAA4B,CAAC;IAC5D,CAAC;IAEM,mBAAmB;QACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,IAAgC,EAAE,YAA4B,EAAE,MAAe,EAAE,OAAyB;QACrJ,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAE5B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,OAAO,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjG,CAAC;IAEO,OAAO,CAAC,GAAuB,EAAE,GAAoB,EAAE,YAAwC,EAAE,OAAyB,EAAE,OAAiB,EAAE,IAAiC;QACtL,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAU,CAAC,CAAC;QAEzD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEO,eAAe,CAAC,YAAoB,EAAE,yBAA2C,EAAE,IAA0B,EAAE,qBAA6B,EAAE,QAAkB;QACtK,gFAAgF;QAChF,IAAI,KAAK,GAAG,GAAG,GAAG,YAAY,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,eAAe;YAChD,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAC/B,QAAQ,mDAAwC,CAAC;gBACjD,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,IAA0B,EAAE,GAAuB,EAAE,GAA+B,EAAE,WAAuC,EAAE,cAA2C,EAAE,OAAgB;QACnN,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAExD,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAExG,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,6DAA6D;QAC7D,OAAO;QACP,+CAA+C;QAC/C,qBAAqB;QACrB,2GAA2G;QAC3G,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QACjB,OAAO;QACP,sBAAsB;QACtB,sBAAsB;QACtB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/F,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,cAAc,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CACxD,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,EAChD,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EACxD,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAC5C,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAErC,oDAAoD;YACpD,uEAAuE;YACvE,gJAAgJ;YAChJ,0EAA0E;YAC1E,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,oHAAoH;gBACpH,IAAI,CAAC,kBAAkB,CAAC,SAAS,iCAAsB,CAAC;gBACxD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,gCAAuB,CAAC,sBAAc,CAAC;YACrE,IAAI,WAAW,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;gBACtE,KAAK,8BAAoB,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACpC,KAAK,iCAAuB,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChC,KAAK,wBAAgB,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,SAAS,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnC,KAAK,0BAAkB,CAAC;gBACxB,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5G,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,4BAAoB,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,KAAK,8BAAsB,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACvG,CAAC;YAED,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtC,KAAK,6BAAmB,CAAC;gBACzB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC9C,KAAK,8BAAqB,CAAC;gBAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,GAAG,CAAC,eAAe;gBACrB,KAAK,sCAA2B,CAAC;YAEnC,IAAI,UAAU,IAAI,SAAS,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK;gBACpJ,KAAK,6BAAoB,CAAC;YAE5B,IAAI,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,KAAK,2CAAgC,CAAC;gBACtC,EAAE,OAAO,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,0BAAkB,KAAK;gBACzB,WAAW,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IACtE,uBAAuB,CAAC,IAA0B,EAAE,GAAuB,EAAE,YAAwC,EAAE,OAAyB,EAAE,OAAiB;QACzK,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,cAAc,KAAK,OAAO,CAAC,oBAAoB,CAAC;QAElE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,oGAAoG;gBACpG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,SAAS;gBACZ,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE1D,IAAI,CAAC,SAAS;gBACZ,IAAI,cAAc,IAAI,CAAC,SAAS;oBAC9B,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAErE,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,IAAI,UAAU;gBACvB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YAErG,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,6BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,2BAAiB,CAAC,CAAC;YACtF,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YAC9I,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,0BAAkB,CAAC,QAAQ,gCAAsB,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEO,aAAa,CAAC,IAA0B,EAAE,GAAuB,EAAE,YAAwC,EAAE,OAAyB;QAC5I,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY;YACjD,OAAO;QAET,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,2EAA2E;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,UAAuC,CAAC;YAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtC,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7C,SAAS,GAAG,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YACvF,CAAC;YAED,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC;gBAED,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YACvI,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ;gBAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,YAAoB,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAlU/F,iBAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,wBAAmB,GAAiB,EAAE,CAAC;QACvC,gCAA2B,GAAiB,EAAE,CAAC;QAC/C,mBAAc,GAAG,IAAI,CAAC;QACtB,eAAU,GAAG,IAAI,CAAC;QAClB,oBAAe,GAAG,IAAI,CAAC;QACvB,mCAA8B,GAAG,IAAI,CAAC;QACtC,eAAU,GAAG,IAAI,CAAC;QAClB,gBAAW,GAAG,IAAI,CAAC;QACnB,eAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,2BAAsB,8BAAqC;QAyTjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAChH,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,OAAO;QACZ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,GAAuB;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,IAAI,GAA+B,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QACtF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,QAA4B;QACxC,IAAI,IAAI,GAA2C,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAChG,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,6BAA6B,CAAC;QAChE,IAAI,WAAW;YACb,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;;YAE1C,IAAI,GAAG,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpF,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE1G,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;YAC3F,6EAA6E;YAC7E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CACV,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,SAAS,KAAK,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAClF,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,SAAS,KAAK,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAC/D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,OAAsB;QACzC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;IAEM,yBAAyB,CAAC,OAAsB;QACrD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../FeatureSymbology\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\nimport { sync, SyncObserver } from \"./Sync\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\nimport { computeDimensions } from \"../../common/internal/render/VertexTable\";\n\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\n if (hilites.isEmpty)\n return false;\n\n if (\"union\" === hilites.modelSubCategoryMode)\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\n\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\n}\n\n/** @internal */\nexport type FeatureOverridesCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class FeatureOverrides implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _lut?: Texture2DHandle;\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\n private _lastFlashId = Id64.invalid;\n private _hiliteSyncObserver: SyncObserver = {};\n private _pickExclusionsSyncObserver: SyncObserver = {};\n private _anyOverridden = true;\n private _allHidden = true;\n private _anyTranslucent = true;\n private _anyViewIndependentTranslucent = true;\n private _anyOpaque = true;\n private _anyHilited = true;\n private _lutParams = new Float32Array(2);\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\n private _cleanup?: FeatureOverridesCleanup;\n\n public get anyOverridden() { return this._anyOverridden; }\n public get allHidden() { return this._allHidden; }\n public get anyTranslucent() { return this._anyTranslucent; }\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\n public get anyOpaque() { return this._anyOpaque; }\n public get anyHilited() { return this._anyHilited; }\n\n /** For tests. */\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\n\n private updateUniformSymbologyFlags(): void {\n this._uniformSymbologyFlags = EmphasisFlags.None;\n if (!this.isUniform || !this._lut)\n return;\n\n let flags = this._lut.dataBytes![0];\n if (0 !== (flags & OvrFlags.Flashed))\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\n\n if (0 !== (flags & OvrFlags.NonLocatable))\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\n\n if (!this._anyHilited)\n return;\n\n flags = this._lut.dataBytes![1] << 8;\n if (0 !== (flags & OvrFlags.Hilited))\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\n\n if (0 !== (flags & OvrFlags.Emphasized))\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\n }\n\n public getUniformOverrides(): Uint8Array {\n assert(this.isUniform);\n assert(undefined !== this._lut);\n assert(undefined !== this._lut.dataBytes);\n return this._lut.dataBytes;\n }\n\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\n const nFeatures = map.numFeatures;\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height >= nFeatures);\n\n this._lutParams[0] = width;\n this._lutParams[1] = height;\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\n\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\n\n if (undefined === ovrs) {\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\n } else {\n assert(undefined !== hilites);\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\n }\n\n lut.update(updater);\n }\n\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\n let alpha = 1.0 - transparency;\n alpha = Math.floor(0xff * alpha + 0.5);\n if ((0xff - alpha) < DisplayParams.minTransparency)\n alpha = 0xff;\n\n data.setByteAtIndex(transparencyByteIndex, alpha);\n if (0xff === alpha) {\n this._anyOpaque = true;\n } else {\n this._anyTranslucent = true;\n if (!viewDependentTransparency) {\n curFlags |= OvrFlags.ViewIndependentTransparency;\n this._anyViewIndependentTranslucent = true;\n }\n }\n\n return curFlags;\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\n const allowHilite = true !== this._options.noHilite;\n const allowFlash = true !== this._options.noFlash;\n const allowEmphasis = true !== this._options.noEmphasis;\n\n let isModelHilited = false;\n const prevModelId = { lower: -1, upper: -1 };\n\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\n\n let nHidden = 0;\n let nOverridden = 0;\n\n // NB: We currently use 3 RGBA values per feature as follows:\n // [0]\n // RG = override flags (see OvrFlags enum)\n // B = line code\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\n // [1]\n // RGB = rgb\n // A = alpha\n // [2]\n // RGB = line rgb\n // A = line alpha\n for (const feature of map.iterable(scratchPackedFeature)) {\n const i = feature.index;\n const dataIndex = i * 4 * 3;\n\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\n prevModelId.lower = feature.modelId.lower;\n prevModelId.upper = feature.modelId.upper;\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\n }\n\n const app = this.target.currentBranch.getFeatureAppearance(\n ovr,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n map.type, feature.animationNodeId);\n\n // NB: If the appearance is fully transparent, then:\n // - For normal (\"primary\") models, getAppearance() returns undefined.\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\n // (The latter is how we clip the classified model using the classifiers).\n if (undefined === app) {\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\n nHidden++;\n nOverridden++;\n continue;\n }\n\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\n flags |= OvrFlags.Hilited;\n this._anyHilited = true;\n }\n\n if (allowEmphasis && app.emphasized) {\n flags |= OvrFlags.Emphasized;\n this._anyHilited = true;\n }\n\n if (app.overridesRgb && app.rgb) {\n flags |= OvrFlags.Rgb;\n const rgb = app.rgb;\n data.setByteAtIndex(dataIndex + 4, rgb.r);\n data.setByteAtIndex(dataIndex + 5, rgb.g);\n data.setByteAtIndex(dataIndex + 6, rgb.b);\n }\n\n if (undefined !== app.transparency) {\n flags |= OvrFlags.Alpha;\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\n }\n\n const lineRgb = app.getLineRgb();\n if (lineRgb) {\n flags |= OvrFlags.LineRgb;\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\n }\n\n const lineTransp = app.getLineTransparency();\n if (undefined !== lineTransp) {\n flags |= OvrFlags.LineAlpha;\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\n }\n\n if (app.overridesWeight && app.weight) {\n flags |= OvrFlags.Weight;\n let weight = app.weight;\n weight = Math.min(31, weight);\n weight = Math.max(1, weight);\n data.setByteAtIndex(dataIndex + 3, weight);\n }\n\n if (app.overridesLinePixels && app.linePixels) {\n flags |= OvrFlags.LineCode;\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\n data.setByteAtIndex(dataIndex + 2, lineCode);\n }\n\n if (app.ignoresMaterial)\n flags |= OvrFlags.IgnoreMaterial;\n\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\n flags |= OvrFlags.Flashed;\n\n if (pickExclude?.hasPair(feature.elementId)) {\n flags |= OvrFlags.InvisibleDuringPick;\n ++nHidden;\n }\n\n data.setOvrFlagsAtIndex(dataIndex, flags);\n if (OvrFlags.None !== flags)\n nOverridden++;\n }\n\n this._allHidden = (nHidden === map.numFeatures);\n this._anyOverridden = (nOverridden > 0);\n\n this.updateUniformSymbologyFlags();\n }\n\n // NB: If hilites is undefined, it means that the hilited set has not changed.\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\n if (!hilites || true === this._options.noHilite) {\n this.updateFlashed(data, map, pickExcludes, flashed);\n return;\n }\n\n const allowFlash = true !== this._options.noFlash;\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\n\n this._anyOverridden = this._anyHilited = false;\n for (const feature of map.iterable(scratchPackedFeature)) {\n const dataIndex = feature.index * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\n this._anyOverridden = true;\n continue;\n }\n\n const isModelHilited = hilites.models.hasPair(feature.modelId);\n let isHilited = isModelHilited && !intersect;\n if (!isHilited)\n isHilited = hilites.elements.hasPair(feature.elementId);\n\n if (!isHilited)\n if (isModelHilited || !intersect)\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\n\n let isFlashed = false;\n if (flashed && allowFlash)\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\n if (pickExcludes) {\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags) {\n this._anyOverridden = true;\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\n }\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\n if (true === this._options.noFlash && !pickExcludes)\n return;\n\n this._anyOverridden = false;\n const elemId = { lower: 0, upper: 0 };\n for (let i = 0; i < map.numFeatures; i++) {\n const dataIndex = i * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter and we can't flash it.\n this._anyOverridden = true;\n continue;\n }\n\n let isFlashed = false;\n let thisElemId: Id64.Uint32Pair | undefined;\n if (flashed && !this._options.noFlash) {\n thisElemId = map.getElementIdPair(i, elemId);\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\n }\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n if (pickExcludes) {\n if (!thisElemId) {\n thisElemId = map.getElementIdPair(i, elemId);\n }\n\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags)\n this._anyOverridden = true;\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n this.target = target;\n this._options = options;\n this._cleanup = cleanup;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n return new FeatureOverrides(target, options, cleanup);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public dispose() {\n this._lut = dispose(this._lut);\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n }\n }\n\n public initFromMap(map: RenderFeatureTable) {\n const nFeatures = map.numFeatures;\n assert(0 < nFeatures);\n\n this._lut = dispose(this._lut);\n\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\n this._mostRecentSymbologyOverrides = ovrs;\n const hilite = this.target.hilites;\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\n this._lastFlashId = Id64.invalid;\n this._hiliteSyncObserver = {};\n this._pickExclusionsSyncObserver = {};\n }\n\n public update(features: RenderFeatureTable) {\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\n if (ovrsUpdated)\n this._mostRecentSymbologyOverrides = ovrs;\n else\n ovrs = undefined;\n\n const flashedId = this.target.flashedId;\n\n const hilite = this.target.hilites;\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\n\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(\n features,\n this._lut,\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\n this.target.flashed,\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\n );\n }\n\n this._lastFlashId = flashedId;\n }\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n uniform.setUniform2fv(this._lutParams);\n }\n\n public bindLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n uniform.setUniform1f(this._uniformSymbologyFlags);\n }\n}\n"]}
1
+ {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64 } from \"@itwin/core-bentley\";\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../FeatureSymbology\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { LineCode } from \"./LineCode\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\nimport { sync, SyncObserver } from \"./Sync\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\nimport { computeDimensions } from \"../../common/internal/render/VertexTable\";\n\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\n if (hilites.isEmpty)\n return false;\n\n if (\"union\" === hilites.modelSubCategoryMode)\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\n\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\n}\n\n/** @internal */\nexport type FeatureOverridesCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class FeatureOverrides implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _lut?: Texture2DHandle;\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\n private _lastFlashId = Id64.invalid;\n private _hiliteSyncObserver: SyncObserver = {};\n private _pickExclusionsSyncObserver: SyncObserver = {};\n private _anyOverridden = true;\n private _allHidden = true;\n private _anyTranslucent = true;\n private _anyViewIndependentTranslucent = true;\n private _anyOpaque = true;\n private _anyHilited = true;\n private _lutParams = new Float32Array(2);\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\n private _cleanup?: FeatureOverridesCleanup;\n\n public get anyOverridden() { return this._anyOverridden; }\n public get allHidden() { return this._allHidden; }\n public get anyTranslucent() { return this._anyTranslucent; }\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\n public get anyOpaque() { return this._anyOpaque; }\n public get anyHilited() { return this._anyHilited; }\n\n /** For tests. */\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\n\n private updateUniformSymbologyFlags(): void {\n this._uniformSymbologyFlags = EmphasisFlags.None;\n if (!this.isUniform || !this._lut)\n return;\n\n let flags = this._lut.dataBytes![0];\n if (0 !== (flags & OvrFlags.Flashed))\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\n\n if (0 !== (flags & OvrFlags.NonLocatable))\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\n\n if (!this._anyHilited)\n return;\n\n flags = this._lut.dataBytes![1] << 8;\n if (0 !== (flags & OvrFlags.Hilited))\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\n\n if (0 !== (flags & OvrFlags.Emphasized))\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\n }\n\n public getUniformOverrides(): Uint8Array {\n assert(this.isUniform);\n assert(undefined !== this._lut);\n assert(undefined !== this._lut.dataBytes);\n return this._lut.dataBytes;\n }\n\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\n const nFeatures = map.numFeatures;\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height >= nFeatures);\n\n this._lutParams[0] = width;\n this._lutParams[1] = height;\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\n\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\n\n if (undefined === ovrs) {\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\n } else {\n assert(undefined !== hilites);\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\n }\n\n lut.update(updater);\n }\n\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\n let alpha = 1.0 - transparency;\n alpha = Math.floor(0xff * alpha + 0.5);\n if ((0xff - alpha) < DisplayParams.minTransparency)\n alpha = 0xff;\n\n data.setByteAtIndex(transparencyByteIndex, alpha);\n if (0xff === alpha) {\n this._anyOpaque = true;\n } else {\n this._anyTranslucent = true;\n if (!viewDependentTransparency) {\n curFlags |= OvrFlags.ViewIndependentTransparency;\n this._anyViewIndependentTranslucent = true;\n }\n }\n\n return curFlags;\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\n const allowHilite = true !== this._options.noHilite;\n const allowFlash = true !== this._options.noFlash;\n const allowEmphasis = true !== this._options.noEmphasis;\n\n let isModelHilited = false;\n const prevModelId = { lower: -1, upper: -1 };\n\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\n\n let nHidden = 0;\n let nOverridden = 0;\n\n // NB: We currently use 3 RGBA values per feature as follows:\n // [0]\n // RG = override flags (see OvrFlags enum)\n // B = line code\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\n // [1]\n // RGB = rgb\n // A = alpha\n // [2]\n // RGB = line rgb\n // A = line alpha\n for (const feature of map.iterable(scratchPackedFeature)) {\n const i = feature.index;\n const dataIndex = i * 4 * 3;\n\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\n prevModelId.lower = feature.modelId.lower;\n prevModelId.upper = feature.modelId.upper;\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\n }\n\n const app = this.target.currentBranch.getFeatureAppearance(\n ovr,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n map.type, feature.animationNodeId);\n\n // NB: If the appearance is fully transparent, then:\n // - For normal (\"primary\") models, getAppearance() returns undefined.\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\n // (The latter is how we clip the classified model using the classifiers).\n if (undefined === app) {\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\n nHidden++;\n nOverridden++;\n continue;\n }\n\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\n flags |= OvrFlags.Hilited;\n this._anyHilited = true;\n }\n\n if (allowEmphasis && app.emphasized) {\n flags |= OvrFlags.Emphasized;\n this._anyHilited = true;\n }\n\n if (app.overridesRgb && app.rgb) {\n flags |= OvrFlags.Rgb;\n const rgb = app.rgb;\n data.setByteAtIndex(dataIndex + 4, rgb.r);\n data.setByteAtIndex(dataIndex + 5, rgb.g);\n data.setByteAtIndex(dataIndex + 6, rgb.b);\n }\n\n if (undefined !== app.transparency) {\n flags |= OvrFlags.Alpha;\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\n }\n\n const lineRgb = app.getLineRgb();\n if (lineRgb) {\n flags |= OvrFlags.LineRgb;\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\n }\n\n const lineTransp = app.getLineTransparency();\n if (undefined !== lineTransp) {\n flags |= OvrFlags.LineAlpha;\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\n }\n\n if (app.overridesWeight && app.weight) {\n flags |= OvrFlags.Weight;\n let weight = app.weight;\n weight = Math.min(31, weight);\n weight = Math.max(1, weight);\n data.setByteAtIndex(dataIndex + 3, weight);\n }\n\n if (app.overridesLinePixels && app.linePixels) {\n flags |= OvrFlags.LineCode;\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\n data.setByteAtIndex(dataIndex + 2, lineCode);\n }\n\n if (app.ignoresMaterial)\n flags |= OvrFlags.IgnoreMaterial;\n\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\n flags |= OvrFlags.Flashed;\n\n if (pickExclude?.hasPair(feature.elementId)) {\n flags |= OvrFlags.InvisibleDuringPick;\n ++nHidden;\n }\n\n data.setOvrFlagsAtIndex(dataIndex, flags);\n if (OvrFlags.None !== flags)\n nOverridden++;\n }\n\n this._allHidden = (nHidden === map.numFeatures);\n this._anyOverridden = (nOverridden > 0);\n\n this.updateUniformSymbologyFlags();\n }\n\n // NB: If hilites is undefined, it means that the hilited set has not changed.\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\n if (!hilites || true === this._options.noHilite) {\n this.updateFlashed(data, map, pickExcludes, flashed);\n return;\n }\n\n const allowFlash = true !== this._options.noFlash;\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\n\n this._anyOverridden = this._anyHilited = false;\n for (const feature of map.iterable(scratchPackedFeature)) {\n const dataIndex = feature.index * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\n this._anyOverridden = true;\n continue;\n }\n\n const isModelHilited = hilites.models.hasPair(feature.modelId);\n let isHilited = isModelHilited && !intersect;\n if (!isHilited)\n isHilited = hilites.elements.hasPair(feature.elementId);\n\n if (!isHilited)\n if (isModelHilited || !intersect)\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\n\n let isFlashed = false;\n if (flashed && allowFlash)\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\n if (pickExcludes) {\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags) {\n this._anyOverridden = true;\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\n }\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\n if (true === this._options.noFlash && !pickExcludes)\n return;\n\n this._anyOverridden = false;\n const elemId = { lower: 0, upper: 0 };\n for (let i = 0; i < map.numFeatures; i++) {\n const dataIndex = i * 4 * 3;\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\n // If it's invisible, none of the other flags matter and we can't flash it.\n this._anyOverridden = true;\n continue;\n }\n\n let isFlashed = false;\n let thisElemId: Id64.Uint32Pair | undefined;\n if (flashed && !this._options.noFlash) {\n thisElemId = map.getElementIdPair(i, elemId);\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\n }\n\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\n if (pickExcludes) {\n if (!thisElemId) {\n thisElemId = map.getElementIdPair(i, elemId);\n }\n\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\n }\n\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\n if (OvrFlags.None !== newFlags)\n this._anyOverridden = true;\n }\n\n this.updateUniformSymbologyFlags();\n }\n\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n this.target = target;\n this._options = options;\n this._cleanup = cleanup;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\n return new FeatureOverrides(target, options, cleanup);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n }\n }\n\n public initFromMap(map: RenderFeatureTable) {\n const nFeatures = map.numFeatures;\n assert(0 < nFeatures);\n\n this._lut = dispose(this._lut);\n\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\n this._mostRecentSymbologyOverrides = ovrs;\n const hilite = this.target.hilites;\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\n this._lastFlashId = Id64.invalid;\n this._hiliteSyncObserver = {};\n this._pickExclusionsSyncObserver = {};\n }\n\n public update(features: RenderFeatureTable) {\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\n if (ovrsUpdated)\n this._mostRecentSymbologyOverrides = ovrs;\n else\n ovrs = undefined;\n\n const flashedId = this.target.flashedId;\n\n const hilite = this.target.hilites;\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\n\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(\n features,\n this._lut,\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\n this.target.flashed,\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\n );\n }\n\n this._lastFlashId = flashedId;\n }\n }\n\n public bindLUTParams(uniform: UniformHandle): void {\n uniform.setUniform2fv(this._lutParams);\n }\n\n public bindLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\n }\n\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\n uniform.setUniform1f(this._uniformSymbologyFlags);\n }\n}\n"]}
@@ -39,7 +39,7 @@ export declare class FrameBuffer implements WebGLDisposable {
39
39
  };
40
40
  private constructor();
41
41
  static create(colorTextures: TextureHandle[], depthBuffer?: DepthBuffer, colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer): FrameBuffer | undefined;
42
- dispose(): void;
42
+ [Symbol.dispose](): void;
43
43
  bind(bindAttachments?: boolean, bindMS?: boolean): boolean;
44
44
  unbind(): void;
45
45
  suspend(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"FrameBuffer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FrameBuffer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ export class FrameBuffer {
104
104
  }
105
105
  return new FrameBuffer(fbo, colorTextures, depthBuffer, colorMsBuffers, msFilters, depthBufferMs);
106
106
  }
107
- dispose() {
107
+ [Symbol.dispose]() {
108
108
  // NB: The FrameBuffer does not *own* the textures and depth buffer.
109
109
  if (!this.isDisposed) {
110
110
  System.instance.context.deleteFramebuffer(this._fbo);
@@ -1 +1 @@
1
- {"version":3,"file":"FrameBuffer.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { RenderBuffer, RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { System } from \"./System\";\nimport { TextureHandle } from \"./Texture\";\n\n/** @internal */\nexport type DepthBuffer = RenderBuffer | RenderBufferMultiSample | TextureHandle;\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport const enum FrameBufferBindState {\n Unbound,\n Bound,\n BoundWithAttachments,\n BoundMultisampled,\n BoundWithAttachmentsMultisampled,\n Suspended,\n}\n\n/** @internal */\nexport class FrameBuffer implements WebGLDisposable {\n private _fbo?: WebGLFramebuffer;\n private _fboMs?: WebGLFramebuffer;\n private _bindState: FrameBufferBindState = FrameBufferBindState.Unbound;\n private readonly _colorTextures: TextureHandle[] = [];\n private readonly _colorMsBuffers: RenderBufferMultiSample[] = [];\n private readonly _colorAttachments: GLenum[] = [];\n private readonly _colorMsFilters: GL.MultiSampling.Filter[] = [];\n public readonly depthBuffer?: DepthBuffer;\n public readonly depthBufferMs?: DepthBuffer;\n\n public get isDisposed(): boolean { return this._fbo === undefined; }\n\n public get isBound(): boolean { return FrameBufferBindState.Bound <= this._bindState && FrameBufferBindState.BoundWithAttachmentsMultisampled >= this._bindState; }\n\n public get isBoundMultisampled(): boolean { return FrameBufferBindState.BoundMultisampled === this._bindState || FrameBufferBindState.BoundWithAttachmentsMultisampled === this._bindState; }\n\n public get isSuspended(): boolean { return FrameBufferBindState.Suspended === this._bindState; }\n\n public get isMultisampled(): boolean { return this._colorMsBuffers.length > 0 || undefined !== this.depthBufferMs; }\n\n public getColor(ndx: number): TextureHandle {\n assert(ndx < this._colorTextures.length);\n if (ndx < this._colorMsBuffers.length && this._colorMsBuffers[ndx].isDirty) {\n this.blitMsBuffersToTextures(false, ndx);\n }\n return this._colorTextures[ndx];\n }\n\n public getColorTargets(useMSBuffers: boolean, ndx: number): { tex: TextureHandle, msBuf: RenderBufferMultiSample | undefined } {\n let msBuf;\n if (useMSBuffers) {\n assert (ndx < this._colorMsBuffers.length);\n msBuf = this._colorMsBuffers[ndx];\n }\n assert(ndx < this._colorTextures.length);\n return { tex: this._colorTextures[ndx], msBuf };\n }\n\n private constructor(fbo: WebGLFramebuffer, colorTextures: TextureHandle[], depthBuffer?: DepthBuffer,\n colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer) {\n this._fbo = fbo;\n const gl = System.instance.context;\n\n this.bind(false);\n\n let i: number = 0;\n for (const colTex of colorTextures) {\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\n this._colorAttachments.push(attachmentEnum);\n this._colorTextures.push(colTex);\n const texHandle = colTex.getHandle();\n if (undefined !== texHandle)\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentEnum, gl.TEXTURE_2D, texHandle, 0);\n i++;\n }\n\n if (depthBuffer !== undefined) {\n this.depthBuffer = depthBuffer;\n const dbHandle = depthBuffer.getHandle();\n if (undefined !== dbHandle) {\n if (depthBuffer instanceof RenderBuffer) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\n } else if (depthBuffer instanceof RenderBufferMultiSample) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\n } else {\n // Looks like we only get a 24 bit depth buffer anyway, so use a 24-8 with a stencil.\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\n }\n }\n }\n\n this.unbind();\n\n if (undefined !== colorMsBuffers && colorMsBuffers.length === colorTextures.length && undefined !== msFilters && msFilters.length === colorMsBuffers.length) {\n // Create a matching FBO with multisampling render buffers.\n const fbo2 = System.instance.context.createFramebuffer();\n if (null !== fbo2) {\n this._fboMs = fbo2;\n this.bind(false, true);\n i = 0;\n for (const colMsBuff of colorMsBuffers) {\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\n this._colorMsBuffers.push(colMsBuff);\n this._colorMsFilters.push(msFilters[i]);\n const msBuffHandle = colMsBuff.getHandle();\n if (undefined !== msBuffHandle)\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentEnum, gl.RENDERBUFFER, msBuffHandle);\n i++;\n }\n\n if (depthBufferMs !== undefined) {\n this.depthBufferMs = depthBufferMs;\n const dbHandleMs = depthBufferMs.getHandle();\n if (undefined !== dbHandleMs) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandleMs);\n }\n }\n this.unbind();\n }\n }\n }\n\n public static create(colorTextures: TextureHandle[], depthBuffer?: DepthBuffer, colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer): FrameBuffer | undefined {\n const fbo: WebGLFramebuffer | null = System.instance.context.createFramebuffer();\n if (null === fbo) {\n return undefined;\n }\n return new FrameBuffer(fbo, colorTextures, depthBuffer, colorMsBuffers, msFilters, depthBufferMs);\n }\n\n public dispose(): void {\n // NB: The FrameBuffer does not *own* the textures and depth buffer.\n if (!this.isDisposed) {\n System.instance.context.deleteFramebuffer(this._fbo!);\n this._fbo = undefined;\n if (undefined !== this._fboMs) {\n System.instance.context.deleteFramebuffer(this._fboMs);\n this._fboMs = undefined;\n }\n }\n }\n\n public bind(bindAttachments: boolean = false, bindMS: boolean = false): boolean {\n assert(undefined !== this._fbo);\n assert(!this.isBound);\n\n if (undefined === this._fbo)\n return false;\n\n const gl = System.instance.context;\n\n if (bindMS && undefined !== this._fboMs) {\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fboMs);\n this._bindState = FrameBufferBindState.BoundMultisampled;\n } else {\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fbo);\n this._bindState = FrameBufferBindState.Bound;\n }\n\n if (bindAttachments) {\n System.instance.setDrawBuffers(this._colorAttachments);\n this._bindState++;\n }\n return true;\n }\n\n public unbind() {\n assert(this.isBound);\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n this._bindState = FrameBufferBindState.Unbound;\n }\n\n public suspend() {\n assert(this.isBound);\n this._bindState = FrameBufferBindState.Suspended;\n }\n\n public markTargetsDirty(): void {\n for (const msBuff of this._colorMsBuffers) {\n msBuff.markBufferDirty(true);\n }\n if (undefined !== this.depthBufferMs)\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(true);\n }\n\n /** blitDepth is true to blit the depth/stencil buffer. ndx is index of single attachment to blit.\n * All color attachments are blitted if ndx is undefined, none are blitted if ndx is -1.\n */\n public blitMsBuffersToTextures(blitDepth: boolean, ndx?: number) {\n if (!this._fboMs)\n return;\n System.instance.frameBufferStack.suspend();\n const gl2 = System.instance.context;\n const attachments = [];\n const max = (undefined === ndx ? this._colorMsBuffers.length : ndx + 1);\n for (let i = 0; i < max; ++i) {\n if (undefined !== ndx && i < ndx) {\n attachments.push(gl2.NONE); // skip this one, but first add a NONE for it in the attachment list\n continue;\n }\n if (this._colorMsBuffers[i].isDirty) {\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\n gl2.readBuffer(this._colorAttachments[i]);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\n attachments.push(this._colorAttachments[i]);\n gl2.drawBuffers(attachments);\n attachments.pop();\n attachments.push(gl2.NONE);\n gl2.blitFramebuffer(0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\n 0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\n GL.BufferBit.Color, this._colorMsFilters[i]);\n this._colorMsBuffers[i].markBufferDirty(false);\n if (undefined !== ndx && i === ndx)\n break;\n }\n }\n if (blitDepth && undefined !== this.depthBuffer && undefined !== this.depthBufferMs && (this.depthBufferMs as RenderBufferMultiSample).isDirty) {\n const mask = GL.BufferBit.Depth; // (this.depthBuffer instanceof RenderBuffer ? GL.BufferBit.Depth : GL.BufferBit.Depth | GL.BufferBit.Stencil);\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\n gl2.blitFramebuffer(0, 0, this.depthBuffer.width, this.depthBuffer.height,\n 0, 0, this.depthBuffer.width, this.depthBuffer.height,\n mask, GL.MultiSampling.Filter.Nearest);\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(false);\n }\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, null);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, null);\n System.instance.frameBufferStack.resume();\n }\n\n /** invDepth is true to invalidate depth buffer. invStencil is true to invalidate stencil buffer. ndx is index of single color attachment to invalidate.\n * All color attachments are invalidated if ndx is undefined, none are invalidated if ndx is -1.\n * Set withMultiSampling to true to invalidate the MS buffers.\n */\n public invalidate(invDepth: boolean, invStencil: boolean, withMultiSampling: boolean, indices?: number[]): void {\n const gl = System.instance.context;\n const attachments: number[] = invDepth ? (invStencil ? [gl.DEPTH_STENCIL_ATTACHMENT] : [System.instance.context.DEPTH_ATTACHMENT]) : (invDepth ? [gl.STENCIL_ATTACHMENT] : []);\n if (undefined !== indices) {\n if (indices.length > 0) {\n for (const i of indices)\n attachments.push(gl.COLOR_ATTACHMENT0 + i);\n }\n } else {\n attachments.concat(this._colorAttachments);\n }\n System.instance.frameBufferStack.execute(this, true, withMultiSampling, () => {\n System.instance.invalidateFrameBuffer(attachments);\n });\n }\n\n // Chiefly for debugging currently - assumes RGBA, unsigned byte, want all pixels.\n public get debugPixels(): Uint8Array | undefined {\n if (!this.isBound || 0 === this._colorTextures.length || !(this._colorTextures[0] instanceof TextureHandle))\n return undefined;\n\n const tex = this._colorTextures[0];\n if (GL.Texture.Format.Rgba !== tex.format || GL.Texture.DataType.UnsignedByte !== tex.dataType)\n return undefined;\n\n const buffer = new Uint8Array(tex.width * tex.height * 4);\n for (let i = 0; i < buffer.length; i += 4) {\n buffer[i] = 0xba;\n buffer[i + 1] = 0xad;\n buffer[i + 2] = 0xf0;\n buffer[i + 3] = 0x0d;\n }\n\n System.instance.context.readPixels(0, 0, tex.width, tex.height, tex.format, tex.dataType, buffer);\n return buffer;\n }\n}\n\ninterface Binding {\n fbo: FrameBuffer;\n withAttachments: boolean;\n withMultSampling: boolean;\n}\n\n/** @internal */\nexport class FrameBufferStack {\n // FrameBuffers within this array are not owned, as this is only a storage device holding references\n private readonly _stack: Binding[] = [];\n\n private get _top() { return !this.isEmpty ? this._stack[this._stack.length - 1] : undefined; }\n\n public push(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean): void {\n if (undefined !== this._top) {\n this._top.fbo.suspend();\n }\n\n assert(!fbo.isBound);\n fbo.bind(withAttachments, withMultSampling);\n assert(fbo.isBound);\n\n this._stack.push({ fbo, withAttachments, withMultSampling });\n }\n\n public pop(): void {\n assert(!this.isEmpty);\n if (undefined === this._top) {\n return;\n }\n\n const fbo = this._top.fbo;\n this._stack.pop();\n\n assert(fbo.isBound);\n fbo.unbind();\n assert(!fbo.isBound);\n\n if (this.isEmpty) {\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n } else {\n const top = this._top;\n assert(top.fbo.isSuspended);\n top.fbo.bind(top.withAttachments, top.withMultSampling);\n assert(top.fbo.isBound);\n }\n }\n\n public get currentColorBuffer(): TextureHandle | undefined {\n assert(!this.isEmpty);\n return undefined !== this._top ? this._top.fbo.getColor(0) : undefined;\n }\n\n public get currentFbMultisampled(): boolean {\n return undefined !== this._top ? this._top.fbo.isBoundMultisampled : false;\n }\n\n public get isEmpty(): boolean { return 0 === this._stack.length; }\n\n public execute(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean, func: () => void) {\n this.push(fbo, withAttachments, withMultSampling);\n func();\n this.pop();\n }\n\n public markTargetsDirty(): void {\n const top = this._top;\n if (undefined !== top)\n top.fbo.markTargetsDirty();\n }\n\n public suspend(): void {\n if (undefined !== this._top) {\n this._top.fbo.suspend();\n }\n }\n\n public resume(): void {\n if (undefined === this._top) {\n return;\n }\n\n if (this.isEmpty) {\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n } else {\n const top = this._top;\n top.fbo.bind(top.withAttachments, top.withMultSampling);\n assert(top.fbo.isBound);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FrameBuffer.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAgB1C,gBAAgB;AAChB,MAAM,OAAO,WAAW;IAWtB,IAAW,UAAU,KAAc,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;IAEpE,IAAW,OAAO,KAAc,OAAO,sCAA8B,IAAI,CAAC,UAAU,IAAI,iEAAyD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEnK,IAAW,mBAAmB,KAAc,OAAO,mDAA2C,IAAI,CAAC,UAAU,IAAI,kEAA0D,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7L,IAAW,WAAW,KAAc,OAAO,2CAAmC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhG,IAAW,cAAc,KAAc,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7G,QAAQ,CAAC,GAAW;QACzB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3E,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,eAAe,CAAC,YAAqB,EAAE,GAAW;QACvD,IAAI,KAAK,CAAC;QACV,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,YAAoB,GAAqB,EAAE,aAA8B,EAAE,WAAyB,EAClG,cAA0C,EAAE,SAAqC,EAAE,aAA2B;QArCxG,eAAU,wCAAsD;QACvD,mBAAc,GAAoB,EAAE,CAAC;QACrC,oBAAe,GAA8B,EAAE,CAAC;QAChD,sBAAiB,GAAa,EAAE,CAAC;QACjC,oBAAe,GAA8B,EAAE,CAAC;QAkC/D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,CAAC,GAAW,CAAC,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,cAAc,GAAW,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,SAAS,KAAK,SAAS;gBACzB,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACvF,CAAC,EAAE,CAAC;QACN,CAAC;QAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,WAAW,YAAY,YAAY,EAAE,CAAC;oBACxC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAC7F,CAAC;qBAAM,IAAI,WAAW,YAAY,uBAAuB,EAAE,CAAC;oBAC1D,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,wBAAwB,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACrG,CAAC;qBAAM,CAAC;oBACN,qFAAqF;oBACrF,4FAA4F;oBAC5F,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,wBAAwB,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,SAAS,KAAK,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;YAC5J,2DAA2D;YAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACzD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvB,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;oBACvC,MAAM,cAAc,GAAW,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBACxD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;oBAC3C,IAAI,SAAS,KAAK,YAAY;wBAC5B,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;oBAC5F,CAAC,EAAE,CAAC;gBACN,CAAC;gBAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;oBACnC,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;oBAC7C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;wBAC7B,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,wBAAwB,EAAE,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;oBACvG,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,aAA8B,EAAE,WAAyB,EAAE,cAA0C,EAAE,SAAqC,EAAE,aAA2B;QAC5L,MAAM,GAAG,GAA4B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACjF,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACpG,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;YACtB,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,IAAI,CAAC,kBAA2B,KAAK,EAAE,SAAkB,KAAK;QACnE,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI;YACzB,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEnC,IAAI,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,iDAAyC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,qCAA6B,CAAC;QAC/C,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,uCAA+B,CAAC;IACjD,CAAC;IAEM,OAAO;QACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,yCAAiC,CAAC;IACnD,CAAC;IAEM,gBAAgB;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;YACjC,IAAI,CAAC,aAAyC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,uBAAuB,CAAC,SAAkB,EAAE,GAAY;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,OAAO;QACT,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpC,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,oEAAoE;gBAChG,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC;gBACtD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC7B,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3B,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EACnF,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EACjE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;oBAChC,MAAM;YACV,CAAC;QACH,CAAC;QACD,IAAI,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,IAAK,IAAI,CAAC,aAAyC,CAAC,OAAO,EAAE,CAAC;YAC/I,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,+GAA+G;YAChJ,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAK,CAAC,CAAC;YACtD,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EACvE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EACrD,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,aAAyC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;QACD,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,QAAiB,EAAE,UAAmB,EAAE,iBAA0B,EAAE,OAAkB;QACtG,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC,MAAM,WAAW,GAAa,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/K,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,OAAO;oBACrB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE;YAC3E,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,IAAW,WAAW;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,aAAa,CAAC;YACzG,OAAO,SAAS,CAAC;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,GAAG,CAAC,QAAQ;YAC5F,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClG,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAQD,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAA7B;QACE,oGAAoG;QACnF,WAAM,GAAc,EAAE,CAAC;IAiF1C,CAAC;IA/EC,IAAY,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvF,IAAI,CAAC,GAAgB,EAAE,eAAwB,EAAE,gBAAyB;QAC/E,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAElB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAW,kBAAkB;QAC3B,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAED,IAAW,qBAAqB;QAC9B,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,CAAC;IAED,IAAW,OAAO,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAgB,EAAE,eAAwB,EAAE,gBAAyB,EAAE,IAAgB;QACpG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAClD,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAEM,gBAAgB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,SAAS,KAAK,GAAG;YACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/B,CAAC;IAEM,OAAO;QACZ,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAEM,MAAM;QACX,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { RenderBuffer, RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { System } from \"./System\";\nimport { TextureHandle } from \"./Texture\";\n\n/** @internal */\nexport type DepthBuffer = RenderBuffer | RenderBufferMultiSample | TextureHandle;\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport const enum FrameBufferBindState {\n Unbound,\n Bound,\n BoundWithAttachments,\n BoundMultisampled,\n BoundWithAttachmentsMultisampled,\n Suspended,\n}\n\n/** @internal */\nexport class FrameBuffer implements WebGLDisposable {\n private _fbo?: WebGLFramebuffer;\n private _fboMs?: WebGLFramebuffer;\n private _bindState: FrameBufferBindState = FrameBufferBindState.Unbound;\n private readonly _colorTextures: TextureHandle[] = [];\n private readonly _colorMsBuffers: RenderBufferMultiSample[] = [];\n private readonly _colorAttachments: GLenum[] = [];\n private readonly _colorMsFilters: GL.MultiSampling.Filter[] = [];\n public readonly depthBuffer?: DepthBuffer;\n public readonly depthBufferMs?: DepthBuffer;\n\n public get isDisposed(): boolean { return this._fbo === undefined; }\n\n public get isBound(): boolean { return FrameBufferBindState.Bound <= this._bindState && FrameBufferBindState.BoundWithAttachmentsMultisampled >= this._bindState; }\n\n public get isBoundMultisampled(): boolean { return FrameBufferBindState.BoundMultisampled === this._bindState || FrameBufferBindState.BoundWithAttachmentsMultisampled === this._bindState; }\n\n public get isSuspended(): boolean { return FrameBufferBindState.Suspended === this._bindState; }\n\n public get isMultisampled(): boolean { return this._colorMsBuffers.length > 0 || undefined !== this.depthBufferMs; }\n\n public getColor(ndx: number): TextureHandle {\n assert(ndx < this._colorTextures.length);\n if (ndx < this._colorMsBuffers.length && this._colorMsBuffers[ndx].isDirty) {\n this.blitMsBuffersToTextures(false, ndx);\n }\n return this._colorTextures[ndx];\n }\n\n public getColorTargets(useMSBuffers: boolean, ndx: number): { tex: TextureHandle, msBuf: RenderBufferMultiSample | undefined } {\n let msBuf;\n if (useMSBuffers) {\n assert(ndx < this._colorMsBuffers.length);\n msBuf = this._colorMsBuffers[ndx];\n }\n assert(ndx < this._colorTextures.length);\n return { tex: this._colorTextures[ndx], msBuf };\n }\n\n private constructor(fbo: WebGLFramebuffer, colorTextures: TextureHandle[], depthBuffer?: DepthBuffer,\n colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer) {\n this._fbo = fbo;\n const gl = System.instance.context;\n\n this.bind(false);\n\n let i: number = 0;\n for (const colTex of colorTextures) {\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\n this._colorAttachments.push(attachmentEnum);\n this._colorTextures.push(colTex);\n const texHandle = colTex.getHandle();\n if (undefined !== texHandle)\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentEnum, gl.TEXTURE_2D, texHandle, 0);\n i++;\n }\n\n if (depthBuffer !== undefined) {\n this.depthBuffer = depthBuffer;\n const dbHandle = depthBuffer.getHandle();\n if (undefined !== dbHandle) {\n if (depthBuffer instanceof RenderBuffer) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\n } else if (depthBuffer instanceof RenderBufferMultiSample) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\n } else {\n // Looks like we only get a 24 bit depth buffer anyway, so use a 24-8 with a stencil.\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\n }\n }\n }\n\n this.unbind();\n\n if (undefined !== colorMsBuffers && colorMsBuffers.length === colorTextures.length && undefined !== msFilters && msFilters.length === colorMsBuffers.length) {\n // Create a matching FBO with multisampling render buffers.\n const fbo2 = System.instance.context.createFramebuffer();\n if (null !== fbo2) {\n this._fboMs = fbo2;\n this.bind(false, true);\n i = 0;\n for (const colMsBuff of colorMsBuffers) {\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\n this._colorMsBuffers.push(colMsBuff);\n this._colorMsFilters.push(msFilters[i]);\n const msBuffHandle = colMsBuff.getHandle();\n if (undefined !== msBuffHandle)\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentEnum, gl.RENDERBUFFER, msBuffHandle);\n i++;\n }\n\n if (depthBufferMs !== undefined) {\n this.depthBufferMs = depthBufferMs;\n const dbHandleMs = depthBufferMs.getHandle();\n if (undefined !== dbHandleMs) {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandleMs);\n }\n }\n this.unbind();\n }\n }\n }\n\n public static create(colorTextures: TextureHandle[], depthBuffer?: DepthBuffer, colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer): FrameBuffer | undefined {\n const fbo: WebGLFramebuffer | null = System.instance.context.createFramebuffer();\n if (null === fbo) {\n return undefined;\n }\n return new FrameBuffer(fbo, colorTextures, depthBuffer, colorMsBuffers, msFilters, depthBufferMs);\n }\n\n public [Symbol.dispose](): void {\n // NB: The FrameBuffer does not *own* the textures and depth buffer.\n if (!this.isDisposed) {\n System.instance.context.deleteFramebuffer(this._fbo!);\n this._fbo = undefined;\n if (undefined !== this._fboMs) {\n System.instance.context.deleteFramebuffer(this._fboMs);\n this._fboMs = undefined;\n }\n }\n }\n\n public bind(bindAttachments: boolean = false, bindMS: boolean = false): boolean {\n assert(undefined !== this._fbo);\n assert(!this.isBound);\n\n if (undefined === this._fbo)\n return false;\n\n const gl = System.instance.context;\n\n if (bindMS && undefined !== this._fboMs) {\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fboMs);\n this._bindState = FrameBufferBindState.BoundMultisampled;\n } else {\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fbo);\n this._bindState = FrameBufferBindState.Bound;\n }\n\n if (bindAttachments) {\n System.instance.setDrawBuffers(this._colorAttachments);\n this._bindState++;\n }\n return true;\n }\n\n public unbind() {\n assert(this.isBound);\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n this._bindState = FrameBufferBindState.Unbound;\n }\n\n public suspend() {\n assert(this.isBound);\n this._bindState = FrameBufferBindState.Suspended;\n }\n\n public markTargetsDirty(): void {\n for (const msBuff of this._colorMsBuffers) {\n msBuff.markBufferDirty(true);\n }\n if (undefined !== this.depthBufferMs)\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(true);\n }\n\n /** blitDepth is true to blit the depth/stencil buffer. ndx is index of single attachment to blit.\n * All color attachments are blitted if ndx is undefined, none are blitted if ndx is -1.\n */\n public blitMsBuffersToTextures(blitDepth: boolean, ndx?: number) {\n if (!this._fboMs)\n return;\n System.instance.frameBufferStack.suspend();\n const gl2 = System.instance.context;\n const attachments = [];\n const max = (undefined === ndx ? this._colorMsBuffers.length : ndx + 1);\n for (let i = 0; i < max; ++i) {\n if (undefined !== ndx && i < ndx) {\n attachments.push(gl2.NONE); // skip this one, but first add a NONE for it in the attachment list\n continue;\n }\n if (this._colorMsBuffers[i].isDirty) {\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\n gl2.readBuffer(this._colorAttachments[i]);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\n attachments.push(this._colorAttachments[i]);\n gl2.drawBuffers(attachments);\n attachments.pop();\n attachments.push(gl2.NONE);\n gl2.blitFramebuffer(0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\n 0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\n GL.BufferBit.Color, this._colorMsFilters[i]);\n this._colorMsBuffers[i].markBufferDirty(false);\n if (undefined !== ndx && i === ndx)\n break;\n }\n }\n if (blitDepth && undefined !== this.depthBuffer && undefined !== this.depthBufferMs && (this.depthBufferMs as RenderBufferMultiSample).isDirty) {\n const mask = GL.BufferBit.Depth; // (this.depthBuffer instanceof RenderBuffer ? GL.BufferBit.Depth : GL.BufferBit.Depth | GL.BufferBit.Stencil);\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\n gl2.blitFramebuffer(0, 0, this.depthBuffer.width, this.depthBuffer.height,\n 0, 0, this.depthBuffer.width, this.depthBuffer.height,\n mask, GL.MultiSampling.Filter.Nearest);\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(false);\n }\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, null);\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, null);\n System.instance.frameBufferStack.resume();\n }\n\n /** invDepth is true to invalidate depth buffer. invStencil is true to invalidate stencil buffer. ndx is index of single color attachment to invalidate.\n * All color attachments are invalidated if ndx is undefined, none are invalidated if ndx is -1.\n * Set withMultiSampling to true to invalidate the MS buffers.\n */\n public invalidate(invDepth: boolean, invStencil: boolean, withMultiSampling: boolean, indices?: number[]): void {\n const gl = System.instance.context;\n const attachments: number[] = invDepth ? (invStencil ? [gl.DEPTH_STENCIL_ATTACHMENT] : [System.instance.context.DEPTH_ATTACHMENT]) : (invDepth ? [gl.STENCIL_ATTACHMENT] : []);\n if (undefined !== indices) {\n if (indices.length > 0) {\n for (const i of indices)\n attachments.push(gl.COLOR_ATTACHMENT0 + i);\n }\n } else {\n attachments.concat(this._colorAttachments);\n }\n System.instance.frameBufferStack.execute(this, true, withMultiSampling, () => {\n System.instance.invalidateFrameBuffer(attachments);\n });\n }\n\n // Chiefly for debugging currently - assumes RGBA, unsigned byte, want all pixels.\n public get debugPixels(): Uint8Array | undefined {\n if (!this.isBound || 0 === this._colorTextures.length || !(this._colorTextures[0] instanceof TextureHandle))\n return undefined;\n\n const tex = this._colorTextures[0];\n if (GL.Texture.Format.Rgba !== tex.format || GL.Texture.DataType.UnsignedByte !== tex.dataType)\n return undefined;\n\n const buffer = new Uint8Array(tex.width * tex.height * 4);\n for (let i = 0; i < buffer.length; i += 4) {\n buffer[i] = 0xba;\n buffer[i + 1] = 0xad;\n buffer[i + 2] = 0xf0;\n buffer[i + 3] = 0x0d;\n }\n\n System.instance.context.readPixels(0, 0, tex.width, tex.height, tex.format, tex.dataType, buffer);\n return buffer;\n }\n}\n\ninterface Binding {\n fbo: FrameBuffer;\n withAttachments: boolean;\n withMultSampling: boolean;\n}\n\n/** @internal */\nexport class FrameBufferStack {\n // FrameBuffers within this array are not owned, as this is only a storage device holding references\n private readonly _stack: Binding[] = [];\n\n private get _top() { return !this.isEmpty ? this._stack[this._stack.length - 1] : undefined; }\n\n public push(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean): void {\n if (undefined !== this._top) {\n this._top.fbo.suspend();\n }\n\n assert(!fbo.isBound);\n fbo.bind(withAttachments, withMultSampling);\n assert(fbo.isBound);\n\n this._stack.push({ fbo, withAttachments, withMultSampling });\n }\n\n public pop(): void {\n assert(!this.isEmpty);\n if (undefined === this._top) {\n return;\n }\n\n const fbo = this._top.fbo;\n this._stack.pop();\n\n assert(fbo.isBound);\n fbo.unbind();\n assert(!fbo.isBound);\n\n if (this.isEmpty) {\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n } else {\n const top = this._top;\n assert(top.fbo.isSuspended);\n top.fbo.bind(top.withAttachments, top.withMultSampling);\n assert(top.fbo.isBound);\n }\n }\n\n public get currentColorBuffer(): TextureHandle | undefined {\n assert(!this.isEmpty);\n return undefined !== this._top ? this._top.fbo.getColor(0) : undefined;\n }\n\n public get currentFbMultisampled(): boolean {\n return undefined !== this._top ? this._top.fbo.isBoundMultisampled : false;\n }\n\n public get isEmpty(): boolean { return 0 === this._stack.length; }\n\n public execute(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean, func: () => void) {\n this.push(fbo, withAttachments, withMultSampling);\n func();\n this.pop();\n }\n\n public markTargetsDirty(): void {\n const top = this._top;\n if (undefined !== top)\n top.fbo.markTargetsDirty();\n }\n\n public suspend(): void {\n if (undefined !== this._top) {\n this._top.fbo.suspend();\n }\n }\n\n public resume(): void {\n if (undefined === this._top) {\n return;\n }\n\n if (this.isEmpty) {\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\n } else {\n const top = this._top;\n top.fbo.bind(top.withAttachments, top.withMultSampling);\n assert(top.fbo.isBound);\n }\n }\n}\n"]}
@@ -63,7 +63,7 @@ export declare class PerTargetBatchData {
63
63
  protected _contours?: Contours;
64
64
  protected _thematicSensors?: ThematicSensors;
65
65
  constructor(target: Target);
66
- dispose(): void;
66
+ [Symbol.dispose](): void;
67
67
  getThematicSensors(batch: Batch): ThematicSensors;
68
68
  getFeatureOverrides(batch: Batch): FeatureOverrides;
69
69
  getContours(batch: Batch): Contours;
@@ -77,7 +77,7 @@ export declare class PerTargetData {
77
77
  private readonly _batch;
78
78
  private readonly _data;
79
79
  constructor(batch: Batch);
80
- dispose(): void;
80
+ [Symbol.dispose](): void;
81
81
  get isDisposed(): boolean;
82
82
  /** Exposed strictly for tests. */
83
83
  get data(): PerTargetBatchData[];
@@ -1 +1 @@
1
- {"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export class GraphicOwner extends Graphic {
32
32
  get isDisposed() { return this._isDisposed; }
33
33
  dispose() { this._isDisposed = true; }
34
34
  disposeGraphic() {
35
- this.graphic.dispose();
35
+ this.graphic[Symbol.dispose]();
36
36
  }
37
37
  collectStatistics(stats) {
38
38
  this.graphic.collectStatistics(stats);
@@ -59,9 +59,9 @@ export class PerTargetBatchData {
59
59
  this._featureOverrides = new Map();
60
60
  this.target = target;
61
61
  }
62
- dispose() {
62
+ [Symbol.dispose]() {
63
63
  this._thematicSensors = dispose(this._thematicSensors);
64
- this._contours = this._contours?.dispose();
64
+ this._contours = this._contours?.[Symbol.dispose]();
65
65
  for (const value of this._featureOverrides.values())
66
66
  dispose(value);
67
67
  this._featureOverrides.clear();
@@ -87,7 +87,7 @@ export class PerTargetBatchData {
87
87
  }
88
88
  getContours(batch) {
89
89
  if (this._contours && !this._contours.matchesTargetAndFeatureCount(this.target, batch.featureTable))
90
- this._contours = this._contours.dispose();
90
+ this._contours = this._contours[Symbol.dispose]();
91
91
  if (!this._contours) {
92
92
  this._contours = Contours.createFromTarget(this.target, batch.options);
93
93
  this._contours.initFromMap(batch.featureTable);
@@ -111,7 +111,7 @@ export class PerTargetBatchData {
111
111
  const ovrs = this._featureOverrides.get(source);
112
112
  if (ovrs) {
113
113
  this._featureOverrides.delete(source);
114
- ovrs.dispose();
114
+ ovrs[Symbol.dispose]();
115
115
  }
116
116
  }
117
117
  }
@@ -121,10 +121,10 @@ export class PerTargetData {
121
121
  this._data = [];
122
122
  this._batch = batch;
123
123
  }
124
- dispose() {
124
+ [Symbol.dispose]() {
125
125
  for (const data of this._data) {
126
126
  data.target.onBatchDisposed(this._batch);
127
- data.dispose();
127
+ data[Symbol.dispose]();
128
128
  }
129
129
  this._data.length = 0;
130
130
  }
@@ -138,7 +138,7 @@ export class PerTargetData {
138
138
  if (-1 === index)
139
139
  return;
140
140
  const data = this._data[index];
141
- data.dispose();
141
+ data[Symbol.dispose]();
142
142
  this._data.splice(index, 1);
143
143
  }
144
144
  collectStatistics(stats) {
@@ -209,7 +209,7 @@ export class Batch extends Graphic {
209
209
  // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain
210
210
  dispose() {
211
211
  dispose(this.graphic);
212
- this.perTargetData.dispose();
212
+ this.perTargetData[Symbol.dispose]();
213
213
  this._isDisposed = true;
214
214
  }
215
215
  collectStatistics(stats) {
@@ -278,7 +278,7 @@ export class Branch extends Graphic {
278
278
  return 0 === this.branch.entries.length;
279
279
  }
280
280
  dispose() {
281
- this.branch.dispose();
281
+ this.branch[Symbol.dispose]();
282
282
  }
283
283
  get isPickable() {
284
284
  return this.branch.entries.some((gf) => gf.isPickable);
@@ -318,7 +318,7 @@ export class AnimationTransformBranch extends Graphic {
318
318
  this.nodeId = nodeId;
319
319
  }
320
320
  dispose() {
321
- this.graphic.dispose();
321
+ this.graphic[Symbol.dispose]();
322
322
  }
323
323
  get isDisposed() {
324
324
  return this.graphic.isDisposed;