@itwin/core-frontend 3.6.0-dev.5 → 3.6.0-dev.50

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 (365) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.js +1 -1
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/IModelApp.d.ts +3 -3
  6. package/lib/cjs/IModelApp.d.ts.map +1 -1
  7. package/lib/cjs/IModelApp.js +2 -2
  8. package/lib/cjs/IModelApp.js.map +1 -1
  9. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  10. package/lib/cjs/NoRenderApp.js +3 -0
  11. package/lib/cjs/NoRenderApp.js.map +1 -1
  12. package/lib/cjs/Tiles.d.ts +4 -0
  13. package/lib/cjs/Tiles.d.ts.map +1 -1
  14. package/lib/cjs/Tiles.js +11 -0
  15. package/lib/cjs/Tiles.js.map +1 -1
  16. package/lib/cjs/ViewContext.js +1 -1
  17. package/lib/cjs/ViewContext.js.map +1 -1
  18. package/lib/cjs/ViewManager.d.ts.map +1 -1
  19. package/lib/cjs/ViewManager.js +2 -3
  20. package/lib/cjs/ViewManager.js.map +1 -1
  21. package/lib/cjs/ViewState.d.ts +4 -5
  22. package/lib/cjs/ViewState.d.ts.map +1 -1
  23. package/lib/cjs/ViewState.js +0 -1
  24. package/lib/cjs/ViewState.js.map +1 -1
  25. package/lib/cjs/Viewport.d.ts +48 -3
  26. package/lib/cjs/Viewport.d.ts.map +1 -1
  27. package/lib/cjs/Viewport.js +56 -2
  28. package/lib/cjs/Viewport.js.map +1 -1
  29. package/lib/cjs/extension/ExtensionRuntime.js +3 -0
  30. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  31. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  32. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  33. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  34. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  35. package/lib/cjs/render/MockRender.js +3 -0
  36. package/lib/cjs/render/MockRender.js.map +1 -1
  37. package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
  38. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  39. package/lib/cjs/render/RealityMeshParams.js +9 -5
  40. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  41. package/lib/cjs/render/VisibleFeature.d.ts +5 -5
  42. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  43. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  44. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  45. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  46. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  47. package/lib/cjs/render/webgl/BranchState.js +5 -0
  48. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  49. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  50. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  51. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  52. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  53. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  54. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  55. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  56. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  57. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  58. package/lib/cjs/render/webgl/EDL.js +264 -0
  59. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  60. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  61. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  62. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  63. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  64. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  65. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  66. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  67. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  68. package/lib/cjs/render/webgl/Layer.js +2 -2
  69. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  70. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/PlanarClassifier.js +9 -8
  72. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  73. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  74. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  75. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  76. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  77. package/lib/cjs/render/webgl/PointCloud.js +2 -0
  78. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  79. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  80. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  81. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  82. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  83. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  84. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  86. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  87. package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -1
  88. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/RenderCommands.js +46 -38
  90. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  91. package/lib/cjs/render/webgl/RenderFlags.d.ts +19 -17
  92. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  93. package/lib/cjs/render/webgl/RenderFlags.js +8 -6
  94. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  95. package/lib/cjs/render/webgl/SceneCompositor.d.ts +6 -1
  96. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/SceneCompositor.js +195 -76
  98. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  99. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  100. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  101. package/lib/cjs/render/webgl/SurfaceGeometry.js +5 -5
  102. package/lib/cjs/render/webgl/Target.js +7 -7
  103. package/lib/cjs/render/webgl/Target.js.map +1 -1
  104. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  105. package/lib/cjs/render/webgl/Technique.js +18 -3
  106. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  107. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  108. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  109. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  110. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  111. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  112. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/UniformHandle.js +1 -2
  114. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  115. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  116. package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
  117. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  118. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  119. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  120. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  121. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  122. package/lib/cjs/tile/BatchedTileIdMap.js +1 -1
  123. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  124. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  125. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  126. package/lib/cjs/tile/GltfReader.js +1 -1
  127. package/lib/cjs/tile/GltfReader.js.map +1 -1
  128. package/lib/cjs/tile/IModelTile.js +1 -1
  129. package/lib/cjs/tile/IModelTile.js.map +1 -1
  130. package/lib/cjs/tile/ImdlReader.js +5 -5
  131. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  132. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  133. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  134. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  135. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  136. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  137. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  138. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  139. package/lib/cjs/tile/RealityTileTree.js +9 -4
  140. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  141. package/lib/cjs/tile/TileDrawArgs.js +1 -1
  142. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  143. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  144. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  145. package/lib/cjs/tile/TileTreeReference.js +3 -0
  146. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  147. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  148. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  149. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  150. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  151. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  152. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  153. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  154. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +1 -1
  155. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  156. package/lib/cjs/tile/map/ImageryTileTree.d.ts +26 -1
  157. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  158. package/lib/cjs/tile/map/ImageryTileTree.js +54 -4
  159. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  160. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +7 -3
  161. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  162. package/lib/cjs/tile/map/MapLayerImageryProvider.js +12 -8
  163. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  164. package/lib/cjs/tile/map/MapTile.d.ts +5 -0
  165. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  166. package/lib/cjs/tile/map/MapTile.js +33 -13
  167. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  168. package/lib/cjs/tile/map/MapTileTree.d.ts +42 -3
  169. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  170. package/lib/cjs/tile/map/MapTileTree.js +126 -9
  171. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  172. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  173. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  174. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +26 -0
  175. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  176. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +23 -68
  177. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  178. package/lib/cjs/tile/map/WmtsCapabilities.js +269 -260
  179. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  180. package/lib/cjs/tools/ClipViewTool.js +2 -2
  181. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  182. package/lib/cjs/tools/MeasureTool.js +2 -2
  183. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  184. package/lib/esm/AccuDraw.js +1 -1
  185. package/lib/esm/AccuDraw.js.map +1 -1
  186. package/lib/esm/IModelApp.d.ts +3 -3
  187. package/lib/esm/IModelApp.d.ts.map +1 -1
  188. package/lib/esm/IModelApp.js +2 -2
  189. package/lib/esm/IModelApp.js.map +1 -1
  190. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  191. package/lib/esm/NoRenderApp.js +3 -0
  192. package/lib/esm/NoRenderApp.js.map +1 -1
  193. package/lib/esm/Tiles.d.ts +4 -0
  194. package/lib/esm/Tiles.d.ts.map +1 -1
  195. package/lib/esm/Tiles.js +11 -0
  196. package/lib/esm/Tiles.js.map +1 -1
  197. package/lib/esm/ViewContext.js +1 -1
  198. package/lib/esm/ViewContext.js.map +1 -1
  199. package/lib/esm/ViewManager.d.ts.map +1 -1
  200. package/lib/esm/ViewManager.js +2 -3
  201. package/lib/esm/ViewManager.js.map +1 -1
  202. package/lib/esm/ViewState.d.ts +4 -5
  203. package/lib/esm/ViewState.d.ts.map +1 -1
  204. package/lib/esm/ViewState.js +0 -1
  205. package/lib/esm/ViewState.js.map +1 -1
  206. package/lib/esm/Viewport.d.ts +48 -3
  207. package/lib/esm/Viewport.d.ts.map +1 -1
  208. package/lib/esm/Viewport.js +57 -3
  209. package/lib/esm/Viewport.js.map +1 -1
  210. package/lib/esm/extension/ExtensionRuntime.js +5 -2
  211. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  212. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  213. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  214. package/lib/esm/render/GraphicBranch.js.map +1 -1
  215. package/lib/esm/render/MockRender.d.ts.map +1 -1
  216. package/lib/esm/render/MockRender.js +3 -0
  217. package/lib/esm/render/MockRender.js.map +1 -1
  218. package/lib/esm/render/RealityMeshParams.d.ts +3 -4
  219. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  220. package/lib/esm/render/RealityMeshParams.js +10 -6
  221. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  222. package/lib/esm/render/VisibleFeature.d.ts +5 -5
  223. package/lib/esm/render/VisibleFeature.js.map +1 -1
  224. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  225. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  226. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  227. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  228. package/lib/esm/render/webgl/BranchState.js +5 -0
  229. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  230. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  231. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  232. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  233. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  234. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  235. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  236. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  237. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  238. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  239. package/lib/esm/render/webgl/EDL.js +260 -0
  240. package/lib/esm/render/webgl/EDL.js.map +1 -0
  241. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  242. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  243. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  244. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  245. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  246. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  247. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  248. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  249. package/lib/esm/render/webgl/Layer.js +2 -2
  250. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  251. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  252. package/lib/esm/render/webgl/PlanarClassifier.js +9 -8
  253. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  254. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  255. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  256. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  257. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  258. package/lib/esm/render/webgl/PointCloud.js +2 -0
  259. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  260. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  261. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  262. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  263. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  264. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  265. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  266. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  267. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  268. package/lib/esm/render/webgl/RenderCommands.d.ts +2 -1
  269. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  270. package/lib/esm/render/webgl/RenderCommands.js +46 -38
  271. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  272. package/lib/esm/render/webgl/RenderFlags.d.ts +19 -17
  273. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  274. package/lib/esm/render/webgl/RenderFlags.js +8 -6
  275. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  276. package/lib/esm/render/webgl/SceneCompositor.d.ts +6 -1
  277. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  278. package/lib/esm/render/webgl/SceneCompositor.js +194 -77
  279. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  280. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  281. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  282. package/lib/esm/render/webgl/SurfaceGeometry.js +5 -5
  283. package/lib/esm/render/webgl/Target.js +7 -7
  284. package/lib/esm/render/webgl/Target.js.map +1 -1
  285. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  286. package/lib/esm/render/webgl/Technique.js +18 -3
  287. package/lib/esm/render/webgl/Technique.js.map +1 -1
  288. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  289. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  290. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  291. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  292. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  293. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  294. package/lib/esm/render/webgl/UniformHandle.js +1 -2
  295. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  296. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  297. package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
  298. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  299. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  300. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  301. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  302. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  303. package/lib/esm/tile/BatchedTileIdMap.js +1 -1
  304. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  305. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  306. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  307. package/lib/esm/tile/GltfReader.js +1 -1
  308. package/lib/esm/tile/GltfReader.js.map +1 -1
  309. package/lib/esm/tile/IModelTile.js +1 -1
  310. package/lib/esm/tile/IModelTile.js.map +1 -1
  311. package/lib/esm/tile/ImdlReader.js +5 -5
  312. package/lib/esm/tile/ImdlReader.js.map +1 -1
  313. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  314. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  315. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  316. package/lib/esm/tile/RealityTileLoader.js +2 -2
  317. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  318. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  319. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  320. package/lib/esm/tile/RealityTileTree.js +9 -4
  321. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  322. package/lib/esm/tile/TileDrawArgs.js +1 -1
  323. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  324. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  325. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  326. package/lib/esm/tile/TileTreeReference.js +3 -0
  327. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  328. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  329. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  330. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  331. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  332. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  333. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  334. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  335. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  336. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  337. package/lib/esm/tile/map/ImageryTileTree.d.ts +26 -1
  338. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  339. package/lib/esm/tile/map/ImageryTileTree.js +53 -4
  340. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  341. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +7 -3
  342. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  343. package/lib/esm/tile/map/MapLayerImageryProvider.js +12 -8
  344. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  345. package/lib/esm/tile/map/MapTile.d.ts +5 -0
  346. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  347. package/lib/esm/tile/map/MapTile.js +33 -13
  348. package/lib/esm/tile/map/MapTile.js.map +1 -1
  349. package/lib/esm/tile/map/MapTileTree.d.ts +42 -3
  350. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  351. package/lib/esm/tile/map/MapTileTree.js +126 -9
  352. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  353. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  354. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  355. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +26 -0
  356. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  357. package/lib/esm/tile/map/WmtsCapabilities.d.ts +23 -68
  358. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  359. package/lib/esm/tile/map/WmtsCapabilities.js +268 -259
  360. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  361. package/lib/esm/tools/ClipViewTool.js +2 -2
  362. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  363. package/lib/esm/tools/MeasureTool.js +2 -2
  364. package/lib/esm/tools/MeasureTool.js.map +1 -1
  365. package/package.json +22 -23
@@ -9,7 +9,6 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.UniformHandle = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
- const Logger_1 = require("@itwin/core-bentley/lib/cjs/Logger");
13
12
  const FrontendLoggerCategory_1 = require("../../FrontendLoggerCategory");
14
13
  const System_1 = require("./System");
15
14
  /** A handle to the location of a uniform within a shader program
@@ -32,7 +31,7 @@ class UniformHandle {
32
31
  throw new Error(errMsg);
33
32
  }
34
33
  else {
35
- Logger_1.Logger.logError(FrontendLoggerCategory_1.FrontendLoggerCategory.Render, errMsg);
34
+ core_bentley_1.Logger.logError(FrontendLoggerCategory_1.FrontendLoggerCategory.Render, errMsg);
36
35
  }
37
36
  }
38
37
  return new UniformHandle(location);
@@ -1 +1 @@
1
- {"version":3,"file":"UniformHandle.js","sourceRoot":"","sources":["../../../../src/render/webgl/UniformHandle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Logger } from \"@itwin/core-bentley/lib/cjs/Logger\";\r\nimport { FrontendLoggerCategory } from \"../../FrontendLoggerCategory\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { ShaderProgram } from \"./ShaderProgram\";\r\nimport { SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\n\r\nconst enum DataType {// eslint-disable-line no-restricted-syntax\r\n Undefined, // eslint-disable-line id-blacklist\r\n Mat3,\r\n Mat4,\r\n Float,\r\n FloatArray,\r\n Vec2,\r\n Vec3,\r\n Vec4,\r\n Int,\r\n IntArray,\r\n Uint,\r\n}\r\n\r\n/** A handle to the location of a uniform within a shader program\r\n * @internal\r\n */\r\nexport class UniformHandle {\r\n private readonly _location: WebGLUniformLocation | null;\r\n private _type: DataType = DataType.Undefined;\r\n private readonly _data: number[] = [];\r\n public syncToken?: SyncToken;\r\n\r\n private constructor(location: WebGLUniformLocation | null) { this._location = location; }\r\n\r\n public static create(program: ShaderProgram, name: string): UniformHandle {\r\n let location = null;\r\n if (undefined !== program.glProgram) {\r\n location = System.instance.context.getUniformLocation(program.glProgram, name);\r\n }\r\n if (null === location) {\r\n const errMsg = `uniform ${name} not found in ${program.description}.`;\r\n if (System.instance.options.errorOnMissingUniform) {\r\n throw new Error(errMsg);\r\n } else {\r\n Logger.logError(FrontendLoggerCategory.Render, errMsg);\r\n }\r\n }\r\n return new UniformHandle(location);\r\n }\r\n\r\n private updateData(type: DataType, data: Float32Array | Int32Array | number[]): boolean {\r\n assert(DataType.Undefined !== type && DataType.Int !== type && DataType.Float !== type && DataType.Uint !== type);\r\n\r\n let updated = this._type !== type;\r\n if (updated) {\r\n this._type = type;\r\n if (this._data.length !== data.length)\r\n this._data.length = data.length;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const datum = data[i];\r\n updated = updated || this._data[i] !== datum;\r\n this._data[i] = datum;\r\n }\r\n\r\n return updated;\r\n }\r\n\r\n private updateDatum(type: DataType, datum: number): boolean {\r\n assert(DataType.Int === type || DataType.Uint === type || DataType.Float === type);\r\n\r\n // NB: Yes, calling data.length without actually changing the length shows up as a significant performance bottleneck...\r\n if (this._data.length !== 1)\r\n this._data.length = 1;\r\n\r\n const updated = this._type !== type || this._data[0] !== datum;\r\n this._type = type;\r\n this._data[0] = datum;\r\n\r\n return updated;\r\n }\r\n\r\n public setMatrix3(mat: Matrix3) {\r\n if (this.updateData(DataType.Mat3, mat.data))\r\n System.instance.context.uniformMatrix3fv(this._location, false, mat.data);\r\n }\r\n\r\n public setMatrix4(mat: Matrix4) {\r\n if (this.updateData(DataType.Mat4, mat.data))\r\n System.instance.context.uniformMatrix4fv(this._location, false, mat.data);\r\n }\r\n\r\n public setUniform1iv(data: Int32Array | number[]) {\r\n if (this.updateData(DataType.IntArray, data))\r\n System.instance.context.uniform1iv(this._location, data);\r\n }\r\n\r\n public setUniform1fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.FloatArray, data))\r\n System.instance.context.uniform1fv(this._location, data);\r\n }\r\n\r\n public setUniform2fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec2, data))\r\n System.instance.context.uniform2fv(this._location, data);\r\n }\r\n\r\n public setUniform3fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec3, data))\r\n System.instance.context.uniform3fv(this._location, data);\r\n }\r\n\r\n public setUniform4fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec4, data))\r\n System.instance.context.uniform4fv(this._location, data);\r\n }\r\n\r\n public setUniform1i(data: number) {\r\n if (this.updateDatum(DataType.Int, data))\r\n System.instance.context.uniform1i(this._location, data);\r\n }\r\n\r\n public setUniform1f(data: number) {\r\n if (this.updateDatum(DataType.Float, data))\r\n System.instance.context.uniform1f(this._location, data);\r\n }\r\n\r\n public setUniform1ui(data: number) {\r\n if (this.updateDatum(DataType.Uint, data))\r\n (System.instance.context as WebGL2RenderingContext).uniform1ui(this._location, data);\r\n }\r\n\r\n public setUniformBitflags(data: number) {\r\n if (System.instance.capabilities.isWebGL2)\r\n this.setUniform1ui(data);\r\n else\r\n this.setUniform1f(data);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"UniformHandle.js","sourceRoot":"","sources":["../../../../src/render/webgl/UniformHandle.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, Logger } from \"@itwin/core-bentley\";\r\nimport { FrontendLoggerCategory } from \"../../FrontendLoggerCategory\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { ShaderProgram } from \"./ShaderProgram\";\r\nimport { SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\n\r\nconst enum DataType {// eslint-disable-line no-restricted-syntax\r\n Undefined, // eslint-disable-line id-blacklist\r\n Mat3,\r\n Mat4,\r\n Float,\r\n FloatArray,\r\n Vec2,\r\n Vec3,\r\n Vec4,\r\n Int,\r\n IntArray,\r\n Uint,\r\n}\r\n\r\n/** A handle to the location of a uniform within a shader program\r\n * @internal\r\n */\r\nexport class UniformHandle {\r\n private readonly _location: WebGLUniformLocation | null;\r\n private _type: DataType = DataType.Undefined;\r\n private readonly _data: number[] = [];\r\n public syncToken?: SyncToken;\r\n\r\n private constructor(location: WebGLUniformLocation | null) { this._location = location; }\r\n\r\n public static create(program: ShaderProgram, name: string): UniformHandle {\r\n let location = null;\r\n if (undefined !== program.glProgram) {\r\n location = System.instance.context.getUniformLocation(program.glProgram, name);\r\n }\r\n if (null === location) {\r\n const errMsg = `uniform ${name} not found in ${program.description}.`;\r\n if (System.instance.options.errorOnMissingUniform) {\r\n throw new Error(errMsg);\r\n } else {\r\n Logger.logError(FrontendLoggerCategory.Render, errMsg);\r\n }\r\n }\r\n return new UniformHandle(location);\r\n }\r\n\r\n private updateData(type: DataType, data: Float32Array | Int32Array | number[]): boolean {\r\n assert(DataType.Undefined !== type && DataType.Int !== type && DataType.Float !== type && DataType.Uint !== type);\r\n\r\n let updated = this._type !== type;\r\n if (updated) {\r\n this._type = type;\r\n if (this._data.length !== data.length)\r\n this._data.length = data.length;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const datum = data[i];\r\n updated = updated || this._data[i] !== datum;\r\n this._data[i] = datum;\r\n }\r\n\r\n return updated;\r\n }\r\n\r\n private updateDatum(type: DataType, datum: number): boolean {\r\n assert(DataType.Int === type || DataType.Uint === type || DataType.Float === type);\r\n\r\n // NB: Yes, calling data.length without actually changing the length shows up as a significant performance bottleneck...\r\n if (this._data.length !== 1)\r\n this._data.length = 1;\r\n\r\n const updated = this._type !== type || this._data[0] !== datum;\r\n this._type = type;\r\n this._data[0] = datum;\r\n\r\n return updated;\r\n }\r\n\r\n public setMatrix3(mat: Matrix3) {\r\n if (this.updateData(DataType.Mat3, mat.data))\r\n System.instance.context.uniformMatrix3fv(this._location, false, mat.data);\r\n }\r\n\r\n public setMatrix4(mat: Matrix4) {\r\n if (this.updateData(DataType.Mat4, mat.data))\r\n System.instance.context.uniformMatrix4fv(this._location, false, mat.data);\r\n }\r\n\r\n public setUniform1iv(data: Int32Array | number[]) {\r\n if (this.updateData(DataType.IntArray, data))\r\n System.instance.context.uniform1iv(this._location, data);\r\n }\r\n\r\n public setUniform1fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.FloatArray, data))\r\n System.instance.context.uniform1fv(this._location, data);\r\n }\r\n\r\n public setUniform2fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec2, data))\r\n System.instance.context.uniform2fv(this._location, data);\r\n }\r\n\r\n public setUniform3fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec3, data))\r\n System.instance.context.uniform3fv(this._location, data);\r\n }\r\n\r\n public setUniform4fv(data: Float32Array | number[]) {\r\n if (this.updateData(DataType.Vec4, data))\r\n System.instance.context.uniform4fv(this._location, data);\r\n }\r\n\r\n public setUniform1i(data: number) {\r\n if (this.updateDatum(DataType.Int, data))\r\n System.instance.context.uniform1i(this._location, data);\r\n }\r\n\r\n public setUniform1f(data: number) {\r\n if (this.updateDatum(DataType.Float, data))\r\n System.instance.context.uniform1f(this._location, data);\r\n }\r\n\r\n public setUniform1ui(data: number) {\r\n if (this.updateDatum(DataType.Uint, data))\r\n (System.instance.context as WebGL2RenderingContext).uniform1ui(this._location, data);\r\n }\r\n\r\n public setUniformBitflags(data: number) {\r\n if (System.instance.capabilities.isWebGL2)\r\n this.setUniform1ui(data);\r\n else\r\n this.setUniform1f(data);\r\n }\r\n}\r\n"]}
@@ -28,14 +28,14 @@ class VisibleTileFeatures {
28
28
  }
29
29
  exports.VisibleTileFeatures = VisibleTileFeatures;
30
30
  const clippedPasses = [
31
- 14 /* BackgroundMap */,
31
+ 15 /* BackgroundMap */,
32
32
  1 /* OpaqueLayers */,
33
33
  2 /* OpaqueLinear */,
34
34
  3 /* OpaquePlanar */,
35
- 4 /* OpaqueGeneral */,
36
- 6 /* TranslucentLayers */,
37
- 7 /* Translucent */,
38
- 10 /* OverlayLayers */,
35
+ 5 /* OpaqueGeneral */,
36
+ 7 /* TranslucentLayers */,
37
+ 8 /* Translucent */,
38
+ 11 /* OverlayLayers */,
39
39
  ];
40
40
  function isFeatureVisible(feature, target, modelIdParts, includeNonLocatable) {
41
41
  const ovrs = target.currentFeatureSymbologyOverrides;
@@ -0,0 +1,14 @@
1
+ /** @packageDocumentation
2
+ * @module WebGL
3
+ */
4
+ import { WebGLContext } from "@itwin/webgl-compatibility";
5
+ import { ShaderProgram } from "../ShaderProgram";
6
+ /** @internal */
7
+ export declare function createEDLCalcBasicProgram(context: WebGLContext): ShaderProgram;
8
+ /** @internal */
9
+ export declare function createEDLCalcFullProgram(context: WebGLContext): ShaderProgram;
10
+ /** @internal */
11
+ export declare function createEDLFilterProgram(context: WebGLContext): ShaderProgram;
12
+ /** @internal */
13
+ export declare function createEDLMixProgram(context: WebGLContext): ShaderProgram;
14
+ //# sourceMappingURL=EDL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EDL.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/EDL.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqCjD,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAuC9E;AAmCD,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAuC7E;AAwCD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAgC3E;AAcD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAuCxE"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module WebGL
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createEDLMixProgram = exports.createEDLFilterProgram = exports.createEDLCalcFullProgram = exports.createEDLCalcBasicProgram = void 0;
11
+ const RenderFlags_1 = require("../RenderFlags");
12
+ const Texture_1 = require("../Texture");
13
+ const Fragment_1 = require("./Fragment");
14
+ const ViewportQuad_1 = require("./ViewportQuad");
15
+ // This shader calculates a more basic version of EDL, and only for the original size, so single pass
16
+ const calcBasicEDL = `
17
+ float strength = u_pointCloudEDL1.x;
18
+ float scaleFactor = u_pointCloudEDL1.z;
19
+ float pixRadius = u_pointCloudEDL1.y;
20
+ vec2 invTexSize = u_texInfo.xy;
21
+ float is3d = u_pointCloudEDL1.w;
22
+
23
+ vec4 color = TEXTURE(u_colorTexture, v_texCoord);
24
+ if (color.a == 0.0)
25
+ discard;
26
+ else {
27
+ const vec2 neighbors[8] = vec2[8] ( //neighbor relative position
28
+ vec2( 1.0, 0.0), vec2( 0.70710678, 0.70710678), vec2(0.0, 1.0), vec2(-0.70710678, 0.70710678),
29
+ vec2(-1.0, 0.0), vec2(-0.70710678, -0.70710678), vec2(0.0, -1.0), vec2( 0.70710678, -0.70710678));
30
+ float depth = TEXTURE(u_depthTexture, v_texCoord).r;
31
+ float sum = 0.0;
32
+ vec2 posScale = pixRadius * invTexSize;
33
+ // contribution of each neighbor
34
+ // NOTE: this is currently using neighbor depths regardless of if they were written by point cloud
35
+ for (int c = 0; c < 8; c++) {
36
+ vec2 nRelPos = posScale * neighbors[c];
37
+ vec2 nPos = v_texCoord + nRelPos;
38
+ float zN = TEXTURE(u_depthTexture, nPos).r; // neighbor depth
39
+ sum += max(0.0, (is3d > 0.5) ? depth - zN : log (depth/zN));
40
+ }
41
+ float f = sum / 8.0;
42
+ f = exp(-f * 33.5 * strength * scaleFactor); // 33.5 factor to aim for a typical (unfactored) strength of 5
43
+ return vec4(f * color.rgb, 1.0);
44
+ }
45
+ `;
46
+ /** @internal */
47
+ function createEDLCalcBasicProgram(context) {
48
+ const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
49
+ const frag = builder.frag;
50
+ frag.set(1 /* ComputeBaseColor */, calcBasicEDL);
51
+ frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
52
+ frag.addUniform("u_texInfo", 4 /* Vec3 */, (prog) => {
53
+ prog.addGraphicUniform("u_texInfo", (uniform, params) => {
54
+ const geom = params.geometry;
55
+ uniform.setUniform3fv(geom.texInfo);
56
+ });
57
+ });
58
+ frag.addUniform("u_colorTexture", 8 /* Sampler2D */, (prog) => {
59
+ prog.addGraphicUniform("u_colorTexture", (uniform, params) => {
60
+ const geom = params.geometry;
61
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture, RenderFlags_1.TextureUnit.Zero);
62
+ });
63
+ });
64
+ frag.addUniform("u_depthTexture", 8 /* Sampler2D */, (prog) => {
65
+ prog.addGraphicUniform("u_depthTexture", (uniform, params) => {
66
+ const geom = params.geometry;
67
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.depthTexture, RenderFlags_1.TextureUnit.One);
68
+ });
69
+ });
70
+ // Uniforms based on the PointCloudDisplaySettings.
71
+ frag.addUniform("u_pointCloudEDL1", 5 /* Vec4 */, (prog) => {
72
+ prog.addGraphicUniform("u_pointCloudEDL1", (uniform, params) => {
73
+ params.target.uniforms.realityModel.pointCloud.bindEDL1(uniform);
74
+ });
75
+ });
76
+ builder.vert.headerComment = "//!V! EDLCalcBasic";
77
+ builder.frag.headerComment = "//!F! EDLCalcBasic";
78
+ return builder.buildProgram(context);
79
+ }
80
+ exports.createEDLCalcBasicProgram = createEDLCalcBasicProgram;
81
+ // This shader calculates the full version of EDL, and can be run at full, 1/2 and 1/4 scale
82
+ const calcFullEDL = `
83
+ float strength = u_pointCloudEDL1.x;
84
+ float scaleFactor = u_pointCloudEDL1.z;
85
+ float pixRadius = u_pointCloudEDL1.y;
86
+ float scale = u_texInfo.z; // 1, 2, 4
87
+ vec2 invTexSize = u_texInfo.xy;
88
+ float is3d = u_pointCloudEDL1.w;
89
+
90
+ vec4 color = TEXTURE(u_colorTexture, v_texCoord);
91
+ if (color.a == 0.0)
92
+ return color;
93
+ else {
94
+ const vec2 neighbors[8] = vec2[8] ( //neighbor relative position
95
+ vec2( 1.0, 0.0), vec2( 0.70710678, 0.70710678), vec2(0.0, 1.0), vec2(-0.70710678, 0.70710678),
96
+ vec2(-1.0, 0.0), vec2(-0.70710678, -0.70710678), vec2(0.0, -1.0), vec2( 0.70710678, -0.70710678));
97
+ float depth = TEXTURE(u_depthTexture, v_texCoord).r;
98
+ float sum = 0.0;
99
+ vec2 posScale = pixRadius * invTexSize;
100
+ // contribution of each neighbor
101
+ // NOTE: this is currently using neighbor depths regardless of if they were written by point cloud
102
+ for (int c = 0; c < 8; c++) {
103
+ vec2 nRelPos = posScale * neighbors[c];
104
+ vec2 nPos = v_texCoord + nRelPos;
105
+ float zN = TEXTURE(u_depthTexture, nPos).r; // neighbor depth
106
+ sum += max(0.0, (is3d > 0.5) ? depth - zN : log (depth/zN)) / scale;
107
+ }
108
+ float f = sum / 8.0;
109
+ f = exp(-f * 33.5 * strength * scaleFactor); // 33.5 factor to aim for a typical (unfactored) strength of 5
110
+ return vec4(f * color.rgb, 1.0);
111
+ }
112
+ `;
113
+ /** @internal */
114
+ function createEDLCalcFullProgram(context) {
115
+ const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
116
+ const frag = builder.frag;
117
+ frag.set(1 /* ComputeBaseColor */, calcFullEDL);
118
+ frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
119
+ frag.addUniform("u_texInfo", 4 /* Vec3 */, (prog) => {
120
+ prog.addGraphicUniform("u_texInfo", (uniform, params) => {
121
+ const geom = params.geometry;
122
+ uniform.setUniform3fv(geom.texInfo);
123
+ });
124
+ });
125
+ frag.addUniform("u_colorTexture", 8 /* Sampler2D */, (prog) => {
126
+ prog.addGraphicUniform("u_colorTexture", (uniform, params) => {
127
+ const geom = params.geometry;
128
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture, RenderFlags_1.TextureUnit.Zero);
129
+ });
130
+ });
131
+ frag.addUniform("u_depthTexture", 8 /* Sampler2D */, (prog) => {
132
+ prog.addGraphicUniform("u_depthTexture", (uniform, params) => {
133
+ const geom = params.geometry;
134
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.depthTexture, RenderFlags_1.TextureUnit.One);
135
+ });
136
+ });
137
+ // Uniforms based on the PointCloudDisplaySettings.
138
+ frag.addUniform("u_pointCloudEDL1", 5 /* Vec4 */, (prog) => {
139
+ prog.addGraphicUniform("u_pointCloudEDL1", (uniform, params) => {
140
+ params.target.uniforms.realityModel.pointCloud.bindEDL1(uniform);
141
+ });
142
+ });
143
+ builder.vert.headerComment = "//!V! EDLCalcFull";
144
+ builder.frag.headerComment = "//!F! EDLCalcFull";
145
+ return builder.buildProgram(context);
146
+ }
147
+ exports.createEDLCalcFullProgram = createEDLCalcFullProgram;
148
+ // This shader filters the EDL image, and can be run at 1/2 and 1/4 scale
149
+ const filterEDL = `
150
+ // NB: this bilateral filter hardcodes spatialSigma to 2.0 and depthSigma to 0.4, with halfSize = 2
151
+ float distCoefs[] = float[] (
152
+ 1.0, 0.9692332344763441, 0.8824969025845955, 0.9692332344763441, 0.9394130628134758,
153
+ 0.8553453273074225, 0.8824969025845955, 0.8553453273074225, 0.8553453273074225, 0.7788007830714049);
154
+ const float depthSigma = 0.4;
155
+ vec2 invTexSize = u_texInfo.xy;
156
+
157
+ float depth = TEXTURE(u_depthTexture, v_texCoord).r;
158
+ float wsum = 0.0; // sum of all weights
159
+ vec3 csum = vec3(0.0); // sum of all contributions
160
+ vec2 coordi = vec2(0.0, 0.0); // ith neighbor position x,y
161
+
162
+ for (int c = -2; c <= 2; c++) {
163
+ coordi.x = float(c) * invTexSize.x;
164
+ int cabs = (c < 0) ? -c : c;
165
+
166
+ for (int d = -2; d <= 2; d++) {
167
+ coordi.y = float(d) * invTexSize.y;
168
+ vec4 ci = TEXTURE(u_colorTexture, v_texCoord + coordi); // neighbor color
169
+
170
+ //pixel distance based damping
171
+ int dabs = (d < 0) ? -d : d;
172
+ float fi = distCoefs[cabs * 3 + dabs];
173
+
174
+ //pixel depth difference based damping
175
+ float zi = TEXTURE(u_depthTexture, v_texCoord + coordi).r; // neighbor depth
176
+ float dz = (depth - zi) / depthSigma;
177
+ fi *= exp(-dz * dz / 2.0);
178
+
179
+ csum += ci.rgb * fi;
180
+ wsum += fi;
181
+ }
182
+ }
183
+ return vec4(csum / wsum, 1.0);
184
+ `;
185
+ /** @internal */
186
+ function createEDLFilterProgram(context) {
187
+ const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
188
+ const frag = builder.frag;
189
+ frag.set(1 /* ComputeBaseColor */, filterEDL);
190
+ frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
191
+ frag.addUniform("u_texInfo", 4 /* Vec3 */, (prog) => {
192
+ prog.addGraphicUniform("u_texInfo", (uniform, params) => {
193
+ const geom = params.geometry;
194
+ uniform.setUniform3fv(geom.texInfo);
195
+ });
196
+ });
197
+ frag.addUniform("u_colorTexture", 8 /* Sampler2D */, (prog) => {
198
+ prog.addGraphicUniform("u_colorTexture", (uniform, params) => {
199
+ const geom = params.geometry;
200
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture, RenderFlags_1.TextureUnit.Zero);
201
+ });
202
+ });
203
+ frag.addUniform("u_depthTexture", 8 /* Sampler2D */, (prog) => {
204
+ prog.addGraphicUniform("u_depthTexture", (uniform, params) => {
205
+ const geom = params.geometry;
206
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.depthTexture, RenderFlags_1.TextureUnit.One);
207
+ });
208
+ });
209
+ builder.vert.headerComment = "//!V! EDLFilter";
210
+ builder.frag.headerComment = "//!F! EDLFilter";
211
+ return builder.buildProgram(context);
212
+ }
213
+ exports.createEDLFilterProgram = createEDLFilterProgram;
214
+ // This shader mixes the 3 EDL images into the final image
215
+ const mixEDL = `
216
+ vec4 col1 = TEXTURE(u_colorTexture1, v_texCoord);
217
+ if (col1.a == 0.0)
218
+ discard;
219
+ else {
220
+ vec3 col2 = TEXTURE(u_colorTexture2, v_texCoord).rgb;
221
+ vec3 col4 = TEXTURE(u_colorTexture4, v_texCoord).rgb;
222
+ return vec4 ((u_weights.x * col1.rgb + u_weights.y * col2 + u_weights.z * col4) / (u_weights.x + u_weights.y + u_weights.z), 1.0);
223
+ }
224
+ `;
225
+ /** @internal */
226
+ function createEDLMixProgram(context) {
227
+ const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
228
+ const frag = builder.frag;
229
+ frag.set(1 /* ComputeBaseColor */, mixEDL);
230
+ frag.set(16 /* AssignFragData */, Fragment_1.assignFragColor);
231
+ frag.addUniform("u_colorTexture1", 8 /* Sampler2D */, (prog) => {
232
+ prog.addGraphicUniform("u_colorTexture1", (uniform, params) => {
233
+ const geom = params.geometry;
234
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture1, RenderFlags_1.TextureUnit.Zero);
235
+ });
236
+ });
237
+ frag.addUniform("u_colorTexture2", 8 /* Sampler2D */, (prog) => {
238
+ prog.addGraphicUniform("u_colorTexture2", (uniform, params) => {
239
+ const geom = params.geometry;
240
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture2, RenderFlags_1.TextureUnit.One);
241
+ });
242
+ });
243
+ frag.addUniform("u_colorTexture4", 8 /* Sampler2D */, (prog) => {
244
+ prog.addGraphicUniform("u_colorTexture4", (uniform, params) => {
245
+ const geom = params.geometry;
246
+ Texture_1.Texture2DHandle.bindSampler(uniform, geom.colorTexture4, RenderFlags_1.TextureUnit.Two);
247
+ });
248
+ });
249
+ // Uniforms based on the PointCloudDisplaySettings.
250
+ frag.addUniform("u_weights", 5 /* Vec4 */, (prog) => {
251
+ prog.addGraphicUniform("u_weights", (uniform, params) => {
252
+ params.target.uniforms.realityModel.pointCloud.bindEDL2(uniform);
253
+ });
254
+ });
255
+ builder.vert.headerComment = "//!V! EDLMix";
256
+ builder.frag.headerComment = "//!F! EDLMix";
257
+ return builder.buildProgram(context);
258
+ }
259
+ exports.createEDLMixProgram = createEDLMixProgram;
260
+ //# sourceMappingURL=EDL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EDL.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/EDL.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 { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { EDLCalcBasicGeometry, EDLCalcFullGeometry, EDLFilterGeometry, EDLMixGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// This shader calculates a more basic version of EDL, and only for the original size, so single pass\r\nconst calcBasicEDL = `\r\n float strength = u_pointCloudEDL1.x;\r\n float scaleFactor = u_pointCloudEDL1.z;\r\n float pixRadius = u_pointCloudEDL1.y;\r\n vec2 invTexSize = u_texInfo.xy;\r\n float is3d = u_pointCloudEDL1.w;\r\n\r\n vec4 color = TEXTURE(u_colorTexture, v_texCoord);\r\n if (color.a == 0.0)\r\n discard;\r\n else {\r\n const vec2 neighbors[8] = vec2[8] ( //neighbor relative position\r\n vec2( 1.0, 0.0), vec2( 0.70710678, 0.70710678), vec2(0.0, 1.0), vec2(-0.70710678, 0.70710678),\r\n vec2(-1.0, 0.0), vec2(-0.70710678, -0.70710678), vec2(0.0, -1.0), vec2( 0.70710678, -0.70710678));\r\n float depth = TEXTURE(u_depthTexture, v_texCoord).r;\r\n float sum = 0.0;\r\n vec2 posScale = pixRadius * invTexSize;\r\n // contribution of each neighbor\r\n // NOTE: this is currently using neighbor depths regardless of if they were written by point cloud\r\n for (int c = 0; c < 8; c++) {\r\n vec2 nRelPos = posScale * neighbors[c];\r\n vec2 nPos = v_texCoord + nRelPos;\r\n float zN = TEXTURE(u_depthTexture, nPos).r; // neighbor depth\r\n sum += max(0.0, (is3d > 0.5) ? depth - zN : log (depth/zN));\r\n }\r\n float f = sum / 8.0;\r\n f = exp(-f * 33.5 * strength * scaleFactor); // 33.5 factor to aim for a typical (unfactored) strength of 5\r\n return vec4(f * color.rgb, 1.0);\r\n }\r\n`;\r\n\r\n/** @internal */\r\nexport function createEDLCalcBasicProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, calcBasicEDL);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_texInfo\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_texInfo\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcBasicGeometry;\r\n uniform.setUniform3fv(geom.texInfo);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_colorTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcBasicGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcBasicGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthTexture, TextureUnit.One);\r\n });\r\n });\r\n\r\n // Uniforms based on the PointCloudDisplaySettings.\r\n frag.addUniform(\"u_pointCloudEDL1\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pointCloudEDL1\", (uniform, params) => {\r\n params.target.uniforms.realityModel.pointCloud.bindEDL1(uniform);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! EDLCalcBasic\";\r\n builder.frag.headerComment = \"//!F! EDLCalcBasic\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n// This shader calculates the full version of EDL, and can be run at full, 1/2 and 1/4 scale\r\nconst calcFullEDL = `\r\n float strength = u_pointCloudEDL1.x;\r\n float scaleFactor = u_pointCloudEDL1.z;\r\n float pixRadius = u_pointCloudEDL1.y;\r\n float scale = u_texInfo.z; // 1, 2, 4\r\n vec2 invTexSize = u_texInfo.xy;\r\n float is3d = u_pointCloudEDL1.w;\r\n\r\n vec4 color = TEXTURE(u_colorTexture, v_texCoord);\r\n if (color.a == 0.0)\r\n return color;\r\n else {\r\n const vec2 neighbors[8] = vec2[8] ( //neighbor relative position\r\n vec2( 1.0, 0.0), vec2( 0.70710678, 0.70710678), vec2(0.0, 1.0), vec2(-0.70710678, 0.70710678),\r\n vec2(-1.0, 0.0), vec2(-0.70710678, -0.70710678), vec2(0.0, -1.0), vec2( 0.70710678, -0.70710678));\r\n float depth = TEXTURE(u_depthTexture, v_texCoord).r;\r\n float sum = 0.0;\r\n vec2 posScale = pixRadius * invTexSize;\r\n // contribution of each neighbor\r\n // NOTE: this is currently using neighbor depths regardless of if they were written by point cloud\r\n for (int c = 0; c < 8; c++) {\r\n vec2 nRelPos = posScale * neighbors[c];\r\n vec2 nPos = v_texCoord + nRelPos;\r\n float zN = TEXTURE(u_depthTexture, nPos).r; // neighbor depth\r\n sum += max(0.0, (is3d > 0.5) ? depth - zN : log (depth/zN)) / scale;\r\n }\r\n float f = sum / 8.0;\r\n f = exp(-f * 33.5 * strength * scaleFactor); // 33.5 factor to aim for a typical (unfactored) strength of 5\r\n return vec4(f * color.rgb, 1.0);\r\n }\r\n`;\r\n\r\n/** @internal */\r\nexport function createEDLCalcFullProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, calcFullEDL);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_texInfo\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_texInfo\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcFullGeometry;\r\n uniform.setUniform3fv(geom.texInfo);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_colorTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcFullGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLCalcFullGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthTexture, TextureUnit.One);\r\n });\r\n });\r\n\r\n // Uniforms based on the PointCloudDisplaySettings.\r\n frag.addUniform(\"u_pointCloudEDL1\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pointCloudEDL1\", (uniform, params) => {\r\n params.target.uniforms.realityModel.pointCloud.bindEDL1(uniform);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! EDLCalcFull\";\r\n builder.frag.headerComment = \"//!F! EDLCalcFull\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n// This shader filters the EDL image, and can be run at 1/2 and 1/4 scale\r\nconst filterEDL = `\r\n // NB: this bilateral filter hardcodes spatialSigma to 2.0 and depthSigma to 0.4, with halfSize = 2\r\n float distCoefs[] = float[] (\r\n 1.0, 0.9692332344763441, 0.8824969025845955, 0.9692332344763441, 0.9394130628134758,\r\n 0.8553453273074225, 0.8824969025845955, 0.8553453273074225, 0.8553453273074225, 0.7788007830714049);\r\n const float depthSigma = 0.4;\r\n vec2 invTexSize = u_texInfo.xy;\r\n\r\n float depth = TEXTURE(u_depthTexture, v_texCoord).r;\r\n float wsum = 0.0; // sum of all weights\r\n vec3 csum = vec3(0.0); // sum of all contributions\r\n vec2 coordi = vec2(0.0, 0.0); // ith neighbor position x,y\r\n\r\n for (int c = -2; c <= 2; c++) {\r\n coordi.x = float(c) * invTexSize.x;\r\n int cabs = (c < 0) ? -c : c;\r\n\r\n for (int d = -2; d <= 2; d++) {\r\n coordi.y = float(d) * invTexSize.y;\r\n vec4 ci = TEXTURE(u_colorTexture, v_texCoord + coordi); // neighbor color\r\n\r\n //pixel distance based damping\r\n int dabs = (d < 0) ? -d : d;\r\n float fi = distCoefs[cabs * 3 + dabs];\r\n\r\n //pixel depth difference based damping\r\n float zi = TEXTURE(u_depthTexture, v_texCoord + coordi).r; // neighbor depth\r\n float dz = (depth - zi) / depthSigma;\r\n fi *= exp(-dz * dz / 2.0);\r\n\r\n csum += ci.rgb * fi;\r\n wsum += fi;\r\n }\r\n }\r\n return vec4(csum / wsum, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createEDLFilterProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, filterEDL);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_texInfo\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_texInfo\", (uniform, params) => {\r\n const geom = params.geometry as EDLFilterGeometry;\r\n uniform.setUniform3fv(geom.texInfo);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_colorTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLFilterGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\r\n const geom = params.geometry as EDLFilterGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthTexture, TextureUnit.One);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! EDLFilter\";\r\n builder.frag.headerComment = \"//!F! EDLFilter\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n// This shader mixes the 3 EDL images into the final image\r\nconst mixEDL = `\r\n vec4 col1 = TEXTURE(u_colorTexture1, v_texCoord);\r\n if (col1.a == 0.0)\r\n discard;\r\n else {\r\n vec3 col2 = TEXTURE(u_colorTexture2, v_texCoord).rgb;\r\n vec3 col4 = TEXTURE(u_colorTexture4, v_texCoord).rgb;\r\n return vec4 ((u_weights.x * col1.rgb + u_weights.y * col2 + u_weights.z * col4) / (u_weights.x + u_weights.y + u_weights.z), 1.0);\r\n }\r\n`;\r\n\r\n/** @internal */\r\nexport function createEDLMixProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, mixEDL);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_colorTexture1\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture1\", (uniform, params) => {\r\n const geom = params.geometry as EDLMixGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture1, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_colorTexture2\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture2\", (uniform, params) => {\r\n const geom = params.geometry as EDLMixGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture2, TextureUnit.One);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_colorTexture4\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_colorTexture4\", (uniform, params) => {\r\n const geom = params.geometry as EDLMixGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.colorTexture4, TextureUnit.Two);\r\n });\r\n });\r\n\r\n // Uniforms based on the PointCloudDisplaySettings.\r\n frag.addUniform(\"u_weights\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_weights\", (uniform, params) => {\r\n params.target.uniforms.realityModel.pointCloud.bindEDL2(uniform);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! EDLMix\";\r\n builder.frag.headerComment = \"//!F! EDLMix\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
@@ -14,14 +14,14 @@ const renderPasses = [
14
14
  [1 /* OpaqueLayers */, "Layers"],
15
15
  [2 /* OpaqueLinear */, "OpaqueLinear"],
16
16
  [3 /* OpaquePlanar */, "OpaquePlanar"],
17
- [4 /* OpaqueGeneral */, "OpaqueGeneral"],
18
- [5 /* Classification */, "Classification"],
19
- [7 /* Translucent */, "Translucent"],
20
- [8 /* HiddenEdge */, "HiddenEdge"],
21
- [9 /* Hilite */, "Hilite"],
22
- [11 /* WorldOverlay */, "WorldOverlay"],
23
- [12 /* ViewOverlay */, "ViewOverlay"],
24
- [18 /* PlanarClassification */, "PlanarClassification"],
17
+ [5 /* OpaqueGeneral */, "OpaqueGeneral"],
18
+ [6 /* Classification */, "Classification"],
19
+ [8 /* Translucent */, "Translucent"],
20
+ [9 /* HiddenEdge */, "HiddenEdge"],
21
+ [10 /* Hilite */, "Hilite"],
22
+ [12 /* WorldOverlay */, "WorldOverlay"],
23
+ [13 /* ViewOverlay */, "ViewOverlay"],
24
+ [19 /* PlanarClassification */, "PlanarClassification"],
25
25
  ];
26
26
  /**
27
27
  * Adds a uniform holding the current render pass and a set of kRenderPass_* constants
@@ -33,11 +33,11 @@ function addRenderPass(builder) {
33
33
  prog.addProgramUniform("u_renderPass", (uniform, params) => {
34
34
  let renderPass = params.renderPass;
35
35
  switch (renderPass) {
36
- case 8 /* HiddenEdge */:
37
- renderPass = 4 /* OpaqueGeneral */; // no distinction from shader POV...
36
+ case 9 /* HiddenEdge */:
37
+ renderPass = 5 /* OpaqueGeneral */; // no distinction from shader POV...
38
38
  break;
39
- case 10 /* OverlayLayers */:
40
- case 6 /* TranslucentLayers */:
39
+ case 11 /* OverlayLayers */:
40
+ case 7 /* TranslucentLayers */:
41
41
  renderPass = 1 /* OpaqueLayers */; // no distinction from shader POV...
42
42
  break;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderPass.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RenderPass.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,8CAA8C;AAC9C,MAAM,YAAY,GAAG;IACnB,qBAAwB,YAAY,CAAC;IACrC,uBAA0B,QAAQ,CAAC;IACnC,uBAA0B,cAAc,CAAC;IACzC,uBAA0B,cAAc,CAAC;IACzC,wBAA2B,eAAe,CAAC;IAC3C,yBAA4B,gBAAgB,CAAC;IAC7C,sBAAyB,aAAa,CAAC;IACvC,qBAAwB,YAAY,CAAC;IACrC,iBAAoB,QAAQ,CAAC;IAC7B,wBAA0B,cAAc,CAAC;IACzC,uBAAyB,aAAa,CAAC;IACvC,gCAAkC,sBAAsB,CAAC;CAC1D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAsB;IAClD,OAAO,CAAC,UAAU,CAAC,cAAc,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAC9D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,UAAU,EAAE;gBAClB;oBACE,UAAU,wBAA2B,CAAC,CAAC,oCAAoC;oBAC3E,MAAM;gBACR,4BAA8B;gBAC9B;oBACE,UAAU,uBAA0B,CAAC,CAAC,oCAAoC;oBAC1E,MAAM;aACT;YAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,UAAU,IAAI,YAAY;QACnC,OAAO,CAAC,SAAS,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,iBAAsB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjH,CAAC;AApBD,sCAoBC","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 { RenderPass } from \"../RenderFlags\";\r\nimport { ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\n\r\n// render passes actually used in shader code.\r\nconst renderPasses = [\r\n [RenderPass.Background, \"Background\"],\r\n [RenderPass.OpaqueLayers, \"Layers\"], // Shaders treat all layer passes the same\r\n [RenderPass.OpaqueLinear, \"OpaqueLinear\"],\r\n [RenderPass.OpaquePlanar, \"OpaquePlanar\"],\r\n [RenderPass.OpaqueGeneral, \"OpaqueGeneral\"],\r\n [RenderPass.Classification, \"Classification\"],\r\n [RenderPass.Translucent, \"Translucent\"],\r\n [RenderPass.HiddenEdge, \"HiddenEdge\"],\r\n [RenderPass.Hilite, \"Hilite\"],\r\n [RenderPass.WorldOverlay, \"WorldOverlay\"],\r\n [RenderPass.ViewOverlay, \"ViewOverlay\"],\r\n [RenderPass.PlanarClassification, \"PlanarClassification\"],\r\n];\r\n\r\n/**\r\n * Adds a uniform holding the current render pass and a set of kRenderPass_* constants\r\n * uniform float u_renderPass\r\n * @internal\r\n */\r\nexport function addRenderPass(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderPass\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_renderPass\", (uniform, params) => {\r\n let renderPass = params.renderPass;\r\n switch (renderPass) {\r\n case RenderPass.HiddenEdge:\r\n renderPass = RenderPass.OpaqueGeneral; // no distinction from shader POV...\r\n break;\r\n case RenderPass.OverlayLayers:\r\n case RenderPass.TranslucentLayers:\r\n renderPass = RenderPass.OpaqueLayers; // no distinction from shader POV...\r\n break;\r\n }\r\n\r\n uniform.setUniform1f(renderPass);\r\n });\r\n });\r\n\r\n for (const renderPass of renderPasses)\r\n builder.addGlobal(`kRenderPass_${renderPass[1]}`, VariableType.Float, `${renderPass[0].toString()}.0`, true);\r\n}\r\n"]}
1
+ {"version":3,"file":"RenderPass.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RenderPass.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,8CAA8C;AAC9C,MAAM,YAAY,GAAG;IACnB,qBAAwB,YAAY,CAAC;IACrC,uBAA0B,QAAQ,CAAC;IACnC,uBAA0B,cAAc,CAAC;IACzC,uBAA0B,cAAc,CAAC;IACzC,wBAA2B,eAAe,CAAC;IAC3C,yBAA4B,gBAAgB,CAAC;IAC7C,sBAAyB,aAAa,CAAC;IACvC,qBAAwB,YAAY,CAAC;IACrC,kBAAoB,QAAQ,CAAC;IAC7B,wBAA0B,cAAc,CAAC;IACzC,uBAAyB,aAAa,CAAC;IACvC,gCAAkC,sBAAsB,CAAC;CAC1D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAsB;IAClD,OAAO,CAAC,UAAU,CAAC,cAAc,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAC9D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,UAAU,EAAE;gBAClB;oBACE,UAAU,wBAA2B,CAAC,CAAC,oCAAoC;oBAC3E,MAAM;gBACR,4BAA8B;gBAC9B;oBACE,UAAU,uBAA0B,CAAC,CAAC,oCAAoC;oBAC1E,MAAM;aACT;YAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,UAAU,IAAI,YAAY;QACnC,OAAO,CAAC,SAAS,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,iBAAsB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjH,CAAC;AApBD,sCAoBC","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 { RenderPass } from \"../RenderFlags\";\r\nimport { ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\n\r\n// render passes actually used in shader code.\r\nconst renderPasses = [\r\n [RenderPass.Background, \"Background\"],\r\n [RenderPass.OpaqueLayers, \"Layers\"], // Shaders treat all layer passes the same\r\n [RenderPass.OpaqueLinear, \"OpaqueLinear\"],\r\n [RenderPass.OpaquePlanar, \"OpaquePlanar\"],\r\n [RenderPass.OpaqueGeneral, \"OpaqueGeneral\"],\r\n [RenderPass.Classification, \"Classification\"],\r\n [RenderPass.Translucent, \"Translucent\"],\r\n [RenderPass.HiddenEdge, \"HiddenEdge\"],\r\n [RenderPass.Hilite, \"Hilite\"],\r\n [RenderPass.WorldOverlay, \"WorldOverlay\"],\r\n [RenderPass.ViewOverlay, \"ViewOverlay\"],\r\n [RenderPass.PlanarClassification, \"PlanarClassification\"],\r\n];\r\n\r\n/**\r\n * Adds a uniform holding the current render pass and a set of kRenderPass_* constants\r\n * uniform float u_renderPass\r\n * @internal\r\n */\r\nexport function addRenderPass(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderPass\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_renderPass\", (uniform, params) => {\r\n let renderPass = params.renderPass;\r\n switch (renderPass) {\r\n case RenderPass.HiddenEdge:\r\n renderPass = RenderPass.OpaqueGeneral; // no distinction from shader POV...\r\n break;\r\n case RenderPass.OverlayLayers:\r\n case RenderPass.TranslucentLayers:\r\n renderPass = RenderPass.OpaqueLayers; // no distinction from shader POV...\r\n break;\r\n }\r\n\r\n uniform.setUniform1f(renderPass);\r\n });\r\n });\r\n\r\n for (const renderPass of renderPasses)\r\n builder.addGlobal(`kRenderPass_${renderPass[1]}`, VariableType.Float, `${renderPass[0].toString()}.0`, true);\r\n}\r\n"]}
@@ -28,7 +28,7 @@ class BatchedTileIdMap {
28
28
  const key = JSON.stringify(properties);
29
29
  let entry = this._featureMap.get(key);
30
30
  if (undefined === entry) {
31
- const id = this._iModel.transientIds.next;
31
+ const id = this._iModel.transientIds.getNext();
32
32
  entry = { id, properties };
33
33
  this._featureMap.set(key, entry);
34
34
  this._idMap.set(id, properties);
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAGzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;YAC1C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,uGAAuG;IAChG,kBAAkB,CAAC,EAAc;QACtC,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;CACF;AAjCD,4CAiCC","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 Tiles\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\n\r\n/**\r\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\r\n * these properties may be present in batched tile sets.\r\n * @internal\r\n */\r\nexport class BatchedTileIdMap {\r\n private readonly _iModel: IModelConnection;\r\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\r\n private _idMap?: Map<Id64String, any>;\r\n\r\n public constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n }\r\n\r\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\r\n public getBatchId(properties: any): Id64String {\r\n if (undefined === this._featureMap || undefined === this._idMap) {\r\n assert(undefined === this._featureMap && undefined === this._idMap);\r\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\r\n this._idMap = new Map<Id64String, any>();\r\n }\r\n\r\n const key = JSON.stringify(properties);\r\n let entry = this._featureMap.get(key);\r\n if (undefined === entry) {\r\n const id = this._iModel.transientIds.next;\r\n entry = { id, properties };\r\n this._featureMap.set(key, entry);\r\n this._idMap.set(id, properties);\r\n }\r\n\r\n return entry.id;\r\n }\r\n\r\n /** Obtain the JSON properties associated with the specified Id64String, or undefined if none exist. */\r\n public getBatchProperties(id: Id64String): any {\r\n return undefined !== this._idMap ? this._idMap.get(id) : undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAGzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,uGAAuG;IAChG,kBAAkB,CAAC,EAAc;QACtC,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;CACF;AAjCD,4CAiCC","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 Tiles\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\n\r\n/**\r\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\r\n * these properties may be present in batched tile sets.\r\n * @internal\r\n */\r\nexport class BatchedTileIdMap {\r\n private readonly _iModel: IModelConnection;\r\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\r\n private _idMap?: Map<Id64String, any>;\r\n\r\n public constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n }\r\n\r\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\r\n public getBatchId(properties: any): Id64String {\r\n if (undefined === this._featureMap || undefined === this._idMap) {\r\n assert(undefined === this._featureMap && undefined === this._idMap);\r\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\r\n this._idMap = new Map<Id64String, any>();\r\n }\r\n\r\n const key = JSON.stringify(properties);\r\n let entry = this._featureMap.get(key);\r\n if (undefined === entry) {\r\n const id = this._iModel.transientIds.getNext();\r\n entry = { id, properties };\r\n this._featureMap.set(key, entry);\r\n this._idMap.set(id, properties);\r\n }\r\n\r\n return entry.id;\r\n }\r\n\r\n /** Obtain the JSON properties associated with the specified Id64String, or undefined if none exist. */\r\n public getBatchProperties(id: Id64String): any {\r\n return undefined !== this._idMap ? this._idMap.get(id) : undefined;\r\n }\r\n}\r\n"]}
@@ -289,7 +289,7 @@ class GraphicsTile extends internal_1.Tile {
289
289
  (0, core_bentley_1.assert)(data instanceof Uint8Array);
290
290
  const stream = core_bentley_1.ByteStream.fromUint8Array(data);
291
291
  const position = stream.curPos;
292
- const format = stream.nextUint32;
292
+ const format = stream.readUint32();
293
293
  stream.curPos = position;
294
294
  // ###TODO: IModelGraphics format wraps IModel format.
295
295
  (0, core_bentley_1.assert)(core_common_1.TileFormat.IModel === format);