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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  2. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  3. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.js +2 -2
  5. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  6. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  7. package/lib/cjs/CheckpointConnection.js +3 -3
  8. package/lib/cjs/CheckpointConnection.js.map +1 -1
  9. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  10. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  11. package/lib/cjs/ElementLocateManager.js +7 -6
  12. package/lib/cjs/ElementLocateManager.js.map +1 -1
  13. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  14. package/lib/cjs/EmphasizeElements.js +3 -1
  15. package/lib/cjs/EmphasizeElements.js.map +1 -1
  16. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.js +4 -0
  18. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  19. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  20. package/lib/cjs/FrustumAnimator.js +3 -2
  21. package/lib/cjs/FrustumAnimator.js.map +1 -1
  22. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  23. package/lib/cjs/GlobeAnimator.js +7 -6
  24. package/lib/cjs/GlobeAnimator.js.map +1 -1
  25. package/lib/cjs/HitDetail.d.ts.map +1 -1
  26. package/lib/cjs/HitDetail.js +12 -7
  27. package/lib/cjs/HitDetail.js.map +1 -1
  28. package/lib/cjs/IModelApp.d.ts.map +1 -1
  29. package/lib/cjs/IModelApp.js +2 -1
  30. package/lib/cjs/IModelApp.js.map +1 -1
  31. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  32. package/lib/cjs/IModelConnection.js +8 -9
  33. package/lib/cjs/IModelConnection.js.map +1 -1
  34. package/lib/cjs/IpcApp.d.ts.map +1 -1
  35. package/lib/cjs/IpcApp.js +1 -1
  36. package/lib/cjs/IpcApp.js.map +1 -1
  37. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  38. package/lib/cjs/LinePlaneIntersect.js +2 -0
  39. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  40. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.js +2 -1
  42. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  43. package/lib/cjs/Marker.d.ts.map +1 -1
  44. package/lib/cjs/Marker.js +4 -3
  45. package/lib/cjs/Marker.js.map +1 -1
  46. package/lib/cjs/ModelState.d.ts.map +1 -1
  47. package/lib/cjs/ModelState.js +2 -2
  48. package/lib/cjs/ModelState.js.map +1 -1
  49. package/lib/cjs/NativeApp.d.ts.map +1 -1
  50. package/lib/cjs/NativeApp.js +5 -4
  51. package/lib/cjs/NativeApp.js.map +1 -1
  52. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  53. package/lib/cjs/NativeAppLogger.js +1 -0
  54. package/lib/cjs/NativeAppLogger.js.map +1 -1
  55. package/lib/cjs/PlanarClipMaskState.js +3 -3
  56. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  57. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  58. package/lib/cjs/SelectionSet.js +1 -0
  59. package/lib/cjs/SelectionSet.js.map +1 -1
  60. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  61. package/lib/cjs/SheetViewState.js +5 -5
  62. package/lib/cjs/SheetViewState.js.map +1 -1
  63. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  64. package/lib/cjs/SpatialViewState.js +1 -1
  65. package/lib/cjs/SpatialViewState.js.map +1 -1
  66. package/lib/cjs/Sprites.js +2 -2
  67. package/lib/cjs/Sprites.js.map +1 -1
  68. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  69. package/lib/cjs/TentativePoint.js +10 -9
  70. package/lib/cjs/TentativePoint.js.map +1 -1
  71. package/lib/cjs/ViewCreator2d.js +1 -1
  72. package/lib/cjs/ViewCreator2d.js.map +1 -1
  73. package/lib/cjs/ViewCreator3d.js +1 -1
  74. package/lib/cjs/ViewCreator3d.js.map +1 -1
  75. package/lib/cjs/ViewPose.d.ts.map +1 -1
  76. package/lib/cjs/ViewPose.js +4 -1
  77. package/lib/cjs/ViewPose.js.map +1 -1
  78. package/lib/cjs/ViewState.d.ts.map +1 -1
  79. package/lib/cjs/ViewState.js +17 -12
  80. package/lib/cjs/ViewState.js.map +1 -1
  81. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  82. package/lib/cjs/ViewingSpace.js +2 -0
  83. package/lib/cjs/ViewingSpace.js.map +1 -1
  84. package/lib/cjs/Viewport.d.ts.map +1 -1
  85. package/lib/cjs/Viewport.js +17 -10
  86. package/lib/cjs/Viewport.js.map +1 -1
  87. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  88. package/lib/cjs/common/ImageUtil.js +2 -1
  89. package/lib/cjs/common/ImageUtil.js.map +1 -1
  90. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  91. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  93. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  94. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  96. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  97. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  98. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  99. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  101. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  102. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  103. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  104. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  105. package/lib/cjs/internal/ScriptUtils.js +1 -0
  106. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  107. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  108. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  110. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  111. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  113. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  114. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  116. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  117. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  118. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  119. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  120. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  122. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  123. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  125. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  127. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  128. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  129. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  130. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  132. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  133. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  135. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  137. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  138. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  139. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  140. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  141. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  143. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  145. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  147. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  148. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  149. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  150. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  151. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  152. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  153. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  154. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  155. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  156. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  157. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  159. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  160. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  162. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  165. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  166. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  167. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  168. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  170. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  172. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  174. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  175. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  178. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  180. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  184. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  185. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  187. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  188. package/lib/cjs/internal/render/webgl/System.js +1 -1
  189. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  190. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  191. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  192. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  194. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  195. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  196. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  197. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  200. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  208. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  213. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  214. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  215. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  217. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  218. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  219. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  221. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  222. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  223. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  224. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  225. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  226. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  227. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  228. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  229. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  230. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  231. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  232. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  233. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  234. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  235. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  236. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  237. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  238. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  239. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  240. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  241. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  242. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  243. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  244. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  245. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  246. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  247. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  248. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  249. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  250. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  251. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  252. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  253. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  254. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  255. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  257. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  258. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  259. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  260. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  261. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  262. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  263. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  264. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  265. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  266. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  267. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  268. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  269. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  270. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  271. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  272. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  273. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  274. package/lib/cjs/tile/GltfReader.js +54 -16
  275. package/lib/cjs/tile/GltfReader.js.map +1 -1
  276. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  277. package/lib/cjs/tile/RealityTile.js +2 -2
  278. package/lib/cjs/tile/RealityTile.js.map +1 -1
  279. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  280. package/lib/cjs/tile/RealityTileTree.js +5 -5
  281. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  282. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  283. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  284. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  285. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  286. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  287. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  288. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  289. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  290. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  291. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  292. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  293. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  294. package/lib/cjs/tile/map/MapTile.js +10 -8
  295. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  296. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  298. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  299. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  300. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  301. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  302. package/lib/cjs/tools/Tool.js +1 -1
  303. package/lib/cjs/tools/Tool.js.map +1 -1
  304. package/lib/esm/BackgroundMapGeometry.js +14 -14
  305. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  306. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  307. package/lib/esm/BriefcaseConnection.js +2 -2
  308. package/lib/esm/BriefcaseConnection.js.map +1 -1
  309. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  310. package/lib/esm/CheckpointConnection.js +4 -4
  311. package/lib/esm/CheckpointConnection.js.map +1 -1
  312. package/lib/esm/ContextRealityModelState.js.map +1 -1
  313. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  314. package/lib/esm/ElementLocateManager.js +8 -7
  315. package/lib/esm/ElementLocateManager.js.map +1 -1
  316. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  317. package/lib/esm/EmphasizeElements.js +3 -1
  318. package/lib/esm/EmphasizeElements.js.map +1 -1
  319. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  320. package/lib/esm/EnvironmentDecorations.js +4 -0
  321. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  322. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  323. package/lib/esm/FrustumAnimator.js +3 -2
  324. package/lib/esm/FrustumAnimator.js.map +1 -1
  325. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  326. package/lib/esm/GlobeAnimator.js +7 -6
  327. package/lib/esm/GlobeAnimator.js.map +1 -1
  328. package/lib/esm/HitDetail.d.ts.map +1 -1
  329. package/lib/esm/HitDetail.js +12 -7
  330. package/lib/esm/HitDetail.js.map +1 -1
  331. package/lib/esm/IModelApp.d.ts.map +1 -1
  332. package/lib/esm/IModelApp.js +4 -3
  333. package/lib/esm/IModelApp.js.map +1 -1
  334. package/lib/esm/IModelConnection.d.ts.map +1 -1
  335. package/lib/esm/IModelConnection.js +9 -10
  336. package/lib/esm/IModelConnection.js.map +1 -1
  337. package/lib/esm/IpcApp.d.ts.map +1 -1
  338. package/lib/esm/IpcApp.js +2 -2
  339. package/lib/esm/IpcApp.js.map +1 -1
  340. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  341. package/lib/esm/LinePlaneIntersect.js +2 -0
  342. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  343. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  344. package/lib/esm/LocalhostIpcApp.js +2 -1
  345. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  346. package/lib/esm/Marker.d.ts.map +1 -1
  347. package/lib/esm/Marker.js +5 -4
  348. package/lib/esm/Marker.js.map +1 -1
  349. package/lib/esm/ModelState.d.ts.map +1 -1
  350. package/lib/esm/ModelState.js +3 -3
  351. package/lib/esm/ModelState.js.map +1 -1
  352. package/lib/esm/NativeApp.d.ts.map +1 -1
  353. package/lib/esm/NativeApp.js +5 -4
  354. package/lib/esm/NativeApp.js.map +1 -1
  355. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  356. package/lib/esm/NativeAppLogger.js +1 -0
  357. package/lib/esm/NativeAppLogger.js.map +1 -1
  358. package/lib/esm/PlanarClipMaskState.js +3 -3
  359. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  360. package/lib/esm/SelectionSet.d.ts.map +1 -1
  361. package/lib/esm/SelectionSet.js +2 -1
  362. package/lib/esm/SelectionSet.js.map +1 -1
  363. package/lib/esm/SheetViewState.d.ts.map +1 -1
  364. package/lib/esm/SheetViewState.js +6 -6
  365. package/lib/esm/SheetViewState.js.map +1 -1
  366. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  367. package/lib/esm/SpatialViewState.js +2 -2
  368. package/lib/esm/SpatialViewState.js.map +1 -1
  369. package/lib/esm/Sprites.js +2 -2
  370. package/lib/esm/Sprites.js.map +1 -1
  371. package/lib/esm/TentativePoint.d.ts.map +1 -1
  372. package/lib/esm/TentativePoint.js +10 -9
  373. package/lib/esm/TentativePoint.js.map +1 -1
  374. package/lib/esm/ViewCreator2d.js +1 -1
  375. package/lib/esm/ViewCreator2d.js.map +1 -1
  376. package/lib/esm/ViewCreator3d.js +1 -1
  377. package/lib/esm/ViewCreator3d.js.map +1 -1
  378. package/lib/esm/ViewPose.d.ts.map +1 -1
  379. package/lib/esm/ViewPose.js +4 -1
  380. package/lib/esm/ViewPose.js.map +1 -1
  381. package/lib/esm/ViewState.d.ts.map +1 -1
  382. package/lib/esm/ViewState.js +18 -13
  383. package/lib/esm/ViewState.js.map +1 -1
  384. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  385. package/lib/esm/ViewingSpace.js +2 -0
  386. package/lib/esm/ViewingSpace.js.map +1 -1
  387. package/lib/esm/Viewport.d.ts.map +1 -1
  388. package/lib/esm/Viewport.js +18 -11
  389. package/lib/esm/Viewport.js.map +1 -1
  390. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  391. package/lib/esm/common/ImageUtil.js +2 -1
  392. package/lib/esm/common/ImageUtil.js.map +1 -1
  393. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  394. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  395. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  396. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  397. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  398. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  399. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  400. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  401. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  402. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  403. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  404. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  405. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  406. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  407. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  408. package/lib/esm/internal/ScriptUtils.js +1 -0
  409. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  410. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  411. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  412. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  413. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  416. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  420. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  421. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  422. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  424. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  426. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  427. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  428. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  429. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  430. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  431. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  432. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  433. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  434. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  435. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  436. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  437. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  438. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  439. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  440. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  441. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  442. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  443. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  444. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  445. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  446. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  447. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  448. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  449. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  452. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  454. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  455. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  456. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  457. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  458. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  459. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  460. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  461. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  462. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  463. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  464. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  465. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  466. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  467. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  468. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  469. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  470. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  471. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  472. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  473. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  474. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  475. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  476. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  479. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  481. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  482. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  483. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  484. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  485. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  486. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  488. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  489. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  490. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  491. package/lib/esm/internal/render/webgl/System.js +2 -2
  492. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  493. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  494. package/lib/esm/internal/render/webgl/Target.js +11 -8
  495. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  497. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  498. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  499. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  500. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  501. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  502. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  503. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  504. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  505. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  506. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  507. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  509. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  510. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  511. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  512. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  514. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  515. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  516. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  517. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  518. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  519. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  520. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  521. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  522. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  523. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  524. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  525. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  526. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  527. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  528. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  529. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  531. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  532. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  533. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  534. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  535. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  536. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  537. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  538. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  539. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  540. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  541. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  542. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  543. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  544. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  545. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  546. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  547. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  548. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  549. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  550. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  551. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  552. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  553. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  554. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  555. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  556. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  557. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  558. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  559. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  560. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  561. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  562. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  563. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  564. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  565. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  566. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  567. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  568. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  569. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  570. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  571. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  572. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  573. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  574. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  575. package/lib/esm/tile/GltfReader.d.ts +5 -2
  576. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  577. package/lib/esm/tile/GltfReader.js +55 -17
  578. package/lib/esm/tile/GltfReader.js.map +1 -1
  579. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  580. package/lib/esm/tile/RealityTile.js +3 -3
  581. package/lib/esm/tile/RealityTile.js.map +1 -1
  582. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  583. package/lib/esm/tile/RealityTileTree.js +6 -6
  584. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  585. package/lib/esm/tile/TileAdmin.js.map +1 -1
  586. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  587. package/lib/esm/tile/TileDrawArgs.js +2 -1
  588. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  589. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  590. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  591. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  592. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  593. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  594. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  595. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  596. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  597. package/lib/esm/tile/map/MapTile.js +11 -9
  598. package/lib/esm/tile/map/MapTile.js.map +1 -1
  599. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  600. package/lib/esm/tile/map/MapTileTree.js +9 -8
  601. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  602. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  603. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  604. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  605. package/lib/esm/tools/Tool.js +2 -2
  606. package/lib/esm/tools/Tool.js.map +1 -1
  607. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  608. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  609. package/package.json +20 -20
@@ -219,7 +219,7 @@ class ClipStack {
219
219
  this._texture.replaceTextureData(this._gpuBuffer);
220
220
  else
221
221
  this._texture = Texture_1.Texture2DHandle.createForData(1, this._numTotalRows, this._gpuBuffer, false, GL_1.GL.Texture.WrapMode.ClampToEdge, GL_1.GL.Texture.Format.Rgba);
222
- (0, core_bentley_1.assert)(this._texture.height === this._numTotalRows);
222
+ (0, core_bentley_1.assert)((this._texture?.height ?? -1) === this._numTotalRows);
223
223
  }
224
224
  allocateGpuBuffer() {
225
225
  return new Float32Array(this._cpuBuffer.buffer);
@@ -1 +1 @@
1
- {"version":3,"file":"ClipStack.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClipStack.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 } from \"@itwin/core-bentley\";\nimport { ClipPlaneContainment, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ClipIntersectionStyle, RgbColor } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../../IModelApp\";\nimport { RenderClipVolume } from \"../../../render/RenderClipVolume\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { Texture2DData, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { GL } from \"./GL\";\n\ninterface Clip {\n readonly numRows: number;\n readonly getData: (transform: Transform) => Uint8Array;\n}\n\nconst emptyClipData = new Uint8Array(0);\nconst emptyClip = {\n numRows: 0,\n getData: () => emptyClipData,\n};\n\nconst scratchRangeCorners = [\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\n];\n\nfunction getRangeCorners(r: Range3d): Point3d[] {\n return r.corners(scratchRangeCorners);\n}\n\n/** Maintains a stack of ClipVolumes. The volumes nest such that the stack represents the intersection of all the volumes.\n * The bottom of the stack represents the view's clip volume and is always present even if the view has no clip.\n * It also maintains the inside/outside clip colors, where the alpha component is 1 if the color should be applied and 0 if not.\n * @internal\n */\nexport class ClipStack {\n /** Encoded data for all clips on the stack, update when the stack or the transform changes. */\n protected _cpuBuffer: Uint8Array;\n /** A view of the encoded buffer in the format expected by the GPU. */\n protected _gpuBuffer: Texture2DData;\n protected _texture?: Texture2DHandle;\n /** The maximum number of rows we have ever required. Determines the texture height. Grows as needed, reallocating a larger texture, but never shrinks. */\n protected _numTotalRows: number;\n /** The number of rows in the texture actually required to encode the current contents of the stack. */\n protected _numRowsInUse: number;\n /** The first entry always represents the view clip. The rest are pushed and popped with GraphicBranches. */\n protected readonly _stack: Clip[] = [emptyClip];\n /** True if we need to recompute the texture. */\n protected _isStackDirty = false;\n /** Obtain the transform to be applied to the clips - i.e., the view matrix. */\n protected readonly _getTransform: () => Transform;\n /** If this returns false, the clip at the bottom of the stack is ignored. */\n protected readonly _wantViewClip: () => boolean;\n /** If alpha is 1 then geometry inside the clip will be drawn in this color. */\n protected readonly _insideColor = FloatRgba.from(0, 0, 0, 0);\n /** If alpha is 1 then geometry outside the clip will be drawn in this color. */\n protected readonly _outsideColor = FloatRgba.from(0, 0, 0, 0);\n /** For detecting whether the transform changed from one invocation of setViewClip to the next. */\n protected readonly _prevTransform = Transform.createZero();\n /** True if we want to colorize geometry intersecting clip planes */\n protected _colorizeIntersection: boolean = false;\n /** The style to colorize the geometry intersecting clip planes */\n protected readonly _intersectionStyle = FloatRgba.from(0, 0, 0, 0);\n\n public constructor(getTransform: () => Transform, wantViewClip: () => boolean) {\n this._getTransform = getTransform;\n this._wantViewClip = wantViewClip;\n\n this._numTotalRows = this._numRowsInUse = 0;\n this._cpuBuffer = new Uint8Array(this._numTotalRows);\n this._gpuBuffer = this.allocateGpuBuffer();\n }\n\n public get insideColor(): FloatRgba {\n return this._insideColor;\n }\n\n public get outsideColor(): FloatRgba {\n return this._outsideColor;\n }\n\n public get hasOutsideColor(): boolean {\n return this.outsideColor.alpha !== 0;\n }\n\n public get colorizeIntersection(): boolean {\n return this._colorizeIntersection;\n }\n\n public set colorizeIntersection(b: boolean) {\n this._colorizeIntersection = b;\n }\n public get intersectionStyle(): FloatRgba {\n return this._intersectionStyle;\n }\n\n public get bytesUsed(): number {\n return this._texture ? this._texture.bytesUsed : 0;\n }\n\n public setViewClip(clip: ClipVector | undefined, style: { insideColor?: RgbColor, outsideColor?: RgbColor, colorizeIntersection?: boolean, intersectionStyle?: ClipIntersectionStyle }): void {\n assert(this._stack.length === 1);\n\n this.updateColor(style.insideColor, this._insideColor);\n this.updateColor(style.outsideColor, this._outsideColor);\n this.updateIntersectionStyle(style.colorizeIntersection, style.intersectionStyle, this._intersectionStyle);\n\n const transform = this._getTransform();\n if (!transform.isAlmostEqual(this._prevTransform)) {\n transform.clone(this._prevTransform);\n this._isStackDirty = true;\n }\n\n const cur = this._stack[0];\n if (cur === emptyClip) {\n if (!clip)\n return; // no change.\n } else if (!clip) {\n this._stack[0] = emptyClip;\n this._numRowsInUse = 0;\n this._isStackDirty = true;\n return;\n } else {\n assert(cur instanceof ClipVolume);\n if (cur.clipVector === clip) {\n // We assume that the active view's ClipVector is never mutated in place, so if we are given the same ClipVector, we expect our RenderClipVolume to match it.\n return;\n }\n }\n\n // ClipVector has changed.\n const newClip = IModelApp.renderSystem.createClipVolume(clip);\n if (!newClip) {\n this._isStackDirty = this._stack[0] !== emptyClip;\n this._stack[0] = emptyClip;\n this._numRowsInUse = 0;\n } else {\n this.pop();\n this.push(newClip);\n }\n }\n\n public push(clip: RenderClipVolume): void {\n assert(clip instanceof ClipVolume);\n\n this._stack.push(clip);\n this._numRowsInUse += clip.numRows;\n this._numTotalRows = Math.max(this._numRowsInUse, this._numTotalRows);\n this._isStackDirty = true;\n }\n\n public pop(): void {\n assert(this._stack.length > 0);\n const clip = this._stack.pop();\n this._numRowsInUse -= (clip ? clip.numRows : 0);\n }\n\n public get hasClip(): boolean {\n return this.startIndex < this.endIndex;\n }\n\n public get hasViewClip(): boolean {\n return emptyClip !== this._stack[0] && this._wantViewClip();\n }\n\n public get startIndex(): number {\n assert(this._stack.length > 0);\n return this._wantViewClip() ? 0 : this._stack[0].numRows;\n }\n\n public get endIndex(): number {\n return this._numRowsInUse;\n }\n\n public get textureHeight(): number {\n return this._numTotalRows;\n }\n\n public get texture(): TextureHandle | undefined {\n this.updateTexture();\n return this._texture;\n }\n\n public isRangeClipped(range: Range3d, transform: Transform): boolean {\n if (this.hasOutsideColor || !this.hasClip)\n return false;\n\n range = transform.multiplyRange(range, range);\n const corners = getRangeCorners(range);\n const startIndex = this._wantViewClip() && emptyClip !== this._stack[0] ? 0 : 1;\n for (let i = startIndex; i < this._stack.length; i++) {\n const clip = this._stack[i];\n assert(clip instanceof ClipVolume);\n if (ClipPlaneContainment.StronglyOutside === clip.clipVector.classifyPointContainment(corners))\n return true;\n }\n\n return false;\n }\n\n /** Exposed strictly for tests. */\n public get clips(): ReadonlyArray<{ numRows: number }> {\n return this._stack;\n }\n\n /** Exposed strictly for tests. */\n public static get emptyViewClip() {\n return emptyClip;\n }\n\n protected updateTexture(): void {\n if (this._numTotalRows > 0 && (!this._texture || this._texture.height < this._numTotalRows)) {\n // We need to resize the texture.\n assert(this._isStackDirty);\n this._isStackDirty = true;\n this._texture = dispose(this._texture);\n this._cpuBuffer = new Uint8Array(this._numTotalRows * 4 * 4);\n this._gpuBuffer = this.allocateGpuBuffer();\n }\n\n if (this._isStackDirty) {\n this._isStackDirty = false;\n this.recomputeTexture();\n }\n }\n\n protected recomputeTexture(): void {\n // Copy each clip's data to the buffer, recording whether the buffer's contents actually changed.\n let bufferDirty = false;\n const transform = this._getTransform();\n let bufferIndex = 0;\n for (const clip of this._stack) {\n const data = clip.getData(transform);\n for (let i = 0; i < data.byteLength; i++) {\n const byte = data[i];\n bufferDirty = bufferDirty || byte !== this._cpuBuffer[bufferIndex];\n this._cpuBuffer[bufferIndex++] = byte;\n }\n }\n\n // If the contents have changed, upload the new texture data to the GPU.\n if (bufferDirty) {\n this.uploadTexture();\n }\n }\n\n protected uploadTexture(): void {\n if (this._texture)\n this._texture.replaceTextureData(this._gpuBuffer);\n else\n this._texture = Texture2DHandle.createForData(1, this._numTotalRows, this._gpuBuffer, false, GL.Texture.WrapMode.ClampToEdge, GL.Texture.Format.Rgba);\n\n assert(this._texture!.height === this._numTotalRows);\n }\n\n protected allocateGpuBuffer(): Texture2DData {\n return new Float32Array(this._cpuBuffer.buffer);\n }\n\n protected updateColor(rgb: RgbColor | undefined, rgba: FloatRgba): void {\n rgba.alpha = undefined !== rgb ? 1 : 0;\n if (rgb)\n rgba.setRgbColor(rgb);\n }\n\n protected updateIntersectionStyle(colorizeIntersection: boolean | undefined, style: ClipIntersectionStyle | undefined, _thisStyle: FloatRgba): void {\n this._colorizeIntersection = colorizeIntersection === true ? true : false;\n\n if (style !== undefined) {\n if (style.color !== undefined)\n _thisStyle.setRgbColor(style.color);\n if (style.width !== undefined)\n _thisStyle.alpha = style.width;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ClipStack.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ClipStack.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 } from \"@itwin/core-bentley\";\nimport { ClipPlaneContainment, ClipVector, Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ClipIntersectionStyle, RgbColor } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../../IModelApp\";\nimport { RenderClipVolume } from \"../../../render/RenderClipVolume\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { Texture2DData, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { GL } from \"./GL\";\n\ninterface Clip {\n readonly numRows: number;\n readonly getData: (transform: Transform) => Uint8Array;\n}\n\nconst emptyClipData = new Uint8Array(0);\nconst emptyClip = {\n numRows: 0,\n getData: () => emptyClipData,\n};\n\nconst scratchRangeCorners = [\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\n new Point3d(), new Point3d(), new Point3d(), new Point3d(),\n];\n\nfunction getRangeCorners(r: Range3d): Point3d[] {\n return r.corners(scratchRangeCorners);\n}\n\n/** Maintains a stack of ClipVolumes. The volumes nest such that the stack represents the intersection of all the volumes.\n * The bottom of the stack represents the view's clip volume and is always present even if the view has no clip.\n * It also maintains the inside/outside clip colors, where the alpha component is 1 if the color should be applied and 0 if not.\n * @internal\n */\nexport class ClipStack {\n /** Encoded data for all clips on the stack, update when the stack or the transform changes. */\n protected _cpuBuffer: Uint8Array;\n /** A view of the encoded buffer in the format expected by the GPU. */\n protected _gpuBuffer: Texture2DData;\n protected _texture?: Texture2DHandle;\n /** The maximum number of rows we have ever required. Determines the texture height. Grows as needed, reallocating a larger texture, but never shrinks. */\n protected _numTotalRows: number;\n /** The number of rows in the texture actually required to encode the current contents of the stack. */\n protected _numRowsInUse: number;\n /** The first entry always represents the view clip. The rest are pushed and popped with GraphicBranches. */\n protected readonly _stack: Clip[] = [emptyClip];\n /** True if we need to recompute the texture. */\n protected _isStackDirty = false;\n /** Obtain the transform to be applied to the clips - i.e., the view matrix. */\n protected readonly _getTransform: () => Transform;\n /** If this returns false, the clip at the bottom of the stack is ignored. */\n protected readonly _wantViewClip: () => boolean;\n /** If alpha is 1 then geometry inside the clip will be drawn in this color. */\n protected readonly _insideColor = FloatRgba.from(0, 0, 0, 0);\n /** If alpha is 1 then geometry outside the clip will be drawn in this color. */\n protected readonly _outsideColor = FloatRgba.from(0, 0, 0, 0);\n /** For detecting whether the transform changed from one invocation of setViewClip to the next. */\n protected readonly _prevTransform = Transform.createZero();\n /** True if we want to colorize geometry intersecting clip planes */\n protected _colorizeIntersection: boolean = false;\n /** The style to colorize the geometry intersecting clip planes */\n protected readonly _intersectionStyle = FloatRgba.from(0, 0, 0, 0);\n\n public constructor(getTransform: () => Transform, wantViewClip: () => boolean) {\n this._getTransform = getTransform;\n this._wantViewClip = wantViewClip;\n\n this._numTotalRows = this._numRowsInUse = 0;\n this._cpuBuffer = new Uint8Array(this._numTotalRows);\n this._gpuBuffer = this.allocateGpuBuffer();\n }\n\n public get insideColor(): FloatRgba {\n return this._insideColor;\n }\n\n public get outsideColor(): FloatRgba {\n return this._outsideColor;\n }\n\n public get hasOutsideColor(): boolean {\n return this.outsideColor.alpha !== 0;\n }\n\n public get colorizeIntersection(): boolean {\n return this._colorizeIntersection;\n }\n\n public set colorizeIntersection(b: boolean) {\n this._colorizeIntersection = b;\n }\n public get intersectionStyle(): FloatRgba {\n return this._intersectionStyle;\n }\n\n public get bytesUsed(): number {\n return this._texture ? this._texture.bytesUsed : 0;\n }\n\n public setViewClip(clip: ClipVector | undefined, style: { insideColor?: RgbColor, outsideColor?: RgbColor, colorizeIntersection?: boolean, intersectionStyle?: ClipIntersectionStyle }): void {\n assert(this._stack.length === 1);\n\n this.updateColor(style.insideColor, this._insideColor);\n this.updateColor(style.outsideColor, this._outsideColor);\n this.updateIntersectionStyle(style.colorizeIntersection, style.intersectionStyle, this._intersectionStyle);\n\n const transform = this._getTransform();\n if (!transform.isAlmostEqual(this._prevTransform)) {\n transform.clone(this._prevTransform);\n this._isStackDirty = true;\n }\n\n const cur = this._stack[0];\n if (cur === emptyClip) {\n if (!clip)\n return; // no change.\n } else if (!clip) {\n this._stack[0] = emptyClip;\n this._numRowsInUse = 0;\n this._isStackDirty = true;\n return;\n } else {\n assert(cur instanceof ClipVolume);\n if (cur.clipVector === clip) {\n // We assume that the active view's ClipVector is never mutated in place, so if we are given the same ClipVector, we expect our RenderClipVolume to match it.\n return;\n }\n }\n\n // ClipVector has changed.\n const newClip = IModelApp.renderSystem.createClipVolume(clip);\n if (!newClip) {\n this._isStackDirty = this._stack[0] !== emptyClip;\n this._stack[0] = emptyClip;\n this._numRowsInUse = 0;\n } else {\n this.pop();\n this.push(newClip);\n }\n }\n\n public push(clip: RenderClipVolume): void {\n assert(clip instanceof ClipVolume);\n\n this._stack.push(clip);\n this._numRowsInUse += clip.numRows;\n this._numTotalRows = Math.max(this._numRowsInUse, this._numTotalRows);\n this._isStackDirty = true;\n }\n\n public pop(): void {\n assert(this._stack.length > 0);\n const clip = this._stack.pop();\n this._numRowsInUse -= (clip ? clip.numRows : 0);\n }\n\n public get hasClip(): boolean {\n return this.startIndex < this.endIndex;\n }\n\n public get hasViewClip(): boolean {\n return emptyClip !== this._stack[0] && this._wantViewClip();\n }\n\n public get startIndex(): number {\n assert(this._stack.length > 0);\n return this._wantViewClip() ? 0 : this._stack[0].numRows;\n }\n\n public get endIndex(): number {\n return this._numRowsInUse;\n }\n\n public get textureHeight(): number {\n return this._numTotalRows;\n }\n\n public get texture(): TextureHandle | undefined {\n this.updateTexture();\n return this._texture;\n }\n\n public isRangeClipped(range: Range3d, transform: Transform): boolean {\n if (this.hasOutsideColor || !this.hasClip)\n return false;\n\n range = transform.multiplyRange(range, range);\n const corners = getRangeCorners(range);\n const startIndex = this._wantViewClip() && emptyClip !== this._stack[0] ? 0 : 1;\n for (let i = startIndex; i < this._stack.length; i++) {\n const clip = this._stack[i];\n assert(clip instanceof ClipVolume);\n if (ClipPlaneContainment.StronglyOutside === clip.clipVector.classifyPointContainment(corners))\n return true;\n }\n\n return false;\n }\n\n /** Exposed strictly for tests. */\n public get clips(): ReadonlyArray<{ numRows: number }> {\n return this._stack;\n }\n\n /** Exposed strictly for tests. */\n public static get emptyViewClip() {\n return emptyClip;\n }\n\n protected updateTexture(): void {\n if (this._numTotalRows > 0 && (!this._texture || this._texture.height < this._numTotalRows)) {\n // We need to resize the texture.\n assert(this._isStackDirty);\n this._isStackDirty = true;\n this._texture = dispose(this._texture);\n this._cpuBuffer = new Uint8Array(this._numTotalRows * 4 * 4);\n this._gpuBuffer = this.allocateGpuBuffer();\n }\n\n if (this._isStackDirty) {\n this._isStackDirty = false;\n this.recomputeTexture();\n }\n }\n\n protected recomputeTexture(): void {\n // Copy each clip's data to the buffer, recording whether the buffer's contents actually changed.\n let bufferDirty = false;\n const transform = this._getTransform();\n let bufferIndex = 0;\n for (const clip of this._stack) {\n const data = clip.getData(transform);\n for (let i = 0; i < data.byteLength; i++) {\n const byte = data[i];\n bufferDirty = bufferDirty || byte !== this._cpuBuffer[bufferIndex];\n this._cpuBuffer[bufferIndex++] = byte;\n }\n }\n\n // If the contents have changed, upload the new texture data to the GPU.\n if (bufferDirty) {\n this.uploadTexture();\n }\n }\n\n protected uploadTexture(): void {\n if (this._texture)\n this._texture.replaceTextureData(this._gpuBuffer);\n else\n this._texture = Texture2DHandle.createForData(1, this._numTotalRows, this._gpuBuffer, false, GL.Texture.WrapMode.ClampToEdge, GL.Texture.Format.Rgba);\n\n assert((this._texture?.height ?? -1) === this._numTotalRows);\n }\n\n protected allocateGpuBuffer(): Texture2DData {\n return new Float32Array(this._cpuBuffer.buffer);\n }\n\n protected updateColor(rgb: RgbColor | undefined, rgba: FloatRgba): void {\n rgba.alpha = undefined !== rgb ? 1 : 0;\n if (rgb)\n rgba.setRgbColor(rgb);\n }\n\n protected updateIntersectionStyle(colorizeIntersection: boolean | undefined, style: ClipIntersectionStyle | undefined, _thisStyle: FloatRgba): void {\n this._colorizeIntersection = colorizeIntersection === true ? true : false;\n\n if (style !== undefined) {\n if (style.color !== undefined)\n _thisStyle.setRgbColor(style.color);\n if (style.width !== undefined)\n _thisStyle.alpha = style.width;\n }\n }\n}\n"]}
@@ -33,7 +33,7 @@ class ColorInfo {
33
33
  get isNonUniform() { return !this.isUniform; }
34
34
  get uniform() {
35
35
  (0, core_bentley_1.assert)(this.isUniform);
36
- return this._uniform;
36
+ return (0, core_bentley_1.expectDefined)(this._uniform);
37
37
  }
38
38
  static _nonUniformTranslucent = new ColorInfo(true);
39
39
  static _nonUniformOpaque = new ColorInfo(false);
@@ -1 +1 @@
1
- {"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ColorInfo.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAE7C,2CAAwC;AAGxC;;GAEG;AACH,MAAa,SAAS;IACH,QAAQ,CAAa;IACtB,eAAe,CAAU;IAEzC,YAAoB,eAAwB,EAAE,OAAmB;QAC/D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgB,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,gBAAgB,CAAC,eAAwB,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,kBAAkB,CAAC,KAAe,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExG,MAAM,CAAC,oBAAoB,CAAC,UAAsB;QACvD,OAAO,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrI,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,EAAe;QACjD,OAAO,SAAS,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9H,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAW,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,IAAW,OAAO;QAChB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,sBAAsB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,iBAAiB,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;;AA7B1D,8BA8BC","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 { ColorDef, ColorIndex } from \"@itwin/core-common\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { VertexTable } from \"../../../common/internal/render/VertexTable\";\n\n/* Describes a primitive's basic color properties\n * @internal\n */\nexport class ColorInfo {\n private readonly _uniform?: FloatRgba;\n public readonly hasTranslucency: boolean;\n\n private constructor(hasTranslucency: boolean, uniform?: FloatRgba) {\n this.hasTranslucency = hasTranslucency;\n this._uniform = uniform;\n }\n\n public static createUniform(color: FloatRgba) { return new ColorInfo(color.hasTranslucency, color); }\n public static createNonUniform(hasTranslucency: boolean) { return hasTranslucency ? this._nonUniformTranslucent : this._nonUniformOpaque; }\n public static createFromColorDef(color: ColorDef) { return this.createUniform(FloatRgba.fromColorDef(color)); }\n\n public static createFromColorIndex(colorIndex: ColorIndex) {\n return undefined !== colorIndex.uniform ? this.createFromColorDef(colorIndex.uniform) : this.createNonUniform(colorIndex.hasAlpha);\n }\n\n public static createFromVertexTable(vt: VertexTable) {\n return undefined !== vt.uniformColor ? this.createFromColorDef(vt.uniformColor) : this.createNonUniform(vt.hasTranslucency);\n }\n\n public get isUniform() { return undefined !== this._uniform; }\n public get isNonUniform() { return !this.isUniform; }\n public get uniform(): FloatRgba {\n assert(this.isUniform);\n return this._uniform!;\n }\n\n private static _nonUniformTranslucent = new ColorInfo(true);\n private static _nonUniformOpaque = new ColorInfo(false);\n}\n"]}
1
+ {"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ColorInfo.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA4D;AAE5D,2CAAwC;AAGxC;;GAEG;AACH,MAAa,SAAS;IACH,QAAQ,CAAa;IACtB,eAAe,CAAU;IAEzC,YAAoB,eAAwB,EAAE,OAAmB;QAC/D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgB,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,gBAAgB,CAAC,eAAwB,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,kBAAkB,CAAC,KAAe,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExG,MAAM,CAAC,oBAAoB,CAAC,UAAsB;QACvD,OAAO,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrI,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,EAAe;QACjD,OAAO,SAAS,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9H,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAW,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,IAAW,OAAO;QAChB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAA,4BAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,sBAAsB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,iBAAiB,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;;AA7B1D,8BA8BC","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, expectDefined } from \"@itwin/core-bentley\";\nimport { ColorDef, ColorIndex } from \"@itwin/core-common\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { VertexTable } from \"../../../common/internal/render/VertexTable\";\n\n/* Describes a primitive's basic color properties\n * @internal\n */\nexport class ColorInfo {\n private readonly _uniform?: FloatRgba;\n public readonly hasTranslucency: boolean;\n\n private constructor(hasTranslucency: boolean, uniform?: FloatRgba) {\n this.hasTranslucency = hasTranslucency;\n this._uniform = uniform;\n }\n\n public static createUniform(color: FloatRgba) { return new ColorInfo(color.hasTranslucency, color); }\n public static createNonUniform(hasTranslucency: boolean) { return hasTranslucency ? this._nonUniformTranslucent : this._nonUniformOpaque; }\n public static createFromColorDef(color: ColorDef) { return this.createUniform(FloatRgba.fromColorDef(color)); }\n\n public static createFromColorIndex(colorIndex: ColorIndex) {\n return undefined !== colorIndex.uniform ? this.createFromColorDef(colorIndex.uniform) : this.createNonUniform(colorIndex.hasAlpha);\n }\n\n public static createFromVertexTable(vt: VertexTable) {\n return undefined !== vt.uniformColor ? this.createFromColorDef(vt.uniformColor) : this.createNonUniform(vt.hasTranslucency);\n }\n\n public get isUniform() { return undefined !== this._uniform; }\n public get isNonUniform() { return !this.isUniform; }\n public get uniform(): FloatRgba {\n assert(this.isUniform);\n return expectDefined(this._uniform);\n }\n\n private static _nonUniformTranslucent = new ColorInfo(true);\n private static _nonUniformOpaque = new ColorInfo(false);\n}\n"]}
@@ -51,14 +51,14 @@ class Contours {
51
51
  (0, core_bentley_1.assert)(width * height * 8 >= this._numFeatures);
52
52
  const data = new Uint8Array(width * height * 4);
53
53
  const creator = new Texture_1.Texture2DDataUpdater(data);
54
- this.buildLookupTable(creator, map, this.target.currentContours);
54
+ this.buildLookupTable(creator, map, (0, core_bentley_1.expectDefined)(this.target.currentContours));
55
55
  this._lut = Texture_1.TextureHandle.createForData(width, height, data, true, GL_1.GL.Texture.WrapMode.ClampToEdge);
56
56
  this._lutWidth = width;
57
57
  }
58
58
  _update(map, lut) {
59
59
  (0, core_bentley_1.assert)(this._numFeatures === map.numFeatures);
60
- const updater = new Texture_1.Texture2DDataUpdater(lut.dataBytes);
61
- this.buildLookupTable(updater, map, this.target.currentContours);
60
+ const updater = new Texture_1.Texture2DDataUpdater((0, core_bentley_1.expectDefined)(lut.dataBytes));
61
+ this.buildLookupTable(updater, map, (0, core_bentley_1.expectDefined)(this.target.currentContours));
62
62
  lut.update(updater);
63
63
  }
64
64
  buildLookupTable(data, map, contours) {
@@ -1 +1 @@
1
- {"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Contours.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, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { ContourDisplay, PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\n/** @internal */\nexport type ContoursCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class Contours implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _contours?: ContourDisplay;\n private _lut?: Texture2DHandle;\n private _lutWidth = 0;\n private _numFeatures = 0;\n\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n\n public matchesTargetAndFeatureCount(target: Target, map: RenderFeatureTable): boolean {\n // checking for target change or texture size requirement change\n return target === this.target && this._numFeatures === map.numFeatures;\n }\n\n private matchesSubCategories(): boolean {\n if (this._contours === undefined && this.target.currentContours === undefined)\n return true;\n if (this._contours === undefined || this.target.currentContours === undefined)\n return false;\n if (this._contours.groups.length !== this.target.currentContours.groups.length)\n return false;\n for (let index = 0, len = this._contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n if (!this._contours.groups[index].subCategoriesEqual(this.target.currentContours.groups[index]))\n return false;\n }\n return true;\n }\n\n private _initialize(map: RenderFeatureTable) {\n assert(0 < map.numFeatures);\n this._numFeatures = map.numFeatures;\n const dims = computeDimensions(this._numFeatures, 1 / 8, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height * 8 >= this._numFeatures);\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, this.target.currentContours!);\n this._lut = TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n this._lutWidth = width;\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle) {\n assert(this._numFeatures === map.numFeatures);\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\n this.buildLookupTable(updater, map, this.target.currentContours!);\n lut.update(updater);\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, contours: ContourDisplay) {\n // setup an efficient way to compare feature subcategories with lists in terrains\n const subCatMap = new Id64.Uint32Map<number>();\n let defaultNdx = 0xf; // default for unmatched subcategories is to not show contours\n // NB: index also has to be a max of 14 - has to fit in 4 bits with value 15 reserved for no terrain def\n for (let index = 0, len = contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n const subCats = contours.groups[index].subCategories;\n if (OrderedId64Iterable.isEmptySet(subCats)) {\n defaultNdx = index; // change default for unmatched subcategories to this definition\n } else {\n for (const subCat of subCats)\n subCatMap.setById(subCat, index);\n }\n }\n\n // NB: We currently use 1/2 of one component of RGBA value per feature as follows:\n // [0] R/G/B/A = index pair - lower 4 bits = ndx n, upper 4 bits = ndx n+1\n let even = false;\n let byteOut = 0;\n let dataIndex = 0;\n for (const feature of map.iterable(scratchPackedFeature)) {\n dataIndex = Math.floor(feature.index * 0.5);\n even = (feature.index & 1) === 0;\n const terrainNdx = subCatMap.get(feature.subCategoryId.lower, feature.subCategoryId.upper) ?? defaultNdx;\n if (even)\n byteOut = terrainNdx;\n else\n data.setByteAtIndex(dataIndex, (terrainNdx << 4) | byteOut);\n }\n if (even) // not written\n data.setByteAtIndex(dataIndex, byteOut);\n }\n\n private constructor(target: Target, options: BatchOptions) {\n this.target = target;\n this._options = options;\n this._contours = target.currentContours;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions) {\n return new Contours(target, options);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n return undefined;\n }\n\n public initFromMap(map: RenderFeatureTable) {\n this._lut = dispose(this._lut);\n this._initialize(map);\n }\n\n public update(features: RenderFeatureTable) {\n if (this.matchesSubCategories())\n return;\n this._contours = this.target.currentContours;\n\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(features, this._lut);\n }\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n uniform.setUniform1ui(this._lutWidth);\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.Contours);\n }\n}\n"]}
1
+ {"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Contours.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, expectDefined, Id64, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { ContourDisplay, PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\n/** @internal */\nexport type ContoursCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class Contours implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _contours?: ContourDisplay;\n private _lut?: Texture2DHandle;\n private _lutWidth = 0;\n private _numFeatures = 0;\n\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n\n public matchesTargetAndFeatureCount(target: Target, map: RenderFeatureTable): boolean {\n // checking for target change or texture size requirement change\n return target === this.target && this._numFeatures === map.numFeatures;\n }\n\n private matchesSubCategories(): boolean {\n if (this._contours === undefined && this.target.currentContours === undefined)\n return true;\n if (this._contours === undefined || this.target.currentContours === undefined)\n return false;\n if (this._contours.groups.length !== this.target.currentContours.groups.length)\n return false;\n for (let index = 0, len = this._contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n if (!this._contours.groups[index].subCategoriesEqual(this.target.currentContours.groups[index]))\n return false;\n }\n return true;\n }\n\n private _initialize(map: RenderFeatureTable) {\n assert(0 < map.numFeatures);\n this._numFeatures = map.numFeatures;\n const dims = computeDimensions(this._numFeatures, 1 / 8, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height * 8 >= this._numFeatures);\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, expectDefined(this.target.currentContours));\n this._lut = TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n this._lutWidth = width;\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle) {\n assert(this._numFeatures === map.numFeatures);\n const updater = new Texture2DDataUpdater(expectDefined(lut.dataBytes));\n this.buildLookupTable(updater, map, expectDefined(this.target.currentContours));\n lut.update(updater);\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, contours: ContourDisplay) {\n // setup an efficient way to compare feature subcategories with lists in terrains\n const subCatMap = new Id64.Uint32Map<number>();\n let defaultNdx = 0xf; // default for unmatched subcategories is to not show contours\n // NB: index also has to be a max of 14 - has to fit in 4 bits with value 15 reserved for no terrain def\n for (let index = 0, len = contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n const subCats = contours.groups[index].subCategories;\n if (OrderedId64Iterable.isEmptySet(subCats)) {\n defaultNdx = index; // change default for unmatched subcategories to this definition\n } else {\n for (const subCat of subCats)\n subCatMap.setById(subCat, index);\n }\n }\n\n // NB: We currently use 1/2 of one component of RGBA value per feature as follows:\n // [0] R/G/B/A = index pair - lower 4 bits = ndx n, upper 4 bits = ndx n+1\n let even = false;\n let byteOut = 0;\n let dataIndex = 0;\n for (const feature of map.iterable(scratchPackedFeature)) {\n dataIndex = Math.floor(feature.index * 0.5);\n even = (feature.index & 1) === 0;\n const terrainNdx = subCatMap.get(feature.subCategoryId.lower, feature.subCategoryId.upper) ?? defaultNdx;\n if (even)\n byteOut = terrainNdx;\n else\n data.setByteAtIndex(dataIndex, (terrainNdx << 4) | byteOut);\n }\n if (even) // not written\n data.setByteAtIndex(dataIndex, byteOut);\n }\n\n private constructor(target: Target, options: BatchOptions) {\n this.target = target;\n this._options = options;\n this._contours = target.currentContours;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions) {\n return new Contours(target, options);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n return undefined;\n }\n\n public initFromMap(map: RenderFeatureTable) {\n this._lut = dispose(this._lut);\n this._initialize(map);\n }\n\n public update(features: RenderFeatureTable) {\n if (this.matchesSubCategories())\n return;\n this._contours = this.target.currentContours;\n\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(features, this._lut);\n }\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n uniform.setUniform1ui(this._lutWidth);\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.Contours);\n }\n}\n"]}
@@ -212,32 +212,32 @@ class EyeDomeLighting {
212
212
  fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {
213
213
  if (bundle.edlCalcBasicGeom === undefined) {
214
214
  const ct1 = edlParams.inputTex;
215
- const ctd = this._depth.getHandle();
216
- bundle.edlCalcBasicGeom = CachedGeometry_1.EDLCalcBasicGeometry.createGeometry(ct1.getHandle(), ctd, ct1.width, ct1.height);
215
+ const ctd = (0, core_bentley_1.expectDefined)(this._depth?.getHandle());
216
+ bundle.edlCalcBasicGeom = CachedGeometry_1.EDLCalcBasicGeometry.createGeometry((0, core_bentley_1.expectDefined)(ct1.getHandle()), ctd, ct1.width, ct1.height);
217
217
  }
218
- const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, bundle.edlCalcBasicGeom);
218
+ const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, (0, core_bentley_1.expectDefined)(bundle.edlCalcBasicGeom));
219
219
  this._target.techniques.draw(params);
220
220
  });
221
221
  }
222
222
  else { // EDLMode.Full
223
223
  // draw with full method based on original paper using full, 1/2, and 1/4 sizes
224
- const edlCalc2FB = [bundle.edlCalcFbo1, bundle.edlCalcFbo2, bundle.edlCalcFbo4];
224
+ const edlCalc2FB = [(0, core_bentley_1.expectDefined)(bundle.edlCalcFbo1), (0, core_bentley_1.expectDefined)(bundle.edlCalcFbo2), (0, core_bentley_1.expectDefined)(bundle.edlCalcFbo4)];
225
225
  if (bundle.edlCalcFullGeom === undefined) {
226
226
  const ct1 = edlParams.inputTex;
227
227
  const ct2 = bundle.edlCalcTex2;
228
228
  const ct4 = bundle.edlCalcTex4;
229
- const ctd = this._depth.getHandle();
230
- bundle.edlCalcFullGeom = [CachedGeometry_1.EDLCalcFullGeometry.createGeometry(ct1.getHandle(), ctd, 1, ct1.width, ct1.height),
231
- CachedGeometry_1.EDLCalcFullGeometry.createGeometry(ct1.getHandle(), ctd, 2, ct2.width, ct2.height),
232
- CachedGeometry_1.EDLCalcFullGeometry.createGeometry(ct1.getHandle(), ctd, 4, ct4.width, ct4.height)];
229
+ const ctd = (0, core_bentley_1.expectDefined)(this._depth?.getHandle());
230
+ bundle.edlCalcFullGeom = [CachedGeometry_1.EDLCalcFullGeometry.createGeometry((0, core_bentley_1.expectDefined)(ct1.getHandle()), ctd, 1, ct1.width, ct1.height),
231
+ CachedGeometry_1.EDLCalcFullGeometry.createGeometry((0, core_bentley_1.expectDefined)(ct1.getHandle()), ctd, 2, (0, core_bentley_1.expectDefined)(ct2?.width), (0, core_bentley_1.expectDefined)(ct2?.height)),
232
+ CachedGeometry_1.EDLCalcFullGeometry.createGeometry((0, core_bentley_1.expectDefined)(ct1.getHandle()), ctd, 4, (0, core_bentley_1.expectDefined)(ct4?.width), (0, core_bentley_1.expectDefined)(ct4?.height))];
233
233
  }
234
- const edlFiltFbos = [bundle.edlFiltFbo2, bundle.edlFiltFbo4];
234
+ const edlFiltFbos = [(0, core_bentley_1.expectDefined)(bundle.edlFiltFbo2), (0, core_bentley_1.expectDefined)(bundle.edlFiltFbo4)];
235
235
  if (bundle.edlFiltGeom === undefined) {
236
236
  const ft2 = bundle.edlCalcTex2;
237
237
  const ft4 = bundle.edlCalcTex4;
238
- const ftd = this._depth.getHandle();
239
- bundle.edlFiltGeom = [CachedGeometry_1.EDLFilterGeometry.createGeometry(ft2.getHandle(), ftd, 2, ft2.width, ft2.height),
240
- CachedGeometry_1.EDLFilterGeometry.createGeometry(ft4.getHandle(), ftd, 4, ft4.width, ft4.height)];
238
+ const ftd = (0, core_bentley_1.expectDefined)(this._depth?.getHandle());
239
+ bundle.edlFiltGeom = [CachedGeometry_1.EDLFilterGeometry.createGeometry((0, core_bentley_1.expectDefined)(ft2?.getHandle()), ftd, 2, (0, core_bentley_1.expectDefined)(ft2?.width), (0, core_bentley_1.expectDefined)(ft2?.height)),
240
+ CachedGeometry_1.EDLFilterGeometry.createGeometry((0, core_bentley_1.expectDefined)(ft4?.getHandle()), ftd, 4, (0, core_bentley_1.expectDefined)(ft4?.width), (0, core_bentley_1.expectDefined)(ft4?.height))];
241
241
  }
242
242
  const gl = System_1.System.instance.context;
243
243
  // Loop through the 3 sizes calculating an edl buffer, and if not first size, then optionally filtering those
@@ -245,21 +245,21 @@ class EyeDomeLighting {
245
245
  fbStack.execute(edlCalc2FB[i], true, false, () => {
246
246
  const colTex = edlCalc2FB[i].getColor(0);
247
247
  gl.viewport(0, 0, colTex.width, colTex.height); // have to set viewport to current texture size
248
- const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, bundle.edlCalcFullGeom[i]);
248
+ const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, (0, core_bentley_1.expectDefined)(bundle.edlCalcFullGeom?.[i]));
249
249
  this._target.techniques.draw(params);
250
250
  });
251
251
  if (edlParams.edlFilter && i > 0) {
252
252
  fbStack.execute(edlFiltFbos[i - 1], true, false, () => {
253
- const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, bundle.edlFiltGeom[i - 1]);
253
+ const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, (0, core_bentley_1.expectDefined)(bundle.edlFiltGeom?.[i - 1]));
254
254
  this._target.techniques.draw(params);
255
255
  });
256
256
  }
257
257
  }
258
258
  gl.viewport(0, 0, this._width, this._height); // Restore viewport
259
259
  // Now combine the 3 results and output
260
- const tex1 = bundle.edlCalcTex1.getHandle();
261
- const tex2 = edlParams.edlFilter ? bundle.edlFiltTex2.getHandle() : bundle.edlCalcTex2.getHandle();
262
- const tex4 = edlParams.edlFilter ? bundle.edlFiltTex4.getHandle() : bundle.edlCalcTex4.getHandle();
260
+ const tex1 = (0, core_bentley_1.expectDefined)(bundle.edlCalcTex1?.getHandle());
261
+ const tex2 = (0, core_bentley_1.expectDefined)(edlParams.edlFilter ? bundle.edlFiltTex2?.getHandle() : bundle.edlCalcTex2?.getHandle());
262
+ const tex4 = (0, core_bentley_1.expectDefined)(edlParams.edlFilter ? bundle.edlFiltTex4?.getHandle() : bundle.edlCalcTex4?.getHandle());
263
263
  fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {
264
264
  if (bundle.edlMixGeom === undefined) {
265
265
  bundle.edlMixGeom = CachedGeometry_1.EDLMixGeometry.createGeometry(tex1, tex2, tex4);
@@ -270,7 +270,7 @@ class EyeDomeLighting {
270
270
  bundle.edlMixGeom = CachedGeometry_1.EDLMixGeometry.createGeometry(tex1, tex2, tex4);
271
271
  }
272
272
  }
273
- const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, bundle.edlMixGeom);
273
+ const params = (0, ScratchDrawParams_1.getDrawParams)(this._target, (0, core_bentley_1.expectDefined)(bundle.edlMixGeom));
274
274
  this._target.techniques.draw(params);
275
275
  });
276
276
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EDL.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/EDL.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sDAAsD;AAEtD,qDAAgH;AAEhH,+CAAyD;AACzD,6BAA0B;AAE1B,+CAA4C;AAC5C,uDAAwF;AACxF,2DAAoD;AACpD,qCAAkC;AAElC,uCAA0C;AAE1C,MAAM,MAAM;IAED;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IAhBT,YACS,WAA2B,EAC3B,WAA2B,EAC3B,WAA2B,EAC3B,WAA2B,EAC3B,WAA2B,EAE3B,WAAyB,EACzB,WAAyB,EACzB,WAAyB,EACzB,WAAyB,EACzB,WAAyB,EAEzB,gBAAuC,EACvC,eAAqH,EACrH,WAA4E,EAC5E,UAA2B;QAf3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAE3B,gBAAW,GAAX,WAAW,CAAc;QACzB,gBAAW,GAAX,WAAW,CAAc;QACzB,gBAAW,GAAX,WAAW,CAAc;QACzB,gBAAW,GAAX,WAAW,CAAc;QACzB,gBAAW,GAAX,WAAW,CAAc;QAEzB,qBAAgB,GAAhB,gBAAgB,CAAuB;QACvC,oBAAe,GAAf,eAAe,CAAsG;QACrH,gBAAW,GAAX,WAAW,CAAiE;QAC5E,eAAU,GAAV,UAAU,CAAiB;IACpC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,MAAc;QAChD,MAAM,WAAW,GAAG,uBAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/H,MAAM,WAAW,GAAG,uBAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzI,MAAM,WAAW,GAAG,uBAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzI,MAAM,WAAW,GAAG,uBAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzI,MAAM,WAAW,GAAG,uBAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzI,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAClJ,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAClJ,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,IAAA,sBAAO,EAAC,WAAW,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACtJ,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,SAAS,KAAK,IAAI,CAAC,WAAW;eAChC,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,gBAAgB;eACnC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;eACvC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;eACvC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;eACvC,SAAS,KAAK,IAAI,CAAC,eAAe;eAClC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;eACnC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;eACnC,SAAS,KAAK,IAAI,CAAC,WAAW;eAC9B,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC;IACrC,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,gBAAgB;AAChB,IAAY,OAAyB;AAArC,WAAY,OAAO;IAAG,mCAAG,CAAA;IAAE,iCAAE,CAAA;IAAE,qCAAI,CAAA;AAAC,CAAC,EAAzB,OAAO,uBAAP,OAAO,QAAkB;AAWrC,MAAa,eAAe;IAClB,OAAO,CAAU;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,MAAM,CAAe,CAAE,sFAAsF;IAC7G,YAAY,CAAe;IAC3B,aAAa,CAAsE;IAC1E,OAAO,CAAS;IAEzB,SAAS;QACf,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAmB,MAAc;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxC,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,MAAc,EAAE,KAAkB;QAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,mEAAmE;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAA,0CAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpD,IAAA,0CAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpD,IAAA,0CAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpD,IAAA,0CAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpD,IAAA,0CAAwB,EAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAEpD,IAAA,2CAAyB,EAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAA,2CAAyB,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAA,2CAAyB,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAA,2CAAyB,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAA,2CAAyB,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAA,2CAAyB,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAA,2CAAyB,EAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnG,CAAC,MAAM,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,SAAwB;QAClC,IAAI,SAAS,KAAK,SAAS,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM;YACjG,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO,KAAK,CAAC;QAEf,yFAAyF;QACzF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,SAAS,CAAC,GAAG;YAC9E,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,MAAM,OAAO,GAAG,CAAC,OAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,SAAS,EACxE,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACnH,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;gBACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,eAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACjD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC5C,eAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC;QAEvD,6EAA6E;QAC7E,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YACrC,8DAA8D;YAC9D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE;gBAC1D,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAO,CAAC,SAAS,EAAG,CAAC;oBACtC,MAAM,CAAC,gBAAgB,GAAG,qCAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9G,CAAC;gBACD,MAAM,MAAM,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;gBACrE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC,CAAC,eAAe;YACtB,+EAA+E;YAC/E,MAAM,UAAU,GAAkB,CAAC,MAAM,CAAC,WAAY,EAAE,MAAM,CAAC,WAAY,EAAE,MAAM,CAAC,WAAY,CAAC,CAAC;YAClG,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAG,CAAC;gBACrC,MAAM,CAAC,eAAe,GAAG,CAAC,oCAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;oBAC7G,oCAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAI,CAAC,KAAK,EAAE,GAAI,CAAC,MAAM,CAAC;oBACrF,oCAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAI,CAAC,KAAK,EAAE,GAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzF,CAAC;YAED,MAAM,WAAW,GAAkB,CAAC,MAAM,CAAC,WAAY,EAAE,MAAM,CAAC,WAAY,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAG,CAAC;gBACrC,MAAM,CAAC,WAAW,GAAG,CAAC,kCAAiB,CAAC,cAAc,CAAC,GAAI,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAI,CAAC,KAAK,EAAE,GAAI,CAAC,MAAM,CAAC;oBAC1G,kCAAiB,CAAC,cAAc,CAAC,GAAI,CAAC,SAAS,EAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAI,CAAC,KAAK,EAAE,GAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,EAAE,GAAG,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnC,6GAA6G;YAC7G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACzC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,+CAA+C;oBAC/F,MAAM,MAAM,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,eAAgB,CAAC,CAAC,CAAE,CAAC,CAAC;oBACxE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBAEH,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;wBACpD,MAAM,MAAM,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,WAAY,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;wBACxE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;YAEjE,uCAAuC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAY,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,EAAE,CAAC;YACrG,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,EAAE,CAAC;YACrG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE;gBAC1D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACpC,MAAM,CAAC,UAAU,GAAG,+BAAc,CAAC,cAAc,CAAC,IAAK,EAAE,IAAK,EAAE,IAAK,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;wBACrI,IAAA,sBAAO,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBAC3B,MAAM,CAAC,UAAU,GAAG,+BAAc,CAAC,cAAc,CAAC,IAAK,EAAE,IAAK,EAAE,IAAK,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,IAAA,iCAAa,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,UAAW,CAAC,CAAC;gBAC/D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjKD,0CAiKC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { EDLCalcBasicGeometry, EDLCalcFullGeometry, EDLFilterGeometry, EDLMixGeometry } from \"./CachedGeometry\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DepthBuffer, FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { RenderState } from \"./RenderState\";\nimport { collectGeometryStatistics, collectTextureStatistics } from \"./SceneCompositor\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TextureHandle } from \"./Texture\";\n\nclass Bundle implements WebGLDisposable {\n private constructor(\n public edlCalcTex1?: TextureHandle,\n public edlCalcTex2?: TextureHandle,\n public edlCalcTex4?: TextureHandle,\n public edlFiltTex2?: TextureHandle,\n public edlFiltTex4?: TextureHandle,\n\n public edlCalcFbo1?: FrameBuffer,\n public edlCalcFbo2?: FrameBuffer,\n public edlCalcFbo4?: FrameBuffer,\n public edlFiltFbo2?: FrameBuffer,\n public edlFiltFbo4?: FrameBuffer,\n\n public edlCalcBasicGeom?: EDLCalcBasicGeometry,\n public edlCalcFullGeom?: [EDLCalcFullGeometry | undefined, EDLCalcFullGeometry | undefined, EDLCalcFullGeometry | undefined],\n public edlFiltGeom?: [EDLFilterGeometry | undefined, EDLFilterGeometry | undefined],\n public edlMixGeom?: EDLMixGeometry) {\n }\n\n public static create(width: number, height: number): Bundle | undefined {\n const edlCalcTex1 = TextureHandle.createForAttachment(width, height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlCalcTex2 = TextureHandle.createForAttachment(width >> 1, height >> 1, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlCalcTex4 = TextureHandle.createForAttachment(width >> 2, height >> 2, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlFiltTex2 = TextureHandle.createForAttachment(width >> 1, height >> 1, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlFiltTex4 = TextureHandle.createForAttachment(width >> 2, height >> 2, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === edlCalcTex1 || undefined === edlCalcTex2 || undefined === edlCalcTex4 || undefined === edlFiltTex2 || undefined === edlFiltTex4) {\n dispose(edlCalcTex1);\n dispose(edlCalcTex2);\n dispose(edlCalcTex4);\n dispose(edlFiltTex2);\n dispose(edlFiltTex4);\n return undefined;\n }\n const edlCalcFbo1 = FrameBuffer.create([edlCalcTex1]);\n const edlCalcFbo2 = FrameBuffer.create([edlCalcTex2]);\n const edlCalcFbo4 = FrameBuffer.create([edlCalcTex4]);\n const edlFiltFbo2 = FrameBuffer.create([edlFiltTex2]);\n const edlFiltFbo4 = FrameBuffer.create([edlFiltTex4]);\n if (undefined === edlCalcFbo1 || undefined === edlCalcFbo2 || undefined === edlCalcFbo4 || undefined === edlFiltFbo2 || undefined === edlFiltFbo4) {\n dispose(edlCalcFbo1);\n dispose(edlCalcFbo2);\n dispose(edlCalcFbo4);\n dispose(edlFiltFbo2);\n dispose(edlFiltFbo4);\n return undefined;\n }\n return new Bundle(edlCalcTex1, edlCalcTex2, edlCalcTex4, edlFiltTex2, edlFiltTex4, edlCalcFbo1, edlCalcFbo2, edlCalcFbo4, edlFiltFbo2, edlFiltFbo4);\n }\n\n public get isDisposed(): boolean {\n return undefined === this.edlCalcTex1\n && undefined === this.edlCalcTex2\n && undefined === this.edlCalcTex4\n && undefined === this.edlFiltTex2\n && undefined === this.edlFiltTex4\n && undefined === this.edlCalcFbo1\n && undefined === this.edlCalcFbo2\n && undefined === this.edlCalcFbo4\n && undefined === this.edlFiltFbo2\n && undefined === this.edlFiltFbo4\n && undefined === this.edlCalcBasicGeom\n && undefined === this.edlCalcFullGeom?.[0]\n && undefined === this.edlCalcFullGeom?.[1]\n && undefined === this.edlCalcFullGeom?.[2]\n && undefined === this.edlCalcFullGeom\n && undefined === this.edlFiltGeom?.[0]\n && undefined === this.edlFiltGeom?.[1]\n && undefined === this.edlFiltGeom\n && undefined === this.edlMixGeom;\n }\n\n public [Symbol.dispose](): void {\n this.edlCalcTex1 = dispose(this.edlCalcTex1);\n this.edlCalcTex2 = dispose(this.edlCalcTex2);\n this.edlCalcTex4 = dispose(this.edlCalcTex4);\n this.edlFiltTex2 = dispose(this.edlFiltTex2);\n this.edlFiltTex4 = dispose(this.edlFiltTex4);\n this.edlCalcFbo1 = dispose(this.edlCalcFbo1);\n this.edlCalcFbo2 = dispose(this.edlCalcFbo2);\n this.edlCalcFbo4 = dispose(this.edlCalcFbo4);\n this.edlFiltFbo2 = dispose(this.edlFiltFbo2);\n this.edlFiltFbo4 = dispose(this.edlFiltFbo4);\n this.edlCalcBasicGeom = dispose(this.edlCalcBasicGeom);\n if (this.edlCalcFullGeom) {\n this.edlCalcFullGeom[0] = dispose(this.edlCalcFullGeom?.[0]);\n this.edlCalcFullGeom[1] = dispose(this.edlCalcFullGeom?.[1]);\n this.edlCalcFullGeom[2] = dispose(this.edlCalcFullGeom?.[2]);\n this.edlCalcFullGeom = undefined;\n }\n if (this.edlFiltGeom) {\n this.edlFiltGeom[0] = dispose(this.edlFiltGeom?.[0]);\n this.edlFiltGeom[1] = dispose(this.edlFiltGeom?.[1]);\n this.edlFiltGeom = undefined;\n }\n this.edlMixGeom = dispose(this.edlMixGeom);\n }\n}\n\n/** @internal */\nexport enum EDLMode { Off, On, Full }\n\n/** @internal */\nexport interface EDLDrawParams {\n inputTex: TextureHandle; // input to calc EDL from\n curFbo: FrameBuffer; // output fbo to get color texture from for EDL to put result in\n edlMode: EDLMode;\n edlFilter: boolean; // applies to Full mode only\n useMsBuffers: boolean;\n}\n\nexport class EyeDomeLighting implements RenderMemory.Consumer, WebGLDisposable {\n private _bundle?: Bundle;\n private _width: number;\n private _height: number;\n private _depth?: DepthBuffer; // depth buffer to read from, has to be non-MS and be up to date in draw if MS is used\n private _edlFinalFbo?: FrameBuffer;\n private _edlFinalBufs?: { tex: TextureHandle, msBuf: RenderBufferMultiSample | undefined };\n private readonly _target: Target;\n\n private getBundle(): Bundle | undefined {\n if (undefined === this._bundle) {\n this._bundle = Bundle.create(this._width, this._height);\n assert(undefined !== this._bundle);\n }\n return this._bundle;\n }\n\n public constructor(target: Target) {\n this._target = target;\n this._width = target.viewRect.width;\n this._height = target.viewRect.height;\n }\n\n public init(width: number, height: number, depth: DepthBuffer): boolean {\n this._width = width;\n this._height = height;\n this._depth = depth;\n // don't create buffers until we know we will use them (first draw)\n return true;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bundle = this._bundle;\n if (undefined !== bundle) {\n collectTextureStatistics(bundle.edlCalcTex1, stats);\n collectTextureStatistics(bundle.edlCalcTex2, stats);\n collectTextureStatistics(bundle.edlCalcTex4, stats);\n collectTextureStatistics(bundle.edlFiltTex2, stats);\n collectTextureStatistics(bundle.edlFiltTex4, stats);\n\n collectGeometryStatistics(bundle.edlCalcBasicGeom, stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[0], stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[1], stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[2], stats);\n collectGeometryStatistics(bundle.edlFiltGeom?.[0], stats);\n collectGeometryStatistics(bundle.edlFiltGeom?.[1], stats);\n collectGeometryStatistics(bundle.edlMixGeom, stats);\n }\n }\n\n public get isDisposed(): boolean { return undefined === this._bundle && undefined === this._edlFinalFbo; }\n\n public [Symbol.dispose]() {\n this._bundle = dispose(this._bundle);\n this._edlFinalFbo = dispose(this._edlFinalFbo);\n }\n\n public reset() {\n this[Symbol.dispose]();\n }\n\n /** calculate EyeDomeLighting at specified quality using screen space shaders\n * returns true if succeeds\n */\n public draw(edlParams: EDLDrawParams): boolean {\n if (undefined === edlParams.inputTex || undefined === this._depth || undefined === edlParams.curFbo)\n return false;\n\n const bundle = this.getBundle();\n if (undefined === bundle)\n return false;\n\n // NB: have to test and create MS buffer as well if useMsBuffers, not outputting to depth\n const finalBufs = edlParams.curFbo.getColorTargets(edlParams.useMsBuffers, 0);\n if (undefined === this._edlFinalFbo || this._edlFinalBufs?.tex !== finalBufs.tex ||\n (edlParams.useMsBuffers && this._edlFinalBufs?.msBuf !== finalBufs.msBuf)) {\n this._edlFinalFbo = dispose(this._edlFinalFbo);\n this._edlFinalBufs = finalBufs;\n const filters = [GL.MultiSampling.Filter.Linear];\n this._edlFinalFbo = FrameBuffer.create([this._edlFinalBufs.tex], undefined,\n edlParams.useMsBuffers && this._edlFinalBufs.msBuf ? [this._edlFinalBufs.msBuf] : undefined, filters, undefined);\n if (undefined === this._edlFinalFbo)\n return false;\n }\n\n const fbStack = System.instance.frameBufferStack;\n const useMsBuffers = edlParams.useMsBuffers;\n System.instance.applyRenderState(RenderState.defaults);\n\n // ###TODO: should radius be (optionally?) voxel based instead of pixel here?\n if (edlParams.edlMode === EDLMode.On) {\n // draw using single pass version (still 8 samples, full size)\n fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {\n if (bundle.edlCalcBasicGeom === undefined) {\n const ct1 = edlParams.inputTex;\n const ctd = this._depth!.getHandle()!;\n bundle.edlCalcBasicGeom = EDLCalcBasicGeometry.createGeometry(ct1.getHandle()!, ctd, ct1.width, ct1.height);\n }\n const params = getDrawParams(this._target, bundle.edlCalcBasicGeom!);\n this._target.techniques.draw(params);\n });\n } else { // EDLMode.Full\n // draw with full method based on original paper using full, 1/2, and 1/4 sizes\n const edlCalc2FB: FrameBuffer[] = [bundle.edlCalcFbo1!, bundle.edlCalcFbo2!, bundle.edlCalcFbo4!];\n if (bundle.edlCalcFullGeom === undefined) {\n const ct1 = edlParams.inputTex;\n const ct2 = bundle.edlCalcTex2;\n const ct4 = bundle.edlCalcTex4;\n const ctd = this._depth.getHandle()!;\n bundle.edlCalcFullGeom = [EDLCalcFullGeometry.createGeometry(ct1.getHandle()!, ctd, 1, ct1.width, ct1.height),\n EDLCalcFullGeometry.createGeometry(ct1.getHandle()!, ctd, 2, ct2!.width, ct2!.height),\n EDLCalcFullGeometry.createGeometry(ct1.getHandle()!, ctd, 4, ct4!.width, ct4!.height)];\n }\n\n const edlFiltFbos: FrameBuffer[] = [bundle.edlFiltFbo2!, bundle.edlFiltFbo4!];\n if (bundle.edlFiltGeom === undefined) {\n const ft2 = bundle.edlCalcTex2;\n const ft4 = bundle.edlCalcTex4;\n const ftd = this._depth.getHandle()!;\n bundle.edlFiltGeom = [EDLFilterGeometry.createGeometry(ft2!.getHandle()!, ftd, 2, ft2!.width, ft2!.height),\n EDLFilterGeometry.createGeometry(ft4!.getHandle()!, ftd, 4, ft4!.width, ft4!.height)];\n }\n\n const gl = System.instance.context;\n // Loop through the 3 sizes calculating an edl buffer, and if not first size, then optionally filtering those\n for (let i = 0; i < 3; ++i) {\n fbStack.execute(edlCalc2FB[i], true, false, () => {\n const colTex = edlCalc2FB[i].getColor(0);\n gl.viewport(0, 0, colTex.width, colTex.height); // have to set viewport to current texture size\n const params = getDrawParams(this._target, bundle.edlCalcFullGeom![i]!);\n this._target.techniques.draw(params);\n });\n\n if (edlParams.edlFilter && i > 0) {\n fbStack.execute(edlFiltFbos[i - 1], true, false, () => {\n const params = getDrawParams(this._target, bundle.edlFiltGeom![i - 1]!);\n this._target.techniques.draw(params);\n });\n }\n }\n gl.viewport(0, 0, this._width, this._height); // Restore viewport\n\n // Now combine the 3 results and output\n const tex1 = bundle.edlCalcTex1!.getHandle();\n const tex2 = edlParams.edlFilter ? bundle.edlFiltTex2!.getHandle() : bundle.edlCalcTex2!.getHandle();\n const tex4 = edlParams.edlFilter ? bundle.edlFiltTex4!.getHandle() : bundle.edlCalcTex4!.getHandle();\n fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {\n if (bundle.edlMixGeom === undefined) {\n bundle.edlMixGeom = EDLMixGeometry.createGeometry(tex1!, tex2!, tex4!);\n } else {\n if (bundle.edlMixGeom.colorTexture1 !== tex1 || bundle.edlMixGeom.colorTexture2 !== tex2 || bundle.edlMixGeom.colorTexture4 !== tex4) {\n dispose(bundle.edlMixGeom);\n bundle.edlMixGeom = EDLMixGeometry.createGeometry(tex1!, tex2!, tex4!);\n }\n }\n const params = getDrawParams(this._target, bundle.edlMixGeom!);\n this._target.techniques.draw(params);\n });\n }\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"EDL.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/EDL.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, expectDefined } from \"@itwin/core-bentley\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { EDLCalcBasicGeometry, EDLCalcFullGeometry, EDLFilterGeometry, EDLMixGeometry } from \"./CachedGeometry\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DepthBuffer, FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { RenderBufferMultiSample } from \"./RenderBuffer\";\nimport { RenderState } from \"./RenderState\";\nimport { collectGeometryStatistics, collectTextureStatistics } from \"./SceneCompositor\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TextureHandle } from \"./Texture\";\n\nclass Bundle implements WebGLDisposable {\n private constructor(\n public edlCalcTex1?: TextureHandle,\n public edlCalcTex2?: TextureHandle,\n public edlCalcTex4?: TextureHandle,\n public edlFiltTex2?: TextureHandle,\n public edlFiltTex4?: TextureHandle,\n\n public edlCalcFbo1?: FrameBuffer,\n public edlCalcFbo2?: FrameBuffer,\n public edlCalcFbo4?: FrameBuffer,\n public edlFiltFbo2?: FrameBuffer,\n public edlFiltFbo4?: FrameBuffer,\n\n public edlCalcBasicGeom?: EDLCalcBasicGeometry,\n public edlCalcFullGeom?: [EDLCalcFullGeometry | undefined, EDLCalcFullGeometry | undefined, EDLCalcFullGeometry | undefined],\n public edlFiltGeom?: [EDLFilterGeometry | undefined, EDLFilterGeometry | undefined],\n public edlMixGeom?: EDLMixGeometry) {\n }\n\n public static create(width: number, height: number): Bundle | undefined {\n const edlCalcTex1 = TextureHandle.createForAttachment(width, height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlCalcTex2 = TextureHandle.createForAttachment(width >> 1, height >> 1, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlCalcTex4 = TextureHandle.createForAttachment(width >> 2, height >> 2, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlFiltTex2 = TextureHandle.createForAttachment(width >> 1, height >> 1, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n const edlFiltTex4 = TextureHandle.createForAttachment(width >> 2, height >> 2, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === edlCalcTex1 || undefined === edlCalcTex2 || undefined === edlCalcTex4 || undefined === edlFiltTex2 || undefined === edlFiltTex4) {\n dispose(edlCalcTex1);\n dispose(edlCalcTex2);\n dispose(edlCalcTex4);\n dispose(edlFiltTex2);\n dispose(edlFiltTex4);\n return undefined;\n }\n const edlCalcFbo1 = FrameBuffer.create([edlCalcTex1]);\n const edlCalcFbo2 = FrameBuffer.create([edlCalcTex2]);\n const edlCalcFbo4 = FrameBuffer.create([edlCalcTex4]);\n const edlFiltFbo2 = FrameBuffer.create([edlFiltTex2]);\n const edlFiltFbo4 = FrameBuffer.create([edlFiltTex4]);\n if (undefined === edlCalcFbo1 || undefined === edlCalcFbo2 || undefined === edlCalcFbo4 || undefined === edlFiltFbo2 || undefined === edlFiltFbo4) {\n dispose(edlCalcFbo1);\n dispose(edlCalcFbo2);\n dispose(edlCalcFbo4);\n dispose(edlFiltFbo2);\n dispose(edlFiltFbo4);\n return undefined;\n }\n return new Bundle(edlCalcTex1, edlCalcTex2, edlCalcTex4, edlFiltTex2, edlFiltTex4, edlCalcFbo1, edlCalcFbo2, edlCalcFbo4, edlFiltFbo2, edlFiltFbo4);\n }\n\n public get isDisposed(): boolean {\n return undefined === this.edlCalcTex1\n && undefined === this.edlCalcTex2\n && undefined === this.edlCalcTex4\n && undefined === this.edlFiltTex2\n && undefined === this.edlFiltTex4\n && undefined === this.edlCalcFbo1\n && undefined === this.edlCalcFbo2\n && undefined === this.edlCalcFbo4\n && undefined === this.edlFiltFbo2\n && undefined === this.edlFiltFbo4\n && undefined === this.edlCalcBasicGeom\n && undefined === this.edlCalcFullGeom?.[0]\n && undefined === this.edlCalcFullGeom?.[1]\n && undefined === this.edlCalcFullGeom?.[2]\n && undefined === this.edlCalcFullGeom\n && undefined === this.edlFiltGeom?.[0]\n && undefined === this.edlFiltGeom?.[1]\n && undefined === this.edlFiltGeom\n && undefined === this.edlMixGeom;\n }\n\n public [Symbol.dispose](): void {\n this.edlCalcTex1 = dispose(this.edlCalcTex1);\n this.edlCalcTex2 = dispose(this.edlCalcTex2);\n this.edlCalcTex4 = dispose(this.edlCalcTex4);\n this.edlFiltTex2 = dispose(this.edlFiltTex2);\n this.edlFiltTex4 = dispose(this.edlFiltTex4);\n this.edlCalcFbo1 = dispose(this.edlCalcFbo1);\n this.edlCalcFbo2 = dispose(this.edlCalcFbo2);\n this.edlCalcFbo4 = dispose(this.edlCalcFbo4);\n this.edlFiltFbo2 = dispose(this.edlFiltFbo2);\n this.edlFiltFbo4 = dispose(this.edlFiltFbo4);\n this.edlCalcBasicGeom = dispose(this.edlCalcBasicGeom);\n if (this.edlCalcFullGeom) {\n this.edlCalcFullGeom[0] = dispose(this.edlCalcFullGeom?.[0]);\n this.edlCalcFullGeom[1] = dispose(this.edlCalcFullGeom?.[1]);\n this.edlCalcFullGeom[2] = dispose(this.edlCalcFullGeom?.[2]);\n this.edlCalcFullGeom = undefined;\n }\n if (this.edlFiltGeom) {\n this.edlFiltGeom[0] = dispose(this.edlFiltGeom?.[0]);\n this.edlFiltGeom[1] = dispose(this.edlFiltGeom?.[1]);\n this.edlFiltGeom = undefined;\n }\n this.edlMixGeom = dispose(this.edlMixGeom);\n }\n}\n\n/** @internal */\nexport enum EDLMode { Off, On, Full }\n\n/** @internal */\nexport interface EDLDrawParams {\n inputTex: TextureHandle; // input to calc EDL from\n curFbo: FrameBuffer; // output fbo to get color texture from for EDL to put result in\n edlMode: EDLMode;\n edlFilter: boolean; // applies to Full mode only\n useMsBuffers: boolean;\n}\n\nexport class EyeDomeLighting implements RenderMemory.Consumer, WebGLDisposable {\n private _bundle?: Bundle;\n private _width: number;\n private _height: number;\n private _depth?: DepthBuffer; // depth buffer to read from, has to be non-MS and be up to date in draw if MS is used\n private _edlFinalFbo?: FrameBuffer;\n private _edlFinalBufs?: { tex: TextureHandle, msBuf: RenderBufferMultiSample | undefined };\n private readonly _target: Target;\n\n private getBundle(): Bundle | undefined {\n if (undefined === this._bundle) {\n this._bundle = Bundle.create(this._width, this._height);\n assert(undefined !== this._bundle);\n }\n return this._bundle;\n }\n\n public constructor(target: Target) {\n this._target = target;\n this._width = target.viewRect.width;\n this._height = target.viewRect.height;\n }\n\n public init(width: number, height: number, depth: DepthBuffer): boolean {\n this._width = width;\n this._height = height;\n this._depth = depth;\n // don't create buffers until we know we will use them (first draw)\n return true;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bundle = this._bundle;\n if (undefined !== bundle) {\n collectTextureStatistics(bundle.edlCalcTex1, stats);\n collectTextureStatistics(bundle.edlCalcTex2, stats);\n collectTextureStatistics(bundle.edlCalcTex4, stats);\n collectTextureStatistics(bundle.edlFiltTex2, stats);\n collectTextureStatistics(bundle.edlFiltTex4, stats);\n\n collectGeometryStatistics(bundle.edlCalcBasicGeom, stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[0], stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[1], stats);\n collectGeometryStatistics(bundle.edlCalcFullGeom?.[2], stats);\n collectGeometryStatistics(bundle.edlFiltGeom?.[0], stats);\n collectGeometryStatistics(bundle.edlFiltGeom?.[1], stats);\n collectGeometryStatistics(bundle.edlMixGeom, stats);\n }\n }\n\n public get isDisposed(): boolean { return undefined === this._bundle && undefined === this._edlFinalFbo; }\n\n public [Symbol.dispose]() {\n this._bundle = dispose(this._bundle);\n this._edlFinalFbo = dispose(this._edlFinalFbo);\n }\n\n public reset() {\n this[Symbol.dispose]();\n }\n\n /** calculate EyeDomeLighting at specified quality using screen space shaders\n * returns true if succeeds\n */\n public draw(edlParams: EDLDrawParams): boolean {\n if (undefined === edlParams.inputTex || undefined === this._depth || undefined === edlParams.curFbo)\n return false;\n\n const bundle = this.getBundle();\n if (undefined === bundle)\n return false;\n\n // NB: have to test and create MS buffer as well if useMsBuffers, not outputting to depth\n const finalBufs = edlParams.curFbo.getColorTargets(edlParams.useMsBuffers, 0);\n if (undefined === this._edlFinalFbo || this._edlFinalBufs?.tex !== finalBufs.tex ||\n (edlParams.useMsBuffers && this._edlFinalBufs?.msBuf !== finalBufs.msBuf)) {\n this._edlFinalFbo = dispose(this._edlFinalFbo);\n this._edlFinalBufs = finalBufs;\n const filters = [GL.MultiSampling.Filter.Linear];\n this._edlFinalFbo = FrameBuffer.create([this._edlFinalBufs.tex], undefined,\n edlParams.useMsBuffers && this._edlFinalBufs.msBuf ? [this._edlFinalBufs.msBuf] : undefined, filters, undefined);\n if (undefined === this._edlFinalFbo)\n return false;\n }\n\n const fbStack = System.instance.frameBufferStack;\n const useMsBuffers = edlParams.useMsBuffers;\n System.instance.applyRenderState(RenderState.defaults);\n\n // ###TODO: should radius be (optionally?) voxel based instead of pixel here?\n if (edlParams.edlMode === EDLMode.On) {\n // draw using single pass version (still 8 samples, full size)\n fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {\n if (bundle.edlCalcBasicGeom === undefined) {\n const ct1 = edlParams.inputTex;\n const ctd = expectDefined(this._depth?.getHandle());\n bundle.edlCalcBasicGeom = EDLCalcBasicGeometry.createGeometry(expectDefined(ct1.getHandle()), ctd, ct1.width, ct1.height);\n }\n const params = getDrawParams(this._target, expectDefined(bundle.edlCalcBasicGeom));\n this._target.techniques.draw(params);\n });\n } else { // EDLMode.Full\n // draw with full method based on original paper using full, 1/2, and 1/4 sizes\n const edlCalc2FB: FrameBuffer[] = [expectDefined(bundle.edlCalcFbo1), expectDefined(bundle.edlCalcFbo2), expectDefined(bundle.edlCalcFbo4)];\n if (bundle.edlCalcFullGeom === undefined) {\n const ct1 = edlParams.inputTex;\n const ct2 = bundle.edlCalcTex2;\n const ct4 = bundle.edlCalcTex4;\n const ctd = expectDefined(this._depth?.getHandle());\n bundle.edlCalcFullGeom = [EDLCalcFullGeometry.createGeometry(expectDefined(ct1.getHandle()), ctd, 1, ct1.width, ct1.height),\n EDLCalcFullGeometry.createGeometry(expectDefined(ct1.getHandle()), ctd, 2, expectDefined(ct2?.width), expectDefined(ct2?.height)),\n EDLCalcFullGeometry.createGeometry(expectDefined(ct1.getHandle()), ctd, 4, expectDefined(ct4?.width), expectDefined(ct4?.height))];\n }\n\n const edlFiltFbos: FrameBuffer[] = [expectDefined(bundle.edlFiltFbo2), expectDefined(bundle.edlFiltFbo4)];\n if (bundle.edlFiltGeom === undefined) {\n const ft2 = bundle.edlCalcTex2;\n const ft4 = bundle.edlCalcTex4;\n const ftd = expectDefined(this._depth?.getHandle());\n bundle.edlFiltGeom = [EDLFilterGeometry.createGeometry(expectDefined(ft2?.getHandle()), ftd, 2, expectDefined(ft2?.width), expectDefined(ft2?.height)),\n EDLFilterGeometry.createGeometry(expectDefined(ft4?.getHandle()), ftd, 4, expectDefined(ft4?.width), expectDefined(ft4?.height))];\n }\n\n const gl = System.instance.context;\n // Loop through the 3 sizes calculating an edl buffer, and if not first size, then optionally filtering those\n for (let i = 0; i < 3; ++i) {\n fbStack.execute(edlCalc2FB[i], true, false, () => {\n const colTex = edlCalc2FB[i].getColor(0);\n gl.viewport(0, 0, colTex.width, colTex.height); // have to set viewport to current texture size\n const params = getDrawParams(this._target, expectDefined(bundle.edlCalcFullGeom?.[i]));\n this._target.techniques.draw(params);\n });\n\n if (edlParams.edlFilter && i > 0) {\n fbStack.execute(edlFiltFbos[i - 1], true, false, () => {\n const params = getDrawParams(this._target, expectDefined(bundle.edlFiltGeom?.[i - 1]));\n this._target.techniques.draw(params);\n });\n }\n }\n gl.viewport(0, 0, this._width, this._height); // Restore viewport\n\n // Now combine the 3 results and output\n const tex1 = expectDefined(bundle.edlCalcTex1?.getHandle());\n const tex2 = expectDefined(edlParams.edlFilter ? bundle.edlFiltTex2?.getHandle() : bundle.edlCalcTex2?.getHandle());\n const tex4 = expectDefined(edlParams.edlFilter ? bundle.edlFiltTex4?.getHandle() : bundle.edlCalcTex4?.getHandle());\n fbStack.execute(this._edlFinalFbo, true, useMsBuffers, () => {\n if (bundle.edlMixGeom === undefined) {\n bundle.edlMixGeom = EDLMixGeometry.createGeometry(tex1, tex2, tex4);\n } else {\n if (bundle.edlMixGeom.colorTexture1 !== tex1 || bundle.edlMixGeom.colorTexture2 !== tex2 || bundle.edlMixGeom.colorTexture4 !== tex4) {\n dispose(bundle.edlMixGeom);\n bundle.edlMixGeom = EDLMixGeometry.createGeometry(tex1, tex2, tex4);\n }\n }\n const params = getDrawParams(this._target, expectDefined(bundle.edlMixGeom));\n this._target.techniques.draw(params);\n });\n }\n return true;\n }\n}\n"]}
@@ -57,16 +57,16 @@ class FeatureOverrides {
57
57
  get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }
58
58
  updateUniformSymbologyFlags() {
59
59
  this._uniformSymbologyFlags = 0 /* EmphasisFlags.None */;
60
- if (!this.isUniform || !this._lut)
60
+ if (!this.isUniform || !this._lut?.dataBytes)
61
61
  return;
62
- let flags = this._lut.dataBytes[0];
62
+ let flags = (0, core_bentley_1.expectDefined)(this._lut.dataBytes[0]);
63
63
  if (0 !== (flags & 16 /* OvrFlags.Flashed */))
64
64
  this._uniformSymbologyFlags |= 4 /* EmphasisFlags.Flashed */;
65
65
  if (0 !== (flags & 32 /* OvrFlags.NonLocatable */))
66
66
  this._uniformSymbologyFlags |= 8 /* EmphasisFlags.NonLocatable */;
67
67
  if (!this._anyHilited)
68
68
  return;
69
- flags = this._lut.dataBytes[1] << 8;
69
+ flags = (0, core_bentley_1.expectDefined)(this._lut.dataBytes[1]) << 8;
70
70
  if (0 !== (flags & 256 /* OvrFlags.Hilited */))
71
71
  this._uniformSymbologyFlags |= 1 /* EmphasisFlags.Hilite */;
72
72
  if (0 !== (flags & 512 /* OvrFlags.Emphasized */))
@@ -92,7 +92,7 @@ class FeatureOverrides {
92
92
  return Texture_1.TextureHandle.createForData(width, height, data, true, GL_1.GL.Texture.WrapMode.ClampToEdge);
93
93
  }
94
94
  _update(map, lut, pickExcludes, flashed, hilites, ovrs) {
95
- const updater = new Texture_1.Texture2DDataUpdater(lut.dataBytes);
95
+ const updater = new Texture_1.Texture2DDataUpdater((0, core_bentley_1.expectDefined)(lut.dataBytes));
96
96
  if (undefined === ovrs) {
97
97
  this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);
98
98
  }