@itwin/core-frontend 3.0.0-extension.0 → 3.1.0-dev.5

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 (1302) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuSnap.js +3 -3
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +10 -5
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  9. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  11. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  12. package/lib/cjs/BingLocation.js +2 -2
  13. package/lib/cjs/BingLocation.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js +1 -1
  15. package/lib/cjs/CheckpointConnection.js.map +1 -1
  16. package/lib/cjs/ContextRealityModelState.js +1 -1
  17. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  18. package/lib/cjs/DisplayStyleState.d.ts +10 -163
  19. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  20. package/lib/cjs/DisplayStyleState.js +69 -350
  21. package/lib/cjs/DisplayStyleState.js.map +1 -1
  22. package/lib/cjs/DrawingViewState.d.ts +2 -2
  23. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  24. package/lib/cjs/DrawingViewState.js +3 -3
  25. package/lib/cjs/DrawingViewState.js.map +1 -1
  26. package/lib/cjs/ElementLocateManager.d.ts +5 -0
  27. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  28. package/lib/cjs/ElementLocateManager.js +12 -2
  29. package/lib/cjs/ElementLocateManager.js.map +1 -1
  30. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  31. package/lib/cjs/EmphasizeElements.js +14 -4
  32. package/lib/cjs/EmphasizeElements.js.map +1 -1
  33. package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
  34. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
  35. package/lib/cjs/EnvironmentDecorations.js +200 -0
  36. package/lib/cjs/EnvironmentDecorations.js.map +1 -0
  37. package/lib/cjs/FrontendHubAccess.d.ts +11 -7
  38. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  39. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  40. package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
  41. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  42. package/lib/cjs/FrontendLoggerCategory.js +2 -8
  43. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  44. package/lib/cjs/HitDetail.js +7 -7
  45. package/lib/cjs/HitDetail.js.map +1 -1
  46. package/lib/cjs/IModelApp.d.ts +31 -24
  47. package/lib/cjs/IModelApp.d.ts.map +1 -1
  48. package/lib/cjs/IModelApp.js +35 -36
  49. package/lib/cjs/IModelApp.js.map +1 -1
  50. package/lib/cjs/IModelConnection.d.ts +4 -6
  51. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  52. package/lib/cjs/IModelConnection.js +6 -11
  53. package/lib/cjs/IModelConnection.js.map +1 -1
  54. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  55. package/lib/cjs/IModeljs-css.js +8 -6
  56. package/lib/cjs/IModeljs-css.js.map +1 -1
  57. package/lib/cjs/ImageUtil.d.ts +3 -3
  58. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  59. package/lib/cjs/ImageUtil.js +7 -4
  60. package/lib/cjs/ImageUtil.js.map +1 -1
  61. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  62. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  63. package/lib/cjs/LocalhostIpcApp.js +21 -7
  64. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  65. package/lib/cjs/Marker.d.ts +9 -2
  66. package/lib/cjs/Marker.d.ts.map +1 -1
  67. package/lib/cjs/Marker.js +33 -5
  68. package/lib/cjs/Marker.js.map +1 -1
  69. package/lib/cjs/ModelState.js +1 -1
  70. package/lib/cjs/ModelState.js.map +1 -1
  71. package/lib/cjs/NativeApp.d.ts +3 -38
  72. package/lib/cjs/NativeApp.d.ts.map +1 -1
  73. package/lib/cjs/NativeApp.js +4 -73
  74. package/lib/cjs/NativeApp.js.map +1 -1
  75. package/lib/cjs/NoRenderApp.d.ts +0 -1
  76. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  77. package/lib/cjs/NoRenderApp.js +0 -1
  78. package/lib/cjs/NoRenderApp.js.map +1 -1
  79. package/lib/cjs/NotificationManager.d.ts +3 -1
  80. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  81. package/lib/cjs/NotificationManager.js +2 -0
  82. package/lib/cjs/NotificationManager.js.map +1 -1
  83. package/lib/cjs/RealityDataSource.d.ts +59 -29
  84. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  85. package/lib/cjs/RealityDataSource.js +247 -94
  86. package/lib/cjs/RealityDataSource.js.map +1 -1
  87. package/lib/cjs/RenderScheduleState.d.ts +2 -0
  88. package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
  89. package/lib/cjs/RenderScheduleState.js +10 -5
  90. package/lib/cjs/RenderScheduleState.js.map +1 -1
  91. package/lib/cjs/SheetViewState.d.ts +2 -2
  92. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  93. package/lib/cjs/SheetViewState.js +8 -9
  94. package/lib/cjs/SheetViewState.js.map +1 -1
  95. package/lib/cjs/SpatialViewState.d.ts +10 -2
  96. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  97. package/lib/cjs/SpatialViewState.js +12 -2
  98. package/lib/cjs/SpatialViewState.js.map +1 -1
  99. package/lib/cjs/SubCategoriesCache.js +1 -1
  100. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  101. package/lib/cjs/Tiles.d.ts +11 -1
  102. package/lib/cjs/Tiles.d.ts.map +1 -1
  103. package/lib/cjs/Tiles.js +7 -0
  104. package/lib/cjs/Tiles.js.map +1 -1
  105. package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
  106. package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
  107. package/lib/cjs/TwoWayViewportSync.js +51 -11
  108. package/lib/cjs/TwoWayViewportSync.js.map +1 -1
  109. package/lib/cjs/UserPreferences.d.ts +72 -0
  110. package/lib/cjs/UserPreferences.d.ts.map +1 -0
  111. package/lib/cjs/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  112. package/lib/cjs/UserPreferences.js.map +1 -0
  113. package/lib/cjs/ViewContext.d.ts +3 -1
  114. package/lib/cjs/ViewContext.d.ts.map +1 -1
  115. package/lib/cjs/ViewContext.js +4 -0
  116. package/lib/cjs/ViewContext.js.map +1 -1
  117. package/lib/cjs/ViewCreator2d.js +3 -3
  118. package/lib/cjs/ViewCreator2d.js.map +1 -1
  119. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  120. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  121. package/lib/cjs/ViewCreator3d.js +4 -5
  122. package/lib/cjs/ViewCreator3d.js.map +1 -1
  123. package/lib/cjs/ViewManager.d.ts +6 -6
  124. package/lib/cjs/ViewManager.d.ts.map +1 -1
  125. package/lib/cjs/ViewManager.js +13 -13
  126. package/lib/cjs/ViewManager.js.map +1 -1
  127. package/lib/cjs/ViewState.d.ts +11 -5
  128. package/lib/cjs/ViewState.d.ts.map +1 -1
  129. package/lib/cjs/ViewState.js +18 -63
  130. package/lib/cjs/ViewState.js.map +1 -1
  131. package/lib/cjs/ViewingSpace.js +1 -1
  132. package/lib/cjs/ViewingSpace.js.map +1 -1
  133. package/lib/cjs/Viewport.d.ts +57 -11
  134. package/lib/cjs/Viewport.d.ts.map +1 -1
  135. package/lib/cjs/Viewport.js +55 -31
  136. package/lib/cjs/Viewport.js.map +1 -1
  137. package/lib/cjs/core-frontend.d.ts +17 -31
  138. package/lib/cjs/core-frontend.d.ts.map +1 -1
  139. package/lib/cjs/core-frontend.js +17 -31
  140. package/lib/cjs/core-frontend.js.map +1 -1
  141. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  142. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  143. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  144. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  145. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  146. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  147. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  148. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  149. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  150. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  151. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  152. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  153. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  154. package/lib/cjs/render/FeatureSymbology.js +3 -3
  155. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  156. package/lib/cjs/render/GraphicBranch.d.ts +18 -2
  157. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.js +9 -1
  159. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  160. package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
  161. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  162. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  163. package/lib/cjs/render/MockRender.d.ts +3 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/MockRender.js.map +1 -1
  166. package/lib/cjs/render/RenderMaterial.d.ts +61 -0
  167. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
  168. package/lib/cjs/render/RenderMaterial.js +10 -0
  169. package/lib/cjs/render/RenderMaterial.js.map +1 -0
  170. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  171. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderMemory.js +21 -15
  173. package/lib/cjs/render/RenderMemory.js.map +1 -1
  174. package/lib/cjs/render/RenderSystem.d.ts +44 -7
  175. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderSystem.js +32 -9
  177. package/lib/cjs/render/RenderSystem.js.map +1 -1
  178. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  179. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  180. package/lib/cjs/render/RenderTarget.js +2 -1
  181. package/lib/cjs/render/RenderTarget.js.map +1 -1
  182. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  183. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  184. package/lib/cjs/render/RenderTexture.js +0 -17
  185. package/lib/cjs/render/RenderTexture.js.map +1 -1
  186. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  187. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  188. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  189. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  190. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  191. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  192. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  193. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  194. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  195. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  196. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  197. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  198. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  199. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  200. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  201. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  202. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  203. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  204. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  205. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  206. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  207. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  208. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  210. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  211. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  213. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  214. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  215. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  217. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  218. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  219. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  220. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  221. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  222. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  223. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  224. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  225. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  226. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  228. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  229. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  230. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  231. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  232. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  234. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  235. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  236. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  237. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  238. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  239. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  240. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  241. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  242. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  244. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  245. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  247. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  248. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  249. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/Graphic.js +41 -3
  251. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  252. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  253. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  254. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  255. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  256. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  257. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  258. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  259. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  260. package/lib/cjs/render/webgl/LightingUniforms.d.ts +1 -0
  261. package/lib/cjs/render/webgl/LightingUniforms.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/LightingUniforms.js +4 -1
  263. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  264. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  265. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  266. package/lib/cjs/render/webgl/Material.js +2 -0
  267. package/lib/cjs/render/webgl/Material.js.map +1 -1
  268. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  269. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  270. package/lib/cjs/render/webgl/Mesh.js +18 -458
  271. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  272. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  273. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  274. package/lib/cjs/render/webgl/MeshData.js +66 -0
  275. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  276. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  277. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  278. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  279. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  280. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  281. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  282. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  283. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  284. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  285. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  286. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  287. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  288. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  289. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  290. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  291. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  292. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  293. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  294. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  295. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  296. package/lib/cjs/render/webgl/PointString.js +1 -1
  297. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  298. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  299. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  300. package/lib/cjs/render/webgl/Polyline.js +6 -6
  301. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  302. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  303. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  304. package/lib/cjs/render/webgl/Primitive.js +5 -5
  305. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  306. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  307. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  308. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  309. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  310. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  311. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  313. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  314. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  315. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  316. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  317. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  318. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  319. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  320. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  321. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  322. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  324. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  325. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  326. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  327. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  328. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  329. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  330. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  331. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  332. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  333. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  334. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  335. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  336. package/lib/cjs/render/webgl/System.d.ts +13 -10
  337. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  338. package/lib/cjs/render/webgl/System.js +75 -21
  339. package/lib/cjs/render/webgl/System.js.map +1 -1
  340. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  341. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  342. package/lib/cjs/render/webgl/Target.js +88 -2
  343. package/lib/cjs/render/webgl/Target.js.map +1 -1
  344. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  345. package/lib/cjs/render/webgl/Technique.js +112 -119
  346. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  347. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  348. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  350. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  351. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  352. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  354. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  355. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  356. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  357. package/lib/cjs/render/webgl/Texture.js +26 -23
  358. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  360. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  361. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  362. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  363. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  364. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  365. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  366. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  367. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  368. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  369. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  370. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  372. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  373. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  374. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  375. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  376. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  377. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  378. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  380. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  381. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  382. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  383. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  384. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  385. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  387. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  388. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  389. package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/Lighting.js +16 -2
  391. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  392. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  393. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  394. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  395. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  396. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  398. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  399. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  400. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  401. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  402. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  403. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  404. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  405. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  406. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  407. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  408. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  409. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  410. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  411. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  412. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  413. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  414. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  415. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  416. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  417. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  418. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  419. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  420. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  421. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  422. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  423. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  424. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  425. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  426. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  427. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  428. package/lib/cjs/render-primitives.d.ts +5 -1
  429. package/lib/cjs/render-primitives.d.ts.map +1 -1
  430. package/lib/cjs/render-primitives.js +5 -1
  431. package/lib/cjs/render-primitives.js.map +1 -1
  432. package/lib/cjs/request/Request.d.ts +167 -0
  433. package/lib/cjs/request/Request.d.ts.map +1 -0
  434. package/lib/cjs/request/Request.js +315 -0
  435. package/lib/cjs/request/Request.js.map +1 -0
  436. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  437. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  438. package/lib/cjs/tile/B3dmReader.js +11 -7
  439. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  440. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  441. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  442. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  443. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  444. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  445. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  446. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  447. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  448. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  449. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  450. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  451. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  452. package/lib/cjs/tile/GltfReader.js +703 -264
  453. package/lib/cjs/tile/GltfReader.js.map +1 -1
  454. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  455. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  456. package/lib/cjs/tile/I3dmReader.js +10 -6
  457. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  458. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  459. package/lib/cjs/tile/IModelTile.js +14 -7
  460. package/lib/cjs/tile/IModelTile.js.map +1 -1
  461. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  462. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  463. package/lib/cjs/tile/IModelTileTree.js +36 -1
  464. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  465. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  466. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  467. package/lib/cjs/tile/ImdlReader.js +202 -68
  468. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  469. package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
  470. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/OrbitGtTileTree.js +10 -20
  472. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  473. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  474. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  475. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  476. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  477. package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -41
  478. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  479. package/lib/cjs/tile/RealityModelTileTree.js +57 -217
  480. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  481. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  482. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  483. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  484. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  485. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  486. package/lib/cjs/tile/Tile.js +5 -1
  487. package/lib/cjs/tile/Tile.js.map +1 -1
  488. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  489. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  490. package/lib/cjs/tile/TileAdmin.js +18 -12
  491. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  492. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  493. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  494. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  495. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  496. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  497. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  498. package/lib/cjs/tile/TileTreeReference.js +5 -0
  499. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  500. package/lib/cjs/tile/internal.d.ts +4 -1
  501. package/lib/cjs/tile/internal.d.ts.map +1 -1
  502. package/lib/cjs/tile/internal.js +4 -1
  503. package/lib/cjs/tile/internal.js.map +1 -1
  504. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  505. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  506. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  507. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  508. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  509. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  510. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  511. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  512. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  513. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  514. package/lib/cjs/tile/map/BingElevation.js +4 -4
  515. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  516. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  517. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  518. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  519. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  520. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  521. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  522. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  523. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  524. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  525. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  526. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  527. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  528. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  529. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  530. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  531. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  532. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  533. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  534. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  535. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  536. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  537. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  538. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  539. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  540. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  541. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  542. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  543. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  544. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  545. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  546. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  547. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  548. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  549. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  550. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  551. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  552. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  553. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  554. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  555. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  556. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  557. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  558. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  559. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  560. package/lib/cjs/tile/map/MapTile.js +4 -3
  561. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  562. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  563. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  564. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  565. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  566. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  567. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  568. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  569. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  570. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  571. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  572. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  573. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  574. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  575. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  576. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  577. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  578. package/lib/cjs/tile/map/QuadId.js +2 -1
  579. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  580. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  581. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  582. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  583. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  584. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  585. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  586. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  587. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  588. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  589. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  590. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  591. package/lib/cjs/tools/EditManipulator.js +1 -1
  592. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  593. package/lib/cjs/tools/ElementSetTool.js +2 -2
  594. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  595. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  596. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  597. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  598. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  599. package/lib/cjs/tools/Tool.d.ts +29 -1
  600. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  601. package/lib/cjs/tools/Tool.js +66 -0
  602. package/lib/cjs/tools/Tool.js.map +1 -1
  603. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  604. package/lib/cjs/tools/ToolAdmin.js +20 -10
  605. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  606. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  607. package/lib/cjs/tools/ViewTool.js +3 -11
  608. package/lib/cjs/tools/ViewTool.js.map +1 -1
  609. package/lib/cjs/webgl.d.ts +5 -0
  610. package/lib/cjs/webgl.d.ts.map +1 -1
  611. package/lib/cjs/webgl.js +5 -0
  612. package/lib/cjs/webgl.js.map +1 -1
  613. package/lib/esm/AccuSnap.js +3 -3
  614. package/lib/esm/AccuSnap.js.map +1 -1
  615. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  616. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  617. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  618. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  619. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  620. package/lib/esm/BackgroundMapGeometry.js +2 -2
  621. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  622. package/lib/esm/BingLocation.js +1 -1
  623. package/lib/esm/BingLocation.js.map +1 -1
  624. package/lib/esm/CheckpointConnection.js +1 -1
  625. package/lib/esm/CheckpointConnection.js.map +1 -1
  626. package/lib/esm/ContextRealityModelState.js +1 -1
  627. package/lib/esm/ContextRealityModelState.js.map +1 -1
  628. package/lib/esm/DisplayStyleState.d.ts +10 -163
  629. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  630. package/lib/esm/DisplayStyleState.js +70 -346
  631. package/lib/esm/DisplayStyleState.js.map +1 -1
  632. package/lib/esm/DrawingViewState.d.ts +2 -2
  633. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  634. package/lib/esm/DrawingViewState.js +3 -3
  635. package/lib/esm/DrawingViewState.js.map +1 -1
  636. package/lib/esm/ElementLocateManager.d.ts +5 -0
  637. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  638. package/lib/esm/ElementLocateManager.js +12 -2
  639. package/lib/esm/ElementLocateManager.js.map +1 -1
  640. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  641. package/lib/esm/EmphasizeElements.js +14 -4
  642. package/lib/esm/EmphasizeElements.js.map +1 -1
  643. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  644. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  645. package/lib/esm/EnvironmentDecorations.js +196 -0
  646. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  647. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  648. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  649. package/lib/esm/FrontendHubAccess.js.map +1 -1
  650. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  651. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  652. package/lib/esm/FrontendLoggerCategory.js +2 -8
  653. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  654. package/lib/esm/HitDetail.js +7 -7
  655. package/lib/esm/HitDetail.js.map +1 -1
  656. package/lib/esm/IModelApp.d.ts +31 -24
  657. package/lib/esm/IModelApp.d.ts.map +1 -1
  658. package/lib/esm/IModelApp.js +34 -35
  659. package/lib/esm/IModelApp.js.map +1 -1
  660. package/lib/esm/IModelConnection.d.ts +4 -6
  661. package/lib/esm/IModelConnection.d.ts.map +1 -1
  662. package/lib/esm/IModelConnection.js +6 -11
  663. package/lib/esm/IModelConnection.js.map +1 -1
  664. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  665. package/lib/esm/IModeljs-css.js +8 -6
  666. package/lib/esm/IModeljs-css.js.map +1 -1
  667. package/lib/esm/ImageUtil.d.ts +3 -3
  668. package/lib/esm/ImageUtil.d.ts.map +1 -1
  669. package/lib/esm/ImageUtil.js +7 -4
  670. package/lib/esm/ImageUtil.js.map +1 -1
  671. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  672. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  673. package/lib/esm/LocalhostIpcApp.js +22 -8
  674. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  675. package/lib/esm/Marker.d.ts +9 -2
  676. package/lib/esm/Marker.d.ts.map +1 -1
  677. package/lib/esm/Marker.js +34 -6
  678. package/lib/esm/Marker.js.map +1 -1
  679. package/lib/esm/ModelState.js +1 -1
  680. package/lib/esm/ModelState.js.map +1 -1
  681. package/lib/esm/NativeApp.d.ts +3 -38
  682. package/lib/esm/NativeApp.d.ts.map +1 -1
  683. package/lib/esm/NativeApp.js +1 -69
  684. package/lib/esm/NativeApp.js.map +1 -1
  685. package/lib/esm/NoRenderApp.d.ts +0 -1
  686. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  687. package/lib/esm/NoRenderApp.js +0 -1
  688. package/lib/esm/NoRenderApp.js.map +1 -1
  689. package/lib/esm/NotificationManager.d.ts +3 -1
  690. package/lib/esm/NotificationManager.d.ts.map +1 -1
  691. package/lib/esm/NotificationManager.js +2 -0
  692. package/lib/esm/NotificationManager.js.map +1 -1
  693. package/lib/esm/RealityDataSource.d.ts +59 -29
  694. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  695. package/lib/esm/RealityDataSource.js +247 -92
  696. package/lib/esm/RealityDataSource.js.map +1 -1
  697. package/lib/esm/RenderScheduleState.d.ts +2 -0
  698. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  699. package/lib/esm/RenderScheduleState.js +8 -4
  700. package/lib/esm/RenderScheduleState.js.map +1 -1
  701. package/lib/esm/SheetViewState.d.ts +2 -2
  702. package/lib/esm/SheetViewState.d.ts.map +1 -1
  703. package/lib/esm/SheetViewState.js +8 -9
  704. package/lib/esm/SheetViewState.js.map +1 -1
  705. package/lib/esm/SpatialViewState.d.ts +10 -2
  706. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  707. package/lib/esm/SpatialViewState.js +12 -2
  708. package/lib/esm/SpatialViewState.js.map +1 -1
  709. package/lib/esm/SubCategoriesCache.js +1 -1
  710. package/lib/esm/SubCategoriesCache.js.map +1 -1
  711. package/lib/esm/Tiles.d.ts +11 -1
  712. package/lib/esm/Tiles.d.ts.map +1 -1
  713. package/lib/esm/Tiles.js +7 -0
  714. package/lib/esm/Tiles.js.map +1 -1
  715. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  716. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  717. package/lib/esm/TwoWayViewportSync.js +49 -10
  718. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  719. package/lib/esm/UserPreferences.d.ts +72 -0
  720. package/lib/esm/UserPreferences.d.ts.map +1 -0
  721. package/lib/esm/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  722. package/lib/esm/UserPreferences.js.map +1 -0
  723. package/lib/esm/ViewContext.d.ts +3 -1
  724. package/lib/esm/ViewContext.d.ts.map +1 -1
  725. package/lib/esm/ViewContext.js +4 -0
  726. package/lib/esm/ViewContext.js.map +1 -1
  727. package/lib/esm/ViewCreator2d.js +3 -3
  728. package/lib/esm/ViewCreator2d.js.map +1 -1
  729. package/lib/esm/ViewCreator3d.d.ts +1 -1
  730. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  731. package/lib/esm/ViewCreator3d.js +5 -6
  732. package/lib/esm/ViewCreator3d.js.map +1 -1
  733. package/lib/esm/ViewManager.d.ts +6 -6
  734. package/lib/esm/ViewManager.d.ts.map +1 -1
  735. package/lib/esm/ViewManager.js +13 -13
  736. package/lib/esm/ViewManager.js.map +1 -1
  737. package/lib/esm/ViewState.d.ts +11 -5
  738. package/lib/esm/ViewState.d.ts.map +1 -1
  739. package/lib/esm/ViewState.js +21 -66
  740. package/lib/esm/ViewState.js.map +1 -1
  741. package/lib/esm/ViewingSpace.js +1 -1
  742. package/lib/esm/ViewingSpace.js.map +1 -1
  743. package/lib/esm/Viewport.d.ts +57 -11
  744. package/lib/esm/Viewport.d.ts.map +1 -1
  745. package/lib/esm/Viewport.js +56 -32
  746. package/lib/esm/Viewport.js.map +1 -1
  747. package/lib/esm/core-frontend.d.ts +17 -31
  748. package/lib/esm/core-frontend.d.ts.map +1 -1
  749. package/lib/esm/core-frontend.js +17 -31
  750. package/lib/esm/core-frontend.js.map +1 -1
  751. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  752. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  753. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  754. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  755. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  756. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  757. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  758. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  759. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  760. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  761. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  762. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  763. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  764. package/lib/esm/render/FeatureSymbology.js +3 -3
  765. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  766. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  767. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  768. package/lib/esm/render/GraphicBranch.js +8 -0
  769. package/lib/esm/render/GraphicBranch.js.map +1 -1
  770. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  771. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  772. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  773. package/lib/esm/render/MockRender.d.ts +3 -1
  774. package/lib/esm/render/MockRender.d.ts.map +1 -1
  775. package/lib/esm/render/MockRender.js.map +1 -1
  776. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  777. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  778. package/lib/esm/render/RenderMaterial.js +9 -0
  779. package/lib/esm/render/RenderMaterial.js.map +1 -0
  780. package/lib/esm/render/RenderMemory.d.ts +21 -15
  781. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  782. package/lib/esm/render/RenderMemory.js +21 -15
  783. package/lib/esm/render/RenderMemory.js.map +1 -1
  784. package/lib/esm/render/RenderSystem.d.ts +44 -7
  785. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  786. package/lib/esm/render/RenderSystem.js +32 -9
  787. package/lib/esm/render/RenderSystem.js.map +1 -1
  788. package/lib/esm/render/RenderTarget.d.ts +10 -2
  789. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  790. package/lib/esm/render/RenderTarget.js +2 -1
  791. package/lib/esm/render/RenderTarget.js.map +1 -1
  792. package/lib/esm/render/RenderTexture.d.ts +2 -17
  793. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  794. package/lib/esm/render/RenderTexture.js +1 -16
  795. package/lib/esm/render/RenderTexture.js.map +1 -1
  796. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  797. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  798. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  799. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  800. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  801. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  802. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  803. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  804. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  805. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  806. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  807. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  808. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  809. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  810. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  811. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  812. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  813. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  814. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  815. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  816. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  817. package/lib/esm/render/primitives/VertexTable.js +11 -342
  818. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  819. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  820. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  821. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  822. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  823. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  824. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  825. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  826. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  827. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  828. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  829. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  830. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  831. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  832. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  833. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  834. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  835. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  836. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  837. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  838. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  839. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  840. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  841. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  842. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  843. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  844. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  845. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  846. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  847. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  848. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  849. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  850. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  851. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  852. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  853. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  854. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  855. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  856. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  857. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  858. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  859. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/Graphic.js +39 -2
  861. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  862. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  863. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  864. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  865. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  866. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  867. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  868. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  869. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  870. package/lib/esm/render/webgl/LightingUniforms.d.ts +1 -0
  871. package/lib/esm/render/webgl/LightingUniforms.d.ts.map +1 -1
  872. package/lib/esm/render/webgl/LightingUniforms.js +4 -1
  873. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  874. package/lib/esm/render/webgl/Material.d.ts +1 -1
  875. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  876. package/lib/esm/render/webgl/Material.js +2 -0
  877. package/lib/esm/render/webgl/Material.js.map +1 -1
  878. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  879. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  880. package/lib/esm/render/webgl/Mesh.js +12 -445
  881. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  882. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  883. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  884. package/lib/esm/render/webgl/MeshData.js +62 -0
  885. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  886. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  887. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  888. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  889. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  890. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  891. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  892. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  893. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  894. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  895. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  896. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  897. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  899. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  900. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  901. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/PointCloud.js +2 -2
  903. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  904. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  905. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/PointString.js +1 -1
  907. package/lib/esm/render/webgl/PointString.js.map +1 -1
  908. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  909. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/Polyline.js +6 -6
  911. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  912. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  913. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  914. package/lib/esm/render/webgl/Primitive.js +5 -5
  915. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  916. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  917. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  918. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  919. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  920. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  921. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  922. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  923. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  924. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  925. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  926. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  927. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  928. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  929. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  930. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  931. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  932. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  933. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  934. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  935. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  936. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  937. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  938. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  939. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  940. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  941. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  942. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  943. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  944. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  945. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  946. package/lib/esm/render/webgl/System.d.ts +13 -10
  947. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  948. package/lib/esm/render/webgl/System.js +77 -23
  949. package/lib/esm/render/webgl/System.js.map +1 -1
  950. package/lib/esm/render/webgl/Target.d.ts +13 -1
  951. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  952. package/lib/esm/render/webgl/Target.js +88 -2
  953. package/lib/esm/render/webgl/Target.js.map +1 -1
  954. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  955. package/lib/esm/render/webgl/Technique.js +112 -119
  956. package/lib/esm/render/webgl/Technique.js.map +1 -1
  957. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  958. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  959. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  960. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  961. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  962. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  963. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  964. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  965. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  966. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  967. package/lib/esm/render/webgl/Texture.js +27 -24
  968. package/lib/esm/render/webgl/Texture.js.map +1 -1
  969. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  970. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  971. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  972. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  973. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  974. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  975. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  976. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  977. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  978. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  979. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  980. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  981. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  982. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  983. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  984. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  985. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  986. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  987. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  988. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  989. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  990. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  991. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  992. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  993. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  994. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  995. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  996. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  997. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  998. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  999. package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
  1000. package/lib/esm/render/webgl/glsl/Lighting.js +16 -2
  1001. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  1002. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  1003. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  1004. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  1005. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  1006. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  1007. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  1008. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  1009. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  1010. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  1011. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  1012. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  1013. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  1014. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  1015. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  1016. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  1017. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  1018. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  1019. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  1020. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  1021. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  1022. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  1023. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1024. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1025. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1026. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1027. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1028. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1029. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1030. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1031. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1032. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1033. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1034. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1035. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1036. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1037. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1038. package/lib/esm/render-primitives.d.ts +5 -1
  1039. package/lib/esm/render-primitives.d.ts.map +1 -1
  1040. package/lib/esm/render-primitives.js +5 -1
  1041. package/lib/esm/render-primitives.js.map +1 -1
  1042. package/lib/esm/request/Request.d.ts +167 -0
  1043. package/lib/esm/request/Request.d.ts.map +1 -0
  1044. package/lib/esm/request/Request.js +289 -0
  1045. package/lib/esm/request/Request.js.map +1 -0
  1046. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1047. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1048. package/lib/esm/tile/B3dmReader.js +12 -8
  1049. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1050. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1051. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1052. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1053. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1054. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1055. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1056. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1057. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1058. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1059. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1060. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1061. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1062. package/lib/esm/tile/GltfReader.js +678 -242
  1063. package/lib/esm/tile/GltfReader.js.map +1 -1
  1064. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1065. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1066. package/lib/esm/tile/I3dmReader.js +11 -7
  1067. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1068. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1069. package/lib/esm/tile/IModelTile.js +14 -7
  1070. package/lib/esm/tile/IModelTile.js.map +1 -1
  1071. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1072. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1073. package/lib/esm/tile/IModelTileTree.js +36 -1
  1074. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1075. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1076. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1077. package/lib/esm/tile/ImdlReader.js +199 -66
  1078. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1079. package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
  1080. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1081. package/lib/esm/tile/OrbitGtTileTree.js +10 -20
  1082. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1083. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1084. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1085. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1086. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1087. package/lib/esm/tile/RealityModelTileTree.d.ts +2 -41
  1088. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1089. package/lib/esm/tile/RealityModelTileTree.js +56 -215
  1090. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1091. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1092. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1093. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1094. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1095. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1096. package/lib/esm/tile/Tile.js +5 -1
  1097. package/lib/esm/tile/Tile.js.map +1 -1
  1098. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1099. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1100. package/lib/esm/tile/TileAdmin.js +19 -13
  1101. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1102. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1103. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1104. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1105. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1106. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1107. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1108. package/lib/esm/tile/TileTreeReference.js +5 -0
  1109. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1110. package/lib/esm/tile/internal.d.ts +4 -1
  1111. package/lib/esm/tile/internal.d.ts.map +1 -1
  1112. package/lib/esm/tile/internal.js +4 -1
  1113. package/lib/esm/tile/internal.js.map +1 -1
  1114. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1115. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1116. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1117. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1118. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1119. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1120. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1121. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1122. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1123. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1124. package/lib/esm/tile/map/BingElevation.js +1 -1
  1125. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1126. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1127. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1128. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1129. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1130. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1131. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1132. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1133. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1134. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1135. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1136. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1137. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1138. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1139. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1140. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1141. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1142. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1143. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1144. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1145. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1146. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1147. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1148. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1149. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1150. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1151. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1152. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1153. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1154. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1155. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1156. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1157. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1158. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1159. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1160. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1161. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1162. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1163. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1164. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1165. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1166. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1167. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1168. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1169. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1170. package/lib/esm/tile/map/MapTile.js +4 -3
  1171. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1172. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1173. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1174. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1175. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1176. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1177. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1178. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1179. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1180. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1181. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1182. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1183. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1184. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1185. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1186. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1187. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1188. package/lib/esm/tile/map/QuadId.js +2 -1
  1189. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1190. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1191. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1192. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1193. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1194. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1195. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1196. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1197. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1198. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1199. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1200. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1201. package/lib/esm/tools/EditManipulator.js +1 -1
  1202. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1203. package/lib/esm/tools/ElementSetTool.js +2 -2
  1204. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1205. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1206. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1207. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1208. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1209. package/lib/esm/tools/Tool.d.ts +29 -1
  1210. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1211. package/lib/esm/tools/Tool.js +66 -0
  1212. package/lib/esm/tools/Tool.js.map +1 -1
  1213. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1214. package/lib/esm/tools/ToolAdmin.js +20 -10
  1215. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1216. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1217. package/lib/esm/tools/ViewTool.js +3 -11
  1218. package/lib/esm/tools/ViewTool.js.map +1 -1
  1219. package/lib/esm/webgl.d.ts +5 -0
  1220. package/lib/esm/webgl.d.ts.map +1 -1
  1221. package/lib/esm/webgl.js +5 -0
  1222. package/lib/esm/webgl.js.map +1 -1
  1223. package/lib/public/locales/en/iModelJs.json +3 -1
  1224. package/package.json +33 -28
  1225. package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
  1226. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1227. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1228. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1229. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1230. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1231. package/lib/cjs/RealityDataConnection.js +0 -101
  1232. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1233. package/lib/cjs/extension/Extension.d.ts +0 -39
  1234. package/lib/cjs/extension/Extension.d.ts.map +0 -1
  1235. package/lib/cjs/extension/Extension.js +0 -39
  1236. package/lib/cjs/extension/Extension.js.map +0 -1
  1237. package/lib/cjs/extension/ExtensionAdmin.d.ts +0 -70
  1238. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +0 -1
  1239. package/lib/cjs/extension/ExtensionAdmin.js +0 -105
  1240. package/lib/cjs/extension/ExtensionAdmin.js.map +0 -1
  1241. package/lib/cjs/extension/ExtensionHost.d.ts +0 -20
  1242. package/lib/cjs/extension/ExtensionHost.d.ts.map +0 -1
  1243. package/lib/cjs/extension/ExtensionHost.js +0 -19
  1244. package/lib/cjs/extension/ExtensionHost.js.map +0 -1
  1245. package/lib/cjs/extension/ExtensionImpl.d.ts +0 -16
  1246. package/lib/cjs/extension/ExtensionImpl.d.ts.map +0 -1
  1247. package/lib/cjs/extension/ExtensionImpl.js +0 -40
  1248. package/lib/cjs/extension/ExtensionImpl.js.map +0 -1
  1249. package/lib/cjs/extension/ExtensionLoader.d.ts +0 -20
  1250. package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
  1251. package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
  1252. package/lib/cjs/extension/ExtensionRuntime.d.ts +0 -2
  1253. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +0 -1
  1254. package/lib/cjs/extension/ExtensionRuntime.js +0 -60
  1255. package/lib/cjs/extension/ExtensionRuntime.js.map +0 -1
  1256. package/lib/cjs/extension/extensions.d.ts +0 -18
  1257. package/lib/cjs/extension/extensions.d.ts.map +0 -1
  1258. package/lib/cjs/extension/extensions.js +0 -35
  1259. package/lib/cjs/extension/extensions.js.map +0 -1
  1260. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1261. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1262. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1263. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1264. package/lib/esm/RealityDataAccessProps.d.ts +0 -44
  1265. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1266. package/lib/esm/RealityDataAccessProps.js +0 -20
  1267. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1268. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1269. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1270. package/lib/esm/RealityDataConnection.js +0 -98
  1271. package/lib/esm/RealityDataConnection.js.map +0 -1
  1272. package/lib/esm/extension/Extension.d.ts +0 -39
  1273. package/lib/esm/extension/Extension.d.ts.map +0 -1
  1274. package/lib/esm/extension/Extension.js +0 -38
  1275. package/lib/esm/extension/Extension.js.map +0 -1
  1276. package/lib/esm/extension/ExtensionAdmin.d.ts +0 -70
  1277. package/lib/esm/extension/ExtensionAdmin.d.ts.map +0 -1
  1278. package/lib/esm/extension/ExtensionAdmin.js +0 -101
  1279. package/lib/esm/extension/ExtensionAdmin.js.map +0 -1
  1280. package/lib/esm/extension/ExtensionHost.d.ts +0 -20
  1281. package/lib/esm/extension/ExtensionHost.d.ts.map +0 -1
  1282. package/lib/esm/extension/ExtensionHost.js +0 -15
  1283. package/lib/esm/extension/ExtensionHost.js.map +0 -1
  1284. package/lib/esm/extension/ExtensionImpl.d.ts +0 -16
  1285. package/lib/esm/extension/ExtensionImpl.d.ts.map +0 -1
  1286. package/lib/esm/extension/ExtensionImpl.js +0 -35
  1287. package/lib/esm/extension/ExtensionImpl.js.map +0 -1
  1288. package/lib/esm/extension/ExtensionLoader.d.ts +0 -20
  1289. package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
  1290. package/lib/esm/extension/ExtensionLoader.js.map +0 -1
  1291. package/lib/esm/extension/ExtensionRuntime.d.ts +0 -2
  1292. package/lib/esm/extension/ExtensionRuntime.d.ts.map +0 -1
  1293. package/lib/esm/extension/ExtensionRuntime.js +0 -58
  1294. package/lib/esm/extension/ExtensionRuntime.js.map +0 -1
  1295. package/lib/esm/extension/extensions.d.ts +0 -18
  1296. package/lib/esm/extension/extensions.d.ts.map +0 -1
  1297. package/lib/esm/extension/extensions.js +0 -23
  1298. package/lib/esm/extension/extensions.js.map +0 -1
  1299. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1300. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1301. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1302. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/MeshPrimitives.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, FillFlags, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineData, PolylineEdgeArgs, PolylineFlags, QParams3d, QPoint3dList, RenderMaterial, RenderTexture, SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { InstancedGraphicParams } from \"../../InstancedGraphicParams\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { ColorMap } from \"../ColorMap\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { Triangle, TriangleList } from \"../Primitives\";\r\nimport { VertexKeyProps } from \"../VertexKey\";\r\n\r\n/* Information needed to draw a set of indexed polylines using a shared vertex buffer.\r\n * @internal\r\n */\r\nexport class PolylineArgs {\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n public flags: PolylineFlags;\r\n public points: QPoint3dList;\r\n public polylines: PolylineData[];\r\n public pointParams: QParams3d;\r\n\r\n public constructor(points: QPoint3dList = new QPoint3dList(QParams3d.fromRange(Range3d.createNull())),\r\n polylines: PolylineData[] = [], pointParams?: QParams3d, is2d = false, isPlanar = false) {\r\n this.points = points;\r\n this.polylines = polylines;\r\n if (undefined === pointParams) {\r\n this.pointParams = QParams3d.fromRange(Range3d.createNull());\r\n } else {\r\n this.pointParams = pointParams;\r\n }\r\n this.flags = new PolylineFlags(is2d, isPlanar);\r\n }\r\n\r\n public get isValid(): boolean { return this.polylines.length !== 0; }\r\n public reset(): void {\r\n this.flags.initDefaults();\r\n this.points = new QPoint3dList(QParams3d.fromRange(Range3d.createNull()));\r\n this.polylines = [];\r\n this.colors.reset();\r\n this.features.reset();\r\n }\r\n public init(mesh: Mesh) {\r\n this.reset();\r\n if (undefined === mesh.polylines)\r\n return;\r\n\r\n this.width = mesh.displayParams.width;\r\n this.linePixels = mesh.displayParams.linePixels;\r\n this.flags.is2d = mesh.is2d;\r\n this.flags.isPlanar = mesh.isPlanar;\r\n this.flags.isDisjoint = Mesh.PrimitiveType.Point === mesh.type;\r\n if (DisplayParams.RegionEdgeType.Outline === mesh.displayParams.regionEdgeType) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (undefined === mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n this.flags.setIsNormalEdge();\r\n else\r\n this.flags.setIsOutlineEdge(); // edges only displayed if fill undisplayed...\r\n }\r\n\r\n mesh.polylines.forEach((polyline) => {\r\n const indexedPolyline = new PolylineData();\r\n if (indexedPolyline.init(polyline)) { this.polylines.push(indexedPolyline); }\r\n });\r\n if (!this.isValid) { return false; }\r\n this.finishInit(mesh);\r\n return true;\r\n }\r\n public finishInit(mesh: Mesh) {\r\n this.pointParams = mesh.points.params;\r\n this.points = mesh.points;\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n }\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface\r\n * @internal\r\n */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\n/* A carrier of information needed to describe a triangle mesh and its edges.\r\n * @internal\r\n */\r\nexport class MeshArgs {\r\n public edges = new MeshArgsEdges();\r\n public vertIndices?: number[];\r\n public points?: QPoint3dList;\r\n public normals?: OctEncodedNormal[];\r\n public textureUv?: Point2d[];\r\n public texture?: RenderTexture;\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public material?: RenderMaterial;\r\n public fillFlags = FillFlags.None;\r\n public isPlanar = false;\r\n public is2d = false;\r\n public hasBakedLighting = false;\r\n public isVolumeClassifier = false;\r\n public hasFixedNormals = false;\r\n public auxChannels?: ReadonlyArray<AuxChannel>;\r\n\r\n public clear() {\r\n this.edges.clear();\r\n this.vertIndices = undefined;\r\n this.points = undefined;\r\n this.normals = undefined;\r\n this.textureUv = undefined;\r\n this.texture = undefined;\r\n this.colors.reset();\r\n this.features.reset();\r\n this.material = undefined;\r\n this.fillFlags = FillFlags.None;\r\n this.isPlanar = this.is2d = this.hasBakedLighting = this.isVolumeClassifier = this.hasFixedNormals = false;\r\n this.auxChannels = undefined;\r\n }\r\n\r\n public init(mesh: Mesh): boolean {\r\n this.clear();\r\n if (undefined === mesh.triangles || mesh.triangles.isEmpty)\r\n return false;\r\n\r\n assert(0 < mesh.points.length);\r\n\r\n this.vertIndices = mesh.triangles.indices;\r\n this.points = mesh.points;\r\n\r\n if (!mesh.displayParams.ignoreLighting && 0 < mesh.normals.length)\r\n this.normals = mesh.normals;\r\n\r\n if (0 < mesh.uvParams.length)\r\n this.textureUv = mesh.uvParams;\r\n\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n\r\n this.material = mesh.displayParams.material;\r\n if (undefined !== mesh.displayParams.textureMapping)\r\n this.texture = mesh.displayParams.textureMapping.texture;\r\n\r\n this.fillFlags = mesh.displayParams.fillFlags;\r\n this.isPlanar = mesh.isPlanar;\r\n this.is2d = mesh.is2d;\r\n this.hasBakedLighting = (true === mesh.hasBakedLighting);\r\n this.isVolumeClassifier = (true === mesh.isVolumeClassifier);\r\n\r\n this.edges.width = mesh.displayParams.width;\r\n this.edges.linePixels = mesh.displayParams.linePixels;\r\n this.auxChannels = mesh.auxChannels;\r\n\r\n const meshEdges = mesh.edges;\r\n if (undefined === meshEdges)\r\n return true;\r\n\r\n this.edges.edges.init(mesh.edges);\r\n this.edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines: PolylineData[] = [];\r\n meshEdges.polylines.forEach((meshPolyline: MeshPolyline) => {\r\n const polyline = new PolylineData();\r\n if (polyline.init(meshPolyline)) { polylines.push(polyline); }\r\n });\r\n\r\n this.edges.polylines.init(polylines);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshGraphicArgs {\r\n public polylineArgs = new PolylineArgs();\r\n public meshArgs: MeshArgs = new MeshArgs();\r\n}\r\n\r\n/** @internal */\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: QPoint3dList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: Mesh.PrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = Mesh.PrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();\r\n this.displayParams = displayParams;\r\n this.features = features;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return Mesh.PrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return Mesh.PrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public getGraphics(args: MeshGraphicArgs, system: RenderSystem, instances?: InstancedGraphicParams): RenderGraphic | undefined {\r\n if (undefined !== this.triangles && this.triangles.length !== 0) {\r\n if (args.meshArgs.init(this))\r\n return system.createTriMesh(args.meshArgs, instances);\r\n } else if (undefined !== this.polylines && this.polylines.length !== 0 && args.polylineArgs.init(this)) {\r\n return system.createIndexedPolylines(args.polylineArgs, instances);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(Mesh.PrimitiveType.Polyline === type || Mesh.PrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (Mesh.PrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(Mesh.PrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.push(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace Mesh { // eslint-disable-line no-redeclare\r\n export enum PrimitiveType {\r\n Mesh, // eslint-disable-line @typescript-eslint/no-shadow\r\n Polyline,\r\n Point,\r\n }\r\n\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: Mesh.Features;\r\n type: Mesh.PrimitiveType;\r\n range: Range3d;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MeshPrimitives.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/MeshPrimitives.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AuxChannel, AuxChannelData, Point2d, Point3d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorIndex, EdgeArgs, Feature, FeatureIndex, FeatureIndexType, FeatureTable, FillFlags, LinePixels, MeshEdges, MeshPolyline, MeshPolylineList,\r\n OctEncodedNormal, PolylineData, PolylineEdgeArgs, PolylineFlags, QParams3d, QPoint3dList, RenderMaterial, RenderTexture, SilhouetteEdgeArgs,\r\n} from \"@itwin/core-common\";\r\nimport { InstancedGraphicParams } from \"../../InstancedGraphicParams\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { ColorMap } from \"../ColorMap\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { Triangle, TriangleList } from \"../Primitives\";\r\nimport { VertexKeyProps } from \"../VertexKey\";\r\n\r\n/* Information needed to draw a set of indexed polylines using a shared vertex buffer.\r\n * @internal\r\n */\r\nexport class PolylineArgs {\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n public flags: PolylineFlags;\r\n public points: QPoint3dList;\r\n public polylines: PolylineData[];\r\n public pointParams: QParams3d;\r\n\r\n public constructor(points: QPoint3dList = new QPoint3dList(QParams3d.fromRange(Range3d.createNull())),\r\n polylines: PolylineData[] = [], pointParams?: QParams3d, is2d = false, isPlanar = false) {\r\n this.points = points;\r\n this.polylines = polylines;\r\n if (undefined === pointParams) {\r\n this.pointParams = QParams3d.fromRange(Range3d.createNull());\r\n } else {\r\n this.pointParams = pointParams;\r\n }\r\n this.flags = new PolylineFlags(is2d, isPlanar);\r\n }\r\n\r\n public get isValid(): boolean { return this.polylines.length !== 0; }\r\n public reset(): void {\r\n this.flags.initDefaults();\r\n this.points = new QPoint3dList(QParams3d.fromRange(Range3d.createNull()));\r\n this.polylines = [];\r\n this.colors.reset();\r\n this.features.reset();\r\n }\r\n public init(mesh: Mesh) {\r\n this.reset();\r\n if (undefined === mesh.polylines)\r\n return;\r\n\r\n this.width = mesh.displayParams.width;\r\n this.linePixels = mesh.displayParams.linePixels;\r\n this.flags.is2d = mesh.is2d;\r\n this.flags.isPlanar = mesh.isPlanar;\r\n this.flags.isDisjoint = Mesh.PrimitiveType.Point === mesh.type;\r\n if (DisplayParams.RegionEdgeType.Outline === mesh.displayParams.regionEdgeType) {\r\n // This polyline is behaving as the edges of a region surface.\r\n if (undefined === mesh.displayParams.gradient || mesh.displayParams.gradient.isOutlined)\r\n this.flags.setIsNormalEdge();\r\n else\r\n this.flags.setIsOutlineEdge(); // edges only displayed if fill undisplayed...\r\n }\r\n\r\n mesh.polylines.forEach((polyline) => {\r\n const indexedPolyline = new PolylineData();\r\n if (indexedPolyline.init(polyline)) { this.polylines.push(indexedPolyline); }\r\n });\r\n if (!this.isValid) { return false; }\r\n this.finishInit(mesh);\r\n return true;\r\n }\r\n public finishInit(mesh: Mesh) {\r\n this.pointParams = mesh.points.params;\r\n this.points = mesh.points;\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n }\r\n}\r\n\r\n/** The vertices of the edges are shared with those of the surface\r\n * @internal\r\n */\r\nexport class MeshArgsEdges {\r\n public edges = new EdgeArgs();\r\n public silhouettes = new SilhouetteEdgeArgs();\r\n public polylines = new PolylineEdgeArgs();\r\n public width = 0;\r\n public linePixels = LinePixels.Solid;\r\n\r\n public clear(): void {\r\n this.edges.clear();\r\n this.silhouettes.clear();\r\n this.polylines.clear();\r\n this.width = 0;\r\n this.linePixels = LinePixels.Solid;\r\n }\r\n public get isValid(): boolean { return this.edges.isValid || this.silhouettes.isValid || this.polylines.isValid; }\r\n}\r\n\r\n/* A carrier of information needed to describe a triangle mesh and its edges.\r\n * @internal\r\n */\r\nexport class MeshArgs {\r\n public edges = new MeshArgsEdges();\r\n public vertIndices?: number[];\r\n public points?: QPoint3dList;\r\n public normals?: OctEncodedNormal[];\r\n public textureUv?: Point2d[];\r\n public texture?: RenderTexture;\r\n public colors = new ColorIndex();\r\n public features = new FeatureIndex();\r\n public material?: RenderMaterial;\r\n public fillFlags = FillFlags.None;\r\n public isPlanar = false;\r\n public is2d = false;\r\n public hasBakedLighting = false;\r\n public isVolumeClassifier = false;\r\n public hasFixedNormals = false;\r\n public auxChannels?: ReadonlyArray<AuxChannel>;\r\n\r\n public clear() {\r\n this.edges.clear();\r\n this.vertIndices = undefined;\r\n this.points = undefined;\r\n this.normals = undefined;\r\n this.textureUv = undefined;\r\n this.texture = undefined;\r\n this.colors.reset();\r\n this.features.reset();\r\n this.material = undefined;\r\n this.fillFlags = FillFlags.None;\r\n this.isPlanar = this.is2d = this.hasBakedLighting = this.isVolumeClassifier = this.hasFixedNormals = false;\r\n this.auxChannels = undefined;\r\n }\r\n\r\n public init(mesh: Mesh): boolean {\r\n this.clear();\r\n if (undefined === mesh.triangles || mesh.triangles.isEmpty)\r\n return false;\r\n\r\n assert(0 < mesh.points.length);\r\n\r\n this.vertIndices = mesh.triangles.indices;\r\n this.points = mesh.points;\r\n\r\n if (!mesh.displayParams.ignoreLighting && 0 < mesh.normals.length)\r\n this.normals = mesh.normals;\r\n\r\n if (0 < mesh.uvParams.length)\r\n this.textureUv = mesh.uvParams;\r\n\r\n mesh.colorMap.toColorIndex(this.colors, mesh.colors);\r\n mesh.toFeatureIndex(this.features);\r\n\r\n this.material = mesh.displayParams.material;\r\n if (undefined !== mesh.displayParams.textureMapping)\r\n this.texture = mesh.displayParams.textureMapping.texture;\r\n\r\n this.fillFlags = mesh.displayParams.fillFlags;\r\n this.isPlanar = mesh.isPlanar;\r\n this.is2d = mesh.is2d;\r\n this.hasBakedLighting = (true === mesh.hasBakedLighting);\r\n this.isVolumeClassifier = (true === mesh.isVolumeClassifier);\r\n\r\n this.edges.width = mesh.displayParams.width;\r\n this.edges.linePixels = mesh.displayParams.linePixels;\r\n this.auxChannels = mesh.auxChannels;\r\n\r\n const meshEdges = mesh.edges;\r\n if (undefined === meshEdges)\r\n return true;\r\n\r\n this.edges.edges.init(mesh.edges);\r\n this.edges.silhouettes.init(mesh.edges);\r\n\r\n const polylines: PolylineData[] = [];\r\n meshEdges.polylines.forEach((meshPolyline: MeshPolyline) => {\r\n const polyline = new PolylineData();\r\n if (polyline.init(meshPolyline)) { polylines.push(polyline); }\r\n });\r\n\r\n this.edges.polylines.init(polylines);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshGraphicArgs {\r\n public polylineArgs = new PolylineArgs();\r\n public meshArgs: MeshArgs = new MeshArgs();\r\n}\r\n\r\n/** @internal */\r\nexport class Mesh {\r\n private readonly _data: TriangleList | MeshPolylineList;\r\n public readonly points: QPoint3dList;\r\n public readonly normals: OctEncodedNormal[] = [];\r\n public readonly uvParams: Point2d[] = [];\r\n public readonly colorMap: ColorMap = new ColorMap(); // used to be called ColorTable\r\n public colors: number[] = [];\r\n public edges?: MeshEdges;\r\n public readonly features?: Mesh.Features;\r\n public readonly type: Mesh.PrimitiveType;\r\n public readonly is2d: boolean;\r\n public readonly isPlanar: boolean;\r\n public readonly hasBakedLighting: boolean;\r\n public readonly isVolumeClassifier: boolean;\r\n public displayParams: DisplayParams;\r\n private _auxChannels?: AuxChannel[];\r\n\r\n private constructor(props: Mesh.Props) {\r\n const { displayParams, features, type, range, is2d, isPlanar } = props;\r\n this._data = Mesh.PrimitiveType.Mesh === type ? new TriangleList() : new MeshPolylineList();\r\n this.displayParams = displayParams;\r\n this.features = features;\r\n this.type = type;\r\n this.is2d = is2d;\r\n this.isPlanar = isPlanar;\r\n this.hasBakedLighting = (true === props.hasBakedLighting);\r\n this.isVolumeClassifier = (true === props.isVolumeClassifier);\r\n this.points = new QPoint3dList(QParams3d.fromRange(range));\r\n }\r\n\r\n public static create(props: Mesh.Props): Mesh { return new Mesh(props); }\r\n\r\n public get triangles(): TriangleList | undefined {\r\n return Mesh.PrimitiveType.Mesh === this.type ? this._data as TriangleList : undefined;\r\n }\r\n\r\n public get polylines(): MeshPolylineList | undefined {\r\n return Mesh.PrimitiveType.Mesh !== this.type ? this._data as MeshPolylineList : undefined;\r\n }\r\n\r\n public get auxChannels(): ReadonlyArray<AuxChannel> | undefined {\r\n return this._auxChannels;\r\n }\r\n\r\n public addAuxChannels(channels: ReadonlyArray<AuxChannel>, srcIndex: number): void {\r\n // The native version of this function appears to assume that all polyfaces added to the Mesh will have\r\n // the same number + type of aux channels.\r\n // ###TODO We should really produce a separate Mesh for each unique combination. For now just bail on mismatch.\r\n if (this._auxChannels) {\r\n if (this._auxChannels.length !== channels.length)\r\n return;\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const src = channels[i];\r\n const dst = this._auxChannels[i];\r\n if (src.dataType !== dst.dataType || src.name !== dst.name || src.inputName !== dst.inputName)\r\n return;\r\n }\r\n }\r\n\r\n if (!this._auxChannels) {\r\n // Copy the channels, leaving each AuxData's values array empty.\r\n this._auxChannels = channels.map((x) => new AuxChannel(x.data.map((y) => new AuxChannelData(y.input, [])), x.dataType, x.name, x.inputName));\r\n }\r\n\r\n // Append the value at srcIndex from each source channel's data to our channels.\r\n for (let channelIndex = 0; channelIndex < channels.length; channelIndex++) {\r\n const srcChannel = channels[channelIndex];\r\n const dstChannel = this._auxChannels[channelIndex];\r\n const dstIndex = dstChannel.valueCount;\r\n for (let dataIndex = 0; dataIndex < srcChannel.data.length; dataIndex++) {\r\n const dstData = dstChannel.data[dataIndex];\r\n dstData.copyValues(srcChannel.data[dataIndex], dstIndex, srcIndex, dstChannel.entriesPerValue);\r\n }\r\n }\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (undefined !== this.features)\r\n this.features.toFeatureIndex(index);\r\n }\r\n\r\n public getGraphics(args: MeshGraphicArgs, system: RenderSystem, instancesOrViewIndependentOrigin?: InstancedGraphicParams | Point3d): RenderGraphic | undefined {\r\n if (undefined !== this.triangles && this.triangles.length !== 0) {\r\n if (args.meshArgs.init(this))\r\n return system.createTriMesh(args.meshArgs, instancesOrViewIndependentOrigin);\r\n } else if (undefined !== this.polylines && this.polylines.length !== 0 && args.polylineArgs.init(this)) {\r\n return system.createIndexedPolylines(args.polylineArgs, instancesOrViewIndependentOrigin);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public addPolyline(poly: MeshPolyline): void {\r\n const { type, polylines } = this;\r\n\r\n assert(Mesh.PrimitiveType.Polyline === type || Mesh.PrimitiveType.Point === type);\r\n assert(undefined !== polylines);\r\n\r\n if (Mesh.PrimitiveType.Polyline === type && poly.indices.length < 2)\r\n return;\r\n\r\n if (undefined !== polylines)\r\n polylines.push(poly);\r\n }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n const { triangles, type } = this;\r\n\r\n assert(Mesh.PrimitiveType.Mesh === type);\r\n assert(undefined !== triangles);\r\n\r\n if (undefined !== triangles)\r\n triangles.addTriangle(triangle);\r\n }\r\n\r\n public addVertex(props: VertexKeyProps): number {\r\n const { position, normal, uvParam, fillColor } = props;\r\n\r\n this.points.push(position);\r\n\r\n if (undefined !== normal)\r\n this.normals.push(normal);\r\n\r\n if (undefined !== uvParam)\r\n this.uvParams.push(uvParam);\r\n\r\n // Don't allocate color indices until we have non-uniform colors\r\n if (0 === this.colorMap.length) {\r\n this.colorMap.insert(fillColor);\r\n assert(this.colorMap.isUniform);\r\n assert(0 === this.colorMap.indexOf(fillColor));\r\n } else if (!this.colorMap.isUniform || !this.colorMap.hasColor(fillColor)) {\r\n // Back-fill uniform value (index=0) for existing vertices if previously uniform\r\n if (0 === this.colors.length)\r\n this.colors.length = this.points.length - 1;\r\n\r\n this.colors.push(this.colorMap.insert(fillColor));\r\n assert(!this.colorMap.isUniform);\r\n }\r\n\r\n return this.points.length - 1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace Mesh { // eslint-disable-line no-redeclare\r\n export enum PrimitiveType {\r\n Mesh, // eslint-disable-line @typescript-eslint/no-shadow\r\n Polyline,\r\n Point,\r\n }\r\n\r\n export class Features {\r\n public readonly table: FeatureTable;\r\n public indices: number[] = [];\r\n public uniform = 0;\r\n public initialized = false;\r\n\r\n public constructor(table: FeatureTable) { this.table = table; }\r\n\r\n public add(feat: Feature, numVerts: number): void {\r\n const index = this.table.insert(feat);\r\n if (!this.initialized) {\r\n // First feature - uniform.\r\n this.uniform = index;\r\n this.initialized = true;\r\n } else if (0 < this.indices.length) {\r\n // Already non-uniform\r\n this.indices.push(index);\r\n } else {\r\n // Second feature - back-fill uniform for existing verts\r\n while (this.indices.length < numVerts - 1)\r\n this.indices.push(this.uniform);\r\n\r\n this.indices.push(index);\r\n }\r\n }\r\n\r\n public setIndices(indices: number[]) {\r\n this.indices.length = 0;\r\n this.uniform = 0;\r\n this.initialized = 0 < indices.length;\r\n\r\n assert(0 < indices.length);\r\n if (1 === indices.length)\r\n this.uniform = indices[0];\r\n else if (1 < indices.length)\r\n this.indices = indices;\r\n }\r\n\r\n public toFeatureIndex(index: FeatureIndex): void {\r\n if (!this.initialized) {\r\n index.type = FeatureIndexType.Empty;\r\n } else if (this.indices.length === 0) {\r\n index.type = FeatureIndexType.Uniform;\r\n index.featureID = this.uniform;\r\n } else {\r\n index.type = FeatureIndexType.NonUniform;\r\n index.featureIDs = new Uint32Array(this.indices);\r\n }\r\n }\r\n }\r\n\r\n export interface Props {\r\n displayParams: DisplayParams;\r\n features?: Mesh.Features;\r\n type: Mesh.PrimitiveType;\r\n range: Range3d;\r\n is2d: boolean;\r\n isPlanar: boolean;\r\n hasBakedLighting?: boolean;\r\n isVolumeClassifier?: boolean;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class MeshList extends Array<Mesh> {\r\n public readonly features?: FeatureTable;\r\n public readonly range?: Range3d;\r\n constructor(features?: FeatureTable, range?: Range3d) {\r\n super();\r\n this.features = features;\r\n this.range = range;\r\n }\r\n}\r\n"]}
@@ -13,7 +13,7 @@ export declare enum Child {
13
13
  }
14
14
  /** These are currently retained on terrain leaf tiles for upsampling.
15
15
  * It may be worthwhile to pack the data into buffers...
16
- * @internal.
16
+ * @internal
17
17
  */
18
18
  export declare class TerrainMeshPrimitive extends RealityMeshPrimitive {
19
19
  private _pointCapacity;
@@ -45,7 +45,7 @@ const scratchQPoint3d = core_common_1.QPoint3d.fromScalars(0, 0, 0), scratchQPoi
45
45
  const scratchQPoint2d = new core_common_1.QPoint2d(), scratchQPoint2d1 = new core_common_1.QPoint2d();
46
46
  /** These are currently retained on terrain leaf tiles for upsampling.
47
47
  * It may be worthwhile to pack the data into buffers...
48
- * @internal.
48
+ * @internal
49
49
  */
50
50
  class TerrainMeshPrimitive extends RealityMeshPrimitive_1.RealityMeshPrimitive {
51
51
  constructor(props, _pointCapacity, _indexCapacity) {
@@ -1 +1 @@
1
- {"version":3,"file":"TerrainMeshPrimitive.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/TerrainMeshPrimitive.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range1d, Range2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { OctEncodedNormal, QParams2d, QParams3d, QPoint2d, QPoint3d, Quantization } from \"@itwin/core-common\";\r\nimport { RenderMemory } from \"../../RenderMemory\";\r\nimport { RealityMeshPrimitive, RealityMeshProps } from \"./RealityMeshPrimitive\";\r\n\r\nexport enum Child { Q00, Q01, Q10, Q11 }\r\nclass UpsampleIndexMap extends Map<number, number> {\r\n private _next = 0;\r\n public indices = new Array<number>();\r\n public addTriangle(indices: number[]) {\r\n for (const index of indices) {\r\n let mapIndex = this.get(index);\r\n if (undefined === mapIndex)\r\n this.set(index, mapIndex = this._next++);\r\n this.indices.push(mapIndex);\r\n }\r\n }\r\n}\r\nclass ClipAxis {\r\n constructor(public vertical: boolean, public lessThan: boolean, public value: number) { }\r\n}\r\n\r\nconst scratchQPoint3d = QPoint3d.fromScalars(0, 0, 0), scratchQPoint3d1 = QPoint3d.fromScalars(0, 0, 0);\r\nconst scratchQPoint2d = new QPoint2d(), scratchQPoint2d1 = new QPoint2d();\r\n\r\n/** These are currently retained on terrain leaf tiles for upsampling.\r\n * It may be worthwhile to pack the data into buffers...\r\n * @internal.\r\n */\r\nexport class TerrainMeshPrimitive extends RealityMeshPrimitive {\r\n private _currPointCount = 0;\r\n private _currIndexCount = 0;\r\n\r\n private constructor(props: RealityMeshProps, private _pointCapacity: number, private _indexCapacity: number) {\r\n super(props);\r\n }\r\n\r\n public get isCompleted() { return this._currIndexCount === this._indexCapacity && this._currPointCount === this._pointCapacity; }\r\n public get nextPointIndex() { return this._currPointCount; }\r\n\r\n public static create(props: TerrainMesh.Props) {\r\n let totalIndices = props.indexCount;\r\n let totalPoints = props.pointCount;\r\n if (props.wantSkirts) {\r\n totalIndices += 6 * (Math.max(0, props.northCount - 1) + Math.max(0, props.southCount - 1) + Math.max(0, props.eastCount - 1) + Math.max(0, props.westCount - 1));\r\n totalPoints += (props.northCount + props.southCount + props.eastCount + props.westCount);\r\n }\r\n const realityMeshProps = {\r\n indices: new Uint16Array(totalIndices), pointQParams: props.pointQParams, points: new Uint16Array(3 * totalPoints),\r\n uvQParams: QParams2d.fromZeroToOne(), uvs: new Uint16Array(2 * totalPoints), normals: props.wantNormals ? new Uint16Array(totalPoints) : undefined, featureID: 0,\r\n };\r\n return new TerrainMeshPrimitive(realityMeshProps, totalPoints, totalIndices);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addTerrain(this.bytesUsed);\r\n }\r\n\r\n public addVertex(point: Point3d, uvParam: QPoint2d, normal?: number) {\r\n scratchQPoint3d.init(point, this.pointQParams);\r\n this.addQuantizedVertex(scratchQPoint3d, uvParam, normal);\r\n }\r\n\r\n public addQuantizedVertex(point: QPoint3d, uv: QPoint2d, normal?: number) {\r\n if (this._currPointCount >= this._pointCapacity) {\r\n assert(false, \"terrain point capacity exceeded\");\r\n return;\r\n }\r\n let pointIndex = 3 * this._currPointCount;\r\n this.points[pointIndex++] = point.x;\r\n this.points[pointIndex++] = point.y;\r\n this.points[pointIndex++] = point.z;\r\n\r\n let paramIndex = 2 * this._currPointCount;\r\n this.uvs[paramIndex++] = uv.x;\r\n this.uvs[paramIndex++] = uv.y;\r\n\r\n if (normal && this.normals)\r\n this.normals[this._currPointCount] = normal;\r\n\r\n this._currPointCount++;\r\n }\r\n public addQuad(i0: number, i1: number, i2: number, i3: number) {\r\n this.addTriangle(i0, i1, i2);\r\n this.addTriangle(i1, i3, i2);\r\n }\r\n\r\n public addTriangle(i0: number, i1: number, i2: number) {\r\n if (this._currIndexCount + 3 > this._indexCapacity) {\r\n assert(false, \"terrain index capacity exceeded\");\r\n return;\r\n }\r\n this.indices[this._currIndexCount++] = i0;\r\n this.indices[this._currIndexCount++] = i1;\r\n this.indices[this._currIndexCount++] = i2;\r\n }\r\n public addIndices(indices: number[]) {\r\n for (const index of indices)\r\n this.indices[this._currIndexCount++] = index;\r\n }\r\n\r\n private static _scratchZRange = Range1d.createNull();\r\n private static _scratchTriangleRange = Range2d.createNull();\r\n private static _scratchUVRange = Range2d.createNull();\r\n private static _scratchUVQParams = QParams2d.fromZeroToOne();\r\n public upsample(uvSampleRange: Range2d): { heightRange: Range1d, mesh: TerrainMeshPrimitive } {\r\n const indexMap = new UpsampleIndexMap();\r\n const uvLow = QPoint2d.create(uvSampleRange.low, TerrainMeshPrimitive._scratchUVQParams);\r\n const uvHigh = QPoint2d.create(uvSampleRange.high, TerrainMeshPrimitive._scratchUVQParams);\r\n const uvRange = Range2d.createXYXY(uvLow.x, uvLow.y, uvHigh.x, uvHigh.y, TerrainMeshPrimitive._scratchUVRange);\r\n const clipAxes = new Array<ClipAxis>();\r\n const addedPoints = new Array<QPoint3d>(), addedParams = new Array<QPoint2d>(), addedNormals = new Array<number>();\r\n if (uvLow.x > 0)\r\n clipAxes.push(new ClipAxis(true, false, uvLow.x));\r\n if (uvHigh.x < Quantization.rangeScale16)\r\n clipAxes.push(new ClipAxis(true, true, uvHigh.x));\r\n if (uvLow.y > 0)\r\n clipAxes.push(new ClipAxis(false, false, uvLow.y));\r\n if (uvHigh.y < Quantization.rangeScale16)\r\n clipAxes.push(new ClipAxis(false, true, uvHigh.y));\r\n\r\n for (let i = 0; i < this.indices.length;) {\r\n const triangleIndices = [this.indices[i++], this.indices[i++], this.indices[i++]];\r\n\r\n const triangleRange = Range2d.createNull(TerrainMeshPrimitive._scratchTriangleRange);\r\n for (const index of triangleIndices) {\r\n const paramIndex = 2 * index;\r\n triangleRange.extendXY(this.uvs[paramIndex], this.uvs[paramIndex + 1]);\r\n }\r\n\r\n if (uvRange.intersectsRange(triangleRange)) {\r\n if (uvRange.containsRange(triangleRange)) {\r\n indexMap.addTriangle(triangleIndices);\r\n } else {\r\n this.addClipped(triangleIndices, indexMap, clipAxes, 0, addedPoints, addedParams, addedNormals);\r\n }\r\n }\r\n }\r\n\r\n const parentPoints = this.points;\r\n const parentParams = this.uvs;\r\n const parentNormals = this.normals;\r\n const parentPointCount = this.points.length / 3;\r\n\r\n const zRange = Range1d.createNull(TerrainMeshPrimitive._scratchZRange);\r\n\r\n const mesh = TerrainMeshPrimitive.create({ pointQParams: this.pointQParams, pointCount: indexMap.size, indexCount: indexMap.indices.length, wantSkirts: false, northCount: 0, southCount: 0, eastCount: 0, westCount: 0, wantNormals: this.normals !== undefined });\r\n for (const mapEntry of indexMap.entries()) {\r\n const parentIndex = mapEntry[0];\r\n\r\n let normal: number | undefined;\r\n if (parentIndex < parentPointCount) {\r\n const pointIndex = 3 * parentIndex;\r\n scratchQPoint3d.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\r\n const paramIndex = 2 * parentIndex;\r\n scratchQPoint2d.setFromScalars(parentParams[paramIndex], parentParams[paramIndex + 1]);\r\n if (parentNormals)\r\n normal = parentNormals[parentIndex];\r\n } else {\r\n const addedIndex = parentIndex - parentPointCount;\r\n addedPoints[addedIndex].clone(scratchQPoint3d);\r\n addedParams[addedIndex].clone(scratchQPoint2d);\r\n if (addedNormals.length)\r\n normal = addedNormals[addedIndex];\r\n }\r\n mesh.addQuantizedVertex(scratchQPoint3d, scratchQPoint2d, normal);\r\n zRange.extendX(scratchQPoint3d.z);\r\n }\r\n mesh.addIndices(indexMap.indices);\r\n\r\n assert(mesh.isCompleted);\r\n const qParams = this.pointQParams;\r\n const heightRange = Range1d.createXX(Quantization.unquantize(zRange.low, qParams.origin.z, qParams.scale.z), Quantization.unquantize(zRange.high, qParams.origin.z, qParams.scale.z));\r\n return { heightRange, mesh };\r\n }\r\n private addClipped(triangleIndices: number[], indexMap: UpsampleIndexMap, clipAxes: ClipAxis[], clipIndex: number, addedPoints: QPoint3d[], addedParams: QPoint2d[], addedNormals: number[]) {\r\n if (clipIndex === clipAxes.length) {\r\n indexMap.addTriangle(triangleIndices);\r\n return;\r\n }\r\n\r\n const inside = new Array<boolean>(3);\r\n const values = new Array<number>(3);\r\n const clipOutput = new Array<number>();\r\n const clipAxis = clipAxes[clipIndex++];\r\n const parentPoints = this.points;\r\n const parentParams = this.uvs;\r\n const parentNormals = this.normals;\r\n const clipValue = clipAxis.value;\r\n const parentPointCount = parentPoints.length / 3;\r\n const getPoint = (index: number, result: QPoint3d): QPoint3d => {\r\n if (index < parentPointCount) {\r\n const pointIndex = index * 3;\r\n result.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\r\n } else {\r\n addedPoints[index - parentPointCount].clone(result);\r\n }\r\n return result;\r\n };\r\n const getParam = (index: number, result: QPoint2d): QPoint2d => {\r\n if (index < parentPointCount) {\r\n const pointIndex = index * 2;\r\n result.setFromScalars(parentParams[pointIndex], parentParams[pointIndex + 1]);\r\n } else {\r\n addedParams[index - parentPointCount].clone(result);\r\n }\r\n return result;\r\n };\r\n const getNormal = (index: number): number | undefined => {\r\n if (!parentNormals)\r\n return undefined;\r\n\r\n return (index < parentPointCount) ? parentNormals[index] : addedNormals[index - parentPointCount];\r\n };\r\n\r\n for (let i = 0; i < 3; i++) {\r\n const index = triangleIndices[i];\r\n const thisParam = getParam(index, scratchQPoint2d);\r\n const thisValue = clipAxis.vertical ? thisParam.x : thisParam.y;\r\n values[i] = thisValue;\r\n inside[i] = clipAxis.lessThan ? (thisValue < clipValue) : (thisValue > clipValue);\r\n }\r\n\r\n for (let i = 0; i < 3; i++) {\r\n const index = triangleIndices[i];\r\n const next = (i + 1) % 3;\r\n if (inside[i])\r\n clipOutput.push(index);\r\n if (inside[i] !== inside[next]) {\r\n const nextIndex = triangleIndices[next];\r\n const fraction = (clipValue - values[i]) / (values[next] - values[i]);\r\n\r\n clipOutput.push(parentPointCount + addedPoints.length);\r\n addedPoints.push(interpolateQPoint3d(getPoint(index, scratchQPoint3d), getPoint(nextIndex, scratchQPoint3d1), fraction));\r\n addedParams.push(interpolateQPoint2d(getParam(index, scratchQPoint2d), getParam(nextIndex, scratchQPoint2d1), fraction));\r\n if (parentNormals)\r\n addedNormals.push(interpolateOctEncodedNormal(getNormal(index)!, getNormal(nextIndex)!, fraction));\r\n\r\n }\r\n }\r\n if (clipOutput.length > 2) {\r\n this.addClipped(clipOutput.slice(0, 3), indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\r\n if (clipOutput.length > 3)\r\n this.addClipped([clipOutput[0], clipOutput[2], clipOutput[3]], indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\r\n }\r\n }\r\n}\r\n\r\nfunction interpolate(value0: number, value1: number, fraction: number) { return value0 + (value1 - value0) * fraction; }\r\nfunction interpolateInt(value0: number, value1: number, fraction: number) { return Math.floor(.5 + interpolate(value0, value1, fraction)); }\r\n\r\nfunction interpolateQPoint3d(qPoint: QPoint3d, qNext: QPoint3d, fraction: number): QPoint3d {\r\n return QPoint3d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction), interpolateInt(qPoint.z, qNext.z, fraction));\r\n}\r\n\r\nfunction interpolateQPoint2d(qPoint: QPoint2d, qNext: QPoint2d, fraction: number): QPoint2d {\r\n return QPoint2d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction));\r\n}\r\n\r\nfunction interpolateOctEncodedNormal(normal0: number, normal1: number, fraction: number): number {\r\n const n0 = OctEncodedNormal.decodeValue(normal0);\r\n const n1 = OctEncodedNormal.decodeValue(normal1);\r\n if (undefined !== n0 && undefined !== n1) {\r\n const n = Vector3d.create(interpolate(n0.x, n1.x, fraction), interpolate(n0.y, n1.y, fraction), interpolate(n0.z, n1.z, fraction));\r\n n.normalizeInPlace();\r\n return OctEncodedNormal.encode(n);\r\n } else {\r\n return OctEncodedNormal.encode(Vector3d.create(0, 0, 1));\r\n }\r\n}\r\n\r\nexport namespace TerrainMesh {\r\n export interface Props {\r\n readonly wantNormals: boolean;\r\n readonly pointQParams: QParams3d;\r\n readonly pointCount: number;\r\n readonly indexCount: number;\r\n readonly wantSkirts: boolean;\r\n readonly eastCount: number;\r\n readonly westCount: number;\r\n readonly northCount: number;\r\n readonly southCount: number;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TerrainMeshPrimitive.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/TerrainMeshPrimitive.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range1d, Range2d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { OctEncodedNormal, QParams2d, QParams3d, QPoint2d, QPoint3d, Quantization } from \"@itwin/core-common\";\r\nimport { RenderMemory } from \"../../RenderMemory\";\r\nimport { RealityMeshPrimitive, RealityMeshProps } from \"./RealityMeshPrimitive\";\r\n\r\nexport enum Child { Q00, Q01, Q10, Q11 }\r\nclass UpsampleIndexMap extends Map<number, number> {\r\n private _next = 0;\r\n public indices = new Array<number>();\r\n public addTriangle(indices: number[]) {\r\n for (const index of indices) {\r\n let mapIndex = this.get(index);\r\n if (undefined === mapIndex)\r\n this.set(index, mapIndex = this._next++);\r\n this.indices.push(mapIndex);\r\n }\r\n }\r\n}\r\nclass ClipAxis {\r\n constructor(public vertical: boolean, public lessThan: boolean, public value: number) { }\r\n}\r\n\r\nconst scratchQPoint3d = QPoint3d.fromScalars(0, 0, 0), scratchQPoint3d1 = QPoint3d.fromScalars(0, 0, 0);\r\nconst scratchQPoint2d = new QPoint2d(), scratchQPoint2d1 = new QPoint2d();\r\n\r\n/** These are currently retained on terrain leaf tiles for upsampling.\r\n * It may be worthwhile to pack the data into buffers...\r\n * @internal\r\n */\r\nexport class TerrainMeshPrimitive extends RealityMeshPrimitive {\r\n private _currPointCount = 0;\r\n private _currIndexCount = 0;\r\n\r\n private constructor(props: RealityMeshProps, private _pointCapacity: number, private _indexCapacity: number) {\r\n super(props);\r\n }\r\n\r\n public get isCompleted() { return this._currIndexCount === this._indexCapacity && this._currPointCount === this._pointCapacity; }\r\n public get nextPointIndex() { return this._currPointCount; }\r\n\r\n public static create(props: TerrainMesh.Props) {\r\n let totalIndices = props.indexCount;\r\n let totalPoints = props.pointCount;\r\n if (props.wantSkirts) {\r\n totalIndices += 6 * (Math.max(0, props.northCount - 1) + Math.max(0, props.southCount - 1) + Math.max(0, props.eastCount - 1) + Math.max(0, props.westCount - 1));\r\n totalPoints += (props.northCount + props.southCount + props.eastCount + props.westCount);\r\n }\r\n const realityMeshProps = {\r\n indices: new Uint16Array(totalIndices), pointQParams: props.pointQParams, points: new Uint16Array(3 * totalPoints),\r\n uvQParams: QParams2d.fromZeroToOne(), uvs: new Uint16Array(2 * totalPoints), normals: props.wantNormals ? new Uint16Array(totalPoints) : undefined, featureID: 0,\r\n };\r\n return new TerrainMeshPrimitive(realityMeshProps, totalPoints, totalIndices);\r\n }\r\n\r\n public override collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addTerrain(this.bytesUsed);\r\n }\r\n\r\n public addVertex(point: Point3d, uvParam: QPoint2d, normal?: number) {\r\n scratchQPoint3d.init(point, this.pointQParams);\r\n this.addQuantizedVertex(scratchQPoint3d, uvParam, normal);\r\n }\r\n\r\n public addQuantizedVertex(point: QPoint3d, uv: QPoint2d, normal?: number) {\r\n if (this._currPointCount >= this._pointCapacity) {\r\n assert(false, \"terrain point capacity exceeded\");\r\n return;\r\n }\r\n let pointIndex = 3 * this._currPointCount;\r\n this.points[pointIndex++] = point.x;\r\n this.points[pointIndex++] = point.y;\r\n this.points[pointIndex++] = point.z;\r\n\r\n let paramIndex = 2 * this._currPointCount;\r\n this.uvs[paramIndex++] = uv.x;\r\n this.uvs[paramIndex++] = uv.y;\r\n\r\n if (normal && this.normals)\r\n this.normals[this._currPointCount] = normal;\r\n\r\n this._currPointCount++;\r\n }\r\n public addQuad(i0: number, i1: number, i2: number, i3: number) {\r\n this.addTriangle(i0, i1, i2);\r\n this.addTriangle(i1, i3, i2);\r\n }\r\n\r\n public addTriangle(i0: number, i1: number, i2: number) {\r\n if (this._currIndexCount + 3 > this._indexCapacity) {\r\n assert(false, \"terrain index capacity exceeded\");\r\n return;\r\n }\r\n this.indices[this._currIndexCount++] = i0;\r\n this.indices[this._currIndexCount++] = i1;\r\n this.indices[this._currIndexCount++] = i2;\r\n }\r\n public addIndices(indices: number[]) {\r\n for (const index of indices)\r\n this.indices[this._currIndexCount++] = index;\r\n }\r\n\r\n private static _scratchZRange = Range1d.createNull();\r\n private static _scratchTriangleRange = Range2d.createNull();\r\n private static _scratchUVRange = Range2d.createNull();\r\n private static _scratchUVQParams = QParams2d.fromZeroToOne();\r\n public upsample(uvSampleRange: Range2d): { heightRange: Range1d, mesh: TerrainMeshPrimitive } {\r\n const indexMap = new UpsampleIndexMap();\r\n const uvLow = QPoint2d.create(uvSampleRange.low, TerrainMeshPrimitive._scratchUVQParams);\r\n const uvHigh = QPoint2d.create(uvSampleRange.high, TerrainMeshPrimitive._scratchUVQParams);\r\n const uvRange = Range2d.createXYXY(uvLow.x, uvLow.y, uvHigh.x, uvHigh.y, TerrainMeshPrimitive._scratchUVRange);\r\n const clipAxes = new Array<ClipAxis>();\r\n const addedPoints = new Array<QPoint3d>(), addedParams = new Array<QPoint2d>(), addedNormals = new Array<number>();\r\n if (uvLow.x > 0)\r\n clipAxes.push(new ClipAxis(true, false, uvLow.x));\r\n if (uvHigh.x < Quantization.rangeScale16)\r\n clipAxes.push(new ClipAxis(true, true, uvHigh.x));\r\n if (uvLow.y > 0)\r\n clipAxes.push(new ClipAxis(false, false, uvLow.y));\r\n if (uvHigh.y < Quantization.rangeScale16)\r\n clipAxes.push(new ClipAxis(false, true, uvHigh.y));\r\n\r\n for (let i = 0; i < this.indices.length;) {\r\n const triangleIndices = [this.indices[i++], this.indices[i++], this.indices[i++]];\r\n\r\n const triangleRange = Range2d.createNull(TerrainMeshPrimitive._scratchTriangleRange);\r\n for (const index of triangleIndices) {\r\n const paramIndex = 2 * index;\r\n triangleRange.extendXY(this.uvs[paramIndex], this.uvs[paramIndex + 1]);\r\n }\r\n\r\n if (uvRange.intersectsRange(triangleRange)) {\r\n if (uvRange.containsRange(triangleRange)) {\r\n indexMap.addTriangle(triangleIndices);\r\n } else {\r\n this.addClipped(triangleIndices, indexMap, clipAxes, 0, addedPoints, addedParams, addedNormals);\r\n }\r\n }\r\n }\r\n\r\n const parentPoints = this.points;\r\n const parentParams = this.uvs;\r\n const parentNormals = this.normals;\r\n const parentPointCount = this.points.length / 3;\r\n\r\n const zRange = Range1d.createNull(TerrainMeshPrimitive._scratchZRange);\r\n\r\n const mesh = TerrainMeshPrimitive.create({ pointQParams: this.pointQParams, pointCount: indexMap.size, indexCount: indexMap.indices.length, wantSkirts: false, northCount: 0, southCount: 0, eastCount: 0, westCount: 0, wantNormals: this.normals !== undefined });\r\n for (const mapEntry of indexMap.entries()) {\r\n const parentIndex = mapEntry[0];\r\n\r\n let normal: number | undefined;\r\n if (parentIndex < parentPointCount) {\r\n const pointIndex = 3 * parentIndex;\r\n scratchQPoint3d.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\r\n const paramIndex = 2 * parentIndex;\r\n scratchQPoint2d.setFromScalars(parentParams[paramIndex], parentParams[paramIndex + 1]);\r\n if (parentNormals)\r\n normal = parentNormals[parentIndex];\r\n } else {\r\n const addedIndex = parentIndex - parentPointCount;\r\n addedPoints[addedIndex].clone(scratchQPoint3d);\r\n addedParams[addedIndex].clone(scratchQPoint2d);\r\n if (addedNormals.length)\r\n normal = addedNormals[addedIndex];\r\n }\r\n mesh.addQuantizedVertex(scratchQPoint3d, scratchQPoint2d, normal);\r\n zRange.extendX(scratchQPoint3d.z);\r\n }\r\n mesh.addIndices(indexMap.indices);\r\n\r\n assert(mesh.isCompleted);\r\n const qParams = this.pointQParams;\r\n const heightRange = Range1d.createXX(Quantization.unquantize(zRange.low, qParams.origin.z, qParams.scale.z), Quantization.unquantize(zRange.high, qParams.origin.z, qParams.scale.z));\r\n return { heightRange, mesh };\r\n }\r\n private addClipped(triangleIndices: number[], indexMap: UpsampleIndexMap, clipAxes: ClipAxis[], clipIndex: number, addedPoints: QPoint3d[], addedParams: QPoint2d[], addedNormals: number[]) {\r\n if (clipIndex === clipAxes.length) {\r\n indexMap.addTriangle(triangleIndices);\r\n return;\r\n }\r\n\r\n const inside = new Array<boolean>(3);\r\n const values = new Array<number>(3);\r\n const clipOutput = new Array<number>();\r\n const clipAxis = clipAxes[clipIndex++];\r\n const parentPoints = this.points;\r\n const parentParams = this.uvs;\r\n const parentNormals = this.normals;\r\n const clipValue = clipAxis.value;\r\n const parentPointCount = parentPoints.length / 3;\r\n const getPoint = (index: number, result: QPoint3d): QPoint3d => {\r\n if (index < parentPointCount) {\r\n const pointIndex = index * 3;\r\n result.setFromScalars(parentPoints[pointIndex], parentPoints[pointIndex + 1], parentPoints[pointIndex + 2]);\r\n } else {\r\n addedPoints[index - parentPointCount].clone(result);\r\n }\r\n return result;\r\n };\r\n const getParam = (index: number, result: QPoint2d): QPoint2d => {\r\n if (index < parentPointCount) {\r\n const pointIndex = index * 2;\r\n result.setFromScalars(parentParams[pointIndex], parentParams[pointIndex + 1]);\r\n } else {\r\n addedParams[index - parentPointCount].clone(result);\r\n }\r\n return result;\r\n };\r\n const getNormal = (index: number): number | undefined => {\r\n if (!parentNormals)\r\n return undefined;\r\n\r\n return (index < parentPointCount) ? parentNormals[index] : addedNormals[index - parentPointCount];\r\n };\r\n\r\n for (let i = 0; i < 3; i++) {\r\n const index = triangleIndices[i];\r\n const thisParam = getParam(index, scratchQPoint2d);\r\n const thisValue = clipAxis.vertical ? thisParam.x : thisParam.y;\r\n values[i] = thisValue;\r\n inside[i] = clipAxis.lessThan ? (thisValue < clipValue) : (thisValue > clipValue);\r\n }\r\n\r\n for (let i = 0; i < 3; i++) {\r\n const index = triangleIndices[i];\r\n const next = (i + 1) % 3;\r\n if (inside[i])\r\n clipOutput.push(index);\r\n if (inside[i] !== inside[next]) {\r\n const nextIndex = triangleIndices[next];\r\n const fraction = (clipValue - values[i]) / (values[next] - values[i]);\r\n\r\n clipOutput.push(parentPointCount + addedPoints.length);\r\n addedPoints.push(interpolateQPoint3d(getPoint(index, scratchQPoint3d), getPoint(nextIndex, scratchQPoint3d1), fraction));\r\n addedParams.push(interpolateQPoint2d(getParam(index, scratchQPoint2d), getParam(nextIndex, scratchQPoint2d1), fraction));\r\n if (parentNormals)\r\n addedNormals.push(interpolateOctEncodedNormal(getNormal(index)!, getNormal(nextIndex)!, fraction));\r\n\r\n }\r\n }\r\n if (clipOutput.length > 2) {\r\n this.addClipped(clipOutput.slice(0, 3), indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\r\n if (clipOutput.length > 3)\r\n this.addClipped([clipOutput[0], clipOutput[2], clipOutput[3]], indexMap, clipAxes, clipIndex, addedPoints, addedParams, addedNormals);\r\n }\r\n }\r\n}\r\n\r\nfunction interpolate(value0: number, value1: number, fraction: number) { return value0 + (value1 - value0) * fraction; }\r\nfunction interpolateInt(value0: number, value1: number, fraction: number) { return Math.floor(.5 + interpolate(value0, value1, fraction)); }\r\n\r\nfunction interpolateQPoint3d(qPoint: QPoint3d, qNext: QPoint3d, fraction: number): QPoint3d {\r\n return QPoint3d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction), interpolateInt(qPoint.z, qNext.z, fraction));\r\n}\r\n\r\nfunction interpolateQPoint2d(qPoint: QPoint2d, qNext: QPoint2d, fraction: number): QPoint2d {\r\n return QPoint2d.fromScalars(interpolateInt(qPoint.x, qNext.x, fraction), interpolateInt(qPoint.y, qNext.y, fraction));\r\n}\r\n\r\nfunction interpolateOctEncodedNormal(normal0: number, normal1: number, fraction: number): number {\r\n const n0 = OctEncodedNormal.decodeValue(normal0);\r\n const n1 = OctEncodedNormal.decodeValue(normal1);\r\n if (undefined !== n0 && undefined !== n1) {\r\n const n = Vector3d.create(interpolate(n0.x, n1.x, fraction), interpolate(n0.y, n1.y, fraction), interpolate(n0.z, n1.z, fraction));\r\n n.normalizeInPlace();\r\n return OctEncodedNormal.encode(n);\r\n } else {\r\n return OctEncodedNormal.encode(Vector3d.create(0, 0, 1));\r\n }\r\n}\r\n\r\nexport namespace TerrainMesh {\r\n export interface Props {\r\n readonly wantNormals: boolean;\r\n readonly pointQParams: QParams3d;\r\n readonly pointCount: number;\r\n readonly indexCount: number;\r\n readonly wantSkirts: boolean;\r\n readonly eastCount: number;\r\n readonly westCount: number;\r\n readonly northCount: number;\r\n readonly southCount: number;\r\n }\r\n}\r\n"]}
@@ -79,15 +79,15 @@ class AttributeMap {
79
79
  ]);
80
80
  this._attrMaps = new Map([
81
81
  [undefined, posOnly],
82
- [23 /* SkySphereGradient */, skySphere],
83
- [24 /* SkySphereTexture */, skySphere],
82
+ [24 /* SkySphereGradient */, skySphere],
83
+ [25 /* SkySphereTexture */, skySphere],
84
84
  [1 /* Polyline */, polyline],
85
85
  [4 /* Edge */, edge],
86
86
  [5 /* SilhouetteEdge */, silhouette],
87
87
  [2 /* PointCloud */, pointCloud],
88
- [29 /* VolClassCopyZ */, screenPoints],
89
- [6 /* RealityMesh */, realityMesh],
90
- [7 /* PlanarGrid */, planarGrid],
88
+ [30 /* VolClassCopyZ */, screenPoints],
89
+ [7 /* RealityMesh */, realityMesh],
90
+ [8 /* PlanarGrid */, planarGrid],
91
91
  ]);
92
92
  }
93
93
  static findAttributeMap(techniqueId, instanced) {
@@ -100,7 +100,7 @@ class BackgroundMapDrape extends TextureDrape_1.TextureDrape {
100
100
  (0, core_bentley_1.assert)(false, "Failed to create planar texture");
101
101
  return;
102
102
  }
103
- this._texture = new Texture_1.Texture({ ownership: "external", type: core_common_1.RenderTexture.Type.TileSection, handle: colorTextureHandle });
103
+ this._texture = new Texture_1.Texture({ ownership: "external", type: core_common_1.RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: core_common_1.TextureTransparency.Opaque });
104
104
  this._fbo = FrameBuffer_1.FrameBuffer.create([colorTextureHandle]);
105
105
  }
106
106
  if (undefined === this._fbo) {
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeImagery())\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, new FrustumPlanes(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n const useMRT = System.instance.capabilities.supportsDrawBuffers;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n if (!useMRT) target.compositor.currentRenderTargetIndex = 0;\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sDAAsD;AACtD,wDAAiG;AACjG,oDAA0G;AAC1G,kDAAyG;AAGzG,0DAAuD;AAEvD,6CAA0C;AAC1C,+CAA4C;AAC5C,+CAA4C;AAC5C,6BAA0B;AAC1B,uEAAoE;AACpE,qDAAkD;AAElD,qCAAkC;AAElC,uCAAmD;AACnD,iDAA8C;AAE9C,gBAAgB;AAChB,MAAa,kBAAmB,SAAQ,2BAAY;IAmBlD,YAAoB,UAA6B,EAAE,OAA6B;QAC9E,KAAK,EAAE,CAAC;QAlBO,cAAS,GAAoB,EAAE,CAAC;QAEzC,WAAM,GAAG,CAAC,CAAC;QACX,YAAO,GAAG,CAAC,CAAC;QASZ,yBAAoB,GAAmB,SAAS,CAAC;QACxC,wBAAmB,GAAG,IAAI,mCAAgB,CAAC,SAAS,EAAE,CAAC;QACvD,aAAQ,GAAG,sBAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,WAAM,GAAG,4CAA4B,CAAC,MAAM,CAAC,uBAAO,CAAC,UAAU,EAAE,EAAE,wBAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAI7G,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAoB,UAAU,KAAc,OAAO,KAAK,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjF,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,UAAU,CAAC,OAAsB;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,MAAyB,EAAE,GAAyB;QACvE,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,eAAe,CAAC,OAAqB;QAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,SAAS,KAAK,OAAO,CAAC,YAAY;YACpC,OAAO;QAET,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAmB,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAC9D,OAAO;QAET,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAK,+BAA+B;QACtI,MAAM,cAAc,GAAG,aAAa,CAAC;QAErC,IAAI,aAAa,KAAK,IAAI,CAAC,MAAM,IAAI,cAAc,KAAK,IAAI,CAAC,OAAO;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI;YACtB,OAAO;QAET,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,iDAAuB,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxM,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,cAAc;YAC1F,OAAO;QAET,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QAErD,MAAM,QAAQ,GAAG,oCAAyB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,2BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;QAC7I,IAAI,SAAS,KAAK,QAAQ;YACxB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;YAClF,IAAI,CAAC,oBAAoB,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;YACpD,OAAO,CAAC,YAAY,CAAC,sBAAQ,CAAC,KAAK,EAAE,sBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,YAAY,CAAC,sBAAQ,CAAC,GAAG,EAAE,sBAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;YACxC,OAAO,CAAC,YAAY,CAAC,sBAAQ,CAAC,KAAK,EAAE,sBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;SAC9C;IACH,CAAC;IAEM,IAAI,CAAC,MAAc;QACxB,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB;YACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE7D,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC5D,OAAO;QAET,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE;YAC3B,MAAM,kBAAkB,GAAG,uBAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClJ,IAAI,SAAS,KAAK,kBAAkB,EAAE;gBACpC,IAAA,qBAAM,EAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;gBACjD,OAAO;aACR;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,2BAAa,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,iCAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;YACnK,IAAI,CAAC,IAAI,GAAG,yBAAW,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;SACtD;QACD,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE;YAC3B,IAAA,qBAAM,EAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;YACtD,OAAO;SACR;QAED,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,eAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC7D,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,aAAa,GAAG,iDAAuB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,yBAAW,EAAE,CAAC;QAChC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/E,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,KAAK,CAAC,CAAC;QACzC,eAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,4EAA4E;QACxI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC;QAE9H,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACrE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,wBAA2B,CAAC;QAErE,MAAM,MAAM,GAAG,eAAM,CAAC,QAAQ,CAAC;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAC1B,MAAM,MAAM,GAAG,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC;QAEhE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;YAC3D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,KAAK,CAAC,OAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,UAAU,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAC5D,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,uBAA0B,gCAAkC,CAAC,CAAI,gHAAgH;QAC/O,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAE7B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAG,yBAAyB;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;QACrF,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;;AAhKH,gDAiKC;AAzJgB,wCAAqB,GAAG,wBAAQ,CAAC,eAAe,CAC7D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeImagery())\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, new FrustumPlanes(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n const useMRT = System.instance.capabilities.supportsDrawBuffers;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n if (!useMRT) target.compositor.currentRenderTargetIndex = 0;\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA2B,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAgB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBxC;;GAEG;AACH,qBAAa,cAAc;IACzB,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,gBAAgB,CAAS;IAG1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,SAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAGjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAU;IAGzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAGlD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAGxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8B;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8B;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEnD,IAAW,KAAK,IAAI,WAAW,CAAwB;gBAEpC,MAAM,EAAE,MAAM;IAQ1B,gBAAgB,IAAI,UAAU;IAI9B,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc;IAInE,IAAW,eAAe,IAAI,QAAQ,CAErC;IAED,IAAW,GAAG,IAAI,WAAW,CAE5B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAOnC,GAAG,IAAI,IAAI;IAQX,YAAY,IAAI,IAAI;IAQpB,WAAW,IAAI,IAAI;IAMnB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IAI5F,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAIpE,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,GAAG,IAAI;IAI/D,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IAK9F,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IAKxG,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO;IAK7F,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO;IAK7F,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO;IAKlG,OAAO,CAAC,MAAM;CAmFf"}
@@ -15,6 +15,7 @@ const BatchState_1 = require("./BatchState");
15
15
  const Matrix_1 = require("./Matrix");
16
16
  const RenderCommands_1 = require("./RenderCommands");
17
17
  const Sync_1 = require("./Sync");
18
+ const System_1 = require("./System");
18
19
  const ClipStack_1 = require("./ClipStack");
19
20
  function equalXYZs(a, b) {
20
21
  if (a === b)
@@ -191,15 +192,17 @@ class BranchUniforms {
191
192
  }
192
193
  core_geometry_1.Matrix4d.createTransform(mv, this._mv);
193
194
  this._mv32.initFromTransform(mv);
194
- const inv = this._mv.createInverse();
195
- if (undefined !== inv) {
196
- const invTr = inv.cloneTransposed();
197
- this._mvn32.initFromMatrix3d(invTr.matrixPart());
198
- }
199
195
  // Don't bother computing mvp for instanced geometry - it's not used.
200
196
  if (!this._isInstanced) {
201
197
  uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);
202
198
  this._mvp32.initFromMatrix4d(this._mvp);
199
+ if (!System_1.System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2
200
+ const inv = this._mv.createInverse();
201
+ if (undefined !== inv) {
202
+ const invTr = inv.cloneTransposed();
203
+ this._mvn32.initFromMatrix3d(invTr.matrixPart());
204
+ }
205
+ }
203
206
  }
204
207
  return true;
205
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}