@itwin/core-frontend 3.0.0-dev.99 → 3.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1232) 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 +30 -17
  47. package/lib/cjs/IModelApp.d.ts.map +1 -1
  48. package/lib/cjs/IModelApp.js +33 -26
  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/UserPreferences.js +7 -0
  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 +11 -24
  138. package/lib/cjs/core-frontend.d.ts.map +1 -1
  139. package/lib/cjs/core-frontend.js +11 -24
  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/Material.d.ts +1 -1
  261. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/Material.js +2 -0
  263. package/lib/cjs/render/webgl/Material.js.map +1 -1
  264. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  265. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  266. package/lib/cjs/render/webgl/Mesh.js +18 -458
  267. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  268. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  269. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  270. package/lib/cjs/render/webgl/MeshData.js +66 -0
  271. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  272. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  273. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  274. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  275. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  276. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  277. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  278. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  279. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  280. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  281. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  282. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  283. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  284. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  285. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  286. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  287. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  288. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  289. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  290. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  291. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  292. package/lib/cjs/render/webgl/PointString.js +1 -1
  293. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  294. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  295. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  296. package/lib/cjs/render/webgl/Polyline.js +6 -6
  297. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  298. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  299. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  300. package/lib/cjs/render/webgl/Primitive.js +5 -5
  301. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  302. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  303. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  304. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  305. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  306. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  307. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  308. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  309. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  310. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  311. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  313. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  314. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  315. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  316. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  317. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  318. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  319. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  320. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  321. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  322. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  324. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  325. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  326. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  327. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  328. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  329. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  330. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  331. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  332. package/lib/cjs/render/webgl/System.d.ts +13 -10
  333. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  334. package/lib/cjs/render/webgl/System.js +75 -21
  335. package/lib/cjs/render/webgl/System.js.map +1 -1
  336. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  337. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  338. package/lib/cjs/render/webgl/Target.js +88 -2
  339. package/lib/cjs/render/webgl/Target.js.map +1 -1
  340. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  341. package/lib/cjs/render/webgl/Technique.js +112 -119
  342. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  343. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  344. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  345. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  346. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  347. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  348. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  350. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  351. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  352. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  353. package/lib/cjs/render/webgl/Texture.js +26 -23
  354. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  355. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  356. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  357. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  359. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  360. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  361. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  362. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  363. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  364. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  365. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  366. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  368. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  370. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  372. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  373. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  374. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  375. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  376. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  377. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  378. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  381. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  382. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  383. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  384. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  385. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  386. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  387. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  389. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  391. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  392. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  393. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  394. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  395. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  396. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  398. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  399. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  400. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  401. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  402. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  403. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  404. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  405. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  406. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  407. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  408. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  409. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  410. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  411. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  412. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  413. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  414. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  415. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  416. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  417. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  418. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  419. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  420. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  421. package/lib/cjs/render-primitives.d.ts +5 -1
  422. package/lib/cjs/render-primitives.d.ts.map +1 -1
  423. package/lib/cjs/render-primitives.js +5 -1
  424. package/lib/cjs/render-primitives.js.map +1 -1
  425. package/lib/cjs/request/Request.d.ts +167 -0
  426. package/lib/cjs/request/Request.d.ts.map +1 -0
  427. package/lib/cjs/request/Request.js +315 -0
  428. package/lib/cjs/request/Request.js.map +1 -0
  429. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  430. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  431. package/lib/cjs/tile/B3dmReader.js +11 -7
  432. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  433. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  434. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  435. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  436. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  437. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  438. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  439. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  440. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  441. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  442. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  443. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  444. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  445. package/lib/cjs/tile/GltfReader.js +703 -264
  446. package/lib/cjs/tile/GltfReader.js.map +1 -1
  447. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  448. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  449. package/lib/cjs/tile/I3dmReader.js +10 -6
  450. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  451. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  452. package/lib/cjs/tile/IModelTile.js +14 -7
  453. package/lib/cjs/tile/IModelTile.js.map +1 -1
  454. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  455. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  456. package/lib/cjs/tile/IModelTileTree.js +36 -1
  457. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  458. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  459. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  460. package/lib/cjs/tile/ImdlReader.js +202 -68
  461. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  462. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  463. package/lib/cjs/tile/OrbitGtTileTree.js +8 -5
  464. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  465. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  466. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  467. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  468. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  469. package/lib/cjs/tile/RealityModelTileTree.d.ts +3 -55
  470. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/RealityModelTileTree.js +57 -232
  472. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  473. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  474. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  475. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  476. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  477. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  478. package/lib/cjs/tile/Tile.js +5 -1
  479. package/lib/cjs/tile/Tile.js.map +1 -1
  480. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  481. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  482. package/lib/cjs/tile/TileAdmin.js +18 -12
  483. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  484. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  485. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  486. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  487. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  488. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  489. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  490. package/lib/cjs/tile/TileTreeReference.js +5 -0
  491. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  492. package/lib/cjs/tile/internal.d.ts +4 -1
  493. package/lib/cjs/tile/internal.d.ts.map +1 -1
  494. package/lib/cjs/tile/internal.js +4 -1
  495. package/lib/cjs/tile/internal.js.map +1 -1
  496. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  497. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  498. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  499. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  500. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  501. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  502. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  503. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  504. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  505. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  506. package/lib/cjs/tile/map/BingElevation.js +4 -4
  507. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  508. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  509. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  510. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  511. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  512. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  513. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  514. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  515. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  516. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  517. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  518. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  519. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  520. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  521. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  522. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  523. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  524. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  525. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  526. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  527. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  528. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  529. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  530. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  531. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  532. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  533. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  534. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  535. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  536. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  537. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  538. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  539. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  540. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  541. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  542. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  543. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  544. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  545. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  546. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  547. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  548. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  549. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  550. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  551. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  552. package/lib/cjs/tile/map/MapTile.js +4 -3
  553. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  554. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  555. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  556. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  557. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  558. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  559. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  560. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  561. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  562. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  563. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  564. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  565. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  566. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  567. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  568. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  569. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  570. package/lib/cjs/tile/map/QuadId.js +2 -1
  571. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  572. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  573. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  574. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  575. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  576. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  577. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  578. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  579. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  580. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  581. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  582. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  583. package/lib/cjs/tools/EditManipulator.js +1 -1
  584. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  585. package/lib/cjs/tools/ElementSetTool.js +2 -2
  586. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  587. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  588. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  589. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  590. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  591. package/lib/cjs/tools/Tool.d.ts +29 -1
  592. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  593. package/lib/cjs/tools/Tool.js +66 -0
  594. package/lib/cjs/tools/Tool.js.map +1 -1
  595. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  596. package/lib/cjs/tools/ToolAdmin.js +20 -10
  597. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  598. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  599. package/lib/cjs/tools/ViewTool.js +3 -11
  600. package/lib/cjs/tools/ViewTool.js.map +1 -1
  601. package/lib/cjs/webgl.d.ts +5 -0
  602. package/lib/cjs/webgl.d.ts.map +1 -1
  603. package/lib/cjs/webgl.js +5 -0
  604. package/lib/cjs/webgl.js.map +1 -1
  605. package/lib/esm/AccuSnap.js +3 -3
  606. package/lib/esm/AccuSnap.js.map +1 -1
  607. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  608. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  609. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  610. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  611. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  612. package/lib/esm/BackgroundMapGeometry.js +2 -2
  613. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  614. package/lib/esm/BingLocation.js +1 -1
  615. package/lib/esm/BingLocation.js.map +1 -1
  616. package/lib/esm/CheckpointConnection.js +1 -1
  617. package/lib/esm/CheckpointConnection.js.map +1 -1
  618. package/lib/esm/ContextRealityModelState.js +1 -1
  619. package/lib/esm/ContextRealityModelState.js.map +1 -1
  620. package/lib/esm/DisplayStyleState.d.ts +10 -163
  621. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  622. package/lib/esm/DisplayStyleState.js +70 -346
  623. package/lib/esm/DisplayStyleState.js.map +1 -1
  624. package/lib/esm/DrawingViewState.d.ts +2 -2
  625. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  626. package/lib/esm/DrawingViewState.js +3 -3
  627. package/lib/esm/DrawingViewState.js.map +1 -1
  628. package/lib/esm/ElementLocateManager.d.ts +5 -0
  629. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  630. package/lib/esm/ElementLocateManager.js +12 -2
  631. package/lib/esm/ElementLocateManager.js.map +1 -1
  632. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  633. package/lib/esm/EmphasizeElements.js +14 -4
  634. package/lib/esm/EmphasizeElements.js.map +1 -1
  635. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  636. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  637. package/lib/esm/EnvironmentDecorations.js +196 -0
  638. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  639. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  640. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  641. package/lib/esm/FrontendHubAccess.js.map +1 -1
  642. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  643. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  644. package/lib/esm/FrontendLoggerCategory.js +2 -8
  645. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  646. package/lib/esm/HitDetail.js +7 -7
  647. package/lib/esm/HitDetail.js.map +1 -1
  648. package/lib/esm/IModelApp.d.ts +30 -17
  649. package/lib/esm/IModelApp.d.ts.map +1 -1
  650. package/lib/esm/IModelApp.js +32 -25
  651. package/lib/esm/IModelApp.js.map +1 -1
  652. package/lib/esm/IModelConnection.d.ts +4 -6
  653. package/lib/esm/IModelConnection.d.ts.map +1 -1
  654. package/lib/esm/IModelConnection.js +6 -11
  655. package/lib/esm/IModelConnection.js.map +1 -1
  656. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  657. package/lib/esm/IModeljs-css.js +8 -6
  658. package/lib/esm/IModeljs-css.js.map +1 -1
  659. package/lib/esm/ImageUtil.d.ts +3 -3
  660. package/lib/esm/ImageUtil.d.ts.map +1 -1
  661. package/lib/esm/ImageUtil.js +7 -4
  662. package/lib/esm/ImageUtil.js.map +1 -1
  663. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  664. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  665. package/lib/esm/LocalhostIpcApp.js +22 -8
  666. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  667. package/lib/esm/Marker.d.ts +9 -2
  668. package/lib/esm/Marker.d.ts.map +1 -1
  669. package/lib/esm/Marker.js +34 -6
  670. package/lib/esm/Marker.js.map +1 -1
  671. package/lib/esm/ModelState.js +1 -1
  672. package/lib/esm/ModelState.js.map +1 -1
  673. package/lib/esm/NativeApp.d.ts +3 -38
  674. package/lib/esm/NativeApp.d.ts.map +1 -1
  675. package/lib/esm/NativeApp.js +1 -69
  676. package/lib/esm/NativeApp.js.map +1 -1
  677. package/lib/esm/NoRenderApp.d.ts +0 -1
  678. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  679. package/lib/esm/NoRenderApp.js +0 -1
  680. package/lib/esm/NoRenderApp.js.map +1 -1
  681. package/lib/esm/NotificationManager.d.ts +3 -1
  682. package/lib/esm/NotificationManager.d.ts.map +1 -1
  683. package/lib/esm/NotificationManager.js +2 -0
  684. package/lib/esm/NotificationManager.js.map +1 -1
  685. package/lib/esm/RealityDataSource.d.ts +59 -29
  686. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  687. package/lib/esm/RealityDataSource.js +247 -92
  688. package/lib/esm/RealityDataSource.js.map +1 -1
  689. package/lib/esm/RenderScheduleState.d.ts +2 -0
  690. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  691. package/lib/esm/RenderScheduleState.js +8 -4
  692. package/lib/esm/RenderScheduleState.js.map +1 -1
  693. package/lib/esm/SheetViewState.d.ts +2 -2
  694. package/lib/esm/SheetViewState.d.ts.map +1 -1
  695. package/lib/esm/SheetViewState.js +8 -9
  696. package/lib/esm/SheetViewState.js.map +1 -1
  697. package/lib/esm/SpatialViewState.d.ts +10 -2
  698. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  699. package/lib/esm/SpatialViewState.js +12 -2
  700. package/lib/esm/SpatialViewState.js.map +1 -1
  701. package/lib/esm/SubCategoriesCache.js +1 -1
  702. package/lib/esm/SubCategoriesCache.js.map +1 -1
  703. package/lib/esm/Tiles.d.ts +11 -1
  704. package/lib/esm/Tiles.d.ts.map +1 -1
  705. package/lib/esm/Tiles.js +7 -0
  706. package/lib/esm/Tiles.js.map +1 -1
  707. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  708. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  709. package/lib/esm/TwoWayViewportSync.js +49 -10
  710. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  711. package/lib/esm/UserPreferences.d.ts +72 -0
  712. package/lib/esm/UserPreferences.d.ts.map +1 -0
  713. package/lib/esm/UserPreferences.js +6 -0
  714. package/lib/esm/UserPreferences.js.map +1 -0
  715. package/lib/esm/ViewContext.d.ts +3 -1
  716. package/lib/esm/ViewContext.d.ts.map +1 -1
  717. package/lib/esm/ViewContext.js +4 -0
  718. package/lib/esm/ViewContext.js.map +1 -1
  719. package/lib/esm/ViewCreator2d.js +3 -3
  720. package/lib/esm/ViewCreator2d.js.map +1 -1
  721. package/lib/esm/ViewCreator3d.d.ts +1 -1
  722. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  723. package/lib/esm/ViewCreator3d.js +5 -6
  724. package/lib/esm/ViewCreator3d.js.map +1 -1
  725. package/lib/esm/ViewManager.d.ts +6 -6
  726. package/lib/esm/ViewManager.d.ts.map +1 -1
  727. package/lib/esm/ViewManager.js +13 -13
  728. package/lib/esm/ViewManager.js.map +1 -1
  729. package/lib/esm/ViewState.d.ts +11 -5
  730. package/lib/esm/ViewState.d.ts.map +1 -1
  731. package/lib/esm/ViewState.js +21 -66
  732. package/lib/esm/ViewState.js.map +1 -1
  733. package/lib/esm/ViewingSpace.js +1 -1
  734. package/lib/esm/ViewingSpace.js.map +1 -1
  735. package/lib/esm/Viewport.d.ts +57 -11
  736. package/lib/esm/Viewport.d.ts.map +1 -1
  737. package/lib/esm/Viewport.js +56 -32
  738. package/lib/esm/Viewport.js.map +1 -1
  739. package/lib/esm/core-frontend.d.ts +11 -24
  740. package/lib/esm/core-frontend.d.ts.map +1 -1
  741. package/lib/esm/core-frontend.js +11 -24
  742. package/lib/esm/core-frontend.js.map +1 -1
  743. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  744. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  745. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  746. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  747. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  748. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  749. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  750. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  751. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  752. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  753. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  754. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  755. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  756. package/lib/esm/render/FeatureSymbology.js +3 -3
  757. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  758. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  759. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  760. package/lib/esm/render/GraphicBranch.js +8 -0
  761. package/lib/esm/render/GraphicBranch.js.map +1 -1
  762. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  763. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  764. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  765. package/lib/esm/render/MockRender.d.ts +3 -1
  766. package/lib/esm/render/MockRender.d.ts.map +1 -1
  767. package/lib/esm/render/MockRender.js.map +1 -1
  768. package/lib/esm/render/RenderMaterial.d.ts +61 -0
  769. package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
  770. package/lib/esm/render/RenderMaterial.js +9 -0
  771. package/lib/esm/render/RenderMaterial.js.map +1 -0
  772. package/lib/esm/render/RenderMemory.d.ts +21 -15
  773. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  774. package/lib/esm/render/RenderMemory.js +21 -15
  775. package/lib/esm/render/RenderMemory.js.map +1 -1
  776. package/lib/esm/render/RenderSystem.d.ts +44 -7
  777. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  778. package/lib/esm/render/RenderSystem.js +32 -9
  779. package/lib/esm/render/RenderSystem.js.map +1 -1
  780. package/lib/esm/render/RenderTarget.d.ts +10 -2
  781. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  782. package/lib/esm/render/RenderTarget.js +2 -1
  783. package/lib/esm/render/RenderTarget.js.map +1 -1
  784. package/lib/esm/render/RenderTexture.d.ts +2 -17
  785. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  786. package/lib/esm/render/RenderTexture.js +1 -16
  787. package/lib/esm/render/RenderTexture.js.map +1 -1
  788. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  789. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  790. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  791. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  792. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  793. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  794. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  795. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  796. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  797. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  798. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  799. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  800. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  801. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  802. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  803. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  804. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  805. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  806. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  807. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  808. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  809. package/lib/esm/render/primitives/VertexTable.js +11 -342
  810. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  811. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  812. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  813. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  814. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  815. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  816. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  817. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  818. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  819. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  820. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  821. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  822. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  823. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  824. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  825. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  826. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  827. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  828. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  829. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  830. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  831. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  832. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  833. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  834. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  835. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  836. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  837. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  838. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  839. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  840. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  841. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  842. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  843. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  844. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  845. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  846. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  847. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  848. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  849. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  850. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  851. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  852. package/lib/esm/render/webgl/Graphic.js +39 -2
  853. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  854. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  855. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  856. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  857. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  858. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  859. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  861. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  862. package/lib/esm/render/webgl/Material.d.ts +1 -1
  863. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  864. package/lib/esm/render/webgl/Material.js +2 -0
  865. package/lib/esm/render/webgl/Material.js.map +1 -1
  866. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  867. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  868. package/lib/esm/render/webgl/Mesh.js +12 -445
  869. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  870. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  871. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  872. package/lib/esm/render/webgl/MeshData.js +62 -0
  873. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  874. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  875. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  876. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  877. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  878. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  879. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  880. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  881. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  882. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  883. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  884. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  885. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  886. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  887. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  888. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  889. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  890. package/lib/esm/render/webgl/PointCloud.js +2 -2
  891. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  892. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  893. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  894. package/lib/esm/render/webgl/PointString.js +1 -1
  895. package/lib/esm/render/webgl/PointString.js.map +1 -1
  896. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  897. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  898. package/lib/esm/render/webgl/Polyline.js +6 -6
  899. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  900. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  901. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/Primitive.js +5 -5
  903. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  904. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  905. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  907. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  908. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  909. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  910. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  911. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  912. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  913. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  914. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  915. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  916. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  917. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  918. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  919. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  920. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  921. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  922. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  923. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  924. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  925. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  926. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  927. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  928. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  929. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  930. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  931. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  932. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  933. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  934. package/lib/esm/render/webgl/System.d.ts +13 -10
  935. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  936. package/lib/esm/render/webgl/System.js +77 -23
  937. package/lib/esm/render/webgl/System.js.map +1 -1
  938. package/lib/esm/render/webgl/Target.d.ts +13 -1
  939. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  940. package/lib/esm/render/webgl/Target.js +88 -2
  941. package/lib/esm/render/webgl/Target.js.map +1 -1
  942. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  943. package/lib/esm/render/webgl/Technique.js +112 -119
  944. package/lib/esm/render/webgl/Technique.js.map +1 -1
  945. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  946. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  947. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  948. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  949. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  950. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  951. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  952. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  953. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  954. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  955. package/lib/esm/render/webgl/Texture.js +27 -24
  956. package/lib/esm/render/webgl/Texture.js.map +1 -1
  957. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  958. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  959. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  960. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  961. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  962. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  963. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  964. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  965. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  966. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  967. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  968. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  969. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  970. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  971. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  972. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  973. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  974. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  975. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  976. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  977. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  978. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  979. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  980. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  981. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  982. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  983. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  984. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  985. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  986. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  987. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  988. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  989. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  990. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  991. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  992. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  993. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  994. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  995. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  996. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  997. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  998. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  999. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  1000. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  1001. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  1002. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  1003. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  1004. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  1005. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  1006. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  1007. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  1008. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  1009. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  1010. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  1011. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  1012. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  1013. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  1014. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  1015. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  1016. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  1017. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  1018. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1019. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1020. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1021. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1022. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1023. package/lib/esm/render-primitives.d.ts +5 -1
  1024. package/lib/esm/render-primitives.d.ts.map +1 -1
  1025. package/lib/esm/render-primitives.js +5 -1
  1026. package/lib/esm/render-primitives.js.map +1 -1
  1027. package/lib/esm/request/Request.d.ts +167 -0
  1028. package/lib/esm/request/Request.d.ts.map +1 -0
  1029. package/lib/esm/request/Request.js +289 -0
  1030. package/lib/esm/request/Request.js.map +1 -0
  1031. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1032. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1033. package/lib/esm/tile/B3dmReader.js +12 -8
  1034. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1035. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1036. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1037. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1038. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1039. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1040. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1041. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1042. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1043. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1044. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1045. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1046. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1047. package/lib/esm/tile/GltfReader.js +678 -242
  1048. package/lib/esm/tile/GltfReader.js.map +1 -1
  1049. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1050. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1051. package/lib/esm/tile/I3dmReader.js +11 -7
  1052. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1053. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1054. package/lib/esm/tile/IModelTile.js +14 -7
  1055. package/lib/esm/tile/IModelTile.js.map +1 -1
  1056. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1057. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1058. package/lib/esm/tile/IModelTileTree.js +36 -1
  1059. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1060. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1061. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1062. package/lib/esm/tile/ImdlReader.js +199 -66
  1063. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1064. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1065. package/lib/esm/tile/OrbitGtTileTree.js +8 -5
  1066. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1067. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1068. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1069. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1070. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1071. package/lib/esm/tile/RealityModelTileTree.d.ts +3 -55
  1072. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1073. package/lib/esm/tile/RealityModelTileTree.js +56 -230
  1074. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1075. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1076. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1077. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1078. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1079. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1080. package/lib/esm/tile/Tile.js +5 -1
  1081. package/lib/esm/tile/Tile.js.map +1 -1
  1082. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1083. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1084. package/lib/esm/tile/TileAdmin.js +19 -13
  1085. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1086. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1087. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1088. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1089. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1090. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1091. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1092. package/lib/esm/tile/TileTreeReference.js +5 -0
  1093. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1094. package/lib/esm/tile/internal.d.ts +4 -1
  1095. package/lib/esm/tile/internal.d.ts.map +1 -1
  1096. package/lib/esm/tile/internal.js +4 -1
  1097. package/lib/esm/tile/internal.js.map +1 -1
  1098. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1099. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1100. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1101. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1102. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1103. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1104. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1105. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1106. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1107. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1108. package/lib/esm/tile/map/BingElevation.js +1 -1
  1109. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1110. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1111. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1112. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1113. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1114. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1115. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1116. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1117. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1118. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1119. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1120. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1121. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1122. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1123. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1124. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1125. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1126. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1127. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1128. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1129. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1130. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1131. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1132. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1133. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1134. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1135. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1136. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1137. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1138. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1139. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1140. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1141. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1142. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1143. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1144. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1145. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1146. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1147. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1148. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1149. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1150. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1151. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1152. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1153. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1154. package/lib/esm/tile/map/MapTile.js +4 -3
  1155. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1156. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1157. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1158. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1159. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1160. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1161. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1162. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1163. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1164. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1165. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1166. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1167. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1168. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1169. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1170. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1171. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1172. package/lib/esm/tile/map/QuadId.js +2 -1
  1173. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1174. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1175. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1176. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1177. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1178. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1179. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1180. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1181. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1182. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1183. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1184. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1185. package/lib/esm/tools/EditManipulator.js +1 -1
  1186. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1187. package/lib/esm/tools/ElementSetTool.js +2 -2
  1188. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1189. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1190. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1191. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1192. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1193. package/lib/esm/tools/Tool.d.ts +29 -1
  1194. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1195. package/lib/esm/tools/Tool.js +66 -0
  1196. package/lib/esm/tools/Tool.js.map +1 -1
  1197. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1198. package/lib/esm/tools/ToolAdmin.js +20 -10
  1199. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1200. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1201. package/lib/esm/tools/ViewTool.js +3 -11
  1202. package/lib/esm/tools/ViewTool.js.map +1 -1
  1203. package/lib/esm/webgl.d.ts +5 -0
  1204. package/lib/esm/webgl.d.ts.map +1 -1
  1205. package/lib/esm/webgl.js +5 -0
  1206. package/lib/esm/webgl.js.map +1 -1
  1207. package/lib/public/locales/en/iModelJs.json +3 -1
  1208. package/package.json +33 -28
  1209. package/lib/cjs/RealityDataAccessProps.d.ts +0 -42
  1210. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1211. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1212. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1213. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1214. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1215. package/lib/cjs/RealityDataConnection.js +0 -101
  1216. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1217. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1218. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1219. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1220. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1221. package/lib/esm/RealityDataAccessProps.d.ts +0 -42
  1222. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1223. package/lib/esm/RealityDataAccessProps.js +0 -20
  1224. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1225. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1226. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1227. package/lib/esm/RealityDataConnection.js +0 -98
  1228. package/lib/esm/RealityDataConnection.js.map +0 -1
  1229. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1230. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1231. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1232. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Edge.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Edge.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 { ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderBuilder, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsAnimated, IsInstanced, IsThematic } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addAnimation } from \"./Animation\";\r\nimport { addColor } from \"./Color\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addAdjustWidth, addLineCode } from \"./Polyline\";\r\nimport { octDecodeNormal } from \"./Surface\";\r\nimport { addLineWeight, addModelViewMatrix, addNormalMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst decodeEndPointAndQuadIndices = `\r\n g_otherIndex = decodeUInt24(a_endPointAndQuadIndices.xyz);\r\n vec2 tc = computeLUTCoords(g_otherIndex, u_vertParams.xy, g_vert_center, u_vertParams.z);\r\n vec4 enc1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_vert_stepX;\r\n vec4 enc2 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n vec3 qpos = vec3(decodeUInt16(enc1.xy), decodeUInt16(enc1.zw), decodeUInt16(enc2.xy));\r\n g_otherPos = unquantizePosition(qpos, u_qOrigin, u_qScale);\r\n g_quadIndex = a_endPointAndQuadIndices.w;\r\n`;\r\nconst animateEndPoint = `g_otherPos.xyz += computeAnimationDisplacement(g_otherIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);`;\r\n\r\nconst checkForSilhouetteDiscard = `\r\n vec3 n0 = MAT_NORM * octDecodeNormal(a_normals.xy);\r\n vec3 n1 = MAT_NORM * octDecodeNormal(a_normals.zw);\r\n\r\n if (kFrustumType_Perspective != u_frustum.z) {\r\n float perpTol = 4.75e-6;\r\n return (n0.z * n1.z > perpTol); // orthographic.\r\n } else {\r\n float perpTol = 2.5e-4;\r\n vec4 viewPos = MAT_MV * rawPos; // perspective\r\n vec3 toEye = normalize(viewPos.xyz);\r\n float dot0 = dot(n0, toEye);\r\n float dot1 = dot(n1, toEye);\r\n\r\n if (dot0 * dot1 > perpTol)\r\n return true;\r\n\r\n // Need to discard if either is non-silhouette.\r\n vec4 otherPosition = g_otherPos;\r\n viewPos = MAT_MV * otherPosition;\r\n toEye = normalize(viewPos.xyz);\r\n dot0 = dot(n0, toEye);\r\n dot1 = dot(n1, toEye);\r\n\r\n return dot0 * dot1 > perpTol;\r\n }\r\n`;\r\n\r\nconst computePosition = `\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n vec4 other = g_otherPos;\r\n float miterAdjust = 0.0;\r\n float weight = computeLineWeight();\r\n\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, other, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0) // Clipped out.\r\n return g_windowPos;\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projOther = modelToWindowCoordinates(other, rawPos, otherPos, otherMvPos);\r\n\r\n g_windowDir = projOther.xy - g_windowPos.xy;\r\n\r\n adjustWidth(weight, g_windowDir, g_windowPos.xy);\r\n g_windowDir = normalize(g_windowDir);\r\n\r\n vec2 perp = vec2(-g_windowDir.y, g_windowDir.x);\r\n float perpDist = weight / 2.0;\r\n float alongDist = 0.0;\r\n\r\n perpDist *= sign(0.5 - float(g_quadIndex == 0.0 || g_quadIndex == 3.0)); // negate for index 0 and 3\r\n alongDist += distance(rawPos, other) * float(g_quadIndex >= 2.0); // index 2 and 3 correspond to 'far' endpoint of segment\r\n\r\n pos.x += perp.x * perpDist * 2.0 * pos.w / u_viewport.x;\r\n pos.y += perp.y * perpDist * 2.0 * pos.w / u_viewport.y;\r\n\r\n lineCodeEyePos = .5 * (rawPos + other);\r\n lineCodeDist = alongDist;\r\n\r\n return pos;\r\n`;\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, 0.0\";\r\n\r\nconst adjustContrast = `\r\n float bgi = u_bgIntensity;\r\n if (bgi < 0.0)\r\n return baseColor;\r\n\r\n float s;\r\n float rgbi = baseColor.r * 0.3 + baseColor.g * 0.59 + baseColor.b * 0.11;\r\n if (rgbi > 0.81)\r\n s = bgi > 0.57 ? 0.0 : 0.699;\r\n else if (rgbi > 0.57)\r\n s = bgi > 0.57 ? 0.0 : 1.0;\r\n else\r\n s = bgi < 0.81 ? 1.0 : 0.699;\r\n\r\n return vec4(vec3(s), baseColor.a);\r\n`;\r\n\r\n/** @internal */\r\nexport function addEdgeContrast(vert: VertexShaderBuilder): void {\r\n vert.addUniform(\"u_bgIntensity\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_bgIntensity\", (uniform, params) => {\r\n let bgi = -1;\r\n if (params.geometry.isEdge && params.target.currentEdgeSettings.wantContrastingColor(params.target.currentViewFlags.renderMode))\r\n bgi = params.target.uniforms.style.backgroundIntensity;\r\n\r\n uniform.setUniform1f(bgi);\r\n });\r\n });\r\n\r\n vert.set(VertexShaderComponent.AdjustContrast, adjustContrast);\r\n}\r\n\r\nfunction createBase(isSilhouette: boolean, instanced: IsInstanced, isAnimated: IsAnimated): ProgramBuilder {\r\n const isInstanced = IsInstanced.Yes === instanced;\r\n const attrMap = AttributeMap.findAttributeMap(isSilhouette ? TechniqueId.SilhouetteEdge : TechniqueId.Edge, isInstanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, isInstanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n const vert = builder.vert;\r\n\r\n vert.addGlobal(\"g_otherPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_quadIndex\", VariableType.Float);\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addGlobal(\"g_otherIndex\", VariableType.Float);\r\n\r\n vert.addInitializer(decodeEndPointAndQuadIndices);\r\n if (isAnimated) {\r\n addAnimation(vert, false, IsThematic.No);\r\n vert.addInitializer(animateEndPoint);\r\n }\r\n\r\n vert.addGlobal(\"lineCodeEyePos\", VariableType.Vec4);\r\n vert.addGlobal(\"lineCodeDist\", VariableType.Float, \"0.0\");\r\n\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation, and sets g_eyeSpace\r\n addProjectionMatrix(vert);\r\n addLineCode(builder, lineCodeArgs);\r\n builder.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n builder.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n\r\n addViewport(vert);\r\n addModelViewMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n\r\n if (isSilhouette) {\r\n addNormalMatrix(vert, instanced);\r\n addFrustum(builder);\r\n vert.set(VertexShaderComponent.CheckForEarlyDiscard, checkForSilhouetteDiscard);\r\n vert.addFunction(octDecodeNormal);\r\n }\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createEdgeBuilder(isSilhouette: boolean, instanced: IsInstanced, isAnimated: IsAnimated): ProgramBuilder {\r\n const builder = createBase(isSilhouette, instanced, isAnimated);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
1
+ {"version":3,"file":"Edge.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Edge.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderBuilder, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsAnimated, IsInstanced, IsThematic } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { addAnimation } from \"./Animation\";\r\nimport { addColor } from \"./Color\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addAdjustWidth, addLineCode } from \"./Polyline\";\r\nimport { octDecodeNormal } from \"./Surface\";\r\nimport { addLineWeight, addModelViewMatrix, addNormalMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\nimport { addLookupTable } from \"./LookupTable\";\r\nimport { addRenderOrder, addRenderOrderConstants } from \"./FeatureSymbology\";\r\n\r\nexport type EdgeBuilderType = \"SegmentEdge\" | \"Silhouette\" | \"IndexedEdge\";\r\n\r\nconst computeOtherPos = `\r\n vec2 tc = computeLUTCoords(g_otherIndex, u_vertParams.xy, g_vert_center, u_vertParams.z);\r\n vec4 enc1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_vert_stepX;\r\n vec4 enc2 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n vec3 qpos = vec3(decodeUInt16(enc1.xy), decodeUInt16(enc1.zw), decodeUInt16(enc2.xy));\r\n g_otherPos = unquantizePosition(qpos, u_qOrigin, u_qScale);\r\n`;\r\n\r\nconst decodeEndPointAndQuadIndices = `\r\n g_otherIndex = decodeUInt24(a_endPointAndQuadIndices.xyz);\r\n${computeOtherPos}\r\n g_quadIndex = a_endPointAndQuadIndices.w;\r\n`;\r\n\r\nconst animateEndPoint = `g_otherPos.xyz += computeAnimationDisplacement(g_otherIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);`;\r\n\r\n// a_pos is a 24-bit index into edge lookup table.\r\n// First six bytes of lookup table entry are the pair of 24-bit indices identifying the endpoints of the edge in the vertex table.\r\n// Return the 24-bit index of \"this\" vertex in the vertex table encoded in a vec3.\r\nconst computeIndexedQuantizedPosition = `\r\n g_vertexId = gl_VertexID % 6;\r\n if (g_vertexId == 0)\r\n g_quadIndex = 0.0;\r\n else if (g_vertexId == 2 || g_vertexId == 3)\r\n g_quadIndex = 1.0;\r\n else if (g_vertexId == 1 || g_vertexId == 4)\r\n g_quadIndex = 2.0;\r\n else\r\n g_quadIndex = 3.0;\r\n\r\n // The following formula computes the texel index, but suffers from precision issues for large edge indices, so we must compute using integers instead.\r\n // float edgeBaseIndex = u_edgeParams.z * 1.5 + u_edgeParams.w * 0.25 + (edgeIndex - u_edgeParams.z) * 2.5);\r\n\r\n float fEdgeIndex = decodeUInt24(a_pos);\r\n g_isSilhouette = fEdgeIndex >= u_edgeParams.z;\r\n int edgeIndex = int(fEdgeIndex);\r\n bool isEven = 0 == (edgeIndex & 1);\r\n float edgeBaseIndex;\r\n if (!g_isSilhouette) {\r\n edgeBaseIndex = float(edgeIndex + (edgeIndex / 2));\r\n } else {\r\n // If both pad and edgeIndex produce a remainder (0.5 for each - pad is a multiple of 2), we must add one to the index to account for it.\r\n int shift = isEven ? 0 : 1;\r\n int pad = int(u_edgeParams.w);\r\n if (0 != (pad % 4)) {\r\n isEven = !isEven;\r\n shift = shift + 1;\r\n }\r\n\r\n // s = num segments p = num padding bytes i = edge index\r\n // texel index = 1.5s + .25p + 2.5(i - s) = 1.5s + .25p + 2.5i - 2.5s = 2.5i + .25p - s = i + i + i/2 + p/4 - s\r\n edgeBaseIndex = float(edgeIndex + edgeIndex + edgeIndex / 2 + pad / 4 - int(u_edgeParams.z) + shift / 2);\r\n }\r\n\r\n vec2 tc = compute_edge_coords(floor(edgeBaseIndex));\r\n vec4 s0 = floor(TEXTURE(u_edgeLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_edge_stepX;\r\n vec4 s1 = floor(TEXTURE(u_edgeLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_edge_stepX;\r\n vec4 s2 = floor(TEXTURE(u_edgeLUT, tc) * 255.0 + 0.5);\r\n\r\n vec3 i0 = isEven ? s0.xyz : vec3(s0.zw, s1.x);\r\n vec3 i1 = isEven ? vec3(s0.w, s1.xy) : s1.yzw;\r\n g_otherIndexIndex = g_quadIndex < 2.0 ? i1 : i0;\r\n\r\n g_normals = isEven ? vec4(s1.zw, s2.xy) : s2;\r\n\r\n return g_quadIndex < 2.0 ? i0 : i1;\r\n`;\r\n\r\nconst initializeIndexed = `\r\n g_otherIndex = decodeUInt24(g_otherIndexIndex);\r\n${computeOtherPos}\r\n`;\r\n\r\n// IndexedEdgeGeometry.renderOrder returns Edge or PlanarEdge. Adjust if silhouette for output to pick buffers.\r\nconst computeIndexedRenderOrder = `\r\n if (g_isSilhouette)\r\n v_renderOrder = kRenderOrder_Edge == u_renderOrder ? kRenderOrder_Silhouette : kRenderOrder_PlanarSilhouette;\r\n else\r\n v_renderOrder = u_renderOrder;\r\n`;\r\n\r\nconst checkForSilhouetteDiscard = `\r\n if (kFrustumType_Perspective != u_frustum.z) {\r\n float perpTol = 4.75e-6;\r\n return (n0.z * n1.z > perpTol); // orthographic.\r\n } else {\r\n float perpTol = 2.5e-4;\r\n vec4 viewPos = MAT_MV * rawPos; // perspective\r\n vec3 toEye = normalize(viewPos.xyz);\r\n float dot0 = dot(n0, toEye);\r\n float dot1 = dot(n1, toEye);\r\n\r\n if (dot0 * dot1 > perpTol)\r\n return true;\r\n\r\n // Need to discard if either is non-silhouette.\r\n vec4 otherPosition = g_otherPos;\r\n viewPos = MAT_MV * otherPosition;\r\n toEye = normalize(viewPos.xyz);\r\n dot0 = dot(n0, toEye);\r\n dot1 = dot(n1, toEye);\r\n\r\n return dot0 * dot1 > perpTol;\r\n }\r\n`;\r\n\r\nconst checkForSilhouetteDiscardNonIndexed = `\r\n vec3 n0 = MAT_NORM * octDecodeNormal(a_normals.xy);\r\n vec3 n1 = MAT_NORM * octDecodeNormal(a_normals.zw);\r\n${checkForSilhouetteDiscard}\r\n`;\r\n\r\nconst checkForSilhouetteDiscardIndexed = `\r\n if (!g_isSilhouette)\r\n return false;\r\n\r\n vec3 n0 = MAT_NORM * octDecodeNormal(g_normals.xy);\r\n vec3 n1 = MAT_NORM * octDecodeNormal(g_normals.zw);\r\n${checkForSilhouetteDiscard}\r\n`;\r\n\r\nconst computePosition = `\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n vec4 other = g_otherPos;\r\n float miterAdjust = 0.0;\r\n float weight = computeLineWeight();\r\n\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, other, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0) // Clipped out.\r\n return g_windowPos;\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projOther = modelToWindowCoordinates(other, rawPos, otherPos, otherMvPos);\r\n\r\n g_windowDir = projOther.xy - g_windowPos.xy;\r\n\r\n adjustWidth(weight, g_windowDir, g_windowPos.xy);\r\n g_windowDir = normalize(g_windowDir);\r\n\r\n vec2 perp = vec2(-g_windowDir.y, g_windowDir.x);\r\n float perpDist = weight / 2.0;\r\n float alongDist = 0.0;\r\n\r\n perpDist *= sign(0.5 - float(g_quadIndex == 0.0 || g_quadIndex == 3.0)); // negate for index 0 and 3\r\n alongDist += distance(rawPos, other) * float(g_quadIndex >= 2.0); // index 2 and 3 correspond to 'far' endpoint of segment\r\n\r\n pos.x += perp.x * perpDist * 2.0 * pos.w / u_viewport.x;\r\n pos.y += perp.y * perpDist * 2.0 * pos.w / u_viewport.y;\r\n\r\n lineCodeEyePos = .5 * (rawPos + other);\r\n lineCodeDist = alongDist;\r\n\r\n return pos;\r\n`;\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, 0.0\";\r\n\r\nconst adjustContrast = `\r\n float bgi = u_bgIntensity;\r\n if (bgi < 0.0)\r\n return baseColor;\r\n\r\n float s;\r\n float rgbi = baseColor.r * 0.3 + baseColor.g * 0.59 + baseColor.b * 0.11;\r\n if (rgbi > 0.81)\r\n s = bgi > 0.57 ? 0.0 : 0.699;\r\n else if (rgbi > 0.57)\r\n s = bgi > 0.57 ? 0.0 : 1.0;\r\n else\r\n s = bgi < 0.81 ? 1.0 : 0.699;\r\n\r\n return vec4(vec3(s), baseColor.a);\r\n`;\r\n\r\n/** @internal */\r\nexport function addEdgeContrast(vert: VertexShaderBuilder): void {\r\n vert.addUniform(\"u_bgIntensity\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_bgIntensity\", (uniform, params) => {\r\n let bgi = -1;\r\n if (params.geometry.isEdge && params.target.currentEdgeSettings.wantContrastingColor(params.target.currentViewFlags.renderMode))\r\n bgi = params.target.uniforms.style.backgroundIntensity;\r\n\r\n uniform.setUniform1f(bgi);\r\n });\r\n });\r\n\r\n vert.set(VertexShaderComponent.AdjustContrast, adjustContrast);\r\n}\r\n\r\nconst edgeLutParams = new Float32Array(4);\r\n\r\nfunction createBase(type: EdgeBuilderType, instanced: IsInstanced, isAnimated: IsAnimated): ProgramBuilder {\r\n const isInstanced = IsInstanced.Yes === instanced;\r\n const isSilhouette = \"Silhouette\" === type;\r\n const isIndexed = \"IndexedEdge\" === type;\r\n const techId = isSilhouette ? TechniqueId.SilhouetteEdge : (isIndexed ? TechniqueId.IndexedEdge : TechniqueId.Edge);\r\n const attrMap = AttributeMap.findAttributeMap(techId, isInstanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, isInstanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n const vert = builder.vert;\r\n\r\n vert.addGlobal(\"g_otherPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_quadIndex\", VariableType.Float);\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addGlobal(\"g_otherIndex\", VariableType.Float);\r\n\r\n if (isIndexed) {\r\n vert.addGlobal(\"g_vertexId\", VariableType.Int);\r\n vert.addGlobal(\"g_otherIndexIndex\", VariableType.Vec3);\r\n vert.addGlobal(\"g_isSilhouette\", VariableType.Boolean, \"false\");\r\n vert.addGlobal(\"g_normals\", VariableType.Vec4);\r\n\r\n const initLut = addLookupTable(vert, \"edge\", \"1.0\");\r\n vert.addUniform(\"u_edgeLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_edgeLUT\", (uniform, params) => {\r\n const edge = params.geometry.asIndexedEdge;\r\n assert(undefined !== edge);\r\n edge.edgeLut.texture.bindSampler(uniform, TextureUnit.EdgeLUT);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_edgeParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_edgeParams\", (uniform, params) => {\r\n const edge = params.geometry.asIndexedEdge;\r\n assert(undefined !== edge);\r\n edgeLutParams[0] = edge.edgeLut.texture.width;\r\n edgeLutParams[1] = edge.edgeLut.texture.height;\r\n edgeLutParams[2] = edge.edgeLut.numSegments;\r\n edgeLutParams[3] = edge.edgeLut.silhouettePadding;\r\n uniform.setUniform4fv(edgeLutParams);\r\n });\r\n });\r\n\r\n vert.set(VertexShaderComponent.ComputeQuantizedPosition, `${initLut}\\n\\n${computeIndexedQuantizedPosition}`);\r\n vert.addInitializer(initializeIndexed);\r\n\r\n addRenderOrder(vert);\r\n addRenderOrderConstants(vert);\r\n builder.addInlineComputedVarying(\"v_renderOrder\", VariableType.Float, computeIndexedRenderOrder);\r\n builder.frag.set(FragmentShaderComponent.OverrideRenderOrder, \"return v_renderOrder;\");\r\n } else {\r\n vert.addInitializer(decodeEndPointAndQuadIndices);\r\n }\r\n\r\n if (isAnimated) {\r\n addAnimation(vert, false, IsThematic.No);\r\n vert.addInitializer(animateEndPoint);\r\n }\r\n\r\n vert.addGlobal(\"lineCodeEyePos\", VariableType.Vec4);\r\n vert.addGlobal(\"lineCodeDist\", VariableType.Float, \"0.0\");\r\n\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation, and sets g_eyeSpace\r\n addProjectionMatrix(vert);\r\n addLineCode(builder, lineCodeArgs);\r\n builder.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n builder.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n\r\n addViewport(vert);\r\n addModelViewMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n\r\n if (isSilhouette || isIndexed) {\r\n addNormalMatrix(vert, instanced);\r\n addFrustum(builder);\r\n vert.addFunction(octDecodeNormal);\r\n vert.set(VertexShaderComponent.CheckForEarlyDiscard, isSilhouette ? checkForSilhouetteDiscardNonIndexed : checkForSilhouetteDiscardIndexed);\r\n }\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createEdgeBuilder(type: EdgeBuilderType, instanced: IsInstanced, isAnimated: IsAnimated): ProgramBuilder {\r\n const builder = createBase(type, instanced, isAnimated);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAE9E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAchE;AAwOD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA4DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAU7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAwBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AA0DD,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAkBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAG/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CAwClG"}
1
+ {"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAE9E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAehE;AAwPD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA4DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAa7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAwBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AA4DD,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAoBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAG/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CA0ClG"}
@@ -6,7 +6,7 @@
6
6
  * @module WebGL
7
7
  */
8
8
  import { assert } from "@itwin/core-bentley";
9
- import { TextureUnit } from "../RenderFlags";
9
+ import { Pass, TextureUnit } from "../RenderFlags";
10
10
  import { System } from "../System";
11
11
  import { addExtractNthBit, addEyeSpace, addUInt32s } from "./Common";
12
12
  import { decodeDepthRgb, decodeUint24 } from "./Decode";
@@ -28,6 +28,7 @@ export function addOvrFlagConstants(builder) {
28
28
  // NB: We treat the 16-bit flags as 2 bytes - so subtract 8 from each of these bit indices.
29
29
  builder.addBitFlagConstant("kOvrBit_Hilited", 0);
30
30
  builder.addBitFlagConstant("kOvrBit_Emphasized", 1);
31
+ builder.addBitFlagConstant("kOvrBit_ViewIndependentTransparency", 2);
31
32
  }
32
33
  const computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;
33
34
  const computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;
@@ -119,14 +120,19 @@ const checkVertexDiscard = `
119
120
  if (feature_alpha > 0.0)
120
121
  hasAlpha = feature_alpha <= s_maxAlpha;
121
122
 
123
+ int discardFlags = u_transparencyDiscardFlags;
124
+ bool discardViewIndependentDuringOpaque = discardFlags >= 4;
125
+ if (discardViewIndependentDuringOpaque)
126
+ discardFlags = discardFlags - 4;
127
+
122
128
  bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);
123
- bool discardTranslucentDuringOpaquePass = 1 == u_transparencyDiscardFlags || 3 == u_transparencyDiscardFlags;
129
+ bool discardTranslucentDuringOpaquePass = 1 == discardFlags || 3 == discardFlags || (feature_viewIndependentTransparency && discardViewIndependentDuringOpaque);
124
130
  if (isOpaquePass && !discardTranslucentDuringOpaquePass)
125
131
  return false;
126
132
 
127
133
  bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;
128
- bool discardOpaqueDuringTranslucentPass = 2 == u_transparencyDiscardFlags || 3 == u_transparencyDiscardFlags;
129
- if (isTranslucentPass &&!discardOpaqueDuringTranslucentPass)
134
+ bool discardOpaqueDuringTranslucentPass = 2 == discardFlags || 3 == discardFlags;
135
+ if (isTranslucentPass && !discardOpaqueDuringTranslucentPass)
130
136
  return false;
131
137
 
132
138
  return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);
@@ -136,15 +142,24 @@ function addTransparencyDiscardFlags(vert) {
136
142
  // is used when applying transparency threshold. However, we need to ensure we don't DISCARD transparent stuff during
137
143
  // opaque pass if transparency is off (see checkVertexDiscard). Especially important for transparency threshold and readPixels().
138
144
  // Also, if we override raster text to be opaque we must still draw it in the translucent pass.
145
+ // Finally, if the transparency override is view-independent (i.e., ignores view flags and render mode) we want to discard it during opaque pass
146
+ // unless we're reading pixels.
147
+ // So we have a bit field:
139
148
  // 1: discard translucent during opaque.
140
149
  // 2: discard opaque during translucent.
141
- // 3: both
150
+ // 4: discard view-independent translucent during opaque.
142
151
  vert.addUniform("u_transparencyDiscardFlags", 1 /* Int */, (prog) => {
143
152
  prog.addGraphicUniform("u_transparencyDiscardFlags", (uniform, params) => {
144
- // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.
145
- let flags = params.target.currentViewFlags.transparency && !params.target.isReadPixelsInProgress ? 1 : 0;
146
- if (!params.geometry.alwaysRenderTranslucent)
147
- flags += 2;
153
+ let flags = 0;
154
+ // Textured surfaces may render in both passes. If so, it's up to fragment shader to handle discard.
155
+ const pass = params.geometry.getPass(params.target);
156
+ if (!Pass.rendersOpaqueAndTranslucent(pass)) {
157
+ // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.
158
+ if (!params.target.isReadPixelsInProgress)
159
+ flags = params.target.currentViewFlags.transparency ? 1 : 4;
160
+ if (!params.geometry.alwaysRenderTranslucent)
161
+ flags += 2;
162
+ }
148
163
  uniform.setUniform1i(flags);
149
164
  });
150
165
  });
@@ -158,7 +173,7 @@ function addCommon(builder, mode, opts, wantGlobalOvrFlags = true) {
158
173
  if (!haveOverrides) {
159
174
  // For pick output we must compute g_featureIndex...
160
175
  if (1 /* Pick */ === mode)
161
- vert.set(2 /* ComputeFeatureOverrides */, computeFeatureIndex(vert));
176
+ vert.set(3 /* ComputeFeatureOverrides */, computeFeatureIndex(vert));
162
177
  return true;
163
178
  }
164
179
  const wantWeight = 0 /* None */ !== (opts & 1 /* Weight */);
@@ -223,7 +238,7 @@ function addCommon(builder, mode, opts, wantGlobalOvrFlags = true) {
223
238
  addRenderPass(vert);
224
239
  addAlpha(vert);
225
240
  addTransparencyDiscardFlags(vert);
226
- vert.set(8 /* CheckForDiscard */, checkVertexDiscard);
241
+ vert.set(9 /* CheckForDiscard */, checkVertexDiscard);
227
242
  }
228
243
  }
229
244
  return true;
@@ -297,12 +312,12 @@ export function addHiliter(builder, wantWeight = false) {
297
312
  return;
298
313
  builder.addVarying("v_feature_hilited", 2 /* Float */);
299
314
  addEmphasisFlags(builder.vert);
300
- builder.vert.set(2 /* ComputeFeatureOverrides */, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);
301
- builder.vert.set(8 /* CheckForDiscard */, checkVertexHiliteDiscard);
315
+ builder.vert.set(3 /* ComputeFeatureOverrides */, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);
316
+ builder.vert.set(9 /* CheckForDiscard */, checkVertexHiliteDiscard);
302
317
  addEmphasisFlags(builder.frag);
303
318
  addExtractNthBit(builder.frag);
304
319
  builder.frag.set(1 /* ComputeBaseColor */, computeHiliteColor);
305
- builder.frag.set(15 /* AssignFragData */, assignFragColor);
320
+ builder.frag.set(16 /* AssignFragData */, assignFragColor);
306
321
  }
307
322
  function addSamplers(frag, testFeatureId) {
308
323
  if (testFeatureId) {
@@ -396,7 +411,10 @@ const checkForEarlySurfaceDiscardWithFeatureID = `
396
411
  export function addRenderOrderConstants(builder) {
397
412
  builder.addConstant("kRenderOrder_BlankingRegion", 2 /* Float */, 2 /* BlankingRegion */.toFixed(1));
398
413
  builder.addConstant("kRenderOrder_Linear", 2 /* Float */, 5 /* Linear */.toFixed(1));
414
+ builder.addConstant("kRenderOrder_Edge", 2 /* Float */, 6 /* Edge */.toFixed(1));
415
+ builder.addConstant("kRenderOrder_PlanarEdge", 2 /* Float */, 14 /* PlanarEdge */.toFixed(1));
399
416
  builder.addConstant("kRenderOrder_Silhouette", 2 /* Float */, 7 /* Silhouette */.toFixed(1));
417
+ builder.addConstant("kRenderOrder_PlanarSilhouette", 2 /* Float */, 15 /* PlanarSilhouette */.toFixed(1));
400
418
  builder.addConstant("kRenderOrder_UnlitSurface", 2 /* Float */, 3 /* UnlitSurface */.toFixed(1));
401
419
  builder.addConstant("kRenderOrder_LitSurface", 2 /* Float */, 4 /* LitSurface */.toFixed(1));
402
420
  builder.addConstant("kRenderOrder_PlanarUnlitSurface", 2 /* Float */, 11 /* PlanarUnlitSurface */.toFixed(1));
@@ -464,7 +482,7 @@ export function addSurfaceDiscard(builder, flags) {
464
482
  const computeIdInFrag = !flags.isTranslucent && 0 !== flags.isClassified && 2 /* Overrides */ === feat;
465
483
  const frag = builder.frag;
466
484
  const vert = builder.vert;
467
- vert.set(10 /* CheckForLateDiscard */, isBelowTransparencyThreshold);
485
+ vert.set(11 /* CheckForLateDiscard */, isBelowTransparencyThreshold);
468
486
  vert.addUniform("u_transparencyThreshold", 2 /* Float */, (prog) => {
469
487
  prog.addGraphicUniform("u_transparencyThreshold", (uniform, params) => {
470
488
  uniform.setUniform1f(params.target.currentTransparencyThreshold);
@@ -540,9 +558,11 @@ const computeFeatureOverrides = `
540
558
  if (rgbOverridden)
541
559
  feature_rgb = rgba.rgb;
542
560
 
543
- if (alphaOverridden)
561
+ if (alphaOverridden) {
544
562
  feature_alpha = rgba.a;
563
+ feature_viewIndependentTransparency = nthFeatureBitSet(emphFlags, kOvrBit_ViewIndependentTransparency);
545
564
  }
565
+ }
546
566
 
547
567
  linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),
548
568
  value.w * 256.0,
@@ -634,10 +654,11 @@ export function addFeatureSymbology(builder, feat, opts) {
634
654
  builder.addVarying("v_feature_emphasis", 2 /* Float */);
635
655
  const vert = builder.vert;
636
656
  vert.addGlobal("feature_invisible", 0 /* Boolean */, "false");
657
+ vert.addGlobal("feature_viewIndependentTransparency", 0 /* Boolean */, "false");
637
658
  addEmphasisFlags(vert);
638
659
  vert.addGlobal("use_material", 0 /* Boolean */, "true");
639
- vert.set(2 /* ComputeFeatureOverrides */, computeFeatureOverrides);
640
- vert.set(6 /* ApplyFeatureColor */, applyFeatureColor);
660
+ vert.set(3 /* ComputeFeatureOverrides */, computeFeatureOverrides);
661
+ vert.set(7 /* ApplyFeatureColor */, applyFeatureColor);
641
662
  addApplyFlash(builder.frag);
642
663
  }
643
664
  /** If we're running the hilite shader for a uniform feature, it follows that the feature must be hilited.
@@ -646,7 +667,7 @@ export function addFeatureSymbology(builder, feat, opts) {
646
667
  */
647
668
  export function addUniformHiliter(builder) {
648
669
  builder.frag.set(1 /* ComputeBaseColor */, `return vec4(1.0, 0.0, 0.0, 0.0);`);
649
- builder.frag.set(15 /* AssignFragData */, assignFragColor);
670
+ builder.frag.set(16 /* AssignFragData */, assignFragColor);
650
671
  }
651
672
  /** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.
652
673
  * The following symbology overrides are supported:
@@ -675,15 +696,15 @@ export function addUniformFeatureSymbology(builder, addFeatureColor) {
675
696
  params.target.uniforms.batch.bindUniformTransparencyOverride(uniform);
676
697
  });
677
698
  });
678
- builder.vert.set(6 /* ApplyFeatureColor */, applyFeatureColor);
699
+ builder.vert.set(7 /* ApplyFeatureColor */, applyFeatureColor);
679
700
  addAlpha(builder.vert);
680
701
  addMaxAlpha(builder.vert);
681
702
  addRenderPass(builder.vert);
682
703
  addTransparencyDiscardFlags(builder.vert);
683
- builder.vert.set(8 /* CheckForDiscard */, checkVertexDiscard);
704
+ builder.vert.set(9 /* CheckForDiscard */, checkVertexDiscard);
684
705
  }
685
706
  else {
686
- builder.vert.set(8 /* CheckForDiscard */, "return feature_invisible;");
707
+ builder.vert.set(9 /* CheckForDiscard */, "return feature_invisible;");
687
708
  }
688
709
  // Non-Locatable... Discard if picking
689
710
  builder.vert.addUniform("feature_invisible", 0 /* Boolean */, (prog) => {
@@ -691,6 +712,7 @@ export function addUniformFeatureSymbology(builder, addFeatureColor) {
691
712
  params.target.uniforms.batch.bindUniformNonLocatable(uniform, params.target.drawNonLocatable);
692
713
  });
693
714
  });
715
+ builder.vert.addGlobal("feature_viewIndependentTransparency", 0 /* Boolean */, "false");
694
716
  addApplyFlash(builder.frag);
695
717
  }
696
718
  //# sourceMappingURL=FeatureSymbology.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { OvrFlags, RenderOrder, TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariablePrecision, VariableType, VertexShaderBuilder,\r\n VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { FeatureMode, TechniqueFlags } from \"../TechniqueFlags\";\r\nimport { addExtractNthBit, addEyeSpace, addUInt32s } from \"./Common\";\r\nimport { decodeDepthRgb, decodeUint24 } from \"./Decode\";\r\nimport { addWindowToTexCoords, assignFragColor, computeLinearDepth } from \"./Fragment\";\r\nimport { addLookupTable } from \"./LookupTable\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addAlpha, addFeatureAndMaterialLookup, addLineWeight, replaceLineCode, replaceLineWeight } from \"./Vertex\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FeatureSymbologyOptions {\r\n None = 0,\r\n Weight = 1 << 0,\r\n LineCode = 1 << 1,\r\n HasOverrides = 1 << 2,\r\n Color = 1 << 3,\r\n Alpha = 1 << 4,\r\n\r\n Surface = HasOverrides | Color | Alpha,\r\n Point = HasOverrides | Color | Weight | Alpha,\r\n Linear = HasOverrides | Color | Weight | LineCode | Alpha,\r\n}\r\n\r\n/** @internal */\r\nexport function addOvrFlagConstants(builder: ShaderBuilder): void {\r\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\r\n builder.addBitFlagConstant(\"kOvrBit_Visibility\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Rgb\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_Alpha\", 2);\r\n builder.addBitFlagConstant(\"kOvrBit_IgnoreMaterial\", 3);\r\n builder.addBitFlagConstant(\"kOvrBit_Flashed\", 4);\r\n builder.addBitFlagConstant(\"kOvrBit_NonLocatable\", 5);\r\n builder.addBitFlagConstant(\"kOvrBit_LineCode\", 6);\r\n builder.addBitFlagConstant(\"kOvrBit_Weight\", 7);\r\n\r\n // NB: We treat the 16-bit flags as 2 bytes - so subtract 8 from each of these bit indices.\r\n builder.addBitFlagConstant(\"kOvrBit_Hilited\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Emphasized\", 1);\r\n}\r\n\r\nconst computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;\r\nconst computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;\r\nfunction computeFeatureIndex(vertex: VertexShaderBuilder): string {\r\n if (vertex.usesInstancedGeometry) {\r\n vertex.addUniform(\"u_patternFeatureId\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_patternFeatureId\", (uniform, params) => {\r\n const id = params.geometry.asInstanced?.patternFeatureId;\r\n assert(undefined !== id);\r\n if (id)\r\n uniform.setUniform3fv(id);\r\n });\r\n });\r\n\r\n return `g_featureIndex = ${computeInstanceFeatureIndex};`;\r\n }\r\n\r\n return vertex.usesVertexTable ? `g_featureIndex = ${computeLUTFeatureIndex};` : \"\";\r\n}\r\nfunction getFeatureIndex(vertex: VertexShaderBuilder): string {\r\n return `\r\nfloat getFeatureIndex() {\r\n ${computeFeatureIndex(vertex)}\r\n return decodeUInt24(g_featureIndex);\r\n}\r\n`;\r\n}\r\n\r\n// Returns true if the specified flag is not globally overridden and is set in flags\r\nconst nthFeatureBitSet = `\r\nbool nthFeatureBitSet(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n);\r\n}\r\n`;\r\nconst nthFeatureBitSet2 = `\r\nbool nthFeatureBitSet(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n);\r\n}\r\n`;\r\n\r\n// Returns 1.0 if the specified flag is not globally overridden and is set in flags\r\nconst extractNthFeatureBit = `\r\nfloat extractNthFeatureBit(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\nconst extractNthFeatureBit2 = `\r\nfloat extractNthFeatureBit(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\n\r\nconst computeFeatureTextureCoords = `\r\nvec2 computeFeatureTextureCoords() { return compute_feature_coords(getFeatureIndex()); }\r\n`;\r\n\r\nconst getFirstFeatureRgba = `\r\nvec4 getFirstFeatureRgba() {\r\n feature_texCoord = computeFeatureTextureCoords();\r\n return TEXTURE(u_featureLUT, feature_texCoord);\r\n}\r\n`;\r\n\r\nconst getSecondFeatureRgba = `\r\nvec4 getSecondFeatureRgba() {\r\n vec2 coord = feature_texCoord;\r\n coord.x += g_feature_stepX;\r\n return TEXTURE(u_featureLUT, coord);\r\n}\r\n`;\r\n\r\nconst computeLineWeight = `\r\nfloat computeLineWeight() {\r\n return linear_feature_overrides.x > 0.5 ? linear_feature_overrides.y : g_lineWeight;\r\n}\r\n`;\r\n\r\nconst computeLineCode = `\r\nfloat computeLineCode() {\r\n return linear_feature_overrides.z > 0.5 ? linear_feature_overrides.w : g_lineCode;\r\n}\r\n`;\r\n\r\nfunction addFeatureIndex(vert: VertexShaderBuilder): void {\r\n vert.addGlobal(\"g_featureIndex\", VariableType.Vec3);\r\n\r\n vert.addFunction(decodeUint24);\r\n vert.addFunction(getFeatureIndex(vert));\r\n\r\n if (vert.usesVertexTable && !vert.usesInstancedGeometry)\r\n addFeatureAndMaterialLookup(vert);\r\n}\r\n\r\n// Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa\r\n// (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)\r\nconst checkVertexDiscard = `\r\n if (feature_invisible)\r\n return true;\r\n\r\n bool hasAlpha = 1.0 == u_hasAlpha;\r\n if (feature_alpha > 0.0)\r\n hasAlpha = feature_alpha <= s_maxAlpha;\r\n\r\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\r\n bool discardTranslucentDuringOpaquePass = 1 == u_transparencyDiscardFlags || 3 == u_transparencyDiscardFlags;\r\n if (isOpaquePass && !discardTranslucentDuringOpaquePass)\r\n return false;\r\n\r\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\r\n bool discardOpaqueDuringTranslucentPass = 2 == u_transparencyDiscardFlags || 3 == u_transparencyDiscardFlags;\r\n if (isTranslucentPass &&!discardOpaqueDuringTranslucentPass)\r\n return false;\r\n\r\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\r\n`;\r\n\r\nfunction addTransparencyDiscardFlags(vert: VertexShaderBuilder) {\r\n // Even when transparency view flag is off, we need to allow features to override transparency, because it\r\n // is used when applying transparency threshold. However, we need to ensure we don't DISCARD transparent stuff during\r\n // opaque pass if transparency is off (see checkVertexDiscard). Especially important for transparency threshold and readPixels().\r\n // Also, if we override raster text to be opaque we must still draw it in the translucent pass.\r\n // 1: discard translucent during opaque.\r\n // 2: discard opaque during translucent.\r\n // 3: both\r\n vert.addUniform(\"u_transparencyDiscardFlags\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyDiscardFlags\", (uniform, params) => {\r\n // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.\r\n let flags = params.target.currentViewFlags.transparency && !params.target.isReadPixelsInProgress ? 1 : 0;\r\n if (!params.geometry.alwaysRenderTranslucent)\r\n flags += 2;\r\n\r\n uniform.setUniform1i(flags);\r\n });\r\n });\r\n}\r\n\r\nfunction addCommon(builder: ProgramBuilder, mode: FeatureMode, opts: FeatureSymbologyOptions, wantGlobalOvrFlags = true): boolean {\r\n if (FeatureMode.None === mode)\r\n return false;\r\n\r\n const vert = builder.vert;\r\n addFeatureIndex(vert);\r\n\r\n const haveOverrides = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.HasOverrides);\r\n if (!haveOverrides) {\r\n // For pick output we must compute g_featureIndex...\r\n if (FeatureMode.Pick === mode)\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureIndex(vert));\r\n\r\n return true;\r\n }\r\n\r\n const wantWeight = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Weight);\r\n const wantLineCode = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.LineCode);\r\n const wantColor = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Color);\r\n const wantAlpha = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Alpha);\r\n assert(wantColor || !wantAlpha);\r\n\r\n addExtractNthBit(vert);\r\n addOvrFlagConstants(vert);\r\n\r\n vert.addGlobal(\"linear_feature_overrides\", VariableType.Vec4, \"vec4(0.0)\");\r\n vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\r\n\r\n if (wantWeight || wantLineCode) {\r\n if (wantLineCode)\r\n replaceLineCode(vert, computeLineCode);\r\n\r\n if (wantWeight) {\r\n replaceLineWeight(vert, computeLineWeight);\r\n }\r\n }\r\n\r\n if (wantGlobalOvrFlags) {\r\n let bitmapType;\r\n if (System.instance.capabilities.isWebGL2) {\r\n vert.addFunction(nthFeatureBitSet2);\r\n vert.addFunction(extractNthFeatureBit2);\r\n bitmapType = VariableType.Uint;\r\n } else {\r\n vert.addFunction(nthFeatureBitSet);\r\n vert.addFunction(extractNthFeatureBit);\r\n bitmapType = VariableType.Float;\r\n }\r\n vert.addUniform(\"u_globalOvrFlags\", bitmapType, (prog) => {\r\n prog.addGraphicUniform(\"u_globalOvrFlags\", (uniform, params) => {\r\n let flags = 0.0;\r\n if (params.geometry.isEdge) {\r\n const settings = params.target.currentEdgeSettings;\r\n flags = settings.computeOvrFlags(params.renderPass, params.target.currentViewFlags);\r\n }\r\n\r\n if (!params.geometry.allowColorOverride)\r\n flags |= OvrFlags.Rgba;\r\n\r\n uniform.setUniformBitflags(flags);\r\n });\r\n });\r\n }\r\n\r\n addLookupTable(vert, \"feature\", \"2.0\");\r\n vert.addGlobal(\"feature_texCoord\", VariableType.Vec2);\r\n vert.addFunction(computeFeatureTextureCoords);\r\n vert.addFunction(getFirstFeatureRgba);\r\n\r\n vert.addUniform(\"u_featureLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_featureLUT\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUT(uniform);\r\n });\r\n });\r\n vert.addUniform(\"u_featureParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_featureParams\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUTParams(uniform);\r\n });\r\n });\r\n\r\n if (wantColor) {\r\n vert.addFunction(getSecondFeatureRgba);\r\n if (wantAlpha) {\r\n addMaxAlpha(vert);\r\n addRenderPass(vert);\r\n addAlpha(vert);\r\n addTransparencyDiscardFlags(vert);\r\n\r\n vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function addMaxAlpha(builder: ShaderBuilder): void {\r\n const minTransparency = 15.0; // NB: See DisplayParams.getMinTransparency() - this must match!\r\n const maxAlpha = (255 - minTransparency) / 255;\r\n builder.addConstant(\"s_maxAlpha\", VariableType.Float, maxAlpha.toString());\r\n}\r\n\r\n/** @internal */\r\nfunction addEmphasisFlags(builder: ShaderBuilder): void {\r\n builder.addBitFlagConstant(\"kEmphBit_Hilite\", 0);\r\n builder.addBitFlagConstant(\"kEmphBit_Emphasize\", 1);\r\n builder.addBitFlagConstant(\"kEmphBit_Flash\", 2);\r\n builder.addBitFlagConstant(\"kEmphBit_NonLocatable\", 3);\r\n builder.addConstant(\"kEmphFlag_Hilite\", VariableType.Float, \"1.0\");\r\n builder.addConstant(\"kEmphFlag_Emphasize\", VariableType.Float, \"2.0\");\r\n builder.addConstant(\"kEmphFlag_Flash\", VariableType.Float, \"4.0\");\r\n builder.addConstant(\"kEmphFlag_NonLocatable\", VariableType.Float, \"8.0\");\r\n}\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder, wantFlashMode: boolean): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindFeatureSettings(uniform);\r\n });\r\n });\r\n\r\n if (wantFlashMode) {\r\n frag.addUniform(\"u_flash_mode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_flash_mode\", (uniform, params) => {\r\n uniform.setUniform1f(params.geometry.getFlashMode(params));\r\n });\r\n });\r\n }\r\n}\r\n\r\n// If feature is not hilited, discard it.\r\nconst checkVertexHiliteDiscard = \"return 0.0 == v_feature_hilited;\";\r\n\r\n// The result is a mask in which each pixel's r=1 if hilited and g=1 if emphasized (and not hilited).\r\nconst computeHiliteColor = `\r\n float flags = floor(v_feature_hilited + 0.5);\r\n float hilited = extractNthBit(flags, kEmphBit_Hilite);\r\n float emphasized = extractNthBit(flags, kEmphBit_Emphasize);\r\n return vec4(hilited, emphasized, 0.0, 0.0);\r\n`;\r\n\r\nconst computeSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeHiliteColor}`;\r\n\r\nconst computeHiliteOverrides = `\r\n vec4 value = getFirstFeatureRgba();\r\n float emphFlags = value.g * 256.0;\r\n v_feature_hilited = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n`;\r\n\r\nconst computeHiliteOverridesWithWeight = `${computeHiliteOverrides}\r\n float flags = value.r * 256.0;\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.a * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.b * 256.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n addHiliter(builder, wantWeight);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeSurfaceHiliteColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n let opts = FeatureSymbologyOptions.HasOverrides;\r\n if (wantWeight)\r\n opts |= FeatureSymbologyOptions.Weight; // hiliter never needs line code or color...\r\n\r\n if (!addCommon(builder, FeatureMode.Overrides, opts, wantWeight))\r\n return;\r\n\r\n builder.addVarying(\"v_feature_hilited\", VariableType.Float);\r\n\r\n addEmphasisFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.ComputeFeatureOverrides, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexHiliteDiscard);\r\n\r\n addEmphasisFlags(builder.frag);\r\n addExtractNthBit(builder.frag);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteColor);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\nfunction addSamplers(frag: FragmentShaderBuilder, testFeatureId: boolean) {\r\n if (testFeatureId) {\r\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickFeatureId\", (uniform, params) => {\r\n params.target.compositor.featureIds.bindSampler(uniform, TextureUnit.PickFeatureId);\r\n });\r\n }, VariablePrecision.High);\r\n }\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n params.target.compositor.depthAndOrder.bindSampler(uniform, TextureUnit.PickDepthAndOrder);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\n/** @internal */\r\nexport const readDepthAndOrder = `\r\nvec2 readDepthAndOrder(vec2 tc) {\r\n vec4 pdo = TEXTURE(u_pickDepthAndOrder, tc);\r\n float order = floor(pdo.x * 16.0 + 0.5);\r\n return vec2(order, decodeDepthRgb(pdo.yzw));\r\n}\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscard = `\r\n float factor = float(u_renderPass <= kRenderPass_Translucent); // never discard during specific passes\r\n float term = 0.0;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n term += float(depthAndOrder.x > u_renderOrder && abs(depthAndOrder.y - surfaceDepth) < 4.0e-5);\r\n return factor * term > 0.0;\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscardWithFeatureID = `\r\n // No normals => unlt => reality model => no edges.\r\n if (u_renderPass > kRenderPass_Translucent || u_renderPass == kRenderPass_Layers || !u_surfaceFlags[kSurfaceBitIndex_HasNormals])\r\n return false;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n if (depthAndOrder.x <= u_renderOrder)\r\n return false;\r\n\r\n // Calculate depthTolerance for letting edges show through their own surfaces\r\n float perspectiveFrustum = step(kFrustumType_Perspective, u_frustum.z);\r\n vec4 eyeDirAndWidthFactor = mix(vec4(0.0, 0.0, 1.0, u_pixelWidthFactor), vec4(normalize(-v_eyeSpace.xyz), -v_eyeSpace.z * u_pixelWidthFactor), perspectiveFrustum);\r\n vec3 eyeDir = eyeDirAndWidthFactor.xyz;\r\n float dtWidthFactor = eyeDirAndWidthFactor.w;\r\n\r\n // Compute depth tolerance based on angle of triangle to screen\r\n float isSilhouette = float(depthAndOrder.x == kRenderOrder_Silhouette);\r\n float dSq = dot(eyeDir, v_n);\r\n dSq *= 0.5 + 0.4 * (1.0 - isSilhouette);\r\n dSq = dSq * dSq;\r\n dSq = max(dSq, 0.0001);\r\n dSq = min(dSq, 0.999);\r\n\r\n float depthTolerance = dtWidthFactor * v_lineWeight * sqrt((1.0 - dSq) / dSq);\r\n depthTolerance *= 1.0 + .333 * isSilhouette;\r\n\r\n // Make sure stuff behind camera doesn't get pushed in front of it\r\n depthTolerance = max(depthTolerance, 0.0);\r\n\r\n // Convert depthTolerance from eye space to linear depth\r\n depthTolerance /= (u_frustum.y - u_frustum.x);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n float depthDelta = abs(depthAndOrder.y - surfaceDepth);\r\n if (depthDelta > depthTolerance)\r\n return false;\r\n\r\n // Does pick buffer contain same feature?\r\n vec4 featId = TEXTURE(u_pickFeatureId, tc);\r\n\r\n // Converting to ints to test since varying floats can be interpolated incorrectly\r\n ivec4 featId_i = ivec4(featId * 255.0 + 0.5);\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n if (featId_i == feature_id_i)\r\n return true;\r\n\r\n // In 2d, display priority controls draw order of different elements.\r\n if (!u_checkInterElementDiscard)\r\n return false;\r\n\r\n // Use a tighter tolerance for two different elements since we're only fighting roundoff error.\r\n return depthDelta <= 4.0e-5;\r\n`;\r\n\r\n// This only adds the constants that are actually used in shader code.\r\nexport function addRenderOrderConstants(builder: ShaderBuilder) {\r\n builder.addConstant(\"kRenderOrder_BlankingRegion\", VariableType.Float, RenderOrder.BlankingRegion.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Linear\", VariableType.Float, RenderOrder.Linear.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Silhouette\", VariableType.Float, RenderOrder.Silhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_UnlitSurface\", VariableType.Float, RenderOrder.UnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_LitSurface\", VariableType.Float, RenderOrder.LitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarUnlitSurface\", VariableType.Float, RenderOrder.PlanarUnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarLitSurface\", VariableType.Float, RenderOrder.PlanarLitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarBit\", VariableType.Float, RenderOrder.PlanarBit.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Background\", VariableType.Float, RenderOrder.Background.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addRenderOrder(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderOrder\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_renderOrder\", (uniform, params) => {\r\n const order = params.target.drawingBackgroundForReadPixels ? RenderOrder.Background : params.geometry.renderOrder;\r\n uniform.setUniform1f(order);\r\n });\r\n });\r\n}\r\n\r\nfunction addPixelWidthFactor(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_pixelWidthFactor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_pixelWidthFactor\", (uniform, params) => {\r\n params.target.uniforms.bindPixelWidthFactor(uniform);\r\n });\r\n });\r\n}\r\n\r\nfunction addBatchId(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_batch_id\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_batch_id\", (uniform, params) => {\r\n params.target.uniforms.batch.bindBatchId(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\nconst computeIdVert = `v_feature_id = addUInt32s(u_batch_id, vec4(g_featureIndex, 0.0)) / 255.0;`;\r\nconst computeIdFrag = `\r\n vec4 featureIndex = vec4(floor(v_feature_index + 0.5), 0.0);\r\n feature_id = addUInt32s(u_batch_id, featureIndex) / 255.0;\r\n`;\r\n\r\n/** @internal */\r\nexport function addFeatureId(builder: ProgramBuilder, computeInFrag: boolean) {\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n frag.addGlobal(\"feature_id\", VariableType.Vec4);\r\n if (!computeInFrag) {\r\n vert.addFunction(addUInt32s);\r\n addBatchId(vert);\r\n builder.addInlineComputedVarying(\"v_feature_id\", VariableType.Vec4, computeIdVert);\r\n\r\n frag.addInitializer(\"feature_id = v_feature_id;\");\r\n } else {\r\n frag.addFunction(addUInt32s);\r\n builder.addInlineComputedVarying(\"v_feature_index\", VariableType.Vec3, \"v_feature_index = g_featureIndex;\");\r\n\r\n addBatchId(frag);\r\n frag.addInitializer(computeIdFrag);\r\n }\r\n}\r\n\r\n// Discard vertex if transparency is less than the display style's transparency threshold, IFF the specific bit is set. The bit is set if:\r\n// - Solid Fill or Hidden Line mode; or\r\n// - Shaded mode and generating shadow map (sufficiently transparent surfaces receive but do not cast shadows).\r\nconst isBelowTransparencyThreshold = `\r\n return v_color.a < u_transparencyThreshold && u_surfaceFlags[kSurfaceBitIndex_TransparencyThreshold];\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceDiscard(builder: ProgramBuilder, flags: TechniqueFlags) {\r\n const feat = flags.featureMode;\r\n const isEdgeTestNeeded = flags.isEdgeTestNeeded;\r\n const isClassified = flags.isClassified;\r\n const computeIdInFrag = !flags.isTranslucent && 0 !== flags.isClassified && FeatureMode.Overrides === feat;\r\n\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n vert.set(VertexShaderComponent.CheckForLateDiscard, isBelowTransparencyThreshold);\r\n vert.addUniform(\"u_transparencyThreshold\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyThreshold\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.currentTransparencyThreshold);\r\n });\r\n });\r\n\r\n if (isEdgeTestNeeded) {\r\n addWindowToTexCoords(frag);\r\n\r\n if (!flags.isHilite)\r\n addEyeSpace(builder);\r\n\r\n if (FeatureMode.None === feat) {\r\n addSamplers(frag, false);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscard);\r\n } else {\r\n frag.addUniform(\"u_checkInterElementDiscard\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_checkInterElementDiscard\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.uniforms.branch.top.is3d ? 1 : 0);\r\n });\r\n });\r\n\r\n addFeatureIndex(vert);\r\n addLineWeight(vert);\r\n\r\n addSamplers(frag, true);\r\n addRenderOrderConstants(frag);\r\n addPixelWidthFactor(frag);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscardWithFeatureID);\r\n\r\n builder.addInlineComputedVarying(\"v_lineWeight\", VariableType.Float, \"v_lineWeight = computeLineWeight();\");\r\n addFeatureId(builder, computeIdInFrag);\r\n }\r\n\r\n addRenderOrder(frag);\r\n addRenderPass(frag);\r\n } else if (isClassified && FeatureMode.None !== feat) {\r\n addFeatureIndex(vert);\r\n addFeatureId(builder, computeIdInFrag);\r\n\r\n if (!flags.isTranslucent)\r\n addRenderOrder(frag);\r\n }\r\n}\r\n\r\n// bool feature_invisible = false;\r\n// vec3 feature_rgb; // if not overridden, .r < 0; else rgb color override\r\n// float feature_alpha // alpha if overridden, else < 0\r\n// varying float v_feature_emphasis // bitmask - see kEmph_* constants\r\n// vec4 linear_feature_overrides; // x: weight overridden y: weight z: line code overridden w: line code\r\nconst computeFeatureOverrides = `\r\n feature_rgb = vec3(-1.0);\r\n feature_alpha = -1.0;\r\n vec4 value = getFirstFeatureRgba();\r\n\r\n float emphFlags = value.y * 256.0;\r\n v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n\r\n float flags = value.x * 256.0;\r\n if (0.0 == flags)\r\n return; // nothing overridden for this feature\r\n\r\n bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);\r\n v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));\r\n bool invisible = nthFeatureBitSet(flags, kOvrBit_Visibility);\r\n feature_invisible = invisible || nonLocatable;\r\n if (feature_invisible)\r\n return;\r\n\r\n bool rgbOverridden = nthFeatureBitSet(flags, kOvrBit_Rgb);\r\n bool alphaOverridden = nthFeatureBitSet(flags, kOvrBit_Alpha);\r\n if (alphaOverridden || rgbOverridden) {\r\n vec4 rgba = getSecondFeatureRgba();\r\n if (rgbOverridden)\r\n feature_rgb = rgba.rgb;\r\n\r\n if (alphaOverridden)\r\n feature_alpha = rgba.a;\r\n }\r\n\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.w * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.z * 256.0);\r\n\r\n feature_ignore_material = nthFeatureBitSet(flags, kOvrBit_IgnoreMaterial);\r\n use_material = use_material && !feature_ignore_material;\r\n\r\n v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nconst applyFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, feature_rgb.rgb, step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature, else mix based on u_overrrideColorMix.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nexport const mixFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, mix(baseColor.rgb, feature_rgb.rgb, u_overrideColorMix), step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n `;\r\n\r\nconst applyFlash = `\r\n float flashHilite = floor(v_feature_emphasis + 0.5);\r\n return doApplyFlash(flashHilite, baseColor);\r\n`;\r\n\r\nconst doApplyFlash = `\r\nvec4 doApplyFlash(float flags, vec4 baseColor) {\r\n bool isFlashed = nthBitSet(flags, kEmphBit_Flash);\r\n bool isHilited = nthBitSet(flags, kEmphBit_Hilite);\r\n bool isEmphasized = !isHilited && nthBitSet(flags, kEmphBit_Emphasize);\r\n vec3 hiliteRgb = isEmphasized ? u_hilite_settings[1] : u_hilite_settings[0];\r\n\r\n isHilited = isEmphasized || isHilited;\r\n float hiliteRatio = isHilited ? (isEmphasized ? u_hilite_settings[2][1] : u_hilite_settings[2][0]) : 0.0;\r\n baseColor.rgb = mix(baseColor.rgb, hiliteRgb, hiliteRatio);\r\n\r\n const float maxBrighten = 0.2;\r\n float brighten = isFlashed ? u_flash_intensity * maxBrighten : 0.0;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n\r\n const float maxTween = 0.75;\r\n float hiliteFraction = isFlashed ? u_flash_intensity * maxTween : 0.0;\r\n vec3 tweenRgb = baseColor.rgb * (1.0 - hiliteFraction);\r\n tweenRgb += u_hilite_settings[0] * hiliteFraction;\r\n\r\n return vec4(mix(tweenRgb, brightRgb, u_flash_mode), baseColor.a);\r\n}\r\n`;\r\n\r\nconst doClassifierFlash = `\r\nvec4 applyClassifierFlash(vec4 baseColor) {\r\n const float maxBrighten = 0.2;\r\n float brighten = u_flash_intensity * maxBrighten;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n return vec4(brightRgb, baseColor.a);\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addClassifierFlash(frag: FragmentShaderBuilder): void {\r\n addFlashIntensity(frag);\r\n addHiliteSettings(frag, false);\r\n frag.addFunction(doClassifierFlash);\r\n}\r\n\r\nfunction addFlashIntensity(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_flash_intensity\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_flash_intensity\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.flashIntensity);\r\n });\r\n });\r\n}\r\n\r\nfunction addApplyFlash(frag: FragmentShaderBuilder) {\r\n addHiliteSettings(frag, true);\r\n addEmphasisFlags(frag);\r\n\r\n addExtractNthBit(frag);\r\n frag.addFunction(doApplyFlash);\r\n frag.set(FragmentShaderComponent.ApplyFlash, applyFlash);\r\n addFlashIntensity(frag);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeatureSymbology(builder: ProgramBuilder, feat: FeatureMode, opts: FeatureSymbologyOptions): void {\r\n if (!addCommon(builder, feat, opts) || FeatureSymbologyOptions.None === opts)\r\n return;\r\n\r\n assert((FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color) === (opts & (FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color)));\r\n\r\n builder.addGlobal(\"feature_rgb\", VariableType.Vec3);\r\n builder.addGlobal(\"feature_alpha\", VariableType.Float);\r\n builder.addVarying(\"v_feature_emphasis\", VariableType.Float);\r\n\r\n const vert = builder.vert;\r\n vert.addGlobal(\"feature_invisible\", VariableType.Boolean, \"false\");\r\n addEmphasisFlags(vert);\r\n vert.addGlobal(\"use_material\", VariableType.Boolean, \"true\");\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureOverrides);\r\n vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n\r\n/** If we're running the hilite shader for a uniform feature, it follows that the feature must be hilited.\r\n * So the hilite shader simply needs to output '1' for every fragment.\r\n * @internal\r\n */\r\nexport function addUniformHiliter(builder: ProgramBuilder): void {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, `return vec4(1.0, 0.0, 0.0, 0.0);`);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\n/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.\r\n * The following symbology overrides are supported:\r\n * - Visibility - implcitly, because if the feature is invisible its geometry will never be drawn.\r\n * - Flash\r\n * - Hilite\r\n * - Color and Transparency- only for point clouds currently which set addFeatureColor to true.\r\n * This shader could be simplified, but want to share code with the non-uniform versions...hence uniforms/globals with \"v_\" prefix typically used for varyings on no prefix...\r\n * @internal\r\n */\r\nexport function addUniformFeatureSymbology(builder: ProgramBuilder, addFeatureColor: boolean): void {\r\n builder.vert.addGlobal(\"g_featureIndex\", VariableType.Vec3, \"vec3(0.0)\", true);\r\n\r\n builder.frag.addUniform(\"v_feature_emphasis\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"v_feature_emphasis\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformSymbologyFlags(uniform);\r\n });\r\n });\r\n\r\n if (addFeatureColor) {\r\n builder.vert.addUniform(\"feature_rgb\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"feature_rgb\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformColorOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"feature_alpha\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"feature_alpha\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformTransparencyOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n addAlpha(builder.vert);\r\n addMaxAlpha(builder.vert);\r\n addRenderPass(builder.vert);\r\n addTransparencyDiscardFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n } else {\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, \"return feature_invisible;\");\r\n }\r\n\r\n // Non-Locatable... Discard if picking\r\n builder.vert.addUniform(\"feature_invisible\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"feature_invisible\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformNonLocatable(uniform, params.target.drawNonLocatable);\r\n });\r\n });\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAY,IAAI,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK1E,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAkBpH,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,sFAAsF;IACtF,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEhD,2FAA2F;IAC3F,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,kBAAkB,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AAC/D,MAAM,2BAA2B,GAAG,oDAAoD,CAAC;AACzF,SAAS,mBAAmB,CAAC,MAA2B;IACtD,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAChC,MAAM,CAAC,UAAU,CAAC,oBAAoB,gBAAqB,CAAC,IAAI,EAAE,EAAE;YAClE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;gBAC/D,MAAM,EAAE,GAAG,MAAA,MAAM,CAAC,QAAQ,CAAC,WAAW,0CAAE,gBAAgB,CAAC;gBACzD,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;gBACzB,IAAI,EAAE;oBACJ,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,oBAAoB,2BAA2B,GAAG,CAAC;KAC3D;IAED,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,sBAAsB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AACD,SAAS,eAAe,CAAC,MAA2B;IAClD,OAAO;;IAEL,mBAAmB,CAAC,MAAM,CAAC;;;CAG9B,CAAC;AACF,CAAC;AAED,oFAAoF;AACpF,MAAM,gBAAgB,GAAG;;;;CAIxB,CAAC;AACF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,mFAAmF;AACnF,MAAM,oBAAoB,GAAG;;;;CAI5B,CAAC;AACF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,2BAA2B,GAAG;;CAEnC,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;;CAK3B,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;CAM5B,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;CAIvB,CAAC;AAEF,SAAS,eAAe,CAAC,IAAyB;IAChD,IAAI,CAAC,SAAS,CAAC,gBAAgB,eAAoB,CAAC;IAEpD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB;QACrD,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,qGAAqG;AACrG,8FAA8F;AAC9F,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB1B,CAAC;AAEF,SAAS,2BAA2B,CAAC,IAAyB;IAC5D,0GAA0G;IAC1G,qHAAqH;IACrH,iIAAiI;IACjI,+FAA+F;IAC/F,gJAAgJ;IAChJ,+BAA+B;IAC/B,0BAA0B;IAC1B,wCAAwC;IACxC,wCAAwC;IACxC,yDAAyD;IACzD,IAAI,CAAC,UAAU,CAAC,4BAA4B,eAAoB,CAAC,IAAI,EAAE,EAAE;QACvE,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,oGAAoG;YACpG,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE;gBAC3C,qGAAqG;gBACrG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB;oBACvC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB;oBAC1C,KAAK,IAAI,CAAC,CAAC;aACd;YAED,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,OAAuB,EAAE,IAAiB,EAAE,IAA6B,EAAE,kBAAkB,GAAG,IAAI;IACrH,IAAI,iBAAqB,IAAI;QAC3B,OAAO,KAAK,CAAC;IAEf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAG,iBAAiC,CAAC,IAAI,uBAAuC,CAAC,CAAC;IACrG,IAAI,CAAC,aAAa,EAAE;QAClB,oDAAoD;QACpD,IAAI,iBAAqB,IAAI;YAC3B,IAAI,CAAC,GAAG,kCAAgD,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAErF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,UAAU,GAAG,iBAAiC,CAAC,IAAI,iBAAiC,CAAC,CAAC;IAC5F,MAAM,YAAY,GAAG,iBAAiC,CAAC,IAAI,mBAAmC,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,iBAAiC,CAAC,IAAI,gBAAgC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,iBAAiC,CAAC,IAAI,iBAAgC,CAAC,CAAC;IAC1F,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC;IAEhC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,CAAC,SAAS,CAAC,0BAA0B,gBAAqB,WAAW,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,CAAC,yBAAyB,mBAAwB,OAAO,CAAC,CAAC;IAEzE,IAAI,UAAU,IAAI,YAAY,EAAE;QAC9B,IAAI,YAAY;YACd,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAEzC,IAAI,UAAU,EAAE;YACd,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;SAC5C;KACF;IAED,IAAI,kBAAkB,EAAE;QACtB,IAAI,UAAU,CAAC;QACf,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;YACzC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACxC,UAAU,gBAAoB,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACvC,UAAU,gBAAqB,CAAC;SACjC;QACD,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7D,IAAI,KAAK,GAAG,GAAG,CAAC;gBAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;oBACnD,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;iBACrF;gBAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB;oBACrC,KAAK,gBAAiB,CAAC;gBAEzB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAoB,CAAC;IACtD,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEtC,IAAI,CAAC,UAAU,CAAC,cAAc,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,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,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACvC,IAAI,SAAS,EAAE;YACb,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,GAAG,0BAAwC,kBAAkB,CAAC,CAAC;SACrE;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAsB;IAChD,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,gEAAgE;IAC9F,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC;IAC/C,OAAO,CAAC,WAAW,CAAC,YAAY,iBAAsB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,gBAAgB;AAChB,SAAS,gBAAgB,CAAC,OAAsB;IAC9C,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,WAAW,CAAC,kBAAkB,iBAAsB,KAAK,CAAC,CAAC;IACnE,OAAO,CAAC,WAAW,CAAC,qBAAqB,iBAAsB,KAAK,CAAC,CAAC;IACtE,OAAO,CAAC,WAAW,CAAC,iBAAiB,iBAAsB,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,WAAW,CAAC,wBAAwB,iBAAsB,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA2B,EAAE,aAAsB;IAC5E,IAAI,CAAC,UAAU,CAAC,mBAAmB,gBAAqB,CAAC,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,EAAE;QACjB,IAAI,CAAC,UAAU,CAAC,cAAc,iBAAsB,CAAC,IAAI,EAAE,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,wBAAwB,GAAG,kCAAkC,CAAC;AAEpE,qGAAqG;AACrG,MAAM,kBAAkB,GAAG;;;;;CAK1B,CAAC;AAEF,MAAM,yBAAyB,GAAG;;;EAGhC,kBAAkB,EAAE,CAAC;AAEvB,MAAM,sBAAsB,GAAG;;;;CAI9B,CAAC;AAEF,MAAM,gCAAgC,GAAG,GAAG,sBAAsB;;;;;;CAMjE,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,iBAAiB,CAAC,OAAuB,EAAE,aAAsB,KAAK;IACpF,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,GAAG,2BAA2C,yBAAyB,CAAC,CAAC;AACxF,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,OAAuB,EAAE,aAAsB,KAAK;IAC7E,IAAI,IAAI,uBAAuC,CAAC;IAChD,IAAI,UAAU;QACZ,IAAI,kBAAkC,CAAC,CAAC,4CAA4C;IAEtF,IAAI,CAAC,SAAS,CAAC,OAAO,qBAAyB,IAAI,EAAE,UAAU,CAAC;QAC9D,OAAO;IAET,OAAO,CAAC,UAAU,CAAC,mBAAmB,gBAAqB,CAAC;IAE5D,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,kCAAgD,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACxI,OAAO,CAAC,IAAI,CAAC,GAAG,0BAAwC,wBAAwB,CAAC,CAAC;IAElF,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,2BAA2C,kBAAkB,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,IAA2B,EAAE,aAAsB;IACtE,IAAI,aAAa,EAAE;QACjB,IAAI,CAAC,UAAU,CAAC,iBAAiB,qBAA0B,CAAC,IAAI,EAAE,EAAE;YAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACL,CAAC,eAAyB,CAAC;KAC5B;IAED,IAAI,CAAC,UAAU,CAAC,qBAAqB,qBAA0B,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;AAC7B,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;CAMhC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;;CAUnC,CAAC;AAEF,MAAM,wCAAwC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDhD,CAAC;AAEF,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,OAAO,CAAC,WAAW,CAAC,6BAA6B,iBAAsB,uBAA2B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,WAAW,CAAC,qBAAqB,iBAAsB,eAAmB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,WAAW,CAAC,mBAAmB,iBAAsB,aAAiB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,WAAW,CAAC,yBAAyB,iBAAsB,oBAAuB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,yBAAyB,iBAAsB,mBAAuB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,+BAA+B,iBAAsB,0BAA6B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,OAAO,CAAC,WAAW,CAAC,2BAA2B,iBAAsB,qBAAyB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,WAAW,CAAC,yBAAyB,iBAAsB,mBAAuB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,iCAAiC,iBAAsB,4BAA+B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH,OAAO,CAAC,WAAW,CAAC,+BAA+B,iBAAsB,0BAA6B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,OAAO,CAAC,WAAW,CAAC,wBAAwB,iBAAsB,kBAAsB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,WAAW,CAAC,yBAAyB,iBAAsB,mBAAuB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,OAAO,CAAC,UAAU,CAAC,eAAe,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,oBAAwB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClH,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAsB;IACjD,OAAO,CAAC,UAAU,CAAC,oBAAoB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QACpE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAsB;IACxC,OAAO,CAAC,UAAU,CAAC,YAAY,gBAAqB,CAAC,IAAI,EAAE,EAAE;QAC3D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,eAAyB,CAAC;AAC7B,CAAC;AAED,MAAM,aAAa,GAAG,2EAA2E,CAAC;AAClG,MAAM,aAAa,GAAG;;;CAGrB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAAC,OAAuB,EAAE,aAAsB;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,SAAS,CAAC,YAAY,eAAoB,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE;QAClB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,CAAC,wBAAwB,CAAC,cAAc,gBAAqB,aAAa,CAAC,CAAC;QAEnF,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;KACnD;SAAM;QACL,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7B,OAAO,CAAC,wBAAwB,CAAC,iBAAiB,gBAAqB,mCAAmC,CAAC,CAAC;QAE5G,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KACpC;AACH,CAAC;AAED,0IAA0I;AAC1I,wCAAwC;AACxC,gHAAgH;AAChH,MAAM,4BAA4B,GAAG;;CAEpC,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,iBAAiB,CAAC,OAAuB,EAAE,KAAqB;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;IAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,KAAK,CAAC,YAAY,IAAI,sBAA0B,IAAI,CAAC;IAE3G,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,+BAA4C,4BAA4B,CAAC,CAAC;IAClF,IAAI,CAAC,UAAU,CAAC,yBAAyB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,gBAAgB,EAAE;QACpB,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,KAAK,CAAC,QAAQ;YACjB,WAAW,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,iBAAqB,IAAI,EAAE;YAC7B,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,+BAA+C,2BAA2B,CAAC,CAAC;SACrF;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,4BAA4B,mBAAwB,CAAC,IAAI,EAAE,EAAE;gBAC3E,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACvE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,CAAC;YAEpB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC9B,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAEpC,IAAI,CAAC,GAAG,+BAA+C,wCAAwC,CAAC,CAAC;YAEjG,OAAO,CAAC,wBAAwB,CAAC,cAAc,iBAAsB,qCAAqC,CAAC,CAAC;YAC5G,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;SACxC;QAED,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,aAAa,CAAC,IAAI,CAAC,CAAC;KACrB;SAAM,IAAI,YAAY,IAAI,iBAAqB,IAAI,EAAE;QACpD,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK,CAAC,aAAa;YACtB,cAAc,CAAC,IAAI,CAAC,CAAC;KACxB;AACH,CAAC;AAED,kCAAkC;AAClC,0EAA0E;AAC1E,uDAAuD;AACvD,sEAAsE;AACtE,wGAAwG;AACxG,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC/B,CAAC;AAEF,gEAAgE;AAChE,4DAA4D;AAC5D,MAAM,iBAAiB,GAAG;;;;CAIzB,CAAC;AAEF,uGAAuG;AACvG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG;;;;GAI5B,CAAC;AAEJ,MAAM,UAAU,GAAG;;;CAGlB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBpB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;CAOzB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAAC,IAA2B;IAC5D,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA2B;IACpD,IAAI,CAAC,UAAU,CAAC,mBAAmB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QAChE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAA2B;IAChD,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,sBAAqC,UAAU,CAAC,CAAC;IACzD,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CAAC,OAAuB,EAAE,IAAiB,EAAE,IAA6B;IAC3G,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,iBAAiC,IAAI;QAC1E,OAAO;IAET,MAAM,CAAC,CAAC,oCAAoE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,oCAAoE,CAAC,CAAC,CAAC,CAAC;IAEnK,OAAO,CAAC,SAAS,CAAC,aAAa,eAAoB,CAAC;IACpD,OAAO,CAAC,SAAS,CAAC,eAAe,gBAAqB,CAAC;IACvD,OAAO,CAAC,UAAU,CAAC,oBAAoB,gBAAqB,CAAC;IAE7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,SAAS,CAAC,mBAAmB,mBAAwB,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,qCAAqC,mBAAwB,OAAO,CAAC,CAAC;IAErF,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,cAAc,mBAAwB,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,kCAAgD,uBAAuB,CAAC,CAAC;IACjF,IAAI,CAAC,GAAG,4BAA0C,iBAAiB,CAAC,CAAC;IAErE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACvD,OAAO,CAAC,IAAI,CAAC,GAAG,2BAA2C,kCAAkC,CAAC,CAAC;IAC/F,OAAO,CAAC,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAuB,EAAE,eAAwB;IAC1F,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,gBAAqB,WAAW,EAAE,IAAI,CAAC,CAAC;IAE/E,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,iBAAsB,CAAC,IAAI,EAAE,EAAE;QACzE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE;QACnB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,gBAAqB,CAAC,IAAI,EAAE,EAAE;YACjE,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,iBAAsB,CAAC,IAAI,EAAE,EAAE;YACpE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,GAAG,4BAA0C,iBAAiB,CAAC,CAAC;QAC7E,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,0BAAwC,kBAAkB,CAAC,CAAC;KAC7E;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,GAAG,0BAAwC,2BAA2B,CAAC,CAAC;KACtF;IAED,uCAAuC;IACvC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,mBAAwB,CAAC,IAAI,EAAE,EAAE;QAC1E,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,qCAAqC,mBAAwB,OAAO,CAAC,CAAC;IAE7F,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,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 { assert } from \"@itwin/core-bentley\";\r\nimport { OvrFlags, Pass, RenderOrder, TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariablePrecision, VariableType, VertexShaderBuilder,\r\n VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { FeatureMode, TechniqueFlags } from \"../TechniqueFlags\";\r\nimport { addExtractNthBit, addEyeSpace, addUInt32s } from \"./Common\";\r\nimport { decodeDepthRgb, decodeUint24 } from \"./Decode\";\r\nimport { addWindowToTexCoords, assignFragColor, computeLinearDepth } from \"./Fragment\";\r\nimport { addLookupTable } from \"./LookupTable\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addAlpha, addFeatureAndMaterialLookup, addLineWeight, replaceLineCode, replaceLineWeight } from \"./Vertex\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FeatureSymbologyOptions {\r\n None = 0,\r\n Weight = 1 << 0,\r\n LineCode = 1 << 1,\r\n HasOverrides = 1 << 2,\r\n Color = 1 << 3,\r\n Alpha = 1 << 4,\r\n\r\n Surface = HasOverrides | Color | Alpha,\r\n Point = HasOverrides | Color | Weight | Alpha,\r\n Linear = HasOverrides | Color | Weight | LineCode | Alpha,\r\n}\r\n\r\n/** @internal */\r\nexport function addOvrFlagConstants(builder: ShaderBuilder): void {\r\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\r\n builder.addBitFlagConstant(\"kOvrBit_Visibility\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Rgb\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_Alpha\", 2);\r\n builder.addBitFlagConstant(\"kOvrBit_IgnoreMaterial\", 3);\r\n builder.addBitFlagConstant(\"kOvrBit_Flashed\", 4);\r\n builder.addBitFlagConstant(\"kOvrBit_NonLocatable\", 5);\r\n builder.addBitFlagConstant(\"kOvrBit_LineCode\", 6);\r\n builder.addBitFlagConstant(\"kOvrBit_Weight\", 7);\r\n\r\n // NB: We treat the 16-bit flags as 2 bytes - so subtract 8 from each of these bit indices.\r\n builder.addBitFlagConstant(\"kOvrBit_Hilited\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Emphasized\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_ViewIndependentTransparency\", 2);\r\n}\r\n\r\nconst computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;\r\nconst computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;\r\nfunction computeFeatureIndex(vertex: VertexShaderBuilder): string {\r\n if (vertex.usesInstancedGeometry) {\r\n vertex.addUniform(\"u_patternFeatureId\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_patternFeatureId\", (uniform, params) => {\r\n const id = params.geometry.asInstanced?.patternFeatureId;\r\n assert(undefined !== id);\r\n if (id)\r\n uniform.setUniform3fv(id);\r\n });\r\n });\r\n\r\n return `g_featureIndex = ${computeInstanceFeatureIndex};`;\r\n }\r\n\r\n return vertex.usesVertexTable ? `g_featureIndex = ${computeLUTFeatureIndex};` : \"\";\r\n}\r\nfunction getFeatureIndex(vertex: VertexShaderBuilder): string {\r\n return `\r\nfloat getFeatureIndex() {\r\n ${computeFeatureIndex(vertex)}\r\n return decodeUInt24(g_featureIndex);\r\n}\r\n`;\r\n}\r\n\r\n// Returns true if the specified flag is not globally overridden and is set in flags\r\nconst nthFeatureBitSet = `\r\nbool nthFeatureBitSet(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n);\r\n}\r\n`;\r\nconst nthFeatureBitSet2 = `\r\nbool nthFeatureBitSet(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n);\r\n}\r\n`;\r\n\r\n// Returns 1.0 if the specified flag is not globally overridden and is set in flags\r\nconst extractNthFeatureBit = `\r\nfloat extractNthFeatureBit(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\nconst extractNthFeatureBit2 = `\r\nfloat extractNthFeatureBit(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\n\r\nconst computeFeatureTextureCoords = `\r\nvec2 computeFeatureTextureCoords() { return compute_feature_coords(getFeatureIndex()); }\r\n`;\r\n\r\nconst getFirstFeatureRgba = `\r\nvec4 getFirstFeatureRgba() {\r\n feature_texCoord = computeFeatureTextureCoords();\r\n return TEXTURE(u_featureLUT, feature_texCoord);\r\n}\r\n`;\r\n\r\nconst getSecondFeatureRgba = `\r\nvec4 getSecondFeatureRgba() {\r\n vec2 coord = feature_texCoord;\r\n coord.x += g_feature_stepX;\r\n return TEXTURE(u_featureLUT, coord);\r\n}\r\n`;\r\n\r\nconst computeLineWeight = `\r\nfloat computeLineWeight() {\r\n return linear_feature_overrides.x > 0.5 ? linear_feature_overrides.y : g_lineWeight;\r\n}\r\n`;\r\n\r\nconst computeLineCode = `\r\nfloat computeLineCode() {\r\n return linear_feature_overrides.z > 0.5 ? linear_feature_overrides.w : g_lineCode;\r\n}\r\n`;\r\n\r\nfunction addFeatureIndex(vert: VertexShaderBuilder): void {\r\n vert.addGlobal(\"g_featureIndex\", VariableType.Vec3);\r\n\r\n vert.addFunction(decodeUint24);\r\n vert.addFunction(getFeatureIndex(vert));\r\n\r\n if (vert.usesVertexTable && !vert.usesInstancedGeometry)\r\n addFeatureAndMaterialLookup(vert);\r\n}\r\n\r\n// Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa\r\n// (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)\r\nconst checkVertexDiscard = `\r\n if (feature_invisible)\r\n return true;\r\n\r\n bool hasAlpha = 1.0 == u_hasAlpha;\r\n if (feature_alpha > 0.0)\r\n hasAlpha = feature_alpha <= s_maxAlpha;\r\n\r\n int discardFlags = u_transparencyDiscardFlags;\r\n bool discardViewIndependentDuringOpaque = discardFlags >= 4;\r\n if (discardViewIndependentDuringOpaque)\r\n discardFlags = discardFlags - 4;\r\n\r\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\r\n bool discardTranslucentDuringOpaquePass = 1 == discardFlags || 3 == discardFlags || (feature_viewIndependentTransparency && discardViewIndependentDuringOpaque);\r\n if (isOpaquePass && !discardTranslucentDuringOpaquePass)\r\n return false;\r\n\r\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\r\n bool discardOpaqueDuringTranslucentPass = 2 == discardFlags || 3 == discardFlags;\r\n if (isTranslucentPass && !discardOpaqueDuringTranslucentPass)\r\n return false;\r\n\r\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\r\n`;\r\n\r\nfunction addTransparencyDiscardFlags(vert: VertexShaderBuilder) {\r\n // Even when transparency view flag is off, we need to allow features to override transparency, because it\r\n // is used when applying transparency threshold. However, we need to ensure we don't DISCARD transparent stuff during\r\n // opaque pass if transparency is off (see checkVertexDiscard). Especially important for transparency threshold and readPixels().\r\n // Also, if we override raster text to be opaque we must still draw it in the translucent pass.\r\n // Finally, if the transparency override is view-independent (i.e., ignores view flags and render mode) we want to discard it during opaque pass\r\n // unless we're reading pixels.\r\n // So we have a bit field:\r\n // 1: discard translucent during opaque.\r\n // 2: discard opaque during translucent.\r\n // 4: discard view-independent translucent during opaque.\r\n vert.addUniform(\"u_transparencyDiscardFlags\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyDiscardFlags\", (uniform, params) => {\r\n let flags = 0;\r\n\r\n // Textured surfaces may render in both passes. If so, it's up to fragment shader to handle discard.\r\n const pass = params.geometry.getPass(params.target);\r\n if (!Pass.rendersOpaqueAndTranslucent(pass)) {\r\n // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.\r\n if (!params.target.isReadPixelsInProgress)\r\n flags = params.target.currentViewFlags.transparency ? 1 : 4;\r\n\r\n if (!params.geometry.alwaysRenderTranslucent)\r\n flags += 2;\r\n }\r\n\r\n uniform.setUniform1i(flags);\r\n });\r\n });\r\n}\r\n\r\nfunction addCommon(builder: ProgramBuilder, mode: FeatureMode, opts: FeatureSymbologyOptions, wantGlobalOvrFlags = true): boolean {\r\n if (FeatureMode.None === mode)\r\n return false;\r\n\r\n const vert = builder.vert;\r\n addFeatureIndex(vert);\r\n\r\n const haveOverrides = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.HasOverrides);\r\n if (!haveOverrides) {\r\n // For pick output we must compute g_featureIndex...\r\n if (FeatureMode.Pick === mode)\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureIndex(vert));\r\n\r\n return true;\r\n }\r\n\r\n const wantWeight = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Weight);\r\n const wantLineCode = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.LineCode);\r\n const wantColor = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Color);\r\n const wantAlpha = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Alpha);\r\n assert(wantColor || !wantAlpha);\r\n\r\n addExtractNthBit(vert);\r\n addOvrFlagConstants(vert);\r\n\r\n vert.addGlobal(\"linear_feature_overrides\", VariableType.Vec4, \"vec4(0.0)\");\r\n vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\r\n\r\n if (wantWeight || wantLineCode) {\r\n if (wantLineCode)\r\n replaceLineCode(vert, computeLineCode);\r\n\r\n if (wantWeight) {\r\n replaceLineWeight(vert, computeLineWeight);\r\n }\r\n }\r\n\r\n if (wantGlobalOvrFlags) {\r\n let bitmapType;\r\n if (System.instance.capabilities.isWebGL2) {\r\n vert.addFunction(nthFeatureBitSet2);\r\n vert.addFunction(extractNthFeatureBit2);\r\n bitmapType = VariableType.Uint;\r\n } else {\r\n vert.addFunction(nthFeatureBitSet);\r\n vert.addFunction(extractNthFeatureBit);\r\n bitmapType = VariableType.Float;\r\n }\r\n vert.addUniform(\"u_globalOvrFlags\", bitmapType, (prog) => {\r\n prog.addGraphicUniform(\"u_globalOvrFlags\", (uniform, params) => {\r\n let flags = 0.0;\r\n if (params.geometry.isEdge) {\r\n const settings = params.target.currentEdgeSettings;\r\n flags = settings.computeOvrFlags(params.renderPass, params.target.currentViewFlags);\r\n }\r\n\r\n if (!params.geometry.allowColorOverride)\r\n flags |= OvrFlags.Rgba;\r\n\r\n uniform.setUniformBitflags(flags);\r\n });\r\n });\r\n }\r\n\r\n addLookupTable(vert, \"feature\", \"2.0\");\r\n vert.addGlobal(\"feature_texCoord\", VariableType.Vec2);\r\n vert.addFunction(computeFeatureTextureCoords);\r\n vert.addFunction(getFirstFeatureRgba);\r\n\r\n vert.addUniform(\"u_featureLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_featureLUT\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUT(uniform);\r\n });\r\n });\r\n vert.addUniform(\"u_featureParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_featureParams\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUTParams(uniform);\r\n });\r\n });\r\n\r\n if (wantColor) {\r\n vert.addFunction(getSecondFeatureRgba);\r\n if (wantAlpha) {\r\n addMaxAlpha(vert);\r\n addRenderPass(vert);\r\n addAlpha(vert);\r\n addTransparencyDiscardFlags(vert);\r\n\r\n vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function addMaxAlpha(builder: ShaderBuilder): void {\r\n const minTransparency = 15.0; // NB: See DisplayParams.getMinTransparency() - this must match!\r\n const maxAlpha = (255 - minTransparency) / 255;\r\n builder.addConstant(\"s_maxAlpha\", VariableType.Float, maxAlpha.toString());\r\n}\r\n\r\n/** @internal */\r\nfunction addEmphasisFlags(builder: ShaderBuilder): void {\r\n builder.addBitFlagConstant(\"kEmphBit_Hilite\", 0);\r\n builder.addBitFlagConstant(\"kEmphBit_Emphasize\", 1);\r\n builder.addBitFlagConstant(\"kEmphBit_Flash\", 2);\r\n builder.addBitFlagConstant(\"kEmphBit_NonLocatable\", 3);\r\n builder.addConstant(\"kEmphFlag_Hilite\", VariableType.Float, \"1.0\");\r\n builder.addConstant(\"kEmphFlag_Emphasize\", VariableType.Float, \"2.0\");\r\n builder.addConstant(\"kEmphFlag_Flash\", VariableType.Float, \"4.0\");\r\n builder.addConstant(\"kEmphFlag_NonLocatable\", VariableType.Float, \"8.0\");\r\n}\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder, wantFlashMode: boolean): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindFeatureSettings(uniform);\r\n });\r\n });\r\n\r\n if (wantFlashMode) {\r\n frag.addUniform(\"u_flash_mode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_flash_mode\", (uniform, params) => {\r\n uniform.setUniform1f(params.geometry.getFlashMode(params));\r\n });\r\n });\r\n }\r\n}\r\n\r\n// If feature is not hilited, discard it.\r\nconst checkVertexHiliteDiscard = \"return 0.0 == v_feature_hilited;\";\r\n\r\n// The result is a mask in which each pixel's r=1 if hilited and g=1 if emphasized (and not hilited).\r\nconst computeHiliteColor = `\r\n float flags = floor(v_feature_hilited + 0.5);\r\n float hilited = extractNthBit(flags, kEmphBit_Hilite);\r\n float emphasized = extractNthBit(flags, kEmphBit_Emphasize);\r\n return vec4(hilited, emphasized, 0.0, 0.0);\r\n`;\r\n\r\nconst computeSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeHiliteColor}`;\r\n\r\nconst computeHiliteOverrides = `\r\n vec4 value = getFirstFeatureRgba();\r\n float emphFlags = value.g * 256.0;\r\n v_feature_hilited = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n`;\r\n\r\nconst computeHiliteOverridesWithWeight = `${computeHiliteOverrides}\r\n float flags = value.r * 256.0;\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.a * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.b * 256.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n addHiliter(builder, wantWeight);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeSurfaceHiliteColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n let opts = FeatureSymbologyOptions.HasOverrides;\r\n if (wantWeight)\r\n opts |= FeatureSymbologyOptions.Weight; // hiliter never needs line code or color...\r\n\r\n if (!addCommon(builder, FeatureMode.Overrides, opts, wantWeight))\r\n return;\r\n\r\n builder.addVarying(\"v_feature_hilited\", VariableType.Float);\r\n\r\n addEmphasisFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.ComputeFeatureOverrides, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexHiliteDiscard);\r\n\r\n addEmphasisFlags(builder.frag);\r\n addExtractNthBit(builder.frag);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteColor);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\nfunction addSamplers(frag: FragmentShaderBuilder, testFeatureId: boolean) {\r\n if (testFeatureId) {\r\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickFeatureId\", (uniform, params) => {\r\n params.target.compositor.featureIds.bindSampler(uniform, TextureUnit.PickFeatureId);\r\n });\r\n }, VariablePrecision.High);\r\n }\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n params.target.compositor.depthAndOrder.bindSampler(uniform, TextureUnit.PickDepthAndOrder);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\n/** @internal */\r\nexport const readDepthAndOrder = `\r\nvec2 readDepthAndOrder(vec2 tc) {\r\n vec4 pdo = TEXTURE(u_pickDepthAndOrder, tc);\r\n float order = floor(pdo.x * 16.0 + 0.5);\r\n return vec2(order, decodeDepthRgb(pdo.yzw));\r\n}\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscard = `\r\n float factor = float(u_renderPass <= kRenderPass_Translucent); // never discard during specific passes\r\n float term = 0.0;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n term += float(depthAndOrder.x > u_renderOrder && abs(depthAndOrder.y - surfaceDepth) < 4.0e-5);\r\n return factor * term > 0.0;\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscardWithFeatureID = `\r\n // No normals => unlt => reality model => no edges.\r\n if (u_renderPass > kRenderPass_Translucent || u_renderPass == kRenderPass_Layers || !u_surfaceFlags[kSurfaceBitIndex_HasNormals])\r\n return false;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n if (depthAndOrder.x <= u_renderOrder)\r\n return false;\r\n\r\n // Calculate depthTolerance for letting edges show through their own surfaces\r\n float perspectiveFrustum = step(kFrustumType_Perspective, u_frustum.z);\r\n vec4 eyeDirAndWidthFactor = mix(vec4(0.0, 0.0, 1.0, u_pixelWidthFactor), vec4(normalize(-v_eyeSpace.xyz), -v_eyeSpace.z * u_pixelWidthFactor), perspectiveFrustum);\r\n vec3 eyeDir = eyeDirAndWidthFactor.xyz;\r\n float dtWidthFactor = eyeDirAndWidthFactor.w;\r\n\r\n // Compute depth tolerance based on angle of triangle to screen\r\n float isSilhouette = float(depthAndOrder.x == kRenderOrder_Silhouette);\r\n float dSq = dot(eyeDir, v_n);\r\n dSq *= 0.5 + 0.4 * (1.0 - isSilhouette);\r\n dSq = dSq * dSq;\r\n dSq = max(dSq, 0.0001);\r\n dSq = min(dSq, 0.999);\r\n\r\n float depthTolerance = dtWidthFactor * v_lineWeight * sqrt((1.0 - dSq) / dSq);\r\n depthTolerance *= 1.0 + .333 * isSilhouette;\r\n\r\n // Make sure stuff behind camera doesn't get pushed in front of it\r\n depthTolerance = max(depthTolerance, 0.0);\r\n\r\n // Convert depthTolerance from eye space to linear depth\r\n depthTolerance /= (u_frustum.y - u_frustum.x);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n float depthDelta = abs(depthAndOrder.y - surfaceDepth);\r\n if (depthDelta > depthTolerance)\r\n return false;\r\n\r\n // Does pick buffer contain same feature?\r\n vec4 featId = TEXTURE(u_pickFeatureId, tc);\r\n\r\n // Converting to ints to test since varying floats can be interpolated incorrectly\r\n ivec4 featId_i = ivec4(featId * 255.0 + 0.5);\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n if (featId_i == feature_id_i)\r\n return true;\r\n\r\n // In 2d, display priority controls draw order of different elements.\r\n if (!u_checkInterElementDiscard)\r\n return false;\r\n\r\n // Use a tighter tolerance for two different elements since we're only fighting roundoff error.\r\n return depthDelta <= 4.0e-5;\r\n`;\r\n\r\n// This only adds the constants that are actually used in shader code.\r\nexport function addRenderOrderConstants(builder: ShaderBuilder) {\r\n builder.addConstant(\"kRenderOrder_BlankingRegion\", VariableType.Float, RenderOrder.BlankingRegion.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Linear\", VariableType.Float, RenderOrder.Linear.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Edge\", VariableType.Float, RenderOrder.Edge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarEdge\", VariableType.Float, RenderOrder.PlanarEdge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Silhouette\", VariableType.Float, RenderOrder.Silhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarSilhouette\", VariableType.Float, RenderOrder.PlanarSilhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_UnlitSurface\", VariableType.Float, RenderOrder.UnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_LitSurface\", VariableType.Float, RenderOrder.LitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarUnlitSurface\", VariableType.Float, RenderOrder.PlanarUnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarLitSurface\", VariableType.Float, RenderOrder.PlanarLitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarBit\", VariableType.Float, RenderOrder.PlanarBit.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Background\", VariableType.Float, RenderOrder.Background.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addRenderOrder(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderOrder\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_renderOrder\", (uniform, params) => {\r\n const order = params.target.drawingBackgroundForReadPixels ? RenderOrder.Background : params.geometry.renderOrder;\r\n uniform.setUniform1f(order);\r\n });\r\n });\r\n}\r\n\r\nfunction addPixelWidthFactor(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_pixelWidthFactor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_pixelWidthFactor\", (uniform, params) => {\r\n params.target.uniforms.bindPixelWidthFactor(uniform);\r\n });\r\n });\r\n}\r\n\r\nfunction addBatchId(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_batch_id\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_batch_id\", (uniform, params) => {\r\n params.target.uniforms.batch.bindBatchId(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\nconst computeIdVert = `v_feature_id = addUInt32s(u_batch_id, vec4(g_featureIndex, 0.0)) / 255.0;`;\r\nconst computeIdFrag = `\r\n vec4 featureIndex = vec4(floor(v_feature_index + 0.5), 0.0);\r\n feature_id = addUInt32s(u_batch_id, featureIndex) / 255.0;\r\n`;\r\n\r\n/** @internal */\r\nexport function addFeatureId(builder: ProgramBuilder, computeInFrag: boolean) {\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n frag.addGlobal(\"feature_id\", VariableType.Vec4);\r\n if (!computeInFrag) {\r\n vert.addFunction(addUInt32s);\r\n addBatchId(vert);\r\n builder.addInlineComputedVarying(\"v_feature_id\", VariableType.Vec4, computeIdVert);\r\n\r\n frag.addInitializer(\"feature_id = v_feature_id;\");\r\n } else {\r\n frag.addFunction(addUInt32s);\r\n builder.addInlineComputedVarying(\"v_feature_index\", VariableType.Vec3, \"v_feature_index = g_featureIndex;\");\r\n\r\n addBatchId(frag);\r\n frag.addInitializer(computeIdFrag);\r\n }\r\n}\r\n\r\n// Discard vertex if transparency is less than the display style's transparency threshold, IFF the specific bit is set. The bit is set if:\r\n// - Solid Fill or Hidden Line mode; or\r\n// - Shaded mode and generating shadow map (sufficiently transparent surfaces receive but do not cast shadows).\r\nconst isBelowTransparencyThreshold = `\r\n return v_color.a < u_transparencyThreshold && u_surfaceFlags[kSurfaceBitIndex_TransparencyThreshold];\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceDiscard(builder: ProgramBuilder, flags: TechniqueFlags) {\r\n const feat = flags.featureMode;\r\n const isEdgeTestNeeded = flags.isEdgeTestNeeded;\r\n const isClassified = flags.isClassified;\r\n const computeIdInFrag = !flags.isTranslucent && 0 !== flags.isClassified && FeatureMode.Overrides === feat;\r\n\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n vert.set(VertexShaderComponent.CheckForLateDiscard, isBelowTransparencyThreshold);\r\n vert.addUniform(\"u_transparencyThreshold\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyThreshold\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.currentTransparencyThreshold);\r\n });\r\n });\r\n\r\n if (isEdgeTestNeeded) {\r\n addWindowToTexCoords(frag);\r\n\r\n if (!flags.isHilite)\r\n addEyeSpace(builder);\r\n\r\n if (FeatureMode.None === feat) {\r\n addSamplers(frag, false);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscard);\r\n } else {\r\n frag.addUniform(\"u_checkInterElementDiscard\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_checkInterElementDiscard\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.uniforms.branch.top.is3d ? 1 : 0);\r\n });\r\n });\r\n\r\n addFeatureIndex(vert);\r\n addLineWeight(vert);\r\n\r\n addSamplers(frag, true);\r\n addRenderOrderConstants(frag);\r\n addPixelWidthFactor(frag);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscardWithFeatureID);\r\n\r\n builder.addInlineComputedVarying(\"v_lineWeight\", VariableType.Float, \"v_lineWeight = computeLineWeight();\");\r\n addFeatureId(builder, computeIdInFrag);\r\n }\r\n\r\n addRenderOrder(frag);\r\n addRenderPass(frag);\r\n } else if (isClassified && FeatureMode.None !== feat) {\r\n addFeatureIndex(vert);\r\n addFeatureId(builder, computeIdInFrag);\r\n\r\n if (!flags.isTranslucent)\r\n addRenderOrder(frag);\r\n }\r\n}\r\n\r\n// bool feature_invisible = false;\r\n// vec3 feature_rgb; // if not overridden, .r < 0; else rgb color override\r\n// float feature_alpha // alpha if overridden, else < 0\r\n// varying float v_feature_emphasis // bitmask - see kEmph_* constants\r\n// vec4 linear_feature_overrides; // x: weight overridden y: weight z: line code overridden w: line code\r\nconst computeFeatureOverrides = `\r\n feature_rgb = vec3(-1.0);\r\n feature_alpha = -1.0;\r\n vec4 value = getFirstFeatureRgba();\r\n\r\n float emphFlags = value.y * 256.0;\r\n v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n\r\n float flags = value.x * 256.0;\r\n if (0.0 == flags)\r\n return; // nothing overridden for this feature\r\n\r\n bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);\r\n v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));\r\n bool invisible = nthFeatureBitSet(flags, kOvrBit_Visibility);\r\n feature_invisible = invisible || nonLocatable;\r\n if (feature_invisible)\r\n return;\r\n\r\n bool rgbOverridden = nthFeatureBitSet(flags, kOvrBit_Rgb);\r\n bool alphaOverridden = nthFeatureBitSet(flags, kOvrBit_Alpha);\r\n if (alphaOverridden || rgbOverridden) {\r\n vec4 rgba = getSecondFeatureRgba();\r\n if (rgbOverridden)\r\n feature_rgb = rgba.rgb;\r\n\r\n if (alphaOverridden) {\r\n feature_alpha = rgba.a;\r\n feature_viewIndependentTransparency = nthFeatureBitSet(emphFlags, kOvrBit_ViewIndependentTransparency);\r\n }\r\n }\r\n\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.w * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.z * 256.0);\r\n\r\n feature_ignore_material = nthFeatureBitSet(flags, kOvrBit_IgnoreMaterial);\r\n use_material = use_material && !feature_ignore_material;\r\n\r\n v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nconst applyFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, feature_rgb.rgb, step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature, else mix based on u_overrrideColorMix.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nexport const mixFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, mix(baseColor.rgb, feature_rgb.rgb, u_overrideColorMix), step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n `;\r\n\r\nconst applyFlash = `\r\n float flashHilite = floor(v_feature_emphasis + 0.5);\r\n return doApplyFlash(flashHilite, baseColor);\r\n`;\r\n\r\nconst doApplyFlash = `\r\nvec4 doApplyFlash(float flags, vec4 baseColor) {\r\n bool isFlashed = nthBitSet(flags, kEmphBit_Flash);\r\n bool isHilited = nthBitSet(flags, kEmphBit_Hilite);\r\n bool isEmphasized = !isHilited && nthBitSet(flags, kEmphBit_Emphasize);\r\n vec3 hiliteRgb = isEmphasized ? u_hilite_settings[1] : u_hilite_settings[0];\r\n\r\n isHilited = isEmphasized || isHilited;\r\n float hiliteRatio = isHilited ? (isEmphasized ? u_hilite_settings[2][1] : u_hilite_settings[2][0]) : 0.0;\r\n baseColor.rgb = mix(baseColor.rgb, hiliteRgb, hiliteRatio);\r\n\r\n const float maxBrighten = 0.2;\r\n float brighten = isFlashed ? u_flash_intensity * maxBrighten : 0.0;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n\r\n const float maxTween = 0.75;\r\n float hiliteFraction = isFlashed ? u_flash_intensity * maxTween : 0.0;\r\n vec3 tweenRgb = baseColor.rgb * (1.0 - hiliteFraction);\r\n tweenRgb += u_hilite_settings[0] * hiliteFraction;\r\n\r\n return vec4(mix(tweenRgb, brightRgb, u_flash_mode), baseColor.a);\r\n}\r\n`;\r\n\r\nconst doClassifierFlash = `\r\nvec4 applyClassifierFlash(vec4 baseColor) {\r\n const float maxBrighten = 0.2;\r\n float brighten = u_flash_intensity * maxBrighten;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n return vec4(brightRgb, baseColor.a);\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addClassifierFlash(frag: FragmentShaderBuilder): void {\r\n addFlashIntensity(frag);\r\n addHiliteSettings(frag, false);\r\n frag.addFunction(doClassifierFlash);\r\n}\r\n\r\nfunction addFlashIntensity(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_flash_intensity\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_flash_intensity\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.flashIntensity);\r\n });\r\n });\r\n}\r\n\r\nfunction addApplyFlash(frag: FragmentShaderBuilder) {\r\n addHiliteSettings(frag, true);\r\n addEmphasisFlags(frag);\r\n\r\n addExtractNthBit(frag);\r\n frag.addFunction(doApplyFlash);\r\n frag.set(FragmentShaderComponent.ApplyFlash, applyFlash);\r\n addFlashIntensity(frag);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeatureSymbology(builder: ProgramBuilder, feat: FeatureMode, opts: FeatureSymbologyOptions): void {\r\n if (!addCommon(builder, feat, opts) || FeatureSymbologyOptions.None === opts)\r\n return;\r\n\r\n assert((FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color) === (opts & (FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color)));\r\n\r\n builder.addGlobal(\"feature_rgb\", VariableType.Vec3);\r\n builder.addGlobal(\"feature_alpha\", VariableType.Float);\r\n builder.addVarying(\"v_feature_emphasis\", VariableType.Float);\r\n\r\n const vert = builder.vert;\r\n vert.addGlobal(\"feature_invisible\", VariableType.Boolean, \"false\");\r\n vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addEmphasisFlags(vert);\r\n vert.addGlobal(\"use_material\", VariableType.Boolean, \"true\");\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureOverrides);\r\n vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n\r\n/** If we're running the hilite shader for a uniform feature, it follows that the feature must be hilited.\r\n * So the hilite shader simply needs to output '1' for every fragment.\r\n * @internal\r\n */\r\nexport function addUniformHiliter(builder: ProgramBuilder): void {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, `return vec4(1.0, 0.0, 0.0, 0.0);`);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\n/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.\r\n * The following symbology overrides are supported:\r\n * - Visibility - implcitly, because if the feature is invisible its geometry will never be drawn.\r\n * - Flash\r\n * - Hilite\r\n * - Color and Transparency- only for point clouds currently which set addFeatureColor to true.\r\n * This shader could be simplified, but want to share code with the non-uniform versions...hence uniforms/globals with \"v_\" prefix typically used for varyings on no prefix...\r\n * @internal\r\n */\r\nexport function addUniformFeatureSymbology(builder: ProgramBuilder, addFeatureColor: boolean): void {\r\n builder.vert.addGlobal(\"g_featureIndex\", VariableType.Vec3, \"vec3(0.0)\", true);\r\n\r\n builder.frag.addUniform(\"v_feature_emphasis\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"v_feature_emphasis\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformSymbologyFlags(uniform);\r\n });\r\n });\r\n\r\n if (addFeatureColor) {\r\n builder.vert.addUniform(\"feature_rgb\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"feature_rgb\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformColorOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"feature_alpha\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"feature_alpha\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformTransparencyOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n addAlpha(builder.vert);\r\n addMaxAlpha(builder.vert);\r\n addRenderPass(builder.vert);\r\n addTransparencyDiscardFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n } else {\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, \"return feature_invisible;\");\r\n }\r\n\r\n // Non-Locatable... Discard if picking\r\n builder.vert.addUniform(\"feature_invisible\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"feature_invisible\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformNonLocatable(uniform, params.target.drawNonLocatable);\r\n });\r\n });\r\n\r\n builder.vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,kBAAkB,CAAC;AAK/G,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAQ/D;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,QASlE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAM/D;AAkDD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CA2BtE;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAkBzE;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CASpF;AAED,gBAAgB;AAChB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAWxD,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,qPAQ9B,CAAC"}
1
+ {"version":3,"file":"Fragment.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAwD,MAAM,kBAAkB,CAAC;AAK/G,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAQ/D;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,QASlE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,QAM/D;AAkDD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAmCtE;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAkBzE;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CASpF;AAED,gBAAgB;AAChB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAWxD,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,qPAQ9B,CAAC"}
@@ -64,7 +64,7 @@ const computePickBufferOutputs = `${multiplyAlpha}
64
64
  ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);
65
65
  vec4 output1 = vec4(feature_id_i) / 255.0;
66
66
  float linearDepth = computeLinearDepth(v_eyeSpace.z);
67
- vec4 output2 = vec4(u_renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0
67
+ vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0
68
68
  `;
69
69
  const computeAltPickBufferOutputs = `${multiplyAlpha}
70
70
  vec4 output0 = baseColor;
@@ -90,13 +90,21 @@ export function addPickBufferOutputs(frag) {
90
90
  frag.addFunction(encodeDepthRgb);
91
91
  frag.addFunction(computeLinearDepth);
92
92
  const prelude = new SourceBuilder();
93
+ const overrideOrder = frag.get(20 /* OverrideRenderOrder */);
94
+ if (overrideOrder) {
95
+ frag.addFunction("float overrideRenderOrder(float currentOrder)", overrideOrder);
96
+ prelude.addline(" float renderOrder = overrideRenderOrder(u_renderOrder);");
97
+ }
98
+ else {
99
+ prelude.addline(" float renderOrder = u_renderOrder;");
100
+ }
93
101
  prelude.add(computePickBufferOutputs);
94
- const overrideColor = frag.get(18 /* OverrideColor */);
102
+ const overrideColor = frag.get(19 /* OverrideColor */);
95
103
  if (undefined !== overrideColor) {
96
104
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
97
105
  prelude.addline(" output0 = overrideColor(output0);");
98
106
  }
99
- const overrideFeatureId = frag.get(16 /* OverrideFeatureId */);
107
+ const overrideFeatureId = frag.get(17 /* OverrideFeatureId */);
100
108
  if (undefined !== overrideFeatureId) {
101
109
  frag.addFunction("vec4 overrideFeatureId(vec4 currentId)", overrideFeatureId);
102
110
  prelude.addline(reassignFeatureId);
@@ -104,18 +112,18 @@ export function addPickBufferOutputs(frag) {
104
112
  addRenderPass(frag);
105
113
  if (System.instance.capabilities.supportsMRTPickShaders) {
106
114
  frag.addDrawBuffersExtension(3);
107
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
115
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
108
116
  }
109
117
  else {
110
118
  addRenderTargetIndex(frag);
111
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
119
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
112
120
  }
113
121
  }
114
122
  /** @internal */
115
123
  export function addAltPickBufferOutputs(frag) {
116
124
  const prelude = new SourceBuilder();
117
125
  prelude.add(computeAltPickBufferOutputs);
118
- const overrideColor = frag.get(18 /* OverrideColor */);
126
+ const overrideColor = frag.get(19 /* OverrideColor */);
119
127
  if (undefined !== overrideColor) {
120
128
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
121
129
  prelude.addline(" output0 = overrideColor(output0);");
@@ -123,23 +131,23 @@ export function addAltPickBufferOutputs(frag) {
123
131
  addRenderPass(frag);
124
132
  if (System.instance.capabilities.supportsMRTPickShaders) {
125
133
  frag.addDrawBuffersExtension(3);
126
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
134
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
127
135
  }
128
136
  else {
129
137
  addRenderTargetIndex(frag);
130
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
138
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
131
139
  }
132
140
  }
133
141
  /** @internal */
134
142
  export function addFragColorWithPreMultipliedAlpha(frag) {
135
143
  addRenderPass(frag);
136
- const overrideColor = frag.get(18 /* OverrideColor */);
144
+ const overrideColor = frag.get(19 /* OverrideColor */);
137
145
  if (undefined === overrideColor) {
138
- frag.set(15 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
146
+ frag.set(16 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
139
147
  }
140
148
  else {
141
149
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
142
- frag.set(15 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
150
+ frag.set(16 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
143
151
  }
144
152
  }
145
153
  /** @internal */