@itwin/core-frontend 3.1.0-dev.0 → 3.1.0-dev.13

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 (350) hide show
  1. package/lib/cjs/ApproximateTerrainHeights.d.ts +1 -1
  2. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js +21 -9
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +12 -0
  6. package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  7. package/lib/cjs/ApproximateTerrainHeightsProps.js +13 -0
  8. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -0
  9. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseConnection.js +6 -5
  11. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  12. package/lib/cjs/DisplayStyleState.d.ts +1 -0
  13. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  14. package/lib/cjs/DisplayStyleState.js.map +1 -1
  15. package/lib/cjs/DrawingViewState.js +3 -3
  16. package/lib/cjs/DrawingViewState.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +7 -10
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  21. package/lib/cjs/SheetViewState.js +4 -6
  22. package/lib/cjs/SheetViewState.js.map +1 -1
  23. package/lib/cjs/Viewport.d.ts +6 -3
  24. package/lib/cjs/Viewport.d.ts.map +1 -1
  25. package/lib/cjs/Viewport.js +16 -9
  26. package/lib/cjs/Viewport.js.map +1 -1
  27. package/lib/cjs/core-frontend.d.ts +1 -0
  28. package/lib/cjs/core-frontend.d.ts.map +1 -1
  29. package/lib/cjs/core-frontend.js +1 -0
  30. package/lib/cjs/core-frontend.js.map +1 -1
  31. package/lib/cjs/render/RenderMaterial.d.ts +61 -0
  32. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
  33. package/lib/cjs/render/RenderMaterial.js +10 -0
  34. package/lib/cjs/render/RenderMaterial.js.map +1 -0
  35. package/lib/cjs/render/RenderSystem.d.ts +10 -3
  36. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  37. package/lib/cjs/render/RenderSystem.js +11 -3
  38. package/lib/cjs/render/RenderSystem.js.map +1 -1
  39. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +2 -0
  40. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  41. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  42. package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  43. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  44. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  45. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  46. package/lib/cjs/render/webgl/Material.js +2 -0
  47. package/lib/cjs/render/webgl/Material.js.map +1 -1
  48. package/lib/cjs/render/webgl/RealityMesh.d.ts +1 -0
  49. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  50. package/lib/cjs/render/webgl/RealityMesh.js +1 -0
  51. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  52. package/lib/cjs/render/webgl/SceneCompositor.d.ts +3 -0
  53. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  54. package/lib/cjs/render/webgl/SceneCompositor.js +31 -6
  55. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  56. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -0
  57. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  58. package/lib/cjs/render/webgl/ShaderProgram.js +1 -0
  59. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  60. package/lib/cjs/render/webgl/System.d.ts +2 -0
  61. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  62. package/lib/cjs/render/webgl/System.js +43 -0
  63. package/lib/cjs/render/webgl/System.js.map +1 -1
  64. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  65. package/lib/cjs/render/webgl/Texture.js +2 -2
  66. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  67. package/lib/cjs/tile/DynamicIModelTile.d.ts.map +1 -1
  68. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  69. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  70. package/lib/cjs/tile/GltfReader.d.ts +6 -1
  71. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  72. package/lib/cjs/tile/GltfReader.js +102 -27
  73. package/lib/cjs/tile/GltfReader.js.map +1 -1
  74. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  75. package/lib/cjs/tile/ImdlReader.js +2 -0
  76. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  77. package/lib/cjs/tile/LRUTileList.d.ts +29 -29
  78. package/lib/cjs/tile/LRUTileList.d.ts.map +1 -1
  79. package/lib/cjs/tile/LRUTileList.js +50 -50
  80. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  81. package/lib/cjs/tile/OrbitGtTileTree.js +1 -1
  82. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  83. package/lib/cjs/tile/RealityModelTileTree.d.ts +24 -2
  84. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  85. package/lib/cjs/tile/RealityModelTileTree.js +36 -11
  86. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  87. package/lib/cjs/tile/RealityTile.d.ts +17 -3
  88. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  89. package/lib/cjs/tile/RealityTile.js +34 -2
  90. package/lib/cjs/tile/RealityTile.js.map +1 -1
  91. package/lib/cjs/tile/RealityTileLoader.d.ts +8 -5
  92. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  93. package/lib/cjs/tile/RealityTileLoader.js +19 -5
  94. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  95. package/lib/cjs/tile/RealityTileTree.d.ts +3 -1
  96. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  97. package/lib/cjs/tile/RealityTileTree.js +5 -1
  98. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  99. package/lib/cjs/tile/Tile.d.ts +5 -4
  100. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  101. package/lib/cjs/tile/Tile.js +3 -2
  102. package/lib/cjs/tile/Tile.js.map +1 -1
  103. package/lib/cjs/tile/TileAdmin.d.ts +43 -45
  104. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  105. package/lib/cjs/tile/TileAdmin.js +104 -99
  106. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  107. package/lib/cjs/tile/TileGeometryCollector.d.ts +80 -0
  108. package/lib/cjs/tile/TileGeometryCollector.d.ts.map +1 -0
  109. package/lib/cjs/tile/TileGeometryCollector.js +71 -0
  110. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -0
  111. package/lib/cjs/tile/TileRequest.d.ts +12 -9
  112. package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
  113. package/lib/cjs/tile/TileRequest.js +19 -11
  114. package/lib/cjs/tile/TileRequest.js.map +1 -1
  115. package/lib/cjs/tile/TileRequestChannel.js +3 -3
  116. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  117. package/lib/cjs/tile/TileTree.d.ts +7 -1
  118. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  119. package/lib/cjs/tile/TileTree.js +8 -1
  120. package/lib/cjs/tile/TileTree.js.map +1 -1
  121. package/lib/cjs/tile/TileTreeReference.d.ts +23 -2
  122. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  123. package/lib/cjs/tile/TileTreeReference.js +37 -1
  124. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  125. package/lib/cjs/tile/TileUsageMarker.d.ts +9 -9
  126. package/lib/cjs/tile/TileUsageMarker.d.ts.map +1 -1
  127. package/lib/cjs/tile/TileUsageMarker.js +9 -9
  128. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  129. package/lib/cjs/tile/TileUser.d.ts +33 -0
  130. package/lib/cjs/tile/TileUser.d.ts.map +1 -0
  131. package/lib/cjs/tile/TileUser.js +28 -0
  132. package/lib/cjs/tile/TileUser.js.map +1 -0
  133. package/lib/cjs/tile/TileUserSet.d.ts +28 -0
  134. package/lib/cjs/tile/TileUserSet.d.ts.map +1 -0
  135. package/lib/cjs/tile/TileUserSet.js +123 -0
  136. package/lib/cjs/tile/TileUserSet.js.map +1 -0
  137. package/lib/cjs/tile/internal.d.ts +3 -0
  138. package/lib/cjs/tile/internal.d.ts.map +1 -1
  139. package/lib/cjs/tile/internal.js +3 -0
  140. package/lib/cjs/tile/internal.js.map +1 -1
  141. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -2
  142. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  143. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  144. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  145. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -2
  146. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  147. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  148. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  149. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  150. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  151. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -2
  152. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  153. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  154. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  155. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  156. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  157. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  158. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  159. package/lib/cjs/tile/map/MapTile.d.ts +7 -6
  160. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  161. package/lib/cjs/tile/map/MapTile.js +47 -34
  162. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  163. package/lib/cjs/tile/map/MapTileLoader.d.ts +2 -1
  164. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  165. package/lib/cjs/tile/map/MapTileLoader.js +4 -1
  166. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  167. package/lib/cjs/tile/map/MapTileTree.d.ts +8 -5
  168. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  169. package/lib/cjs/tile/map/MapTileTree.js +25 -7
  170. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  171. package/lib/esm/ApproximateTerrainHeights.d.ts +1 -1
  172. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  173. package/lib/esm/ApproximateTerrainHeights.js +2 -9
  174. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  175. package/lib/esm/ApproximateTerrainHeightsProps.d.ts +12 -0
  176. package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -0
  177. package/lib/esm/ApproximateTerrainHeightsProps.js +10 -0
  178. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -0
  179. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  180. package/lib/esm/BriefcaseConnection.js +6 -5
  181. package/lib/esm/BriefcaseConnection.js.map +1 -1
  182. package/lib/esm/DisplayStyleState.d.ts +1 -0
  183. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  184. package/lib/esm/DisplayStyleState.js.map +1 -1
  185. package/lib/esm/DrawingViewState.js +3 -3
  186. package/lib/esm/DrawingViewState.js.map +1 -1
  187. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  188. package/lib/esm/EnvironmentDecorations.js +8 -11
  189. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  190. package/lib/esm/SheetViewState.d.ts.map +1 -1
  191. package/lib/esm/SheetViewState.js +5 -7
  192. package/lib/esm/SheetViewState.js.map +1 -1
  193. package/lib/esm/Viewport.d.ts +6 -3
  194. package/lib/esm/Viewport.d.ts.map +1 -1
  195. package/lib/esm/Viewport.js +17 -10
  196. package/lib/esm/Viewport.js.map +1 -1
  197. package/lib/esm/core-frontend.d.ts +1 -0
  198. package/lib/esm/core-frontend.d.ts.map +1 -1
  199. package/lib/esm/core-frontend.js +1 -0
  200. package/lib/esm/core-frontend.js.map +1 -1
  201. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  202. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  203. package/lib/esm/render/RenderMaterial.js +9 -0
  204. package/lib/esm/render/RenderMaterial.js.map +1 -0
  205. package/lib/esm/render/RenderSystem.d.ts +10 -3
  206. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  207. package/lib/esm/render/RenderSystem.js +9 -1
  208. package/lib/esm/render/RenderSystem.js.map +1 -1
  209. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +2 -0
  210. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +1 -1
  211. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +39 -2
  212. package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +1 -1
  213. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  214. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  215. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  216. package/lib/esm/render/webgl/Material.js +2 -0
  217. package/lib/esm/render/webgl/Material.js.map +1 -1
  218. package/lib/esm/render/webgl/RealityMesh.d.ts +1 -0
  219. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  220. package/lib/esm/render/webgl/RealityMesh.js +1 -0
  221. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  222. package/lib/esm/render/webgl/SceneCompositor.d.ts +3 -0
  223. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  224. package/lib/esm/render/webgl/SceneCompositor.js +31 -6
  225. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  226. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -0
  227. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  228. package/lib/esm/render/webgl/ShaderProgram.js +1 -0
  229. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  230. package/lib/esm/render/webgl/System.d.ts +2 -0
  231. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  232. package/lib/esm/render/webgl/System.js +44 -1
  233. package/lib/esm/render/webgl/System.js.map +1 -1
  234. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  235. package/lib/esm/render/webgl/Texture.js +2 -2
  236. package/lib/esm/render/webgl/Texture.js.map +1 -1
  237. package/lib/esm/tile/DynamicIModelTile.d.ts.map +1 -1
  238. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  239. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  240. package/lib/esm/tile/GltfReader.d.ts +6 -1
  241. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  242. package/lib/esm/tile/GltfReader.js +103 -28
  243. package/lib/esm/tile/GltfReader.js.map +1 -1
  244. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  245. package/lib/esm/tile/ImdlReader.js +2 -0
  246. package/lib/esm/tile/ImdlReader.js.map +1 -1
  247. package/lib/esm/tile/LRUTileList.d.ts +29 -29
  248. package/lib/esm/tile/LRUTileList.d.ts.map +1 -1
  249. package/lib/esm/tile/LRUTileList.js +47 -47
  250. package/lib/esm/tile/LRUTileList.js.map +1 -1
  251. package/lib/esm/tile/OrbitGtTileTree.js +1 -1
  252. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  253. package/lib/esm/tile/RealityModelTileTree.d.ts +24 -2
  254. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  255. package/lib/esm/tile/RealityModelTileTree.js +36 -12
  256. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  257. package/lib/esm/tile/RealityTile.d.ts +17 -3
  258. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  259. package/lib/esm/tile/RealityTile.js +34 -2
  260. package/lib/esm/tile/RealityTile.js.map +1 -1
  261. package/lib/esm/tile/RealityTileLoader.d.ts +8 -5
  262. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  263. package/lib/esm/tile/RealityTileLoader.js +19 -5
  264. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  265. package/lib/esm/tile/RealityTileTree.d.ts +3 -1
  266. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  267. package/lib/esm/tile/RealityTileTree.js +7 -3
  268. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  269. package/lib/esm/tile/Tile.d.ts +5 -4
  270. package/lib/esm/tile/Tile.d.ts.map +1 -1
  271. package/lib/esm/tile/Tile.js +3 -2
  272. package/lib/esm/tile/Tile.js.map +1 -1
  273. package/lib/esm/tile/TileAdmin.d.ts +43 -45
  274. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  275. package/lib/esm/tile/TileAdmin.js +105 -100
  276. package/lib/esm/tile/TileAdmin.js.map +1 -1
  277. package/lib/esm/tile/TileGeometryCollector.d.ts +80 -0
  278. package/lib/esm/tile/TileGeometryCollector.d.ts.map +1 -0
  279. package/lib/esm/tile/TileGeometryCollector.js +67 -0
  280. package/lib/esm/tile/TileGeometryCollector.js.map +1 -0
  281. package/lib/esm/tile/TileRequest.d.ts +12 -9
  282. package/lib/esm/tile/TileRequest.d.ts.map +1 -1
  283. package/lib/esm/tile/TileRequest.js +19 -11
  284. package/lib/esm/tile/TileRequest.js.map +1 -1
  285. package/lib/esm/tile/TileRequestChannel.js +3 -3
  286. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  287. package/lib/esm/tile/TileTree.d.ts +7 -1
  288. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  289. package/lib/esm/tile/TileTree.js +8 -1
  290. package/lib/esm/tile/TileTree.js.map +1 -1
  291. package/lib/esm/tile/TileTreeReference.d.ts +23 -2
  292. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  293. package/lib/esm/tile/TileTreeReference.js +39 -3
  294. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  295. package/lib/esm/tile/TileUsageMarker.d.ts +9 -9
  296. package/lib/esm/tile/TileUsageMarker.d.ts.map +1 -1
  297. package/lib/esm/tile/TileUsageMarker.js +9 -9
  298. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  299. package/lib/esm/tile/TileUser.d.ts +33 -0
  300. package/lib/esm/tile/TileUser.d.ts.map +1 -0
  301. package/lib/esm/tile/TileUser.js +25 -0
  302. package/lib/esm/tile/TileUser.js.map +1 -0
  303. package/lib/esm/tile/TileUserSet.d.ts +28 -0
  304. package/lib/esm/tile/TileUserSet.d.ts.map +1 -0
  305. package/lib/esm/tile/TileUserSet.js +118 -0
  306. package/lib/esm/tile/TileUserSet.js.map +1 -0
  307. package/lib/esm/tile/internal.d.ts +3 -0
  308. package/lib/esm/tile/internal.d.ts.map +1 -1
  309. package/lib/esm/tile/internal.js +3 -0
  310. package/lib/esm/tile/internal.js.map +1 -1
  311. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -2
  312. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  313. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  314. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  315. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -2
  316. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  317. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  318. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  319. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  320. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  321. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -2
  322. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  323. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  324. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  325. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  326. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  327. package/lib/esm/tile/map/ImageryTileTree.js +1 -1
  328. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  329. package/lib/esm/tile/map/MapTile.d.ts +7 -6
  330. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  331. package/lib/esm/tile/map/MapTile.js +47 -34
  332. package/lib/esm/tile/map/MapTile.js.map +1 -1
  333. package/lib/esm/tile/map/MapTileLoader.d.ts +2 -1
  334. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  335. package/lib/esm/tile/map/MapTileLoader.js +4 -1
  336. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  337. package/lib/esm/tile/map/MapTileTree.d.ts +8 -5
  338. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  339. package/lib/esm/tile/map/MapTileTree.js +26 -8
  340. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  341. package/package.json +20 -20
  342. package/lib/cjs/ViewportSet.d.ts +0 -28
  343. package/lib/cjs/ViewportSet.d.ts.map +0 -1
  344. package/lib/cjs/ViewportSet.js +0 -126
  345. package/lib/cjs/ViewportSet.js.map +0 -1
  346. package/lib/esm/ViewportSet.d.ts +0 -28
  347. package/lib/esm/ViewportSet.d.ts.map +0 -1
  348. package/lib/esm/ViewportSet.js +0 -121
  349. package/lib/esm/ViewportSet.js.map +0 -1
  350. package/lib/public/assets/approximateTerrainHeights.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMeshPrimitive.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/RealityMeshPrimitive.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,gBAAgB;AAChB,qBAAa,oBAAqB,YAAW,YAAY,CAAC,QAAQ;IAChE,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,YAAY,EAAE,SAAS,CAAC;IACxC,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,GAAG,EAAE,WAAW,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAK;IACtC,SAAgB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,aAAa,KAAK,EAAE,gBAAgB;WAW/B,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,oBAAoB,GAAG,SAAS;IAO/E,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAG9D,IAAW,SAAS,WAEnB;CACF"}
1
+ {"version":3,"file":"RealityMeshPrimitive.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/RealityMeshPrimitive.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAmB,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAoB,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,gBAAgB;AAChB,qBAAa,oBAAqB,YAAW,YAAY,CAAC,QAAQ;IAChE,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,YAAY,EAAE,SAAS,CAAC;IACxC,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,GAAG,EAAE,WAAW,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAK;IACtC,SAAgB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,aAAa,KAAK,EAAE,gBAAgB;WAW/B,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,oBAAoB,GAAG,SAAS;IAO/E,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAG9D,IAAW,SAAS,WAEnB;IAEM,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS;CAuC3H"}
@@ -8,6 +8,9 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.RealityMeshPrimitive = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_geometry_1 = require("@itwin/core-geometry");
13
+ const core_common_1 = require("@itwin/core-common");
11
14
  const MeshPrimitives_1 = require("./MeshPrimitives");
12
15
  /** @internal */
13
16
  class RealityMeshPrimitive {
@@ -23,9 +26,10 @@ class RealityMeshPrimitive {
23
26
  this.texture = props.texture;
24
27
  }
25
28
  static createFromGltfMesh(mesh) {
26
- if (mesh.primitive.type !== MeshPrimitives_1.Mesh.PrimitiveType.Mesh || mesh.primitive.edges || !mesh.primitive.displayParams.textureMapping || !mesh.pointQParams || !mesh.uvQParams || !mesh.points || !mesh.uvs || !mesh.indices || !(mesh.indices instanceof Uint16Array))
29
+ var _a;
30
+ if (mesh.primitive.type !== MeshPrimitives_1.Mesh.PrimitiveType.Mesh || mesh.primitive.edges || !mesh.pointQParams || !mesh.uvQParams || !mesh.points || !mesh.uvs || !mesh.indices || !(mesh.indices instanceof Uint16Array))
27
31
  return undefined; // Simple meshes have only triangles without edges and are textured.
28
- return new RealityMeshPrimitive({ indices: mesh.indices, pointQParams: mesh.pointQParams, points: mesh.points, uvQParams: mesh.uvQParams, uvs: mesh.uvs, normals: mesh.normals, featureID: 0, texture: mesh.primitive.displayParams.textureMapping.texture });
32
+ return new RealityMeshPrimitive({ indices: mesh.indices, pointQParams: mesh.pointQParams, points: mesh.points, uvQParams: mesh.uvQParams, uvs: mesh.uvs, normals: mesh.normals, featureID: 0, texture: (_a = mesh.primitive.displayParams.textureMapping) === null || _a === void 0 ? void 0 : _a.texture });
29
33
  }
30
34
  collectStatistics(stats) {
31
35
  stats.addTerrain(this.bytesUsed);
@@ -33,6 +37,39 @@ class RealityMeshPrimitive {
33
37
  get bytesUsed() {
34
38
  return 2 * (this.indices.length + this.points.length + this.uvs.length + (this.normals ? this.normals.length : 0));
35
39
  }
40
+ createPolyface(transform, needNormals, needParams) {
41
+ if (!this.pointQParams || !this.points || !this.indices) {
42
+ (0, core_bentley_1.assert)(false, "missing mesh points");
43
+ return undefined;
44
+ }
45
+ const { points, pointQParams, normals, uvs, uvQParams, indices } = this;
46
+ const includeNormals = needNormals && undefined !== normals;
47
+ const includeParams = needParams && undefined !== uvQParams && undefined !== uvs;
48
+ const polyface = core_geometry_1.IndexedPolyface.create(includeNormals, includeParams);
49
+ for (let i = 0; i < points.length;) {
50
+ const point = pointQParams.unquantize(points[i++], points[i++], points[i++]);
51
+ if (transform)
52
+ transform.multiplyPoint3d(point, point);
53
+ polyface.addPoint(point);
54
+ }
55
+ if (includeNormals)
56
+ for (let i = 0; i < normals.length;)
57
+ polyface.addNormal(core_common_1.OctEncodedNormal.decodeValue(normals[i++]));
58
+ if (includeParams)
59
+ for (let i = 0; i < uvs.length;)
60
+ polyface.addParam(uvQParams.unquantize(uvs[i++], uvs[i++]));
61
+ let j = 0;
62
+ indices.forEach((index) => {
63
+ polyface.addPointIndex(index);
64
+ if (includeNormals)
65
+ polyface.addNormalIndex(index);
66
+ if (includeParams)
67
+ polyface.addParamIndex(index);
68
+ if (0 === (++j % 3))
69
+ polyface.terminateFacet();
70
+ });
71
+ return polyface;
72
+ }
36
73
  }
37
74
  exports.RealityMeshPrimitive = RealityMeshPrimitive;
38
75
  //# sourceMappingURL=RealityMeshPrimitive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMeshPrimitive.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/RealityMeshPrimitive.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,qDAAwC;AAaxC,gBAAgB;AAChB,MAAa,oBAAoB;IAS/B,YAAsB,KAAuB;QAF7B,cAAS,GAAW,CAAC,CAAC;QAGpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,IAAkB;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,qBAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,WAAW,CAAC;YAC1P,OAAO,SAAS,CAAC,CAAK,oEAAoE;QAE5F,OAAO,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAChQ,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;CACF;AAjCD,oDAiCC","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 { QParams2d, QParams3d, RenderTexture } from \"@itwin/core-common\";\r\nimport { GltfMeshData } from \"../../../tile/internal\";\r\nimport { RenderMemory } from \"../../RenderMemory\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\n\r\nexport interface RealityMeshProps {\r\n readonly indices: Uint16Array;\r\n readonly pointQParams: QParams3d;\r\n readonly points: Uint16Array;\r\n readonly normals?: Uint16Array;\r\n readonly uvQParams: QParams2d;\r\n readonly uvs: Uint16Array;\r\n readonly featureID: number;\r\n readonly texture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshPrimitive implements RenderMemory.Consumer {\r\n public readonly indices: Uint16Array;\r\n public readonly pointQParams: QParams3d;\r\n public readonly points: Uint16Array;\r\n public readonly normals?: Uint16Array;\r\n public readonly uvQParams: QParams2d;\r\n public readonly uvs: Uint16Array;\r\n public readonly featureID: number = 0;\r\n public readonly texture?: RenderTexture;\r\n protected constructor(props: RealityMeshProps) {\r\n this.pointQParams = props.pointQParams;\r\n this.points = props.points;\r\n this.uvQParams = props.uvQParams;\r\n this.uvs = props.uvs;\r\n this.normals = props.normals;\r\n this.indices = props.indices;\r\n this.featureID = props.featureID;\r\n this.texture = props.texture;\r\n }\r\n\r\n public static createFromGltfMesh(mesh: GltfMeshData): RealityMeshPrimitive | undefined {\r\n if (mesh.primitive.type !== Mesh.PrimitiveType.Mesh || mesh.primitive.edges || !mesh.primitive.displayParams.textureMapping || !mesh.pointQParams || !mesh.uvQParams || !mesh.points || !mesh.uvs || !mesh.indices || !(mesh.indices instanceof Uint16Array))\r\n return undefined; // Simple meshes have only triangles without edges and are textured.\r\n\r\n return new RealityMeshPrimitive({ indices: mesh.indices, pointQParams: mesh.pointQParams, points: mesh.points, uvQParams: mesh.uvQParams, uvs: mesh.uvs, normals: mesh.normals, featureID: 0, texture: mesh.primitive.displayParams.textureMapping.texture });\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addTerrain(this.bytesUsed);\r\n }\r\n public get bytesUsed() {\r\n return 2 * (this.indices.length + this.points.length + this.uvs.length + (this.normals ? this.normals.length : 0));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityMeshPrimitive.js","sourceRoot":"","sources":["../../../../../src/render/primitives/mesh/RealityMeshPrimitive.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 { IndexedPolyface, Polyface, Transform } from \"@itwin/core-geometry\";\r\nimport { OctEncodedNormal, QParams2d, QParams3d, RenderTexture } from \"@itwin/core-common\";\r\nimport { GltfMeshData } from \"../../../tile/internal\";\r\nimport { RenderMemory } from \"../../RenderMemory\";\r\nimport { Mesh } from \"./MeshPrimitives\";\r\n\r\nexport interface RealityMeshProps {\r\n readonly indices: Uint16Array;\r\n readonly pointQParams: QParams3d;\r\n readonly points: Uint16Array;\r\n readonly normals?: Uint16Array;\r\n readonly uvQParams: QParams2d;\r\n readonly uvs: Uint16Array;\r\n readonly featureID: number;\r\n readonly texture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshPrimitive implements RenderMemory.Consumer {\r\n public readonly indices: Uint16Array;\r\n public readonly pointQParams: QParams3d;\r\n public readonly points: Uint16Array;\r\n public readonly normals?: Uint16Array;\r\n public readonly uvQParams: QParams2d;\r\n public readonly uvs: Uint16Array;\r\n public readonly featureID: number = 0;\r\n public readonly texture?: RenderTexture;\r\n protected constructor(props: RealityMeshProps) {\r\n this.pointQParams = props.pointQParams;\r\n this.points = props.points;\r\n this.uvQParams = props.uvQParams;\r\n this.uvs = props.uvs;\r\n this.normals = props.normals;\r\n this.indices = props.indices;\r\n this.featureID = props.featureID;\r\n this.texture = props.texture;\r\n }\r\n\r\n public static createFromGltfMesh(mesh: GltfMeshData): RealityMeshPrimitive | undefined {\r\n if (mesh.primitive.type !== Mesh.PrimitiveType.Mesh || mesh.primitive.edges || !mesh.pointQParams || !mesh.uvQParams || !mesh.points || !mesh.uvs || !mesh.indices || !(mesh.indices instanceof Uint16Array))\r\n return undefined; // Simple meshes have only triangles without edges and are textured.\r\n\r\n return new RealityMeshPrimitive({ indices: mesh.indices, pointQParams: mesh.pointQParams, points: mesh.points, uvQParams: mesh.uvQParams, uvs: mesh.uvs, normals: mesh.normals, featureID: 0, texture: mesh.primitive.displayParams.textureMapping?.texture });\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addTerrain(this.bytesUsed);\r\n }\r\n public get bytesUsed() {\r\n return 2 * (this.indices.length + this.points.length + this.uvs.length + (this.normals ? this.normals.length : 0));\r\n }\r\n\r\n public createPolyface(transform: Transform | undefined, needNormals?: boolean, needParams?: boolean): Polyface | undefined {\r\n if (!this.pointQParams || !this.points || !this.indices) {\r\n assert (false, \"missing mesh points\");\r\n return undefined;\r\n }\r\n const { points, pointQParams, normals, uvs, uvQParams, indices } = this;\r\n const includeNormals = needNormals && undefined !== normals;\r\n const includeParams = needParams && undefined !== uvQParams && undefined !== uvs;\r\n\r\n const polyface = IndexedPolyface.create(includeNormals, includeParams);\r\n for (let i = 0; i < points.length; ) {\r\n const point = pointQParams.unquantize(points[i++], points[i++], points[i++]);\r\n if (transform)\r\n transform.multiplyPoint3d(point, point);\r\n\r\n polyface.addPoint(point);\r\n }\r\n\r\n if (includeNormals)\r\n for (let i = 0; i < normals.length; )\r\n polyface.addNormal(OctEncodedNormal.decodeValue(normals[i++]));\r\n\r\n if (includeParams)\r\n for (let i = 0; i < uvs.length; )\r\n polyface.addParam(uvQParams.unquantize(uvs[i++], uvs[i++]));\r\n\r\n let j = 0;\r\n indices.forEach((index: number) => {\r\n polyface.addPointIndex(index);\r\n if (includeNormals)\r\n polyface.addNormalIndex(index);\r\n if (includeParams)\r\n polyface.addParamIndex(index);\r\n if (0 === (++j % 3))\r\n polyface.terminateFacet();\r\n });\r\n return polyface;\r\n }\r\n\r\n}\r\n"]}
@@ -170,7 +170,7 @@ class PrimitiveCommand {
170
170
  const technique = target.techniques.getTechnique(techniqueId);
171
171
  const program = technique.getShader(flags);
172
172
  if (exec.setProgram(program))
173
- this.primitive.draw(exec);
173
+ exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);
174
174
  }
175
175
  get hasFeatures() { return this.primitive.hasFeatures; }
176
176
  get renderOrder() { return this.primitive.renderOrder; }
@@ -1 +1 @@
1
- {"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target { assert(undefined !== this._target); return this._target; }\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry { assert(undefined !== this._geometry); return this._geometry; }\r\n public get programParams(): ShaderProgramParams { assert(undefined !== this._programParams); return this._programParams; }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() { return this.programParams.isViewCoords; }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && System.instance.isWebGL2 && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n this.primitive.draw(exec);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0) continue;\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
1
+ {"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target { assert(undefined !== this._target); return this._target; }\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry { assert(undefined !== this._geometry); return this._geometry; }\r\n public get programParams(): ShaderProgramParams { assert(undefined !== this._programParams); return this._programParams; }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() { return this.programParams.isViewCoords; }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && System.instance.isWebGL2 && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0) continue;\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Material.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Material.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAY,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGpF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,gBAAuB,OAAO,EAAE,QAAQ,CAAgD;IAGxF,SAAgB,OAAO,EAAE,KAAK,CAAS;IACvC,SAAgB,YAAY,eAAuB;IACnD,SAAgB,IAAI,eAAuB;IAE3C,IAAW,YAAY,YAAgC;IACvD,IAAW,cAAc,YAAgC;IACzD,IAAW,eAAe,YAAsD;gBAE7D,MAAM,EAAE,cAAc,CAAC,MAAM;IA2BhD,OAAO,CAAC,UAAU;CAQnB;AAID;;GAEG;AACH,oBAAY,YAAY,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAE3D,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAOhG"}
1
+ {"version":3,"file":"Material.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Material.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAY,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGpF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAE1C,gBAAuB,OAAO,EAAE,QAAQ,CAAgD;IAGxF,SAAgB,OAAO,EAAE,KAAK,CAAS;IACvC,SAAgB,YAAY,eAAuB;IACnD,SAAgB,IAAI,eAAuB;IAE3C,IAAW,YAAY,YAAgC;IACvD,IAAW,cAAc,YAAgC;IACzD,IAAW,eAAe,YAAsD;gBAG7D,MAAM,EAAE,cAAc,CAAC,MAAM;IA2BhD,OAAO,CAAC,UAAU;CAQnB;AAID;;GAEG;AACH,oBAAY,YAAY,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAE3D,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAOhG"}
@@ -39,6 +39,7 @@ const FloatRGBA_1 = require("./FloatRGBA");
39
39
  * @internal
40
40
  */
41
41
  class Material extends core_common_1.RenderMaterial {
42
+ // eslint-disable-next-line deprecation/deprecation
42
43
  constructor(params) {
43
44
  super(params);
44
45
  // Used for type-switching vs MaterialAtlas
@@ -76,6 +77,7 @@ class Material extends core_common_1.RenderMaterial {
76
77
  }
77
78
  }
78
79
  exports.Material = Material;
80
+ // eslint-disable-next-line deprecation/deprecation
79
81
  Material.default = new Material(core_common_1.RenderMaterial.Params.defaults);
80
82
  Object.freeze(Material.default);
81
83
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../../src/render/webgl/Material.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 { ColorDef, RenderMaterial } from \"@itwin/core-common\";\r\nimport { SurfaceMaterial, SurfaceMaterialAtlas } from \"../primitives/SurfaceParams\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\n\r\n/** Parameters describing a single material. The parameters used are:\r\n * - diffuse color rgb (vec3).\r\n * - alpha (float in [0..1])\r\n * - is rgb overridden (bool)\r\n * - is alpha overridden (bool)\r\n * - specular exponent (float).\r\n * - specular color (vec3).\r\n * - specular weight (float in [0..1])\r\n * - diffuse weight (float in [0..1])\r\n * - texture weight (float in [0..1])\r\n *\r\n * The rgb and alpha are applied in the vertex shader. Either can be negative, indicating the material does not override it.\r\n *\r\n * The rest are passed as a varying vec4 to be applied in the fragment shader.\r\n * All but the specular exponent are compressed such that floats in [0..1] become integers in [0..255] and concatenated bitwise in pairs into 16-bit integer values.\r\n *\r\n * The result is:\r\n * x: diffuse and specular weights\r\n * y: texture weight and specular red\r\n * z: specular green and blue\r\n * w: specular exponent\r\n *\r\n * This packing is motivated by the limited max number of varying vectors guaranteed by WebGL.\r\n * A varying is used because:\r\n * 1. Material atlases require looking up the material associated with a particular vertex; and\r\n * 2. The vertex material may be replaced with a default material based on other criteria such as view flags and feature symbology overrides.\r\n * @internal\r\n */\r\nexport class Material extends RenderMaterial {\r\n public static readonly default: Material = new Material(RenderMaterial.Params.defaults);\r\n\r\n // Used for type-switching vs MaterialAtlas\r\n public readonly isAtlas: false = false;\r\n public readonly fragUniforms = new Float32Array(4);\r\n public readonly rgba = new Float32Array(4);\r\n\r\n public get overridesRgb() { return this.rgba[0] >= 0; }\r\n public get overridesAlpha() { return this.rgba[3] >= 0; }\r\n public get hasTranslucency() { return this.overridesAlpha && this.rgba[3] < 1; }\r\n\r\n public constructor(params: RenderMaterial.Params) {\r\n super(params);\r\n\r\n if (undefined !== params.diffuseColor) {\r\n const rgb = FloatRgb.fromColorDef(params.diffuseColor);\r\n this.rgba[0] = rgb.red;\r\n this.rgba[1] = rgb.green;\r\n this.rgba[2] = rgb.blue;\r\n } else {\r\n this.rgba[0] = this.rgba[1] = this.rgba[2] = -1;\r\n }\r\n\r\n const alpha = undefined !== params.alpha ? params.alpha : -1;\r\n this.rgba[3] = alpha;\r\n\r\n const scale = (value: number) => Math.floor(value * 255 + 0.5);\r\n this.setInteger(scale(params.diffuse), scale(params.specular), 0);\r\n\r\n const textureWeight = undefined !== this.textureMapping ? this.textureMapping.params.weight : 1.0;\r\n const specularRgb = undefined !== params.specularColor ? params.specularColor : ColorDef.white;\r\n const specularColors = specularRgb.colors;\r\n this.setInteger(scale(textureWeight), specularColors.r, 1);\r\n this.setInteger(specularColors.g, specularColors.b, 2);\r\n\r\n this.fragUniforms[3] = params.specularExponent;\r\n }\r\n\r\n private setInteger(loByte: number, hiByte: number, index: number): void {\r\n const clamp = (x: number) => Math.floor(Math.min(255, (Math.max(x, 0))));\r\n\r\n loByte = clamp(loByte);\r\n hiByte = clamp(hiByte);\r\n\r\n this.fragUniforms[index] = loByte + hiByte * 256;\r\n }\r\n}\r\n\r\nObject.freeze(Material.default);\r\n\r\n/** Describes the material associated with a surface.\r\n * @internal\r\n */\r\nexport type MaterialInfo = Material | SurfaceMaterialAtlas;\r\n\r\n/** @internal */\r\nexport function createMaterialInfo(source: SurfaceMaterial | undefined): MaterialInfo | undefined {\r\n if (undefined === source)\r\n return undefined;\r\n else if (source.isAtlas)\r\n return source;\r\n else\r\n return source.material as Material;\r\n}\r\n"]}
1
+ {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../../src/render/webgl/Material.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 { ColorDef, RenderMaterial } from \"@itwin/core-common\";\r\nimport { SurfaceMaterial, SurfaceMaterialAtlas } from \"../primitives/SurfaceParams\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\n\r\n/** Parameters describing a single material. The parameters used are:\r\n * - diffuse color rgb (vec3).\r\n * - alpha (float in [0..1])\r\n * - is rgb overridden (bool)\r\n * - is alpha overridden (bool)\r\n * - specular exponent (float).\r\n * - specular color (vec3).\r\n * - specular weight (float in [0..1])\r\n * - diffuse weight (float in [0..1])\r\n * - texture weight (float in [0..1])\r\n *\r\n * The rgb and alpha are applied in the vertex shader. Either can be negative, indicating the material does not override it.\r\n *\r\n * The rest are passed as a varying vec4 to be applied in the fragment shader.\r\n * All but the specular exponent are compressed such that floats in [0..1] become integers in [0..255] and concatenated bitwise in pairs into 16-bit integer values.\r\n *\r\n * The result is:\r\n * x: diffuse and specular weights\r\n * y: texture weight and specular red\r\n * z: specular green and blue\r\n * w: specular exponent\r\n *\r\n * This packing is motivated by the limited max number of varying vectors guaranteed by WebGL.\r\n * A varying is used because:\r\n * 1. Material atlases require looking up the material associated with a particular vertex; and\r\n * 2. The vertex material may be replaced with a default material based on other criteria such as view flags and feature symbology overrides.\r\n * @internal\r\n */\r\nexport class Material extends RenderMaterial {\r\n // eslint-disable-next-line deprecation/deprecation\r\n public static readonly default: Material = new Material(RenderMaterial.Params.defaults);\r\n\r\n // Used for type-switching vs MaterialAtlas\r\n public readonly isAtlas: false = false;\r\n public readonly fragUniforms = new Float32Array(4);\r\n public readonly rgba = new Float32Array(4);\r\n\r\n public get overridesRgb() { return this.rgba[0] >= 0; }\r\n public get overridesAlpha() { return this.rgba[3] >= 0; }\r\n public get hasTranslucency() { return this.overridesAlpha && this.rgba[3] < 1; }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public constructor(params: RenderMaterial.Params) {\r\n super(params);\r\n\r\n if (undefined !== params.diffuseColor) {\r\n const rgb = FloatRgb.fromColorDef(params.diffuseColor);\r\n this.rgba[0] = rgb.red;\r\n this.rgba[1] = rgb.green;\r\n this.rgba[2] = rgb.blue;\r\n } else {\r\n this.rgba[0] = this.rgba[1] = this.rgba[2] = -1;\r\n }\r\n\r\n const alpha = undefined !== params.alpha ? params.alpha : -1;\r\n this.rgba[3] = alpha;\r\n\r\n const scale = (value: number) => Math.floor(value * 255 + 0.5);\r\n this.setInteger(scale(params.diffuse), scale(params.specular), 0);\r\n\r\n const textureWeight = undefined !== this.textureMapping ? this.textureMapping.params.weight : 1.0;\r\n const specularRgb = undefined !== params.specularColor ? params.specularColor : ColorDef.white;\r\n const specularColors = specularRgb.colors;\r\n this.setInteger(scale(textureWeight), specularColors.r, 1);\r\n this.setInteger(specularColors.g, specularColors.b, 2);\r\n\r\n this.fragUniforms[3] = params.specularExponent;\r\n }\r\n\r\n private setInteger(loByte: number, hiByte: number, index: number): void {\r\n const clamp = (x: number) => Math.floor(Math.min(255, (Math.max(x, 0))));\r\n\r\n loByte = clamp(loByte);\r\n hiByte = clamp(hiByte);\r\n\r\n this.fragUniforms[index] = loByte + hiByte * 256;\r\n }\r\n}\r\n\r\nObject.freeze(Material.default);\r\n\r\n/** Describes the material associated with a surface.\r\n * @internal\r\n */\r\nexport type MaterialInfo = Material | SurfaceMaterialAtlas;\r\n\r\n/** @internal */\r\nexport function createMaterialInfo(source: SurfaceMaterial | undefined): MaterialInfo | undefined {\r\n if (undefined === source)\r\n return undefined;\r\n else if (source.isAtlas)\r\n return source;\r\n else\r\n return source.material as Material;\r\n}\r\n"]}
@@ -48,6 +48,7 @@ export declare class RealityMeshGeometry extends IndexedGeometry implements IDis
48
48
  get hasFeatures(): boolean;
49
49
  get supportsThematicDisplay(): boolean;
50
50
  get overrideColorMix(): number;
51
+ get transform(): Transform | undefined;
51
52
  private constructor();
52
53
  dispose(): void;
53
54
  static createFromTerrainMesh(terrainMesh: TerrainMeshPrimitive, transform: Transform | undefined): RealityMeshGeometry | undefined;
@@ -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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"}
@@ -122,6 +122,7 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
122
122
  get hasFeatures() { return this._realityMeshParams.featureID !== undefined; }
123
123
  get supportsThematicDisplay() { return true; }
124
124
  get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.
125
+ get transform() { return this._transform; }
125
126
  dispose() {
126
127
  super.dispose();
127
128
  (0, core_bentley_1.dispose)(this._realityMeshParams);
@@ -1 +1 @@
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 { 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\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 { 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"]}
@@ -12,6 +12,8 @@ import { RenderCommands } from "./RenderCommands";
12
12
  import { SolarShadowMap } from "./SolarShadowMap";
13
13
  import { Target } from "./Target";
14
14
  import { TextureHandle } from "./Texture";
15
+ import { Primitive } from "./Primitive";
16
+ import { ShaderProgramExecutor } from "./ShaderProgram";
15
17
  /** Orchestrates rendering of the scene on behalf of a Target.
16
18
  * This base class exists only so we don't have to export all the types of the shared Compositor members like Textures, FrameBuffers, etc.
17
19
  * @internal
@@ -30,6 +32,7 @@ export declare abstract class SceneCompositor implements WebGLDisposable, Render
30
32
  abstract readDepthAndOrder(rect: ViewRect): Uint8Array | undefined;
31
33
  abstract readFeatureIds(rect: ViewRect): Uint8Array | undefined;
32
34
  abstract updateSolarShadows(context: SceneContext | undefined): void;
35
+ abstract drawPrimitive(primitive: Primitive, exec: ShaderProgramExecutor, outputsToPick: boolean): void;
33
36
  /** Obtain a framebuffer with a single spare RGBA texture that can be used for screen-space effect shaders. */
34
37
  abstract get screenSpaceEffectFbo(): FrameBuffer;
35
38
  abstract get featureIds(): TextureHandle;
@@ -1 +1 @@
1
- {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQ/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AA+jB1C;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,eAAe,EAAE,YAAY,CAAC,QAAQ;IACrF,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,aAAoB,wBAAwB,IAAI,MAAM,CAAC;IACvD,aAAoB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE;IAC7D,aAAoB,UAAU,IAAI,OAAO,CAAC;aAC1B,OAAO,IAAI,IAAI;aACf,OAAO,IAAI,IAAI;aACf,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;aACrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;aAC3H,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;aAC9E,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAE3E,8GAA8G;IAC9G,aAAoB,oBAAoB,IAAI,WAAW,CAAC;IAExD,aAAoB,UAAU,IAAI,aAAa,CAAC;IAChD,aAAoB,aAAa,IAAI,aAAa,CAAC;IACnD,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C,SAAS,aAAa,MAAM,EAAE,MAAM;WAKtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;aAIrC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;CACxE"}
1
+ {"version":3,"file":"SceneCompositor.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SceneCompositor.ts"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQ/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAIzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA8jBxD;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,eAAe,EAAE,YAAY,CAAC,QAAQ;IACrF,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,aAAoB,wBAAwB,IAAI,MAAM,CAAC;IACvD,aAAoB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE;IAC7D,aAAoB,UAAU,IAAI,OAAO,CAAC;aAC1B,OAAO,IAAI,IAAI;aACf,OAAO,IAAI,IAAI;aACf,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;aACrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;aAC3H,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;aAC9E,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;aACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;aAC3D,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAE9G,8GAA8G;IAC9G,aAAoB,oBAAoB,IAAI,WAAW,CAAC;IAExD,aAAoB,UAAU,IAAI,aAAa,CAAC;IAChD,aAAoB,aAAa,IAAI,aAAa,CAAC;IACnD,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C,SAAS,aAAa,MAAM,EAAE,MAAM;WAKtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;aAIrC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;CACxE"}
@@ -504,6 +504,13 @@ class SceneCompositor {
504
504
  }
505
505
  }
506
506
  exports.SceneCompositor = SceneCompositor;
507
+ // This describes what types of primitives a compositor should draw. See the `drawPrimitive` method of Compositor.
508
+ var PrimitiveDrawState;
509
+ (function (PrimitiveDrawState) {
510
+ PrimitiveDrawState[PrimitiveDrawState["Both"] = 0] = "Both";
511
+ PrimitiveDrawState[PrimitiveDrawState["Pickable"] = 1] = "Pickable";
512
+ PrimitiveDrawState[PrimitiveDrawState["NonPickable"] = 2] = "NonPickable";
513
+ })(PrimitiveDrawState || (PrimitiveDrawState = {}));
507
514
  // The actual base class. Specializations are provided based on whether or not multiple render targets are supported.
508
515
  class Compositor extends SceneCompositor {
509
516
  constructor(target, fbos, geometry) {
@@ -523,6 +530,7 @@ class Compositor extends SceneCompositor {
523
530
  this._haveVolumeClassifier = false;
524
531
  this._antialiasSamples = 1;
525
532
  this._viewProjectionMatrix = new Matrix_1.Matrix4();
533
+ this._primitiveDrawState = PrimitiveDrawState.Both; // used by drawPrimitive to decide whether a primitive needs to be drawn.
526
534
  this._frameBuffers = fbos;
527
535
  this._geom = geometry;
528
536
  this._opaqueRenderState.flags.depthTest = true;
@@ -543,6 +551,11 @@ class Compositor extends SceneCompositor {
543
551
  this._layerRenderState.depthFunc = GL_1.GL.DepthFunc.Always;
544
552
  this._layerRenderState.blend.setBlendFunc(GL_1.GL.BlendFactor.One, GL_1.GL.BlendFactor.OneMinusSrcAlpha);
545
553
  }
554
+ drawPrimitive(primitive, exec, outputsToPick) {
555
+ if ((outputsToPick && this._primitiveDrawState !== PrimitiveDrawState.NonPickable) ||
556
+ (!outputsToPick && this._primitiveDrawState !== PrimitiveDrawState.Pickable))
557
+ primitive.draw(exec);
558
+ }
546
559
  get antialiasSamples() { return this._antialiasSamples; }
547
560
  get useMsBuffers() { return this._antialiasSamples > 1 && !this.target.isReadPixelsInProgress; }
548
561
  enableVolumeClassifierFbos(textures, depth, volClassDepth, depthMS, volClassDepthMS) {
@@ -1673,20 +1686,24 @@ class MRTCompositor extends Compositor {
1673
1686
  this.drawPass(commands, 2 /* OpaqueLinear */);
1674
1687
  this.drawPass(commands, 3 /* OpaquePlanar */, true);
1675
1688
  if (needAO || renderForReadPixels) {
1689
+ if (needAO)
1690
+ this._primitiveDrawState = PrimitiveDrawState.Pickable;
1676
1691
  this.drawPass(commands, 4 /* OpaqueGeneral */, true);
1692
+ this._primitiveDrawState = PrimitiveDrawState.Both;
1677
1693
  if (this.useMsBuffers) {
1678
1694
  const fbo = (needComposite ? this._fbos.opaqueAndCompositeAll : this._fbos.opaqueAll);
1679
1695
  fbo.blitMsBuffersToTextures(true);
1680
1696
  }
1681
- if (needAO)
1682
- this.renderAmbientOcclusion();
1683
1697
  }
1684
1698
  });
1685
1699
  this._readPickDataFromPingPong = false;
1686
1700
  // The general pass (and following) will not bother to write to pick buffers and so can read from the actual pick buffers.
1687
- if (!renderForReadPixels && !needAO) {
1701
+ if (!renderForReadPixels) {
1688
1702
  fbStack.execute(needComposite ? this._fbos.opaqueAndCompositeColor : this._fbos.opaqueColor, true, this.useMsBuffers, () => {
1703
+ if (needAO)
1704
+ this._primitiveDrawState = PrimitiveDrawState.NonPickable;
1689
1705
  this.drawPass(commands, 4 /* OpaqueGeneral */, false);
1706
+ this._primitiveDrawState = PrimitiveDrawState.Both;
1690
1707
  this.drawPass(commands, 8 /* HiddenEdge */, false);
1691
1708
  });
1692
1709
  if (this.useMsBuffers) {
@@ -1694,6 +1711,8 @@ class MRTCompositor extends Compositor {
1694
1711
  fbo.blitMsBuffersToTextures(needComposite);
1695
1712
  }
1696
1713
  }
1714
+ if (needAO)
1715
+ this.renderAmbientOcclusion();
1697
1716
  }
1698
1717
  renderLayers(commands, needComposite, pass) {
1699
1718
  this._readPickDataFromPingPong = true;
@@ -1866,19 +1885,25 @@ class MPCompositor extends Compositor {
1866
1885
  this.drawOpaquePass(colorFbo, commands, 2 /* OpaqueLinear */, false);
1867
1886
  this.drawOpaquePass(colorFbo, commands, 3 /* OpaquePlanar */, true);
1868
1887
  if (renderForReadPixels || needAO) {
1869
- this.drawOpaquePass(colorFbo, commands, 4 /* OpaqueGeneral */, true);
1870
1888
  if (needAO)
1871
- this.renderAmbientOcclusion();
1889
+ this._primitiveDrawState = PrimitiveDrawState.Pickable;
1890
+ this.drawOpaquePass(colorFbo, commands, 4 /* OpaqueGeneral */, true);
1891
+ this._primitiveDrawState = PrimitiveDrawState.Both;
1872
1892
  }
1873
1893
  this._readPickDataFromPingPong = false;
1874
1894
  // The general pass (and following) will not bother to write to pick buffers and so can read from the actual pick buffers.
1875
- if (!renderForReadPixels && !needAO) {
1895
+ if (!renderForReadPixels) {
1876
1896
  System_1.System.instance.frameBufferStack.execute(colorFbo, true, false, () => {
1877
1897
  this._drawMultiPassDepth = true; // for OpaqueGeneral
1898
+ if (needAO)
1899
+ this._primitiveDrawState = PrimitiveDrawState.NonPickable;
1878
1900
  this.drawPass(commands, 4 /* OpaqueGeneral */, false);
1901
+ this._primitiveDrawState = PrimitiveDrawState.Both;
1879
1902
  this.drawPass(commands, 8 /* HiddenEdge */, false);
1880
1903
  });
1881
1904
  }
1905
+ if (needAO)
1906
+ this.renderAmbientOcclusion();
1882
1907
  }
1883
1908
  renderLayers(commands, needComposite, pass) {
1884
1909
  this._readPickDataFromPingPong = true;