@itwin/core-frontend 3.1.0-dev.26 → 3.1.0-dev.31

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 (426) hide show
  1. package/CHANGELOG.md +156 -35
  2. package/lib/cjs/AccuSnap.js +2 -2
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/DisplayStyleState.d.ts +3 -3
  5. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  6. package/lib/cjs/DisplayStyleState.js +32 -8
  7. package/lib/cjs/DisplayStyleState.js.map +1 -1
  8. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  9. package/lib/cjs/DrawingViewState.js +6 -5
  10. package/lib/cjs/DrawingViewState.js.map +1 -1
  11. package/lib/cjs/IModelApp.d.ts +1 -3
  12. package/lib/cjs/IModelApp.d.ts.map +1 -1
  13. package/lib/cjs/IModelApp.js +10 -8
  14. package/lib/cjs/IModelApp.js.map +1 -1
  15. package/lib/cjs/RealityDataSource.d.ts +58 -14
  16. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  17. package/lib/cjs/RealityDataSource.js +30 -242
  18. package/lib/cjs/RealityDataSource.js.map +1 -1
  19. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  20. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  21. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +166 -0
  22. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  23. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +83 -0
  24. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  25. package/lib/cjs/RealityDataSourceContextShareImpl.js +234 -0
  26. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -0
  27. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  28. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  29. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +135 -0
  30. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  31. package/lib/cjs/SheetViewState.js +4 -0
  32. package/lib/cjs/SheetViewState.js.map +1 -1
  33. package/lib/cjs/ViewState.d.ts +8 -0
  34. package/lib/cjs/ViewState.d.ts.map +1 -1
  35. package/lib/cjs/ViewState.js +1 -1
  36. package/lib/cjs/ViewState.js.map +1 -1
  37. package/lib/cjs/Viewport.d.ts +19 -3
  38. package/lib/cjs/Viewport.d.ts.map +1 -1
  39. package/lib/cjs/Viewport.js +20 -0
  40. package/lib/cjs/Viewport.js.map +1 -1
  41. package/lib/cjs/core-frontend.d.ts +1 -0
  42. package/lib/cjs/core-frontend.d.ts.map +1 -1
  43. package/lib/cjs/core-frontend.js +1 -0
  44. package/lib/cjs/core-frontend.js.map +1 -1
  45. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  46. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  47. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +48 -44
  48. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  49. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +90 -80
  50. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  51. package/lib/cjs/quantity-formatting/QuantityFormatter.js +76 -45
  52. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  53. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  54. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  55. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js +32 -0
  56. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  57. package/lib/cjs/quantity-formatting/UnitsData.d.ts +11 -0
  58. package/lib/cjs/quantity-formatting/UnitsData.d.ts.map +1 -0
  59. package/lib/cjs/quantity-formatting/UnitsData.js +59 -0
  60. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -0
  61. package/lib/cjs/render/GraphicBranch.d.ts +2 -0
  62. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  63. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  64. package/lib/cjs/render/RenderPlanarClassifier.d.ts +1 -1
  65. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  66. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  67. package/lib/cjs/render/RenderSystem.d.ts +9 -5
  68. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  69. package/lib/cjs/render/RenderSystem.js +5 -2
  70. package/lib/cjs/render/RenderSystem.js.map +1 -1
  71. package/lib/cjs/render/RenderTarget.d.ts +4 -4
  72. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  73. package/lib/cjs/render/RenderTarget.js.map +1 -1
  74. package/lib/cjs/render/Scene.d.ts.map +1 -1
  75. package/lib/cjs/render/Scene.js.map +1 -1
  76. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +15 -2
  77. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  78. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  79. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  80. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  81. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  82. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  83. package/lib/cjs/render/webgl/BranchState.js +5 -3
  84. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  85. package/lib/cjs/render/webgl/Graphic.d.ts +5 -3
  86. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  87. package/lib/cjs/render/webgl/Graphic.js +7 -2
  88. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  89. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +4 -1
  90. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  92. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  93. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts +2 -2
  94. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/PlanarTextureProjection.js +5 -3
  96. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  97. package/lib/cjs/render/webgl/RealityMesh.d.ts +30 -11
  98. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/RealityMesh.js +154 -52
  100. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  101. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  102. package/lib/cjs/render/webgl/RenderCommands.js +4 -0
  103. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  104. package/lib/cjs/render/webgl/System.d.ts +9 -9
  105. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  106. package/lib/cjs/render/webgl/System.js +5 -5
  107. package/lib/cjs/render/webgl/System.js.map +1 -1
  108. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  109. package/lib/cjs/render/webgl/Target.js.map +1 -1
  110. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +1 -1
  111. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  112. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/glsl/RealityMesh.js +102 -27
  114. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  115. package/lib/cjs/tile/ClassifierTileTree.d.ts +4 -2
  116. package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
  117. package/lib/cjs/tile/ClassifierTileTree.js +31 -16
  118. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  119. package/lib/cjs/tile/OPCFormatInterpreter.d.ts +22 -0
  120. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -0
  121. package/lib/cjs/tile/OPCFormatInterpreter.js +92 -0
  122. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -0
  123. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  124. package/lib/cjs/tile/PntsReader.js +79 -17
  125. package/lib/cjs/tile/PntsReader.js.map +1 -1
  126. package/lib/cjs/tile/PrimaryTileTree.d.ts +18 -2
  127. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  128. package/lib/cjs/tile/PrimaryTileTree.js +53 -2
  129. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  130. package/lib/cjs/tile/RealityModelTileTree.d.ts +0 -1
  131. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  132. package/lib/cjs/tile/RealityModelTileTree.js +1 -1
  133. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  134. package/lib/cjs/tile/RealityTileDrawArgs.d.ts +4 -1
  135. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  136. package/lib/cjs/tile/RealityTileDrawArgs.js +3 -1
  137. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  138. package/lib/cjs/tile/RealityTileTree.d.ts +1 -0
  139. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  140. package/lib/cjs/tile/RealityTileTree.js +7 -3
  141. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  142. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  143. package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  144. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +179 -0
  145. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  146. package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
  147. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  148. package/lib/cjs/tile/TileDrawArgs.js +5 -0
  149. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  150. package/lib/cjs/tile/internal.d.ts +2 -0
  151. package/lib/cjs/tile/internal.d.ts.map +1 -1
  152. package/lib/cjs/tile/internal.js +2 -0
  153. package/lib/cjs/tile/internal.js.map +1 -1
  154. package/lib/cjs/tile/map/CesiumTerrainProvider.js +2 -2
  155. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  156. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  157. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  158. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  159. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  160. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  161. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  162. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  163. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  164. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  165. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  166. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  167. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  168. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  169. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  170. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  171. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  172. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  173. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  174. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  175. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  176. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  177. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  178. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  179. package/lib/cjs/tile/map/ImageryTileTree.d.ts +0 -2
  180. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  181. package/lib/cjs/tile/map/ImageryTileTree.js +1 -3
  182. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  183. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +3 -3
  184. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  185. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  186. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -3
  187. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  188. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  189. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
  190. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  191. package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
  192. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  193. package/lib/cjs/tile/map/MapLayerSources.d.ts +2 -2
  194. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  195. package/lib/cjs/tile/map/MapLayerSources.js +6 -4
  196. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  197. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  198. package/lib/cjs/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  199. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +26 -3
  200. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  201. package/lib/cjs/tile/map/MapTile.d.ts +5 -4
  202. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  203. package/lib/cjs/tile/map/MapTile.js +13 -5
  204. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  205. package/lib/cjs/tile/map/MapTileTree.d.ts +12 -7
  206. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  207. package/lib/cjs/tile/map/MapTileTree.js +60 -48
  208. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  209. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  210. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +1 -1
  211. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  212. package/lib/cjs/tools/ViewTool.js +1 -1
  213. package/lib/cjs/tools/ViewTool.js.map +1 -1
  214. package/lib/esm/AccuSnap.js +2 -2
  215. package/lib/esm/AccuSnap.js.map +1 -1
  216. package/lib/esm/DisplayStyleState.d.ts +3 -3
  217. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  218. package/lib/esm/DisplayStyleState.js +34 -10
  219. package/lib/esm/DisplayStyleState.js.map +1 -1
  220. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  221. package/lib/esm/DrawingViewState.js +6 -5
  222. package/lib/esm/DrawingViewState.js.map +1 -1
  223. package/lib/esm/IModelApp.d.ts +1 -3
  224. package/lib/esm/IModelApp.d.ts.map +1 -1
  225. package/lib/esm/IModelApp.js +10 -8
  226. package/lib/esm/IModelApp.js.map +1 -1
  227. package/lib/esm/RealityDataSource.d.ts +58 -14
  228. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  229. package/lib/esm/RealityDataSource.js +31 -244
  230. package/lib/esm/RealityDataSource.js.map +1 -1
  231. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +67 -0
  232. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -0
  233. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +162 -0
  234. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -0
  235. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +83 -0
  236. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -0
  237. package/lib/esm/RealityDataSourceContextShareImpl.js +230 -0
  238. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -0
  239. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +65 -0
  240. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -0
  241. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +131 -0
  242. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -0
  243. package/lib/esm/SheetViewState.js +4 -0
  244. package/lib/esm/SheetViewState.js.map +1 -1
  245. package/lib/esm/ViewState.d.ts +8 -0
  246. package/lib/esm/ViewState.d.ts.map +1 -1
  247. package/lib/esm/ViewState.js +1 -1
  248. package/lib/esm/ViewState.js.map +1 -1
  249. package/lib/esm/Viewport.d.ts +19 -3
  250. package/lib/esm/Viewport.d.ts.map +1 -1
  251. package/lib/esm/Viewport.js +20 -0
  252. package/lib/esm/Viewport.js.map +1 -1
  253. package/lib/esm/core-frontend.d.ts +1 -0
  254. package/lib/esm/core-frontend.d.ts.map +1 -1
  255. package/lib/esm/core-frontend.js +1 -0
  256. package/lib/esm/core-frontend.js.map +1 -1
  257. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +2 -2
  258. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  259. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +48 -44
  260. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  261. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +90 -80
  262. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  263. package/lib/esm/quantity-formatting/QuantityFormatter.js +75 -41
  264. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  265. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts +54 -0
  266. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -0
  267. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js +26 -0
  268. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -0
  269. package/lib/esm/quantity-formatting/UnitsData.d.ts +11 -0
  270. package/lib/esm/quantity-formatting/UnitsData.d.ts.map +1 -0
  271. package/lib/esm/quantity-formatting/UnitsData.js +56 -0
  272. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -0
  273. package/lib/esm/render/GraphicBranch.d.ts +2 -0
  274. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  275. package/lib/esm/render/GraphicBranch.js.map +1 -1
  276. package/lib/esm/render/RenderPlanarClassifier.d.ts +1 -1
  277. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  278. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  279. package/lib/esm/render/RenderSystem.d.ts +9 -5
  280. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  281. package/lib/esm/render/RenderSystem.js +5 -2
  282. package/lib/esm/render/RenderSystem.js.map +1 -1
  283. package/lib/esm/render/RenderTarget.d.ts +4 -4
  284. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  285. package/lib/esm/render/RenderTarget.js.map +1 -1
  286. package/lib/esm/render/Scene.d.ts.map +1 -1
  287. package/lib/esm/render/Scene.js.map +1 -1
  288. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +15 -2
  289. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  290. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  291. package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
  292. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  293. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  294. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  295. package/lib/esm/render/webgl/BranchState.js +5 -3
  296. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  297. package/lib/esm/render/webgl/Graphic.d.ts +5 -3
  298. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  299. package/lib/esm/render/webgl/Graphic.js +7 -2
  300. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  301. package/lib/esm/render/webgl/PlanarClassifier.d.ts +4 -1
  302. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  303. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  304. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  305. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts +2 -2
  306. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  307. package/lib/esm/render/webgl/PlanarTextureProjection.js +5 -3
  308. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  309. package/lib/esm/render/webgl/RealityMesh.d.ts +30 -11
  310. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  311. package/lib/esm/render/webgl/RealityMesh.js +154 -52
  312. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  313. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  314. package/lib/esm/render/webgl/RenderCommands.js +4 -0
  315. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  316. package/lib/esm/render/webgl/System.d.ts +9 -9
  317. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  318. package/lib/esm/render/webgl/System.js +6 -6
  319. package/lib/esm/render/webgl/System.js.map +1 -1
  320. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  321. package/lib/esm/render/webgl/Target.js.map +1 -1
  322. package/lib/esm/render/webgl/glsl/PlanarClassification.js +1 -1
  323. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  324. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  325. package/lib/esm/render/webgl/glsl/RealityMesh.js +103 -28
  326. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  327. package/lib/esm/tile/ClassifierTileTree.d.ts +4 -2
  328. package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
  329. package/lib/esm/tile/ClassifierTileTree.js +32 -17
  330. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  331. package/lib/esm/tile/OPCFormatInterpreter.d.ts +22 -0
  332. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -0
  333. package/lib/esm/tile/OPCFormatInterpreter.js +88 -0
  334. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -0
  335. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  336. package/lib/esm/tile/PntsReader.js +79 -17
  337. package/lib/esm/tile/PntsReader.js.map +1 -1
  338. package/lib/esm/tile/PrimaryTileTree.d.ts +18 -2
  339. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  340. package/lib/esm/tile/PrimaryTileTree.js +51 -2
  341. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  342. package/lib/esm/tile/RealityModelTileTree.d.ts +0 -1
  343. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  344. package/lib/esm/tile/RealityModelTileTree.js +1 -1
  345. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  346. package/lib/esm/tile/RealityTileDrawArgs.d.ts +4 -1
  347. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  348. package/lib/esm/tile/RealityTileDrawArgs.js +3 -1
  349. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  350. package/lib/esm/tile/RealityTileTree.d.ts +1 -0
  351. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  352. package/lib/esm/tile/RealityTileTree.js +7 -3
  353. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  354. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts +52 -0
  355. package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -0
  356. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +175 -0
  357. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -0
  358. package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
  359. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  360. package/lib/esm/tile/TileDrawArgs.js +5 -0
  361. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  362. package/lib/esm/tile/internal.d.ts +2 -0
  363. package/lib/esm/tile/internal.d.ts.map +1 -1
  364. package/lib/esm/tile/internal.js +2 -0
  365. package/lib/esm/tile/internal.js.map +1 -1
  366. package/lib/esm/tile/map/CesiumTerrainProvider.js +2 -2
  367. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  368. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  369. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  370. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  371. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  372. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +2 -2
  373. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  374. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  375. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
  376. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  377. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  378. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +2 -2
  379. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  380. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  381. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts +2 -2
  382. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  383. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  384. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +2 -2
  385. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  386. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  387. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  388. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +2 -2
  389. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  390. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  391. package/lib/esm/tile/map/ImageryTileTree.d.ts +0 -2
  392. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  393. package/lib/esm/tile/map/ImageryTileTree.js +1 -3
  394. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  395. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +3 -3
  396. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  397. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  398. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -3
  399. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  400. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  401. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
  402. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  403. package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
  404. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  405. package/lib/esm/tile/map/MapLayerSources.d.ts +2 -2
  406. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  407. package/lib/esm/tile/map/MapLayerSources.js +6 -4
  408. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  409. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts +10 -2
  410. package/lib/esm/tile/map/MapLayerTileTreeReference.d.ts.map +1 -1
  411. package/lib/esm/tile/map/MapLayerTileTreeReference.js +25 -3
  412. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  413. package/lib/esm/tile/map/MapTile.d.ts +5 -4
  414. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  415. package/lib/esm/tile/map/MapTile.js +13 -5
  416. package/lib/esm/tile/map/MapTile.js.map +1 -1
  417. package/lib/esm/tile/map/MapTileTree.d.ts +12 -7
  418. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  419. package/lib/esm/tile/map/MapTileTree.js +61 -49
  420. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  421. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  422. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +2 -2
  423. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  424. package/lib/esm/tools/ViewTool.js +1 -1
  425. package/lib/esm/tools/ViewTool.js.map +1 -1
  426. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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"}
@@ -6,60 +6,147 @@
6
6
  * @module WebGL
7
7
  */
8
8
  import { assert, dispose } from "@itwin/core-bentley";
9
- import { Range2d, Range3d, Transform, Vector2d } from "@itwin/core-geometry";
10
9
  import { Quantization } from "@itwin/core-common";
11
- import { AttributeMap } from "./AttributeMap";
12
- import { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
13
- import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
14
- import { Matrix4 } from "./Matrix";
10
+ import { Range2d, Range3d, Transform, Vector2d } from "@itwin/core-geometry";
15
11
  import { GraphicBranch } from "../GraphicBranch";
16
12
  import { TerrainTexture } from "../RenderSystem";
13
+ import { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from "./AttributeBuffers";
14
+ import { AttributeMap } from "./AttributeMap";
15
+ import { IndexedGeometry, IndexedGeometryParams } from "./CachedGeometry";
17
16
  import { GL } from "./GL";
17
+ import { Matrix4 } from "./Matrix";
18
18
  import { Primitive } from "./Primitive";
19
19
  import { System } from "./System";
20
20
  const scratchOverlapRange = Range2d.createNull();
21
+ const scratchBytes = new Uint8Array(4);
22
+ const scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);
23
+ const scratchRange2d = Range2d.createNull();
24
+ class ProjectedTexture {
25
+ constructor(classifier, meshParams, targetRectangle) {
26
+ this.meshParams = meshParams;
27
+ this.targetRectangle = targetRectangle;
28
+ this.classifier = classifier;
29
+ }
30
+ clone(targetRectangle) {
31
+ return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());
32
+ }
33
+ }
34
+ class RealityTextureParam {
35
+ constructor(texture, _projectedTextureOrMatrix) {
36
+ this.texture = texture;
37
+ this._projectedTextureOrMatrix = _projectedTextureOrMatrix;
38
+ }
39
+ get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }
40
+ /* There are two methods of applying a texture to a reality mesh. the first member of "params" denotes which
41
+ method is to be used. A value of zero indicates a standard texture and one represents a classified texture.
42
+
43
+ A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row
44
+ of "matrix". A clip rectangle is packed into second row of "matrix".
45
+
46
+ A "classified" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates
47
+ are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position
48
+ so the matrix in this case is a real transform matrix that contains a mapping from eye to model position
49
+ followed by the model to texture projection.
50
+ */
51
+ getProjectionMatrix() {
52
+ return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;
53
+ }
54
+ getTerrainMatrix() {
55
+ return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;
56
+ }
57
+ getParams(result) {
58
+ /** Entry 0 is 0 for */
59
+ if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {
60
+ const projectedTexture = this._projectedTextureOrMatrix;
61
+ result.data[0] = 1;
62
+ result.data[1] = projectedTexture.classifier.textureImageCount;
63
+ result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);
64
+ scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;
65
+ result.data[4] = scratchBytes[0];
66
+ result.data[5] = scratchBytes[1];
67
+ result.data[6] = scratchBytes[2];
68
+ result.data[7] = scratchBytes[3];
69
+ const points = [];
70
+ const meshParams = projectedTexture.meshParams;
71
+ // Calculate range in the tiles local coordinates.
72
+ const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low);
73
+ const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high);
74
+ points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));
75
+ points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));
76
+ points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));
77
+ points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));
78
+ for (let i = 0, j = 8; i < 4; i++) {
79
+ const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);
80
+ result.data[j++] = projectedPoint.x;
81
+ result.data[j++] = projectedPoint.y;
82
+ }
83
+ const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];
84
+ const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];
85
+ if (x0 * y1 - x1 * y0 < 0) {
86
+ const swap = ((i, j) => {
87
+ const temp = result.data[i];
88
+ result.data[i] = result.data[j];
89
+ result.data[j] = temp;
90
+ });
91
+ for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {
92
+ swap(i, j);
93
+ swap(i + 1, j + 1);
94
+ }
95
+ }
96
+ }
97
+ else {
98
+ result.data[0] = 0;
99
+ }
100
+ return result;
101
+ }
102
+ }
21
103
  /** @internal */
22
104
  export class RealityTextureParams {
23
- constructor(matrices, textures) {
24
- this.matrices = matrices;
25
- this.textures = textures;
105
+ constructor(params) {
106
+ this.params = params;
26
107
  }
27
- static create(terrainTextures) {
108
+ static create(textures) {
28
109
  const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;
29
- assert(terrainTextures.length <= maxTexturesPerMesh);
30
- const renderTextures = [];
31
- const matrices = new Array();
32
- for (const terrainTexture of terrainTextures) {
33
- const matrix = new Matrix4(); // Published as Mat4.
34
- renderTextures.push(terrainTexture.texture);
35
- assert(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
36
- matrix.data[0] = terrainTexture.translate.x;
37
- matrix.data[1] = terrainTexture.translate.y;
38
- matrix.data[2] = terrainTexture.scale.x;
39
- matrix.data[3] = terrainTexture.scale.y;
40
- if (terrainTexture.clipRectangle) {
41
- matrix.data[4] = terrainTexture.clipRectangle.low.x;
42
- matrix.data[5] = terrainTexture.clipRectangle.low.y;
43
- matrix.data[6] = terrainTexture.clipRectangle.high.x;
44
- matrix.data[7] = terrainTexture.clipRectangle.high.y;
110
+ assert(textures.length <= maxTexturesPerMesh);
111
+ const textureParams = new Array();
112
+ for (const texture of textures) {
113
+ if (texture instanceof TerrainTexture) {
114
+ const terrainTexture = texture;
115
+ const matrix = new Matrix4(); // Published as Mat4.
116
+ assert(terrainTexture.texture !== undefined, "Texture not defined in TerrainTextureParams constructor");
117
+ matrix.data[0] = terrainTexture.translate.x;
118
+ matrix.data[1] = terrainTexture.translate.y;
119
+ matrix.data[2] = terrainTexture.scale.x;
120
+ matrix.data[3] = terrainTexture.scale.y;
121
+ if (terrainTexture.clipRectangle) {
122
+ matrix.data[4] = terrainTexture.clipRectangle.low.x;
123
+ matrix.data[5] = terrainTexture.clipRectangle.low.y;
124
+ matrix.data[6] = terrainTexture.clipRectangle.high.x;
125
+ matrix.data[7] = terrainTexture.clipRectangle.high.y;
126
+ }
127
+ else {
128
+ matrix.data[4] = matrix.data[5] = 0;
129
+ matrix.data[6] = matrix.data[7] = 1;
130
+ }
131
+ matrix.data[8] = (1.0 - terrainTexture.transparency);
132
+ matrix.data[9] = terrainTexture.featureId;
133
+ textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));
45
134
  }
46
135
  else {
47
- matrix.data[4] = matrix.data[5] = 0;
48
- matrix.data[6] = matrix.data[7] = 1;
136
+ const classifier = texture.classifier;
137
+ textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));
49
138
  }
50
- matrix.data[8] = (1.0 - terrainTexture.transparency);
51
- matrix.data[9] = terrainTexture.featureId;
52
- matrices.push(matrix);
53
139
  }
54
- for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {
140
+ for (let i = textures.length; i < maxTexturesPerMesh; i++) {
55
141
  const matrix = new Matrix4();
56
142
  matrix.data[0] = matrix.data[1] = 0.0;
57
143
  matrix.data[2] = matrix.data[3] = 1.0;
58
144
  matrix.data[4] = matrix.data[5] = 1;
59
145
  matrix.data[6] = matrix.data[7] = -1;
60
- matrices.push(matrix);
146
+ matrix.data[15] = 0; // Denotes a terrain texture.
147
+ textureParams.push(new RealityTextureParam(undefined, matrix));
61
148
  }
62
- return new RealityTextureParams(matrices, renderTextures);
149
+ return new RealityTextureParams(textureParams);
63
150
  }
64
151
  }
65
152
  /** @internal */
@@ -136,51 +223,66 @@ export class RealityMeshGeometry extends IndexedGeometry {
136
223
  getRange() {
137
224
  return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);
138
225
  }
139
- static createGraphic(system, realityMesh, featureTable, tileId, baseColor, baseTransparent, textures) {
226
+ static createGraphic(system, params) {
227
+ var _a, _b;
140
228
  const meshes = [];
141
- if (textures === undefined)
142
- textures = [];
229
+ const textures = (_a = params.textures) !== null && _a !== void 0 ? _a : [];
230
+ const realityMesh = params.realityMesh;
231
+ const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;
143
232
  const texturesPerMesh = System.instance.maxRealityImageryLayers;
144
233
  const layers = new Array();
145
- let layerCount = 0;
234
+ // Collate the textures and classifiers layers into a single array.
146
235
  for (const texture of textures) {
147
236
  const layer = layers[texture.layerIndex];
148
237
  if (layer) {
149
238
  layer.push(texture);
150
239
  }
151
240
  else {
152
- layerCount++;
153
241
  layers[texture.layerIndex] = [texture];
154
242
  }
155
243
  }
156
- if (layerCount < 2) {
244
+ (_b = params.layerClassifiers) === null || _b === void 0 ? void 0 : _b.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);
245
+ if (layers.length < 2 && !(layerClassifiers === null || layerClassifiers === void 0 ? void 0 : layerClassifiers.size) && textures.length < texturesPerMesh) {
157
246
  // If only there is not more than one layer then we can group all of the textures into a single draw call.
158
247
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
159
248
  }
160
249
  else {
161
- const primaryLayer = layers.shift();
250
+ let primaryLayer;
251
+ while (primaryLayer === undefined)
252
+ primaryLayer = layers.shift();
253
+ if (!primaryLayer)
254
+ return undefined;
162
255
  for (const primaryTexture of primaryLayer) {
163
256
  const targetRectangle = primaryTexture.targetRectangle;
164
257
  const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);
165
- const layerTextures = [primaryTexture];
258
+ let layerTextures = [primaryTexture];
166
259
  for (const secondaryLayer of layers) {
167
260
  if (!secondaryLayer)
168
261
  continue;
169
262
  for (const secondaryTexture of secondaryLayer) {
170
- const secondaryRectangle = secondaryTexture.targetRectangle;
171
- const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
172
- if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
173
- const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
174
- secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
175
- secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
176
- if (secondaryTexture.clipRectangle)
177
- textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
178
- if (!textureRange.isNull)
179
- layerTextures.push(new TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));
263
+ if (secondaryTexture instanceof ProjectedTexture) {
264
+ layerTextures.push(secondaryTexture.clone(targetRectangle));
265
+ }
266
+ else {
267
+ const secondaryRectangle = secondaryTexture.targetRectangle;
268
+ const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);
269
+ if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {
270
+ const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);
271
+ secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);
272
+ secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);
273
+ if (secondaryTexture.clipRectangle)
274
+ textureRange.intersect(secondaryTexture.clipRectangle, textureRange);
275
+ if (!textureRange.isNull && textureRange) {
276
+ layerTextures.push(secondaryTexture.cloneWithClip(textureRange));
277
+ }
278
+ }
180
279
  }
181
280
  }
182
281
  }
183
- layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);
282
+ while (layerTextures.length > texturesPerMesh) {
283
+ meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
284
+ layerTextures = layerTextures.slice(texturesPerMesh);
285
+ }
184
286
  meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));
185
287
  }
186
288
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAgC,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAEjD,gBAAgB;AAChB,MAAM,OAAO,oBAAoB;IAE/B,YAAmB,QAAmB,EAAS,QAAyB;QAArD,aAAQ,GAAR,QAAQ,CAAW;QAAS,aAAQ,GAAR,QAAQ,CAAiB;IAAI,CAAC;IACtE,MAAM,CAAC,MAAM,CAAC,eAAiC;QACpD,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACnE,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;QAErD,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAW,CAAC;QACtC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC,CAAM,qBAAqB;YACxD,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,EAAE,yDAAyD,CAAC,CAAC;YACxG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAExC,IAAI,cAAc,CAAC,aAAa,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;aACtD;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACrC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;QAED,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;YAChE,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;QACD,OAAO,IAAI,oBAAoB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,gBAAgB;AAEhB,MAAM,OAAO,yBAA0B,SAAQ,qBAAqB;IAKlE,YAAsB,SAA0B,EAAE,OAAiC,EAAE,QAAyB,EAAE,OAAqB,EAAE,UAAkB,EAAE,SAAkB;QAC3K,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,WAAW,uBAA2B,KAAK,CAAC,CAAC;QACzF,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACnI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,QAAQ,uBAA2B,KAAK,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;YACjC,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACnI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,MAAuB,EAAE,UAA2B,EAAE,OAAoB,EAAE,OAAiC,EAAE,SAAiB;QAC/J,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEvF,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEvG,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,IAA0B;QAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9J,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IACtD,CAAC;IACD,IAAW,SAAS,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAElK,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAStD,YAA4B,kBAA6C,EAAS,aAA+C,EAAmB,UAAiC,EAAkB,SAA+B,EAAU,kBAA2B,EAAU,UAAmB;QACtS,KAAK,CAAC,kBAAkB,CAAC,CAAC;QADA,uBAAkB,GAAlB,kBAAkB,CAA2B;QAAS,kBAAa,GAAb,aAAa,CAAkC;QAAmB,eAAU,GAAV,UAAU,CAAuB;QAAkB,cAAS,GAAT,SAAS,CAAsB;QAAU,uBAAkB,GAAlB,kBAAkB,CAAS;QAAU,eAAU,GAAV,UAAU,CAAS;IAExS,CAAC;IAVD,IAAoB,aAAa,KAAsC,OAAO,IAAI,CAAC,CAAC,CAAC;IACrF,IAAoB,UAAU,KAAc,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;IACxF,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,IAAoB,WAAW,KAAc,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;IACtG,IAAoB,uBAAuB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAW,gBAAgB,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,CAAK,4EAA4E;IAC7H,IAAW,SAAS,KAA4B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAMzD,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,WAAiC,EAAE,SAAgC;QACrG,MAAM,MAAM,GAAG,yBAAyB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,WAAiC;QACnE,MAAM,MAAM,GAAG,yBAAyB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM;YACT,OAAO,SAAS,CAAC;QACnB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9M,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3I,CAAC;IAEM,QAAQ;QACb,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3Q,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,MAAoB,EAAE,WAAgC,EAAE,YAAgC,EAAE,MAA0B,EAAE,SAA+B,EAAE,eAAwB,EAAE,QAA2B;QACtO,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,QAAQ,KAAK,SAAS;YACxB,QAAQ,GAAG,EAAE,CAAC;QAEhB,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,KAAK,EAAoB,CAAC;QAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrB;iBAAM;gBACL,UAAU,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aACxC;SACF;QACD,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,0GAA0G;YAC1G,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;SACzL;aAAM;YACL,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAG,CAAC;YACrC,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE;gBACzC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;gBACvD,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpI,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,CAAC;gBACvC,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE;oBACnC,IAAI,CAAC,cAAc;wBACjB,SAAS;oBACX,KAAK,MAAM,gBAAgB,IAAI,cAAc,EAAE;wBAC7C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,eAAe,CAAC;wBAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;wBACnF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE;4BAC3G,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACtG,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;4BACpE,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;4BAEtE,IAAI,gBAAgB,CAAC,aAAa;gCAChC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;4BAEvE,IAAI,CAAC,YAAY,CAAC,MAAM;gCACtB,aAAa,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;yBAChQ;qBACF;iBACF;gBACD,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;aAC9L;SACF;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACzB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,SAAU,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;SACvF;QAED,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACnH,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAClI,CAAC;IAED,IAAW,WAAW,KAAkB,2BAA+B,CAAC,CAAC;IAEzD,OAAO,CAAC,MAAc;QACpC,IAAI,MAAM,CAAC,kBAAkB;YAC3B,OAAO,MAAM,CAAC;QAEhB,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClG,OAAO,aAAa,CAAC;QAEvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAW,WAAW,KAAkB,4BAAgC,CAAC,CAAC;IAE1D,IAAI;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACF","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, IDisposable } from \"@itwin/core-bentley\";\r\nimport { Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, PackedFeatureTable, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshPrimitive } from \"../primitives/mesh/RealityMeshPrimitive\";\r\nimport { TerrainMeshPrimitive } from \"../primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { GL } from \"./GL\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\n\r\n/** @internal */\r\nexport class RealityTextureParams {\r\n\r\n constructor(public matrices: Matrix4[], public textures: RenderTexture[]) { }\r\n public static create(terrainTextures: TerrainTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(terrainTextures.length <= maxTexturesPerMesh);\r\n\r\n const renderTextures = [];\r\n const matrices = new Array<Matrix4>();\r\n for (const terrainTexture of terrainTextures) {\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n renderTextures.push(terrainTexture.texture);\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n matrices.push(matrix);\r\n }\r\n\r\n for (let i = terrainTextures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrices.push(matrix);\r\n }\r\n return new RealityTextureParams(matrices, renderTextures);\r\n }\r\n}\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: Uint16Array, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, featureID);\r\n\r\n }\r\n\r\n public static createFromRealityMesh(mesh: RealityMeshPrimitive) {\r\n const posBuf = QBufferHandle3d.create(mesh.pointQParams, mesh.points);\r\n const uvParamBuf = QBufferHandle2d.create(mesh.uvQParams, mesh.uvs);\r\n const normalBuf = mesh.normals ? BufferHandle.createArrayBuffer(mesh.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, mesh.indices, normalBuf, mesh.featureID);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private constructor(private _realityMeshParams: RealityMeshGeometryParams, public textureParams: RealityTextureParams | undefined, private readonly _transform: Transform | undefined, public readonly baseColor: ColorDef | undefined, private _baseIsTransparent: boolean, private _isTerrain: boolean) {\r\n super(_realityMeshParams);\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n }\r\n\r\n public static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined) {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(terrainMesh);\r\n return params ? new RealityMeshGeometry(params, undefined, transform, undefined, false, true) : undefined;\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshPrimitive): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry(params, texture ? RealityTextureParams.create([texture]) : undefined, undefined, undefined, false, false);\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, realityMesh: RealityMeshGeometry, featureTable: PackedFeatureTable, tileId: string | undefined, baseColor: ColorDef | undefined, baseTransparent: boolean, textures?: TerrainTexture[]): RenderGraphic | undefined {\r\n const meshes = [];\r\n if (textures === undefined)\r\n textures = [];\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<TerrainTexture[]>();\r\n let layerCount = 0;\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n layer.push(texture);\r\n } else {\r\n layerCount++;\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n if (layerCount < 2) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n } else {\r\n const primaryLayer = layers.shift()!;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n const layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull)\r\n layerTextures.push(new TerrainTexture(secondaryTexture.texture, secondaryTexture.featureId, secondaryTexture.scale, secondaryTexture.translate, secondaryTexture.targetRectangle, secondaryTexture.layerIndex, secondaryTexture.transparency, textureRange));\r\n }\r\n }\r\n }\r\n layerTextures.length = Math.min(layerTextures.length, texturesPerMesh);\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (target.isDrawingShadowMap)\r\n return \"none\";\r\n\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, GL.DataType.UnsignedShort, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, IDisposable } from \"@itwin/core-bentley\";\r\nimport { ColorDef, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { Matrix4d, Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshGraphicParams, RealityMeshPrimitive } from \"../primitives/mesh/RealityMeshPrimitive\";\r\nimport { TerrainMeshPrimitive } from \"../primitives/mesh/TerrainMeshPrimitive\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { GL } from \"./GL\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchRange2d = Range2d.createNull();\r\nclass ProjectedTexture {\r\n public classifier: PlanarClassifier;\r\n constructor(classifier: RenderPlanarClassifier, public meshParams: RealityMeshGraphicParams, public targetRectangle: Range2d) {\r\n this.classifier = classifier as PlanarClassifier;\r\n }\r\n public clone(targetRectangle: Range2d) {\r\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\r\n }\r\n}\r\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\r\n\r\nclass RealityTextureParam {\r\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\r\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\r\n\r\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\r\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\r\n\r\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\r\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\r\n\r\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\r\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\r\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\r\n followed by the model to texture projection.\r\n*/\r\n public getProjectionMatrix(): Matrix4d | undefined {\r\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\r\n }\r\n public getTerrainMatrix(): Matrix4 | undefined {\r\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\r\n }\r\n\r\n public getParams(result: Matrix4): Matrix4 {\r\n /** Entry 0 is 0 for */\r\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\r\n const projectedTexture = this._projectedTextureOrMatrix;\r\n\r\n result.data[0] = 1;\r\n result.data[1] = projectedTexture.classifier.textureImageCount;\r\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\r\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\r\n result.data[4] = scratchBytes[0];\r\n result.data[5] = scratchBytes[1];\r\n result.data[6] = scratchBytes[2];\r\n result.data[7] = scratchBytes[3];\r\n\r\n const points = [];\r\n const meshParams = projectedTexture.meshParams;\r\n // Calculate range in the tiles local coordinates.\r\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\r\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\r\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\r\n points.push( meshParams.projection.getGlobalPoint(high.x, low.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\r\n for (let i = 0, j = 8; i < 4; i++) {\r\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\r\n result.data[j++] = projectedPoint.x;\r\n result.data[j++] = projectedPoint.y;\r\n }\r\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\r\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\r\n if (x0 * y1 - x1 * y0 < 0) {\r\n const swap = ((i: number, j: number) => {\r\n const temp = result.data[i];\r\n result.data[i] = result.data[j];\r\n result.data[j] = temp;\r\n });\r\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\r\n swap(i, j);\r\n swap(i + 1, j + 1);\r\n }\r\n }\r\n } else {\r\n result.data[0] = 0;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityTextureParams {\r\n constructor(public params: RealityTextureParam[]) { }\r\n public static create(textures: TerrainOrProjectedTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(textures.length <= maxTexturesPerMesh);\r\n\r\n const textureParams = new Array<RealityTextureParam>();\r\n for (const texture of textures) {\r\n if (texture instanceof TerrainTexture) {\r\n const terrainTexture = texture;\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));\r\n } else {\r\n const classifier = texture.classifier;\r\n textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));\r\n }\r\n }\r\n\r\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrix.data[15] = 0; // Denotes a terrain texture.\r\n textureParams.push(new RealityTextureParam(undefined, matrix));\r\n }\r\n return new RealityTextureParams(textureParams);\r\n }\r\n\r\n}\r\n\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: Uint16Array, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, featureID);\r\n\r\n }\r\n\r\n public static createFromRealityMesh(mesh: RealityMeshPrimitive) {\r\n const posBuf = QBufferHandle3d.create(mesh.pointQParams, mesh.points);\r\n const uvParamBuf = QBufferHandle2d.create(mesh.uvQParams, mesh.uvs);\r\n const normalBuf = mesh.normals ? BufferHandle.createArrayBuffer(mesh.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, mesh.indices, normalBuf, mesh.featureID);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private constructor(private _realityMeshParams: RealityMeshGeometryParams, public textureParams: RealityTextureParams | undefined, private readonly _transform: Transform | undefined, public readonly baseColor: ColorDef | undefined, private _baseIsTransparent: boolean, private _isTerrain: boolean) {\r\n super(_realityMeshParams);\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n }\r\n\r\n public static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined) {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(terrainMesh);\r\n return params ? new RealityMeshGeometry(params, undefined, transform, undefined, false, true) : undefined;\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshPrimitive): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.createFromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry(params, texture ? RealityTextureParams.create([texture]) : undefined, undefined, undefined, false, false);\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams): RenderGraphic | undefined {\r\n const meshes = [];\r\n const textures = params.textures ?? [];\r\n const realityMesh = params.realityMesh as RealityMeshGeometry;\r\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\r\n // Collate the textures and classifiers layers into a single array.\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n (layer as TerrainTexture[]).push(texture);\r\n } else {\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\r\n\r\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(textures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n } else {\r\n let primaryLayer;\r\n while (primaryLayer === undefined)\r\n primaryLayer = layers.shift();\r\n if (!primaryLayer)\r\n return undefined;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n let layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n if (secondaryTexture instanceof ProjectedTexture) {\r\n layerTextures.push(secondaryTexture.clone(targetRectangle));\r\n } else {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull && textureRange) {\r\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n while (layerTextures.length > texturesPerMesh) {\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n layerTextures = layerTextures.slice(texturesPerMesh);\r\n }\r\n meshes.push(new RealityMeshGeometry(realityMesh._realityMeshParams, RealityTextureParams.create(layerTextures), realityMesh._transform, baseColor, baseTransparent, realityMesh._isTerrain));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (target.isDrawingShadowMap)\r\n return \"none\";\r\n\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, GL.DataType.UnsignedShort, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderCommands.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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"}
@@ -286,6 +286,8 @@ export class RenderCommands {
286
286
  this._stack.pushBranch(branch);
287
287
  if (branch.planarClassifier)
288
288
  branch.planarClassifier.pushBatchState(this._batchState);
289
+ if (branch.secondaryClassifiers)
290
+ branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));
289
291
  const cmds = this.getCommands(pass);
290
292
  const clip = animState === null || animState === void 0 ? void 0 : animState.clip;
291
293
  const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;
@@ -366,6 +368,8 @@ export class RenderCommands {
366
368
  this._stack.pushBranch(branch);
367
369
  if (branch.planarClassifier)
368
370
  branch.planarClassifier.pushBatchState(this._batchState);
371
+ if (branch.secondaryClassifiers)
372
+ branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));
369
373
  this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);
370
374
  this._stack.pop();
371
375
  }