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

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 (610) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +2 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  33. package/lib/cjs/IModelConnection.js +8 -9
  34. package/lib/cjs/IModelConnection.js.map +1 -1
  35. package/lib/cjs/IpcApp.d.ts.map +1 -1
  36. package/lib/cjs/IpcApp.js +1 -1
  37. package/lib/cjs/IpcApp.js.map +1 -1
  38. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.js +2 -0
  40. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.js +2 -1
  43. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  44. package/lib/cjs/Marker.d.ts.map +1 -1
  45. package/lib/cjs/Marker.js +4 -3
  46. package/lib/cjs/Marker.js.map +1 -1
  47. package/lib/cjs/ModelState.d.ts.map +1 -1
  48. package/lib/cjs/ModelState.js +2 -2
  49. package/lib/cjs/ModelState.js.map +1 -1
  50. package/lib/cjs/NativeApp.d.ts.map +1 -1
  51. package/lib/cjs/NativeApp.js +5 -4
  52. package/lib/cjs/NativeApp.js.map +1 -1
  53. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  54. package/lib/cjs/NativeAppLogger.js +1 -0
  55. package/lib/cjs/NativeAppLogger.js.map +1 -1
  56. package/lib/cjs/PlanarClipMaskState.js +3 -3
  57. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  58. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  59. package/lib/cjs/SelectionSet.js +1 -0
  60. package/lib/cjs/SelectionSet.js.map +1 -1
  61. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  62. package/lib/cjs/SheetViewState.js +5 -5
  63. package/lib/cjs/SheetViewState.js.map +1 -1
  64. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  65. package/lib/cjs/SpatialViewState.js +1 -1
  66. package/lib/cjs/SpatialViewState.js.map +1 -1
  67. package/lib/cjs/Sprites.js +2 -2
  68. package/lib/cjs/Sprites.js.map +1 -1
  69. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  70. package/lib/cjs/TentativePoint.js +10 -9
  71. package/lib/cjs/TentativePoint.js.map +1 -1
  72. package/lib/cjs/ViewCreator2d.js +1 -1
  73. package/lib/cjs/ViewCreator2d.js.map +1 -1
  74. package/lib/cjs/ViewCreator3d.js +1 -1
  75. package/lib/cjs/ViewCreator3d.js.map +1 -1
  76. package/lib/cjs/ViewPose.d.ts.map +1 -1
  77. package/lib/cjs/ViewPose.js +4 -1
  78. package/lib/cjs/ViewPose.js.map +1 -1
  79. package/lib/cjs/ViewState.d.ts.map +1 -1
  80. package/lib/cjs/ViewState.js +17 -12
  81. package/lib/cjs/ViewState.js.map +1 -1
  82. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  83. package/lib/cjs/ViewingSpace.js +2 -0
  84. package/lib/cjs/ViewingSpace.js.map +1 -1
  85. package/lib/cjs/Viewport.d.ts.map +1 -1
  86. package/lib/cjs/Viewport.js +17 -10
  87. package/lib/cjs/Viewport.js.map +1 -1
  88. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  89. package/lib/cjs/common/ImageUtil.js +2 -1
  90. package/lib/cjs/common/ImageUtil.js.map +1 -1
  91. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  93. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  94. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  96. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  97. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  98. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  99. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  101. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  102. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  103. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  104. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  105. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  106. package/lib/cjs/internal/ScriptUtils.js +1 -0
  107. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  108. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  110. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  111. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  113. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  114. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  116. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  117. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  118. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  119. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  120. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  122. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  123. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  124. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  125. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  127. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  129. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  130. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  132. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  133. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  134. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  135. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  136. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  137. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  138. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  139. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  140. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  141. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  142. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  143. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  144. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  145. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  147. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  148. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  149. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  150. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  151. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  152. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  153. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  154. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  155. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  156. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  157. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  159. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  160. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  162. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  165. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  166. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  167. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  168. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  169. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  170. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  171. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  172. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  174. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  177. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  178. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  179. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  180. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  181. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  184. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  187. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  188. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  189. package/lib/cjs/internal/render/webgl/System.js +1 -1
  190. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  192. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  193. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  194. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  195. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  196. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  197. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  199. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  200. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  207. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  208. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  212. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  213. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  214. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  216. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  217. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  218. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  219. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  221. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  222. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  223. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  224. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  225. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  226. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  227. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  228. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  229. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  230. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  231. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  232. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  233. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  234. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  235. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  236. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  237. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  238. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  239. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  240. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  241. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  242. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  243. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  244. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  245. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  246. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  247. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  248. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  249. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  250. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  251. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  252. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  253. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  254. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  255. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  256. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  257. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  258. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  259. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  260. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  261. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  262. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  263. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  264. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  265. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  266. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  267. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  268. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  269. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  270. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  271. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  272. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  273. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  274. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  275. package/lib/cjs/tile/GltfReader.js +54 -16
  276. package/lib/cjs/tile/GltfReader.js.map +1 -1
  277. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  278. package/lib/cjs/tile/RealityTile.js +2 -2
  279. package/lib/cjs/tile/RealityTile.js.map +1 -1
  280. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  281. package/lib/cjs/tile/RealityTileTree.js +5 -5
  282. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  283. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  284. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  285. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  286. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  287. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  288. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  289. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  290. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  291. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  292. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  293. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  294. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  295. package/lib/cjs/tile/map/MapTile.js +10 -8
  296. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  297. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  298. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  299. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  300. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  302. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  303. package/lib/cjs/tools/Tool.js +1 -1
  304. package/lib/cjs/tools/Tool.js.map +1 -1
  305. package/lib/esm/BackgroundMapGeometry.js +14 -14
  306. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  307. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  308. package/lib/esm/BriefcaseConnection.js +2 -2
  309. package/lib/esm/BriefcaseConnection.js.map +1 -1
  310. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  311. package/lib/esm/CheckpointConnection.js +4 -4
  312. package/lib/esm/CheckpointConnection.js.map +1 -1
  313. package/lib/esm/ContextRealityModelState.js.map +1 -1
  314. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  315. package/lib/esm/ElementLocateManager.js +8 -7
  316. package/lib/esm/ElementLocateManager.js.map +1 -1
  317. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  318. package/lib/esm/EmphasizeElements.js +3 -1
  319. package/lib/esm/EmphasizeElements.js.map +1 -1
  320. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  321. package/lib/esm/EnvironmentDecorations.js +4 -0
  322. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  323. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  324. package/lib/esm/FrustumAnimator.js +3 -2
  325. package/lib/esm/FrustumAnimator.js.map +1 -1
  326. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  327. package/lib/esm/GlobeAnimator.js +7 -6
  328. package/lib/esm/GlobeAnimator.js.map +1 -1
  329. package/lib/esm/HitDetail.d.ts.map +1 -1
  330. package/lib/esm/HitDetail.js +12 -7
  331. package/lib/esm/HitDetail.js.map +1 -1
  332. package/lib/esm/IModelApp.d.ts.map +1 -1
  333. package/lib/esm/IModelApp.js +4 -3
  334. package/lib/esm/IModelApp.js.map +1 -1
  335. package/lib/esm/IModelConnection.d.ts.map +1 -1
  336. package/lib/esm/IModelConnection.js +9 -10
  337. package/lib/esm/IModelConnection.js.map +1 -1
  338. package/lib/esm/IpcApp.d.ts.map +1 -1
  339. package/lib/esm/IpcApp.js +2 -2
  340. package/lib/esm/IpcApp.js.map +1 -1
  341. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  342. package/lib/esm/LinePlaneIntersect.js +2 -0
  343. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  344. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  345. package/lib/esm/LocalhostIpcApp.js +2 -1
  346. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  347. package/lib/esm/Marker.d.ts.map +1 -1
  348. package/lib/esm/Marker.js +5 -4
  349. package/lib/esm/Marker.js.map +1 -1
  350. package/lib/esm/ModelState.d.ts.map +1 -1
  351. package/lib/esm/ModelState.js +3 -3
  352. package/lib/esm/ModelState.js.map +1 -1
  353. package/lib/esm/NativeApp.d.ts.map +1 -1
  354. package/lib/esm/NativeApp.js +5 -4
  355. package/lib/esm/NativeApp.js.map +1 -1
  356. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  357. package/lib/esm/NativeAppLogger.js +1 -0
  358. package/lib/esm/NativeAppLogger.js.map +1 -1
  359. package/lib/esm/PlanarClipMaskState.js +3 -3
  360. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  361. package/lib/esm/SelectionSet.d.ts.map +1 -1
  362. package/lib/esm/SelectionSet.js +2 -1
  363. package/lib/esm/SelectionSet.js.map +1 -1
  364. package/lib/esm/SheetViewState.d.ts.map +1 -1
  365. package/lib/esm/SheetViewState.js +6 -6
  366. package/lib/esm/SheetViewState.js.map +1 -1
  367. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  368. package/lib/esm/SpatialViewState.js +2 -2
  369. package/lib/esm/SpatialViewState.js.map +1 -1
  370. package/lib/esm/Sprites.js +2 -2
  371. package/lib/esm/Sprites.js.map +1 -1
  372. package/lib/esm/TentativePoint.d.ts.map +1 -1
  373. package/lib/esm/TentativePoint.js +10 -9
  374. package/lib/esm/TentativePoint.js.map +1 -1
  375. package/lib/esm/ViewCreator2d.js +1 -1
  376. package/lib/esm/ViewCreator2d.js.map +1 -1
  377. package/lib/esm/ViewCreator3d.js +1 -1
  378. package/lib/esm/ViewCreator3d.js.map +1 -1
  379. package/lib/esm/ViewPose.d.ts.map +1 -1
  380. package/lib/esm/ViewPose.js +4 -1
  381. package/lib/esm/ViewPose.js.map +1 -1
  382. package/lib/esm/ViewState.d.ts.map +1 -1
  383. package/lib/esm/ViewState.js +18 -13
  384. package/lib/esm/ViewState.js.map +1 -1
  385. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  386. package/lib/esm/ViewingSpace.js +2 -0
  387. package/lib/esm/ViewingSpace.js.map +1 -1
  388. package/lib/esm/Viewport.d.ts.map +1 -1
  389. package/lib/esm/Viewport.js +18 -11
  390. package/lib/esm/Viewport.js.map +1 -1
  391. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  392. package/lib/esm/common/ImageUtil.js +2 -1
  393. package/lib/esm/common/ImageUtil.js.map +1 -1
  394. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  395. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  396. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  397. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  398. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  399. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  400. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  401. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  402. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  403. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  404. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  405. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  406. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  407. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  408. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  409. package/lib/esm/internal/ScriptUtils.js +1 -0
  410. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  411. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  412. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  413. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  420. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  421. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  422. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  423. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  424. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  425. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  426. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  427. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  428. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  429. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  430. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  431. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  432. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  434. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  435. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  436. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  437. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  438. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  439. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  441. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  442. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  443. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  445. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  446. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  447. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  449. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  450. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  451. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  452. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  453. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  454. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  455. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  456. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  457. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  458. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  459. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  460. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  461. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  462. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  463. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  464. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  466. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  467. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  468. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  470. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  472. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  473. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  474. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  476. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  477. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  478. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  479. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  480. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  481. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  482. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  483. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  484. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  485. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  486. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  487. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  488. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  489. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  490. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  491. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  492. package/lib/esm/internal/render/webgl/System.js +2 -2
  493. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  494. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  495. package/lib/esm/internal/render/webgl/Target.js +11 -8
  496. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  497. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  498. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  499. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  500. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  501. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  502. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  503. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  504. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  505. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  506. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  507. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  509. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  510. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  511. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  512. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  514. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  515. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  516. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  517. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  519. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  521. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  522. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  523. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  524. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  525. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  526. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  527. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  528. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  529. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  530. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  531. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  532. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  533. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  534. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  535. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  536. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  537. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  538. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  539. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  540. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  541. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  542. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  543. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  544. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  545. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  546. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  547. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  548. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  549. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  550. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  551. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  552. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  553. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  554. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  555. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  556. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  557. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  558. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  559. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  560. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  561. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  562. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  563. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  564. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  565. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  566. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  567. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  568. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  569. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  570. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  571. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  572. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  573. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  574. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  575. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  576. package/lib/esm/tile/GltfReader.d.ts +5 -2
  577. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  578. package/lib/esm/tile/GltfReader.js +55 -17
  579. package/lib/esm/tile/GltfReader.js.map +1 -1
  580. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  581. package/lib/esm/tile/RealityTile.js +3 -3
  582. package/lib/esm/tile/RealityTile.js.map +1 -1
  583. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  584. package/lib/esm/tile/RealityTileTree.js +6 -6
  585. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  586. package/lib/esm/tile/TileAdmin.js.map +1 -1
  587. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  588. package/lib/esm/tile/TileDrawArgs.js +2 -1
  589. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  590. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  591. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  592. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  593. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  594. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  595. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  596. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  597. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  598. package/lib/esm/tile/map/MapTile.js +11 -9
  599. package/lib/esm/tile/map/MapTile.js.map +1 -1
  600. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  601. package/lib/esm/tile/map/MapTileTree.js +9 -8
  602. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  603. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  604. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  605. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  606. package/lib/esm/tools/Tool.js +2 -2
  607. package/lib/esm/tools/Tool.js.map +1 -1
  608. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  609. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  610. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Plane3dByOriginAndUnitNormal, Point2d, Transform } from \"@itwin/core-geometry\";\nimport { Frustum, QPoint2dList, QPoint3dList } from \"@itwin/core-common\";\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { PlanarGridProps, RenderSystem } from \"../../../render/RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Primitive } from \"./Primitive\";\nimport { Pass, RenderOrder } from \"./RenderFlags\";\nimport { TechniqueId } from \"./TechniqueId\";\n\nclass PlanarGridGeometryParams extends IndexedGeometryParams {\n\n public readonly uvParams: QBufferHandle2d;\n\n public constructor(positions: QBufferHandle3d, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, public readonly props: PlanarGridProps) {\n super(positions, indices, numIndices);\n const attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.PlanarGrid, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n }\n}\n\nexport class PlanarGridGeometry extends IndexedGeometry {\n public get techniqueId(): TechniqueId { return TechniqueId.PlanarGrid; }\n public override getPass(): Pass { return \"translucent\"; }\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n public readonly uvParams: QBufferHandle2d;\n public readonly props: PlanarGridProps;\n public override get asPlanarGrid(): PlanarGridGeometry | undefined { return this; }\n\n private constructor(params: PlanarGridGeometryParams) {\n super(params);\n this.uvParams = params.uvParams;\n this.props = params.props;\n }\n\n public static create(frustum: Frustum, grid: PlanarGridProps, system: RenderSystem): RenderGraphic | undefined {\n const plane = Plane3dByOriginAndUnitNormal.create(grid.origin, grid.rMatrix.rowZ())!;\n const polygon = frustum.getIntersectionWithPlane(plane);\n\n if (!polygon || polygon.length < 3)\n return undefined;\n\n const xVector = grid.rMatrix.rowX();\n const yVector = grid.rMatrix.rowY();\n const gridsPerRef = Math.max(1, grid.gridsPerRef);\n const xOrigin = xVector.dotProduct(grid.origin);\n const yOrigin = yVector.dotProduct(grid.origin);\n const params = [];\n for (const polygonPoint of polygon) {\n const x = (xVector.dotProduct(polygonPoint) - xOrigin) / grid.spacing.x;\n const y = (yVector.dotProduct(polygonPoint) - yOrigin) / grid.spacing.y;\n params.push(Point2d.create(x, y));\n }\n\n const qPoints = QPoint3dList.fromPoints(polygon);\n const qParams = QPoint2dList.fromPoints(params);\n\n qParams.params.origin.x = qParams.params.origin.x % gridsPerRef;\n qParams.params.origin.y = qParams.params.origin.y % gridsPerRef;\n\n let transform;\n // If the grid is far from the origin, create a branch to avoid large coordinate accuracy issues. (Reality models).\n if (qPoints.params.origin.magnitude() > 1.0E4) {\n transform = Transform.createTranslationXYZ(qPoints.params.origin.x, qPoints.params.origin.y, qPoints.params.origin.z);\n qPoints.params.origin.setZero();\n }\n\n const nTriangles = polygon.length - 2;\n const indices = new Uint32Array(3 * nTriangles);\n for (let i = 0, j = 0; i < nTriangles; i++) {\n indices[j++] = 0;\n indices[j++] = i + 1;\n indices[j++] = i + 2;\n }\n const pointBuffer = QBufferHandle3d.create(qPoints.params, qPoints.toTypedArray());\n const paramBuffer = QBufferHandle2d.create(qParams.params, qParams.toTypedArray());\n const indBuffer = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n if (!pointBuffer || !paramBuffer || !indBuffer)\n return undefined;\n\n const geomParams = new PlanarGridGeometryParams(pointBuffer, paramBuffer, indBuffer, indices.length, grid);\n if (!geomParams)\n return undefined;\n\n const geom = new PlanarGridGeometry(geomParams);\n let graphic: RenderGraphic | undefined = Primitive.create(geom);\n\n if (transform && graphic) {\n const branch = new GraphicBranch(true);\n branch.add(graphic);\n graphic = system.createBranch(branch, transform);\n }\n\n return graphic;\n }\n}\n\n"]}
1
+ {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarGrid.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, expectDefined } from \"@itwin/core-bentley\";\nimport { Plane3dByOriginAndUnitNormal, Point2d, Transform } from \"@itwin/core-geometry\";\nimport { Frustum, QPoint2dList, QPoint3dList } from \"@itwin/core-common\";\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { PlanarGridProps, RenderSystem } from \"../../../render/RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Primitive } from \"./Primitive\";\nimport { Pass, RenderOrder } from \"./RenderFlags\";\nimport { TechniqueId } from \"./TechniqueId\";\n\nclass PlanarGridGeometryParams extends IndexedGeometryParams {\n\n public readonly uvParams: QBufferHandle2d;\n\n public constructor(positions: QBufferHandle3d, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, public readonly props: PlanarGridProps) {\n super(positions, indices, numIndices);\n const attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.PlanarGrid, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n }\n}\n\nexport class PlanarGridGeometry extends IndexedGeometry {\n public get techniqueId(): TechniqueId { return TechniqueId.PlanarGrid; }\n public override getPass(): Pass { return \"translucent\"; }\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n public readonly uvParams: QBufferHandle2d;\n public readonly props: PlanarGridProps;\n public override get asPlanarGrid(): PlanarGridGeometry | undefined { return this; }\n\n private constructor(params: PlanarGridGeometryParams) {\n super(params);\n this.uvParams = params.uvParams;\n this.props = params.props;\n }\n\n public static create(frustum: Frustum, grid: PlanarGridProps, system: RenderSystem): RenderGraphic | undefined {\n const plane = expectDefined(Plane3dByOriginAndUnitNormal.create(grid.origin, grid.rMatrix.rowZ()));\n const polygon = frustum.getIntersectionWithPlane(plane);\n\n if (!polygon || polygon.length < 3)\n return undefined;\n\n const xVector = grid.rMatrix.rowX();\n const yVector = grid.rMatrix.rowY();\n const gridsPerRef = Math.max(1, grid.gridsPerRef);\n const xOrigin = xVector.dotProduct(grid.origin);\n const yOrigin = yVector.dotProduct(grid.origin);\n const params = [];\n for (const polygonPoint of polygon) {\n const x = (xVector.dotProduct(polygonPoint) - xOrigin) / grid.spacing.x;\n const y = (yVector.dotProduct(polygonPoint) - yOrigin) / grid.spacing.y;\n params.push(Point2d.create(x, y));\n }\n\n const qPoints = QPoint3dList.fromPoints(polygon);\n const qParams = QPoint2dList.fromPoints(params);\n\n qParams.params.origin.x = qParams.params.origin.x % gridsPerRef;\n qParams.params.origin.y = qParams.params.origin.y % gridsPerRef;\n\n let transform;\n // If the grid is far from the origin, create a branch to avoid large coordinate accuracy issues. (Reality models).\n if (qPoints.params.origin.magnitude() > 1.0E4) {\n transform = Transform.createTranslationXYZ(qPoints.params.origin.x, qPoints.params.origin.y, qPoints.params.origin.z);\n qPoints.params.origin.setZero();\n }\n\n const nTriangles = polygon.length - 2;\n const indices = new Uint32Array(3 * nTriangles);\n for (let i = 0, j = 0; i < nTriangles; i++) {\n indices[j++] = 0;\n indices[j++] = i + 1;\n indices[j++] = i + 2;\n }\n const pointBuffer = QBufferHandle3d.create(qPoints.params, qPoints.toTypedArray());\n const paramBuffer = QBufferHandle2d.create(qParams.params, qParams.toTypedArray());\n const indBuffer = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n if (!pointBuffer || !paramBuffer || !indBuffer)\n return undefined;\n\n const geomParams = new PlanarGridGeometryParams(pointBuffer, paramBuffer, indBuffer, indices.length, grid);\n if (!geomParams)\n return undefined;\n\n const geom = new PlanarGridGeometry(geomParams);\n let graphic: RenderGraphic | undefined = Primitive.create(geom);\n\n if (transform && graphic) {\n const branch = new GraphicBranch(true);\n branch.add(graphic);\n graphic = system.createBranch(branch, transform);\n }\n\n return graphic;\n }\n}\n\n"]}
@@ -1,6 +1,3 @@
1
- /** @packageDocumentation
2
- * @module Rendering
3
- */
4
1
  import { Frustum } from "@itwin/core-common";
5
2
  import { Map4d, Matrix4d, Plane3dByOriginAndUnitNormal, Range1d, Range3d, Transform } from "@itwin/core-geometry";
6
3
  import { Tile, TileTreeReference } from "../../../tile/internal";
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarTextureProjection.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACgD,KAAK,EAAY,QAAQ,EAAE,4BAA4B,EAAW,OAAO,EAAW,OAAO,EACzI,SAAS,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAA4H;IAEnK,OAAO,CAAC,MAAM,CAAC,mBAAmB;WASpB,8BAA8B,CAC1C,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,EAC9C,SAAS,EAAE,iBAAiB,EAAE,EAC9B,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;WA0KtH,uBAAuB,CAAC,MAAM,EAAE,MAAM;;;;CAsBrD"}
1
+ {"version":3,"file":"PlanarTextureProjection.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarTextureProjection.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAkC,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACgD,KAAK,EAAY,QAAQ,EAAE,4BAA4B,EAAW,OAAO,EAAW,OAAO,EACzI,SAAS,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAA4H;IAEnK,OAAO,CAAC,MAAM,CAAC,mBAAmB;WASpB,8BAA8B,CAC1C,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,EAC9C,SAAS,EAAE,iBAAiB,EAAE,EAC9B,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,KAAK,CAAC;QAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;WA0KtH,uBAAuB,CAAC,MAAM,EAAE,MAAM;;;;CAsBrD"}
@@ -8,6 +8,7 @@ exports.PlanarTextureProjection = void 0;
8
8
  /** @packageDocumentation
9
9
  * @module Rendering
10
10
  */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
11
12
  const core_common_1 = require("@itwin/core-common");
12
13
  const core_geometry_1 = require("@itwin/core-geometry");
13
14
  const ApproximateTerrainHeights_1 = require("../../../ApproximateTerrainHeights");
@@ -37,11 +38,11 @@ class PlanarTextureProjection {
37
38
  let textureY;
38
39
  if (textureX.magnitude() < minCrossMagnitude) {
39
40
  textureY = viewX.crossProduct(textureZ);
40
- textureX = textureY.crossProduct(textureZ).normalize();
41
+ textureX = (0, core_bentley_1.expectDefined)(textureY.crossProduct(textureZ).normalize());
41
42
  }
42
43
  else {
43
44
  textureX.normalizeInPlace();
44
- textureY = textureZ.crossProduct(textureX).normalize();
45
+ textureY = (0, core_bentley_1.expectDefined)(textureZ.crossProduct(textureX).normalize());
45
46
  }
46
47
  const frustumX = textureZ, frustumY = textureX, frustumZ = textureY;
47
48
  const textureMatrix = core_geometry_1.Matrix3d.createRows(frustumX, frustumY, frustumZ);
@@ -119,8 +120,8 @@ class PlanarTextureProjection {
119
120
  if (viewState.isCameraOn && viewState.getEyePoint().z > textureRange.low.x && viewZVecZ > 0.09) {
120
121
  // NB moved the eyePlane from the center to the bottom of the textureRange to solve problems when the eye was below the eyePlane.
121
122
  const eyePlane = core_geometry_1.Plane3dByOriginAndUnitNormal.create(core_geometry_1.Point3d.createScale(textureZ, textureRange.low.x), textureZ); // at bottom of range - parallel to texture.
122
- const projectionRay = core_geometry_1.Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize());
123
- let projectionDistance = projectionRay.intersectionWithPlane(eyePlane);
123
+ const projectionRay = core_geometry_1.Ray3d.create(viewState.getEyePoint(), (0, core_bentley_1.expectDefined)(viewZ.crossProduct(textureX).normalize()));
124
+ let projectionDistance = projectionRay.intersectionWithPlane((0, core_bentley_1.expectDefined)(eyePlane));
124
125
  const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.
125
126
  if (undefined !== projectionDistance) {
126
127
  projectionDistance = Math.max(.1, projectionDistance);
@@ -170,7 +171,7 @@ class PlanarTextureProjection {
170
171
  return {};
171
172
  }
172
173
  const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);
173
- const npcToView = core_geometry_1.Map4d.createBoxMap(core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(1, 1, 1), core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(textureWidth, textureHeight, 1), scratchMap4d);
174
+ const npcToView = (0, core_bentley_1.expectDefined)(core_geometry_1.Map4d.createBoxMap(core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(1, 1, 1), core_geometry_1.Point3d.create(0, 0, 0), core_geometry_1.Point3d.create(textureWidth, textureHeight, 1), scratchMap4d));
174
175
  const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);
175
176
  if (undefined === npcToWorld) {
176
177
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarTextureProjection.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarTextureProjection.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 Rendering\n */\n\nimport { Frustum, FrustumPlanes, Npc, RenderMode } from \"@itwin/core-common\";\nimport {\n ClipUtilities, ConvexClipPlaneSet, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range1d, Range2d, Range3d,\n Ray3d, Transform,\n} from \"@itwin/core-geometry\";\nimport { ApproximateTerrainHeights } from \"../../../ApproximateTerrainHeights\";\nimport { Tile, TileTreeReference } from \"../../../tile/internal\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { ViewState3d } from \"../../../ViewState\";\nimport { RenderState } from \"./RenderState\";\nimport { Target } from \"./Target\";\n\nconst scratchRange = Range3d.createNull();\nconst scratchMap4d = Map4d.createIdentity();\nconst scratchMatrix4d = Matrix4d.createIdentity();\nexport class PlanarTextureProjection {\n private static _postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\n\n private static isTileRangeInBounds(tileRange: Range3d, drapeRange: Range3d): boolean {\n // return false if tile is outside of drapeRange, ignoring height (x) for this\n if (tileRange.low.y > drapeRange.high.y || tileRange.high.y < drapeRange.low.y)\n return false;\n if (tileRange.low.z > drapeRange.high.z || tileRange.high.z < drapeRange.low.z)\n return false;\n return true;\n }\n\n public static computePlanarTextureProjection(\n texturePlane: Plane3dByOriginAndUnitNormal,\n sceneContext: SceneContext,\n target: { tiles: Tile[], location: Transform },\n drapeRefs: TileTreeReference[],\n viewState: ViewState3d,\n textureWidth: number,\n textureHeight: number,\n maskRange: Range3d,\n _heightRange?: Range1d): { textureFrustum?: Frustum, worldToViewMap?: Map4d, projectionMatrix?: Matrix4d, debugFrustum?: Frustum } {\n const textureZ = texturePlane.getNormalRef();\n const viewingSpace = sceneContext.viewingSpace;\n const viewX = viewingSpace.rotation.rowX();\n const viewZ = viewingSpace.rotation.rowZ();\n const minCrossMagnitude = 1.0E-4;\n\n if (viewZ === undefined)\n return {}; // View without depth?....\n\n let textureX = viewZ.crossProduct(textureZ);\n let textureY;\n if (textureX.magnitude() < minCrossMagnitude) {\n textureY = viewX.crossProduct(textureZ);\n textureX = textureY.crossProduct(textureZ).normalize()!;\n } else {\n textureX.normalizeInPlace();\n textureY = textureZ.crossProduct(textureX).normalize()!;\n }\n\n const frustumX = textureZ, frustumY = textureX, frustumZ = textureY;\n const textureMatrix = Matrix3d.createRows(frustumX, frustumY, frustumZ);\n const textureTransform = Transform.createRefs(Point3d.createZero(), textureMatrix);\n const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);\n const viewPlanes = FrustumPlanes.fromFrustum(viewFrustum);\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(viewPlanes.planes);\n\n const contentUnBoundedRange = Range1d.createNull();\n\n // calculate drapeRange from drapeRefs (mask references or drape reference).\n const drapeRange = Range3d.createNull();\n for (const drapeRef of drapeRefs) {\n const drapeTree = drapeRef.treeOwner.tileTree;\n if (!drapeTree)\n return {};\n if (drapeTree.isContentUnbounded) {\n let heightRange = viewingSpace.getTerrainHeightRange();\n if (!heightRange)\n heightRange = ApproximateTerrainHeights.instance.globalHeightRange;\n contentUnBoundedRange.low = Math.min(contentUnBoundedRange.low, heightRange.low);\n contentUnBoundedRange.high = Math.max(contentUnBoundedRange.high, heightRange.high);\n } else if (maskRange.isNull) {\n const r = Range3d.createNull();\n drapeRef.unionFitRange(r);\n const contentRange = textureTransform.multiplyRange(r);\n if (!contentRange.isNull)\n drapeRange.extendRange(contentRange);\n } else {\n const contentRange = textureTransform.multiplyRange(maskRange);\n drapeRange.extendRange(contentRange);\n }\n }\n\n // get range of only the tiles to be masked or draped onto.\n let textureRange = Range3d.createNull();\n const tileToTexture = textureTransform.multiplyTransformTransform(target.location);\n for (const tile of target.tiles) {\n tileToTexture.multiplyRange(tile.range, scratchRange);\n // Skip tile if it is outside of drapeRange because we don't want the extra heights from distant tiles included.\n if (drapeRange.isNull || PlanarTextureProjection.isTileRangeInBounds(scratchRange, drapeRange))\n textureRange.extendRange(scratchRange);\n }\n\n if (textureRange.isNull)\n return {};\n\n textureRange = ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);\n\n if (!contentUnBoundedRange.isNull) {\n // Union of height\n textureRange.low.x = Math.min(textureRange.low.x, contentUnBoundedRange.low);\n textureRange.high.x = Math.max(textureRange.high.x, contentUnBoundedRange.high);\n }\n\n if (!drapeRange.isNull) {\n // Union of height\n textureRange.low.x = Math.min(textureRange.low.x, drapeRange.low.x);\n textureRange.high.x = Math.max(textureRange.high.x, drapeRange.high.x);\n\n // Intersection of texture extents.\n textureRange.low.y = Math.max(textureRange.low.y, drapeRange.low.y);\n textureRange.high.y = Math.min(textureRange.high.y, drapeRange.high.y);\n textureRange.low.z = Math.max(textureRange.low.z, drapeRange.low.z);\n textureRange.high.z = Math.min(textureRange.high.z, drapeRange.high.z);\n }\n\n const epsilon = .01;\n textureRange.low.x -= epsilon;\n textureRange.high.x += epsilon;\n\n const textureFrustum = Frustum.fromRange(textureRange);\n let debugFrustum;\n if (true) // debugFrustum as textureRange.\n debugFrustum = textureFrustum.clone();\n else // debugFrustum as drapeRange.\n debugFrustum = Frustum.fromRange(drapeRange);\n\n textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);\n\n const viewZVecZ = viewState.getRotation().rowZ().z;\n\n // This code attempts to use a projection frustum that aligns to the camera frustum in order to get higher mask resolution closer to the eye.\n // Limit its use to views that have an eyepoint above the bottom of the frustum and are looking down at a view angle > 5 degrees, otherwise it causes issues.\n // viewZVecZ is negative when looking up, positive when looking down.\n if (viewState.isCameraOn && viewState.getEyePoint().z > textureRange.low.x && viewZVecZ > 0.09) {\n // NB moved the eyePlane from the center to the bottom of the textureRange to solve problems when the eye was below the eyePlane.\n const eyePlane = Plane3dByOriginAndUnitNormal.create(Point3d.createScale(textureZ, textureRange.low.x), textureZ); // at bottom of range - parallel to texture.\n const projectionRay = Ray3d.create(viewState.getEyePoint(), viewZ.crossProduct(textureX).normalize()!);\n let projectionDistance = projectionRay.intersectionWithPlane(eyePlane!);\n const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.\n if (undefined !== projectionDistance) {\n projectionDistance = Math.max(.1, projectionDistance);\n const eyePoint = textureTransform.multiplyPoint3d(projectionRay.fractionToPoint(projectionDistance));\n let near = eyePoint.z - textureRange.high.z;\n let far = eyePoint.z - textureRange.low.z;\n\n if (near / far < minNearToFarRatio) {\n // If the near-far ratio is less than minimum move the camera back.\n far = (textureRange.high.z - textureRange.low.z) / (1.0 - minNearToFarRatio);\n near = far * minNearToFarRatio;\n eyePoint.z = near + textureRange.high.z;\n }\n const farRange = Range2d.createNull();\n const nearRange = Range2d.createNull();\n // Create a frustum that includes the entire view frustum and all Z values.\n nearRange.low.x = textureRange.low.x;\n nearRange.high.x = textureRange.high.x;\n farRange.low.x = eyePoint.x + far / near * (textureRange.low.x - eyePoint.x);\n farRange.high.x = eyePoint.x + far / near * (textureRange.high.x - eyePoint.x);\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, textureRange, (points: GrowableXYZArray) => {\n points.getPoint3dArray().forEach((rangePoint) => {\n const farScale = far / (eyePoint.z - rangePoint.z);\n const nearScale = near / (eyePoint.z - rangePoint.z);\n const nearY = eyePoint.y + nearScale * (rangePoint.y - eyePoint.y);\n const farY = eyePoint.y + farScale * (rangePoint.y - eyePoint.y);\n nearRange.low.y = Math.min(nearRange.low.y, nearY);\n nearRange.high.y = Math.max(nearRange.high.y, nearY);\n farRange.low.y = Math.min(farRange.low.y, farY);\n farRange.high.y = Math.max(farRange.high.y, farY);\n });\n });\n // Set NPC from results.\n textureFrustum.points[Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);\n textureFrustum.points[Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);\n textureFrustum.points[Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);\n textureFrustum.points[Npc._110].set(farRange.high.x, farRange.high.y, eyePoint.z - far);\n textureFrustum.points[Npc._001].set(nearRange.low.x, nearRange.low.y, eyePoint.z - near);\n textureFrustum.points[Npc._101].set(nearRange.high.x, nearRange.low.y, eyePoint.z - near);\n textureFrustum.points[Npc._011].set(nearRange.low.x, nearRange.high.y, eyePoint.z - near);\n textureFrustum.points[Npc._111].set(nearRange.high.x, nearRange.high.y, eyePoint.z - near);\n }\n }\n textureMatrix.transposeInPlace();\n textureMatrix.multiplyVectorArrayInPlace(textureFrustum.points);\n const frustumMap = textureFrustum.toMap4d();\n if (undefined === frustumMap) {\n return {};\n }\n const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);\n const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1), scratchMap4d)!;\n const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);\n if (undefined === npcToWorld) {\n return {};\n }\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\n const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\n\n return { textureFrustum, worldToViewMap, projectionMatrix: worldToNpc, debugFrustum };\n }\n\n public static getTextureDrawingParams(target: Target) {\n const state = new RenderState();\n state.flags.depthMask = false;\n state.flags.blend = false;\n state.flags.depthTest = false;\n\n const viewFlags = target.currentViewFlags.copy({\n renderMode: RenderMode.SmoothShade,\n wiremesh: false,\n transparency: false,\n textures: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n });\n\n return { state, viewFlags };\n }\n}\n"]}
1
+ {"version":3,"file":"PlanarTextureProjection.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PlanarTextureProjection.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 Rendering\n */\n\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport { Frustum, FrustumPlanes, Npc, RenderMode } from \"@itwin/core-common\";\nimport {\n ClipUtilities, ConvexClipPlaneSet, GrowableXYZArray, Map4d, Matrix3d, Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range1d, Range2d, Range3d,\n Ray3d, Transform,\n} from \"@itwin/core-geometry\";\nimport { ApproximateTerrainHeights } from \"../../../ApproximateTerrainHeights\";\nimport { Tile, TileTreeReference } from \"../../../tile/internal\";\nimport { SceneContext } from \"../../../ViewContext\";\nimport { ViewState3d } from \"../../../ViewState\";\nimport { RenderState } from \"./RenderState\";\nimport { Target } from \"./Target\";\n\nconst scratchRange = Range3d.createNull();\nconst scratchMap4d = Map4d.createIdentity();\nconst scratchMatrix4d = Matrix4d.createIdentity();\nexport class PlanarTextureProjection {\n private static _postProjectionMatrixNpc = Matrix4d.createRowValues(/* Row 1 */ 0, 1, 0, 0, /* Row 2 */ 0, 0, 1, 0, /* Row 3 */ 1, 0, 0, 0, /* Row 4 */ 0, 0, 0, 1);\n\n private static isTileRangeInBounds(tileRange: Range3d, drapeRange: Range3d): boolean {\n // return false if tile is outside of drapeRange, ignoring height (x) for this\n if (tileRange.low.y > drapeRange.high.y || tileRange.high.y < drapeRange.low.y)\n return false;\n if (tileRange.low.z > drapeRange.high.z || tileRange.high.z < drapeRange.low.z)\n return false;\n return true;\n }\n\n public static computePlanarTextureProjection(\n texturePlane: Plane3dByOriginAndUnitNormal,\n sceneContext: SceneContext,\n target: { tiles: Tile[], location: Transform },\n drapeRefs: TileTreeReference[],\n viewState: ViewState3d,\n textureWidth: number,\n textureHeight: number,\n maskRange: Range3d,\n _heightRange?: Range1d): { textureFrustum?: Frustum, worldToViewMap?: Map4d, projectionMatrix?: Matrix4d, debugFrustum?: Frustum } {\n const textureZ = texturePlane.getNormalRef();\n const viewingSpace = sceneContext.viewingSpace;\n const viewX = viewingSpace.rotation.rowX();\n const viewZ = viewingSpace.rotation.rowZ();\n const minCrossMagnitude = 1.0E-4;\n\n if (viewZ === undefined)\n return {}; // View without depth?....\n\n let textureX = viewZ.crossProduct(textureZ);\n let textureY;\n if (textureX.magnitude() < minCrossMagnitude) {\n textureY = viewX.crossProduct(textureZ);\n textureX = expectDefined(textureY.crossProduct(textureZ).normalize());\n } else {\n textureX.normalizeInPlace();\n textureY = expectDefined(textureZ.crossProduct(textureX).normalize());\n }\n\n const frustumX = textureZ, frustumY = textureX, frustumZ = textureY;\n const textureMatrix = Matrix3d.createRows(frustumX, frustumY, frustumZ);\n const textureTransform = Transform.createRefs(Point3d.createZero(), textureMatrix);\n const viewFrustum = viewingSpace.getFrustum().transformBy(textureTransform);\n const viewPlanes = FrustumPlanes.fromFrustum(viewFrustum);\n const viewClipPlanes = ConvexClipPlaneSet.createPlanes(viewPlanes.planes);\n\n const contentUnBoundedRange = Range1d.createNull();\n\n // calculate drapeRange from drapeRefs (mask references or drape reference).\n const drapeRange = Range3d.createNull();\n for (const drapeRef of drapeRefs) {\n const drapeTree = drapeRef.treeOwner.tileTree;\n if (!drapeTree)\n return {};\n if (drapeTree.isContentUnbounded) {\n let heightRange = viewingSpace.getTerrainHeightRange();\n if (!heightRange)\n heightRange = ApproximateTerrainHeights.instance.globalHeightRange;\n contentUnBoundedRange.low = Math.min(contentUnBoundedRange.low, heightRange.low);\n contentUnBoundedRange.high = Math.max(contentUnBoundedRange.high, heightRange.high);\n } else if (maskRange.isNull) {\n const r = Range3d.createNull();\n drapeRef.unionFitRange(r);\n const contentRange = textureTransform.multiplyRange(r);\n if (!contentRange.isNull)\n drapeRange.extendRange(contentRange);\n } else {\n const contentRange = textureTransform.multiplyRange(maskRange);\n drapeRange.extendRange(contentRange);\n }\n }\n\n // get range of only the tiles to be masked or draped onto.\n let textureRange = Range3d.createNull();\n const tileToTexture = textureTransform.multiplyTransformTransform(target.location);\n for (const tile of target.tiles) {\n tileToTexture.multiplyRange(tile.range, scratchRange);\n // Skip tile if it is outside of drapeRange because we don't want the extra heights from distant tiles included.\n if (drapeRange.isNull || PlanarTextureProjection.isTileRangeInBounds(scratchRange, drapeRange))\n textureRange.extendRange(scratchRange);\n }\n\n if (textureRange.isNull)\n return {};\n\n textureRange = ClipUtilities.rangeOfClipperIntersectionWithRange(viewClipPlanes, textureRange);\n\n if (!contentUnBoundedRange.isNull) {\n // Union of height\n textureRange.low.x = Math.min(textureRange.low.x, contentUnBoundedRange.low);\n textureRange.high.x = Math.max(textureRange.high.x, contentUnBoundedRange.high);\n }\n\n if (!drapeRange.isNull) {\n // Union of height\n textureRange.low.x = Math.min(textureRange.low.x, drapeRange.low.x);\n textureRange.high.x = Math.max(textureRange.high.x, drapeRange.high.x);\n\n // Intersection of texture extents.\n textureRange.low.y = Math.max(textureRange.low.y, drapeRange.low.y);\n textureRange.high.y = Math.min(textureRange.high.y, drapeRange.high.y);\n textureRange.low.z = Math.max(textureRange.low.z, drapeRange.low.z);\n textureRange.high.z = Math.min(textureRange.high.z, drapeRange.high.z);\n }\n\n const epsilon = .01;\n textureRange.low.x -= epsilon;\n textureRange.high.x += epsilon;\n\n const textureFrustum = Frustum.fromRange(textureRange);\n let debugFrustum;\n if (true) // debugFrustum as textureRange.\n debugFrustum = textureFrustum.clone();\n else // debugFrustum as drapeRange.\n debugFrustum = Frustum.fromRange(drapeRange);\n\n textureTransform.multiplyInversePoint3dArray(debugFrustum.points, debugFrustum.points);\n\n const viewZVecZ = viewState.getRotation().rowZ().z;\n\n // This code attempts to use a projection frustum that aligns to the camera frustum in order to get higher mask resolution closer to the eye.\n // Limit its use to views that have an eyepoint above the bottom of the frustum and are looking down at a view angle > 5 degrees, otherwise it causes issues.\n // viewZVecZ is negative when looking up, positive when looking down.\n if (viewState.isCameraOn && viewState.getEyePoint().z > textureRange.low.x && viewZVecZ > 0.09) {\n // NB moved the eyePlane from the center to the bottom of the textureRange to solve problems when the eye was below the eyePlane.\n const eyePlane = Plane3dByOriginAndUnitNormal.create(Point3d.createScale(textureZ, textureRange.low.x), textureZ); // at bottom of range - parallel to texture.\n const projectionRay = Ray3d.create(viewState.getEyePoint(), expectDefined(viewZ.crossProduct(textureX).normalize()));\n let projectionDistance = projectionRay.intersectionWithPlane(expectDefined(eyePlane));\n const minNearToFarRatio = .01; // Smaller value allows texture projection to conform tightly to view frustum.\n if (undefined !== projectionDistance) {\n projectionDistance = Math.max(.1, projectionDistance);\n const eyePoint = textureTransform.multiplyPoint3d(projectionRay.fractionToPoint(projectionDistance));\n let near = eyePoint.z - textureRange.high.z;\n let far = eyePoint.z - textureRange.low.z;\n\n if (near / far < minNearToFarRatio) {\n // If the near-far ratio is less than minimum move the camera back.\n far = (textureRange.high.z - textureRange.low.z) / (1.0 - minNearToFarRatio);\n near = far * minNearToFarRatio;\n eyePoint.z = near + textureRange.high.z;\n }\n const farRange = Range2d.createNull();\n const nearRange = Range2d.createNull();\n // Create a frustum that includes the entire view frustum and all Z values.\n nearRange.low.x = textureRange.low.x;\n nearRange.high.x = textureRange.high.x;\n farRange.low.x = eyePoint.x + far / near * (textureRange.low.x - eyePoint.x);\n farRange.high.x = eyePoint.x + far / near * (textureRange.high.x - eyePoint.x);\n ClipUtilities.announceLoopsOfConvexClipPlaneSetIntersectRange(viewClipPlanes, textureRange, (points: GrowableXYZArray) => {\n points.getPoint3dArray().forEach((rangePoint) => {\n const farScale = far / (eyePoint.z - rangePoint.z);\n const nearScale = near / (eyePoint.z - rangePoint.z);\n const nearY = eyePoint.y + nearScale * (rangePoint.y - eyePoint.y);\n const farY = eyePoint.y + farScale * (rangePoint.y - eyePoint.y);\n nearRange.low.y = Math.min(nearRange.low.y, nearY);\n nearRange.high.y = Math.max(nearRange.high.y, nearY);\n farRange.low.y = Math.min(farRange.low.y, farY);\n farRange.high.y = Math.max(farRange.high.y, farY);\n });\n });\n // Set NPC from results.\n textureFrustum.points[Npc._000].set(farRange.low.x, farRange.low.y, eyePoint.z - far);\n textureFrustum.points[Npc._100].set(farRange.high.x, farRange.low.y, eyePoint.z - far);\n textureFrustum.points[Npc._010].set(farRange.low.x, farRange.high.y, eyePoint.z - far);\n textureFrustum.points[Npc._110].set(farRange.high.x, farRange.high.y, eyePoint.z - far);\n textureFrustum.points[Npc._001].set(nearRange.low.x, nearRange.low.y, eyePoint.z - near);\n textureFrustum.points[Npc._101].set(nearRange.high.x, nearRange.low.y, eyePoint.z - near);\n textureFrustum.points[Npc._011].set(nearRange.low.x, nearRange.high.y, eyePoint.z - near);\n textureFrustum.points[Npc._111].set(nearRange.high.x, nearRange.high.y, eyePoint.z - near);\n }\n }\n textureMatrix.transposeInPlace();\n textureMatrix.multiplyVectorArrayInPlace(textureFrustum.points);\n const frustumMap = textureFrustum.toMap4d();\n if (undefined === frustumMap) {\n return {};\n }\n const worldToNpc = PlanarTextureProjection._postProjectionMatrixNpc.multiplyMatrixMatrix(frustumMap.transform0);\n const npcToView = expectDefined(Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(textureWidth, textureHeight, 1), scratchMap4d));\n const npcToWorld = worldToNpc.createInverse(scratchMatrix4d);\n if (undefined === npcToWorld) {\n return {};\n }\n const worldToNpcMap = Map4d.createRefs(worldToNpc, npcToWorld);\n const worldToViewMap = npcToView.multiplyMapMap(worldToNpcMap);\n\n return { textureFrustum, worldToViewMap, projectionMatrix: worldToNpc, debugFrustum };\n }\n\n public static getTextureDrawingParams(target: Target) {\n const state = new RenderState();\n state.flags.depthMask = false;\n state.flags.blend = false;\n state.flags.depthTest = false;\n\n const viewFlags = target.currentViewFlags.copy({\n renderMode: RenderMode.SmoothShade,\n wiremesh: false,\n transparency: false,\n textures: false,\n lighting: false,\n shadows: false,\n monochrome: false,\n materials: false,\n ambientOcclusion: false,\n visibleEdges: false,\n hiddenEdges: false,\n });\n\n return { state, viewFlags };\n }\n}\n"]}
@@ -53,7 +53,7 @@ class PointCloudGeometry extends CachedGeometry_1.CachedGeometry {
53
53
  this._colorHandle = AttributeBuffers_1.BufferHandle.createArrayBuffer(pointCloud.colors);
54
54
  const attrColor = AttributeMap_1.AttributeMap.findAttribute("a_color", 2 /* TechniqueId.PointCloud */, false);
55
55
  (0, core_bentley_1.assert)(undefined !== attrColor);
56
- this.buffers.addBuffer(this._colorHandle, [AttributeBuffers_1.BufferParameters.create(attrColor.location, 3, GL_1.GL.DataType.UnsignedByte, true, 0, 0, false)]);
56
+ this.buffers.addBuffer((0, core_bentley_1.expectDefined)(this._colorHandle), [AttributeBuffers_1.BufferParameters.create(attrColor.location, 3, GL_1.GL.DataType.UnsignedByte, true, 0, 0, false)]);
57
57
  }
58
58
  }
59
59
  collectStatistics(stats) {
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PointCloud.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { FeatureIndexType } from \"@itwin/core-common\";\nimport { PointCloudArgs } from \"../../../common/internal/render/PointCloudPrimitive\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { BufferHandle, BufferParameters, BuffersContainer, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { Pass, RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\n\n/** @internal */\nexport class PointCloudGeometry extends CachedGeometry implements RenderGeometry {\n public readonly renderGeometryType: \"point-cloud\" = \"point-cloud\" as const;\n public readonly isInstanceable = false;\n public noDispose = false;\n public readonly buffers: BuffersContainer;\n private readonly _vertices: QBufferHandle3d;\n private readonly _vertexCount: number;\n private readonly _colorHandle: BufferHandle | undefined = undefined;\n private readonly _hasFeatures: boolean;\n\n public readonly voxelSize: number;\n public readonly colorIsBgr: boolean;\n\n public get isDisposed(): boolean { return this.buffers.isDisposed && this._vertices.isDisposed; }\n public override get asPointCloud(): PointCloudGeometry | undefined { return this; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n\n public [Symbol.dispose]() {\n if (!this.noDispose) {\n dispose(this.buffers);\n dispose(this._vertices);\n }\n }\n\n constructor(pointCloud: PointCloudArgs) {\n super();\n this.buffers = BuffersContainer.create();\n this._vertices = QBufferHandle3d.create(pointCloud.qparams, pointCloud.positions) as QBufferHandle3d;\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.PointCloud, false);\n assert(undefined !== attrPos);\n const vertexDataType = (pointCloud.positions instanceof Float32Array) ? GL.DataType.Float : ((pointCloud.positions instanceof Uint8Array) ? GL.DataType.UnsignedByte : GL.DataType.UnsignedShort);\n this.buffers.addBuffer(this._vertices, [BufferParameters.create(attrPos.location, 3, vertexDataType, false, 0, 0, false)]);\n this._vertexCount = pointCloud.positions.length / 3;\n this._hasFeatures = FeatureIndexType.Empty !== pointCloud.features.type;\n this.voxelSize = pointCloud.voxelSize;\n this.colorIsBgr = \"bgr\" === pointCloud.colorFormat;\n\n if (undefined !== pointCloud.colors) {\n this._colorHandle = BufferHandle.createArrayBuffer(pointCloud.colors);\n const attrColor = AttributeMap.findAttribute(\"a_color\", TechniqueId.PointCloud, false);\n assert(undefined !== attrColor);\n this.buffers.addBuffer(this._colorHandle!, [BufferParameters.create(attrColor.location, 3, GL.DataType.UnsignedByte, true, 0, 0, false)]);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bytesUsed = this._vertices.bytesUsed + (undefined !== this._colorHandle ? this._colorHandle.bytesUsed : 0);\n stats.addPointCloud(bytesUsed);\n }\n\n protected _wantWoWReversal(_target: Target): boolean { return false; }\n\n public get techniqueId(): TechniqueId { return TechniqueId.PointCloud; }\n public override getPass(target: Target): Pass {\n // Point clouds don't cast shadows.\n return target.isDrawingShadowMap ? \"none\" : \"point-clouds\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.Linear; }\n public get qOrigin(): Float32Array { return this._vertices.origin; }\n public get qScale(): Float32Array { return this._vertices.scale; }\n public get colors(): BufferHandle | undefined { return this._colorHandle; }\n public override get hasFeatures() { return this._hasFeatures; }\n public override get hasBakedLighting() { return true; }\n\n public draw(): void {\n this.buffers.bind();\n System.instance.context.drawArrays(GL.PrimitiveType.Points, 0, this._vertexCount);\n this.buffers.unbind();\n }\n\n // ###TODO delete this.\n public override getLineWeight(_params: ShaderProgramParams): number {\n // If line weight < 0 it is real size in meters (voxel size).\n return (this.voxelSize > 0) ? - this.voxelSize : 1;\n }\n}\n"]}
1
+ {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/PointCloud.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 { FeatureIndexType } from \"@itwin/core-common\";\nimport { PointCloudArgs } from \"../../../common/internal/render/PointCloudPrimitive\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { BufferHandle, BufferParameters, BuffersContainer, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { Pass, RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\n\n/** @internal */\nexport class PointCloudGeometry extends CachedGeometry implements RenderGeometry {\n public readonly renderGeometryType: \"point-cloud\" = \"point-cloud\" as const;\n public readonly isInstanceable = false;\n public noDispose = false;\n public readonly buffers: BuffersContainer;\n private readonly _vertices: QBufferHandle3d;\n private readonly _vertexCount: number;\n private readonly _colorHandle: BufferHandle | undefined = undefined;\n private readonly _hasFeatures: boolean;\n\n public readonly voxelSize: number;\n public readonly colorIsBgr: boolean;\n\n public get isDisposed(): boolean { return this.buffers.isDisposed && this._vertices.isDisposed; }\n public override get asPointCloud(): PointCloudGeometry | undefined { return this; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n\n public [Symbol.dispose]() {\n if (!this.noDispose) {\n dispose(this.buffers);\n dispose(this._vertices);\n }\n }\n\n constructor(pointCloud: PointCloudArgs) {\n super();\n this.buffers = BuffersContainer.create();\n this._vertices = QBufferHandle3d.create(pointCloud.qparams, pointCloud.positions) as QBufferHandle3d;\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.PointCloud, false);\n assert(undefined !== attrPos);\n const vertexDataType = (pointCloud.positions instanceof Float32Array) ? GL.DataType.Float : ((pointCloud.positions instanceof Uint8Array) ? GL.DataType.UnsignedByte : GL.DataType.UnsignedShort);\n this.buffers.addBuffer(this._vertices, [BufferParameters.create(attrPos.location, 3, vertexDataType, false, 0, 0, false)]);\n this._vertexCount = pointCloud.positions.length / 3;\n this._hasFeatures = FeatureIndexType.Empty !== pointCloud.features.type;\n this.voxelSize = pointCloud.voxelSize;\n this.colorIsBgr = \"bgr\" === pointCloud.colorFormat;\n\n if (undefined !== pointCloud.colors) {\n this._colorHandle = BufferHandle.createArrayBuffer(pointCloud.colors);\n const attrColor = AttributeMap.findAttribute(\"a_color\", TechniqueId.PointCloud, false);\n assert(undefined !== attrColor);\n this.buffers.addBuffer(expectDefined(this._colorHandle), [BufferParameters.create(attrColor.location, 3, GL.DataType.UnsignedByte, true, 0, 0, false)]);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const bytesUsed = this._vertices.bytesUsed + (undefined !== this._colorHandle ? this._colorHandle.bytesUsed : 0);\n stats.addPointCloud(bytesUsed);\n }\n\n protected _wantWoWReversal(_target: Target): boolean { return false; }\n\n public get techniqueId(): TechniqueId { return TechniqueId.PointCloud; }\n public override getPass(target: Target): Pass {\n // Point clouds don't cast shadows.\n return target.isDrawingShadowMap ? \"none\" : \"point-clouds\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.Linear; }\n public get qOrigin(): Float32Array { return this._vertices.origin; }\n public get qScale(): Float32Array { return this._vertices.scale; }\n public get colors(): BufferHandle | undefined { return this._colorHandle; }\n public override get hasFeatures() { return this._hasFeatures; }\n public override get hasBakedLighting() { return true; }\n\n public draw(): void {\n this.buffers.bind();\n System.instance.context.drawArrays(GL.PrimitiveType.Points, 0, this._vertexCount);\n this.buffers.unbind();\n }\n\n // ###TODO delete this.\n public override getLineWeight(_params: ShaderProgramParams): number {\n // If line weight < 0 it is real size in meters (voxel size).\n return (this.voxelSize > 0) ? - this.voxelSize : 1;\n }\n}\n"]}
@@ -229,7 +229,7 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
229
229
  for (const mesh of meshes) {
230
230
  const primitive = Primitive_1.Primitive.create(mesh);
231
231
  if (featureTable) {
232
- branch.add(system.createBatch(primitive, featureTable, mesh.getRange(), { tileId }));
232
+ branch.add(system.createBatch((0, core_bentley_1.expectDefined)(primitive), featureTable, mesh.getRange(), { tileId }));
233
233
  }
234
234
  }
235
235
  return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : core_geometry_1.Transform.createIdentity(), { disableClipStyle: params.disableClipStyle });
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RealityMesh.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, UintArray } from \"@itwin/core-bentley\";\nimport { CartographicRange, ColorDef, Quantization } from \"@itwin/core-common\";\nimport { Range2d, Range3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { RenderSystem, } from \"../../../render/RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\nimport { TerrainTexture } from \"../RenderTerrain\";\nimport { MapCartoRectangle, PlanarProjection, PlanarTilePatch } from \"../../../tile/internal\";\nimport { LayerTextureParams, ProjectedTexture } from \"./MapLayerParams\";\n\nconst scratchOverlapRange = Range2d.createNull();\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\n/** @internal */\n\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\n public readonly uvParams: QBufferHandle2d;\n public readonly featureID?: number;\n public readonly normals?: BufferHandle;\n public readonly numBytesPerIndex: 1 | 2 | 4;\n\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\n super(positions, indices, numIndices);\n this.numBytesPerIndex = numBytesPerIndex;\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n\n if (undefined !== normals) {\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n if (normals.bytesUsed > 0)\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\n this.normals = normals;\n }\n this.featureID = featureID;\n }\n\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n\n if (undefined === indBuf)\n return undefined;\n\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\n\n }\n\n public static fromRealityMesh(params: RealityMeshParams) {\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\n }\n\n public override get isDisposed(): boolean {\n return super.isDisposed && this.uvParams.isDisposed;\n }\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\n\n public override[Symbol.dispose]() {\n super[Symbol.dispose]();\n dispose(this.uvParams);\n }\n}\n\n/** @internal */\nexport class RealityMeshGeometry extends IndexedGeometry implements RenderGeometry {\n public readonly renderGeometryType: \"reality-mesh\" = \"reality-mesh\" as const;\n public readonly isInstanceable = false;\n public noDispose = false;\n public readonly hasTextures: boolean;\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n public get transform(): Transform | undefined { return this._transform; }\n\n private _realityMeshParams: RealityMeshGeometryParams;\n private readonly _indexType: GL.DataType;\n public textureParams: LayerTextureParams | undefined;\n private readonly _transform: Transform | undefined;\n public readonly baseColor: ColorDef | undefined;\n private _baseIsTransparent: boolean;\n private _isTerrain: boolean;\n private _disableTextureDisposal: boolean;\n\n private constructor(props: {\n realityMeshParams: RealityMeshGeometryParams;\n textureParams?: LayerTextureParams;\n transform?: Transform;\n baseColor?: ColorDef;\n baseIsTransparent: boolean;\n isTerrain: boolean;\n disableTextureDisposal: boolean;\n }) {\n super(props.realityMeshParams);\n this._realityMeshParams = props.realityMeshParams;\n this.textureParams = props.textureParams;\n this._transform = props.transform;\n this.baseColor = props.baseColor;\n this._baseIsTransparent = props.baseIsTransparent;\n this._isTerrain = props.isTerrain;\n this._disableTextureDisposal = props.disableTextureDisposal;\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\n\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\n }\n\n public override[Symbol.dispose]() {\n if (this.noDispose) {\n return;\n }\n\n super[Symbol.dispose]();\n dispose(this._realityMeshParams);\n if (true !== this._disableTextureDisposal)\n dispose(this.textureParams);\n }\n\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\n\n if (!params)\n return undefined;\n\n return new RealityMeshGeometry({\n realityMeshParams: params,\n transform,\n baseIsTransparent: false,\n isTerrain: true,\n disableTextureDisposal,\n });\n }\n\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\n if (!params) return undefined;\n\n const { texture: meshTexture, featureID } = realityMesh;\n const tile = realityMesh.tileData;\n const layerClassifiers = tile?.layerClassifiers;\n const texture = meshTexture ? new TerrainTexture(meshTexture, featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\n\n if (!layerClassifiers?.size || !tile) return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n\n const transformECEF = tile.ecefTransform\n\n const tileEcefRange = transformECEF.multiplyRange(tile.range);\n const cartographicRange = new CartographicRange(tileEcefRange, transformECEF);\n const boundingBox = cartographicRange.getLongitudeLatitudeBoundingBox();\n const mapCartoRectangle = MapCartoRectangle.fromRadians(\n boundingBox.low.x,\n boundingBox.low.y,\n boundingBox.high.x,\n boundingBox.high.y\n );\n\n const corners = tile.range.corners();\n\n const normal = Vector3d.createCrossProductToPoints(corners[0], corners[1], corners[2])?.normalize();\n if (!normal) {\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n const chordHeight = corners[0].distance(corners[3]) / 2;\n\n const realityPlanarTilePatch = new PlanarTilePatch(corners, normal, chordHeight);\n const realityProjection = new PlanarProjection(realityPlanarTilePatch);\n\n const realityMeshParams: MeshMapLayerGraphicParams = {\n projection: realityProjection,\n tileRectangle: mapCartoRectangle,\n tileId: undefined,\n baseColor: undefined,\n baseTransparent: false,\n layerClassifiers\n };\n\n const layerTextures: TerrainOrProjectedTexture[] = texture ? [texture] : [];\n\n layerClassifiers?.forEach((layerClassifier, layerIndex) => layerTextures[layerIndex] = new ProjectedTexture(layerClassifier, realityMeshParams, realityMeshParams.tileRectangle));\n\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: layerTextures.length > 0 ? LayerTextureParams.create(layerTextures) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n\n public getRange(): Range3d {\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\n }\n\n public static createGraphic(system: RenderSystem, params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n const meshes = [];\n const textures = params.textures ?? [];\n const realityMesh = params.realityMesh as RealityMeshGeometry;\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\n\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\n // Collate the textures and classifiers layers into a single array.\n for (const texture of textures) {\n const layer = layers[texture.layerIndex];\n if (layer) {\n (layer as TerrainTexture[]).push(texture);\n } else {\n layers[texture.layerIndex] = [texture];\n }\n }\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\n\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n } else {\n let primaryLayer;\n while (primaryLayer === undefined)\n primaryLayer = layers.shift();\n if (!primaryLayer)\n return undefined;\n for (const primaryTexture of primaryLayer) {\n const targetRectangle = primaryTexture.targetRectangle;\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\n let layerTextures = [primaryTexture];\n for (const secondaryLayer of layers) {\n if (!secondaryLayer)\n continue;\n for (const secondaryTexture of secondaryLayer) {\n if (secondaryTexture instanceof ProjectedTexture) {\n layerTextures.push(secondaryTexture.clone(targetRectangle));\n } else {\n const secondaryRectangle = secondaryTexture.targetRectangle;\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\n\n if (secondaryTexture.clipRectangle)\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\n\n if (!textureRange.isNull && textureRange) {\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\n }\n }\n }\n }\n }\n while (layerTextures.length > texturesPerMesh) {\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n layerTextures = layerTextures.slice(texturesPerMesh);\n }\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n }\n }\n\n if (meshes.length === 0)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const mesh of meshes) {\n const primitive = Primitive.create(mesh);\n if (featureTable) {\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\n }\n }\n\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity(), { disableClipStyle: params.disableClipStyle });\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\n if (this.textureParams?.params) {\n for (const param of this.textureParams.params) {\n if (param.texture?.bytesUsed)\n stats.addTexture(param.texture.bytesUsed);\n }\n }\n }\n\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\n\n public override getPass(target: Target) {\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\n return \"translucent\";\n\n return \"opaque\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n\n public override draw(): void {\n this._params.buffers.bind();\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\n this._params.buffers.unbind();\n }\n}\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RealityMesh.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, UintArray } from \"@itwin/core-bentley\";\nimport { CartographicRange, ColorDef, Quantization } from \"@itwin/core-common\";\nimport { Range2d, Range3d, Transform, Vector2d, Vector3d } from \"@itwin/core-geometry\";\nimport { GraphicBranch } from \"../../../render/GraphicBranch\";\nimport { MeshMapLayerGraphicParams } from \"../MeshMapLayerGraphicParams\";\nimport { RealityMeshParams } from \"../../../render/RealityMeshParams\";\nimport { RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { RenderSystem, } from \"../../../render/RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { RenderGeometry } from \"../../../internal/render/RenderGeometry\";\nimport { TerrainTexture } from \"../RenderTerrain\";\nimport { MapCartoRectangle, PlanarProjection, PlanarTilePatch } from \"../../../tile/internal\";\nimport { LayerTextureParams, ProjectedTexture } from \"./MapLayerParams\";\n\nconst scratchOverlapRange = Range2d.createNull();\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\n/** @internal */\n\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\n public readonly uvParams: QBufferHandle2d;\n public readonly featureID?: number;\n public readonly normals?: BufferHandle;\n public readonly numBytesPerIndex: 1 | 2 | 4;\n\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\n super(positions, indices, numIndices);\n this.numBytesPerIndex = numBytesPerIndex;\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n\n if (undefined !== normals) {\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n if (normals.bytesUsed > 0)\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\n this.normals = normals;\n }\n this.featureID = featureID;\n }\n\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n\n if (undefined === indBuf)\n return undefined;\n\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\n\n }\n\n public static fromRealityMesh(params: RealityMeshParams) {\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\n }\n\n public override get isDisposed(): boolean {\n return super.isDisposed && this.uvParams.isDisposed;\n }\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\n\n public override[Symbol.dispose]() {\n super[Symbol.dispose]();\n dispose(this.uvParams);\n }\n}\n\n/** @internal */\nexport class RealityMeshGeometry extends IndexedGeometry implements RenderGeometry {\n public readonly renderGeometryType: \"reality-mesh\" = \"reality-mesh\" as const;\n public readonly isInstanceable = false;\n public noDispose = false;\n public readonly hasTextures: boolean;\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n public get transform(): Transform | undefined { return this._transform; }\n\n private _realityMeshParams: RealityMeshGeometryParams;\n private readonly _indexType: GL.DataType;\n public textureParams: LayerTextureParams | undefined;\n private readonly _transform: Transform | undefined;\n public readonly baseColor: ColorDef | undefined;\n private _baseIsTransparent: boolean;\n private _isTerrain: boolean;\n private _disableTextureDisposal: boolean;\n\n private constructor(props: {\n realityMeshParams: RealityMeshGeometryParams;\n textureParams?: LayerTextureParams;\n transform?: Transform;\n baseColor?: ColorDef;\n baseIsTransparent: boolean;\n isTerrain: boolean;\n disableTextureDisposal: boolean;\n }) {\n super(props.realityMeshParams);\n this._realityMeshParams = props.realityMeshParams;\n this.textureParams = props.textureParams;\n this._transform = props.transform;\n this.baseColor = props.baseColor;\n this._baseIsTransparent = props.baseIsTransparent;\n this._isTerrain = props.isTerrain;\n this._disableTextureDisposal = props.disableTextureDisposal;\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\n\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\n }\n\n public override[Symbol.dispose]() {\n if (this.noDispose) {\n return;\n }\n\n super[Symbol.dispose]();\n dispose(this._realityMeshParams);\n if (true !== this._disableTextureDisposal)\n dispose(this.textureParams);\n }\n\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\n\n if (!params)\n return undefined;\n\n return new RealityMeshGeometry({\n realityMeshParams: params,\n transform,\n baseIsTransparent: false,\n isTerrain: true,\n disableTextureDisposal,\n });\n }\n\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\n if (!params) return undefined;\n\n const { texture: meshTexture, featureID } = realityMesh;\n const tile = realityMesh.tileData;\n const layerClassifiers = tile?.layerClassifiers;\n const texture = meshTexture ? new TerrainTexture(meshTexture, featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\n\n if (!layerClassifiers?.size || !tile) return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n\n const transformECEF = tile.ecefTransform\n\n const tileEcefRange = transformECEF.multiplyRange(tile.range);\n const cartographicRange = new CartographicRange(tileEcefRange, transformECEF);\n const boundingBox = cartographicRange.getLongitudeLatitudeBoundingBox();\n const mapCartoRectangle = MapCartoRectangle.fromRadians(\n boundingBox.low.x,\n boundingBox.low.y,\n boundingBox.high.x,\n boundingBox.high.y\n );\n\n const corners = tile.range.corners();\n\n const normal = Vector3d.createCrossProductToPoints(corners[0], corners[1], corners[2])?.normalize();\n if (!normal) {\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? LayerTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n const chordHeight = corners[0].distance(corners[3]) / 2;\n\n const realityPlanarTilePatch = new PlanarTilePatch(corners, normal, chordHeight);\n const realityProjection = new PlanarProjection(realityPlanarTilePatch);\n\n const realityMeshParams: MeshMapLayerGraphicParams = {\n projection: realityProjection,\n tileRectangle: mapCartoRectangle,\n tileId: undefined,\n baseColor: undefined,\n baseTransparent: false,\n layerClassifiers\n };\n\n const layerTextures: TerrainOrProjectedTexture[] = texture ? [texture] : [];\n\n layerClassifiers?.forEach((layerClassifier, layerIndex) => layerTextures[layerIndex] = new ProjectedTexture(layerClassifier, realityMeshParams, realityMeshParams.tileRectangle));\n\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: layerTextures.length > 0 ? LayerTextureParams.create(layerTextures) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n\n public getRange(): Range3d {\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\n }\n\n public static createGraphic(system: RenderSystem, params: MeshMapLayerGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n const meshes = [];\n const textures = params.textures ?? [];\n const realityMesh = params.realityMesh as RealityMeshGeometry;\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\n\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\n // Collate the textures and classifiers layers into a single array.\n for (const texture of textures) {\n const layer = layers[texture.layerIndex];\n if (layer) {\n (layer as TerrainTexture[]).push(texture);\n } else {\n layers[texture.layerIndex] = [texture];\n }\n }\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\n\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n } else {\n let primaryLayer;\n while (primaryLayer === undefined)\n primaryLayer = layers.shift();\n if (!primaryLayer)\n return undefined;\n for (const primaryTexture of primaryLayer) {\n const targetRectangle = primaryTexture.targetRectangle;\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\n let layerTextures = [primaryTexture];\n for (const secondaryLayer of layers) {\n if (!secondaryLayer)\n continue;\n for (const secondaryTexture of secondaryLayer) {\n if (secondaryTexture instanceof ProjectedTexture) {\n layerTextures.push(secondaryTexture.clone(targetRectangle));\n } else {\n const secondaryRectangle = secondaryTexture.targetRectangle;\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\n\n if (secondaryTexture.clipRectangle)\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\n\n if (!textureRange.isNull && textureRange) {\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\n }\n }\n }\n }\n }\n while (layerTextures.length > texturesPerMesh) {\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n layerTextures = layerTextures.slice(texturesPerMesh);\n }\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: LayerTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n }\n }\n\n if (meshes.length === 0)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const mesh of meshes) {\n const primitive = Primitive.create(mesh);\n if (featureTable) {\n branch.add(system.createBatch(expectDefined(primitive), featureTable, mesh.getRange(), { tileId }));\n }\n }\n\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity(), { disableClipStyle: params.disableClipStyle });\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\n if (this.textureParams?.params) {\n for (const param of this.textureParams.params) {\n if (param.texture?.bytesUsed)\n stats.addTexture(param.texture.bytesUsed);\n }\n }\n }\n\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\n\n public override getPass(target: Target) {\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\n return \"translucent\";\n\n return \"opaque\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n\n public override draw(): void {\n this._params.buffers.bind();\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\n this._params.buffers.unbind();\n }\n}\n"]}
@@ -40,7 +40,7 @@ class RenderBuffer {
40
40
  get isDisposed() { return this._glBuffer === undefined || this._glBuffer === null; }
41
41
  [Symbol.dispose]() {
42
42
  if (!this.isDisposed) {
43
- System_1.System.instance.context.deleteRenderbuffer(this._glBuffer);
43
+ System_1.System.instance.context.deleteRenderbuffer((0, core_bentley_1.expectDefined)(this._glBuffer));
44
44
  this._glBuffer = undefined;
45
45
  this._bytesUsed = 0;
46
46
  }
@@ -93,7 +93,7 @@ class RenderBufferMultiSample {
93
93
  get isDisposed() { return this._glBuffer === undefined || this._glBuffer === null; }
94
94
  [Symbol.dispose]() {
95
95
  if (!this.isDisposed) {
96
- System_1.System.instance.context.deleteRenderbuffer(this._glBuffer);
96
+ System_1.System.instance.context.deleteRenderbuffer((0, core_bentley_1.expectDefined)(this._glBuffer));
97
97
  this._glBuffer = undefined;
98
98
  }
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderBuffer.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\n\nfunction computeBytesUsed(width: number, height: number, format: GL.RenderBuffer.Format, numSamples: number): number {\n const bytesPerPixel = (GL.RenderBuffer.Format.DepthComponent16 === format ? 2 : 4);\n return width * height * bytesPerPixel * numSamples;\n}\n\n/** @internal */\nexport class RenderBuffer implements WebGLDisposable {\n private _glBuffer?: WebGLRenderbuffer;\n private _bytesUsed = 0;\n private _width: number;\n private _height: number;\n\n public get bytesUsed(): number { return this._bytesUsed; }\n public get width(): number { return this._width; }\n public get height(): number { return this._height; }\n\n public getHandle() { return this._glBuffer; }\n\n public static create(width: number, height: number, format = GL.RenderBuffer.Format.DepthComponent16) {\n const gl = System.instance.context;\n\n const glBuffer = gl.createRenderbuffer();\n if (null === glBuffer) {\n return undefined;\n }\n\n assert(0 < width && 0 < height);\n RenderBuffer.bindBuffer(glBuffer);\n gl.renderbufferStorage(GL.RenderBuffer.TARGET, format, width, height);\n RenderBuffer.unbind();\n\n return new RenderBuffer(glBuffer, width, height, computeBytesUsed(width, height, format, 1));\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteRenderbuffer(this._glBuffer!);\n this._glBuffer = undefined;\n this._bytesUsed = 0;\n }\n }\n\n public bind() {\n assert(undefined !== this._glBuffer);\n if (undefined !== this._glBuffer) {\n RenderBuffer.bindBuffer(this._glBuffer);\n }\n }\n\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\n this._glBuffer = glBuffer;\n this._bytesUsed = bytesUsed;\n this._width = width;\n this._height = height;\n }\n\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\n private static unbind() { this.bindBuffer(null); }\n}\n\n/**\n * A RenderBuffer for doing antialiasing (multisampling).\n * @internal\n */\nexport class RenderBufferMultiSample implements WebGLDisposable {\n private _glBuffer?: WebGLRenderbuffer;\n private _bytesUsed = 0;\n private _width: number;\n private _height: number;\n private _isDirty: boolean = false;\n\n public get bytesUsed(): number { return this._bytesUsed; }\n public get width(): number { return this._width; }\n public get height(): number { return this._height; }\n public get isDirty(): boolean { return this._isDirty; }\n public markBufferDirty(dirty: boolean) {\n this._isDirty = dirty;\n }\n\n public getHandle() { return this._glBuffer; }\n\n public static create(width: number, height: number, format: number, numSamples: number) {\n const gl = System.instance.context;\n const glBuffer = gl.createRenderbuffer();\n if (null === glBuffer)\n return undefined;\n\n assert(0 < width && 0 < height);\n RenderBufferMultiSample.bindBuffer(glBuffer);\n gl.renderbufferStorageMultisample(GL.RenderBuffer.TARGET, numSamples, format, width, height);\n RenderBufferMultiSample.unbind();\n\n return new RenderBufferMultiSample(glBuffer, width, height, computeBytesUsed(width, height, format, numSamples));\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteRenderbuffer(this._glBuffer!);\n this._glBuffer = undefined;\n }\n }\n\n public bind() {\n assert(undefined !== this._glBuffer);\n if (undefined !== this._glBuffer) {\n RenderBufferMultiSample.bindBuffer(this._glBuffer);\n }\n }\n\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\n this._glBuffer = glBuffer;\n this._bytesUsed = bytesUsed;\n this._width = width;\n this._height = height;\n }\n\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\n private static unbind() { this.bindBuffer(null); }\n}\n"]}
1
+ {"version":3,"file":"RenderBuffer.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/RenderBuffer.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, expectDefined } from \"@itwin/core-bentley\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\n\nfunction computeBytesUsed(width: number, height: number, format: GL.RenderBuffer.Format, numSamples: number): number {\n const bytesPerPixel = (GL.RenderBuffer.Format.DepthComponent16 === format ? 2 : 4);\n return width * height * bytesPerPixel * numSamples;\n}\n\n/** @internal */\nexport class RenderBuffer implements WebGLDisposable {\n private _glBuffer?: WebGLRenderbuffer;\n private _bytesUsed = 0;\n private _width: number;\n private _height: number;\n\n public get bytesUsed(): number { return this._bytesUsed; }\n public get width(): number { return this._width; }\n public get height(): number { return this._height; }\n\n public getHandle() { return this._glBuffer; }\n\n public static create(width: number, height: number, format = GL.RenderBuffer.Format.DepthComponent16) {\n const gl = System.instance.context;\n\n const glBuffer = gl.createRenderbuffer();\n if (null === glBuffer) {\n return undefined;\n }\n\n assert(0 < width && 0 < height);\n RenderBuffer.bindBuffer(glBuffer);\n gl.renderbufferStorage(GL.RenderBuffer.TARGET, format, width, height);\n RenderBuffer.unbind();\n\n return new RenderBuffer(glBuffer, width, height, computeBytesUsed(width, height, format, 1));\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteRenderbuffer(expectDefined(this._glBuffer));\n this._glBuffer = undefined;\n this._bytesUsed = 0;\n }\n }\n\n public bind() {\n assert(undefined !== this._glBuffer);\n if (undefined !== this._glBuffer) {\n RenderBuffer.bindBuffer(this._glBuffer);\n }\n }\n\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\n this._glBuffer = glBuffer;\n this._bytesUsed = bytesUsed;\n this._width = width;\n this._height = height;\n }\n\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\n private static unbind() { this.bindBuffer(null); }\n}\n\n/**\n * A RenderBuffer for doing antialiasing (multisampling).\n * @internal\n */\nexport class RenderBufferMultiSample implements WebGLDisposable {\n private _glBuffer?: WebGLRenderbuffer;\n private _bytesUsed = 0;\n private _width: number;\n private _height: number;\n private _isDirty: boolean = false;\n\n public get bytesUsed(): number { return this._bytesUsed; }\n public get width(): number { return this._width; }\n public get height(): number { return this._height; }\n public get isDirty(): boolean { return this._isDirty; }\n public markBufferDirty(dirty: boolean) {\n this._isDirty = dirty;\n }\n\n public getHandle() { return this._glBuffer; }\n\n public static create(width: number, height: number, format: number, numSamples: number) {\n const gl = System.instance.context;\n const glBuffer = gl.createRenderbuffer();\n if (null === glBuffer)\n return undefined;\n\n assert(0 < width && 0 < height);\n RenderBufferMultiSample.bindBuffer(glBuffer);\n gl.renderbufferStorageMultisample(GL.RenderBuffer.TARGET, numSamples, format, width, height);\n RenderBufferMultiSample.unbind();\n\n return new RenderBufferMultiSample(glBuffer, width, height, computeBytesUsed(width, height, format, numSamples));\n }\n\n public get isDisposed(): boolean { return this._glBuffer === undefined || this._glBuffer === null; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n System.instance.context.deleteRenderbuffer(expectDefined(this._glBuffer));\n this._glBuffer = undefined;\n }\n }\n\n public bind() {\n assert(undefined !== this._glBuffer);\n if (undefined !== this._glBuffer) {\n RenderBufferMultiSample.bindBuffer(this._glBuffer);\n }\n }\n\n private constructor(glBuffer: WebGLRenderbuffer, width: number, height: number, bytesUsed: number) {\n this._glBuffer = glBuffer;\n this._bytesUsed = bytesUsed;\n this._width = width;\n this._height = height;\n }\n\n private static bindBuffer(glBuffer: WebGLRenderbuffer | null) { System.instance.context.bindRenderbuffer(GL.RenderBuffer.TARGET, glBuffer); }\n private static unbind() { this.bindBuffer(null); }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"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"}