@itwin/core-frontend 4.1.0-dev.15 → 4.1.0-dev.17

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 (847) hide show
  1. package/lib/cjs/AccuDraw.js.map +1 -1
  2. package/lib/cjs/AccuSnap.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  5. package/lib/cjs/AuxCoordSys.js.map +1 -1
  6. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  7. package/lib/cjs/BingLocation.js.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  10. package/lib/cjs/CategorySelectorState.js.map +1 -1
  11. package/lib/cjs/ChangeFlags.js.map +1 -1
  12. package/lib/cjs/CheckpointConnection.js.map +1 -1
  13. package/lib/cjs/CoordSystem.js.map +1 -1
  14. package/lib/cjs/DecorationsCache.js.map +1 -1
  15. package/lib/cjs/DevTools.js.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js.map +1 -1
  17. package/lib/cjs/DrawingViewState.js +5 -5
  18. package/lib/cjs/DrawingViewState.js.map +1 -1
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/EmphasizeElements.js.map +1 -1
  21. package/lib/cjs/EntityState.js.map +1 -1
  22. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  23. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  24. package/lib/cjs/FlashSettings.js.map +1 -1
  25. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  26. package/lib/cjs/Frustum2d.js.map +1 -1
  27. package/lib/cjs/FrustumAnimator.js.map +1 -1
  28. package/lib/cjs/FuzzySearch.js.map +1 -1
  29. package/lib/cjs/GeoServices.js.map +1 -1
  30. package/lib/cjs/GlobeAnimator.js.map +1 -1
  31. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  32. package/lib/cjs/HitDetail.js.map +1 -1
  33. package/lib/cjs/IModelApp.js.map +1 -1
  34. package/lib/cjs/IModelConnection.js +23 -23
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  37. package/lib/cjs/IModeljs-css.js +133 -133
  38. package/lib/cjs/IModeljs-css.js.map +1 -1
  39. package/lib/cjs/IpcApp.js.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  42. package/lib/cjs/MarginPercent.js.map +1 -1
  43. package/lib/cjs/Marker.js.map +1 -1
  44. package/lib/cjs/ModelSelectorState.js.map +1 -1
  45. package/lib/cjs/NativeApp.js.map +1 -1
  46. package/lib/cjs/NativeAppLogger.js.map +1 -1
  47. package/lib/cjs/NoRenderApp.js.map +1 -1
  48. package/lib/cjs/NotificationManager.js.map +1 -1
  49. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  50. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  51. package/lib/cjs/RealityDataSource.js.map +1 -1
  52. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  53. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  55. package/lib/cjs/SelectionSet.js.map +1 -1
  56. package/lib/cjs/SheetViewState.js.map +1 -1
  57. package/lib/cjs/SpatialViewState.js.map +1 -1
  58. package/lib/cjs/Sprites.js.map +1 -1
  59. package/lib/cjs/StandardView.js.map +1 -1
  60. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  61. package/lib/cjs/TentativePoint.js.map +1 -1
  62. package/lib/cjs/Tiles.js.map +1 -1
  63. package/lib/cjs/UserPreferences.js.map +1 -1
  64. package/lib/cjs/ViewAnimation.js.map +1 -1
  65. package/lib/cjs/ViewContext.js.map +1 -1
  66. package/lib/cjs/ViewCreator2d.js.map +1 -1
  67. package/lib/cjs/ViewCreator3d.js.map +1 -1
  68. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  69. package/lib/cjs/ViewManager.js.map +1 -1
  70. package/lib/cjs/ViewPose.js.map +1 -1
  71. package/lib/cjs/ViewState.js.map +1 -1
  72. package/lib/cjs/ViewStatus.js.map +1 -1
  73. package/lib/cjs/ViewingSpace.js.map +1 -1
  74. package/lib/cjs/Viewport.js.map +1 -1
  75. package/lib/cjs/ViewportSync.js.map +1 -1
  76. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -1
  77. package/lib/cjs/common/ImageUtil.js.map +1 -1
  78. package/lib/cjs/common/ViewRect.js.map +1 -1
  79. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  80. package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
  81. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  82. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  83. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  84. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  85. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  86. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -1
  87. package/lib/cjs/common/render/MaterialParams.js.map +1 -1
  88. package/lib/cjs/common/render/TextureParams.js.map +1 -1
  89. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -1
  90. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -1
  91. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -1
  92. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -1
  93. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -1
  94. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -1
  95. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -1
  96. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -1
  97. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -1
  98. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -1
  99. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -1
  100. package/lib/cjs/core-frontend.js.map +1 -1
  101. package/lib/cjs/extension/Extension.js.map +1 -1
  102. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  103. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  104. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  105. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  106. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  107. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  108. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  109. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  110. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  111. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  112. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  113. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  114. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  115. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  116. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  117. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  118. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  119. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -1
  120. package/lib/cjs/render/CreateTextureArgs.js.map +1 -1
  121. package/lib/cjs/render/Decorations.js.map +1 -1
  122. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  123. package/lib/cjs/render/FrameStats.js.map +1 -1
  124. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  125. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  126. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  127. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  128. package/lib/cjs/render/MockRender.js.map +1 -1
  129. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  130. package/lib/cjs/render/Pixel.js.map +1 -1
  131. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  132. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  133. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  134. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  135. package/lib/cjs/render/RenderMemory.js.map +1 -1
  136. package/lib/cjs/render/RenderPlan.js.map +1 -1
  137. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  138. package/lib/cjs/render/RenderSystem.js.map +1 -1
  139. package/lib/cjs/render/RenderTarget.js.map +1 -1
  140. package/lib/cjs/render/Scene.js.map +1 -1
  141. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  142. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  143. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  144. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  145. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  146. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  147. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  148. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  149. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  150. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  151. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  152. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  153. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -1
  154. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  155. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  156. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  157. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  158. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  159. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  160. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  161. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  162. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  163. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  164. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  165. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  166. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  167. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  168. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  169. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  170. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  171. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  172. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  173. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  174. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  175. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  176. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  177. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  178. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  179. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  180. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  181. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  182. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  183. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  184. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  185. package/lib/cjs/render/webgl/GL.js.map +1 -1
  186. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  187. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  188. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  189. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  190. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  191. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  192. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  193. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  194. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  195. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  196. package/lib/cjs/render/webgl/Material.js.map +1 -1
  197. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  198. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  199. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  200. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  201. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  202. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  203. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  204. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  205. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  206. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  207. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  208. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  209. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  210. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  211. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  212. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  213. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  214. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  215. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  216. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  217. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  218. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  219. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  220. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  221. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  222. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  223. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  224. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  225. package/lib/cjs/render/webgl/System.js.map +1 -1
  226. package/lib/cjs/render/webgl/Target.js.map +1 -1
  227. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  228. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  229. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  230. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  231. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  232. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  233. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  234. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  235. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  236. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  237. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  238. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  239. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  241. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  243. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  244. package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
  245. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  247. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  248. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  249. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  250. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  251. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  252. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  253. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  254. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  255. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  256. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  257. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  258. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  259. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  260. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  261. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  262. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  263. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  264. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  265. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  266. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  267. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  268. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  269. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  270. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  271. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  272. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  273. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  274. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  275. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  276. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  277. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
  279. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  281. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  283. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  285. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  288. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  289. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  290. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  291. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  292. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  293. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  294. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  295. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  296. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  297. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  298. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  299. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  300. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
  302. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  303. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  304. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  305. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  306. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  307. package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
  308. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  309. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  310. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  311. package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
  312. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  313. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  314. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  315. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  316. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  317. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  318. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  319. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  320. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  321. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  323. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  324. package/lib/cjs/render-primitives.js.map +1 -1
  325. package/lib/cjs/request/Request.js.map +1 -1
  326. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  327. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  328. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  329. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  330. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  331. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  332. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  333. package/lib/cjs/tile/GltfReader.js.map +1 -1
  334. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  335. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  336. package/lib/cjs/tile/IModelTile.js.map +1 -1
  337. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  338. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  339. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  340. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  341. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  342. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  343. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  344. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  345. package/lib/cjs/tile/PntsReader.js.map +1 -1
  346. package/lib/cjs/tile/RealityTile.js.map +1 -1
  347. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  348. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  349. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  350. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  351. package/lib/cjs/tile/Tile.js.map +1 -1
  352. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  353. package/lib/cjs/tile/TileContent.js.map +1 -1
  354. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  355. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  356. package/lib/cjs/tile/TileParams.js.map +1 -1
  357. package/lib/cjs/tile/TileRequest.js.map +1 -1
  358. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  359. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  360. package/lib/cjs/tile/TileStorage.js.map +1 -1
  361. package/lib/cjs/tile/TileTree.js.map +1 -1
  362. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  363. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  364. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  365. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  366. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  367. package/lib/cjs/tile/TileUser.js.map +1 -1
  368. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  369. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  370. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  371. package/lib/cjs/tile/internal.js.map +1 -1
  372. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  373. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  374. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  375. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  376. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  377. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  378. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  379. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  380. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  381. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  383. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  384. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  385. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  386. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  387. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  388. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  389. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  390. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  391. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  392. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  393. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  394. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  395. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  396. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  397. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  398. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  399. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  400. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  401. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  402. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  403. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  404. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  405. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  406. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  407. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  408. package/lib/cjs/tools/EventController.js.map +1 -1
  409. package/lib/cjs/tools/IdleTool.js.map +1 -1
  410. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  411. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  412. package/lib/cjs/tools/SelectTool.js.map +1 -1
  413. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  414. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  415. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  416. package/lib/cjs/tools/ViewTool.js.map +1 -1
  417. package/lib/cjs/webgl.js.map +1 -1
  418. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
  419. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -40
  420. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  421. package/lib/esm/AccuDraw.js.map +1 -1
  422. package/lib/esm/AccuSnap.js.map +1 -1
  423. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  424. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  425. package/lib/esm/AuxCoordSys.js.map +1 -1
  426. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  427. package/lib/esm/BingLocation.js.map +1 -1
  428. package/lib/esm/BriefcaseConnection.js.map +1 -1
  429. package/lib/esm/BriefcaseTxns.js.map +1 -1
  430. package/lib/esm/CategorySelectorState.js.map +1 -1
  431. package/lib/esm/ChangeFlags.js.map +1 -1
  432. package/lib/esm/CheckpointConnection.js.map +1 -1
  433. package/lib/esm/CoordSystem.js.map +1 -1
  434. package/lib/esm/DecorationsCache.js.map +1 -1
  435. package/lib/esm/DevTools.js.map +1 -1
  436. package/lib/esm/DisplayStyleState.js.map +1 -1
  437. package/lib/esm/DrawingViewState.js +5 -5
  438. package/lib/esm/DrawingViewState.js.map +1 -1
  439. package/lib/esm/ElementLocateManager.js.map +1 -1
  440. package/lib/esm/EmphasizeElements.js.map +1 -1
  441. package/lib/esm/EntityState.js.map +1 -1
  442. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  443. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  444. package/lib/esm/FlashSettings.js.map +1 -1
  445. package/lib/esm/FrontendHubAccess.js.map +1 -1
  446. package/lib/esm/Frustum2d.js.map +1 -1
  447. package/lib/esm/FrustumAnimator.js.map +1 -1
  448. package/lib/esm/FuzzySearch.js.map +1 -1
  449. package/lib/esm/GeoServices.js.map +1 -1
  450. package/lib/esm/GlobeAnimator.js.map +1 -1
  451. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  452. package/lib/esm/HitDetail.js.map +1 -1
  453. package/lib/esm/IModelApp.js.map +1 -1
  454. package/lib/esm/IModelConnection.js +23 -23
  455. package/lib/esm/IModelConnection.js.map +1 -1
  456. package/lib/esm/IModelRoutingContext.js.map +1 -1
  457. package/lib/esm/IModeljs-css.js +133 -133
  458. package/lib/esm/IModeljs-css.js.map +1 -1
  459. package/lib/esm/IpcApp.js.map +1 -1
  460. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  461. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  462. package/lib/esm/MarginPercent.js.map +1 -1
  463. package/lib/esm/Marker.js.map +1 -1
  464. package/lib/esm/ModelSelectorState.js.map +1 -1
  465. package/lib/esm/NativeApp.js.map +1 -1
  466. package/lib/esm/NativeAppLogger.js.map +1 -1
  467. package/lib/esm/NoRenderApp.js.map +1 -1
  468. package/lib/esm/NotificationManager.js.map +1 -1
  469. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  470. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  471. package/lib/esm/RealityDataSource.js.map +1 -1
  472. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  473. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  474. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  475. package/lib/esm/SelectionSet.js.map +1 -1
  476. package/lib/esm/SheetViewState.js.map +1 -1
  477. package/lib/esm/SpatialViewState.js.map +1 -1
  478. package/lib/esm/Sprites.js.map +1 -1
  479. package/lib/esm/StandardView.js.map +1 -1
  480. package/lib/esm/SubCategoriesCache.js.map +1 -1
  481. package/lib/esm/TentativePoint.js.map +1 -1
  482. package/lib/esm/Tiles.js.map +1 -1
  483. package/lib/esm/UserPreferences.js.map +1 -1
  484. package/lib/esm/ViewAnimation.js.map +1 -1
  485. package/lib/esm/ViewContext.js.map +1 -1
  486. package/lib/esm/ViewCreator2d.js.map +1 -1
  487. package/lib/esm/ViewCreator3d.js.map +1 -1
  488. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  489. package/lib/esm/ViewManager.js.map +1 -1
  490. package/lib/esm/ViewPose.js.map +1 -1
  491. package/lib/esm/ViewState.js.map +1 -1
  492. package/lib/esm/ViewStatus.js.map +1 -1
  493. package/lib/esm/ViewingSpace.js.map +1 -1
  494. package/lib/esm/Viewport.js.map +1 -1
  495. package/lib/esm/ViewportSync.js.map +1 -1
  496. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -1
  497. package/lib/esm/common/ImageUtil.js.map +1 -1
  498. package/lib/esm/common/ViewRect.js.map +1 -1
  499. package/lib/esm/common/WorkerProxy.js.map +1 -1
  500. package/lib/esm/common/gltf/GltfModel.js.map +1 -1
  501. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  502. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  503. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  504. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  505. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  506. package/lib/esm/common/render/AnimationNodeId.js.map +1 -1
  507. package/lib/esm/common/render/MaterialParams.js.map +1 -1
  508. package/lib/esm/common/render/TextureParams.js.map +1 -1
  509. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -1
  510. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -1
  511. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -1
  512. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -1
  513. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -1
  514. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -1
  515. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -1
  516. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -1
  517. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -1
  518. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -1
  519. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -1
  520. package/lib/esm/core-frontend.js.map +1 -1
  521. package/lib/esm/extension/Extension.js.map +1 -1
  522. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  523. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  524. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  525. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  526. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  527. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  528. package/lib/esm/properties/AngleDescription.js.map +1 -1
  529. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  530. package/lib/esm/properties/LengthDescription.js.map +1 -1
  531. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  532. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  533. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  534. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  535. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  536. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  537. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  538. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  539. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -1
  540. package/lib/esm/render/CreateTextureArgs.js.map +1 -1
  541. package/lib/esm/render/Decorations.js.map +1 -1
  542. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  543. package/lib/esm/render/FrameStats.js.map +1 -1
  544. package/lib/esm/render/GraphicBranch.js.map +1 -1
  545. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  546. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  547. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  548. package/lib/esm/render/MockRender.js.map +1 -1
  549. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  550. package/lib/esm/render/Pixel.js.map +1 -1
  551. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  552. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  553. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  554. package/lib/esm/render/RenderGraphic.js.map +1 -1
  555. package/lib/esm/render/RenderMemory.js.map +1 -1
  556. package/lib/esm/render/RenderPlan.js.map +1 -1
  557. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  558. package/lib/esm/render/RenderSystem.js.map +1 -1
  559. package/lib/esm/render/RenderTarget.js.map +1 -1
  560. package/lib/esm/render/Scene.js.map +1 -1
  561. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  562. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  563. package/lib/esm/render/VisibleFeature.js.map +1 -1
  564. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  565. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  566. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  567. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  568. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  569. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  570. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  571. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  572. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  573. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -1
  574. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  575. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  576. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  577. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  578. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  579. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  580. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  581. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  582. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  583. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  584. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  585. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  586. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  587. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  588. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  589. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  590. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  591. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  592. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  593. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  594. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  595. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  596. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  597. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  598. package/lib/esm/render/webgl/EDL.js.map +1 -1
  599. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  600. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  601. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  602. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  603. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  604. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  605. package/lib/esm/render/webgl/GL.js.map +1 -1
  606. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  607. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  608. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  609. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  610. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  611. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  612. package/lib/esm/render/webgl/Layer.js.map +1 -1
  613. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  614. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  615. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  616. package/lib/esm/render/webgl/Material.js.map +1 -1
  617. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  618. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  619. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  620. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  621. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  622. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  623. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  624. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  625. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  626. package/lib/esm/render/webgl/PointString.js.map +1 -1
  627. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  628. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  629. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  630. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  631. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  632. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  633. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  634. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  635. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  636. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  637. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  638. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  639. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  640. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  641. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  642. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  643. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  644. package/lib/esm/render/webgl/Sync.js.map +1 -1
  645. package/lib/esm/render/webgl/System.js.map +1 -1
  646. package/lib/esm/render/webgl/Target.js.map +1 -1
  647. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  648. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  649. package/lib/esm/render/webgl/Technique.js.map +1 -1
  650. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  651. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  652. package/lib/esm/render/webgl/Texture.js.map +1 -1
  653. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  654. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  655. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  656. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  657. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  658. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  659. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  660. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  661. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  662. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  663. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  664. package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
  665. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  666. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  667. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  668. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  669. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  670. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  671. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  672. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  673. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  674. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  675. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  676. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  677. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  678. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  679. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  680. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  681. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  682. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  683. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  684. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  685. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  686. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  687. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  688. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  689. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  690. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  691. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  692. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  693. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  694. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  695. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  696. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  697. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  698. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
  699. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  700. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  701. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  702. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  703. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  704. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  705. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  706. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  707. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  708. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  709. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  710. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  711. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  712. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  713. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  714. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  715. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  716. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  717. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  718. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  719. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  720. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  721. package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
  722. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  723. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  724. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  725. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  726. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  727. package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
  728. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  729. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  730. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  731. package/lib/esm/render/webgl/glsl/Surface.js +239 -239
  732. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  733. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  734. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  735. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  736. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  737. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  738. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  739. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  740. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  741. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  742. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  743. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  744. package/lib/esm/render-primitives.js.map +1 -1
  745. package/lib/esm/request/Request.js.map +1 -1
  746. package/lib/esm/tile/B3dmReader.js.map +1 -1
  747. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  748. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  749. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  750. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  751. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  752. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  753. package/lib/esm/tile/GltfReader.js.map +1 -1
  754. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  755. package/lib/esm/tile/I3dmReader.js.map +1 -1
  756. package/lib/esm/tile/IModelTile.js.map +1 -1
  757. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  758. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  759. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  760. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  761. package/lib/esm/tile/ImdlParser.js.map +1 -1
  762. package/lib/esm/tile/ImdlReader.js.map +1 -1
  763. package/lib/esm/tile/LRUTileList.js.map +1 -1
  764. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  765. package/lib/esm/tile/PntsReader.js.map +1 -1
  766. package/lib/esm/tile/RealityTile.js.map +1 -1
  767. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  768. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  769. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  770. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  771. package/lib/esm/tile/Tile.js.map +1 -1
  772. package/lib/esm/tile/TileAdmin.js.map +1 -1
  773. package/lib/esm/tile/TileContent.js.map +1 -1
  774. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  775. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  776. package/lib/esm/tile/TileParams.js.map +1 -1
  777. package/lib/esm/tile/TileRequest.js.map +1 -1
  778. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  779. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  780. package/lib/esm/tile/TileStorage.js.map +1 -1
  781. package/lib/esm/tile/TileTree.js.map +1 -1
  782. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  783. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  784. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  785. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  786. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  787. package/lib/esm/tile/TileUser.js.map +1 -1
  788. package/lib/esm/tile/TileUserSet.js.map +1 -1
  789. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  790. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  791. package/lib/esm/tile/internal.js.map +1 -1
  792. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  793. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  794. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  795. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  796. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  797. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  799. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  801. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  802. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  803. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  804. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  805. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  806. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  807. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  808. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  809. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  810. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  811. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  812. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  813. package/lib/esm/tile/map/MapTile.js.map +1 -1
  814. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  815. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  816. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  817. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  818. package/lib/esm/tile/map/QuadId.js.map +1 -1
  819. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  820. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  821. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  822. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  823. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  824. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  825. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  826. package/lib/esm/tools/EditManipulator.js.map +1 -1
  827. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  828. package/lib/esm/tools/EventController.js.map +1 -1
  829. package/lib/esm/tools/IdleTool.js.map +1 -1
  830. package/lib/esm/tools/MeasureTool.js.map +1 -1
  831. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  832. package/lib/esm/tools/SelectTool.js.map +1 -1
  833. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  834. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  835. package/lib/esm/tools/ToolSettings.js.map +1 -1
  836. package/lib/esm/tools/ViewTool.js.map +1 -1
  837. package/lib/esm/webgl.js.map +1 -1
  838. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
  839. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -40
  840. package/lib/esm/workers/RegisterWorker.js.map +1 -1
  841. package/lib/public/assets/MapLayerSources.json +25 -25
  842. package/lib/public/images/cesium-ion.svg +92 -92
  843. package/lib/public/images/imodeljs-icon.svg +2 -2
  844. package/lib/public/locales/en/CoreTools.json +477 -477
  845. package/lib/public/locales/en/iModelJs.json +170 -170
  846. package/lib/public/scripts/checkbrowser.js +24 -24
  847. package/package.json +18 -18
@@ -16,165 +16,165 @@ import { addShaderFlags, addUInt32s } from "./Common";
16
16
  import { addClassifierFlash } from "./FeatureSymbology";
17
17
  import { addWindowToTexCoords } from "./Fragment";
18
18
  import { addInstancedRtcMatrix } from "./Vertex";
19
- export const volClassOpaqueColor = `
20
- vec4 volClassColor(vec4 baseColor, float depth) {
21
- if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)
22
- discard;
23
- return vec4(baseColor.rgb, 1.0);
24
- }
19
+ export const volClassOpaqueColor = `
20
+ vec4 volClassColor(vec4 baseColor, float depth) {
21
+ if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)
22
+ discard;
23
+ return vec4(baseColor.rgb, 1.0);
24
+ }
25
25
  `;
26
- const volClassTranslucentColor = `
27
- vec4 volClassColor(vec4 baseColor, float depth) {
28
- return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error
29
- }
26
+ const volClassTranslucentColor = `
27
+ vec4 volClassColor(vec4 baseColor, float depth) {
28
+ return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error
29
+ }
30
30
  `;
31
- const applyPlanarClassificationPrelude = `
32
- const float dimScale = .7;
33
-
34
- vec2 classPos = v_pClassPos.xy / v_pClassPosW;
35
- bool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;
36
- if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.
37
- if (u_pClassColorParams.x > kTextureDrape) {
38
- return volClassColor(baseColor, depth);
39
- }
40
- if (isOutside)
41
- discard;
42
-
43
- vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;
44
- return vec4(rgb, baseColor.a);
45
- }
46
- float imageCount = u_pClassColorParams.z;
47
- // If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
48
- bool doInvert = false;
49
- if (imageCount < 0.0) {
50
- imageCount = - imageCount;
51
- doInvert = true;
52
- }
53
-
54
- vec4 colorTexel = vec4(0);
55
- vec4 maskTexel = vec4(0);
56
- bool doMask = imageCount != kTextureContentClassifierOnly;
57
- bool doClassify = imageCount != kTextureContentMaskOnly;
58
-
59
- if (!isOutside) {
60
- if (imageCount == kTextureContentClassifierOnly) {
61
- colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
62
- } else if (imageCount == kTextureContentMaskOnly) {
63
- maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));
64
- } else if (imageCount == kTextureContentClassifierAndMask) {
65
- colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
66
- maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));
67
- }
68
- if (colorTexel.b >= 0.5) {
69
- if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {
70
- discard;
71
- return vec4(0.0);
72
- }
73
- colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;
74
- } else {
75
- colorTexel.b *= 255.0 / 127.0;
76
- }
77
- }
78
- if (doMask) {
79
- bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
80
- if (doInvert)
81
- masked = !masked;
82
- if (masked) {
83
- float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
84
- if (maskTransparency <= 0.0) {
85
- discard;
86
- return vec4(0);
87
- }
88
-
89
- baseColor.a = baseColor.a * maskTransparency;
90
- }
91
-
92
- if (!doClassify)
93
- return baseColor;
94
- }
95
-
96
- bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);
97
- float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;
98
- if (kClassifierDisplay_Off == param) {
99
- discard;
100
- return vec4(0);
101
- }
31
+ const applyPlanarClassificationPrelude = `
32
+ const float dimScale = .7;
33
+
34
+ vec2 classPos = v_pClassPos.xy / v_pClassPosW;
35
+ bool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;
36
+ if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.
37
+ if (u_pClassColorParams.x > kTextureDrape) {
38
+ return volClassColor(baseColor, depth);
39
+ }
40
+ if (isOutside)
41
+ discard;
42
+
43
+ vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;
44
+ return vec4(rgb, baseColor.a);
45
+ }
46
+ float imageCount = u_pClassColorParams.z;
47
+ // If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
48
+ bool doInvert = false;
49
+ if (imageCount < 0.0) {
50
+ imageCount = - imageCount;
51
+ doInvert = true;
52
+ }
53
+
54
+ vec4 colorTexel = vec4(0);
55
+ vec4 maskTexel = vec4(0);
56
+ bool doMask = imageCount != kTextureContentClassifierOnly;
57
+ bool doClassify = imageCount != kTextureContentMaskOnly;
58
+
59
+ if (!isOutside) {
60
+ if (imageCount == kTextureContentClassifierOnly) {
61
+ colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
62
+ } else if (imageCount == kTextureContentMaskOnly) {
63
+ maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));
64
+ } else if (imageCount == kTextureContentClassifierAndMask) {
65
+ colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
66
+ maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));
67
+ }
68
+ if (colorTexel.b >= 0.5) {
69
+ if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {
70
+ discard;
71
+ return vec4(0.0);
72
+ }
73
+ colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;
74
+ } else {
75
+ colorTexel.b *= 255.0 / 127.0;
76
+ }
77
+ }
78
+ if (doMask) {
79
+ bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
80
+ if (doInvert)
81
+ masked = !masked;
82
+ if (masked) {
83
+ float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
84
+ if (maskTransparency <= 0.0) {
85
+ discard;
86
+ return vec4(0);
87
+ }
88
+
89
+ baseColor.a = baseColor.a * maskTransparency;
90
+ }
91
+
92
+ if (!doClassify)
93
+ return baseColor;
94
+ }
95
+
96
+ bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);
97
+ float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;
98
+ if (kClassifierDisplay_Off == param) {
99
+ discard;
100
+ return vec4(0);
101
+ }
102
102
  `;
103
103
  // Currently we discard if classifier is pure black (acts as clipping mask).
104
104
  // These could be more efficiently handled with masks.
105
105
  const applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template
106
- `
107
- float colorMix = u_pClassPointCloud ? .65 : .35;
108
- vec4 classColor;
109
- if (kClassifierDisplay_On == param)
110
- classColor = baseColor;
111
- else if (!isClassified || kClassifierDisplay_Dimmed == param)
112
- classColor = vec4(baseColor.rgb * dimScale, baseColor.a);
113
- else if (kClassifierDisplay_Hilite == param)
114
- classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);
115
- else {
116
- if (colorTexel.b > colorTexel.a) {
117
- discard;
118
- return vec4(0.0);
119
- }
120
-
121
- // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.
122
- float alpha = colorTexel.a * baseColor.a;
123
- vec3 rgb = colorTexel.rgb / colorTexel.a;
124
- rgb = mix(baseColor.rgb, rgb, colorMix);
125
- classColor = vec4(rgb, alpha);
126
- }
127
-
128
- if (kClassifierDisplay_Element != param && isClassified) {
129
- if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
130
- classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
131
-
132
- if (colorTexel.g > colorTexel.a)
133
- classColor = applyClassifierFlash(classColor);
134
- }
135
-
136
- return classColor;
106
+ `
107
+ float colorMix = u_pClassPointCloud ? .65 : .35;
108
+ vec4 classColor;
109
+ if (kClassifierDisplay_On == param)
110
+ classColor = baseColor;
111
+ else if (!isClassified || kClassifierDisplay_Dimmed == param)
112
+ classColor = vec4(baseColor.rgb * dimScale, baseColor.a);
113
+ else if (kClassifierDisplay_Hilite == param)
114
+ classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);
115
+ else {
116
+ if (colorTexel.b > colorTexel.a) {
117
+ discard;
118
+ return vec4(0.0);
119
+ }
120
+
121
+ // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.
122
+ float alpha = colorTexel.a * baseColor.a;
123
+ vec3 rgb = colorTexel.rgb / colorTexel.a;
124
+ rgb = mix(baseColor.rgb, rgb, colorMix);
125
+ classColor = vec4(rgb, alpha);
126
+ }
127
+
128
+ if (kClassifierDisplay_Element != param && isClassified) {
129
+ if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
130
+ classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
131
+
132
+ if (colorTexel.g > colorTexel.a)
133
+ classColor = applyClassifierFlash(classColor);
134
+ }
135
+
136
+ return classColor;
137
137
  `;
138
138
  const applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template
139
- `
140
- vec4 classColor = baseColor;
141
-
142
- if (kClassifierDisplay_Element == param) {
143
- if (colorTexel.b > colorTexel.a) {
144
- discard;
145
- return vec4(0.0);
146
- }
147
-
148
- // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.
149
- baseColor.rgb = baseColor.rgb / baseColor.a;
150
- classColor = vec4(baseColor.rgb, colorTexel.b);
151
- classColor.rgb *= classColor.a;
152
- colorTexel.a = 0.5; // make conditions below potentially pass
153
- }
154
-
155
- if (isClassified) {
156
- if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
157
- classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
158
-
159
- if (colorTexel.g > colorTexel.a)
160
- classColor = applyClassifierFlash(classColor);
161
- }
162
-
163
- return classColor;
139
+ `
140
+ vec4 classColor = baseColor;
141
+
142
+ if (kClassifierDisplay_Element == param) {
143
+ if (colorTexel.b > colorTexel.a) {
144
+ discard;
145
+ return vec4(0.0);
146
+ }
147
+
148
+ // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.
149
+ baseColor.rgb = baseColor.rgb / baseColor.a;
150
+ classColor = vec4(baseColor.rgb, colorTexel.b);
151
+ classColor.rgb *= classColor.a;
152
+ colorTexel.a = 0.5; // make conditions below potentially pass
153
+ }
154
+
155
+ if (isClassified) {
156
+ if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
157
+ classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
158
+
159
+ if (colorTexel.g > colorTexel.a)
160
+ classColor = applyClassifierFlash(classColor);
161
+ }
162
+
163
+ return classColor;
164
164
  `;
165
- const overrideFeatureId = `
166
- if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;
167
- vec2 classPos = v_pClassPos / v_pClassPosW;
168
- vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));
169
- return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;
165
+ const overrideFeatureId = `
166
+ if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;
167
+ vec2 classPos = v_pClassPos / v_pClassPosW;
168
+ vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));
169
+ return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;
170
170
  `;
171
- const computeClassifiedHiliteColor = `
172
- vec2 classPos = v_pClassPos / v_pClassPosW;
173
- return TEXTURE(s_pClassHiliteSampler, classPos);
171
+ const computeClassifiedHiliteColor = `
172
+ vec2 classPos = v_pClassPos / v_pClassPosW;
173
+ return TEXTURE(s_pClassHiliteSampler, classPos);
174
174
  `;
175
- const computeClassifiedSurfaceHiliteColor = `
176
- if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)
177
- return vec4(0.0);
175
+ const computeClassifiedSurfaceHiliteColor = `
176
+ if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)
177
+ return vec4(0.0);
178
178
  ${computeClassifiedHiliteColor}`;
179
179
  const computeClassifierPos = "vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;";
180
180
  const computeInstancedClassifierPos = "vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;";
@@ -307,56 +307,56 @@ export function addHilitePlanarClassifier(builder, supportTextures = true) {
307
307
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);
308
308
  }
309
309
  // NonLocatable flag is put in upper bit of blue component when drawing the classification texture.
310
- const encodeNonLocatableWithFeatures = `
311
- vec4 encodeNonLocatable(vec4 clr) {
312
- float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;
313
- return vec4(clr.r, clr.g, encoded_b, clr.a);
314
- }
310
+ const encodeNonLocatableWithFeatures = `
311
+ vec4 encodeNonLocatable(vec4 clr) {
312
+ float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;
313
+ return vec4(clr.r, clr.g, encoded_b, clr.a);
314
+ }
315
315
  `;
316
- const encodeNonLocatable = `
317
- vec4 encodeNonLocatable(vec4 clr) {
318
- float encoded_b = floor(clr.b * 127.0) / 255.0;
319
- return vec4(clr.r, clr.g, encoded_b, clr.a);
320
- }
316
+ const encodeNonLocatable = `
317
+ vec4 encodeNonLocatable(vec4 clr) {
318
+ float encoded_b = floor(clr.b * 127.0) / 255.0;
319
+ return vec4(clr.r, clr.g, encoded_b, clr.a);
320
+ }
321
321
  `;
322
- const overrideClassifierColorPrelude = `
323
- if (0.0 == u_planarClassifierInsideMode)
324
- return currentColor;
325
-
326
- if (0.0 == currentColor.a)
327
- return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
322
+ const overrideClassifierColorPrelude = `
323
+ if (0.0 == u_planarClassifierInsideMode)
324
+ return currentColor;
325
+
326
+ if (0.0 == currentColor.a)
327
+ return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
328
328
  `;
329
- const overrideClassifierEmphasis = `
330
- if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {
331
- float emph = floor(v_feature_emphasis + 0.5);
332
- if (0.0 != emph)
333
- return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));
334
- }
329
+ const overrideClassifierEmphasis = `
330
+ if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {
331
+ float emph = floor(v_feature_emphasis + 0.5);
332
+ if (0.0 != emph)
333
+ return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));
334
+ }
335
335
  `;
336
- const overrideClassifierColorPostlude = `
337
- return encodeNonLocatable(currentColor);
336
+ const overrideClassifierColorPostlude = `
337
+ return encodeNonLocatable(currentColor);
338
338
  `;
339
339
  const overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;
340
340
  const overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;
341
- const overrideClassifierColorPreludeForThematic = `
342
- if (0.0 == u_planarClassifierInsideMode)
343
- return currentColor;
344
-
345
- if (0.0 == currentColor.a)
346
- return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
347
-
348
- bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;
341
+ const overrideClassifierColorPreludeForThematic = `
342
+ if (0.0 == u_planarClassifierInsideMode)
343
+ return currentColor;
344
+
345
+ if (0.0 == currentColor.a)
346
+ return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
347
+
348
+ bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;
349
349
  `;
350
- const overrideClassifierEmphasisForThematic = `
351
- float emph = floor(v_feature_emphasis + 0.5);
352
- if (0.0 != emph)
353
- return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));
354
- else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)
355
- return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));
350
+ const overrideClassifierEmphasisForThematic = `
351
+ float emph = floor(v_feature_emphasis + 0.5);
352
+ if (0.0 != emph)
353
+ return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));
354
+ else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)
355
+ return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));
356
356
  `;
357
357
  // Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.
358
- const overrideClassifierColorPostludeClipForThematic = `
359
- return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);
358
+ const overrideClassifierColorPostludeClipForThematic = `
359
+ return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);
360
360
  `;
361
361
  const overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;
362
362
  const overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;CAMlC,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;CAIhC,CAAC;AAEF,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuExC,CACE;AAEH,4EAA4E;AAC5E,sDAAsD;AACtD,MAAM,8BAA8B,GAAG,gCAAgC,GAAG,sCAAsC;IAC9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BD,CAAC;AAEF,MAAM,yCAAyC,GAAG,gCAAgC,GAAG,sCAAsC;IACzH;;;;;;;;;;;;;;;;;;;;;;;;;CAyBD,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;GAKvB,CAAC;AAEJ,MAAM,4BAA4B,GAAG;;;CAGpC,CAAC;AACF,MAAM,mCAAmC,GAAG;;;EAG1C,4BAA4B,EAAE,CAAC;AAEjC,MAAM,oBAAoB,GAAG,0EAA0E,CAAC;AACxG,MAAM,6BAA6B,GAAG,iGAAiG,CAAC;AACxI,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,0BAA0B,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAM,0JAA0J;AAC/M,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;AAC/C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;AACzD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAEpC,SAAS,yBAAyB,CAAC,OAAuB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,6BAAqB,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA+B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE;gBAC9D,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,sBAAsB,CAAC,CAAC;gBAC7I,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;aACxD;;gBACC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,8CAA8C;YAC9E,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,qBAAqB;QAC5B,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,wBAAwB,CAAC,aAAa,6BAAqB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACtJ,OAAO,CAAC,wBAAwB,CAAC,cAAc,8BAAsB,qBAAqB,CAAC,CAAC;IAE5F,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAsB;IAC1D,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,SAAS,CAAC,4BAA4B,EAAE,8BAA8B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,EAAE,GAAG,8BAA8B,CAAC,YAAY,GAAG,CAAC,CAAC;IAC3D,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,+BAA+B,EAAE,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,SAAS,CAAC,kCAAkC,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,wBAAwB,CAAC,OAAuB,EAAE,WAAoB,EAAE,UAAsB;IAC5G,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,iBAAiB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;aAC/E;;gBACC,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,QAAS,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,qBAAqB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACjE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;aACtC;iBAAM;gBACL,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uCAAuC;gBACzE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;gBACzD,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;gBACzD,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;aAC1D;YACD,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,0BAAkB,EAAE;QAChC,IAAI,CAAC,UAAU,CAAC,oBAAoB,gCAAwB,CAAC,IAAI,EAAE,EAAE;YACnE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;gBACzD,MAAM,YAAY,GAAG,SAAS,KAAK,UAAU,IAAI,UAAU,CAAC,uBAAuB,CAAC;gBACpF,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,WAAW;QACb,2EAA2E;QAC3E,yGAAyG;QACzG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;SACxC;QACH,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;KACvC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,IAAI,CAAC,GAAG,yDAAgD,CAAC,UAAU,0BAAkB,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC;AACvK,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,0BAA0B,CAAC,OAAuB;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACzD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;YACzD,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,kBAAkB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC/C,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,qDAA4C,iBAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAC,OAAuB,EAAE,eAAe,GAAG,IAAI;IACvF,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,uBAAuB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACxE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAwB,CAAC;YAC1D,MAAM,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;YAC3E,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,mDAA2C,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAC3I,CAAC;AAED,mGAAmG;AACnG,MAAM,8BAA8B,GAAG;;;;;CAKtC,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;CAK1B,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;CAMlC,CAAC;AAEF,MAAM,+BAA+B,GAAG;;CAEvC,CAAC;AAEF,MAAM,8BAA8B,GAAG,8BAA8B,GAAG,0BAA0B,GAAG,+BAA+B,CAAC;AACrI,MAAM,yBAAyB,GAAG,8BAA8B,GAAG,+BAA+B,CAAC;AAEnG,MAAM,yCAAyC,GAAG;;;;;;;;CAQjD,CAAC;AAEF,MAAM,qCAAqC,GAAG;;;;;;CAM7C,CAAC;AAEF,gJAAgJ;AAChJ,MAAM,8CAA8C,GAAG;;CAEtD,CAAC;AAEF,MAAM,yCAAyC,GAAG,yCAAyC,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACtK,MAAM,oCAAoC,GAAG,yCAAyC,GAAG,8CAA8C,CAAC;AAExI;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAuB,EAAE,UAAsB;IACxF,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,8BAA8B,8BAAsB,CAAC,IAAI,EAAE,EAAE;QACnF,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;YAC5D,MAAM,QAAQ,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9F,IAAI,UAAU,0BAAkB;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;;QAEpI,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;AAC9J,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\nimport { Matrix4 } from \"../Matrix\";\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\nimport { IsThematic } from \"../TechniqueFlags\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { addShaderFlags, addUInt32s } from \"./Common\";\nimport { addClassifierFlash } from \"./FeatureSymbology\";\nimport { addWindowToTexCoords } from \"./Fragment\";\nimport { addInstancedRtcMatrix } from \"./Vertex\";\n\nexport const volClassOpaqueColor = `\nvec4 volClassColor(vec4 baseColor, float depth) {\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\n discard;\n return vec4(baseColor.rgb, 1.0);\n}\n`;\n\nconst volClassTranslucentColor = `\nvec4 volClassColor(vec4 baseColor, float depth) {\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\n}\n`;\n\nconst applyPlanarClassificationPrelude = `\nconst float dimScale = .7;\n\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\n if (u_pClassColorParams.x > kTextureDrape) {\n return volClassColor(baseColor, depth);\n }\n if (isOutside)\n discard;\n\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\n return vec4(rgb, baseColor.a);\n}\nfloat imageCount = u_pClassColorParams.z;\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\nbool doInvert = false;\nif (imageCount < 0.0) {\n imageCount = - imageCount;\n doInvert = true;\n}\n\nvec4 colorTexel = vec4(0);\nvec4 maskTexel = vec4(0);\nbool doMask = imageCount != kTextureContentClassifierOnly;\nbool doClassify = imageCount != kTextureContentMaskOnly;\n\nif (!isOutside) {\n if (imageCount == kTextureContentClassifierOnly) {\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\n } else if (imageCount == kTextureContentMaskOnly) {\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\n } else if (imageCount == kTextureContentClassifierAndMask) {\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\n }\n if (colorTexel.b >= 0.5) {\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\n discard;\n return vec4(0.0);\n }\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\n } else {\n colorTexel.b *= 255.0 / 127.0;\n }\n}\nif (doMask) {\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\n if (doInvert)\n masked = !masked;\n if (masked) {\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\n if (maskTransparency <= 0.0) {\n discard;\n return vec4(0);\n }\n\n baseColor.a = baseColor.a * maskTransparency;\n }\n\n if (!doClassify)\n return baseColor;\n }\n\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\n if (kClassifierDisplay_Off == param) {\n discard;\n return vec4(0);\n}\n`\n ;\n\n// Currently we discard if classifier is pure black (acts as clipping mask).\n// These could be more efficiently handled with masks.\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\n `\n float colorMix = u_pClassPointCloud ? .65 : .35;\n vec4 classColor;\n if (kClassifierDisplay_On == param)\n classColor = baseColor;\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\n else if (kClassifierDisplay_Hilite == param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\n else {\n if (colorTexel.b > colorTexel.a) {\n discard;\n return vec4(0.0);\n }\n\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\n float alpha = colorTexel.a * baseColor.a;\n vec3 rgb = colorTexel.rgb / colorTexel.a;\n rgb = mix(baseColor.rgb, rgb, colorMix);\n classColor = vec4(rgb, alpha);\n }\n\n if (kClassifierDisplay_Element != param && isClassified) {\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\n\n if (colorTexel.g > colorTexel.a)\n classColor = applyClassifierFlash(classColor);\n }\n\n return classColor;\n`;\n\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\n `\n vec4 classColor = baseColor;\n\n if (kClassifierDisplay_Element == param) {\n if (colorTexel.b > colorTexel.a) {\n discard;\n return vec4(0.0);\n }\n\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\n baseColor.rgb = baseColor.rgb / baseColor.a;\n classColor = vec4(baseColor.rgb, colorTexel.b);\n classColor.rgb *= classColor.a;\n colorTexel.a = 0.5; // make conditions below potentially pass\n }\n\n if (isClassified) {\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\n\n if (colorTexel.g > colorTexel.a)\n classColor = applyClassifierFlash(classColor);\n }\n\n return classColor;\n`;\n\nconst overrideFeatureId = `\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\n vec2 classPos = v_pClassPos / v_pClassPosW;\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\n `;\n\nconst computeClassifiedHiliteColor = `\n vec2 classPos = v_pClassPos / v_pClassPosW;\n return TEXTURE(s_pClassHiliteSampler, classPos);\n`;\nconst computeClassifiedSurfaceHiliteColor = `\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\n return vec4(0.0);\n${computeClassifiedHiliteColor}`;\n\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\n\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\nconst scratchModel = Matrix4d.createIdentity();\nconst scratchModelProjection = Matrix4d.createIdentity();\nconst scratchMatrix = new Matrix4();\n\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\n const vert = builder.vert;\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape!;\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\n } else\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\n uniform.setMatrix4(scratchMatrix);\n });\n });\n\n if (vert.usesInstancedGeometry)\n addInstancedRtcMatrix(vert);\n\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\n\n addPlanarClassifierConstants(builder.frag);\n}\n\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\n}\n\n/** @internal */\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\n addPlanarClassifierCommon(builder);\n const frag = builder.frag;\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape;\n const volClass = params.target.activeVolumeClassifierTexture;\n assert(undefined !== source || undefined !== volClass);\n if (source) {\n assert(undefined !== source.texture);\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\n } else\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\n });\n });\n\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape;\n const volClass = params.target.activeVolumeClassifierTexture;\n assert(undefined !== source || undefined !== volClass);\n if (undefined !== source) {\n source.getParams(scratchColorParams);\n } else {\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\n scratchColorParams[1] = 0.5; // used for alpha value\n scratchColorParams[2] = 0.0; // Not used for volume.\n scratchColorParams[3] = 0.0; // Not used for volume.\n }\n uniform.setUniform4fv(scratchColorParams);\n });\n });\n\n if (isThematic === IsThematic.No) {\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier;\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\n uniform.setUniform1i(isPointCloud ? 1 : 0);\n });\n });\n }\n\n addClassifierFlash(frag);\n\n if (translucent)\n // We will never call the shaders for volume classifiers with translucency,\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\n frag.addFunction(volClassTranslucentColor);\n else {\n addWindowToTexCoords(frag);\n frag.addFunction(volClassOpaqueColor);\n }\n\n addShaderFlags(builder);\n\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\n}\n\n/** @internal */\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\n const frag = builder.frag;\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier;\n if (classifier !== undefined) {\n scratchBatchBaseId[0] = classifier.baseBatchId;\n scratchBatchBaseComponents[0] = scratchBytes[0];\n scratchBatchBaseComponents[1] = scratchBytes[1];\n scratchBatchBaseComponents[2] = scratchBytes[2];\n scratchBatchBaseComponents[3] = scratchBytes[3];\n }\n uniform.setUniform4fv(scratchBatchBaseComponents);\n });\n });\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\n frag.addFunction(addUInt32s);\n}\n\n/** @internal */\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\n addPlanarClassifierCommon(builder);\n const frag = builder.frag;\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier!;\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\n });\n });\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\n}\n\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\nconst encodeNonLocatableWithFeatures = `\nvec4 encodeNonLocatable(vec4 clr) {\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\n return vec4(clr.r, clr.g, encoded_b, clr.a);\n}\n`;\n\nconst encodeNonLocatable = `\nvec4 encodeNonLocatable(vec4 clr) {\n float encoded_b = floor(clr.b * 127.0) / 255.0;\n return vec4(clr.r, clr.g, encoded_b, clr.a);\n}\n`;\n\nconst overrideClassifierColorPrelude = `\n if (0.0 == u_planarClassifierInsideMode)\n return currentColor;\n\n if (0.0 == currentColor.a)\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\n`;\n\nconst overrideClassifierEmphasis = `\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\n float emph = floor(v_feature_emphasis + 0.5);\n if (0.0 != emph)\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\n }\n`;\n\nconst overrideClassifierColorPostlude = `\n return encodeNonLocatable(currentColor);\n`;\n\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\n\nconst overrideClassifierColorPreludeForThematic = `\n if (0.0 == u_planarClassifierInsideMode)\n return currentColor;\n\n if (0.0 == currentColor.a)\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\n\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\n`;\n\nconst overrideClassifierEmphasisForThematic = `\n float emph = floor(v_feature_emphasis + 0.5);\n if (0.0 != emph)\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\n`;\n\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\nconst overrideClassifierColorPostludeClipForThematic = `\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\n`;\n\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\n\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\n * - Red: hilited.\n * - Green: flashed.\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\n * @internal\n */\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\n addPlanarClassifierConstants(builder.frag);\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\n const classifier = params.target.currentlyDrawingClassifier;\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\n uniform.setUniform1f(override);\n });\n });\n\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\n if (isThematic === IsThematic.No)\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\n else\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\n}\n"]}
1
+ {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
@@ -16,29 +16,29 @@ import { addTranslucency } from "./Translucency";
16
16
  import { addModelViewProjectionMatrix } from "./Vertex";
17
17
  const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
18
18
  const computeTexCoord = "return unquantize2d(a_uvParam, u_qTexCoordParams);";
19
- const computeBaseColor = `
20
- // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.
21
- vec4 color = vec4(u_gridColor, u_gridProps.y);
22
- float refsPerGrid = u_gridProps.x;
23
- if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))
24
- drawGridLine(color, 1.0, u_gridProps.z - color.a);
25
-
26
- return color;
19
+ const computeBaseColor = `
20
+ // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.
21
+ vec4 color = vec4(u_gridColor, u_gridProps.y);
22
+ float refsPerGrid = u_gridProps.x;
23
+ if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))
24
+ drawGridLine(color, 1.0, u_gridProps.z - color.a);
25
+
26
+ return color;
27
27
  `;
28
- const drawGridLine = `
29
- bool drawGridLine(inout vec4 color, float mult, float alphaScale) {
30
- vec2 scaledTexCoord = v_texCoord * mult;
31
- vec2 deriv = mult * screenSpaceDeriv(v_texCoord);
32
- if (deriv.x != 0.0 && deriv.y != 0.0) {
33
- vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;
34
- float line = min(grid.x, grid.y);
35
- if (line < 1.0) {
36
- color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));
37
- return true;
38
- }
39
- }
40
- return false;
41
- }
28
+ const drawGridLine = `
29
+ bool drawGridLine(inout vec4 color, float mult, float alphaScale) {
30
+ vec2 scaledTexCoord = v_texCoord * mult;
31
+ vec2 deriv = mult * screenSpaceDeriv(v_texCoord);
32
+ if (deriv.x != 0.0 && deriv.y != 0.0) {
33
+ vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;
34
+ float line = min(grid.x, grid.y);
35
+ if (line < 1.0) {
36
+ color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));
37
+ return true;
38
+ }
39
+ }
40
+ return false;
41
+ }
42
42
  `;
43
43
  const fwidth2d = `\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\n`;
44
44
  const defaultTransparency = new PlanarGridTransparency();
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { System } from \"../System\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { addShaderFlags } from \"./Common\";\nimport { unquantize2d } from \"./Decode\";\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\nimport { addTranslucency } from \"./Translucency\";\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\n\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\n\nconst computeBaseColor = `\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\n vec4 color = vec4(u_gridColor, u_gridProps.y);\n float refsPerGrid = u_gridProps.x;\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\n\n return color;\n`;\n\nconst drawGridLine = `\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\n vec2 scaledTexCoord = v_texCoord * mult;\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\n if (deriv.x != 0.0 && deriv.y != 0.0) {\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\n float line = min(grid.x, grid.y);\n if (line < 1.0) {\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\n return true;\n }\n }\n return false;\n }\n`;\n\nconst fwidth2d = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\n\nconst defaultTransparency = new PlanarGridTransparency();\n/** @internal */\nexport default function createPlanarGridProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\n const vert = builder.vert;\n const frag = builder.frag;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n addShaderFlags(builder);\n\n addTranslucency(builder);\n frag.addFunction(fwidth2d);\n\n if (System.instance.supportsLogZBuffer)\n addLogDepth(builder);\n\n frag.addFunction(drawGridLine);\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n\n vert.headerComment = `//!V! PlanarGrid`;\n frag.headerComment = `//!F! PlanarGrid`;\n\n vert.addFunction(unquantize2d);\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const planarGrid = params.geometry.asPlanarGrid!;\n uniform.setUniform4fv(planarGrid.uvParams.params);\n });\n });\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\n const planarGrid = params.geometry.asPlanarGrid!;\n const color = planarGrid.props.color.colors;\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\n });\n });\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\n const planarGridProps = params.geometry.asPlanarGrid!.props;\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\n });\n });\n\n return builder.buildProgram(context);\n}\n\n"]}
1
+ {"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\n\r\nconst computeBaseColor = `\r\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\r\n vec4 color = vec4(u_gridColor, u_gridProps.y);\r\n float refsPerGrid = u_gridProps.x;\r\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\r\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\r\n\r\n return color;\r\n`;\r\n\r\nconst drawGridLine = `\r\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\r\n vec2 scaledTexCoord = v_texCoord * mult;\r\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\r\n if (deriv.x != 0.0 && deriv.y != 0.0) {\r\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\r\n float line = min(grid.x, grid.y);\r\n if (line < 1.0) {\r\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n`;\r\n\r\nconst fwidth2d = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\r\n\r\nconst defaultTransparency = new PlanarGridTransparency();\r\n/** @internal */\r\nexport default function createPlanarGridProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n addShaderFlags(builder);\r\n\r\n addTranslucency(builder);\r\n frag.addFunction(fwidth2d);\r\n\r\n if (System.instance.supportsLogZBuffer)\r\n addLogDepth(builder);\r\n\r\n frag.addFunction(drawGridLine);\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n vert.headerComment = `//!V! PlanarGrid`;\r\n frag.headerComment = `//!F! PlanarGrid`;\r\n\r\n vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n uniform.setUniform4fv(planarGrid.uvParams.params);\r\n });\r\n });\r\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n const color = planarGrid.props.color.colors;\r\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\r\n });\r\n });\r\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\r\n const planarGridProps = params.geometry.asPlanarGrid!.props;\r\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\r\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\r\n });\r\n });\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n"]}