@itwin/core-frontend 3.5.0-dev.8 → 3.5.1

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 (640) hide show
  1. package/CHANGELOG.md +103 -1
  2. package/lib/cjs/AccuSnap.d.ts +7 -1
  3. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  4. package/lib/cjs/AccuSnap.js +26 -3
  5. package/lib/cjs/AccuSnap.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.d.ts +28 -1
  7. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js +29 -8
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js +9 -9
  11. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  12. package/lib/cjs/GraphicalEditingScope.js +2 -2
  13. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  14. package/lib/cjs/IModelApp.d.ts +6 -0
  15. package/lib/cjs/IModelApp.d.ts.map +1 -1
  16. package/lib/cjs/IModelApp.js +6 -0
  17. package/lib/cjs/IModelApp.js.map +1 -1
  18. package/lib/cjs/IModelConnection.d.ts +32 -2
  19. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  20. package/lib/cjs/IModelConnection.js +44 -6
  21. package/lib/cjs/IModelConnection.js.map +1 -1
  22. package/lib/cjs/IpcApp.d.ts +14 -1
  23. package/lib/cjs/IpcApp.d.ts.map +1 -1
  24. package/lib/cjs/IpcApp.js +25 -0
  25. package/lib/cjs/IpcApp.js.map +1 -1
  26. package/lib/cjs/MarginPercent.d.ts +27 -2
  27. package/lib/cjs/MarginPercent.d.ts.map +1 -1
  28. package/lib/cjs/MarginPercent.js +8 -2
  29. package/lib/cjs/MarginPercent.js.map +1 -1
  30. package/lib/cjs/ModelState.d.ts +2 -1
  31. package/lib/cjs/ModelState.d.ts.map +1 -1
  32. package/lib/cjs/ModelState.js +5 -3
  33. package/lib/cjs/ModelState.js.map +1 -1
  34. package/lib/cjs/NativeApp.d.ts +5 -1
  35. package/lib/cjs/NativeApp.d.ts.map +1 -1
  36. package/lib/cjs/NativeApp.js +25 -20
  37. package/lib/cjs/NativeApp.js.map +1 -1
  38. package/lib/cjs/NativeAppLogger.js +1 -1
  39. package/lib/cjs/NativeAppLogger.js.map +1 -1
  40. package/lib/cjs/RealityDataSource.d.ts +44 -1
  41. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  42. package/lib/cjs/RealityDataSource.js +41 -14
  43. package/lib/cjs/RealityDataSource.js.map +1 -1
  44. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
  45. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  46. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +3 -0
  47. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  48. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +1 -0
  49. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  50. package/lib/cjs/RealityDataSourceContextShareImpl.js +3 -0
  51. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  52. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
  53. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +3 -0
  55. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  56. package/lib/cjs/ViewAnimation.d.ts +10 -2
  57. package/lib/cjs/ViewAnimation.d.ts.map +1 -1
  58. package/lib/cjs/ViewAnimation.js.map +1 -1
  59. package/lib/cjs/ViewCreator2d.js +3 -2
  60. package/lib/cjs/ViewCreator2d.js.map +1 -1
  61. package/lib/cjs/ViewPose.d.ts +62 -10
  62. package/lib/cjs/ViewPose.d.ts.map +1 -1
  63. package/lib/cjs/ViewPose.js +37 -8
  64. package/lib/cjs/ViewPose.js.map +1 -1
  65. package/lib/cjs/ViewState.d.ts +18 -10
  66. package/lib/cjs/ViewState.d.ts.map +1 -1
  67. package/lib/cjs/ViewState.js +39 -15
  68. package/lib/cjs/ViewState.js.map +1 -1
  69. package/lib/cjs/Viewport.d.ts.map +1 -1
  70. package/lib/cjs/Viewport.js +7 -2
  71. package/lib/cjs/Viewport.js.map +1 -1
  72. package/lib/cjs/extension/ExtensionRuntime.js +13 -0
  73. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  74. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  75. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  76. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  77. package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
  78. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  79. package/lib/cjs/render/RealityMeshParams.js +9 -3
  80. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  81. package/lib/cjs/render/RenderMaterial.d.ts +3 -1
  82. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
  83. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  84. package/lib/cjs/render/RenderTarget.d.ts +1 -0
  85. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  86. package/lib/cjs/render/RenderTarget.js.map +1 -1
  87. package/lib/cjs/render/primitives/SurfaceParams.d.ts +0 -1
  88. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -1
  89. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  90. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  91. package/lib/cjs/render/primitives/VertexTable.js +0 -1
  92. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  93. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -1
  94. package/lib/cjs/render/primitives/VertexTableSplitter.js +0 -1
  95. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  96. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +0 -1
  97. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  98. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +0 -1
  99. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  100. package/lib/cjs/render/webgl/BackgroundMapDrape.js +2 -2
  101. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  102. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  104. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  105. package/lib/cjs/render/webgl/DrawCommand.js +3 -3
  106. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  107. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  108. package/lib/cjs/render/webgl/EDL.js +264 -0
  109. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  110. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  111. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +0 -1
  112. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/FeatureOverrides.js +16 -11
  114. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  115. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  116. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  117. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  118. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  119. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  120. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  122. package/lib/cjs/render/webgl/Layer.js +2 -2
  123. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  124. package/lib/cjs/render/webgl/MeshData.d.ts +1 -1
  125. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  126. package/lib/cjs/render/webgl/MeshData.js +13 -1
  127. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  128. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  129. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  130. package/lib/cjs/render/webgl/MeshGeometry.js +1 -1
  131. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  132. package/lib/cjs/render/webgl/PlanarClassifier.js +7 -7
  133. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  134. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  135. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  136. package/lib/cjs/render/webgl/PointCloud.js +2 -0
  137. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  138. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  139. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  140. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  141. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  142. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  143. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  144. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  145. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  146. package/lib/cjs/render/webgl/RenderCommands.js +30 -30
  147. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  148. package/lib/cjs/render/webgl/RenderFlags.d.ts +33 -21
  149. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  150. package/lib/cjs/render/webgl/RenderFlags.js +10 -6
  151. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  152. package/lib/cjs/render/webgl/SceneCompositor.d.ts +5 -0
  153. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  154. package/lib/cjs/render/webgl/SceneCompositor.js +192 -73
  155. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  156. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +2 -1
  157. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  158. package/lib/cjs/render/webgl/ShaderBuilder.js +6 -1
  159. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  160. package/lib/cjs/render/webgl/SolarShadowMap.js +2 -2
  161. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +3 -1
  162. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/SurfaceGeometry.js +22 -11
  164. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  165. package/lib/cjs/render/webgl/System.d.ts +1 -1
  166. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  167. package/lib/cjs/render/webgl/System.js +1 -0
  168. package/lib/cjs/render/webgl/System.js.map +1 -1
  169. package/lib/cjs/render/webgl/Target.d.ts +1 -0
  170. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  171. package/lib/cjs/render/webgl/Target.js +4 -3
  172. package/lib/cjs/render/webgl/Target.js.map +1 -1
  173. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  174. package/lib/cjs/render/webgl/Technique.js +18 -3
  175. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  176. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  177. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  178. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  179. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  180. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  181. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  182. package/lib/cjs/render/webgl/UniformHandle.js +1 -2
  183. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  184. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  185. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  186. package/lib/cjs/render/webgl/glsl/Animation.js +2 -1
  187. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  188. package/lib/cjs/render/webgl/glsl/Common.d.ts +3 -1
  189. package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
  190. package/lib/cjs/render/webgl/glsl/Common.js +28 -33
  191. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  192. package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
  193. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  194. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  195. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  196. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +9 -1
  198. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  199. package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
  200. package/lib/cjs/render/webgl/glsl/Lighting.js +6 -8
  201. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  202. package/lib/cjs/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  203. package/lib/cjs/render/webgl/glsl/PointCloud.js +8 -3
  204. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  205. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts +1 -0
  206. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  207. package/lib/cjs/render/webgl/glsl/RealityMesh.js +6 -1
  208. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  209. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  210. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  211. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
  212. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -4
  213. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  214. package/lib/cjs/render/webgl/glsl/Surface.d.ts +1 -1
  215. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  216. package/lib/cjs/render/webgl/glsl/Surface.js +87 -15
  217. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  218. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -6
  220. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  221. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  222. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  223. package/lib/cjs/tile/GltfReader.d.ts +13 -2
  224. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  225. package/lib/cjs/tile/GltfReader.js +67 -23
  226. package/lib/cjs/tile/GltfReader.js.map +1 -1
  227. package/lib/cjs/tile/IModelTile.js +1 -1
  228. package/lib/cjs/tile/IModelTile.js.map +1 -1
  229. package/lib/cjs/tile/IModelTileRequestChannels.js +1 -1
  230. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  231. package/lib/cjs/tile/ImdlReader.d.ts +5 -0
  232. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  233. package/lib/cjs/tile/ImdlReader.js +14 -7
  234. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  235. package/lib/cjs/tile/PrimaryTileTree.js +2 -2
  236. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  237. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  238. package/lib/cjs/tile/RealityModelTileTree.js +52 -20
  239. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  240. package/lib/cjs/tile/RealityTile.d.ts +2 -2
  241. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  242. package/lib/cjs/tile/RealityTile.js +11 -4
  243. package/lib/cjs/tile/RealityTile.js.map +1 -1
  244. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  245. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  246. package/lib/cjs/tile/RealityTileLoader.js +15 -2
  247. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  248. package/lib/cjs/tile/RealityTileTree.js +1 -1
  249. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  250. package/lib/cjs/tile/Tile.d.ts +5 -0
  251. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  252. package/lib/cjs/tile/Tile.js +5 -0
  253. package/lib/cjs/tile/Tile.js.map +1 -1
  254. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  255. package/lib/cjs/tile/TileAdmin.js +13 -6
  256. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  257. package/lib/cjs/tile/TileDrawArgs.d.ts +5 -1
  258. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  259. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  260. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  261. package/lib/cjs/tile/TileRequestChannels.js +1 -1
  262. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  263. package/lib/cjs/tile/TileStorage.d.ts.map +1 -1
  264. package/lib/cjs/tile/TileStorage.js +12 -6
  265. package/lib/cjs/tile/TileStorage.js.map +1 -1
  266. package/lib/cjs/tile/internal.d.ts +1 -0
  267. package/lib/cjs/tile/internal.d.ts.map +1 -1
  268. package/lib/cjs/tile/internal.js +1 -0
  269. package/lib/cjs/tile/internal.js.map +1 -1
  270. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +5 -2
  271. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  272. package/lib/cjs/tile/map/ArcGISTileMap.js +17 -2
  273. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  274. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +51 -5
  275. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  276. package/lib/cjs/tile/map/ArcGisUtilities.js +120 -48
  277. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  278. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  279. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  280. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
  281. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
  282. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +97 -0
  283. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
  284. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
  285. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  286. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +11 -96
  287. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  288. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  289. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
  290. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  291. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -0
  292. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/ImageryTileTree.js +6 -4
  294. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  295. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +18 -4
  296. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +25 -5
  298. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  299. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +6 -4
  300. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  301. package/lib/cjs/tile/map/MapLayerImageryFormats.js +12 -16
  302. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  303. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +26 -5
  304. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  305. package/lib/cjs/tile/map/MapLayerImageryProvider.js +69 -48
  306. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  307. package/lib/cjs/tile/map/MapLayerSources.js +1 -1
  308. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  309. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  310. package/lib/cjs/tile/map/WmsCapabilities.js +4 -1
  311. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  312. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  313. package/lib/cjs/tools/EditManipulator.js +2 -1
  314. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  315. package/lib/cjs/tools/Tool.js +1 -1
  316. package/lib/cjs/tools/Tool.js.map +1 -1
  317. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  318. package/lib/cjs/tools/ToolAdmin.js +6 -4
  319. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  320. package/lib/esm/AccuSnap.d.ts +7 -1
  321. package/lib/esm/AccuSnap.d.ts.map +1 -1
  322. package/lib/esm/AccuSnap.js +27 -4
  323. package/lib/esm/AccuSnap.js.map +1 -1
  324. package/lib/esm/BriefcaseConnection.d.ts +28 -1
  325. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  326. package/lib/esm/BriefcaseConnection.js +30 -9
  327. package/lib/esm/BriefcaseConnection.js.map +1 -1
  328. package/lib/esm/BriefcaseTxns.js +9 -9
  329. package/lib/esm/BriefcaseTxns.js.map +1 -1
  330. package/lib/esm/GraphicalEditingScope.js +2 -2
  331. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  332. package/lib/esm/IModelApp.d.ts +6 -0
  333. package/lib/esm/IModelApp.d.ts.map +1 -1
  334. package/lib/esm/IModelApp.js +6 -0
  335. package/lib/esm/IModelApp.js.map +1 -1
  336. package/lib/esm/IModelConnection.d.ts +32 -2
  337. package/lib/esm/IModelConnection.d.ts.map +1 -1
  338. package/lib/esm/IModelConnection.js +44 -6
  339. package/lib/esm/IModelConnection.js.map +1 -1
  340. package/lib/esm/IpcApp.d.ts +14 -1
  341. package/lib/esm/IpcApp.d.ts.map +1 -1
  342. package/lib/esm/IpcApp.js +25 -0
  343. package/lib/esm/IpcApp.js.map +1 -1
  344. package/lib/esm/MarginPercent.d.ts +27 -2
  345. package/lib/esm/MarginPercent.d.ts.map +1 -1
  346. package/lib/esm/MarginPercent.js +8 -2
  347. package/lib/esm/MarginPercent.js.map +1 -1
  348. package/lib/esm/ModelState.d.ts +2 -1
  349. package/lib/esm/ModelState.d.ts.map +1 -1
  350. package/lib/esm/ModelState.js +5 -3
  351. package/lib/esm/ModelState.js.map +1 -1
  352. package/lib/esm/NativeApp.d.ts +5 -1
  353. package/lib/esm/NativeApp.d.ts.map +1 -1
  354. package/lib/esm/NativeApp.js +25 -20
  355. package/lib/esm/NativeApp.js.map +1 -1
  356. package/lib/esm/NativeAppLogger.js +1 -1
  357. package/lib/esm/NativeAppLogger.js.map +1 -1
  358. package/lib/esm/RealityDataSource.d.ts +44 -1
  359. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  360. package/lib/esm/RealityDataSource.js +39 -13
  361. package/lib/esm/RealityDataSource.js.map +1 -1
  362. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
  363. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  364. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +3 -0
  365. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  366. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +1 -0
  367. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  368. package/lib/esm/RealityDataSourceContextShareImpl.js +3 -0
  369. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  370. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
  371. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  372. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +3 -0
  373. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  374. package/lib/esm/ViewAnimation.d.ts +10 -2
  375. package/lib/esm/ViewAnimation.d.ts.map +1 -1
  376. package/lib/esm/ViewAnimation.js.map +1 -1
  377. package/lib/esm/ViewCreator2d.js +3 -2
  378. package/lib/esm/ViewCreator2d.js.map +1 -1
  379. package/lib/esm/ViewPose.d.ts +62 -10
  380. package/lib/esm/ViewPose.d.ts.map +1 -1
  381. package/lib/esm/ViewPose.js +37 -8
  382. package/lib/esm/ViewPose.js.map +1 -1
  383. package/lib/esm/ViewState.d.ts +18 -10
  384. package/lib/esm/ViewState.d.ts.map +1 -1
  385. package/lib/esm/ViewState.js +39 -15
  386. package/lib/esm/ViewState.js.map +1 -1
  387. package/lib/esm/Viewport.d.ts.map +1 -1
  388. package/lib/esm/Viewport.js +7 -2
  389. package/lib/esm/Viewport.js.map +1 -1
  390. package/lib/esm/extension/ExtensionRuntime.js +15 -2
  391. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  392. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  393. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  394. package/lib/esm/render/GraphicBranch.js.map +1 -1
  395. package/lib/esm/render/RealityMeshParams.d.ts +3 -4
  396. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  397. package/lib/esm/render/RealityMeshParams.js +10 -4
  398. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  399. package/lib/esm/render/RenderMaterial.d.ts +3 -1
  400. package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
  401. package/lib/esm/render/RenderMaterial.js.map +1 -1
  402. package/lib/esm/render/RenderTarget.d.ts +1 -0
  403. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  404. package/lib/esm/render/RenderTarget.js.map +1 -1
  405. package/lib/esm/render/primitives/SurfaceParams.d.ts +0 -1
  406. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -1
  407. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  408. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  409. package/lib/esm/render/primitives/VertexTable.js +0 -1
  410. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  411. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -1
  412. package/lib/esm/render/primitives/VertexTableSplitter.js +0 -1
  413. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  414. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +0 -1
  415. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  416. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +0 -1
  417. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  418. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  419. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  420. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  421. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  422. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  423. package/lib/esm/render/webgl/DrawCommand.js +3 -3
  424. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  425. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  426. package/lib/esm/render/webgl/EDL.js +260 -0
  427. package/lib/esm/render/webgl/EDL.js.map +1 -0
  428. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  429. package/lib/esm/render/webgl/FeatureOverrides.d.ts +0 -1
  430. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  431. package/lib/esm/render/webgl/FeatureOverrides.js +16 -11
  432. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  433. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  434. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  435. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  436. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  437. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  438. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  439. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  440. package/lib/esm/render/webgl/Layer.js +2 -2
  441. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  442. package/lib/esm/render/webgl/MeshData.d.ts +1 -1
  443. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  444. package/lib/esm/render/webgl/MeshData.js +13 -1
  445. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  446. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  447. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  448. package/lib/esm/render/webgl/MeshGeometry.js +1 -1
  449. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  450. package/lib/esm/render/webgl/PlanarClassifier.js +7 -7
  451. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  452. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  453. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/PointCloud.js +2 -0
  455. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  456. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  457. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  459. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  460. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  461. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  463. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  464. package/lib/esm/render/webgl/RenderCommands.js +30 -30
  465. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  466. package/lib/esm/render/webgl/RenderFlags.d.ts +33 -21
  467. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  468. package/lib/esm/render/webgl/RenderFlags.js +10 -6
  469. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  470. package/lib/esm/render/webgl/SceneCompositor.d.ts +5 -0
  471. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  472. package/lib/esm/render/webgl/SceneCompositor.js +191 -74
  473. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  474. package/lib/esm/render/webgl/ShaderBuilder.d.ts +2 -1
  475. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  476. package/lib/esm/render/webgl/ShaderBuilder.js +6 -1
  477. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  478. package/lib/esm/render/webgl/SolarShadowMap.js +2 -2
  479. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +3 -1
  480. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  481. package/lib/esm/render/webgl/SurfaceGeometry.js +22 -11
  482. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  483. package/lib/esm/render/webgl/System.d.ts +1 -1
  484. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  485. package/lib/esm/render/webgl/System.js +1 -0
  486. package/lib/esm/render/webgl/System.js.map +1 -1
  487. package/lib/esm/render/webgl/Target.d.ts +1 -0
  488. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  489. package/lib/esm/render/webgl/Target.js +4 -3
  490. package/lib/esm/render/webgl/Target.js.map +1 -1
  491. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  492. package/lib/esm/render/webgl/Technique.js +18 -3
  493. package/lib/esm/render/webgl/Technique.js.map +1 -1
  494. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  495. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  496. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  497. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  498. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  499. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  500. package/lib/esm/render/webgl/UniformHandle.js +1 -2
  501. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  502. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  503. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  504. package/lib/esm/render/webgl/glsl/Animation.js +2 -1
  505. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  506. package/lib/esm/render/webgl/glsl/Common.d.ts +3 -1
  507. package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
  508. package/lib/esm/render/webgl/glsl/Common.js +25 -31
  509. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  510. package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
  511. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  512. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  513. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  514. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  515. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +9 -1
  516. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  517. package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
  518. package/lib/esm/render/webgl/glsl/Lighting.js +6 -8
  519. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  520. package/lib/esm/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  521. package/lib/esm/render/webgl/glsl/PointCloud.js +8 -3
  522. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  523. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts +1 -0
  524. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  525. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -0
  526. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  527. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  528. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  529. package/lib/esm/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
  530. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -4
  531. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  532. package/lib/esm/render/webgl/glsl/Surface.d.ts +1 -1
  533. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  534. package/lib/esm/render/webgl/glsl/Surface.js +88 -16
  535. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  536. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  537. package/lib/esm/render/webgl/glsl/Thematic.js +2 -6
  538. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  539. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  540. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  541. package/lib/esm/tile/GltfReader.d.ts +13 -2
  542. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  543. package/lib/esm/tile/GltfReader.js +67 -23
  544. package/lib/esm/tile/GltfReader.js.map +1 -1
  545. package/lib/esm/tile/IModelTile.js +1 -1
  546. package/lib/esm/tile/IModelTile.js.map +1 -1
  547. package/lib/esm/tile/IModelTileRequestChannels.js +1 -1
  548. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  549. package/lib/esm/tile/ImdlReader.d.ts +5 -0
  550. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  551. package/lib/esm/tile/ImdlReader.js +14 -7
  552. package/lib/esm/tile/ImdlReader.js.map +1 -1
  553. package/lib/esm/tile/PrimaryTileTree.js +2 -2
  554. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  555. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  556. package/lib/esm/tile/RealityModelTileTree.js +52 -20
  557. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  558. package/lib/esm/tile/RealityTile.d.ts +2 -2
  559. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  560. package/lib/esm/tile/RealityTile.js +11 -4
  561. package/lib/esm/tile/RealityTile.js.map +1 -1
  562. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  563. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  564. package/lib/esm/tile/RealityTileLoader.js +16 -3
  565. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  566. package/lib/esm/tile/RealityTileTree.js +1 -1
  567. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  568. package/lib/esm/tile/Tile.d.ts +5 -0
  569. package/lib/esm/tile/Tile.d.ts.map +1 -1
  570. package/lib/esm/tile/Tile.js +5 -0
  571. package/lib/esm/tile/Tile.js.map +1 -1
  572. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  573. package/lib/esm/tile/TileAdmin.js +13 -6
  574. package/lib/esm/tile/TileAdmin.js.map +1 -1
  575. package/lib/esm/tile/TileDrawArgs.d.ts +5 -1
  576. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  577. package/lib/esm/tile/TileDrawArgs.js +2 -0
  578. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  579. package/lib/esm/tile/TileRequestChannels.js +1 -1
  580. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  581. package/lib/esm/tile/TileStorage.d.ts.map +1 -1
  582. package/lib/esm/tile/TileStorage.js +12 -6
  583. package/lib/esm/tile/TileStorage.js.map +1 -1
  584. package/lib/esm/tile/internal.d.ts +1 -0
  585. package/lib/esm/tile/internal.d.ts.map +1 -1
  586. package/lib/esm/tile/internal.js +1 -0
  587. package/lib/esm/tile/internal.js.map +1 -1
  588. package/lib/esm/tile/map/ArcGISTileMap.d.ts +5 -2
  589. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  590. package/lib/esm/tile/map/ArcGISTileMap.js +18 -3
  591. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  592. package/lib/esm/tile/map/ArcGisUtilities.d.ts +51 -5
  593. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  594. package/lib/esm/tile/map/ArcGisUtilities.js +121 -49
  595. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  596. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  597. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  598. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
  599. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
  600. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +93 -0
  601. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
  602. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
  603. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  604. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +10 -95
  605. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  606. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  607. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
  608. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  609. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -0
  610. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  611. package/lib/esm/tile/map/ImageryTileTree.js +6 -4
  612. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  613. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +18 -4
  614. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  615. package/lib/esm/tile/map/MapLayerFormatRegistry.js +26 -6
  616. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  617. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +6 -4
  618. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  619. package/lib/esm/tile/map/MapLayerImageryFormats.js +12 -16
  620. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  621. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +26 -5
  622. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  623. package/lib/esm/tile/map/MapLayerImageryProvider.js +70 -49
  624. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  625. package/lib/esm/tile/map/MapLayerSources.js +1 -1
  626. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  627. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  628. package/lib/esm/tile/map/WmsCapabilities.js +4 -1
  629. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  630. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  631. package/lib/esm/tools/EditManipulator.js +2 -1
  632. package/lib/esm/tools/EditManipulator.js.map +1 -1
  633. package/lib/esm/tools/Tool.js +1 -1
  634. package/lib/esm/tools/Tool.js.map +1 -1
  635. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  636. package/lib/esm/tools/ToolAdmin.js +6 -4
  637. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  638. package/package.json +25 -23
  639. package/lib/cjs/tile/object-storage-azure.js +0 -5
  640. package/lib/esm/tile/object-storage-azure.js +0 -5
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Animation.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,EAAgB,mBAAmB,EAAyB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0K/C,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAwHxG"}
1
+ {"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Animation.ts"],"names":[],"mappings":"AAIA;;GAEG;AAQH,OAAO,EAAgB,mBAAmB,EAAyB,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0K/C,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAwHxG"}
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.addAnimation = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
+ const System_1 = require("../System");
13
14
  const RenderFlags_1 = require("../RenderFlags");
14
15
  const Surface_1 = require("./Surface");
15
16
  const Vertex_1 = require("./Vertex");
@@ -239,7 +240,7 @@ function addAnimation(vert, isSurface, isThematic) {
239
240
  uniform.setUniform3fv(animParams);
240
241
  });
241
242
  });
242
- if (isThematic === 0 /* No */) {
243
+ if (isThematic === 0 /* No */ || System_1.System.instance.capabilities.isWebGL2) {
243
244
  vert.addUniform("u_animScalarParams", 4 /* Vec3 */, (prog) => {
244
245
  prog.addGraphicUniform("u_animScalarParams", (uniform, params) => {
245
246
  const scalars = getScalarChannel(params);
@@ -1 +1 @@
1
- {"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Animation.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 { AnalysisStyleDisplacement, AnalysisStyleThematic, ThematicGradientSettings } from \"@itwin/core-common\";\r\nimport { AuxChannel, AuxDisplacementChannel, AuxParamChannel } from \"../../primitives/AuxChannelTable\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { VariableType, VertexShaderBuilder, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { octDecodeNormal } from \"./Surface\";\r\nimport { unquantizePosition } from \"./Vertex\";\r\n\r\nconst initialize = `\r\n g_anim_step = vec2(1.0) / u_animLUTParams.xy;\r\n g_anim_center = g_anim_step * 0.5;\r\n`;\r\n\r\n// The vertex index is an integer in [0..numVertices].\r\n// The frame index is an integer in [0..numBytesPerVertex/2].\r\n// Therefore each frame index points at 2 bytes within the texture.\r\n// The third component of the return value is 0.0 if the input index points to the first 2 bytes of the texel, or 1.0 if pointing to the second 2 bytes\r\nconst computeAnimLUTCoords = `\r\nvec3 computeAnimLUTCoords(float vertIndex, float frameIndex) {\r\n // float baseIndex = (vertIndex * 2.0) + frameIndex;\r\n float baseIndex = (vertIndex * u_animLUTParams.z) + frameIndex;\r\n float halfIndex = baseIndex * 0.5;\r\n float index = floor(halfIndex);\r\n\r\n float epsilon = 0.5 / u_animLUTParams.x;\r\n float yId = floor(index / u_animLUTParams.x + epsilon);\r\n float xId = index - u_animLUTParams.x * yId;\r\n\r\n vec2 texCoord = g_anim_center + vec2(xId / u_animLUTParams.x, yId / u_animLUTParams.y);\r\n return vec3(texCoord, 2.0 * (halfIndex - index));\r\n}\r\n`;\r\n\r\n// Sample 2 bytes at the specified index.\r\nconst sampleAnimVec2 = `\r\nvec2 sampleAnimVec2(float vertIndex, float frameIndex) {\r\n vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);\r\n vec4 texel = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n return texel.xy * (1.0 - tc.z) + texel.zw * tc.z;\r\n}\r\n`;\r\n\r\n// Position is quantized to 6 bytes (2 bytes per component). So we always must sample two adjacent texels. We discard two bytes based on whether the index is even or odd.\r\nconst computeAnimationFrameDisplacement = `\r\nvec3 computeAnimationFrameDisplacement(float vertIndex, float frameIndex, vec3 origin, vec3 scale) {\r\n vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);\r\n vec4 enc1 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n tc.x += g_anim_step.x;\r\n vec4 enc2 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n\r\n vec2 ex = enc1.xy * (1.0 - tc.z) + enc1.zw * tc.z;\r\n vec2 ey = enc1.zw * (1.0 - tc.z) + enc2.xy * tc.z;\r\n vec2 ez = enc2.xy * (1.0 - tc.z) + enc2.zw * tc.z;\r\n\r\n vec3 qpos = vec3(decodeUInt16(ex), decodeUInt16(ey), decodeUInt16(ez));\r\n return unquantizePosition(qpos, origin, scale).xyz;\r\n}\r\n`;\r\n\r\nconst computeAnimationDisplacement = `\r\nvec3 computeAnimationDisplacement(float vertIndex, float frameIndex0, float frameIndex1, float fraction, vec3 origin, vec3 scale) {\r\n if (frameIndex0 < 0.0)\r\n return vec3(0.0, 0.0, 0.0);\r\n\r\n vec3 displacement = computeAnimationFrameDisplacement(vertIndex, frameIndex0, origin, scale);\r\n if (fraction > 0.0) {\r\n vec3 displacement1 = computeAnimationFrameDisplacement(vertIndex, frameIndex1, origin, scale);\r\n displacement += fraction * (displacement1 - displacement);\r\n }\r\n\r\n return displacement;\r\n}\r\n`;\r\n\r\nconst adjustRawPosition = `\r\n rawPos.xyz += computeAnimationDisplacement(g_vertexLUTIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);\r\n return rawPos;\r\n`;\r\n\r\nconst computeAnimationFrameNormal = `\r\nvec3 computeAnimationFrameNormal(float frameIndex) {\r\n vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);\r\n return octDecodeNormal(enc);\r\n}\r\n`;\r\n\r\nconst computeAnimationNormal = `\r\nvec3 computeAnimationNormal(float frameIndex0, float frameIndex1, float fraction) {\r\n vec3 normal = computeAnimationFrameNormal(frameIndex0);\r\n if (fraction > 0.0) {\r\n vec3 normal1 = computeAnimationFrameNormal(frameIndex1);\r\n normal += fraction * (normal1 - normal);\r\n }\r\n\r\n return normal;\r\n}\r\n`;\r\n\r\nconst computeAnimationFrameParam = `\r\nfloat computeAnimationFrameParam(float frameIndex, float origin, float scale) {\r\n vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);\r\n return clamp((origin + scale * decodeUInt16(enc)), 0.0, 1.0);\r\n}\r\n`;\r\n\r\nconst computeAnimationParam = `\r\nvec2 computeAnimationParam(float frameIndex0, float frameIndex1, float fraction, float origin, float scale) {\r\n float param = computeAnimationFrameParam(frameIndex0, origin, scale);\r\n if (fraction > 0.0) {\r\n float param1 = computeAnimationFrameParam(frameIndex1, origin, scale);\r\n param += fraction * (param1 - param);\r\n }\r\n\r\n return vec2(.5, param);\r\n}\r\n`;\r\n\r\nconst scratchAnimParams = [\r\n undefined,\r\n undefined,\r\n new Float32Array(2), // origin, scale\r\n new Float32Array(3), // index0, index1, fraction\r\n];\r\n\r\nfunction getAnimParams(size: 2 | 3, initialValue?: number): Float32Array {\r\n const array = scratchAnimParams[size]!;\r\n if (undefined !== initialValue)\r\n for (let i = 0; i < array.length; i++)\r\n array[i] = initialValue;\r\n\r\n return array;\r\n}\r\n\r\nfunction getDisplacementChannel(params: DrawParams): { channel: AuxDisplacementChannel, displacement: AnalysisStyleDisplacement } | undefined {\r\n const displacement = params.target.analysisStyle?.displacement;\r\n if (!displacement)\r\n return undefined;\r\n\r\n const channel = params.geometry.asLUT?.lut.auxChannels?.displacements?.get(displacement.channelName);\r\n return channel ? { channel, displacement } : undefined;\r\n}\r\n\r\nfunction getNormalChannel(params: DrawParams): AuxChannel | undefined {\r\n const channelName = params.target.analysisStyle?.normalChannelName;\r\n if (undefined === channelName)\r\n return undefined;\r\n\r\n return params.geometry.asLUT?.lut.auxChannels?.normals?.get(channelName);\r\n}\r\n\r\nfunction getScalarChannel(params: DrawParams): { channel: AuxParamChannel, scalar: AnalysisStyleThematic } | undefined {\r\n const scalar = params.target.analysisStyle?.thematic;\r\n if (!scalar)\r\n return undefined;\r\n\r\n const channel = params.geometry.asMesh?.lut.auxChannels?.params?.get(scalar.channelName);\r\n return channel ? { channel, scalar } : undefined;\r\n}\r\n\r\nfunction computeAnimParams(params: Float32Array, channel: AuxChannel, fraction: number): void {\r\n const { inputs, indices } = channel;\r\n const inputValue = fraction * inputs[inputs.length - 1];\r\n for (let i = 0; i < inputs.length - 1; i++) {\r\n if (inputValue >= inputs[i] && inputValue < inputs[i + 1]) {\r\n params[0] = indices[i];\r\n params[1] = indices[i + 1];\r\n params[2] = inputValue - inputs[i] / (inputs[i + 1] - inputs[i]);\r\n return;\r\n }\r\n }\r\n params[0] = params[1] = indices[inputs.length - 1];\r\n params[2] = 0.0;\r\n}\r\n\r\n/** @internal */\r\nexport function addAnimation(vert: VertexShaderBuilder, isSurface: boolean, isThematic: IsThematic): void {\r\n // Lookup table\r\n vert.addGlobal(\"g_anim_step\", VariableType.Vec2);\r\n vert.addGlobal(\"g_anim_center\", VariableType.Vec2);\r\n vert.addInitializer(initialize);\r\n vert.addFunction(unquantizePosition);\r\n\r\n vert.addUniform(\"u_animLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_animLUT\", (uniform, params) => {\r\n const channels = (params.geometry.asLUT!).lut.auxChannels!;\r\n assert(undefined !== channels);\r\n channels.texture.bindSampler(uniform, TextureUnit.AuxChannelLUT);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_animLUTParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animLUTParams\", (uniform, params) => {\r\n const geom = params.geometry.asLUT!;\r\n assert(undefined !== geom && undefined !== geom.lut.auxChannels);\r\n const tex = geom.lut.auxChannels.texture;\r\n const array = getAnimParams(3);\r\n array[0] = tex.width;\r\n array[1] = tex.height;\r\n array[2] = geom.lut.auxChannels.numBytesPerVertex / 2;\r\n uniform.setUniform3fv(array);\r\n });\r\n });\r\n\r\n vert.addFunction(computeAnimLUTCoords);\r\n vert.addFunction(sampleAnimVec2);\r\n\r\n // Displacement\r\n vert.addFunction(computeAnimationFrameDisplacement);\r\n vert.addFunction(computeAnimationDisplacement);\r\n vert.set(VertexShaderComponent.AdjustRawPosition, adjustRawPosition);\r\n\r\n vert.addUniform(\"u_animDispParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animDispParams\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n computeAnimParams(animParams, disp.channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n vert.addUniform(\"u_qAnimDispScale\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_qAnimDispScale\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n for (let i = 0; i < 3; i++)\r\n animParams[i] = disp.channel.qScale[i] * disp.displacement.scale;\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n vert.addUniform(\"u_qAnimDispOrigin\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_qAnimDispOrigin\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n for (let i = 0; i < 3; i++)\r\n animParams[i] = disp.channel.qOrigin[i] * disp.displacement.scale;\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n // Normal and param\r\n if (isSurface) {\r\n vert.addFunction(octDecodeNormal);\r\n vert.addFunction(computeAnimationFrameNormal);\r\n vert.addFunction(computeAnimationNormal);\r\n\r\n vert.addFunction(computeAnimationFrameParam);\r\n vert.addFunction(computeAnimationParam);\r\n\r\n vert.addUniform(\"u_animNormalParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animNormalParams\", (uniform, params) => {\r\n const animParams = getAnimParams(3, -1.0);\r\n const channel = getNormalChannel(params);\r\n if (undefined !== channel)\r\n computeAnimParams(animParams, channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n vert.addUniform(\"u_animScalarParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animScalarParams\", (uniform, params) => {\r\n const scalars = getScalarChannel(params);\r\n const animParams = getAnimParams(3, -1.0);\r\n if (scalars)\r\n computeAnimParams(animParams, scalars.channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_animScalarQParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_animScalarQParams\", (uniform, params) => {\r\n const scalars = getScalarChannel(params);\r\n const animParams = getAnimParams(2, 1.0);\r\n if (scalars) {\r\n const range = scalars.scalar.range;\r\n let rangeScale = range.high - range.low;\r\n if (rangeScale === 0)\r\n rangeScale = 1;\r\n\r\n animParams[0] = ThematicGradientSettings.margin + (scalars.channel.qOrigin - range.low) / rangeScale;\r\n animParams[1] = ThematicGradientSettings.contentRange * scalars.channel.qScale / rangeScale;\r\n }\r\n\r\n uniform.setUniform2fv(animParams);\r\n });\r\n });\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Animation.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 { AnalysisStyleDisplacement, AnalysisStyleThematic, ThematicGradientSettings } from \"@itwin/core-common\";\r\nimport { AuxChannel, AuxDisplacementChannel, AuxParamChannel } from \"../../primitives/AuxChannelTable\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { System } from \"../System\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { VariableType, VertexShaderBuilder, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { octDecodeNormal } from \"./Surface\";\r\nimport { unquantizePosition } from \"./Vertex\";\r\n\r\nconst initialize = `\r\n g_anim_step = vec2(1.0) / u_animLUTParams.xy;\r\n g_anim_center = g_anim_step * 0.5;\r\n`;\r\n\r\n// The vertex index is an integer in [0..numVertices].\r\n// The frame index is an integer in [0..numBytesPerVertex/2].\r\n// Therefore each frame index points at 2 bytes within the texture.\r\n// The third component of the return value is 0.0 if the input index points to the first 2 bytes of the texel, or 1.0 if pointing to the second 2 bytes\r\nconst computeAnimLUTCoords = `\r\nvec3 computeAnimLUTCoords(float vertIndex, float frameIndex) {\r\n // float baseIndex = (vertIndex * 2.0) + frameIndex;\r\n float baseIndex = (vertIndex * u_animLUTParams.z) + frameIndex;\r\n float halfIndex = baseIndex * 0.5;\r\n float index = floor(halfIndex);\r\n\r\n float epsilon = 0.5 / u_animLUTParams.x;\r\n float yId = floor(index / u_animLUTParams.x + epsilon);\r\n float xId = index - u_animLUTParams.x * yId;\r\n\r\n vec2 texCoord = g_anim_center + vec2(xId / u_animLUTParams.x, yId / u_animLUTParams.y);\r\n return vec3(texCoord, 2.0 * (halfIndex - index));\r\n}\r\n`;\r\n\r\n// Sample 2 bytes at the specified index.\r\nconst sampleAnimVec2 = `\r\nvec2 sampleAnimVec2(float vertIndex, float frameIndex) {\r\n vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);\r\n vec4 texel = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n return texel.xy * (1.0 - tc.z) + texel.zw * tc.z;\r\n}\r\n`;\r\n\r\n// Position is quantized to 6 bytes (2 bytes per component). So we always must sample two adjacent texels. We discard two bytes based on whether the index is even or odd.\r\nconst computeAnimationFrameDisplacement = `\r\nvec3 computeAnimationFrameDisplacement(float vertIndex, float frameIndex, vec3 origin, vec3 scale) {\r\n vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);\r\n vec4 enc1 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n tc.x += g_anim_step.x;\r\n vec4 enc2 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);\r\n\r\n vec2 ex = enc1.xy * (1.0 - tc.z) + enc1.zw * tc.z;\r\n vec2 ey = enc1.zw * (1.0 - tc.z) + enc2.xy * tc.z;\r\n vec2 ez = enc2.xy * (1.0 - tc.z) + enc2.zw * tc.z;\r\n\r\n vec3 qpos = vec3(decodeUInt16(ex), decodeUInt16(ey), decodeUInt16(ez));\r\n return unquantizePosition(qpos, origin, scale).xyz;\r\n}\r\n`;\r\n\r\nconst computeAnimationDisplacement = `\r\nvec3 computeAnimationDisplacement(float vertIndex, float frameIndex0, float frameIndex1, float fraction, vec3 origin, vec3 scale) {\r\n if (frameIndex0 < 0.0)\r\n return vec3(0.0, 0.0, 0.0);\r\n\r\n vec3 displacement = computeAnimationFrameDisplacement(vertIndex, frameIndex0, origin, scale);\r\n if (fraction > 0.0) {\r\n vec3 displacement1 = computeAnimationFrameDisplacement(vertIndex, frameIndex1, origin, scale);\r\n displacement += fraction * (displacement1 - displacement);\r\n }\r\n\r\n return displacement;\r\n}\r\n`;\r\n\r\nconst adjustRawPosition = `\r\n rawPos.xyz += computeAnimationDisplacement(g_vertexLUTIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);\r\n return rawPos;\r\n`;\r\n\r\nconst computeAnimationFrameNormal = `\r\nvec3 computeAnimationFrameNormal(float frameIndex) {\r\n vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);\r\n return octDecodeNormal(enc);\r\n}\r\n`;\r\n\r\nconst computeAnimationNormal = `\r\nvec3 computeAnimationNormal(float frameIndex0, float frameIndex1, float fraction) {\r\n vec3 normal = computeAnimationFrameNormal(frameIndex0);\r\n if (fraction > 0.0) {\r\n vec3 normal1 = computeAnimationFrameNormal(frameIndex1);\r\n normal += fraction * (normal1 - normal);\r\n }\r\n\r\n return normal;\r\n}\r\n`;\r\n\r\nconst computeAnimationFrameParam = `\r\nfloat computeAnimationFrameParam(float frameIndex, float origin, float scale) {\r\n vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);\r\n return clamp((origin + scale * decodeUInt16(enc)), 0.0, 1.0);\r\n}\r\n`;\r\n\r\nconst computeAnimationParam = `\r\nvec2 computeAnimationParam(float frameIndex0, float frameIndex1, float fraction, float origin, float scale) {\r\n float param = computeAnimationFrameParam(frameIndex0, origin, scale);\r\n if (fraction > 0.0) {\r\n float param1 = computeAnimationFrameParam(frameIndex1, origin, scale);\r\n param += fraction * (param1 - param);\r\n }\r\n\r\n return vec2(.5, param);\r\n}\r\n`;\r\n\r\nconst scratchAnimParams = [\r\n undefined,\r\n undefined,\r\n new Float32Array(2), // origin, scale\r\n new Float32Array(3), // index0, index1, fraction\r\n];\r\n\r\nfunction getAnimParams(size: 2 | 3, initialValue?: number): Float32Array {\r\n const array = scratchAnimParams[size]!;\r\n if (undefined !== initialValue)\r\n for (let i = 0; i < array.length; i++)\r\n array[i] = initialValue;\r\n\r\n return array;\r\n}\r\n\r\nfunction getDisplacementChannel(params: DrawParams): { channel: AuxDisplacementChannel, displacement: AnalysisStyleDisplacement } | undefined {\r\n const displacement = params.target.analysisStyle?.displacement;\r\n if (!displacement)\r\n return undefined;\r\n\r\n const channel = params.geometry.asLUT?.lut.auxChannels?.displacements?.get(displacement.channelName);\r\n return channel ? { channel, displacement } : undefined;\r\n}\r\n\r\nfunction getNormalChannel(params: DrawParams): AuxChannel | undefined {\r\n const channelName = params.target.analysisStyle?.normalChannelName;\r\n if (undefined === channelName)\r\n return undefined;\r\n\r\n return params.geometry.asLUT?.lut.auxChannels?.normals?.get(channelName);\r\n}\r\n\r\nfunction getScalarChannel(params: DrawParams): { channel: AuxParamChannel, scalar: AnalysisStyleThematic } | undefined {\r\n const scalar = params.target.analysisStyle?.thematic;\r\n if (!scalar)\r\n return undefined;\r\n\r\n const channel = params.geometry.asMesh?.lut.auxChannels?.params?.get(scalar.channelName);\r\n return channel ? { channel, scalar } : undefined;\r\n}\r\n\r\nfunction computeAnimParams(params: Float32Array, channel: AuxChannel, fraction: number): void {\r\n const { inputs, indices } = channel;\r\n const inputValue = fraction * inputs[inputs.length - 1];\r\n for (let i = 0; i < inputs.length - 1; i++) {\r\n if (inputValue >= inputs[i] && inputValue < inputs[i + 1]) {\r\n params[0] = indices[i];\r\n params[1] = indices[i + 1];\r\n params[2] = inputValue - inputs[i] / (inputs[i + 1] - inputs[i]);\r\n return;\r\n }\r\n }\r\n params[0] = params[1] = indices[inputs.length - 1];\r\n params[2] = 0.0;\r\n}\r\n\r\n/** @internal */\r\nexport function addAnimation(vert: VertexShaderBuilder, isSurface: boolean, isThematic: IsThematic): void {\r\n // Lookup table\r\n vert.addGlobal(\"g_anim_step\", VariableType.Vec2);\r\n vert.addGlobal(\"g_anim_center\", VariableType.Vec2);\r\n vert.addInitializer(initialize);\r\n vert.addFunction(unquantizePosition);\r\n\r\n vert.addUniform(\"u_animLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_animLUT\", (uniform, params) => {\r\n const channels = (params.geometry.asLUT!).lut.auxChannels!;\r\n assert(undefined !== channels);\r\n channels.texture.bindSampler(uniform, TextureUnit.AuxChannelLUT);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_animLUTParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animLUTParams\", (uniform, params) => {\r\n const geom = params.geometry.asLUT!;\r\n assert(undefined !== geom && undefined !== geom.lut.auxChannels);\r\n const tex = geom.lut.auxChannels.texture;\r\n const array = getAnimParams(3);\r\n array[0] = tex.width;\r\n array[1] = tex.height;\r\n array[2] = geom.lut.auxChannels.numBytesPerVertex / 2;\r\n uniform.setUniform3fv(array);\r\n });\r\n });\r\n\r\n vert.addFunction(computeAnimLUTCoords);\r\n vert.addFunction(sampleAnimVec2);\r\n\r\n // Displacement\r\n vert.addFunction(computeAnimationFrameDisplacement);\r\n vert.addFunction(computeAnimationDisplacement);\r\n vert.set(VertexShaderComponent.AdjustRawPosition, adjustRawPosition);\r\n\r\n vert.addUniform(\"u_animDispParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animDispParams\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n computeAnimParams(animParams, disp.channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n vert.addUniform(\"u_qAnimDispScale\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_qAnimDispScale\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n for (let i = 0; i < 3; i++)\r\n animParams[i] = disp.channel.qScale[i] * disp.displacement.scale;\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n vert.addUniform(\"u_qAnimDispOrigin\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_qAnimDispOrigin\", (uniform, params) => {\r\n const animParams = getAnimParams(3, 0.0);\r\n const disp = getDisplacementChannel(params);\r\n if (undefined !== disp)\r\n for (let i = 0; i < 3; i++)\r\n animParams[i] = disp.channel.qOrigin[i] * disp.displacement.scale;\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n // Normal and param\r\n if (isSurface) {\r\n vert.addFunction(octDecodeNormal);\r\n vert.addFunction(computeAnimationFrameNormal);\r\n vert.addFunction(computeAnimationNormal);\r\n\r\n vert.addFunction(computeAnimationFrameParam);\r\n vert.addFunction(computeAnimationParam);\r\n\r\n vert.addUniform(\"u_animNormalParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animNormalParams\", (uniform, params) => {\r\n const animParams = getAnimParams(3, -1.0);\r\n const channel = getNormalChannel(params);\r\n if (undefined !== channel)\r\n computeAnimParams(animParams, channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No || System.instance.capabilities.isWebGL2) {\r\n vert.addUniform(\"u_animScalarParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_animScalarParams\", (uniform, params) => {\r\n const scalars = getScalarChannel(params);\r\n const animParams = getAnimParams(3, -1.0);\r\n if (scalars)\r\n computeAnimParams(animParams, scalars.channel, params.target.analysisFraction);\r\n\r\n uniform.setUniform3fv(animParams);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_animScalarQParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_animScalarQParams\", (uniform, params) => {\r\n const scalars = getScalarChannel(params);\r\n const animParams = getAnimParams(2, 1.0);\r\n if (scalars) {\r\n const range = scalars.scalar.range;\r\n let rangeScale = range.high - range.low;\r\n if (rangeScale === 0)\r\n rangeScale = 1;\r\n\r\n animParams[0] = ThematicGradientSettings.margin + (scalars.channel.qOrigin - range.low) / rangeScale;\r\n animParams[1] = ThematicGradientSettings.contentRange * scalars.channel.qScale / rangeScale;\r\n }\r\n\r\n uniform.setUniform2fv(animParams);\r\n });\r\n });\r\n }\r\n }\r\n}\r\n"]}
@@ -3,7 +3,9 @@
3
3
  */
4
4
  import { ProgramBuilder, ShaderBuilder } from "../ShaderBuilder";
5
5
  /** @internal */
6
- export declare function addChooseWithBitFlagFunctions(shader: ShaderBuilder): void;
6
+ export declare function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder): void;
7
+ /** @internal */
8
+ export declare function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder): void;
7
9
  /** @internal */
8
10
  export declare function addShaderFlags(builder: ProgramBuilder): void;
9
11
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAyB3F,gBAAgB;AAChB,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,QAYlE;AA8ED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,QAOrD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,QAUjD;AAID,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,QAGlD;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,mOAQtB,CAAC;AAiCF,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ5D"}
1
+ {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AA0B3F,gBAAgB;AAChB,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,aAAa,QAQtE;AAED,gBAAgB;AAChB,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,aAAa,QAQrE;AAiED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,QAOrD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,QAUjD;AAID,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,QAGlD;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,mOAQtB,CAAC;AAiCF,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ5D"}
@@ -7,21 +7,22 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addExtractNthBit = exports.addUInt32s = exports.addEyeSpace = exports.addFrustum = exports.addShaderFlags = exports.addChooseWithBitFlagFunctions = void 0;
10
+ exports.addExtractNthBit = exports.addUInt32s = exports.addEyeSpace = exports.addFrustum = exports.addShaderFlags = exports.addChooseVec3WithBitFlagFunction = exports.addChooseVec2WithBitFlagsFunction = void 0;
11
11
  const webgl_compatibility_1 = require("@itwin/webgl-compatibility");
12
12
  const System_1 = require("../System");
13
13
  const Vertex_1 = require("./Vertex");
14
- const chooseFloatWithBitFlag = `
15
- float chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }
14
+ // These are not used anywhere currently, but will leave them here commented out in case we want them later.
15
+ // const chooseFloatWithBitFlag = `
16
+ // float chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }
17
+ // `;
18
+ // const chooseFloatWithBitFlag2 = `
19
+ // float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }
20
+ // `;
21
+ const chooseVec2With2BitFlags = `
22
+ vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, float flags, float n1, float n2) { return (nthBitSet(flags, n1) || nthBitSet(flags, n2)) ? v2 : v1; }
16
23
  `;
17
- const chooseFloatWithBitFlag2 = `
18
- float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }
19
- `;
20
- const chooseVec2WithBitFlag = `
21
- vec2 chooseVec2WithBitFlag(vec2 v1, vec2 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }
22
- `;
23
- const chooseVec2WithBitFlag2 = `
24
- vec2 chooseVec2WithBitFlag(vec2 v1, vec2 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }
24
+ const chooseVec2With2BitFlags2 = `
25
+ vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }
25
26
  `;
26
27
  const chooseVec3WithBitFlag = `
27
28
  vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }
@@ -30,42 +31,36 @@ const chooseVec3WithBitFlag2 = `
30
31
  vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }
31
32
  `;
32
33
  /** @internal */
33
- function addChooseWithBitFlagFunctions(shader) {
34
+ function addChooseVec2WithBitFlagsFunction(shader) {
34
35
  if (System_1.System.instance.capabilities.isWebGL2) {
35
36
  shader.addFunction(extractNthBit2);
36
- shader.addFunction(chooseFloatWithBitFlag2);
37
- shader.addFunction(chooseVec2WithBitFlag2);
38
- shader.addFunction(chooseVec3WithBitFlag2);
37
+ shader.addFunction(chooseVec2With2BitFlags2);
39
38
  }
40
39
  else {
41
40
  shader.addFunction(nthBitSet);
42
- shader.addFunction(chooseFloatWithBitFlag);
43
- shader.addFunction(chooseVec2WithBitFlag);
44
- shader.addFunction(chooseVec3WithBitFlag);
41
+ shader.addFunction(chooseVec2With2BitFlags);
45
42
  }
46
43
  }
47
- exports.addChooseWithBitFlagFunctions = addChooseWithBitFlagFunctions;
48
- function addShaderFlagsLookup(shader) {
49
- shader.addConstant("kShaderBit_Monochrome", 1 /* Int */, "0");
50
- shader.addConstant("kShaderBit_NonUniformColor", 1 /* Int */, "1");
51
- shader.addConstant("kShaderBit_OITFlatAlphaWeight", 1 /* Int */, "2");
52
- shader.addConstant("kShaderBit_OITScaleOutput", 1 /* Int */, "3");
53
- shader.addConstant("kShaderBit_IgnoreNonLocatable", 1 /* Int */, "4");
54
- addChooseWithBitFlagFunctions(shader);
44
+ exports.addChooseVec2WithBitFlagsFunction = addChooseVec2WithBitFlagsFunction;
45
+ /** @internal */
46
+ function addChooseVec3WithBitFlagFunction(shader) {
55
47
  if (System_1.System.instance.capabilities.isWebGL2) {
56
48
  shader.addFunction(extractNthBit2);
57
- shader.addFunction(chooseFloatWithBitFlag2);
58
- shader.addFunction(chooseVec2WithBitFlag2);
59
49
  shader.addFunction(chooseVec3WithBitFlag2);
60
50
  }
61
51
  else {
62
52
  shader.addFunction(nthBitSet);
63
- shader.addFunction(extractNthBit);
64
- shader.addFunction(chooseFloatWithBitFlag);
65
- shader.addFunction(chooseVec2WithBitFlag);
66
53
  shader.addFunction(chooseVec3WithBitFlag);
67
54
  }
68
55
  }
56
+ exports.addChooseVec3WithBitFlagFunction = addChooseVec3WithBitFlagFunction;
57
+ function addShaderFlagsConstants(shader) {
58
+ shader.addConstant("kShaderBit_Monochrome", 1 /* Int */, "0");
59
+ shader.addConstant("kShaderBit_NonUniformColor", 1 /* Int */, "1");
60
+ shader.addConstant("kShaderBit_OITFlatAlphaWeight", 1 /* Int */, "2");
61
+ shader.addConstant("kShaderBit_OITScaleOutput", 1 /* Int */, "3");
62
+ shader.addConstant("kShaderBit_IgnoreNonLocatable", 1 /* Int */, "4");
63
+ }
69
64
  const shaderFlagArray = new Int32Array(5);
70
65
  const kShaderBitMonochrome = 0;
71
66
  const kShaderBitNonUniformColor = 1;
@@ -112,8 +107,8 @@ function setShaderFlags(uniform, params) {
112
107
  }
113
108
  /** @internal */
114
109
  function addShaderFlags(builder) {
115
- addShaderFlagsLookup(builder.vert);
116
- addShaderFlagsLookup(builder.frag);
110
+ addShaderFlagsConstants(builder.vert);
111
+ addShaderFlagsConstants(builder.frag);
117
112
  builder.addUniformArray("u_shaderFlags", 0 /* Boolean */, 5, (prog) => {
118
113
  prog.addGraphicUniform("u_shaderFlags", (uniform, params) => setShaderFlags(uniform, params));
119
114
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.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 { RenderType } from \"@itwin/webgl-compatibility\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\nconst chooseFloatWithBitFlag = `\r\nfloat chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }\r\n`;\r\nconst chooseFloatWithBitFlag2 = `\r\nfloat chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\r\n`;\r\n\r\nconst chooseVec2WithBitFlag = `\r\nvec2 chooseVec2WithBitFlag(vec2 v1, vec2 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }\r\n`;\r\nconst chooseVec2WithBitFlag2 = `\r\nvec2 chooseVec2WithBitFlag(vec2 v1, vec2 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\nconst chooseVec3WithBitFlag = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }\r\n`;\r\nconst chooseVec3WithBitFlag2 = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addChooseWithBitFlagFunctions(shader: ShaderBuilder) {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseFloatWithBitFlag2);\r\n shader.addFunction(chooseVec2WithBitFlag2);\r\n shader.addFunction(chooseVec3WithBitFlag2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(chooseFloatWithBitFlag);\r\n shader.addFunction(chooseVec2WithBitFlag);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n }\r\n}\r\n\r\nfunction addShaderFlagsLookup(shader: ShaderBuilder) {\r\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\r\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\r\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\r\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\r\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\r\n addChooseWithBitFlagFunctions(shader);\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseFloatWithBitFlag2);\r\n shader.addFunction(chooseVec2WithBitFlag2);\r\n shader.addFunction(chooseVec3WithBitFlag2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n shader.addFunction(chooseFloatWithBitFlag);\r\n shader.addFunction(chooseVec2WithBitFlag);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n }\r\n}\r\n\r\nconst shaderFlagArray = new Int32Array(5);\r\nconst kShaderBitMonochrome = 0;\r\nconst kShaderBitNonUniformColor = 1;\r\nconst kShaderBitOITFlatAlphaWeight = 2;\r\nconst kShaderBitOITScaleOutput = 3;\r\nconst kShaderBitIgnoreNonLocatable = 4;\r\n\r\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\r\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\r\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\r\n\r\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\r\n\r\n const geom = params.geometry.asLUT;\r\n if (undefined !== geom) {\r\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\r\n const color = geom.getColor(params.target);\r\n if (color.isNonUniform)\r\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\r\n }\r\n\r\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\r\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\r\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\r\n\r\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\r\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\r\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\r\n // this algorithm on low-end hardware.\r\n\r\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\r\n const maxRenderType = System.instance.capabilities.maxRenderType;\r\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\r\n if (!flatAlphaWeight) {\r\n const surface = params.geometry.asSurface;\r\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\r\n }\r\n\r\n if (flatAlphaWeight)\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\r\n\r\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\r\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\r\n if (maxRenderType < RenderType.TextureHalfFloat)\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\r\n\r\n if (!params.target.drawNonLocatable)\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\r\n\r\n uniform.setUniform1iv(shaderFlagArray);\r\n}\r\n\r\n/** @internal */\r\nexport function addShaderFlags(builder: ProgramBuilder) {\r\n addShaderFlagsLookup(builder.vert);\r\n addShaderFlagsLookup(builder.frag);\r\n\r\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\r\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addFrustum(builder: ProgramBuilder) {\r\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\r\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\r\n });\r\n });\r\n\r\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\r\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\r\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\r\n}\r\n\r\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\r\n\r\n/** @internal */\r\nexport function addEyeSpace(builder: ProgramBuilder) {\r\n addModelViewMatrix(builder.vert);\r\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\r\n}\r\n\r\n/** @internal */\r\nexport const addUInt32s = `\r\nvec4 addUInt32s(vec4 a, vec4 b) {\r\n vec4 c = a + b;\r\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\r\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\r\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\r\n return c;\r\n}\r\n`;\r\n\r\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\r\n * (Note that this really won't work for more than [0-22] since a float doesn't have the precision.)\r\n * Returns 1.0 if the nth bit is set, 0.0 otherwise.\r\n * dividing flags by 2^(n+1) yields #.5##... if the nth bit is set, #.0##... otherwise\r\n * Taking the fractional part yields 0.5##... or 0.0##...\r\n * Multiplying by 2.0 and taking the floor yields 1.0 or 0.0\r\n * but we'll take a shortcut and just test for >= 0.5 since most often we just want a bool answer.\r\n * For WebGL1 we'll also pre-compute the 1/(2^(n+1)) and just do a single multiply here.\r\n * @internal\r\n */\r\nconst nthBitSet = `\r\nbool nthBitSet(float flags, float n) { return fract(flags*n) >= 0.5; }\r\n`;\r\n/** Version for WebGL2 can just convert flags to a uint and bitwise-test a 0-31 uint bit.\r\n * @internal\r\n */\r\nconst nthBitSet2 = `\r\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\r\n`;\r\n\r\n/** For when we want a 1.0 or 0.0 answer the choose operator should be a single instruction.\r\n * @internal\r\n */\r\nconst extractNthBit = `\r\nfloat extractNthBit(float flags, float n) { return nthBitSet(flags, n) ? 1.0 : 0.0; }\r\n`;\r\n/** @internal */\r\nconst extractNthBit2 = `\r\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addExtractNthBit(shader: ShaderBuilder): void {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(nthBitSet2);\r\n shader.addFunction(extractNthBit2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.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 { RenderType } from \"@itwin/webgl-compatibility\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\n// These are not used anywhere currently, but will leave them here commented out in case we want them later.\r\n// const chooseFloatWithBitFlag = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, float flags, float n) { return nthBitSet(flags, n) ? f2 : f1; }\r\n// `;\r\n// const chooseFloatWithBitFlag2 = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\r\n// `;\r\n\r\nconst chooseVec2With2BitFlags = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, float flags, float n1, float n2) { return (nthBitSet(flags, n1) || nthBitSet(flags, n2)) ? v2 : v1; }\r\n`;\r\nconst chooseVec2With2BitFlags2 = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }\r\n`;\r\n\r\nconst chooseVec3WithBitFlag = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, float flags, float n) { return nthBitSet(flags, n) ? v2 : v1; }\r\n`;\r\nconst chooseVec3WithBitFlag2 = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder) {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseVec2With2BitFlags2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(chooseVec2With2BitFlags);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder) {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(extractNthBit2);\r\n shader.addFunction(chooseVec3WithBitFlag2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n }\r\n}\r\n\r\nfunction addShaderFlagsConstants(shader: ShaderBuilder) {\r\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\r\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\r\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\r\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\r\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\r\n}\r\n\r\nconst shaderFlagArray = new Int32Array(5);\r\nconst kShaderBitMonochrome = 0;\r\nconst kShaderBitNonUniformColor = 1;\r\nconst kShaderBitOITFlatAlphaWeight = 2;\r\nconst kShaderBitOITScaleOutput = 3;\r\nconst kShaderBitIgnoreNonLocatable = 4;\r\n\r\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\r\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\r\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\r\n\r\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\r\n\r\n const geom = params.geometry.asLUT;\r\n if (undefined !== geom) {\r\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\r\n const color = geom.getColor(params.target);\r\n if (color.isNonUniform)\r\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\r\n }\r\n\r\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\r\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\r\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\r\n\r\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\r\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\r\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\r\n // this algorithm on low-end hardware.\r\n\r\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\r\n const maxRenderType = System.instance.capabilities.maxRenderType;\r\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\r\n if (!flatAlphaWeight) {\r\n const surface = params.geometry.asSurface;\r\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\r\n }\r\n\r\n if (flatAlphaWeight)\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\r\n\r\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\r\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\r\n if (maxRenderType < RenderType.TextureHalfFloat)\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\r\n\r\n if (!params.target.drawNonLocatable)\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\r\n\r\n uniform.setUniform1iv(shaderFlagArray);\r\n}\r\n\r\n/** @internal */\r\nexport function addShaderFlags(builder: ProgramBuilder) {\r\n addShaderFlagsConstants(builder.vert);\r\n addShaderFlagsConstants(builder.frag);\r\n\r\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\r\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addFrustum(builder: ProgramBuilder) {\r\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\r\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\r\n });\r\n });\r\n\r\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\r\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\r\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\r\n}\r\n\r\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\r\n\r\n/** @internal */\r\nexport function addEyeSpace(builder: ProgramBuilder) {\r\n addModelViewMatrix(builder.vert);\r\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\r\n}\r\n\r\n/** @internal */\r\nexport const addUInt32s = `\r\nvec4 addUInt32s(vec4 a, vec4 b) {\r\n vec4 c = a + b;\r\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\r\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\r\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\r\n return c;\r\n}\r\n`;\r\n\r\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\r\n * (Note that this really won't work for more than [0-22] since a float doesn't have the precision.)\r\n * Returns 1.0 if the nth bit is set, 0.0 otherwise.\r\n * dividing flags by 2^(n+1) yields #.5##... if the nth bit is set, #.0##... otherwise\r\n * Taking the fractional part yields 0.5##... or 0.0##...\r\n * Multiplying by 2.0 and taking the floor yields 1.0 or 0.0\r\n * but we'll take a shortcut and just test for >= 0.5 since most often we just want a bool answer.\r\n * For WebGL1 we'll also pre-compute the 1/(2^(n+1)) and just do a single multiply here.\r\n * @internal\r\n */\r\nconst nthBitSet = `\r\nbool nthBitSet(float flags, float n) { return fract(flags*n) >= 0.5; }\r\n`;\r\n/** Version for WebGL2 can just convert flags to a uint and bitwise-test a 0-31 uint bit.\r\n * @internal\r\n */\r\nconst nthBitSet2 = `\r\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\r\n`;\r\n\r\n/** For when we want a 1.0 or 0.0 answer the choose operator should be a single instruction.\r\n * @internal\r\n */\r\nconst extractNthBit = `\r\nfloat extractNthBit(float flags, float n) { return nthBitSet(flags, n) ? 1.0 : 0.0; }\r\n`;\r\n/** @internal */\r\nconst extractNthBit2 = `\r\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addExtractNthBit(shader: ShaderBuilder): void {\r\n if (System.instance.capabilities.isWebGL2) {\r\n shader.addFunction(nthBitSet2);\r\n shader.addFunction(extractNthBit2);\r\n } else {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n }\r\n}\r\n"]}
@@ -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"}