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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1302) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuSnap.js +3 -3
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +10 -5
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  9. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  11. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  12. package/lib/cjs/BingLocation.js +2 -2
  13. package/lib/cjs/BingLocation.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js +1 -1
  15. package/lib/cjs/CheckpointConnection.js.map +1 -1
  16. package/lib/cjs/ContextRealityModelState.js +1 -1
  17. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  18. package/lib/cjs/DisplayStyleState.d.ts +10 -163
  19. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  20. package/lib/cjs/DisplayStyleState.js +69 -350
  21. package/lib/cjs/DisplayStyleState.js.map +1 -1
  22. package/lib/cjs/DrawingViewState.d.ts +2 -2
  23. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  24. package/lib/cjs/DrawingViewState.js +3 -3
  25. package/lib/cjs/DrawingViewState.js.map +1 -1
  26. package/lib/cjs/ElementLocateManager.d.ts +5 -0
  27. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  28. package/lib/cjs/ElementLocateManager.js +12 -2
  29. package/lib/cjs/ElementLocateManager.js.map +1 -1
  30. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  31. package/lib/cjs/EmphasizeElements.js +14 -4
  32. package/lib/cjs/EmphasizeElements.js.map +1 -1
  33. package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
  34. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
  35. package/lib/cjs/EnvironmentDecorations.js +200 -0
  36. package/lib/cjs/EnvironmentDecorations.js.map +1 -0
  37. package/lib/cjs/FrontendHubAccess.d.ts +11 -7
  38. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  39. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  40. package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
  41. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  42. package/lib/cjs/FrontendLoggerCategory.js +2 -8
  43. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  44. package/lib/cjs/HitDetail.js +7 -7
  45. package/lib/cjs/HitDetail.js.map +1 -1
  46. package/lib/cjs/IModelApp.d.ts +31 -24
  47. package/lib/cjs/IModelApp.d.ts.map +1 -1
  48. package/lib/cjs/IModelApp.js +35 -36
  49. package/lib/cjs/IModelApp.js.map +1 -1
  50. package/lib/cjs/IModelConnection.d.ts +4 -6
  51. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  52. package/lib/cjs/IModelConnection.js +6 -11
  53. package/lib/cjs/IModelConnection.js.map +1 -1
  54. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  55. package/lib/cjs/IModeljs-css.js +8 -6
  56. package/lib/cjs/IModeljs-css.js.map +1 -1
  57. package/lib/cjs/ImageUtil.d.ts +3 -3
  58. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  59. package/lib/cjs/ImageUtil.js +7 -4
  60. package/lib/cjs/ImageUtil.js.map +1 -1
  61. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  62. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  63. package/lib/cjs/LocalhostIpcApp.js +21 -7
  64. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  65. package/lib/cjs/Marker.d.ts +9 -2
  66. package/lib/cjs/Marker.d.ts.map +1 -1
  67. package/lib/cjs/Marker.js +33 -5
  68. package/lib/cjs/Marker.js.map +1 -1
  69. package/lib/cjs/ModelState.js +1 -1
  70. package/lib/cjs/ModelState.js.map +1 -1
  71. package/lib/cjs/NativeApp.d.ts +3 -38
  72. package/lib/cjs/NativeApp.d.ts.map +1 -1
  73. package/lib/cjs/NativeApp.js +4 -73
  74. package/lib/cjs/NativeApp.js.map +1 -1
  75. package/lib/cjs/NoRenderApp.d.ts +0 -1
  76. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  77. package/lib/cjs/NoRenderApp.js +0 -1
  78. package/lib/cjs/NoRenderApp.js.map +1 -1
  79. package/lib/cjs/NotificationManager.d.ts +3 -1
  80. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  81. package/lib/cjs/NotificationManager.js +2 -0
  82. package/lib/cjs/NotificationManager.js.map +1 -1
  83. package/lib/cjs/RealityDataSource.d.ts +59 -29
  84. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  85. package/lib/cjs/RealityDataSource.js +247 -94
  86. package/lib/cjs/RealityDataSource.js.map +1 -1
  87. package/lib/cjs/RenderScheduleState.d.ts +2 -0
  88. package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
  89. package/lib/cjs/RenderScheduleState.js +10 -5
  90. package/lib/cjs/RenderScheduleState.js.map +1 -1
  91. package/lib/cjs/SheetViewState.d.ts +2 -2
  92. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  93. package/lib/cjs/SheetViewState.js +8 -9
  94. package/lib/cjs/SheetViewState.js.map +1 -1
  95. package/lib/cjs/SpatialViewState.d.ts +10 -2
  96. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  97. package/lib/cjs/SpatialViewState.js +12 -2
  98. package/lib/cjs/SpatialViewState.js.map +1 -1
  99. package/lib/cjs/SubCategoriesCache.js +1 -1
  100. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  101. package/lib/cjs/Tiles.d.ts +11 -1
  102. package/lib/cjs/Tiles.d.ts.map +1 -1
  103. package/lib/cjs/Tiles.js +7 -0
  104. package/lib/cjs/Tiles.js.map +1 -1
  105. package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
  106. package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
  107. package/lib/cjs/TwoWayViewportSync.js +51 -11
  108. package/lib/cjs/TwoWayViewportSync.js.map +1 -1
  109. package/lib/cjs/UserPreferences.d.ts +72 -0
  110. package/lib/cjs/UserPreferences.d.ts.map +1 -0
  111. package/lib/cjs/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  112. package/lib/cjs/UserPreferences.js.map +1 -0
  113. package/lib/cjs/ViewContext.d.ts +3 -1
  114. package/lib/cjs/ViewContext.d.ts.map +1 -1
  115. package/lib/cjs/ViewContext.js +4 -0
  116. package/lib/cjs/ViewContext.js.map +1 -1
  117. package/lib/cjs/ViewCreator2d.js +3 -3
  118. package/lib/cjs/ViewCreator2d.js.map +1 -1
  119. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  120. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  121. package/lib/cjs/ViewCreator3d.js +4 -5
  122. package/lib/cjs/ViewCreator3d.js.map +1 -1
  123. package/lib/cjs/ViewManager.d.ts +6 -6
  124. package/lib/cjs/ViewManager.d.ts.map +1 -1
  125. package/lib/cjs/ViewManager.js +13 -13
  126. package/lib/cjs/ViewManager.js.map +1 -1
  127. package/lib/cjs/ViewState.d.ts +11 -5
  128. package/lib/cjs/ViewState.d.ts.map +1 -1
  129. package/lib/cjs/ViewState.js +18 -63
  130. package/lib/cjs/ViewState.js.map +1 -1
  131. package/lib/cjs/ViewingSpace.js +1 -1
  132. package/lib/cjs/ViewingSpace.js.map +1 -1
  133. package/lib/cjs/Viewport.d.ts +57 -11
  134. package/lib/cjs/Viewport.d.ts.map +1 -1
  135. package/lib/cjs/Viewport.js +55 -31
  136. package/lib/cjs/Viewport.js.map +1 -1
  137. package/lib/cjs/core-frontend.d.ts +17 -31
  138. package/lib/cjs/core-frontend.d.ts.map +1 -1
  139. package/lib/cjs/core-frontend.js +17 -31
  140. package/lib/cjs/core-frontend.js.map +1 -1
  141. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  142. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  143. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  144. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  145. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  146. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  147. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  148. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  149. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  150. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  151. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  152. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  153. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  154. package/lib/cjs/render/FeatureSymbology.js +3 -3
  155. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  156. package/lib/cjs/render/GraphicBranch.d.ts +18 -2
  157. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.js +9 -1
  159. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  160. package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
  161. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  162. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  163. package/lib/cjs/render/MockRender.d.ts +3 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/MockRender.js.map +1 -1
  166. package/lib/cjs/render/RenderMaterial.d.ts +61 -0
  167. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
  168. package/lib/cjs/render/RenderMaterial.js +10 -0
  169. package/lib/cjs/render/RenderMaterial.js.map +1 -0
  170. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  171. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderMemory.js +21 -15
  173. package/lib/cjs/render/RenderMemory.js.map +1 -1
  174. package/lib/cjs/render/RenderSystem.d.ts +44 -7
  175. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderSystem.js +32 -9
  177. package/lib/cjs/render/RenderSystem.js.map +1 -1
  178. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  179. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  180. package/lib/cjs/render/RenderTarget.js +2 -1
  181. package/lib/cjs/render/RenderTarget.js.map +1 -1
  182. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  183. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  184. package/lib/cjs/render/RenderTexture.js +0 -17
  185. package/lib/cjs/render/RenderTexture.js.map +1 -1
  186. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  187. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  188. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  189. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  190. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  191. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  192. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  193. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  194. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  195. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  196. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  197. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  198. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  199. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  200. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  201. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  202. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  203. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  204. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  205. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  206. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  207. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  208. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  210. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  211. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  213. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  214. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  215. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  217. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  218. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  219. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  220. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  221. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  222. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  223. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  224. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  225. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  226. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  228. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  229. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  230. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  231. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  232. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  234. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  235. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  236. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  237. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  238. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  239. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  240. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  241. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  242. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  244. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  245. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  246. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  247. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  248. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  249. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/Graphic.js +41 -3
  251. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  252. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  253. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  254. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  255. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  256. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  257. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  258. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  259. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  260. package/lib/cjs/render/webgl/LightingUniforms.d.ts +1 -0
  261. package/lib/cjs/render/webgl/LightingUniforms.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/LightingUniforms.js +4 -1
  263. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  264. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  265. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  266. package/lib/cjs/render/webgl/Material.js +2 -0
  267. package/lib/cjs/render/webgl/Material.js.map +1 -1
  268. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  269. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  270. package/lib/cjs/render/webgl/Mesh.js +18 -458
  271. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  272. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  273. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  274. package/lib/cjs/render/webgl/MeshData.js +66 -0
  275. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  276. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  277. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  278. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  279. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  280. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  281. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  282. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  283. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  284. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  285. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  286. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  287. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  288. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  289. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  290. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  291. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  292. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  293. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  294. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  295. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  296. package/lib/cjs/render/webgl/PointString.js +1 -1
  297. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  298. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  299. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  300. package/lib/cjs/render/webgl/Polyline.js +6 -6
  301. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  302. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  303. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  304. package/lib/cjs/render/webgl/Primitive.js +5 -5
  305. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  306. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  307. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  308. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  309. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  310. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  311. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  313. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  314. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  315. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  316. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  317. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  318. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  319. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  320. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  321. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  322. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  324. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  325. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  326. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  327. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  328. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  329. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  330. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  331. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  332. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  333. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  334. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  335. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  336. package/lib/cjs/render/webgl/System.d.ts +13 -10
  337. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  338. package/lib/cjs/render/webgl/System.js +75 -21
  339. package/lib/cjs/render/webgl/System.js.map +1 -1
  340. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  341. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  342. package/lib/cjs/render/webgl/Target.js +88 -2
  343. package/lib/cjs/render/webgl/Target.js.map +1 -1
  344. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  345. package/lib/cjs/render/webgl/Technique.js +112 -119
  346. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  347. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  348. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  350. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  351. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  352. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  354. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  355. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  356. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  357. package/lib/cjs/render/webgl/Texture.js +26 -23
  358. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  360. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  361. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  362. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  363. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  364. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  365. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  366. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  367. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  368. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  369. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  370. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  372. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  373. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  374. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  375. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  376. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  377. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  378. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  380. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  381. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  382. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  383. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  384. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  385. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  387. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  388. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  389. package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/Lighting.js +16 -2
  391. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  392. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  393. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  394. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  395. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  396. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  398. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  399. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  400. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  401. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  402. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  403. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  404. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  405. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  406. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  407. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  408. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  409. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  410. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  411. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  412. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  413. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  414. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  415. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  416. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  417. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  418. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  419. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  420. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  421. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  422. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  423. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  424. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  425. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  426. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  427. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  428. package/lib/cjs/render-primitives.d.ts +5 -1
  429. package/lib/cjs/render-primitives.d.ts.map +1 -1
  430. package/lib/cjs/render-primitives.js +5 -1
  431. package/lib/cjs/render-primitives.js.map +1 -1
  432. package/lib/cjs/request/Request.d.ts +167 -0
  433. package/lib/cjs/request/Request.d.ts.map +1 -0
  434. package/lib/cjs/request/Request.js +315 -0
  435. package/lib/cjs/request/Request.js.map +1 -0
  436. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  437. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  438. package/lib/cjs/tile/B3dmReader.js +11 -7
  439. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  440. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  441. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  442. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  443. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  444. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  445. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  446. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  447. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  448. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  449. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  450. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  451. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  452. package/lib/cjs/tile/GltfReader.js +703 -264
  453. package/lib/cjs/tile/GltfReader.js.map +1 -1
  454. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  455. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  456. package/lib/cjs/tile/I3dmReader.js +10 -6
  457. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  458. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  459. package/lib/cjs/tile/IModelTile.js +14 -7
  460. package/lib/cjs/tile/IModelTile.js.map +1 -1
  461. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  462. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  463. package/lib/cjs/tile/IModelTileTree.js +36 -1
  464. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  465. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  466. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  467. package/lib/cjs/tile/ImdlReader.js +202 -68
  468. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  469. package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
  470. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/OrbitGtTileTree.js +10 -20
  472. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  473. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  474. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  475. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  476. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  477. package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -41
  478. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  479. package/lib/cjs/tile/RealityModelTileTree.js +57 -217
  480. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  481. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  482. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  483. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  484. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  485. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  486. package/lib/cjs/tile/Tile.js +5 -1
  487. package/lib/cjs/tile/Tile.js.map +1 -1
  488. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  489. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  490. package/lib/cjs/tile/TileAdmin.js +18 -12
  491. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  492. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  493. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  494. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  495. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  496. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  497. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  498. package/lib/cjs/tile/TileTreeReference.js +5 -0
  499. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  500. package/lib/cjs/tile/internal.d.ts +4 -1
  501. package/lib/cjs/tile/internal.d.ts.map +1 -1
  502. package/lib/cjs/tile/internal.js +4 -1
  503. package/lib/cjs/tile/internal.js.map +1 -1
  504. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  505. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  506. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  507. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  508. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  509. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  510. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  511. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  512. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  513. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  514. package/lib/cjs/tile/map/BingElevation.js +4 -4
  515. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  516. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  517. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  518. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  519. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  520. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  521. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  522. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  523. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  524. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  525. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  526. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  527. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  528. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  529. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  530. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  531. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  532. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  533. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  534. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  535. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  536. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  537. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  538. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  539. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  540. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  541. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  542. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  543. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  544. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  545. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  546. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  547. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  548. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  549. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  550. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  551. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  552. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  553. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  554. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  555. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  556. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  557. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  558. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  559. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  560. package/lib/cjs/tile/map/MapTile.js +4 -3
  561. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  562. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  563. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  564. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  565. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  566. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  567. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  568. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  569. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  570. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  571. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  572. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  573. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  574. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  575. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  576. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  577. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  578. package/lib/cjs/tile/map/QuadId.js +2 -1
  579. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  580. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  581. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  582. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  583. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  584. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  585. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  586. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  587. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  588. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  589. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  590. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  591. package/lib/cjs/tools/EditManipulator.js +1 -1
  592. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  593. package/lib/cjs/tools/ElementSetTool.js +2 -2
  594. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  595. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  596. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  597. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  598. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  599. package/lib/cjs/tools/Tool.d.ts +29 -1
  600. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  601. package/lib/cjs/tools/Tool.js +66 -0
  602. package/lib/cjs/tools/Tool.js.map +1 -1
  603. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  604. package/lib/cjs/tools/ToolAdmin.js +20 -10
  605. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  606. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  607. package/lib/cjs/tools/ViewTool.js +3 -11
  608. package/lib/cjs/tools/ViewTool.js.map +1 -1
  609. package/lib/cjs/webgl.d.ts +5 -0
  610. package/lib/cjs/webgl.d.ts.map +1 -1
  611. package/lib/cjs/webgl.js +5 -0
  612. package/lib/cjs/webgl.js.map +1 -1
  613. package/lib/esm/AccuSnap.js +3 -3
  614. package/lib/esm/AccuSnap.js.map +1 -1
  615. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  616. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  617. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  618. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  619. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  620. package/lib/esm/BackgroundMapGeometry.js +2 -2
  621. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  622. package/lib/esm/BingLocation.js +1 -1
  623. package/lib/esm/BingLocation.js.map +1 -1
  624. package/lib/esm/CheckpointConnection.js +1 -1
  625. package/lib/esm/CheckpointConnection.js.map +1 -1
  626. package/lib/esm/ContextRealityModelState.js +1 -1
  627. package/lib/esm/ContextRealityModelState.js.map +1 -1
  628. package/lib/esm/DisplayStyleState.d.ts +10 -163
  629. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  630. package/lib/esm/DisplayStyleState.js +70 -346
  631. package/lib/esm/DisplayStyleState.js.map +1 -1
  632. package/lib/esm/DrawingViewState.d.ts +2 -2
  633. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  634. package/lib/esm/DrawingViewState.js +3 -3
  635. package/lib/esm/DrawingViewState.js.map +1 -1
  636. package/lib/esm/ElementLocateManager.d.ts +5 -0
  637. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  638. package/lib/esm/ElementLocateManager.js +12 -2
  639. package/lib/esm/ElementLocateManager.js.map +1 -1
  640. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  641. package/lib/esm/EmphasizeElements.js +14 -4
  642. package/lib/esm/EmphasizeElements.js.map +1 -1
  643. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  644. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  645. package/lib/esm/EnvironmentDecorations.js +196 -0
  646. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  647. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  648. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  649. package/lib/esm/FrontendHubAccess.js.map +1 -1
  650. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  651. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  652. package/lib/esm/FrontendLoggerCategory.js +2 -8
  653. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  654. package/lib/esm/HitDetail.js +7 -7
  655. package/lib/esm/HitDetail.js.map +1 -1
  656. package/lib/esm/IModelApp.d.ts +31 -24
  657. package/lib/esm/IModelApp.d.ts.map +1 -1
  658. package/lib/esm/IModelApp.js +34 -35
  659. package/lib/esm/IModelApp.js.map +1 -1
  660. package/lib/esm/IModelConnection.d.ts +4 -6
  661. package/lib/esm/IModelConnection.d.ts.map +1 -1
  662. package/lib/esm/IModelConnection.js +6 -11
  663. package/lib/esm/IModelConnection.js.map +1 -1
  664. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  665. package/lib/esm/IModeljs-css.js +8 -6
  666. package/lib/esm/IModeljs-css.js.map +1 -1
  667. package/lib/esm/ImageUtil.d.ts +3 -3
  668. package/lib/esm/ImageUtil.d.ts.map +1 -1
  669. package/lib/esm/ImageUtil.js +7 -4
  670. package/lib/esm/ImageUtil.js.map +1 -1
  671. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  672. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  673. package/lib/esm/LocalhostIpcApp.js +22 -8
  674. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  675. package/lib/esm/Marker.d.ts +9 -2
  676. package/lib/esm/Marker.d.ts.map +1 -1
  677. package/lib/esm/Marker.js +34 -6
  678. package/lib/esm/Marker.js.map +1 -1
  679. package/lib/esm/ModelState.js +1 -1
  680. package/lib/esm/ModelState.js.map +1 -1
  681. package/lib/esm/NativeApp.d.ts +3 -38
  682. package/lib/esm/NativeApp.d.ts.map +1 -1
  683. package/lib/esm/NativeApp.js +1 -69
  684. package/lib/esm/NativeApp.js.map +1 -1
  685. package/lib/esm/NoRenderApp.d.ts +0 -1
  686. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  687. package/lib/esm/NoRenderApp.js +0 -1
  688. package/lib/esm/NoRenderApp.js.map +1 -1
  689. package/lib/esm/NotificationManager.d.ts +3 -1
  690. package/lib/esm/NotificationManager.d.ts.map +1 -1
  691. package/lib/esm/NotificationManager.js +2 -0
  692. package/lib/esm/NotificationManager.js.map +1 -1
  693. package/lib/esm/RealityDataSource.d.ts +59 -29
  694. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  695. package/lib/esm/RealityDataSource.js +247 -92
  696. package/lib/esm/RealityDataSource.js.map +1 -1
  697. package/lib/esm/RenderScheduleState.d.ts +2 -0
  698. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  699. package/lib/esm/RenderScheduleState.js +8 -4
  700. package/lib/esm/RenderScheduleState.js.map +1 -1
  701. package/lib/esm/SheetViewState.d.ts +2 -2
  702. package/lib/esm/SheetViewState.d.ts.map +1 -1
  703. package/lib/esm/SheetViewState.js +8 -9
  704. package/lib/esm/SheetViewState.js.map +1 -1
  705. package/lib/esm/SpatialViewState.d.ts +10 -2
  706. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  707. package/lib/esm/SpatialViewState.js +12 -2
  708. package/lib/esm/SpatialViewState.js.map +1 -1
  709. package/lib/esm/SubCategoriesCache.js +1 -1
  710. package/lib/esm/SubCategoriesCache.js.map +1 -1
  711. package/lib/esm/Tiles.d.ts +11 -1
  712. package/lib/esm/Tiles.d.ts.map +1 -1
  713. package/lib/esm/Tiles.js +7 -0
  714. package/lib/esm/Tiles.js.map +1 -1
  715. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  716. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  717. package/lib/esm/TwoWayViewportSync.js +49 -10
  718. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  719. package/lib/esm/UserPreferences.d.ts +72 -0
  720. package/lib/esm/UserPreferences.d.ts.map +1 -0
  721. package/lib/esm/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  722. package/lib/esm/UserPreferences.js.map +1 -0
  723. package/lib/esm/ViewContext.d.ts +3 -1
  724. package/lib/esm/ViewContext.d.ts.map +1 -1
  725. package/lib/esm/ViewContext.js +4 -0
  726. package/lib/esm/ViewContext.js.map +1 -1
  727. package/lib/esm/ViewCreator2d.js +3 -3
  728. package/lib/esm/ViewCreator2d.js.map +1 -1
  729. package/lib/esm/ViewCreator3d.d.ts +1 -1
  730. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  731. package/lib/esm/ViewCreator3d.js +5 -6
  732. package/lib/esm/ViewCreator3d.js.map +1 -1
  733. package/lib/esm/ViewManager.d.ts +6 -6
  734. package/lib/esm/ViewManager.d.ts.map +1 -1
  735. package/lib/esm/ViewManager.js +13 -13
  736. package/lib/esm/ViewManager.js.map +1 -1
  737. package/lib/esm/ViewState.d.ts +11 -5
  738. package/lib/esm/ViewState.d.ts.map +1 -1
  739. package/lib/esm/ViewState.js +21 -66
  740. package/lib/esm/ViewState.js.map +1 -1
  741. package/lib/esm/ViewingSpace.js +1 -1
  742. package/lib/esm/ViewingSpace.js.map +1 -1
  743. package/lib/esm/Viewport.d.ts +57 -11
  744. package/lib/esm/Viewport.d.ts.map +1 -1
  745. package/lib/esm/Viewport.js +56 -32
  746. package/lib/esm/Viewport.js.map +1 -1
  747. package/lib/esm/core-frontend.d.ts +17 -31
  748. package/lib/esm/core-frontend.d.ts.map +1 -1
  749. package/lib/esm/core-frontend.js +17 -31
  750. package/lib/esm/core-frontend.js.map +1 -1
  751. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  752. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  753. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  754. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  755. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  756. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  757. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  758. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  759. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  760. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  761. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  762. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  763. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  764. package/lib/esm/render/FeatureSymbology.js +3 -3
  765. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  766. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  767. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  768. package/lib/esm/render/GraphicBranch.js +8 -0
  769. package/lib/esm/render/GraphicBranch.js.map +1 -1
  770. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  771. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  772. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  773. package/lib/esm/render/MockRender.d.ts +3 -1
  774. package/lib/esm/render/MockRender.d.ts.map +1 -1
  775. package/lib/esm/render/MockRender.js.map +1 -1
  776. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  777. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  778. package/lib/esm/render/RenderMaterial.js +9 -0
  779. package/lib/esm/render/RenderMaterial.js.map +1 -0
  780. package/lib/esm/render/RenderMemory.d.ts +21 -15
  781. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  782. package/lib/esm/render/RenderMemory.js +21 -15
  783. package/lib/esm/render/RenderMemory.js.map +1 -1
  784. package/lib/esm/render/RenderSystem.d.ts +44 -7
  785. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  786. package/lib/esm/render/RenderSystem.js +32 -9
  787. package/lib/esm/render/RenderSystem.js.map +1 -1
  788. package/lib/esm/render/RenderTarget.d.ts +10 -2
  789. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  790. package/lib/esm/render/RenderTarget.js +2 -1
  791. package/lib/esm/render/RenderTarget.js.map +1 -1
  792. package/lib/esm/render/RenderTexture.d.ts +2 -17
  793. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  794. package/lib/esm/render/RenderTexture.js +1 -16
  795. package/lib/esm/render/RenderTexture.js.map +1 -1
  796. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  797. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  798. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  799. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  800. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  801. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  802. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  803. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  804. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  805. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  806. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  807. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  808. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  809. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  810. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  811. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  812. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  813. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  814. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  815. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  816. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  817. package/lib/esm/render/primitives/VertexTable.js +11 -342
  818. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  819. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  820. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  821. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  822. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  823. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  824. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  825. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  826. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  827. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  828. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  829. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  830. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  831. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  832. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  833. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  834. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  835. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  836. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  837. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  838. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  839. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  840. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  841. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  842. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  843. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  844. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  845. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  846. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  847. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  848. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  849. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  850. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  851. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  852. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  853. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  854. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  855. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  856. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  857. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  858. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  859. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/Graphic.js +39 -2
  861. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  862. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  863. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  864. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  865. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  866. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  867. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  868. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  869. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  870. package/lib/esm/render/webgl/LightingUniforms.d.ts +1 -0
  871. package/lib/esm/render/webgl/LightingUniforms.d.ts.map +1 -1
  872. package/lib/esm/render/webgl/LightingUniforms.js +4 -1
  873. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  874. package/lib/esm/render/webgl/Material.d.ts +1 -1
  875. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  876. package/lib/esm/render/webgl/Material.js +2 -0
  877. package/lib/esm/render/webgl/Material.js.map +1 -1
  878. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  879. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  880. package/lib/esm/render/webgl/Mesh.js +12 -445
  881. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  882. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  883. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  884. package/lib/esm/render/webgl/MeshData.js +62 -0
  885. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  886. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  887. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  888. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  889. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  890. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  891. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  892. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  893. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  894. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  895. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  896. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  897. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  899. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  900. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  901. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/PointCloud.js +2 -2
  903. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  904. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  905. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/PointString.js +1 -1
  907. package/lib/esm/render/webgl/PointString.js.map +1 -1
  908. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  909. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/Polyline.js +6 -6
  911. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  912. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  913. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  914. package/lib/esm/render/webgl/Primitive.js +5 -5
  915. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  916. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  917. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  918. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  919. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  920. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  921. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  922. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  923. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  924. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  925. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  926. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  927. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  928. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  929. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  930. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  931. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  932. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  933. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  934. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  935. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  936. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  937. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  938. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  939. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  940. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  941. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  942. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  943. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  944. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  945. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  946. package/lib/esm/render/webgl/System.d.ts +13 -10
  947. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  948. package/lib/esm/render/webgl/System.js +77 -23
  949. package/lib/esm/render/webgl/System.js.map +1 -1
  950. package/lib/esm/render/webgl/Target.d.ts +13 -1
  951. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  952. package/lib/esm/render/webgl/Target.js +88 -2
  953. package/lib/esm/render/webgl/Target.js.map +1 -1
  954. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  955. package/lib/esm/render/webgl/Technique.js +112 -119
  956. package/lib/esm/render/webgl/Technique.js.map +1 -1
  957. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  958. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  959. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  960. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  961. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  962. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  963. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  964. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  965. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  966. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  967. package/lib/esm/render/webgl/Texture.js +27 -24
  968. package/lib/esm/render/webgl/Texture.js.map +1 -1
  969. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  970. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  971. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  972. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  973. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  974. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  975. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  976. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  977. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  978. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  979. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  980. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  981. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  982. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  983. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  984. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  985. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  986. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  987. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  988. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  989. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  990. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  991. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  992. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  993. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  994. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  995. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  996. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  997. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  998. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  999. package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
  1000. package/lib/esm/render/webgl/glsl/Lighting.js +16 -2
  1001. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  1002. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  1003. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  1004. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  1005. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  1006. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  1007. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  1008. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  1009. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  1010. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  1011. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  1012. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  1013. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  1014. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  1015. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  1016. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  1017. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  1018. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  1019. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  1020. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  1021. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  1022. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  1023. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1024. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1025. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1026. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1027. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1028. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1029. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1030. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1031. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1032. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1033. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1034. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1035. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1036. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1037. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1038. package/lib/esm/render-primitives.d.ts +5 -1
  1039. package/lib/esm/render-primitives.d.ts.map +1 -1
  1040. package/lib/esm/render-primitives.js +5 -1
  1041. package/lib/esm/render-primitives.js.map +1 -1
  1042. package/lib/esm/request/Request.d.ts +167 -0
  1043. package/lib/esm/request/Request.d.ts.map +1 -0
  1044. package/lib/esm/request/Request.js +289 -0
  1045. package/lib/esm/request/Request.js.map +1 -0
  1046. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1047. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1048. package/lib/esm/tile/B3dmReader.js +12 -8
  1049. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1050. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1051. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1052. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1053. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1054. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1055. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1056. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1057. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1058. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1059. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1060. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1061. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1062. package/lib/esm/tile/GltfReader.js +678 -242
  1063. package/lib/esm/tile/GltfReader.js.map +1 -1
  1064. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1065. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1066. package/lib/esm/tile/I3dmReader.js +11 -7
  1067. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1068. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1069. package/lib/esm/tile/IModelTile.js +14 -7
  1070. package/lib/esm/tile/IModelTile.js.map +1 -1
  1071. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1072. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1073. package/lib/esm/tile/IModelTileTree.js +36 -1
  1074. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1075. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1076. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1077. package/lib/esm/tile/ImdlReader.js +199 -66
  1078. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1079. package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
  1080. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1081. package/lib/esm/tile/OrbitGtTileTree.js +10 -20
  1082. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1083. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1084. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1085. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1086. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1087. package/lib/esm/tile/RealityModelTileTree.d.ts +2 -41
  1088. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1089. package/lib/esm/tile/RealityModelTileTree.js +56 -215
  1090. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1091. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1092. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1093. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1094. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1095. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1096. package/lib/esm/tile/Tile.js +5 -1
  1097. package/lib/esm/tile/Tile.js.map +1 -1
  1098. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1099. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1100. package/lib/esm/tile/TileAdmin.js +19 -13
  1101. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1102. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1103. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1104. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1105. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1106. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1107. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1108. package/lib/esm/tile/TileTreeReference.js +5 -0
  1109. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1110. package/lib/esm/tile/internal.d.ts +4 -1
  1111. package/lib/esm/tile/internal.d.ts.map +1 -1
  1112. package/lib/esm/tile/internal.js +4 -1
  1113. package/lib/esm/tile/internal.js.map +1 -1
  1114. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1115. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1116. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1117. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1118. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1119. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1120. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1121. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1122. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1123. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1124. package/lib/esm/tile/map/BingElevation.js +1 -1
  1125. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1126. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1127. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1128. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1129. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1130. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1131. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1132. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1133. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1134. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1135. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1136. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1137. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1138. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1139. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1140. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1141. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1142. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1143. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1144. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1145. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1146. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1147. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1148. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1149. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1150. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1151. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1152. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1153. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1154. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1155. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1156. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1157. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1158. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1159. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1160. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1161. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1162. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1163. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1164. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1165. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1166. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1167. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1168. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1169. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1170. package/lib/esm/tile/map/MapTile.js +4 -3
  1171. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1172. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1173. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1174. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1175. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1176. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1177. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1178. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1179. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1180. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1181. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1182. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1183. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1184. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1185. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1186. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1187. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1188. package/lib/esm/tile/map/QuadId.js +2 -1
  1189. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1190. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1191. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1192. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1193. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1194. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1195. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1196. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1197. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1198. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1199. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1200. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1201. package/lib/esm/tools/EditManipulator.js +1 -1
  1202. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1203. package/lib/esm/tools/ElementSetTool.js +2 -2
  1204. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1205. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1206. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1207. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1208. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1209. package/lib/esm/tools/Tool.d.ts +29 -1
  1210. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1211. package/lib/esm/tools/Tool.js +66 -0
  1212. package/lib/esm/tools/Tool.js.map +1 -1
  1213. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1214. package/lib/esm/tools/ToolAdmin.js +20 -10
  1215. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1216. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1217. package/lib/esm/tools/ViewTool.js +3 -11
  1218. package/lib/esm/tools/ViewTool.js.map +1 -1
  1219. package/lib/esm/webgl.d.ts +5 -0
  1220. package/lib/esm/webgl.d.ts.map +1 -1
  1221. package/lib/esm/webgl.js +5 -0
  1222. package/lib/esm/webgl.js.map +1 -1
  1223. package/lib/public/locales/en/iModelJs.json +3 -1
  1224. package/package.json +33 -28
  1225. package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
  1226. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1227. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1228. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1229. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1230. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1231. package/lib/cjs/RealityDataConnection.js +0 -101
  1232. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1233. package/lib/cjs/extension/Extension.d.ts +0 -39
  1234. package/lib/cjs/extension/Extension.d.ts.map +0 -1
  1235. package/lib/cjs/extension/Extension.js +0 -39
  1236. package/lib/cjs/extension/Extension.js.map +0 -1
  1237. package/lib/cjs/extension/ExtensionAdmin.d.ts +0 -70
  1238. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +0 -1
  1239. package/lib/cjs/extension/ExtensionAdmin.js +0 -105
  1240. package/lib/cjs/extension/ExtensionAdmin.js.map +0 -1
  1241. package/lib/cjs/extension/ExtensionHost.d.ts +0 -20
  1242. package/lib/cjs/extension/ExtensionHost.d.ts.map +0 -1
  1243. package/lib/cjs/extension/ExtensionHost.js +0 -19
  1244. package/lib/cjs/extension/ExtensionHost.js.map +0 -1
  1245. package/lib/cjs/extension/ExtensionImpl.d.ts +0 -16
  1246. package/lib/cjs/extension/ExtensionImpl.d.ts.map +0 -1
  1247. package/lib/cjs/extension/ExtensionImpl.js +0 -40
  1248. package/lib/cjs/extension/ExtensionImpl.js.map +0 -1
  1249. package/lib/cjs/extension/ExtensionLoader.d.ts +0 -20
  1250. package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
  1251. package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
  1252. package/lib/cjs/extension/ExtensionRuntime.d.ts +0 -2
  1253. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +0 -1
  1254. package/lib/cjs/extension/ExtensionRuntime.js +0 -60
  1255. package/lib/cjs/extension/ExtensionRuntime.js.map +0 -1
  1256. package/lib/cjs/extension/extensions.d.ts +0 -18
  1257. package/lib/cjs/extension/extensions.d.ts.map +0 -1
  1258. package/lib/cjs/extension/extensions.js +0 -35
  1259. package/lib/cjs/extension/extensions.js.map +0 -1
  1260. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1261. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1262. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1263. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1264. package/lib/esm/RealityDataAccessProps.d.ts +0 -44
  1265. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1266. package/lib/esm/RealityDataAccessProps.js +0 -20
  1267. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1268. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1269. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1270. package/lib/esm/RealityDataConnection.js +0 -98
  1271. package/lib/esm/RealityDataConnection.js.map +0 -1
  1272. package/lib/esm/extension/Extension.d.ts +0 -39
  1273. package/lib/esm/extension/Extension.d.ts.map +0 -1
  1274. package/lib/esm/extension/Extension.js +0 -38
  1275. package/lib/esm/extension/Extension.js.map +0 -1
  1276. package/lib/esm/extension/ExtensionAdmin.d.ts +0 -70
  1277. package/lib/esm/extension/ExtensionAdmin.d.ts.map +0 -1
  1278. package/lib/esm/extension/ExtensionAdmin.js +0 -101
  1279. package/lib/esm/extension/ExtensionAdmin.js.map +0 -1
  1280. package/lib/esm/extension/ExtensionHost.d.ts +0 -20
  1281. package/lib/esm/extension/ExtensionHost.d.ts.map +0 -1
  1282. package/lib/esm/extension/ExtensionHost.js +0 -15
  1283. package/lib/esm/extension/ExtensionHost.js.map +0 -1
  1284. package/lib/esm/extension/ExtensionImpl.d.ts +0 -16
  1285. package/lib/esm/extension/ExtensionImpl.d.ts.map +0 -1
  1286. package/lib/esm/extension/ExtensionImpl.js +0 -35
  1287. package/lib/esm/extension/ExtensionImpl.js.map +0 -1
  1288. package/lib/esm/extension/ExtensionLoader.d.ts +0 -20
  1289. package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
  1290. package/lib/esm/extension/ExtensionLoader.js.map +0 -1
  1291. package/lib/esm/extension/ExtensionRuntime.d.ts +0 -2
  1292. package/lib/esm/extension/ExtensionRuntime.d.ts.map +0 -1
  1293. package/lib/esm/extension/ExtensionRuntime.js +0 -58
  1294. package/lib/esm/extension/ExtensionRuntime.js.map +0 -1
  1295. package/lib/esm/extension/extensions.d.ts +0 -18
  1296. package/lib/esm/extension/extensions.d.ts.map +0 -1
  1297. package/lib/esm/extension/extensions.js +0 -23
  1298. package/lib/esm/extension/extensions.js.map +0 -1
  1299. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1300. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1301. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1302. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.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 { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\n/** For techniques which by default use MRT, on devices which don't support MRT we fall back to\r\n * multi-pass rendering. The same shader is used each pass, with a uniform supplied indicating\r\n * which value to output to gl_FragColor. It's specified as an index - the same one that would be\r\n * used to index into gl_FragData[] in MRT context.\r\n * @internal\r\n */\r\nexport function addRenderTargetIndex(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_renderTargetIndex\", VariableType.Int, (prog) => {\r\n prog.addProgramUniform(\"u_renderTargetIndex\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.compositor.currentRenderTargetIndex);\r\n });\r\n });\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(u_renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst assignPickBufferOutputsMP = `\r\n if (0 == u_renderTargetIndex)\r\n FragColor = output0;\r\n else if (1 == u_renderTargetIndex)\r\n FragColor = output1;\r\n else\r\n FragColor = output2;\r\n`;\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAA+G;AAC/G,sCAAmC;AACnC,qCAA0C;AAC1C,6CAA6C;AAE7C,gBAAgB;AAChB,SAAgB,oBAAoB,CAAC,IAA2B;IAC9D,MAAM,uBAAuB,GAAG,4EAA4E,CAAC;IAC7G,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,iBAAiB,gBAAqB,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AARD,oDAQC;AAED,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,IAA2B;IACjE,IAAI,CAAC,UAAU,CAAC,uBAAuB,mBAAwB,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;YAC7D,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,8BAA8C,mBAAmB,CAAC,CAAC;AAC7E,CAAC;AATD,0DASC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,IAA2B;IAC9D,IAAI,CAAC,UAAU,CAAC,qBAAqB,eAAoB,CAAC,IAAI,EAAE,EAAE;QAChE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAND,oDAMC;AAED,MAAM,mBAAmB,GAAG;;;;;;;CAO3B,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;CAKrB,CAAC;AAEF,MAAM,wBAAwB,GAAG,GAAG,aAAa;;;;;;;;CAQhD,CAAC;AAEF,MAAM,2BAA2B,GAAG,GAAG,aAAa;;;;CAInD,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;CAIlC,CAAC;AAEF,MAAM,yBAAyB,GAAG;;;;;;;CAOjC,CAAC;AACF,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAEpE,gBAAgB;AAChB,SAAgB,oBAAoB,CAAC,IAA2B;IAC9D,IAAI,CAAC,WAAW,CAAC,uBAAc,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,CAAC,0BAAkB,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAI,6BAAa,EAAE,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,8BAA6C,CAAC;IAC5E,IAAI,aAAa,EAAE;QACjB,IAAI,CAAC,WAAW,CAAC,+CAA+C,EAAE,aAAa,CAAC,CAAC;QACjF,OAAO,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;KAC9E;SAAM;QACL,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;KACzD;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,wBAAuC,CAAC;IACtE,IAAI,SAAS,KAAK,aAAa,EAAE;QAC/B,IAAI,CAAC,WAAW,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;QACzE,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;KACxD;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,4BAA2C,CAAC;IAC9E,IAAI,SAAS,KAAK,iBAAiB,EAAE;QACnC,IAAI,CAAC,WAAW,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,CAAC;QAC9E,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;KACpC;IAED,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACpB,IAAI,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,EAAE;QACvD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,0BAAyC,OAAO,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC;KAC/F;SAAM;QACL,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,0BAAyC,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC;KAC9F;AACH,CAAC;AAnCD,oDAmCC;AAED,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,IAA2B;IACjE,MAAM,OAAO,GAAG,IAAI,6BAAa,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,wBAAuC,CAAC;IACtE,IAAI,SAAS,KAAK,aAAa,EAAE;QAC/B,IAAI,CAAC,WAAW,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;QACzE,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;KACxD;IAED,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACpB,IAAI,eAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,EAAE;QACvD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,0BAAyC,OAAO,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC;KAC/F;SAAM;QACL,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,0BAAyC,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC;KAC9F;AACH,CAAC;AAlBD,0DAkBC;AAED,gBAAgB;AAChB,SAAgB,kCAAkC,CAAC,IAA2B;IAC5E,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,wBAAuC,CAAC;IACtE,IAAI,SAAS,KAAK,aAAa,EAAE;QAC/B,IAAI,CAAC,GAAG,0BAAyC,qCAAqC,CAAC,CAAC;KACzF;SAAM;QACL,IAAI,CAAC,WAAW,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,0BAAyC,gDAAgD,CAAC,CAAC;KACpG;AACH,CAAC;AATD,gFASC;AAED,gBAAgB;AACH,QAAA,eAAe,GAAG,wBAAwB,CAAC;AAExD,MAAM,qCAAqC,GAAG,GAAG,aAAa;;CAE7D,CAAC;AAEF,MAAM,gDAAgD,GAAG,GAAG,aAAa;;;CAGxE,CAAC;AAEF,gBAAgB;AACH,QAAA,kBAAkB,GAAG;;;;;;;;CAQjC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\n/** For techniques which by default use MRT, on devices which don't support MRT we fall back to\r\n * multi-pass rendering. The same shader is used each pass, with a uniform supplied indicating\r\n * which value to output to gl_FragColor. It's specified as an index - the same one that would be\r\n * used to index into gl_FragData[] in MRT context.\r\n * @internal\r\n */\r\nexport function addRenderTargetIndex(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_renderTargetIndex\", VariableType.Int, (prog) => {\r\n prog.addProgramUniform(\"u_renderTargetIndex\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.compositor.currentRenderTargetIndex);\r\n });\r\n });\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst assignPickBufferOutputsMP = `\r\n if (0 == u_renderTargetIndex)\r\n FragColor = output0;\r\n else if (1 == u_renderTargetIndex)\r\n FragColor = output1;\r\n else\r\n FragColor = output2;\r\n`;\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\r\n if (overrideOrder) {\r\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\r\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\r\n } else {\r\n prelude.addline(\" float renderOrder = u_renderOrder;\");\r\n }\r\n\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Lighting.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA2B,cAAc,EAAmC,MAAM,kBAAkB,CAAC;AAwF5G;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,QAyBlD"}
1
+ {"version":3,"file":"Lighting.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA2B,cAAc,EAAmC,MAAM,kBAAkB,CAAC;AAsG5G;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,QAyBlD"}
@@ -81,8 +81,22 @@ const applyLighting = `
81
81
 
82
82
  specularAccum += hemiSpecWeight * specularColor * hemiColor;
83
83
 
84
- // Clamp while preserving hue.
85
84
  vec3 litColor = diffuseAccum + specularAccum;
85
+
86
+ // Apply fresnel reflection.
87
+ float fresnelIntensity = u_lightSettings[15];
88
+ if (0.0 != fresnelIntensity) {
89
+ float fresnel = -dot(toEye, normal);
90
+ if (fresnelIntensity < 0.0) {
91
+ fresnelIntensity = abs(fresnelIntensity);
92
+ fresnel = 1.0 - fresnel;
93
+ }
94
+
95
+ fresnel = clamp(1.0 - fresnel, 0.0, 1.0);
96
+ litColor = litColor * (1.0 + fresnelIntensity * fresnel);
97
+ }
98
+
99
+ // Clamp while preserving hue.
86
100
  float maxIntensity = max(litColor.r, max(litColor.g, litColor.b));
87
101
  float numCel = u_lightSettings[14];
88
102
  if (numCel > 0.0)
@@ -105,7 +119,7 @@ function addLighting(builder) {
105
119
  params.target.uniforms.bindSunDirection(uniform);
106
120
  });
107
121
  }, 3 /* High */);
108
- frag.addUniform("u_lightSettings[15]", 2 /* Float */, (prog) => {
122
+ frag.addUniform("u_lightSettings[16]", 2 /* Float */, (prog) => {
109
123
  prog.addProgramUniform("u_lightSettings[0]", (uniform, params) => {
110
124
  params.target.uniforms.lights.bind(uniform);
111
125
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Lighting.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,qCAAsC;AAEtC,MAAM,0BAA0B,GAAG;;;;;;;;CAQlC,CAAC;AAEF,oCAAoC;AACpC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwErB,CAAC;AAEF;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,wBAAwC,aAAa,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,UAAU,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,YAAY,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,kCAyBC","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 { FragmentShaderComponent, ProgramBuilder, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { addFrustum } from \"./Common\";\r\n\r\nconst computeDirectionalLighting = `\r\nvoid computeDirectionalLight (inout float diffuse, inout float specular, vec3 normal, vec3 toEye, vec3 lightDir, float lightIntensity, float specularExponent) {\r\n diffuse += lightIntensity * max(dot(normal, lightDir), 0.0);\r\n vec3 toReflectedLight = normalize(reflect(lightDir, normal));\r\n float specularDot = max(dot(toReflectedLight, toEye), 0.0001);\r\n // NB: If specularDot and specularExponent are both zero, 0^0 done below can return NaN. Must make sure specularDot is larger than zero (hence 0.0001 or greater, as ensured above).\r\n specular += lightIntensity * pow(specularDot, specularExponent);\r\n}\r\n`;\r\n\r\n// mat_weights: x=diffuse y=specular\r\nconst applyLighting = `\r\n if (baseColor.a <= 0.0 || !u_surfaceFlags[kSurfaceBitIndex_ApplyLighting])\r\n return baseColor;\r\n\r\n // Extract surface properties\r\n vec3 rgb = baseColor.rgb;\r\n vec3 normal = normalize(v_n.xyz);\r\n normal *= 2.0 * float(!u_surfaceFlags[kSurfaceBitIndex_NoFaceFront] && gl_FrontFacing) - 1.0;\r\n vec3 toEye = kFrustumType_Perspective == u_frustum.z ? normalize(v_eyeSpace.xyz) : vec3(0.0, 0.0, -1.0);\r\n\r\n // Extract material properties\r\n float diffuseWeight = mat_weights.x;\r\n float specularWeight = mat_weights.y * u_lightSettings[13];\r\n float specularExponent = mat_specular.a;\r\n vec3 specularColor = mat_specular.rgb;\r\n const float ambientWeight = 1.0; // Ignore MicroStation's ambient weights - usually bogus.\r\n\r\n // Compute directional lights\r\n const vec3 portraitDir = vec3(-0.7071, 0.0, 0.7071);\r\n float portraitIntensity = u_lightSettings[12];\r\n float sunIntensity = u_lightSettings[0];\r\n\r\n float directionalDiffuseIntensity = 0.0;\r\n float directionalSpecularIntensity = 0.0;\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, normal, toEye, u_sunDir, sunIntensity, specularExponent);\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, normal ,toEye, portraitDir, portraitIntensity, specularExponent);\r\n\r\n const float directionalFudge = 0.92; // leftover from old lighting implementation\r\n vec3 diffuseAccum = directionalDiffuseIntensity * diffuseWeight * rgb * directionalFudge; // directional light is white.\r\n vec3 specularAccum = directionalSpecularIntensity * specularWeight * specularColor;\r\n\r\n // Compute ambient light\r\n float ambientIntensity = u_lightSettings[4];\r\n vec3 ambientColor = vec3(u_lightSettings[1], u_lightSettings[2], u_lightSettings[3]);\r\n if (ambientColor.r + ambientColor.g + ambientColor.b == 0.0)\r\n ambientColor = rgb;\r\n\r\n diffuseAccum += ambientIntensity * ambientWeight * ambientColor;\r\n\r\n // Compute hemisphere lights\r\n vec3 ground = vec3(u_lightSettings[5], u_lightSettings[6], u_lightSettings[7]);\r\n vec3 sky = vec3(u_lightSettings[8], u_lightSettings[9], u_lightSettings[10]);\r\n float hemiIntensity = u_lightSettings[11];\r\n\r\n // diffuse\r\n float hemiDot = dot(normal, u_upVector);\r\n float hemiDiffuseWeight = 0.5 * hemiDot + 0.5;\r\n vec3 hemiColor = mix(ground, sky, hemiDiffuseWeight);\r\n diffuseAccum += hemiIntensity * hemiColor * rgb;\r\n\r\n // sky specular\r\n vec3 reflectSky = normalize(reflect(u_upVector, normal));\r\n float skyDot = max(dot(reflectSky, toEye), 0.0001);\r\n float hemiSpecWeight = hemiIntensity * pow(skyDot, specularExponent);\r\n\r\n // ground specular\r\n vec3 reflectGround = normalize(reflect(-u_upVector, normal));\r\n float groundDot = max(dot(reflectGround, toEye), 0.0001);\r\n hemiSpecWeight += hemiIntensity * pow(groundDot, specularExponent);\r\n\r\n specularAccum += hemiSpecWeight * specularColor * hemiColor;\r\n\r\n // Clamp while preserving hue.\r\n vec3 litColor = diffuseAccum + specularAccum;\r\n float maxIntensity = max(litColor.r, max(litColor.g, litColor.b));\r\n float numCel = u_lightSettings[14];\r\n if (numCel > 0.0)\r\n baseColor.rgb = baseColor.rgb * ceil(maxIntensity * numCel) / numCel;\r\n else\r\n baseColor.rgb = litColor / max(1.0, maxIntensity);\r\n\r\n return baseColor;\r\n`;\r\n\r\n/** NB: addMaterial() sets up the mat_* variables used by applyLighting.\r\n * @internal\r\n */\r\nexport function addLighting(builder: ProgramBuilder) {\r\n addFrustum(builder);\r\n\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(computeDirectionalLighting);\r\n frag.set(FragmentShaderComponent.ApplyLighting, applyLighting);\r\n\r\n frag.addUniform(\"u_sunDir\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_sunDir\", (uniform, params) => {\r\n params.target.uniforms.bindSunDirection(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_lightSettings[15]\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_lightSettings[0]\", (uniform, params) => {\r\n params.target.uniforms.lights.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_upVector\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_upVector\", (uniform, params) => {\r\n params.target.uniforms.frustum.bindUpVector(uniform);\r\n });\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"Lighting.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,qCAAsC;AAEtC,MAAM,0BAA0B,GAAG;;;;;;;;CAQlC,CAAC;AAEF,oCAAoC;AACpC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsFrB,CAAC;AAEF;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,wBAAwC,aAAa,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,UAAU,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,YAAY,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,kCAyBC","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 { FragmentShaderComponent, ProgramBuilder, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { addFrustum } from \"./Common\";\r\n\r\nconst computeDirectionalLighting = `\r\nvoid computeDirectionalLight (inout float diffuse, inout float specular, vec3 normal, vec3 toEye, vec3 lightDir, float lightIntensity, float specularExponent) {\r\n diffuse += lightIntensity * max(dot(normal, lightDir), 0.0);\r\n vec3 toReflectedLight = normalize(reflect(lightDir, normal));\r\n float specularDot = max(dot(toReflectedLight, toEye), 0.0001);\r\n // NB: If specularDot and specularExponent are both zero, 0^0 done below can return NaN. Must make sure specularDot is larger than zero (hence 0.0001 or greater, as ensured above).\r\n specular += lightIntensity * pow(specularDot, specularExponent);\r\n}\r\n`;\r\n\r\n// mat_weights: x=diffuse y=specular\r\nconst applyLighting = `\r\n if (baseColor.a <= 0.0 || !u_surfaceFlags[kSurfaceBitIndex_ApplyLighting])\r\n return baseColor;\r\n\r\n // Extract surface properties\r\n vec3 rgb = baseColor.rgb;\r\n vec3 normal = normalize(v_n.xyz);\r\n normal *= 2.0 * float(!u_surfaceFlags[kSurfaceBitIndex_NoFaceFront] && gl_FrontFacing) - 1.0;\r\n vec3 toEye = kFrustumType_Perspective == u_frustum.z ? normalize(v_eyeSpace.xyz) : vec3(0.0, 0.0, -1.0);\r\n\r\n // Extract material properties\r\n float diffuseWeight = mat_weights.x;\r\n float specularWeight = mat_weights.y * u_lightSettings[13];\r\n float specularExponent = mat_specular.a;\r\n vec3 specularColor = mat_specular.rgb;\r\n const float ambientWeight = 1.0; // Ignore MicroStation's ambient weights - usually bogus.\r\n\r\n // Compute directional lights\r\n const vec3 portraitDir = vec3(-0.7071, 0.0, 0.7071);\r\n float portraitIntensity = u_lightSettings[12];\r\n float sunIntensity = u_lightSettings[0];\r\n\r\n float directionalDiffuseIntensity = 0.0;\r\n float directionalSpecularIntensity = 0.0;\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, normal, toEye, u_sunDir, sunIntensity, specularExponent);\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, normal ,toEye, portraitDir, portraitIntensity, specularExponent);\r\n\r\n const float directionalFudge = 0.92; // leftover from old lighting implementation\r\n vec3 diffuseAccum = directionalDiffuseIntensity * diffuseWeight * rgb * directionalFudge; // directional light is white.\r\n vec3 specularAccum = directionalSpecularIntensity * specularWeight * specularColor;\r\n\r\n // Compute ambient light\r\n float ambientIntensity = u_lightSettings[4];\r\n vec3 ambientColor = vec3(u_lightSettings[1], u_lightSettings[2], u_lightSettings[3]);\r\n if (ambientColor.r + ambientColor.g + ambientColor.b == 0.0)\r\n ambientColor = rgb;\r\n\r\n diffuseAccum += ambientIntensity * ambientWeight * ambientColor;\r\n\r\n // Compute hemisphere lights\r\n vec3 ground = vec3(u_lightSettings[5], u_lightSettings[6], u_lightSettings[7]);\r\n vec3 sky = vec3(u_lightSettings[8], u_lightSettings[9], u_lightSettings[10]);\r\n float hemiIntensity = u_lightSettings[11];\r\n\r\n // diffuse\r\n float hemiDot = dot(normal, u_upVector);\r\n float hemiDiffuseWeight = 0.5 * hemiDot + 0.5;\r\n vec3 hemiColor = mix(ground, sky, hemiDiffuseWeight);\r\n diffuseAccum += hemiIntensity * hemiColor * rgb;\r\n\r\n // sky specular\r\n vec3 reflectSky = normalize(reflect(u_upVector, normal));\r\n float skyDot = max(dot(reflectSky, toEye), 0.0001);\r\n float hemiSpecWeight = hemiIntensity * pow(skyDot, specularExponent);\r\n\r\n // ground specular\r\n vec3 reflectGround = normalize(reflect(-u_upVector, normal));\r\n float groundDot = max(dot(reflectGround, toEye), 0.0001);\r\n hemiSpecWeight += hemiIntensity * pow(groundDot, specularExponent);\r\n\r\n specularAccum += hemiSpecWeight * specularColor * hemiColor;\r\n\r\n vec3 litColor = diffuseAccum + specularAccum;\r\n\r\n // Apply fresnel reflection.\r\n float fresnelIntensity = u_lightSettings[15];\r\n if (0.0 != fresnelIntensity) {\r\n float fresnel = -dot(toEye, normal);\r\n if (fresnelIntensity < 0.0) {\r\n fresnelIntensity = abs(fresnelIntensity);\r\n fresnel = 1.0 - fresnel;\r\n }\r\n\r\n fresnel = clamp(1.0 - fresnel, 0.0, 1.0);\r\n litColor = litColor * (1.0 + fresnelIntensity * fresnel);\r\n }\r\n\r\n // Clamp while preserving hue.\r\n float maxIntensity = max(litColor.r, max(litColor.g, litColor.b));\r\n float numCel = u_lightSettings[14];\r\n if (numCel > 0.0)\r\n baseColor.rgb = baseColor.rgb * ceil(maxIntensity * numCel) / numCel;\r\n else\r\n baseColor.rgb = litColor / max(1.0, maxIntensity);\r\n\r\n return baseColor;\r\n`;\r\n\r\n/** NB: addMaterial() sets up the mat_* variables used by applyLighting.\r\n * @internal\r\n */\r\nexport function addLighting(builder: ProgramBuilder) {\r\n addFrustum(builder);\r\n\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(computeDirectionalLighting);\r\n frag.set(FragmentShaderComponent.ApplyLighting, applyLighting);\r\n\r\n frag.addUniform(\"u_sunDir\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_sunDir\", (uniform, params) => {\r\n params.target.uniforms.bindSunDirection(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_lightSettings[16]\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_lightSettings[0]\", (uniform, params) => {\r\n params.target.uniforms.lights.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_upVector\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_upVector\", (uniform, params) => {\r\n params.target.uniforms.frustum.bindUpVector(uniform);\r\n });\r\n });\r\n}\r\n"]}
@@ -27,7 +27,7 @@ function addLogDepth(builder) {
27
27
  });
28
28
  if (!System_1.System.instance.capabilities.isWebGL2)
29
29
  frag.addExtension("GL_EXT_frag_depth");
30
- frag.set(17 /* FinalizeDepth */, finalizeDepth);
30
+ frag.set(18 /* FinalizeDepth */, finalizeDepth);
31
31
  }
32
32
  exports.addLogDepth = addLogDepth;
33
33
  //# sourceMappingURL=LogarithmicDepthBuffer.js.map
@@ -2,6 +2,8 @@
2
2
  * @module WebGL
3
3
  */
4
4
  import { VertexShaderBuilder } from "../ShaderBuilder";
5
- /** @internal */
6
- export declare function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult?: string): void;
5
+ /** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.
6
+ * @internal
7
+ */
8
+ export declare function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult?: string, addInitializer?: boolean): string;
7
9
  //# sourceMappingURL=LookupTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LookupTable.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA2BrE,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,QAsB5F"}
1
+ {"version":3,"file":"LookupTable.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA2BrE;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,EAAE,cAAc,UAAO,GAAG,MAAM,CAyB5H"}
@@ -30,8 +30,10 @@ const initializerTemplate = `
30
30
  float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;
31
31
  {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});
32
32
  `;
33
- /** @internal */
34
- function addLookupTable(sb, lutName, mult = "1.0") {
33
+ /** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.
34
+ * @internal
35
+ */
36
+ function addLookupTable(sb, lutName, mult = "1.0", addInitializer = true) {
35
37
  sb.addFunction(computeLUTCoords);
36
38
  const lutStepX = `g_${lutName}_stepX`;
37
39
  const lutStepY = `${lutName}_stepY`;
@@ -44,11 +46,13 @@ function addLookupTable(sb, lutName, mult = "1.0") {
44
46
  initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);
45
47
  initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);
46
48
  initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);
47
- sb.addInitializer(initializerSpecific);
49
+ if (addInitializer)
50
+ sb.addInitializer(initializerSpecific);
48
51
  let computeCoordsSpecific = computeCoordsTemplate;
49
52
  computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);
50
53
  computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);
51
54
  sb.addFunction(computeCoordsSpecific);
55
+ return initializerSpecific;
52
56
  }
53
57
  exports.addLookupTable = addLookupTable;
54
58
  //# sourceMappingURL=LookupTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF,gBAAgB;AAChB,SAAgB,cAAc,CAAC,EAAuB,EAAE,OAAe,EAAE,OAAe,KAAK;IAC3F,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,OAAO,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;IAEvC,EAAE,CAAC,SAAS,CAAC,QAAQ,gBAAqB,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,SAAS,eAAoB,CAAC;IAE3C,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;IAC9C,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEvC,IAAI,qBAAqB,GAAG,qBAAqB,CAAC;IAClD,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;AACxC,CAAC;AAtBD,wCAsBC","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 { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\n\r\nconst computeLUTCoords = `\r\nvec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {\r\n float baseIndex = index*mult;\r\n\r\n // Fix precision issues wherein mod(x,y) => y instead of 0 when x is multiple of y...\r\n float epsilon = 0.5 / dimensions.x;\r\n float yId = floor(baseIndex / dimensions.x + epsilon);\r\n float xId = baseIndex - dimensions.x * yId; // replaces mod()...\r\n\r\n return center + vec2(xId/dimensions.x, yId/dimensions.y);\r\n}\r\n`;\r\n\r\nconst computeCoordsTemplate = `\r\nvec2 compute_{LUTNAME}_coords(float index) {\r\n return computeLUTCoords(index, u_{LUTNAME}Params.xy, g_{LUTNAME}_center, {MULT});\r\n}\r\n`;\r\n\r\nconst initializerTemplate = `\r\n {LUTSTEPX} = 1.0 / {LUTPARAMS}.x;\r\n float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;\r\n {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});\r\n`;\r\n\r\n/** @internal */\r\nexport function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult: string = \"1.0\") {\r\n sb.addFunction(computeLUTCoords);\r\n\r\n const lutStepX = `g_${lutName}_stepX`;\r\n const lutStepY = `${lutName}_stepY`;\r\n const lutCenter = `g_${lutName}_center`;\r\n const lutParams = `u_${lutName}Params`;\r\n\r\n sb.addGlobal(lutStepX, VariableType.Float);\r\n sb.addGlobal(lutCenter, VariableType.Vec2);\r\n\r\n let initializerSpecific = initializerTemplate;\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPX}/g, lutStepX);\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);\r\n initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);\r\n initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);\r\n sb.addInitializer(initializerSpecific);\r\n\r\n let computeCoordsSpecific = computeCoordsTemplate;\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);\r\n sb.addFunction(computeCoordsSpecific);\r\n}\r\n"]}
1
+ {"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAuB,EAAE,OAAe,EAAE,OAAe,KAAK,EAAE,cAAc,GAAG,IAAI;IAClH,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,OAAO,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;IAEvC,EAAE,CAAC,SAAS,CAAC,QAAQ,gBAAqB,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,SAAS,eAAoB,CAAC;IAE3C,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;IAC9C,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,IAAI,cAAc;QAChB,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEzC,IAAI,qBAAqB,GAAG,qBAAqB,CAAC;IAClD,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAzBD,wCAyBC","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 { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\n\r\nconst computeLUTCoords = `\r\nvec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {\r\n float baseIndex = index*mult;\r\n\r\n // Fix precision issues wherein mod(x,y) => y instead of 0 when x is multiple of y...\r\n float epsilon = 0.5 / dimensions.x;\r\n float yId = floor(baseIndex / dimensions.x + epsilon);\r\n float xId = baseIndex - dimensions.x * yId; // replaces mod()...\r\n\r\n return center + vec2(xId/dimensions.x, yId/dimensions.y);\r\n}\r\n`;\r\n\r\nconst computeCoordsTemplate = `\r\nvec2 compute_{LUTNAME}_coords(float index) {\r\n return computeLUTCoords(index, u_{LUTNAME}Params.xy, g_{LUTNAME}_center, {MULT});\r\n}\r\n`;\r\n\r\nconst initializerTemplate = `\r\n {LUTSTEPX} = 1.0 / {LUTPARAMS}.x;\r\n float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;\r\n {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});\r\n`;\r\n\r\n/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.\r\n * @internal\r\n */\r\nexport function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult: string = \"1.0\", addInitializer = true): string {\r\n sb.addFunction(computeLUTCoords);\r\n\r\n const lutStepX = `g_${lutName}_stepX`;\r\n const lutStepY = `${lutName}_stepY`;\r\n const lutCenter = `g_${lutName}_center`;\r\n const lutParams = `u_${lutName}Params`;\r\n\r\n sb.addGlobal(lutStepX, VariableType.Float);\r\n sb.addGlobal(lutCenter, VariableType.Vec2);\r\n\r\n let initializerSpecific = initializerTemplate;\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPX}/g, lutStepX);\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);\r\n initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);\r\n initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);\r\n if (addInitializer)\r\n sb.addInitializer(initializerSpecific);\r\n\r\n let computeCoordsSpecific = computeCoordsTemplate;\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);\r\n sb.addFunction(computeCoordsSpecific);\r\n\r\n return initializerSpecific;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassification.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2B,cAAc,EAA+B,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,eAAO,MAAM,mBAAmB,qMAM/B,CAAC;AA0MF,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,QAyD7G;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,QAiBjE;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,UAAO,QAYxF;AAkED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAgBhG"}
1
+ {"version":3,"file":"PlanarClassification.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2B,cAAc,EAA+B,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,eAAO,MAAM,mBAAmB,qMAM/B,CAAC;AAmNF,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,QAyD7G;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,QAiBjE;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,UAAO,QAYxF;AAkED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAgBhG"}
@@ -47,6 +47,12 @@ if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain dra
47
47
  return vec4(rgb, baseColor.a);
48
48
  }
49
49
  float imageCount = u_pClassColorParams.z;
50
+ // If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
51
+ bool doInvert = false;
52
+ if (imageCount < 0.0) {
53
+ imageCount = - imageCount;
54
+ doInvert = true;
55
+ }
50
56
 
51
57
  vec4 colorTexel = vec4(0);
52
58
  vec4 maskTexel = vec4(0);
@@ -73,7 +79,10 @@ if (!isOutside) {
73
79
  }
74
80
  }
75
81
  if (doMask) {
76
- if (!isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a > 0.0)) {
82
+ bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
83
+ if (doInvert)
84
+ masked = !masked;
85
+ if (masked) {
77
86
  float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
78
87
  if (maskTransparency <= 0.0) {
79
88
  discard;
@@ -285,7 +294,7 @@ function addFeaturePlanarClassifier(builder) {
285
294
  uniform.setUniform4fv(scratchBatchBaseComponents);
286
295
  });
287
296
  });
288
- frag.set(16 /* OverrideFeatureId */, overrideFeatureId);
297
+ frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
289
298
  frag.addFunction(Common_1.addUInt32s);
290
299
  }
291
300
  exports.addFeaturePlanarClassifier = addFeaturePlanarClassifier;
@@ -376,9 +385,9 @@ function addOverrideClassifierColor(builder, isThematic) {
376
385
  const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
377
386
  builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
378
387
  if (isThematic === 0 /* No */)
379
- builder.frag.set(18 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
388
+ builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
380
389
  else
381
- builder.frag.set(18 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
390
+ builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
382
391
  }
383
392
  exports.addOverrideClassifierColor = addOverrideClassifierColor;
384
393
  //# sourceMappingURL=PlanarClassification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n if (!isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a > 0.0)) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
@@ -47,10 +47,10 @@ const fwidth2dWhenNotAvailable = `\nvec2 screenSpaceDeriv(vec2 screenXY) { retur
47
47
  const defaultTransparency = new RenderSystem_1.PlanarGridTransparency();
48
48
  /** @internal */
49
49
  function createPlanarGridProgram(context) {
50
- const builder = new ShaderBuilder_1.ProgramBuilder(AttributeMap_1.AttributeMap.findAttributeMap(7 /* PlanarGrid */, false));
50
+ const builder = new ShaderBuilder_1.ProgramBuilder(AttributeMap_1.AttributeMap.findAttributeMap(8 /* PlanarGrid */, false));
51
51
  const vert = builder.vert;
52
52
  const frag = builder.frag;
53
- vert.set(9 /* ComputePosition */, computePosition);
53
+ vert.set(10 /* ComputePosition */, computePosition);
54
54
  (0, Vertex_1.addModelViewProjectionMatrix)(vert);
55
55
  (0, Common_1.addShaderFlags)(builder);
56
56
  (0, Translucency_1.addTranslucency)(builder);
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\n\r\nconst computeBaseColor = `\r\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\r\n vec4 color = vec4(u_gridColor, u_gridProps.y);\r\n float refsPerGrid = u_gridProps.x;\r\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\r\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\r\n\r\n return color;\r\n`;\r\n\r\nconst drawGridLine = `\r\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\r\n vec2 scaledTexCoord = v_texCoord * mult;\r\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\r\n if (deriv.x != 0.0 && deriv.y != 0.0) {\r\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\r\n float line = min(grid.x, grid.y);\r\n if (line < 1.0) {\r\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n`;\r\n\r\nconst fwidth2dWhenAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\r\nconst fwidth2dWhenNotAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return vec2(0.25, 0.25); }\\n`;\r\n\r\nconst defaultTransparency = new PlanarGridTransparency();\r\n/** @internal */\r\nexport default function createPlanarGridProgram(context: WebGLContext): ShaderProgram {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n addShaderFlags(builder);\r\n\r\n addTranslucency(builder);\r\n if (System.instance.capabilities.isWebGL2) {\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else if (System.instance.capabilities.supportsStandardDerivatives) {\r\n frag.addExtension(\"GL_OES_standard_derivatives\");\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else {\r\n frag.addFunction(fwidth2dWhenNotAvailable);\r\n }\r\n\r\n if (System.instance.supportsLogZBuffer)\r\n addLogDepth(builder);\r\n\r\n frag.addFunction(drawGridLine);\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n vert.headerComment = `//!V! PlanarGrid`;\r\n frag.headerComment = `//!F! PlanarGrid`;\r\n\r\n vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n uniform.setUniform4fv(planarGrid.uvParams.params);\r\n });\r\n });\r\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n const color = planarGrid.props.color.colors;\r\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\r\n });\r\n });\r\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\r\n const planarGridProps = params.geometry.asPlanarGrid!.props;\r\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\r\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\r\n });\r\n });\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\n\r\nconst computeBaseColor = `\r\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\r\n vec4 color = vec4(u_gridColor, u_gridProps.y);\r\n float refsPerGrid = u_gridProps.x;\r\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\r\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\r\n\r\n return color;\r\n`;\r\n\r\nconst drawGridLine = `\r\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\r\n vec2 scaledTexCoord = v_texCoord * mult;\r\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\r\n if (deriv.x != 0.0 && deriv.y != 0.0) {\r\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\r\n float line = min(grid.x, grid.y);\r\n if (line < 1.0) {\r\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n`;\r\n\r\nconst fwidth2dWhenAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\r\nconst fwidth2dWhenNotAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return vec2(0.25, 0.25); }\\n`;\r\n\r\nconst defaultTransparency = new PlanarGridTransparency();\r\n/** @internal */\r\nexport default function createPlanarGridProgram(context: WebGLContext): ShaderProgram {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n addShaderFlags(builder);\r\n\r\n addTranslucency(builder);\r\n if (System.instance.capabilities.isWebGL2) {\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else if (System.instance.capabilities.supportsStandardDerivatives) {\r\n frag.addExtension(\"GL_OES_standard_derivatives\");\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else {\r\n frag.addFunction(fwidth2dWhenNotAvailable);\r\n }\r\n\r\n if (System.instance.supportsLogZBuffer)\r\n addLogDepth(builder);\r\n\r\n frag.addFunction(drawGridLine);\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n vert.headerComment = `//!V! PlanarGrid`;\r\n frag.headerComment = `//!F! PlanarGrid`;\r\n\r\n vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n uniform.setUniform4fv(planarGrid.uvParams.params);\r\n });\r\n });\r\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n const color = planarGrid.props.color.colors;\r\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\r\n });\r\n });\r\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\r\n const planarGridProps = params.geometry.asPlanarGrid!.props;\r\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\r\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\r\n });\r\n });\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n"]}
@@ -39,7 +39,7 @@ function createBuilder() {
39
39
  const vert = builder.vert;
40
40
  (0, Vertex_1.addLineWeight)(vert);
41
41
  (0, Viewport_1.addViewportTransformation)(vert);
42
- vert.set(9 /* ComputePosition */, computePosition);
42
+ vert.set(10 /* ComputePosition */, computePosition);
43
43
  (0, Vertex_1.addModelViewProjectionMatrix)(vert);
44
44
  return builder;
45
45
  }
@@ -48,7 +48,7 @@ const scratchPointCloudParams = new Float32Array(2);
48
48
  function createPointCloudBuilder(classified, featureMode, thematic) {
49
49
  const builder = createBuilder();
50
50
  builder.addVarying("v_color", 5 /* Vec4 */);
51
- builder.vert.set(4 /* ComputeBaseColor */, computeColor);
51
+ builder.vert.set(5 /* ComputeBaseColor */, computeColor);
52
52
  const frag = builder.frag;
53
53
  frag.set(1 /* ComputeBaseColor */, computeBaseColor);
54
54
  frag.set(0 /* CheckForEarlyDiscard */, roundPointDiscard);
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointCloud.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 { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { FeatureMode, IsAnimated, IsClassified, IsThematic } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addUniformHiliter } from \"./FeatureSymbology\";\r\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\nimport { addViewportTransformation } from \"./Viewport\";\r\nimport { addThematicDisplay } from \"./Thematic\";\r\nimport { addTexture } from \"./Surface\";\r\n\r\nconst computeColor = \"return (u_pointCloudParams.x == 1.0) ? vec4(a_color.z, a_color.y, a_color.x, 1.0) : vec4(a_color, 1.0);\";\r\nconst computeBaseColor = \"return v_color;\";\r\n\r\nconst roundPointDiscard = `\r\n vec2 pointXY = (2.0 * gl_PointCoord - 1.0);\r\n return dot(pointXY, pointXY) > 1.0;\r\n`;\r\n\r\nconst checkForClassifiedDiscard = \"return baseColor.a == 0.0;\";\r\n\r\nconst computePosition = `\r\n gl_PointSize = 1.0;\r\n vec4 pos = MAT_MVP * rawPos;\r\n\r\n if (u_lineWeight < 0.0 && pos.w > 0.0) {\r\n mat4 toView = u_viewportTransformation * MAT_MVP;\r\n float scale = length(toView[0].xyz);\r\n gl_PointSize = clamp (- u_lineWeight * scale / pos.w, 2.0, 20.0);\r\n }\r\n return pos;\r\n`;\r\n\r\nfunction createBuilder(): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PointCloud, false));\r\n const vert = builder.vert;\r\n addLineWeight(vert);\r\n addViewportTransformation(vert);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n return builder;\r\n}\r\n\r\nconst scratchPointCloudParams = new Float32Array(2);\r\n/** @internal */\r\nexport function createPointCloudBuilder(classified: IsClassified, featureMode: FeatureMode, thematic: IsThematic): ProgramBuilder {\r\n const builder = createBuilder();\r\n\r\n builder.addVarying(\"v_color\", VariableType.Vec4);\r\n builder.vert.set(VertexShaderComponent.ComputeBaseColor, computeColor);\r\n\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundPointDiscard);\r\n if (classified) {\r\n addColorPlanarClassifier(builder, false, thematic);\r\n builder.frag.set(FragmentShaderComponent.CheckForDiscard, checkForClassifiedDiscard);\r\n\r\n if (FeatureMode.None !== featureMode)\r\n addFeaturePlanarClassifier(builder);\r\n }\r\n\r\n if (IsThematic.Yes === thematic) {\r\n addThematicDisplay(builder, true);\r\n addTexture(builder, IsAnimated.No, IsThematic.Yes, true);\r\n }\r\n\r\n builder.vert.addUniform(\"u_pointCloudParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_pointCloudParams\", (uniform, params) => {\r\n const pointCloud = params.geometry.asPointCloud!;\r\n scratchPointCloudParams[0] = pointCloud.colorIsBgr ? 1 : 0; // Volume classifier, by element color.\r\n scratchPointCloudParams[1] = pointCloud.minimumPointSize;\r\n uniform.setUniform2fv(scratchPointCloudParams);\r\n });\r\n });\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointCloudHiliter(classified: IsClassified): ProgramBuilder {\r\n const builder = createBuilder();\r\n addUniformHiliter(builder);\r\n if (classified)\r\n addHilitePlanarClassifier(builder, false);\r\n\r\n return builder;\r\n}\r\n"]}
1
+ {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointCloud.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 { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { FeatureMode, IsAnimated, IsClassified, IsThematic } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addUniformHiliter } from \"./FeatureSymbology\";\r\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\nimport { addViewportTransformation } from \"./Viewport\";\r\nimport { addThematicDisplay } from \"./Thematic\";\r\nimport { addTexture } from \"./Surface\";\r\n\r\nconst computeColor = \"return (u_pointCloudParams.x == 1.0) ? vec4(a_color.z, a_color.y, a_color.x, 1.0) : vec4(a_color, 1.0);\";\r\nconst computeBaseColor = \"return v_color;\";\r\n\r\nconst roundPointDiscard = `\r\n vec2 pointXY = (2.0 * gl_PointCoord - 1.0);\r\n return dot(pointXY, pointXY) > 1.0;\r\n`;\r\n\r\nconst checkForClassifiedDiscard = \"return baseColor.a == 0.0;\";\r\n\r\nconst computePosition = `\r\n gl_PointSize = 1.0;\r\n vec4 pos = MAT_MVP * rawPos;\r\n\r\n if (u_lineWeight < 0.0 && pos.w > 0.0) {\r\n mat4 toView = u_viewportTransformation * MAT_MVP;\r\n float scale = length(toView[0].xyz);\r\n gl_PointSize = clamp (- u_lineWeight * scale / pos.w, 2.0, 20.0);\r\n }\r\n return pos;\r\n`;\r\n\r\nfunction createBuilder(): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PointCloud, false));\r\n const vert = builder.vert;\r\n addLineWeight(vert);\r\n addViewportTransformation(vert);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n return builder;\r\n}\r\n\r\nconst scratchPointCloudParams = new Float32Array(2);\r\n/** @internal */\r\nexport function createPointCloudBuilder(classified: IsClassified, featureMode: FeatureMode, thematic: IsThematic): ProgramBuilder {\r\n const builder = createBuilder();\r\n\r\n builder.addVarying(\"v_color\", VariableType.Vec4);\r\n builder.vert.set(VertexShaderComponent.ComputeBaseColor, computeColor);\r\n\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundPointDiscard);\r\n if (classified) {\r\n addColorPlanarClassifier(builder, false, thematic);\r\n builder.frag.set(FragmentShaderComponent.CheckForDiscard, checkForClassifiedDiscard);\r\n\r\n if (FeatureMode.None !== featureMode)\r\n addFeaturePlanarClassifier(builder);\r\n }\r\n\r\n if (IsThematic.Yes === thematic) {\r\n addThematicDisplay(builder, true);\r\n addTexture(builder, IsAnimated.No, IsThematic.Yes, true);\r\n }\r\n\r\n builder.vert.addUniform(\"u_pointCloudParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_pointCloudParams\", (uniform, params) => {\r\n const pointCloud = params.geometry.asPointCloud!;\r\n scratchPointCloudParams[0] = pointCloud.colorIsBgr ? 1 : 0; // Volume classifier, by element color.\r\n scratchPointCloudParams[1] = pointCloud.minimumPointSize;\r\n uniform.setUniform2fv(scratchPointCloudParams);\r\n });\r\n });\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointCloudHiliter(classified: IsClassified): ProgramBuilder {\r\n const builder = createBuilder();\r\n addUniformHiliter(builder);\r\n if (classified)\r\n addHilitePlanarClassifier(builder, false);\r\n\r\n return builder;\r\n}\r\n"]}
@@ -35,7 +35,7 @@ function createBase(instanced) {
35
35
  const attrMap = AttributeMap_1.AttributeMap.findAttributeMap(3 /* PointString */, 1 /* Yes */ === instanced);
36
36
  const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, instanced ? 3 /* InstancedVertexTable */ : 1 /* VertexTable */);
37
37
  const vert = builder.vert;
38
- vert.set(9 /* ComputePosition */, computePosition);
38
+ vert.set(10 /* ComputePosition */, computePosition);
39
39
  (0, Vertex_1.addModelViewProjectionMatrix)(vert);
40
40
  (0, Vertex_1.addLineWeight)(vert);
41
41
  builder.addInlineComputedVarying("v_roundCorners", 2 /* Float */, computeRoundCorners);
@@ -1 +1 @@
1
- {"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAA+C;AAC/C,oDAAoI;AAGpI,mCAAmC;AACnC,qCAA0C;AAC1C,yDAAgD;AAChD,yCAAqD;AACrD,qCAAuE;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB;IACxC,MAAM,OAAO,GAAG,2BAAY,CAAC,gBAAgB,sBAA0B,gBAAoB,SAAS,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,8BAAyC,CAAC,oBAA+B,CAAC,CAAC;IAClI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,0BAAwC,eAAe,CAAC,CAAC;IACjE,IAAA,qCAA4B,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,iBAAsB,mBAAmB,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,+BAA+C,YAAY,CAAC,CAAC;IAE7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAA,6BAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAJD,4DAIC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAClB,IAAA,kCAAuB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAND,4DAMC","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 { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = `\r\n float lineWeight = computeLineWeight();\r\n lineWeight += 0.5 * float(lineWeight > 4.0); // fudge factor for rounding fat points...\r\n gl_PointSize = lineWeight;\r\n return MAT_MVP * rawPos;\r\n`;\r\n\r\n// gl_PointSize specifies coordinates of this fragment within the point in range [0,1].\r\n// This should be the most precise of the many approaches we've tried, but it still yields some asymmetry...\r\n// Discarding if it meets radius precisely seems to reduce that slightly...\r\n// ###TODO try point sprites?\r\nconst roundCorners = `\r\n const vec2 center = vec2(0.5, 0.5);\r\n vec2 vt = gl_PointCoord - center;\r\n return dot(vt, vt) * v_roundCorners >= 0.25; // meets or exceeds radius of circle\r\n`;\r\n\r\nconst computeRoundCorners = \" v_roundCorners = gl_PointSize > 4.0 ? 1.0 : 0.0;\";\r\n\r\nfunction createBase(instanced: IsInstanced): ProgramBuilder {\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.PointString, IsInstanced.Yes === instanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n builder.addInlineComputedVarying(\"v_roundCorners\", VariableType.Float, computeRoundCorners);\r\n builder.frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundCorners);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringHiliter(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringBuilder(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
1
+ {"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAA+C;AAC/C,oDAAoI;AAGpI,mCAAmC;AACnC,qCAA0C;AAC1C,yDAAgD;AAChD,yCAAqD;AACrD,qCAAuE;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB;IACxC,MAAM,OAAO,GAAG,2BAAY,CAAC,gBAAgB,sBAA0B,gBAAoB,SAAS,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,8BAAyC,CAAC,oBAA+B,CAAC,CAAC;IAClI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,2BAAwC,eAAe,CAAC,CAAC;IACjE,IAAA,qCAA4B,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,iBAAsB,mBAAmB,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,+BAA+C,YAAY,CAAC,CAAC;IAE7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAA,6BAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAJD,4DAIC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAClB,IAAA,kCAAuB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAND,4DAMC","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 { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = `\r\n float lineWeight = computeLineWeight();\r\n lineWeight += 0.5 * float(lineWeight > 4.0); // fudge factor for rounding fat points...\r\n gl_PointSize = lineWeight;\r\n return MAT_MVP * rawPos;\r\n`;\r\n\r\n// gl_PointSize specifies coordinates of this fragment within the point in range [0,1].\r\n// This should be the most precise of the many approaches we've tried, but it still yields some asymmetry...\r\n// Discarding if it meets radius precisely seems to reduce that slightly...\r\n// ###TODO try point sprites?\r\nconst roundCorners = `\r\n const vec2 center = vec2(0.5, 0.5);\r\n vec2 vt = gl_PointCoord - center;\r\n return dot(vt, vt) * v_roundCorners >= 0.25; // meets or exceeds radius of circle\r\n`;\r\n\r\nconst computeRoundCorners = \" v_roundCorners = gl_PointSize > 4.0 ? 1.0 : 0.0;\";\r\n\r\nfunction createBase(instanced: IsInstanced): ProgramBuilder {\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.PointString, IsInstanced.Yes === instanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n builder.addInlineComputedVarying(\"v_roundCorners\", VariableType.Float, computeRoundCorners);\r\n builder.frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundCorners);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringHiliter(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringBuilder(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
@@ -181,7 +181,7 @@ function addCommon(prog) {
181
181
  (0, Vertex_1.addLineWeight)(vert);
182
182
  vert.addGlobal("miterAdjust", 2 /* Float */, "0.0");
183
183
  prog.addVarying("v_eyeSpace", 4 /* Vec3 */);
184
- vert.set(9 /* ComputePosition */, computePosition);
184
+ vert.set(10 /* ComputePosition */, computePosition);
185
185
  prog.addVarying("v_lnInfo", 5 /* Vec4 */);
186
186
  addAdjustWidth(vert);
187
187
  vert.addFunction(decodePosition);