@itwin/core-frontend 3.2.0-dev.9 → 3.3.0-dev.2
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.
- package/CHANGELOG.md +55 -1
- package/lib/cjs/AccuDraw.d.ts +2 -0
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +2 -0
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.d.ts +1 -0
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +1 -0
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +4 -2
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.js +2 -2
- package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/cjs/AuxCoordSys.d.ts +12 -2
- package/lib/cjs/AuxCoordSys.d.ts.map +1 -1
- package/lib/cjs/AuxCoordSys.js +12 -2
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/BingLocation.d.ts +1 -0
- package/lib/cjs/BingLocation.d.ts.map +1 -1
- package/lib/cjs/BingLocation.js +1 -0
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts +35 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +52 -1
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/CategorySelectorState.d.ts +1 -0
- package/lib/cjs/CategorySelectorState.d.ts.map +1 -1
- package/lib/cjs/CategorySelectorState.js +1 -0
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/ChangeFlags.d.ts +1 -0
- package/lib/cjs/ChangeFlags.d.ts.map +1 -1
- package/lib/cjs/ChangeFlags.js +1 -0
- package/lib/cjs/ChangeFlags.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.d.ts +1 -0
- package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +1 -0
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/CoordSystem.d.ts +1 -0
- package/lib/cjs/CoordSystem.d.ts.map +1 -1
- package/lib/cjs/CoordSystem.js +1 -0
- package/lib/cjs/CoordSystem.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +4 -0
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +9 -4
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.d.ts +5 -2
- package/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +34 -3
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts +23 -5
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +19 -4
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts +1 -0
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +1 -0
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EntityState.d.ts +2 -0
- package/lib/cjs/EntityState.d.ts.map +1 -1
- package/lib/cjs/EntityState.js +2 -0
- package/lib/cjs/EntityState.js.map +1 -1
- package/lib/cjs/FeatureOverrideProvider.d.ts +1 -0
- package/lib/cjs/FeatureOverrideProvider.d.ts.map +1 -1
- package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
- package/lib/cjs/FlashSettings.d.ts +3 -0
- package/lib/cjs/FlashSettings.d.ts.map +1 -1
- package/lib/cjs/FlashSettings.js +2 -0
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/FrontendHubAccess.d.ts +4 -1
- package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.d.ts +6 -1
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js +5 -0
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/FrustumAnimator.d.ts +2 -0
- package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
- package/lib/cjs/FrustumAnimator.js +2 -0
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/FuzzySearch.d.ts +1 -0
- package/lib/cjs/FuzzySearch.d.ts.map +1 -1
- package/lib/cjs/FuzzySearch.js.map +1 -1
- package/lib/cjs/GlobeAnimator.d.ts +1 -0
- package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
- package/lib/cjs/GlobeAnimator.js +1 -0
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +26 -5
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +26 -5
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +9 -0
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +38 -23
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +11 -2
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +23 -2
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/ImageUtil.d.ts +15 -2
- package/lib/cjs/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/ImageUtil.js +19 -4
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +1 -0
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +1 -0
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/MarginPercent.d.ts +1 -0
- package/lib/cjs/MarginPercent.d.ts.map +1 -1
- package/lib/cjs/MarginPercent.js +1 -0
- package/lib/cjs/MarginPercent.js.map +1 -1
- package/lib/cjs/Marker.d.ts +16 -3
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +3 -0
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelSelectorState.d.ts +1 -0
- package/lib/cjs/ModelSelectorState.d.ts.map +1 -1
- package/lib/cjs/ModelSelectorState.js +1 -0
- package/lib/cjs/ModelSelectorState.js.map +1 -1
- package/lib/cjs/ModelState.d.ts +10 -0
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +10 -0
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NotificationManager.d.ts +11 -0
- package/lib/cjs/NotificationManager.d.ts.map +1 -1
- package/lib/cjs/NotificationManager.js +10 -0
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/PerModelCategoryVisibility.d.ts +1 -0
- package/lib/cjs/PerModelCategoryVisibility.d.ts.map +1 -1
- package/lib/cjs/PerModelCategoryVisibility.js +1 -0
- package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +7 -0
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +3 -0
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +6 -5
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +58 -6
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts +7 -2
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +17 -3
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.d.ts +3 -0
- package/lib/cjs/Sprites.d.ts.map +1 -1
- package/lib/cjs/Sprites.js +3 -0
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/StandardView.d.ts +1 -0
- package/lib/cjs/StandardView.d.ts.map +1 -1
- package/lib/cjs/StandardView.js +1 -0
- package/lib/cjs/StandardView.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.d.ts +14 -7
- package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +36 -8
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.d.ts +4 -1
- package/lib/cjs/TentativePoint.d.ts.map +1 -1
- package/lib/cjs/TentativePoint.js +4 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/Tiles.d.ts +1 -0
- package/lib/cjs/Tiles.d.ts.map +1 -1
- package/lib/cjs/Tiles.js +1 -0
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/ViewAnimation.d.ts +6 -0
- package/lib/cjs/ViewAnimation.d.ts.map +1 -1
- package/lib/cjs/ViewAnimation.js.map +1 -1
- package/lib/cjs/ViewCreator2d.d.ts +2 -0
- package/lib/cjs/ViewCreator2d.d.ts.map +1 -1
- package/lib/cjs/ViewCreator2d.js +1 -0
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.d.ts +2 -8
- package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
- package/lib/cjs/ViewCreator3d.js +12 -38
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.d.ts +3 -0
- package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +1 -0
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewManager.d.ts +3 -0
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +2 -0
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewPose.d.ts +1 -0
- package/lib/cjs/ViewPose.d.ts.map +1 -1
- package/lib/cjs/ViewPose.js +1 -0
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewRect.d.ts +1 -0
- package/lib/cjs/ViewRect.d.ts.map +1 -1
- package/lib/cjs/ViewRect.js +1 -0
- package/lib/cjs/ViewRect.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +17 -2
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +40 -9
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewStatus.d.ts +1 -0
- package/lib/cjs/ViewStatus.d.ts.map +1 -1
- package/lib/cjs/ViewStatus.js +1 -0
- package/lib/cjs/ViewStatus.js.map +1 -1
- package/lib/cjs/ViewingSpace.d.ts +1 -0
- package/lib/cjs/ViewingSpace.d.ts.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -0
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +6 -2
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +12 -4
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/ViewportSync.d.ts +119 -0
- package/lib/cjs/ViewportSync.d.ts.map +1 -0
- package/lib/cjs/ViewportSync.js +187 -0
- package/lib/cjs/ViewportSync.js.map +1 -0
- package/lib/cjs/core-frontend.d.ts +10 -6
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +11 -6
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/Extension.d.ts +24 -15
- package/lib/cjs/extension/Extension.d.ts.map +1 -1
- package/lib/cjs/extension/Extension.js +0 -8
- package/lib/cjs/extension/Extension.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.d.ts +21 -44
- package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +55 -64
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js +231 -59
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts +10 -0
- package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts.map +1 -0
- package/lib/cjs/extension/providers/ExtensionLoadScript.js +55 -0
- package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -0
- package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts +52 -0
- package/lib/cjs/extension/providers/ExtensionServiceClient.d.ts.map +1 -0
- package/lib/cjs/extension/providers/ExtensionServiceClient.js +131 -0
- package/lib/cjs/extension/providers/ExtensionServiceClient.js.map +1 -0
- package/lib/cjs/extension/providers/LocalExtensionProvider.d.ts +26 -0
- package/lib/cjs/extension/providers/LocalExtensionProvider.d.ts.map +1 -0
- package/lib/cjs/extension/providers/LocalExtensionProvider.js +24 -0
- package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -0
- package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts +36 -0
- package/lib/cjs/extension/providers/RemoteExtensionProvider.d.ts.map +1 -0
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js +53 -0
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -0
- package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +37 -0
- package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +1 -0
- package/lib/cjs/extension/providers/ServiceExtensionProvider.js +84 -0
- package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +1 -0
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +2 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/CanvasDecoration.d.ts +2 -0
- package/lib/cjs/render/CanvasDecoration.d.ts.map +1 -1
- package/lib/cjs/render/CanvasDecoration.js.map +1 -1
- package/lib/cjs/render/Decorations.d.ts +1 -0
- package/lib/cjs/render/Decorations.d.ts.map +1 -1
- package/lib/cjs/render/Decorations.js +1 -0
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.d.ts +1 -0
- package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +1 -0
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +2 -0
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +1 -0
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +33 -2
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +26 -0
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicPrimitive.d.ts +14 -0
- package/lib/cjs/render/GraphicPrimitive.d.ts.map +1 -1
- package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts +3 -0
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/Pixel.d.ts +1 -0
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +1 -0
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RenderClipVolume.d.ts +1 -0
- package/lib/cjs/render/RenderClipVolume.d.ts.map +1 -1
- package/lib/cjs/render/RenderClipVolume.js +1 -0
- package/lib/cjs/render/RenderClipVolume.js.map +1 -1
- package/lib/cjs/render/RenderGraphic.d.ts +3 -0
- package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
- package/lib/cjs/render/RenderGraphic.js +2 -0
- package/lib/cjs/render/RenderGraphic.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +4 -3
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +4 -3
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTexture.d.ts +7 -0
- package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/Scene.d.ts +1 -0
- package/lib/cjs/render/Scene.d.ts.map +1 -1
- package/lib/cjs/render/Scene.js +1 -0
- package/lib/cjs/render/Scene.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +10 -0
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js +2 -0
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.d.ts +4 -2
- package/lib/cjs/render/primitives/VertexKey.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js +23 -12
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +30 -2
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +12 -4
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +20 -15
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +2 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +6 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +14 -12
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +26 -25
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +8 -8
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js +15 -15
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +11 -6
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +12 -15
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +6 -2
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeMap.js +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +7 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +20 -10
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +2 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -0
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +1 -0
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +14 -11
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +26 -17
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +2 -0
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +219 -52
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +5 -4
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +7 -6
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +4 -4
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +6 -6
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +6 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +64 -13
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts +4 -2
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +166 -135
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -3
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +17 -4
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.d.ts +8 -7
- package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +2 -0
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +38 -6
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +8 -7
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.js +16 -2
- package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -2
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +6 -19
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +0 -2
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.d.ts +3 -3
- package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +6 -6
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts +3 -3
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +6 -21
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts +2 -2
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +50 -34
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts +3 -3
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +143 -57
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +3 -4
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/DisclosedTileTreeSet.d.ts +2 -0
- package/lib/cjs/tile/DisclosedTileTreeSet.d.ts.map +1 -1
- package/lib/cjs/tile/DisclosedTileTreeSet.js +1 -0
- package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js +4 -2
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +19 -9
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +24 -7
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +1 -1
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.d.ts +3 -3
- package/lib/cjs/tile/IModelTileRequestChannels.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js +7 -11
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.d.ts +3 -3
- package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +1 -1
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +2 -0
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +2 -0
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js +1 -2
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +4 -4
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +34 -6
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts +5 -0
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +5 -0
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +18 -1
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +26 -19
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileContent.d.ts +1 -0
- package/lib/cjs/tile/TileContent.d.ts.map +1 -1
- package/lib/cjs/tile/TileContent.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +2 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +1 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileParams.d.ts +1 -0
- package/lib/cjs/tile/TileParams.d.ts.map +1 -1
- package/lib/cjs/tile/TileParams.js.map +1 -1
- package/lib/cjs/tile/TileRequest.d.ts +1 -0
- package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequest.js +1 -0
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.d.ts +2 -0
- package/lib/cjs/tile/TileRequestChannel.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js +2 -0
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.d.ts +1 -4
- package/lib/cjs/tile/TileRequestChannels.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js +2 -6
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +2 -0
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -0
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeOwner.d.ts +1 -0
- package/lib/cjs/tile/TileTreeOwner.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
- package/lib/cjs/tile/TileTreeParams.d.ts +1 -0
- package/lib/cjs/tile/TileTreeParams.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeParams.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +2 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/TileTreeSupplier.d.ts +1 -0
- package/lib/cjs/tile/TileTreeSupplier.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
- package/lib/cjs/tile/TileUsageMarker.d.ts +1 -0
- package/lib/cjs/tile/TileUsageMarker.d.ts.map +1 -1
- package/lib/cjs/tile/TileUsageMarker.js +1 -0
- package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.d.ts +1 -0
- package/lib/cjs/tile/TiledGraphicsProvider.d.ts.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +0 -2
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +0 -2
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts +2 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +31 -20
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.d.ts +1 -0
- package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +1 -0
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +50 -27
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -9
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.js +0 -8
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +24 -6
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +28 -7
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +1 -3
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +2 -2
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +2 -2
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts +3 -2
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +11 -10
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.d.ts +5 -3
- package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +4 -3
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.d.ts +1 -0
- package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +1 -0
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/EventController.d.ts +1 -0
- package/lib/cjs/tools/EventController.d.ts.map +1 -1
- package/lib/cjs/tools/EventController.js +1 -0
- package/lib/cjs/tools/EventController.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts +4 -0
- package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +7 -0
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.d.ts +3 -0
- package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
- package/lib/cjs/tools/SelectTool.js +3 -0
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts +41 -6
- package/lib/cjs/tools/Tool.d.ts.map +1 -1
- package/lib/cjs/tools/Tool.js +27 -4
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts +16 -22
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +47 -8
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.d.ts +7 -0
- package/lib/cjs/tools/ToolAssistance.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js +3 -0
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.d.ts +3 -0
- package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/tools/ToolSettings.js +3 -0
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts +3 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +9 -5
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts +2 -0
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +2 -0
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts +1 -0
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +1 -0
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +4 -2
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.d.ts +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.js +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/esm/AuxCoordSys.d.ts +12 -2
- package/lib/esm/AuxCoordSys.d.ts.map +1 -1
- package/lib/esm/AuxCoordSys.js +12 -2
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/BingLocation.d.ts +1 -0
- package/lib/esm/BingLocation.d.ts.map +1 -1
- package/lib/esm/BingLocation.js +1 -0
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +35 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +50 -0
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/CategorySelectorState.d.ts +1 -0
- package/lib/esm/CategorySelectorState.d.ts.map +1 -1
- package/lib/esm/CategorySelectorState.js +1 -0
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/ChangeFlags.d.ts +1 -0
- package/lib/esm/ChangeFlags.d.ts.map +1 -1
- package/lib/esm/ChangeFlags.js +1 -0
- package/lib/esm/ChangeFlags.js.map +1 -1
- package/lib/esm/ContextRealityModelState.d.ts +1 -0
- package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
- package/lib/esm/ContextRealityModelState.js +1 -0
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/CoordSystem.d.ts +1 -0
- package/lib/esm/CoordSystem.d.ts.map +1 -1
- package/lib/esm/CoordSystem.js +1 -0
- package/lib/esm/CoordSystem.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +4 -0
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +9 -4
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.d.ts +5 -2
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +34 -3
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts +23 -5
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +19 -4
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts +1 -0
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +1 -0
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EntityState.d.ts +2 -0
- package/lib/esm/EntityState.d.ts.map +1 -1
- package/lib/esm/EntityState.js +2 -0
- package/lib/esm/EntityState.js.map +1 -1
- package/lib/esm/FeatureOverrideProvider.d.ts +1 -0
- package/lib/esm/FeatureOverrideProvider.d.ts.map +1 -1
- package/lib/esm/FeatureOverrideProvider.js.map +1 -1
- package/lib/esm/FlashSettings.d.ts +3 -0
- package/lib/esm/FlashSettings.d.ts.map +1 -1
- package/lib/esm/FlashSettings.js +2 -0
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/FrontendHubAccess.d.ts +4 -1
- package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/FrontendLoggerCategory.d.ts +6 -1
- package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js +5 -0
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/FrustumAnimator.d.ts +2 -0
- package/lib/esm/FrustumAnimator.d.ts.map +1 -1
- package/lib/esm/FrustumAnimator.js +2 -0
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/FuzzySearch.d.ts +1 -0
- package/lib/esm/FuzzySearch.d.ts.map +1 -1
- package/lib/esm/FuzzySearch.js.map +1 -1
- package/lib/esm/GlobeAnimator.d.ts +1 -0
- package/lib/esm/GlobeAnimator.d.ts.map +1 -1
- package/lib/esm/GlobeAnimator.js +1 -0
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +26 -5
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +26 -5
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +9 -0
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +37 -22
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +11 -2
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +23 -2
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/ImageUtil.d.ts +15 -2
- package/lib/esm/ImageUtil.d.ts.map +1 -1
- package/lib/esm/ImageUtil.js +19 -4
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +1 -0
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +1 -0
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/MarginPercent.d.ts +1 -0
- package/lib/esm/MarginPercent.d.ts.map +1 -1
- package/lib/esm/MarginPercent.js +1 -0
- package/lib/esm/MarginPercent.js.map +1 -1
- package/lib/esm/Marker.d.ts +16 -3
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +3 -0
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelSelectorState.d.ts +1 -0
- package/lib/esm/ModelSelectorState.d.ts.map +1 -1
- package/lib/esm/ModelSelectorState.js +1 -0
- package/lib/esm/ModelSelectorState.js.map +1 -1
- package/lib/esm/ModelState.d.ts +10 -0
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +10 -0
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NotificationManager.d.ts +11 -0
- package/lib/esm/NotificationManager.d.ts.map +1 -1
- package/lib/esm/NotificationManager.js +10 -0
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/PerModelCategoryVisibility.d.ts +1 -0
- package/lib/esm/PerModelCategoryVisibility.d.ts.map +1 -1
- package/lib/esm/PerModelCategoryVisibility.js +1 -0
- package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +7 -0
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +3 -0
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +6 -5
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +59 -7
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts +7 -2
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +18 -4
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.d.ts +3 -0
- package/lib/esm/Sprites.d.ts.map +1 -1
- package/lib/esm/Sprites.js +3 -0
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/StandardView.d.ts +1 -0
- package/lib/esm/StandardView.d.ts.map +1 -1
- package/lib/esm/StandardView.js +1 -0
- package/lib/esm/StandardView.js.map +1 -1
- package/lib/esm/SubCategoriesCache.d.ts +14 -7
- package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
- package/lib/esm/SubCategoriesCache.js +37 -9
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.d.ts +4 -1
- package/lib/esm/TentativePoint.d.ts.map +1 -1
- package/lib/esm/TentativePoint.js +4 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/Tiles.d.ts +1 -0
- package/lib/esm/Tiles.d.ts.map +1 -1
- package/lib/esm/Tiles.js +1 -0
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/ViewAnimation.d.ts +6 -0
- package/lib/esm/ViewAnimation.d.ts.map +1 -1
- package/lib/esm/ViewAnimation.js.map +1 -1
- package/lib/esm/ViewCreator2d.d.ts +2 -0
- package/lib/esm/ViewCreator2d.d.ts.map +1 -1
- package/lib/esm/ViewCreator2d.js +1 -0
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.d.ts +2 -8
- package/lib/esm/ViewCreator3d.d.ts.map +1 -1
- package/lib/esm/ViewCreator3d.js +12 -38
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.d.ts +3 -0
- package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +1 -0
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewManager.d.ts +3 -0
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +2 -0
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewPose.d.ts +1 -0
- package/lib/esm/ViewPose.d.ts.map +1 -1
- package/lib/esm/ViewPose.js +1 -0
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewRect.d.ts +1 -0
- package/lib/esm/ViewRect.d.ts.map +1 -1
- package/lib/esm/ViewRect.js +1 -0
- package/lib/esm/ViewRect.js.map +1 -1
- package/lib/esm/ViewState.d.ts +17 -2
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +41 -10
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewStatus.d.ts +1 -0
- package/lib/esm/ViewStatus.d.ts.map +1 -1
- package/lib/esm/ViewStatus.js +1 -0
- package/lib/esm/ViewStatus.js.map +1 -1
- package/lib/esm/ViewingSpace.d.ts +1 -0
- package/lib/esm/ViewingSpace.d.ts.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -0
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +6 -2
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +12 -4
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/ViewportSync.d.ts +119 -0
- package/lib/esm/ViewportSync.d.ts.map +1 -0
- package/lib/esm/ViewportSync.js +177 -0
- package/lib/esm/ViewportSync.js.map +1 -0
- package/lib/esm/core-frontend.d.ts +10 -6
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +11 -6
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/Extension.d.ts +24 -15
- package/lib/esm/extension/Extension.d.ts.map +1 -1
- package/lib/esm/extension/Extension.js +1 -7
- package/lib/esm/extension/Extension.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.d.ts +21 -44
- package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +55 -64
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js +239 -59
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/extension/providers/ExtensionLoadScript.d.ts +10 -0
- package/lib/esm/extension/providers/ExtensionLoadScript.d.ts.map +1 -0
- package/lib/esm/extension/providers/ExtensionLoadScript.js +51 -0
- package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -0
- package/lib/esm/extension/providers/ExtensionServiceClient.d.ts +52 -0
- package/lib/esm/extension/providers/ExtensionServiceClient.d.ts.map +1 -0
- package/lib/esm/extension/providers/ExtensionServiceClient.js +127 -0
- package/lib/esm/extension/providers/ExtensionServiceClient.js.map +1 -0
- package/lib/esm/extension/providers/LocalExtensionProvider.d.ts +26 -0
- package/lib/esm/extension/providers/LocalExtensionProvider.d.ts.map +1 -0
- package/lib/esm/extension/providers/LocalExtensionProvider.js +20 -0
- package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -0
- package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts +36 -0
- package/lib/esm/extension/providers/RemoteExtensionProvider.d.ts.map +1 -0
- package/lib/esm/extension/providers/RemoteExtensionProvider.js +49 -0
- package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -0
- package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +37 -0
- package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +1 -0
- package/lib/esm/extension/providers/ServiceExtensionProvider.js +80 -0
- package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +1 -0
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +3 -2
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/CanvasDecoration.d.ts +2 -0
- package/lib/esm/render/CanvasDecoration.d.ts.map +1 -1
- package/lib/esm/render/CanvasDecoration.js.map +1 -1
- package/lib/esm/render/Decorations.d.ts +1 -0
- package/lib/esm/render/Decorations.d.ts.map +1 -1
- package/lib/esm/render/Decorations.js +1 -0
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.d.ts +1 -0
- package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +1 -0
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +2 -0
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +1 -0
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +33 -2
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +27 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicPrimitive.d.ts +14 -0
- package/lib/esm/render/GraphicPrimitive.d.ts.map +1 -1
- package/lib/esm/render/GraphicPrimitive.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.d.ts +3 -0
- package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/Pixel.d.ts +1 -0
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +1 -0
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RenderClipVolume.d.ts +1 -0
- package/lib/esm/render/RenderClipVolume.d.ts.map +1 -1
- package/lib/esm/render/RenderClipVolume.js +1 -0
- package/lib/esm/render/RenderClipVolume.js.map +1 -1
- package/lib/esm/render/RenderGraphic.d.ts +3 -0
- package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
- package/lib/esm/render/RenderGraphic.js +2 -0
- package/lib/esm/render/RenderGraphic.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +4 -3
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +4 -3
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTexture.d.ts +7 -0
- package/lib/esm/render/RenderTexture.d.ts.map +1 -1
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/Scene.d.ts +1 -0
- package/lib/esm/render/Scene.d.ts.map +1 -1
- package/lib/esm/render/Scene.js +1 -0
- package/lib/esm/render/Scene.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +10 -0
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js +2 -0
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.d.ts +4 -2
- package/lib/esm/render/primitives/VertexKey.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js +24 -13
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +1 -1
- package/lib/esm/render/primitives/VertexTable.js +30 -2
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +12 -4
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +20 -15
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +2 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +7 -2
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +14 -12
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +26 -25
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +8 -8
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js +15 -15
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +11 -6
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +13 -16
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +6 -2
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/AttributeMap.js +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +7 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +19 -9
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +2 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -0
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +1 -0
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +14 -11
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +27 -18
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +2 -0
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +220 -53
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +5 -4
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +7 -6
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +4 -4
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +6 -6
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +6 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +64 -13
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts +4 -2
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +166 -135
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -3
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +17 -4
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.d.ts +8 -7
- package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +2 -0
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +38 -6
- package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.js +8 -7
- package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -1
- package/lib/esm/render/webgl/glsl/Decode.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Decode.js +15 -1
- package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -2
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +7 -20
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -3
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.d.ts +3 -3
- package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +6 -6
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.d.ts +3 -3
- package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +7 -22
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts +2 -2
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +51 -35
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.d.ts +3 -3
- package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +142 -56
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.d.ts.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +3 -4
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/DisclosedTileTreeSet.d.ts +2 -0
- package/lib/esm/tile/DisclosedTileTreeSet.d.ts.map +1 -1
- package/lib/esm/tile/DisclosedTileTreeSet.js +1 -0
- package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/esm/tile/DynamicIModelTile.js +4 -2
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +19 -9
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +23 -6
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js +1 -1
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.d.ts +3 -3
- package/lib/esm/tile/IModelTileRequestChannels.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js +7 -11
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.d.ts +3 -3
- package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +1 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +2 -0
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +2 -0
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js +2 -3
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +5 -5
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +36 -8
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts +5 -0
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +5 -0
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +18 -1
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +27 -20
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileContent.d.ts +1 -0
- package/lib/esm/tile/TileContent.d.ts.map +1 -1
- package/lib/esm/tile/TileContent.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +2 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +1 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileParams.d.ts +1 -0
- package/lib/esm/tile/TileParams.d.ts.map +1 -1
- package/lib/esm/tile/TileParams.js.map +1 -1
- package/lib/esm/tile/TileRequest.d.ts +1 -0
- package/lib/esm/tile/TileRequest.d.ts.map +1 -1
- package/lib/esm/tile/TileRequest.js +1 -0
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.d.ts +2 -0
- package/lib/esm/tile/TileRequestChannel.d.ts.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js +2 -0
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.d.ts +1 -4
- package/lib/esm/tile/TileRequestChannels.d.ts.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js +2 -6
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +2 -0
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -0
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeOwner.d.ts +1 -0
- package/lib/esm/tile/TileTreeOwner.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeOwner.js.map +1 -1
- package/lib/esm/tile/TileTreeParams.d.ts +1 -0
- package/lib/esm/tile/TileTreeParams.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeParams.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +2 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/TileTreeSupplier.d.ts +1 -0
- package/lib/esm/tile/TileTreeSupplier.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
- package/lib/esm/tile/TileUsageMarker.d.ts +1 -0
- package/lib/esm/tile/TileUsageMarker.d.ts.map +1 -1
- package/lib/esm/tile/TileUsageMarker.js +1 -0
- package/lib/esm/tile/TileUsageMarker.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.d.ts +1 -0
- package/lib/esm/tile/TiledGraphicsProvider.d.ts.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +0 -2
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +0 -2
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts +2 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +32 -21
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.d.ts +1 -0
- package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +1 -0
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +51 -28
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -9
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.js +1 -7
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +24 -6
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +28 -7
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +2 -4
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +2 -2
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +2 -2
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts +3 -2
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +11 -10
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.d.ts +5 -3
- package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +4 -3
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.d.ts +1 -0
- package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
- package/lib/esm/tools/EditManipulator.js +1 -0
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/EventController.d.ts +1 -0
- package/lib/esm/tools/EventController.d.ts.map +1 -1
- package/lib/esm/tools/EventController.js +1 -0
- package/lib/esm/tools/EventController.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.d.ts +4 -0
- package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +7 -0
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.d.ts +3 -0
- package/lib/esm/tools/SelectTool.d.ts.map +1 -1
- package/lib/esm/tools/SelectTool.js +3 -0
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts +41 -6
- package/lib/esm/tools/Tool.d.ts.map +1 -1
- package/lib/esm/tools/Tool.js +27 -4
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts +16 -22
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +48 -9
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.d.ts +7 -0
- package/lib/esm/tools/ToolAssistance.d.ts.map +1 -1
- package/lib/esm/tools/ToolAssistance.js +3 -0
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.d.ts +3 -0
- package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
- package/lib/esm/tools/ToolSettings.js +3 -0
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts +3 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +9 -5
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +34 -25
- package/lib/cjs/TwoWayViewportSync.d.ts +0 -51
- package/lib/cjs/TwoWayViewportSync.d.ts.map +0 -1
- package/lib/cjs/TwoWayViewportSync.js +0 -87
- package/lib/cjs/TwoWayViewportSync.js.map +0 -1
- package/lib/cjs/extension/ExtensionLoader.d.ts +0 -26
- package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionLoader.js +0 -10
- package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
- package/lib/cjs/extension/extensions.d.ts +0 -19
- package/lib/cjs/extension/extensions.d.ts.map +0 -1
- package/lib/cjs/extension/extensions.js +0 -36
- package/lib/cjs/extension/extensions.js.map +0 -1
- package/lib/cjs/tile/map/ArcGisTokenGenerator.d.ts +0 -35
- package/lib/cjs/tile/map/ArcGisTokenGenerator.d.ts.map +0 -1
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js +0 -116
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +0 -1
- package/lib/cjs/tile/map/ArcGisTokenManager.d.ts +0 -13
- package/lib/cjs/tile/map/ArcGisTokenManager.d.ts.map +0 -1
- package/lib/cjs/tile/map/ArcGisTokenManager.js +0 -39
- package/lib/cjs/tile/map/ArcGisTokenManager.js.map +0 -1
- package/lib/esm/TwoWayViewportSync.d.ts +0 -51
- package/lib/esm/TwoWayViewportSync.d.ts.map +0 -1
- package/lib/esm/TwoWayViewportSync.js +0 -82
- package/lib/esm/TwoWayViewportSync.js.map +0 -1
- package/lib/esm/extension/ExtensionLoader.d.ts +0 -26
- package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionLoader.js +0 -9
- package/lib/esm/extension/ExtensionLoader.js.map +0 -1
- package/lib/esm/extension/extensions.d.ts +0 -19
- package/lib/esm/extension/extensions.d.ts.map +0 -1
- package/lib/esm/extension/extensions.js +0 -24
- package/lib/esm/extension/extensions.js.map +0 -1
- package/lib/esm/tile/map/ArcGisTokenGenerator.d.ts +0 -35
- package/lib/esm/tile/map/ArcGisTokenGenerator.d.ts.map +0 -1
- package/lib/esm/tile/map/ArcGisTokenGenerator.js +0 -112
- package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +0 -1
- package/lib/esm/tile/map/ArcGisTokenManager.d.ts +0 -13
- package/lib/esm/tile/map/ArcGisTokenManager.d.ts.map +0 -1
- package/lib/esm/tile/map/ArcGisTokenManager.js +0 -35
- package/lib/esm/tile/map/ArcGisTokenManager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAE9E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAehE;
|
|
1
|
+
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAE9E,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAehE;AAqPD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA4DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAa7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAwBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AA4DD,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAoBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAG/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CA0ClG"}
|
|
@@ -111,8 +111,6 @@ function addFeatureIndex(vert) {
|
|
|
111
111
|
vert.addGlobal("g_featureIndex", 4 /* Vec3 */);
|
|
112
112
|
vert.addFunction(Decode_1.decodeUint24);
|
|
113
113
|
vert.addFunction(getFeatureIndex(vert));
|
|
114
|
-
if (vert.usesVertexTable && !vert.usesInstancedGeometry)
|
|
115
|
-
(0, Vertex_1.addFeatureAndMaterialLookup)(vert);
|
|
116
114
|
}
|
|
117
115
|
// Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa
|
|
118
116
|
// (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { OvrFlags, Pass, RenderOrder, TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariablePrecision, VariableType, VertexShaderBuilder,\r\n VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { FeatureMode, TechniqueFlags } from \"../TechniqueFlags\";\r\nimport { addExtractNthBit, addEyeSpace, addUInt32s } from \"./Common\";\r\nimport { decodeDepthRgb, decodeUint24 } from \"./Decode\";\r\nimport { addWindowToTexCoords, assignFragColor, computeLinearDepth } from \"./Fragment\";\r\nimport { addLookupTable } from \"./LookupTable\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addAlpha, addFeatureAndMaterialLookup, addLineWeight, replaceLineCode, replaceLineWeight } from \"./Vertex\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FeatureSymbologyOptions {\r\n None = 0,\r\n Weight = 1 << 0,\r\n LineCode = 1 << 1,\r\n HasOverrides = 1 << 2,\r\n Color = 1 << 3,\r\n Alpha = 1 << 4,\r\n\r\n Surface = HasOverrides | Color | Alpha,\r\n Point = HasOverrides | Color | Weight | Alpha,\r\n Linear = HasOverrides | Color | Weight | LineCode | Alpha,\r\n}\r\n\r\n/** @internal */\r\nexport function addOvrFlagConstants(builder: ShaderBuilder): void {\r\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\r\n builder.addBitFlagConstant(\"kOvrBit_Visibility\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Rgb\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_Alpha\", 2);\r\n builder.addBitFlagConstant(\"kOvrBit_IgnoreMaterial\", 3);\r\n builder.addBitFlagConstant(\"kOvrBit_Flashed\", 4);\r\n builder.addBitFlagConstant(\"kOvrBit_NonLocatable\", 5);\r\n builder.addBitFlagConstant(\"kOvrBit_LineCode\", 6);\r\n builder.addBitFlagConstant(\"kOvrBit_Weight\", 7);\r\n\r\n // NB: We treat the 16-bit flags as 2 bytes - so subtract 8 from each of these bit indices.\r\n builder.addBitFlagConstant(\"kOvrBit_Hilited\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Emphasized\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_ViewIndependentTransparency\", 2);\r\n}\r\n\r\nconst computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;\r\nconst computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;\r\nfunction computeFeatureIndex(vertex: VertexShaderBuilder): string {\r\n if (vertex.usesInstancedGeometry) {\r\n vertex.addUniform(\"u_patternFeatureId\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_patternFeatureId\", (uniform, params) => {\r\n const id = params.geometry.asInstanced?.patternFeatureId;\r\n assert(undefined !== id);\r\n if (id)\r\n uniform.setUniform3fv(id);\r\n });\r\n });\r\n\r\n return `g_featureIndex = ${computeInstanceFeatureIndex};`;\r\n }\r\n\r\n return vertex.usesVertexTable ? `g_featureIndex = ${computeLUTFeatureIndex};` : \"\";\r\n}\r\nfunction getFeatureIndex(vertex: VertexShaderBuilder): string {\r\n return `\r\nfloat getFeatureIndex() {\r\n ${computeFeatureIndex(vertex)}\r\n return decodeUInt24(g_featureIndex);\r\n}\r\n`;\r\n}\r\n\r\n// Returns true if the specified flag is not globally overridden and is set in flags\r\nconst nthFeatureBitSet = `\r\nbool nthFeatureBitSet(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n);\r\n}\r\n`;\r\nconst nthFeatureBitSet2 = `\r\nbool nthFeatureBitSet(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n);\r\n}\r\n`;\r\n\r\n// Returns 1.0 if the specified flag is not globally overridden and is set in flags\r\nconst extractNthFeatureBit = `\r\nfloat extractNthFeatureBit(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\nconst extractNthFeatureBit2 = `\r\nfloat extractNthFeatureBit(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\n\r\nconst computeFeatureTextureCoords = `\r\nvec2 computeFeatureTextureCoords() { return compute_feature_coords(getFeatureIndex()); }\r\n`;\r\n\r\nconst getFirstFeatureRgba = `\r\nvec4 getFirstFeatureRgba() {\r\n feature_texCoord = computeFeatureTextureCoords();\r\n return TEXTURE(u_featureLUT, feature_texCoord);\r\n}\r\n`;\r\n\r\nconst getSecondFeatureRgba = `\r\nvec4 getSecondFeatureRgba() {\r\n vec2 coord = feature_texCoord;\r\n coord.x += g_feature_stepX;\r\n return TEXTURE(u_featureLUT, coord);\r\n}\r\n`;\r\n\r\nconst computeLineWeight = `\r\nfloat computeLineWeight() {\r\n return linear_feature_overrides.x > 0.5 ? linear_feature_overrides.y : g_lineWeight;\r\n}\r\n`;\r\n\r\nconst computeLineCode = `\r\nfloat computeLineCode() {\r\n return linear_feature_overrides.z > 0.5 ? linear_feature_overrides.w : g_lineCode;\r\n}\r\n`;\r\n\r\nfunction addFeatureIndex(vert: VertexShaderBuilder): void {\r\n vert.addGlobal(\"g_featureIndex\", VariableType.Vec3);\r\n\r\n vert.addFunction(decodeUint24);\r\n vert.addFunction(getFeatureIndex(vert));\r\n\r\n if (vert.usesVertexTable && !vert.usesInstancedGeometry)\r\n addFeatureAndMaterialLookup(vert);\r\n}\r\n\r\n// Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa\r\n// (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)\r\nconst checkVertexDiscard = `\r\n if (feature_invisible)\r\n return true;\r\n\r\n bool hasAlpha = 1.0 == u_hasAlpha;\r\n if (feature_alpha > 0.0)\r\n hasAlpha = feature_alpha <= s_maxAlpha;\r\n\r\n int discardFlags = u_transparencyDiscardFlags;\r\n bool discardViewIndependentDuringOpaque = discardFlags >= 4;\r\n if (discardViewIndependentDuringOpaque)\r\n discardFlags = discardFlags - 4;\r\n\r\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\r\n bool discardTranslucentDuringOpaquePass = 1 == discardFlags || 3 == discardFlags || (feature_viewIndependentTransparency && discardViewIndependentDuringOpaque);\r\n if (isOpaquePass && !discardTranslucentDuringOpaquePass)\r\n return false;\r\n\r\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\r\n bool discardOpaqueDuringTranslucentPass = 2 == discardFlags || 3 == discardFlags;\r\n if (isTranslucentPass && !discardOpaqueDuringTranslucentPass)\r\n return false;\r\n\r\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\r\n`;\r\n\r\nfunction addTransparencyDiscardFlags(vert: VertexShaderBuilder) {\r\n // Even when transparency view flag is off, we need to allow features to override transparency, because it\r\n // is used when applying transparency threshold. However, we need to ensure we don't DISCARD transparent stuff during\r\n // opaque pass if transparency is off (see checkVertexDiscard). Especially important for transparency threshold and readPixels().\r\n // Also, if we override raster text to be opaque we must still draw it in the translucent pass.\r\n // Finally, if the transparency override is view-independent (i.e., ignores view flags and render mode) we want to discard it during opaque pass\r\n // unless we're reading pixels.\r\n // So we have a bit field:\r\n // 1: discard translucent during opaque.\r\n // 2: discard opaque during translucent.\r\n // 4: discard view-independent translucent during opaque.\r\n vert.addUniform(\"u_transparencyDiscardFlags\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyDiscardFlags\", (uniform, params) => {\r\n let flags = 0;\r\n\r\n // Textured surfaces may render in both passes. If so, it's up to fragment shader to handle discard.\r\n const pass = params.geometry.getPass(params.target);\r\n if (!Pass.rendersOpaqueAndTranslucent(pass)) {\r\n // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.\r\n if (!params.target.isReadPixelsInProgress)\r\n flags = params.target.currentViewFlags.transparency ? 1 : 4;\r\n\r\n if (!params.geometry.alwaysRenderTranslucent)\r\n flags += 2;\r\n }\r\n\r\n uniform.setUniform1i(flags);\r\n });\r\n });\r\n}\r\n\r\nfunction addCommon(builder: ProgramBuilder, mode: FeatureMode, opts: FeatureSymbologyOptions, wantGlobalOvrFlags = true): boolean {\r\n if (FeatureMode.None === mode)\r\n return false;\r\n\r\n const vert = builder.vert;\r\n addFeatureIndex(vert);\r\n\r\n const haveOverrides = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.HasOverrides);\r\n if (!haveOverrides) {\r\n // For pick output we must compute g_featureIndex...\r\n if (FeatureMode.Pick === mode)\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureIndex(vert));\r\n\r\n return true;\r\n }\r\n\r\n const wantWeight = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Weight);\r\n const wantLineCode = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.LineCode);\r\n const wantColor = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Color);\r\n const wantAlpha = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Alpha);\r\n assert(wantColor || !wantAlpha);\r\n\r\n addExtractNthBit(vert);\r\n addOvrFlagConstants(vert);\r\n\r\n vert.addGlobal(\"linear_feature_overrides\", VariableType.Vec4, \"vec4(0.0)\");\r\n vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\r\n\r\n if (wantWeight || wantLineCode) {\r\n if (wantLineCode)\r\n replaceLineCode(vert, computeLineCode);\r\n\r\n if (wantWeight) {\r\n replaceLineWeight(vert, computeLineWeight);\r\n }\r\n }\r\n\r\n if (wantGlobalOvrFlags) {\r\n let bitmapType;\r\n if (System.instance.capabilities.isWebGL2) {\r\n vert.addFunction(nthFeatureBitSet2);\r\n vert.addFunction(extractNthFeatureBit2);\r\n bitmapType = VariableType.Uint;\r\n } else {\r\n vert.addFunction(nthFeatureBitSet);\r\n vert.addFunction(extractNthFeatureBit);\r\n bitmapType = VariableType.Float;\r\n }\r\n vert.addUniform(\"u_globalOvrFlags\", bitmapType, (prog) => {\r\n prog.addGraphicUniform(\"u_globalOvrFlags\", (uniform, params) => {\r\n let flags = 0.0;\r\n if (params.geometry.isEdge) {\r\n const settings = params.target.currentEdgeSettings;\r\n flags = settings.computeOvrFlags(params.renderPass, params.target.currentViewFlags);\r\n }\r\n\r\n if (!params.geometry.allowColorOverride)\r\n flags |= OvrFlags.Rgba;\r\n\r\n uniform.setUniformBitflags(flags);\r\n });\r\n });\r\n }\r\n\r\n addLookupTable(vert, \"feature\", \"2.0\");\r\n vert.addGlobal(\"feature_texCoord\", VariableType.Vec2);\r\n vert.addFunction(computeFeatureTextureCoords);\r\n vert.addFunction(getFirstFeatureRgba);\r\n\r\n vert.addUniform(\"u_featureLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_featureLUT\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUT(uniform);\r\n });\r\n });\r\n vert.addUniform(\"u_featureParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_featureParams\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUTParams(uniform);\r\n });\r\n });\r\n\r\n if (wantColor) {\r\n vert.addFunction(getSecondFeatureRgba);\r\n if (wantAlpha) {\r\n addMaxAlpha(vert);\r\n addRenderPass(vert);\r\n addAlpha(vert);\r\n addTransparencyDiscardFlags(vert);\r\n\r\n vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function addMaxAlpha(builder: ShaderBuilder): void {\r\n const minTransparency = 15.0; // NB: See DisplayParams.getMinTransparency() - this must match!\r\n const maxAlpha = (255 - minTransparency) / 255;\r\n builder.addConstant(\"s_maxAlpha\", VariableType.Float, maxAlpha.toString());\r\n}\r\n\r\n/** @internal */\r\nfunction addEmphasisFlags(builder: ShaderBuilder): void {\r\n builder.addBitFlagConstant(\"kEmphBit_Hilite\", 0);\r\n builder.addBitFlagConstant(\"kEmphBit_Emphasize\", 1);\r\n builder.addBitFlagConstant(\"kEmphBit_Flash\", 2);\r\n builder.addBitFlagConstant(\"kEmphBit_NonLocatable\", 3);\r\n builder.addConstant(\"kEmphFlag_Hilite\", VariableType.Float, \"1.0\");\r\n builder.addConstant(\"kEmphFlag_Emphasize\", VariableType.Float, \"2.0\");\r\n builder.addConstant(\"kEmphFlag_Flash\", VariableType.Float, \"4.0\");\r\n builder.addConstant(\"kEmphFlag_NonLocatable\", VariableType.Float, \"8.0\");\r\n}\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder, wantFlashMode: boolean): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindFeatureSettings(uniform);\r\n });\r\n });\r\n\r\n if (wantFlashMode) {\r\n frag.addUniform(\"u_flash_mode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_flash_mode\", (uniform, params) => {\r\n uniform.setUniform1f(params.geometry.getFlashMode(params));\r\n });\r\n });\r\n }\r\n}\r\n\r\n// If feature is not hilited, discard it.\r\nconst checkVertexHiliteDiscard = \"return 0.0 == v_feature_hilited;\";\r\n\r\n// The result is a mask in which each pixel's r=1 if hilited and g=1 if emphasized (and not hilited).\r\nconst computeHiliteColor = `\r\n float flags = floor(v_feature_hilited + 0.5);\r\n float hilited = extractNthBit(flags, kEmphBit_Hilite);\r\n float emphasized = extractNthBit(flags, kEmphBit_Emphasize);\r\n return vec4(hilited, emphasized, 0.0, 0.0);\r\n`;\r\n\r\nconst computeSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeHiliteColor}`;\r\n\r\nconst computeHiliteOverrides = `\r\n vec4 value = getFirstFeatureRgba();\r\n float emphFlags = value.g * 256.0;\r\n v_feature_hilited = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n`;\r\n\r\nconst computeHiliteOverridesWithWeight = `${computeHiliteOverrides}\r\n float flags = value.r * 256.0;\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.a * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.b * 256.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n addHiliter(builder, wantWeight);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeSurfaceHiliteColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n let opts = FeatureSymbologyOptions.HasOverrides;\r\n if (wantWeight)\r\n opts |= FeatureSymbologyOptions.Weight; // hiliter never needs line code or color...\r\n\r\n if (!addCommon(builder, FeatureMode.Overrides, opts, wantWeight))\r\n return;\r\n\r\n builder.addVarying(\"v_feature_hilited\", VariableType.Float);\r\n\r\n addEmphasisFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.ComputeFeatureOverrides, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexHiliteDiscard);\r\n\r\n addEmphasisFlags(builder.frag);\r\n addExtractNthBit(builder.frag);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteColor);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\nfunction addSamplers(frag: FragmentShaderBuilder, testFeatureId: boolean) {\r\n if (testFeatureId) {\r\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickFeatureId\", (uniform, params) => {\r\n params.target.compositor.featureIds.bindSampler(uniform, TextureUnit.PickFeatureId);\r\n });\r\n }, VariablePrecision.High);\r\n }\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n params.target.compositor.depthAndOrder.bindSampler(uniform, TextureUnit.PickDepthAndOrder);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\n/** @internal */\r\nexport const readDepthAndOrder = `\r\nvec2 readDepthAndOrder(vec2 tc) {\r\n vec4 pdo = TEXTURE(u_pickDepthAndOrder, tc);\r\n float order = floor(pdo.x * 16.0 + 0.5);\r\n return vec2(order, decodeDepthRgb(pdo.yzw));\r\n}\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscard = `\r\n float factor = float(u_renderPass <= kRenderPass_Translucent); // never discard during specific passes\r\n float term = 0.0;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n term += float(depthAndOrder.x > u_renderOrder && abs(depthAndOrder.y - surfaceDepth) < 4.0e-5);\r\n return factor * term > 0.0;\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscardWithFeatureID = `\r\n // No normals => unlt => reality model => no edges.\r\n if (u_renderPass > kRenderPass_Translucent || u_renderPass == kRenderPass_Layers || !u_surfaceFlags[kSurfaceBitIndex_HasNormals])\r\n return false;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n if (depthAndOrder.x <= u_renderOrder)\r\n return false;\r\n\r\n // Calculate depthTolerance for letting edges show through their own surfaces\r\n float perspectiveFrustum = step(kFrustumType_Perspective, u_frustum.z);\r\n vec4 eyeDirAndWidthFactor = mix(vec4(0.0, 0.0, 1.0, u_pixelWidthFactor), vec4(normalize(-v_eyeSpace.xyz), -v_eyeSpace.z * u_pixelWidthFactor), perspectiveFrustum);\r\n vec3 eyeDir = eyeDirAndWidthFactor.xyz;\r\n float dtWidthFactor = eyeDirAndWidthFactor.w;\r\n\r\n // Compute depth tolerance based on angle of triangle to screen\r\n float isSilhouette = float(depthAndOrder.x == kRenderOrder_Silhouette);\r\n float dSq = dot(eyeDir, v_n);\r\n dSq *= 0.5 + 0.4 * (1.0 - isSilhouette);\r\n dSq = dSq * dSq;\r\n dSq = max(dSq, 0.0001);\r\n dSq = min(dSq, 0.999);\r\n\r\n float depthTolerance = dtWidthFactor * v_lineWeight * sqrt((1.0 - dSq) / dSq);\r\n depthTolerance *= 1.0 + .333 * isSilhouette;\r\n\r\n // Make sure stuff behind camera doesn't get pushed in front of it\r\n depthTolerance = max(depthTolerance, 0.0);\r\n\r\n // Convert depthTolerance from eye space to linear depth\r\n depthTolerance /= (u_frustum.y - u_frustum.x);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n float depthDelta = abs(depthAndOrder.y - surfaceDepth);\r\n if (depthDelta > depthTolerance)\r\n return false;\r\n\r\n // Does pick buffer contain same feature?\r\n vec4 featId = TEXTURE(u_pickFeatureId, tc);\r\n\r\n // Converting to ints to test since varying floats can be interpolated incorrectly\r\n ivec4 featId_i = ivec4(featId * 255.0 + 0.5);\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n if (featId_i == feature_id_i)\r\n return true;\r\n\r\n // In 2d, display priority controls draw order of different elements.\r\n if (!u_checkInterElementDiscard)\r\n return false;\r\n\r\n // Use a tighter tolerance for two different elements since we're only fighting roundoff error.\r\n return depthDelta <= 4.0e-5;\r\n`;\r\n\r\n// This only adds the constants that are actually used in shader code.\r\nexport function addRenderOrderConstants(builder: ShaderBuilder) {\r\n builder.addConstant(\"kRenderOrder_BlankingRegion\", VariableType.Float, RenderOrder.BlankingRegion.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Linear\", VariableType.Float, RenderOrder.Linear.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Edge\", VariableType.Float, RenderOrder.Edge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarEdge\", VariableType.Float, RenderOrder.PlanarEdge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Silhouette\", VariableType.Float, RenderOrder.Silhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarSilhouette\", VariableType.Float, RenderOrder.PlanarSilhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_UnlitSurface\", VariableType.Float, RenderOrder.UnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_LitSurface\", VariableType.Float, RenderOrder.LitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarUnlitSurface\", VariableType.Float, RenderOrder.PlanarUnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarLitSurface\", VariableType.Float, RenderOrder.PlanarLitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarBit\", VariableType.Float, RenderOrder.PlanarBit.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Background\", VariableType.Float, RenderOrder.Background.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addRenderOrder(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderOrder\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_renderOrder\", (uniform, params) => {\r\n const order = params.target.drawingBackgroundForReadPixels ? RenderOrder.Background : params.geometry.renderOrder;\r\n uniform.setUniform1f(order);\r\n });\r\n });\r\n}\r\n\r\nfunction addPixelWidthFactor(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_pixelWidthFactor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_pixelWidthFactor\", (uniform, params) => {\r\n params.target.uniforms.bindPixelWidthFactor(uniform);\r\n });\r\n });\r\n}\r\n\r\nfunction addBatchId(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_batch_id\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_batch_id\", (uniform, params) => {\r\n params.target.uniforms.batch.bindBatchId(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\nconst computeIdVert = `v_feature_id = addUInt32s(u_batch_id, vec4(g_featureIndex, 0.0)) / 255.0;`;\r\nconst computeIdFrag = `\r\n vec4 featureIndex = vec4(floor(v_feature_index + 0.5), 0.0);\r\n feature_id = addUInt32s(u_batch_id, featureIndex) / 255.0;\r\n`;\r\n\r\n/** @internal */\r\nexport function addFeatureId(builder: ProgramBuilder, computeInFrag: boolean) {\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n frag.addGlobal(\"feature_id\", VariableType.Vec4);\r\n if (!computeInFrag) {\r\n vert.addFunction(addUInt32s);\r\n addBatchId(vert);\r\n builder.addInlineComputedVarying(\"v_feature_id\", VariableType.Vec4, computeIdVert);\r\n\r\n frag.addInitializer(\"feature_id = v_feature_id;\");\r\n } else {\r\n frag.addFunction(addUInt32s);\r\n builder.addInlineComputedVarying(\"v_feature_index\", VariableType.Vec3, \"v_feature_index = g_featureIndex;\");\r\n\r\n addBatchId(frag);\r\n frag.addInitializer(computeIdFrag);\r\n }\r\n}\r\n\r\n// Discard vertex if transparency is less than the display style's transparency threshold, IFF the specific bit is set. The bit is set if:\r\n// - Solid Fill or Hidden Line mode; or\r\n// - Shaded mode and generating shadow map (sufficiently transparent surfaces receive but do not cast shadows).\r\nconst isBelowTransparencyThreshold = `\r\n return v_color.a < u_transparencyThreshold && u_surfaceFlags[kSurfaceBitIndex_TransparencyThreshold];\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceDiscard(builder: ProgramBuilder, flags: TechniqueFlags) {\r\n const feat = flags.featureMode;\r\n const isEdgeTestNeeded = flags.isEdgeTestNeeded;\r\n const isClassified = flags.isClassified;\r\n const computeIdInFrag = !flags.isTranslucent && 0 !== flags.isClassified && FeatureMode.Overrides === feat;\r\n\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n vert.set(VertexShaderComponent.CheckForLateDiscard, isBelowTransparencyThreshold);\r\n vert.addUniform(\"u_transparencyThreshold\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyThreshold\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.currentTransparencyThreshold);\r\n });\r\n });\r\n\r\n if (isEdgeTestNeeded) {\r\n addWindowToTexCoords(frag);\r\n\r\n if (!flags.isHilite)\r\n addEyeSpace(builder);\r\n\r\n if (FeatureMode.None === feat) {\r\n addSamplers(frag, false);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscard);\r\n } else {\r\n frag.addUniform(\"u_checkInterElementDiscard\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_checkInterElementDiscard\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.uniforms.branch.top.is3d ? 1 : 0);\r\n });\r\n });\r\n\r\n addFeatureIndex(vert);\r\n addLineWeight(vert);\r\n\r\n addSamplers(frag, true);\r\n addRenderOrderConstants(frag);\r\n addPixelWidthFactor(frag);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscardWithFeatureID);\r\n\r\n builder.addInlineComputedVarying(\"v_lineWeight\", VariableType.Float, \"v_lineWeight = computeLineWeight();\");\r\n addFeatureId(builder, computeIdInFrag);\r\n }\r\n\r\n addRenderOrder(frag);\r\n addRenderPass(frag);\r\n } else if (isClassified && FeatureMode.None !== feat) {\r\n addFeatureIndex(vert);\r\n addFeatureId(builder, computeIdInFrag);\r\n\r\n if (!flags.isTranslucent)\r\n addRenderOrder(frag);\r\n }\r\n}\r\n\r\n// bool feature_invisible = false;\r\n// vec3 feature_rgb; // if not overridden, .r < 0; else rgb color override\r\n// float feature_alpha // alpha if overridden, else < 0\r\n// varying float v_feature_emphasis // bitmask - see kEmph_* constants\r\n// vec4 linear_feature_overrides; // x: weight overridden y: weight z: line code overridden w: line code\r\nconst computeFeatureOverrides = `\r\n feature_rgb = vec3(-1.0);\r\n feature_alpha = -1.0;\r\n vec4 value = getFirstFeatureRgba();\r\n\r\n float emphFlags = value.y * 256.0;\r\n v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n\r\n float flags = value.x * 256.0;\r\n if (0.0 == flags)\r\n return; // nothing overridden for this feature\r\n\r\n bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);\r\n v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));\r\n bool invisible = nthFeatureBitSet(flags, kOvrBit_Visibility);\r\n feature_invisible = invisible || nonLocatable;\r\n if (feature_invisible)\r\n return;\r\n\r\n bool rgbOverridden = nthFeatureBitSet(flags, kOvrBit_Rgb);\r\n bool alphaOverridden = nthFeatureBitSet(flags, kOvrBit_Alpha);\r\n if (alphaOverridden || rgbOverridden) {\r\n vec4 rgba = getSecondFeatureRgba();\r\n if (rgbOverridden)\r\n feature_rgb = rgba.rgb;\r\n\r\n if (alphaOverridden) {\r\n feature_alpha = rgba.a;\r\n feature_viewIndependentTransparency = nthFeatureBitSet(emphFlags, kOvrBit_ViewIndependentTransparency);\r\n }\r\n }\r\n\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.w * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.z * 256.0);\r\n\r\n feature_ignore_material = nthFeatureBitSet(flags, kOvrBit_IgnoreMaterial);\r\n use_material = use_material && !feature_ignore_material;\r\n\r\n v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nconst applyFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, feature_rgb.rgb, step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature, else mix based on u_overrrideColorMix.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nexport const mixFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, mix(baseColor.rgb, feature_rgb.rgb, u_overrideColorMix), step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n `;\r\n\r\nconst applyFlash = `\r\n float flashHilite = floor(v_feature_emphasis + 0.5);\r\n return doApplyFlash(flashHilite, baseColor);\r\n`;\r\n\r\nconst doApplyFlash = `\r\nvec4 doApplyFlash(float flags, vec4 baseColor) {\r\n bool isFlashed = nthBitSet(flags, kEmphBit_Flash);\r\n bool isHilited = nthBitSet(flags, kEmphBit_Hilite);\r\n bool isEmphasized = !isHilited && nthBitSet(flags, kEmphBit_Emphasize);\r\n vec3 hiliteRgb = isEmphasized ? u_hilite_settings[1] : u_hilite_settings[0];\r\n\r\n isHilited = isEmphasized || isHilited;\r\n float hiliteRatio = isHilited ? (isEmphasized ? u_hilite_settings[2][1] : u_hilite_settings[2][0]) : 0.0;\r\n baseColor.rgb = mix(baseColor.rgb, hiliteRgb, hiliteRatio);\r\n\r\n const float maxBrighten = 0.2;\r\n float brighten = isFlashed ? u_flash_intensity * maxBrighten : 0.0;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n\r\n const float maxTween = 0.75;\r\n float hiliteFraction = isFlashed ? u_flash_intensity * maxTween : 0.0;\r\n vec3 tweenRgb = baseColor.rgb * (1.0 - hiliteFraction);\r\n tweenRgb += u_hilite_settings[0] * hiliteFraction;\r\n\r\n return vec4(mix(tweenRgb, brightRgb, u_flash_mode), baseColor.a);\r\n}\r\n`;\r\n\r\nconst doClassifierFlash = `\r\nvec4 applyClassifierFlash(vec4 baseColor) {\r\n const float maxBrighten = 0.2;\r\n float brighten = u_flash_intensity * maxBrighten;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n return vec4(brightRgb, baseColor.a);\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addClassifierFlash(frag: FragmentShaderBuilder): void {\r\n addFlashIntensity(frag);\r\n addHiliteSettings(frag, false);\r\n frag.addFunction(doClassifierFlash);\r\n}\r\n\r\nfunction addFlashIntensity(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_flash_intensity\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_flash_intensity\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.flashIntensity);\r\n });\r\n });\r\n}\r\n\r\nfunction addApplyFlash(frag: FragmentShaderBuilder) {\r\n addHiliteSettings(frag, true);\r\n addEmphasisFlags(frag);\r\n\r\n addExtractNthBit(frag);\r\n frag.addFunction(doApplyFlash);\r\n frag.set(FragmentShaderComponent.ApplyFlash, applyFlash);\r\n addFlashIntensity(frag);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeatureSymbology(builder: ProgramBuilder, feat: FeatureMode, opts: FeatureSymbologyOptions): void {\r\n if (!addCommon(builder, feat, opts) || FeatureSymbologyOptions.None === opts)\r\n return;\r\n\r\n assert((FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color) === (opts & (FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color)));\r\n\r\n builder.addGlobal(\"feature_rgb\", VariableType.Vec3);\r\n builder.addGlobal(\"feature_alpha\", VariableType.Float);\r\n builder.addVarying(\"v_feature_emphasis\", VariableType.Float);\r\n\r\n const vert = builder.vert;\r\n vert.addGlobal(\"feature_invisible\", VariableType.Boolean, \"false\");\r\n vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addEmphasisFlags(vert);\r\n vert.addGlobal(\"use_material\", VariableType.Boolean, \"true\");\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureOverrides);\r\n vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n\r\n/** If we're running the hilite shader for a uniform feature, it follows that the feature must be hilited.\r\n * So the hilite shader simply needs to output '1' for every fragment.\r\n * @internal\r\n */\r\nexport function addUniformHiliter(builder: ProgramBuilder): void {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, `return vec4(1.0, 0.0, 0.0, 0.0);`);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\n/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.\r\n * The following symbology overrides are supported:\r\n * - Visibility - implcitly, because if the feature is invisible its geometry will never be drawn.\r\n * - Flash\r\n * - Hilite\r\n * - Color and Transparency- only for point clouds currently which set addFeatureColor to true.\r\n * This shader could be simplified, but want to share code with the non-uniform versions...hence uniforms/globals with \"v_\" prefix typically used for varyings on no prefix...\r\n * @internal\r\n */\r\nexport function addUniformFeatureSymbology(builder: ProgramBuilder, addFeatureColor: boolean): void {\r\n builder.vert.addGlobal(\"g_featureIndex\", VariableType.Vec3, \"vec3(0.0)\", true);\r\n\r\n builder.frag.addUniform(\"v_feature_emphasis\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"v_feature_emphasis\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformSymbologyFlags(uniform);\r\n });\r\n });\r\n\r\n if (addFeatureColor) {\r\n builder.vert.addUniform(\"feature_rgb\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"feature_rgb\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformColorOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"feature_alpha\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"feature_alpha\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformTransparencyOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n addAlpha(builder.vert);\r\n addMaxAlpha(builder.vert);\r\n addRenderPass(builder.vert);\r\n addTransparencyDiscardFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n } else {\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, \"return feature_invisible;\");\r\n }\r\n\r\n // Non-Locatable... Discard if picking\r\n builder.vert.addUniform(\"feature_invisible\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"feature_invisible\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformNonLocatable(uniform, params.target.drawNonLocatable);\r\n });\r\n });\r\n\r\n builder.vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { OvrFlags, Pass, RenderOrder, TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariablePrecision, VariableType, VertexShaderBuilder,\r\n VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { FeatureMode, TechniqueFlags } from \"../TechniqueFlags\";\r\nimport { addExtractNthBit, addEyeSpace, addUInt32s } from \"./Common\";\r\nimport { decodeDepthRgb, decodeUint24 } from \"./Decode\";\r\nimport { addWindowToTexCoords, assignFragColor, computeLinearDepth } from \"./Fragment\";\r\nimport { addLookupTable } from \"./LookupTable\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addAlpha, addLineWeight, replaceLineCode, replaceLineWeight } from \"./Vertex\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FeatureSymbologyOptions {\r\n None = 0,\r\n Weight = 1 << 0,\r\n LineCode = 1 << 1,\r\n HasOverrides = 1 << 2,\r\n Color = 1 << 3,\r\n Alpha = 1 << 4,\r\n\r\n Surface = HasOverrides | Color | Alpha,\r\n Point = HasOverrides | Color | Weight | Alpha,\r\n Linear = HasOverrides | Color | Weight | LineCode | Alpha,\r\n}\r\n\r\n/** @internal */\r\nexport function addOvrFlagConstants(builder: ShaderBuilder): void {\r\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\r\n builder.addBitFlagConstant(\"kOvrBit_Visibility\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Rgb\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_Alpha\", 2);\r\n builder.addBitFlagConstant(\"kOvrBit_IgnoreMaterial\", 3);\r\n builder.addBitFlagConstant(\"kOvrBit_Flashed\", 4);\r\n builder.addBitFlagConstant(\"kOvrBit_NonLocatable\", 5);\r\n builder.addBitFlagConstant(\"kOvrBit_LineCode\", 6);\r\n builder.addBitFlagConstant(\"kOvrBit_Weight\", 7);\r\n\r\n // NB: We treat the 16-bit flags as 2 bytes - so subtract 8 from each of these bit indices.\r\n builder.addBitFlagConstant(\"kOvrBit_Hilited\", 0);\r\n builder.addBitFlagConstant(\"kOvrBit_Emphasized\", 1);\r\n builder.addBitFlagConstant(\"kOvrBit_ViewIndependentTransparency\", 2);\r\n}\r\n\r\nconst computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;\r\nconst computeInstanceFeatureIndex = `g_isAreaPattern ? u_patternFeatureId : a_featureId`;\r\nfunction computeFeatureIndex(vertex: VertexShaderBuilder): string {\r\n if (vertex.usesInstancedGeometry) {\r\n vertex.addUniform(\"u_patternFeatureId\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_patternFeatureId\", (uniform, params) => {\r\n const id = params.geometry.asInstanced?.patternFeatureId;\r\n assert(undefined !== id);\r\n if (id)\r\n uniform.setUniform3fv(id);\r\n });\r\n });\r\n\r\n return `g_featureIndex = ${computeInstanceFeatureIndex};`;\r\n }\r\n\r\n return vertex.usesVertexTable ? `g_featureIndex = ${computeLUTFeatureIndex};` : \"\";\r\n}\r\nfunction getFeatureIndex(vertex: VertexShaderBuilder): string {\r\n return `\r\nfloat getFeatureIndex() {\r\n ${computeFeatureIndex(vertex)}\r\n return decodeUInt24(g_featureIndex);\r\n}\r\n`;\r\n}\r\n\r\n// Returns true if the specified flag is not globally overridden and is set in flags\r\nconst nthFeatureBitSet = `\r\nbool nthFeatureBitSet(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n);\r\n}\r\n`;\r\nconst nthFeatureBitSet2 = `\r\nbool nthFeatureBitSet(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n);\r\n}\r\n`;\r\n\r\n// Returns 1.0 if the specified flag is not globally overridden and is set in flags\r\nconst extractNthFeatureBit = `\r\nfloat extractNthFeatureBit(float flags, float n) {\r\n return !nthBitSet(u_globalOvrFlags, n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\nconst extractNthFeatureBit2 = `\r\nfloat extractNthFeatureBit(float flags, uint n) {\r\n return 0u == (u_globalOvrFlags & n) && nthBitSet(flags, n) ? 1.0 : 0.0;\r\n}\r\n`;\r\n\r\nconst computeFeatureTextureCoords = `\r\nvec2 computeFeatureTextureCoords() { return compute_feature_coords(getFeatureIndex()); }\r\n`;\r\n\r\nconst getFirstFeatureRgba = `\r\nvec4 getFirstFeatureRgba() {\r\n feature_texCoord = computeFeatureTextureCoords();\r\n return TEXTURE(u_featureLUT, feature_texCoord);\r\n}\r\n`;\r\n\r\nconst getSecondFeatureRgba = `\r\nvec4 getSecondFeatureRgba() {\r\n vec2 coord = feature_texCoord;\r\n coord.x += g_feature_stepX;\r\n return TEXTURE(u_featureLUT, coord);\r\n}\r\n`;\r\n\r\nconst computeLineWeight = `\r\nfloat computeLineWeight() {\r\n return linear_feature_overrides.x > 0.5 ? linear_feature_overrides.y : g_lineWeight;\r\n}\r\n`;\r\n\r\nconst computeLineCode = `\r\nfloat computeLineCode() {\r\n return linear_feature_overrides.z > 0.5 ? linear_feature_overrides.w : g_lineCode;\r\n}\r\n`;\r\n\r\nfunction addFeatureIndex(vert: VertexShaderBuilder): void {\r\n vert.addGlobal(\"g_featureIndex\", VariableType.Vec3);\r\n\r\n vert.addFunction(decodeUint24);\r\n vert.addFunction(getFeatureIndex(vert));\r\n}\r\n\r\n// Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa\r\n// (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)\r\nconst checkVertexDiscard = `\r\n if (feature_invisible)\r\n return true;\r\n\r\n bool hasAlpha = 1.0 == u_hasAlpha;\r\n if (feature_alpha > 0.0)\r\n hasAlpha = feature_alpha <= s_maxAlpha;\r\n\r\n int discardFlags = u_transparencyDiscardFlags;\r\n bool discardViewIndependentDuringOpaque = discardFlags >= 4;\r\n if (discardViewIndependentDuringOpaque)\r\n discardFlags = discardFlags - 4;\r\n\r\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\r\n bool discardTranslucentDuringOpaquePass = 1 == discardFlags || 3 == discardFlags || (feature_viewIndependentTransparency && discardViewIndependentDuringOpaque);\r\n if (isOpaquePass && !discardTranslucentDuringOpaquePass)\r\n return false;\r\n\r\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\r\n bool discardOpaqueDuringTranslucentPass = 2 == discardFlags || 3 == discardFlags;\r\n if (isTranslucentPass && !discardOpaqueDuringTranslucentPass)\r\n return false;\r\n\r\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\r\n`;\r\n\r\nfunction addTransparencyDiscardFlags(vert: VertexShaderBuilder) {\r\n // Even when transparency view flag is off, we need to allow features to override transparency, because it\r\n // is used when applying transparency threshold. However, we need to ensure we don't DISCARD transparent stuff during\r\n // opaque pass if transparency is off (see checkVertexDiscard). Especially important for transparency threshold and readPixels().\r\n // Also, if we override raster text to be opaque we must still draw it in the translucent pass.\r\n // Finally, if the transparency override is view-independent (i.e., ignores view flags and render mode) we want to discard it during opaque pass\r\n // unless we're reading pixels.\r\n // So we have a bit field:\r\n // 1: discard translucent during opaque.\r\n // 2: discard opaque during translucent.\r\n // 4: discard view-independent translucent during opaque.\r\n vert.addUniform(\"u_transparencyDiscardFlags\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyDiscardFlags\", (uniform, params) => {\r\n let flags = 0;\r\n\r\n // Textured surfaces may render in both passes. If so, it's up to fragment shader to handle discard.\r\n const pass = params.geometry.getPass(params.target);\r\n if (!Pass.rendersOpaqueAndTranslucent(pass)) {\r\n // During readPixels() we force transparency off. Make sure to ignore a Branch that turns it back on.\r\n if (!params.target.isReadPixelsInProgress)\r\n flags = params.target.currentViewFlags.transparency ? 1 : 4;\r\n\r\n if (!params.geometry.alwaysRenderTranslucent)\r\n flags += 2;\r\n }\r\n\r\n uniform.setUniform1i(flags);\r\n });\r\n });\r\n}\r\n\r\nfunction addCommon(builder: ProgramBuilder, mode: FeatureMode, opts: FeatureSymbologyOptions, wantGlobalOvrFlags = true): boolean {\r\n if (FeatureMode.None === mode)\r\n return false;\r\n\r\n const vert = builder.vert;\r\n addFeatureIndex(vert);\r\n\r\n const haveOverrides = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.HasOverrides);\r\n if (!haveOverrides) {\r\n // For pick output we must compute g_featureIndex...\r\n if (FeatureMode.Pick === mode)\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureIndex(vert));\r\n\r\n return true;\r\n }\r\n\r\n const wantWeight = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Weight);\r\n const wantLineCode = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.LineCode);\r\n const wantColor = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Color);\r\n const wantAlpha = FeatureSymbologyOptions.None !== (opts & FeatureSymbologyOptions.Alpha);\r\n assert(wantColor || !wantAlpha);\r\n\r\n addExtractNthBit(vert);\r\n addOvrFlagConstants(vert);\r\n\r\n vert.addGlobal(\"linear_feature_overrides\", VariableType.Vec4, \"vec4(0.0)\");\r\n vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\r\n\r\n if (wantWeight || wantLineCode) {\r\n if (wantLineCode)\r\n replaceLineCode(vert, computeLineCode);\r\n\r\n if (wantWeight) {\r\n replaceLineWeight(vert, computeLineWeight);\r\n }\r\n }\r\n\r\n if (wantGlobalOvrFlags) {\r\n let bitmapType;\r\n if (System.instance.capabilities.isWebGL2) {\r\n vert.addFunction(nthFeatureBitSet2);\r\n vert.addFunction(extractNthFeatureBit2);\r\n bitmapType = VariableType.Uint;\r\n } else {\r\n vert.addFunction(nthFeatureBitSet);\r\n vert.addFunction(extractNthFeatureBit);\r\n bitmapType = VariableType.Float;\r\n }\r\n vert.addUniform(\"u_globalOvrFlags\", bitmapType, (prog) => {\r\n prog.addGraphicUniform(\"u_globalOvrFlags\", (uniform, params) => {\r\n let flags = 0.0;\r\n if (params.geometry.isEdge) {\r\n const settings = params.target.currentEdgeSettings;\r\n flags = settings.computeOvrFlags(params.renderPass, params.target.currentViewFlags);\r\n }\r\n\r\n if (!params.geometry.allowColorOverride)\r\n flags |= OvrFlags.Rgba;\r\n\r\n uniform.setUniformBitflags(flags);\r\n });\r\n });\r\n }\r\n\r\n addLookupTable(vert, \"feature\", \"2.0\");\r\n vert.addGlobal(\"feature_texCoord\", VariableType.Vec2);\r\n vert.addFunction(computeFeatureTextureCoords);\r\n vert.addFunction(getFirstFeatureRgba);\r\n\r\n vert.addUniform(\"u_featureLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_featureLUT\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUT(uniform);\r\n });\r\n });\r\n vert.addUniform(\"u_featureParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_featureParams\", (uniform, params) => {\r\n params.target.uniforms.batch.bindLUTParams(uniform);\r\n });\r\n });\r\n\r\n if (wantColor) {\r\n vert.addFunction(getSecondFeatureRgba);\r\n if (wantAlpha) {\r\n addMaxAlpha(vert);\r\n addRenderPass(vert);\r\n addAlpha(vert);\r\n addTransparencyDiscardFlags(vert);\r\n\r\n vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function addMaxAlpha(builder: ShaderBuilder): void {\r\n const minTransparency = 15.0; // NB: See DisplayParams.getMinTransparency() - this must match!\r\n const maxAlpha = (255 - minTransparency) / 255;\r\n builder.addConstant(\"s_maxAlpha\", VariableType.Float, maxAlpha.toString());\r\n}\r\n\r\n/** @internal */\r\nfunction addEmphasisFlags(builder: ShaderBuilder): void {\r\n builder.addBitFlagConstant(\"kEmphBit_Hilite\", 0);\r\n builder.addBitFlagConstant(\"kEmphBit_Emphasize\", 1);\r\n builder.addBitFlagConstant(\"kEmphBit_Flash\", 2);\r\n builder.addBitFlagConstant(\"kEmphBit_NonLocatable\", 3);\r\n builder.addConstant(\"kEmphFlag_Hilite\", VariableType.Float, \"1.0\");\r\n builder.addConstant(\"kEmphFlag_Emphasize\", VariableType.Float, \"2.0\");\r\n builder.addConstant(\"kEmphFlag_Flash\", VariableType.Float, \"4.0\");\r\n builder.addConstant(\"kEmphFlag_NonLocatable\", VariableType.Float, \"8.0\");\r\n}\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder, wantFlashMode: boolean): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindFeatureSettings(uniform);\r\n });\r\n });\r\n\r\n if (wantFlashMode) {\r\n frag.addUniform(\"u_flash_mode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_flash_mode\", (uniform, params) => {\r\n uniform.setUniform1f(params.geometry.getFlashMode(params));\r\n });\r\n });\r\n }\r\n}\r\n\r\n// If feature is not hilited, discard it.\r\nconst checkVertexHiliteDiscard = \"return 0.0 == v_feature_hilited;\";\r\n\r\n// The result is a mask in which each pixel's r=1 if hilited and g=1 if emphasized (and not hilited).\r\nconst computeHiliteColor = `\r\n float flags = floor(v_feature_hilited + 0.5);\r\n float hilited = extractNthBit(flags, kEmphBit_Hilite);\r\n float emphasized = extractNthBit(flags, kEmphBit_Emphasize);\r\n return vec4(hilited, emphasized, 0.0, 0.0);\r\n`;\r\n\r\nconst computeSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeHiliteColor}`;\r\n\r\nconst computeHiliteOverrides = `\r\n vec4 value = getFirstFeatureRgba();\r\n float emphFlags = value.g * 256.0;\r\n v_feature_hilited = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n`;\r\n\r\nconst computeHiliteOverridesWithWeight = `${computeHiliteOverrides}\r\n float flags = value.r * 256.0;\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.a * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.b * 256.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n addHiliter(builder, wantWeight);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeSurfaceHiliteColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addHiliter(builder: ProgramBuilder, wantWeight: boolean = false): void {\r\n let opts = FeatureSymbologyOptions.HasOverrides;\r\n if (wantWeight)\r\n opts |= FeatureSymbologyOptions.Weight; // hiliter never needs line code or color...\r\n\r\n if (!addCommon(builder, FeatureMode.Overrides, opts, wantWeight))\r\n return;\r\n\r\n builder.addVarying(\"v_feature_hilited\", VariableType.Float);\r\n\r\n addEmphasisFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.ComputeFeatureOverrides, wantWeight ? computeHiliteOverridesWithWeight : computeHiliteOverrides);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexHiliteDiscard);\r\n\r\n addEmphasisFlags(builder.frag);\r\n addExtractNthBit(builder.frag);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteColor);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\nfunction addSamplers(frag: FragmentShaderBuilder, testFeatureId: boolean) {\r\n if (testFeatureId) {\r\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickFeatureId\", (uniform, params) => {\r\n params.target.compositor.featureIds.bindSampler(uniform, TextureUnit.PickFeatureId);\r\n });\r\n }, VariablePrecision.High);\r\n }\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n params.target.compositor.depthAndOrder.bindSampler(uniform, TextureUnit.PickDepthAndOrder);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\n/** @internal */\r\nexport const readDepthAndOrder = `\r\nvec2 readDepthAndOrder(vec2 tc) {\r\n vec4 pdo = TEXTURE(u_pickDepthAndOrder, tc);\r\n float order = floor(pdo.x * 16.0 + 0.5);\r\n return vec2(order, decodeDepthRgb(pdo.yzw));\r\n}\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscard = `\r\n float factor = float(u_renderPass <= kRenderPass_Translucent); // never discard during specific passes\r\n float term = 0.0;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n term += float(depthAndOrder.x > u_renderOrder && abs(depthAndOrder.y - surfaceDepth) < 4.0e-5);\r\n return factor * term > 0.0;\r\n`;\r\n\r\nconst checkForEarlySurfaceDiscardWithFeatureID = `\r\n // No normals => unlt => reality model => no edges.\r\n if (u_renderPass > kRenderPass_Translucent || u_renderPass == kRenderPass_Layers || !u_surfaceFlags[kSurfaceBitIndex_HasNormals])\r\n return false;\r\n\r\n vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\n vec2 depthAndOrder = readDepthAndOrder(tc);\r\n\r\n if (depthAndOrder.x <= u_renderOrder)\r\n return false;\r\n\r\n // Calculate depthTolerance for letting edges show through their own surfaces\r\n float perspectiveFrustum = step(kFrustumType_Perspective, u_frustum.z);\r\n vec4 eyeDirAndWidthFactor = mix(vec4(0.0, 0.0, 1.0, u_pixelWidthFactor), vec4(normalize(-v_eyeSpace.xyz), -v_eyeSpace.z * u_pixelWidthFactor), perspectiveFrustum);\r\n vec3 eyeDir = eyeDirAndWidthFactor.xyz;\r\n float dtWidthFactor = eyeDirAndWidthFactor.w;\r\n\r\n // Compute depth tolerance based on angle of triangle to screen\r\n float isSilhouette = float(depthAndOrder.x == kRenderOrder_Silhouette);\r\n float dSq = dot(eyeDir, v_n);\r\n dSq *= 0.5 + 0.4 * (1.0 - isSilhouette);\r\n dSq = dSq * dSq;\r\n dSq = max(dSq, 0.0001);\r\n dSq = min(dSq, 0.999);\r\n\r\n float depthTolerance = dtWidthFactor * v_lineWeight * sqrt((1.0 - dSq) / dSq);\r\n depthTolerance *= 1.0 + .333 * isSilhouette;\r\n\r\n // Make sure stuff behind camera doesn't get pushed in front of it\r\n depthTolerance = max(depthTolerance, 0.0);\r\n\r\n // Convert depthTolerance from eye space to linear depth\r\n depthTolerance /= (u_frustum.y - u_frustum.x);\r\n\r\n float surfaceDepth = computeLinearDepth(v_eyeSpace.z);\r\n float depthDelta = abs(depthAndOrder.y - surfaceDepth);\r\n if (depthDelta > depthTolerance)\r\n return false;\r\n\r\n // Does pick buffer contain same feature?\r\n vec4 featId = TEXTURE(u_pickFeatureId, tc);\r\n\r\n // Converting to ints to test since varying floats can be interpolated incorrectly\r\n ivec4 featId_i = ivec4(featId * 255.0 + 0.5);\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n if (featId_i == feature_id_i)\r\n return true;\r\n\r\n // In 2d, display priority controls draw order of different elements.\r\n if (!u_checkInterElementDiscard)\r\n return false;\r\n\r\n // Use a tighter tolerance for two different elements since we're only fighting roundoff error.\r\n return depthDelta <= 4.0e-5;\r\n`;\r\n\r\n// This only adds the constants that are actually used in shader code.\r\nexport function addRenderOrderConstants(builder: ShaderBuilder) {\r\n builder.addConstant(\"kRenderOrder_BlankingRegion\", VariableType.Float, RenderOrder.BlankingRegion.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Linear\", VariableType.Float, RenderOrder.Linear.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Edge\", VariableType.Float, RenderOrder.Edge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarEdge\", VariableType.Float, RenderOrder.PlanarEdge.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Silhouette\", VariableType.Float, RenderOrder.Silhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarSilhouette\", VariableType.Float, RenderOrder.PlanarSilhouette.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_UnlitSurface\", VariableType.Float, RenderOrder.UnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_LitSurface\", VariableType.Float, RenderOrder.LitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarUnlitSurface\", VariableType.Float, RenderOrder.PlanarUnlitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarLitSurface\", VariableType.Float, RenderOrder.PlanarLitSurface.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_PlanarBit\", VariableType.Float, RenderOrder.PlanarBit.toFixed(1));\r\n builder.addConstant(\"kRenderOrder_Background\", VariableType.Float, RenderOrder.Background.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addRenderOrder(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderOrder\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_renderOrder\", (uniform, params) => {\r\n const order = params.target.drawingBackgroundForReadPixels ? RenderOrder.Background : params.geometry.renderOrder;\r\n uniform.setUniform1f(order);\r\n });\r\n });\r\n}\r\n\r\nfunction addPixelWidthFactor(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_pixelWidthFactor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_pixelWidthFactor\", (uniform, params) => {\r\n params.target.uniforms.bindPixelWidthFactor(uniform);\r\n });\r\n });\r\n}\r\n\r\nfunction addBatchId(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_batch_id\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_batch_id\", (uniform, params) => {\r\n params.target.uniforms.batch.bindBatchId(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n}\r\n\r\nconst computeIdVert = `v_feature_id = addUInt32s(u_batch_id, vec4(g_featureIndex, 0.0)) / 255.0;`;\r\nconst computeIdFrag = `\r\n vec4 featureIndex = vec4(floor(v_feature_index + 0.5), 0.0);\r\n feature_id = addUInt32s(u_batch_id, featureIndex) / 255.0;\r\n`;\r\n\r\n/** @internal */\r\nexport function addFeatureId(builder: ProgramBuilder, computeInFrag: boolean) {\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n frag.addGlobal(\"feature_id\", VariableType.Vec4);\r\n if (!computeInFrag) {\r\n vert.addFunction(addUInt32s);\r\n addBatchId(vert);\r\n builder.addInlineComputedVarying(\"v_feature_id\", VariableType.Vec4, computeIdVert);\r\n\r\n frag.addInitializer(\"feature_id = v_feature_id;\");\r\n } else {\r\n frag.addFunction(addUInt32s);\r\n builder.addInlineComputedVarying(\"v_feature_index\", VariableType.Vec3, \"v_feature_index = g_featureIndex;\");\r\n\r\n addBatchId(frag);\r\n frag.addInitializer(computeIdFrag);\r\n }\r\n}\r\n\r\n// Discard vertex if transparency is less than the display style's transparency threshold, IFF the specific bit is set. The bit is set if:\r\n// - Solid Fill or Hidden Line mode; or\r\n// - Shaded mode and generating shadow map (sufficiently transparent surfaces receive but do not cast shadows).\r\nconst isBelowTransparencyThreshold = `\r\n return v_color.a < u_transparencyThreshold && u_surfaceFlags[kSurfaceBitIndex_TransparencyThreshold];\r\n`;\r\n\r\n/** @internal */\r\nexport function addSurfaceDiscard(builder: ProgramBuilder, flags: TechniqueFlags) {\r\n const feat = flags.featureMode;\r\n const isEdgeTestNeeded = flags.isEdgeTestNeeded;\r\n const isClassified = flags.isClassified;\r\n const computeIdInFrag = !flags.isTranslucent && 0 !== flags.isClassified && FeatureMode.Overrides === feat;\r\n\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n vert.set(VertexShaderComponent.CheckForLateDiscard, isBelowTransparencyThreshold);\r\n vert.addUniform(\"u_transparencyThreshold\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_transparencyThreshold\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.currentTransparencyThreshold);\r\n });\r\n });\r\n\r\n if (isEdgeTestNeeded) {\r\n addWindowToTexCoords(frag);\r\n\r\n if (!flags.isHilite)\r\n addEyeSpace(builder);\r\n\r\n if (FeatureMode.None === feat) {\r\n addSamplers(frag, false);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscard);\r\n } else {\r\n frag.addUniform(\"u_checkInterElementDiscard\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_checkInterElementDiscard\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.uniforms.branch.top.is3d ? 1 : 0);\r\n });\r\n });\r\n\r\n addFeatureIndex(vert);\r\n addLineWeight(vert);\r\n\r\n addSamplers(frag, true);\r\n addRenderOrderConstants(frag);\r\n addPixelWidthFactor(frag);\r\n frag.addFunction(computeLinearDepth);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkForEarlySurfaceDiscardWithFeatureID);\r\n\r\n builder.addInlineComputedVarying(\"v_lineWeight\", VariableType.Float, \"v_lineWeight = computeLineWeight();\");\r\n addFeatureId(builder, computeIdInFrag);\r\n }\r\n\r\n addRenderOrder(frag);\r\n addRenderPass(frag);\r\n } else if (isClassified && FeatureMode.None !== feat) {\r\n addFeatureIndex(vert);\r\n addFeatureId(builder, computeIdInFrag);\r\n\r\n if (!flags.isTranslucent)\r\n addRenderOrder(frag);\r\n }\r\n}\r\n\r\n// bool feature_invisible = false;\r\n// vec3 feature_rgb; // if not overridden, .r < 0; else rgb color override\r\n// float feature_alpha // alpha if overridden, else < 0\r\n// varying float v_feature_emphasis // bitmask - see kEmph_* constants\r\n// vec4 linear_feature_overrides; // x: weight overridden y: weight z: line code overridden w: line code\r\nconst computeFeatureOverrides = `\r\n feature_rgb = vec3(-1.0);\r\n feature_alpha = -1.0;\r\n vec4 value = getFirstFeatureRgba();\r\n\r\n float emphFlags = value.y * 256.0;\r\n v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);\r\n\r\n float flags = value.x * 256.0;\r\n if (0.0 == flags)\r\n return; // nothing overridden for this feature\r\n\r\n bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);\r\n v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));\r\n bool invisible = nthFeatureBitSet(flags, kOvrBit_Visibility);\r\n feature_invisible = invisible || nonLocatable;\r\n if (feature_invisible)\r\n return;\r\n\r\n bool rgbOverridden = nthFeatureBitSet(flags, kOvrBit_Rgb);\r\n bool alphaOverridden = nthFeatureBitSet(flags, kOvrBit_Alpha);\r\n if (alphaOverridden || rgbOverridden) {\r\n vec4 rgba = getSecondFeatureRgba();\r\n if (rgbOverridden)\r\n feature_rgb = rgba.rgb;\r\n\r\n if (alphaOverridden) {\r\n feature_alpha = rgba.a;\r\n feature_viewIndependentTransparency = nthFeatureBitSet(emphFlags, kOvrBit_ViewIndependentTransparency);\r\n }\r\n }\r\n\r\n linear_feature_overrides = vec4(nthFeatureBitSet(flags, kOvrBit_Weight),\r\n value.w * 256.0,\r\n nthFeatureBitSet(flags, kOvrBit_LineCode),\r\n value.z * 256.0);\r\n\r\n feature_ignore_material = nthFeatureBitSet(flags, kOvrBit_IgnoreMaterial);\r\n use_material = use_material && !feature_ignore_material;\r\n\r\n v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nconst applyFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, feature_rgb.rgb, step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n`;\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature, else mix based on u_overrrideColorMix.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nexport const mixFeatureColor = `\r\n vec3 rgb = mix(baseColor.rgb, mix(baseColor.rgb, feature_rgb.rgb, u_overrideColorMix), step(0.0, feature_rgb.r));\r\n float alpha = mix(baseColor.a, feature_alpha, step(0.0, feature_alpha));\r\n return vec4(rgb, alpha);\r\n `;\r\n\r\nconst applyFlash = `\r\n float flashHilite = floor(v_feature_emphasis + 0.5);\r\n return doApplyFlash(flashHilite, baseColor);\r\n`;\r\n\r\nconst doApplyFlash = `\r\nvec4 doApplyFlash(float flags, vec4 baseColor) {\r\n bool isFlashed = nthBitSet(flags, kEmphBit_Flash);\r\n bool isHilited = nthBitSet(flags, kEmphBit_Hilite);\r\n bool isEmphasized = !isHilited && nthBitSet(flags, kEmphBit_Emphasize);\r\n vec3 hiliteRgb = isEmphasized ? u_hilite_settings[1] : u_hilite_settings[0];\r\n\r\n isHilited = isEmphasized || isHilited;\r\n float hiliteRatio = isHilited ? (isEmphasized ? u_hilite_settings[2][1] : u_hilite_settings[2][0]) : 0.0;\r\n baseColor.rgb = mix(baseColor.rgb, hiliteRgb, hiliteRatio);\r\n\r\n const float maxBrighten = 0.2;\r\n float brighten = isFlashed ? u_flash_intensity * maxBrighten : 0.0;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n\r\n const float maxTween = 0.75;\r\n float hiliteFraction = isFlashed ? u_flash_intensity * maxTween : 0.0;\r\n vec3 tweenRgb = baseColor.rgb * (1.0 - hiliteFraction);\r\n tweenRgb += u_hilite_settings[0] * hiliteFraction;\r\n\r\n return vec4(mix(tweenRgb, brightRgb, u_flash_mode), baseColor.a);\r\n}\r\n`;\r\n\r\nconst doClassifierFlash = `\r\nvec4 applyClassifierFlash(vec4 baseColor) {\r\n const float maxBrighten = 0.2;\r\n float brighten = u_flash_intensity * maxBrighten;\r\n vec3 brightRgb = baseColor.rgb + brighten;\r\n return vec4(brightRgb, baseColor.a);\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addClassifierFlash(frag: FragmentShaderBuilder): void {\r\n addFlashIntensity(frag);\r\n addHiliteSettings(frag, false);\r\n frag.addFunction(doClassifierFlash);\r\n}\r\n\r\nfunction addFlashIntensity(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_flash_intensity\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_flash_intensity\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.flashIntensity);\r\n });\r\n });\r\n}\r\n\r\nfunction addApplyFlash(frag: FragmentShaderBuilder) {\r\n addHiliteSettings(frag, true);\r\n addEmphasisFlags(frag);\r\n\r\n addExtractNthBit(frag);\r\n frag.addFunction(doApplyFlash);\r\n frag.set(FragmentShaderComponent.ApplyFlash, applyFlash);\r\n addFlashIntensity(frag);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeatureSymbology(builder: ProgramBuilder, feat: FeatureMode, opts: FeatureSymbologyOptions): void {\r\n if (!addCommon(builder, feat, opts) || FeatureSymbologyOptions.None === opts)\r\n return;\r\n\r\n assert((FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color) === (opts & (FeatureSymbologyOptions.HasOverrides | FeatureSymbologyOptions.Color)));\r\n\r\n builder.addGlobal(\"feature_rgb\", VariableType.Vec3);\r\n builder.addGlobal(\"feature_alpha\", VariableType.Float);\r\n builder.addVarying(\"v_feature_emphasis\", VariableType.Float);\r\n\r\n const vert = builder.vert;\r\n vert.addGlobal(\"feature_invisible\", VariableType.Boolean, \"false\");\r\n vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addEmphasisFlags(vert);\r\n vert.addGlobal(\"use_material\", VariableType.Boolean, \"true\");\r\n vert.set(VertexShaderComponent.ComputeFeatureOverrides, computeFeatureOverrides);\r\n vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n\r\n/** If we're running the hilite shader for a uniform feature, it follows that the feature must be hilited.\r\n * So the hilite shader simply needs to output '1' for every fragment.\r\n * @internal\r\n */\r\nexport function addUniformHiliter(builder: ProgramBuilder): void {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, `return vec4(1.0, 0.0, 0.0, 0.0);`);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n}\r\n\r\n/** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.\r\n * The following symbology overrides are supported:\r\n * - Visibility - implcitly, because if the feature is invisible its geometry will never be drawn.\r\n * - Flash\r\n * - Hilite\r\n * - Color and Transparency- only for point clouds currently which set addFeatureColor to true.\r\n * This shader could be simplified, but want to share code with the non-uniform versions...hence uniforms/globals with \"v_\" prefix typically used for varyings on no prefix...\r\n * @internal\r\n */\r\nexport function addUniformFeatureSymbology(builder: ProgramBuilder, addFeatureColor: boolean): void {\r\n builder.vert.addGlobal(\"g_featureIndex\", VariableType.Vec3, \"vec3(0.0)\", true);\r\n\r\n builder.frag.addUniform(\"v_feature_emphasis\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"v_feature_emphasis\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformSymbologyFlags(uniform);\r\n });\r\n });\r\n\r\n if (addFeatureColor) {\r\n builder.vert.addUniform(\"feature_rgb\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"feature_rgb\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformColorOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"feature_alpha\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"feature_alpha\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformTransparencyOverride(uniform);\r\n });\r\n });\r\n\r\n builder.vert.set(VertexShaderComponent.ApplyFeatureColor, applyFeatureColor);\r\n addAlpha(builder.vert);\r\n addMaxAlpha(builder.vert);\r\n addRenderPass(builder.vert);\r\n addTransparencyDiscardFlags(builder.vert);\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, checkVertexDiscard);\r\n } else {\r\n builder.vert.set(VertexShaderComponent.CheckForDiscard, \"return feature_invisible;\");\r\n }\r\n\r\n // Non-Locatable... Discard if picking\r\n builder.vert.addUniform(\"feature_invisible\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"feature_invisible\", (uniform, params) => {\r\n params.target.uniforms.batch.bindUniformNonLocatable(uniform, params.target.drawNonLocatable);\r\n });\r\n });\r\n\r\n builder.vert.addGlobal(\"feature_viewIndependentTransparency\", VariableType.Boolean, \"false\");\r\n\r\n addApplyFlash(builder.frag);\r\n}\r\n"]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
4
|
import { ProgramBuilder } from "../ShaderBuilder";
|
|
5
|
-
import { IsInstanced } from "../TechniqueFlags";
|
|
5
|
+
import { IsInstanced, PositionType } from "../TechniqueFlags";
|
|
6
6
|
/** @internal */
|
|
7
|
-
export declare function createPointStringHiliter(instanced: IsInstanced): ProgramBuilder;
|
|
7
|
+
export declare function createPointStringHiliter(instanced: IsInstanced, posType: PositionType): ProgramBuilder;
|
|
8
8
|
/** @internal */
|
|
9
|
-
export declare function createPointStringBuilder(instanced: IsInstanced): ProgramBuilder;
|
|
9
|
+
export declare function createPointStringBuilder(instanced: IsInstanced, posType: PositionType): ProgramBuilder;
|
|
10
10
|
//# sourceMappingURL=PointString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointString.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA2B,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"PointString.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA2B,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA0C9D,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAItG;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAMtG"}
|
|
@@ -31,9 +31,9 @@ const roundCorners = `
|
|
|
31
31
|
return dot(vt, vt) * v_roundCorners >= 0.25; // meets or exceeds radius of circle
|
|
32
32
|
`;
|
|
33
33
|
const computeRoundCorners = " v_roundCorners = gl_PointSize > 4.0 ? 1.0 : 0.0;";
|
|
34
|
-
function createBase(instanced) {
|
|
34
|
+
function createBase(instanced, positionType) {
|
|
35
35
|
const attrMap = AttributeMap_1.AttributeMap.findAttributeMap(3 /* PointString */, 1 /* Yes */ === instanced);
|
|
36
|
-
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, {
|
|
36
|
+
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, { positionType, instanced: 1 /* Yes */ === instanced });
|
|
37
37
|
const vert = builder.vert;
|
|
38
38
|
vert.set(10 /* ComputePosition */, computePosition);
|
|
39
39
|
(0, Vertex_1.addModelViewProjectionMatrix)(vert);
|
|
@@ -43,15 +43,15 @@ function createBase(instanced) {
|
|
|
43
43
|
return builder;
|
|
44
44
|
}
|
|
45
45
|
/** @internal */
|
|
46
|
-
function createPointStringHiliter(instanced) {
|
|
47
|
-
const builder = createBase(instanced);
|
|
46
|
+
function createPointStringHiliter(instanced, posType) {
|
|
47
|
+
const builder = createBase(instanced, posType);
|
|
48
48
|
(0, FeatureSymbology_1.addHiliter)(builder, true);
|
|
49
49
|
return builder;
|
|
50
50
|
}
|
|
51
51
|
exports.createPointStringHiliter = createPointStringHiliter;
|
|
52
52
|
/** @internal */
|
|
53
|
-
function createPointStringBuilder(instanced) {
|
|
54
|
-
const builder = createBase(instanced);
|
|
53
|
+
function createPointStringBuilder(instanced, posType) {
|
|
54
|
+
const builder = createBase(instanced, posType);
|
|
55
55
|
(0, Common_1.addShaderFlags)(builder);
|
|
56
56
|
(0, Color_1.addColor)(builder);
|
|
57
57
|
(0, Fragment_1.addWhiteOnWhiteReversal)(builder.frag);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAA+C;AAC/C,oDAAgH;AAGhH,mCAAmC;AACnC,qCAA0C;AAC1C,yDAAgD;AAChD,yCAAqD;AACrD,qCAAuE;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB;
|
|
1
|
+
{"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAA+C;AAC/C,oDAAgH;AAGhH,mCAAmC;AACnC,qCAA0C;AAC1C,yDAAgD;AAChD,yCAAqD;AACrD,qCAAuE;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB,EAAE,YAA0B;IACpE,MAAM,OAAO,GAAG,2BAAY,CAAC,gBAAgB,sBAA0B,gBAAoB,SAAS,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAoB,SAAS,EAAE,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,2BAAwC,eAAe,CAAC,CAAC;IACjE,IAAA,qCAA4B,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,iBAAsB,mBAAmB,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,+BAA+C,YAAY,CAAC,CAAC;IAE7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB,EAAE,OAAqB;IACpF,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAA,6BAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAJD,4DAIC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,SAAsB,EAAE,OAAqB;IACpF,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;IACxB,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC;IAClB,IAAA,kCAAuB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAND,4DAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsInstanced, PositionType } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = `\r\n float lineWeight = computeLineWeight();\r\n lineWeight += 0.5 * float(lineWeight > 4.0); // fudge factor for rounding fat points...\r\n gl_PointSize = lineWeight;\r\n return MAT_MVP * rawPos;\r\n`;\r\n\r\n// gl_PointSize specifies coordinates of this fragment within the point in range [0,1].\r\n// This should be the most precise of the many approaches we've tried, but it still yields some asymmetry...\r\n// Discarding if it meets radius precisely seems to reduce that slightly...\r\n// ###TODO try point sprites?\r\nconst roundCorners = `\r\n const vec2 center = vec2(0.5, 0.5);\r\n vec2 vt = gl_PointCoord - center;\r\n return dot(vt, vt) * v_roundCorners >= 0.25; // meets or exceeds radius of circle\r\n`;\r\n\r\nconst computeRoundCorners = \" v_roundCorners = gl_PointSize > 4.0 ? 1.0 : 0.0;\";\r\n\r\nfunction createBase(instanced: IsInstanced, positionType: PositionType): ProgramBuilder {\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.PointString, IsInstanced.Yes === instanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced: IsInstanced.Yes === instanced });\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n builder.addInlineComputedVarying(\"v_roundCorners\", VariableType.Float, computeRoundCorners);\r\n builder.frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundCorners);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringHiliter(instanced: IsInstanced, posType: PositionType): ProgramBuilder {\r\n const builder = createBase(instanced, posType);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringBuilder(instanced: IsInstanced, posType: PositionType): ProgramBuilder {\r\n const builder = createBase(instanced, posType);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
4
|
import { FragmentShaderBuilder, ProgramBuilder, VertexShaderBuilder } from "../ShaderBuilder";
|
|
5
|
-
import { IsInstanced } from "../TechniqueFlags";
|
|
5
|
+
import { IsInstanced, PositionType } from "../TechniqueFlags";
|
|
6
6
|
/** @internal */
|
|
7
7
|
export declare const adjustWidth = "\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\n if (u_aaSamples > 1) {\n if (width < 5.0)\n width += (5.0 - width) * 0.125;\n return;\n }\n\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\n vec2 d2A = abs(d2);\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\n float len = length(d2A);\n float tan = d2A.x / d2A.y;\n\n if (width < 1.5) { // width 1\n if (tan <= 1.0)\n width = d2A.y;\n else\n width = d2A.x;\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\n width *= 1.01;\n v_lnInfo.xy = org;\n v_lnInfo.w = 1.0; // set flag to do trimming\n // set slope in v_lnInfo.z\n if (d2A.x - d2A.y > s_myFltEpsilon) {\n v_lnInfo.z = d2.y / d2.x;\n v_lnInfo.w += 2.0; // add in x-major flag\n } else\n v_lnInfo.z = d2.x / d2.y;\n\n } else if (width < 2.5) { // width 2\n if (tan <= 0.5)\n width = 2.0 * d2A.y;\n else\n width = (d2A.y + 2.0 * d2A.x);\n\n } else if (width < 3.5) { // width 3\n if (tan <= 1.0)\n width = (3.0 * d2A.y + d2A.x);\n else\n width = (d2A.y + 3.0 * d2A.x);\n\n } else { // if (width < 4.5) // width 4\n if (tan <= 0.5)\n width = (4.0 * d2A.y + d2A.x);\n else if (tan <= 2.0)\n width = (3.0 * d2A.y + 3.0 * d2A.x);\n else\n width = (d2A.y + 4.0 * d2A.x);\n }\n width /= len;\n }\n}\n";
|
|
8
8
|
/** @internal */
|
|
@@ -12,7 +12,7 @@ export declare function addLineCodeTexture(frag: FragmentShaderBuilder): void;
|
|
|
12
12
|
/** @internal */
|
|
13
13
|
export declare function addLineCode(prog: ProgramBuilder, args: string): void;
|
|
14
14
|
/** @internal */
|
|
15
|
-
export declare function createPolylineBuilder(isInstanced: IsInstanced): ProgramBuilder;
|
|
15
|
+
export declare function createPolylineBuilder(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder;
|
|
16
16
|
/** @internal */
|
|
17
|
-
export declare function createPolylineHiliter(isInstanced: IsInstanced): ProgramBuilder;
|
|
17
|
+
export declare function createPolylineHiliter(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder;
|
|
18
18
|
//# sourceMappingURL=Polyline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAgB,mBAAmB,EAClG,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.ts"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAgB,mBAAmB,EAClG,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgE9D,gBAAgB;AAChB,eAAO,MAAM,WAAW,olDAsDvB,CAAC;AAEF,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,IAAI,EAAE,mBAAmB,QAQvD;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,QAS7D;AAED,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,QAgB7D;AA4JD,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,cAAc,CAgB1G;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,cAAc,CAS1G"}
|
|
@@ -184,28 +184,13 @@ function addCommon(prog) {
|
|
|
184
184
|
vert.set(10 /* ComputePosition */, computePosition);
|
|
185
185
|
prog.addVarying("v_lnInfo", 5 /* Vec4 */);
|
|
186
186
|
addAdjustWidth(vert);
|
|
187
|
+
(0, Vertex_1.addSamplePosition)(vert);
|
|
187
188
|
vert.addFunction(decodePosition);
|
|
188
189
|
}
|
|
189
190
|
const decodePosition = `
|
|
190
191
|
vec4 decodePosition(vec3 baseIndex) {
|
|
191
192
|
float index = decodeUInt24(baseIndex);
|
|
192
|
-
|
|
193
|
-
if (g_usesQuantizedPosition) {
|
|
194
|
-
vec4 e0 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);
|
|
195
|
-
tc.x += g_vert_stepX;
|
|
196
|
-
vec4 e1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);
|
|
197
|
-
vec3 qpos = vec3(decodeUInt16(e0.xy), decodeUInt16(e0.zw), decodeUInt16(e1.xy));
|
|
198
|
-
return unquantizePosition(qpos, u_qOrigin, u_qScale);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
vec4 position;
|
|
202
|
-
for (int i = 0; i < 3; i++) {
|
|
203
|
-
position[i] = decodeFloat32(floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5));
|
|
204
|
-
tc.x += g_vert_stepX;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
position.w = 1.0;
|
|
208
|
-
return position;
|
|
193
|
+
return samplePosition(index);
|
|
209
194
|
}
|
|
210
195
|
`;
|
|
211
196
|
const decodeAdjacentPositions = `
|
|
@@ -321,10 +306,10 @@ const computePosition = `
|
|
|
321
306
|
`;
|
|
322
307
|
const lineCodeArgs = "g_windowDir, g_windowPos, miterAdjust";
|
|
323
308
|
/** @internal */
|
|
324
|
-
function createPolylineBuilder(isInstanced) {
|
|
309
|
+
function createPolylineBuilder(isInstanced, positionType) {
|
|
325
310
|
const instanced = 1 /* Yes */ === isInstanced;
|
|
326
311
|
const attrMap = AttributeMap_1.AttributeMap.findAttributeMap(1 /* Polyline */, instanced);
|
|
327
|
-
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, {
|
|
312
|
+
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, { positionType, instanced });
|
|
328
313
|
(0, Common_1.addShaderFlags)(builder);
|
|
329
314
|
addCommon(builder);
|
|
330
315
|
polylineAddLineCode(builder);
|
|
@@ -335,10 +320,10 @@ function createPolylineBuilder(isInstanced) {
|
|
|
335
320
|
}
|
|
336
321
|
exports.createPolylineBuilder = createPolylineBuilder;
|
|
337
322
|
/** @internal */
|
|
338
|
-
function createPolylineHiliter(isInstanced) {
|
|
323
|
+
function createPolylineHiliter(isInstanced, positionType) {
|
|
339
324
|
const instanced = 1 /* Yes */ === isInstanced;
|
|
340
325
|
const attrMap = AttributeMap_1.AttributeMap.findAttributeMap(1 /* Polyline */, instanced);
|
|
341
|
-
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, {
|
|
326
|
+
const builder = new ShaderBuilder_1.ProgramBuilder(attrMap, { positionType, instanced });
|
|
342
327
|
addCommon(builder);
|
|
343
328
|
(0, Common_1.addFrustum)(builder);
|
|
344
329
|
(0, FeatureSymbology_1.addHiliter)(builder, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderBuilder, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addEdgeContrast } from \"./Edge\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst checkForDiscard = \"return discardByLineCode;\";\r\n\r\nconst applyLineCode = `\r\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\r\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\r\n discardByLineCode = (0.0 == texColor.r);\r\n }\r\n\r\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\r\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\r\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\r\n if (v_lnInfo.w < 1.5) // not x-major\r\n dxy = dxy.yx;\r\n\r\n float dist = v_lnInfo.z * dxy.x - dxy.y;\r\n float distA = abs(dist);\r\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\r\n discardByLineCode = true; // borrow this flag to force discard\r\n }\r\n\r\n return baseColor;\r\n`;\r\n\r\nconst computeTextureCoord = `\r\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\r\n vec2 texc;\r\n float lineCode = computeLineCode();\r\n if (0.0 == lineCode) {\r\n // Solid line - tell frag shader not to bother.\r\n texc = vec2(-1.0, -1.0);\r\n } else {\r\n const float imagesPerPixel = 1.0/32.0;\r\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\r\n\r\n if (abs(windowDir.x) > abs(windowDir.y))\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\r\n else\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\r\n\r\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\r\n const float rowsPerCode = 1.0;\r\n const float numRows = numLineCodes*rowsPerCode;\r\n const float centerY = 0.5/numRows;\r\n const float stepY = rowsPerCode/numRows;\r\n texc.y = stepY * lineCode + centerY;\r\n }\r\n\r\n return texc;\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport const adjustWidth = `\r\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\r\n if (u_aaSamples > 1) {\r\n if (width < 5.0)\r\n width += (5.0 - width) * 0.125;\r\n return;\r\n }\r\n\r\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\r\n vec2 d2A = abs(d2);\r\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\r\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\r\n float len = length(d2A);\r\n float tan = d2A.x / d2A.y;\r\n\r\n if (width < 1.5) { // width 1\r\n if (tan <= 1.0)\r\n width = d2A.y;\r\n else\r\n width = d2A.x;\r\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\r\n width *= 1.01;\r\n v_lnInfo.xy = org;\r\n v_lnInfo.w = 1.0; // set flag to do trimming\r\n // set slope in v_lnInfo.z\r\n if (d2A.x - d2A.y > s_myFltEpsilon) {\r\n v_lnInfo.z = d2.y / d2.x;\r\n v_lnInfo.w += 2.0; // add in x-major flag\r\n } else\r\n v_lnInfo.z = d2.x / d2.y;\r\n\r\n } else if (width < 2.5) { // width 2\r\n if (tan <= 0.5)\r\n width = 2.0 * d2A.y;\r\n else\r\n width = (d2A.y + 2.0 * d2A.x);\r\n\r\n } else if (width < 3.5) { // width 3\r\n if (tan <= 1.0)\r\n width = (3.0 * d2A.y + d2A.x);\r\n else\r\n width = (d2A.y + 3.0 * d2A.x);\r\n\r\n } else { // if (width < 4.5) // width 4\r\n if (tan <= 0.5)\r\n width = (4.0 * d2A.y + d2A.x);\r\n else if (tan <= 2.0)\r\n width = (3.0 * d2A.y + 3.0 * d2A.x);\r\n else\r\n width = (d2A.y + 4.0 * d2A.x);\r\n }\r\n width /= len;\r\n }\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\r\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\r\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\r\n attr.setUniform1i(numSamples);\r\n });\r\n });\r\n vert.addFunction(adjustWidth);\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\r\n const lct = System.instance.lineCodeTexture;\r\n assert(undefined !== lct);\r\n if (undefined !== lct)\r\n lct.bindSampler(uniform, TextureUnit.LineCode);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCode(prog: ProgramBuilder, args: string) {\r\n const vert = prog.vert;\r\n const frag = prog.frag;\r\n\r\n addLineCodeUniform(vert);\r\n\r\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\r\n\r\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\r\n\r\n addFrustum(prog);\r\n addLineCodeTexture(prog.frag);\r\n\r\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\r\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\r\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\r\n}\r\n\r\nfunction polylineAddLineCode(prog: ProgramBuilder) {\r\n addLineCode(prog, lineCodeArgs);\r\n addModelViewMatrix(prog.vert);\r\n}\r\n\r\nfunction addCommon(prog: ProgramBuilder) {\r\n const vert = prog.vert;\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n addViewport(vert);\r\n\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addInitializer(decodeAdjacentPositions);\r\n\r\n vert.addFunction(unquantize2d);\r\n\r\n addLineWeight(vert);\r\n\r\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\r\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n vert.addFunction(decodePosition);\r\n}\r\n\r\nconst decodePosition = `\r\nvec4 decodePosition(vec3 baseIndex) {\r\n float index = decodeUInt24(baseIndex);\r\n vec2 tc = compute_vert_coords(index);\r\n if (g_usesQuantizedPosition) {\r\n vec4 e0 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n tc.x += g_vert_stepX;\r\n vec4 e1 = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n vec3 qpos = vec3(decodeUInt16(e0.xy), decodeUInt16(e0.zw), decodeUInt16(e1.xy));\r\n return unquantizePosition(qpos, u_qOrigin, u_qScale);\r\n }\r\n\r\n vec4 position;\r\n for (int i = 0; i < 3; i++) {\r\n position[i] = decodeFloat32(floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5));\r\n tc.x += g_vert_stepX;\r\n }\r\n\r\n position.w = 1.0;\r\n return position;\r\n}\r\n`;\r\n\r\nconst decodeAdjacentPositions = `\r\n g_prevPos = decodePosition(a_prevIndex);\r\n g_nextPos = decodePosition(a_nextIndex);\r\n`;\r\n\r\nconst computePosition = `\r\n const float kNone = 0.0,\r\n kSquare = 1.0*3.0,\r\n kMiter = 2.0*3.0,\r\n kMiterInsideOnly = 3.0*3.0,\r\n kJointBase = 4.0*3.0,\r\n kNegatePerp = 8.0*3.0,\r\n kNegateAlong = 16.0*3.0,\r\n kNoneAdjWt = 32.0*3.0;\r\n\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n\r\n vec4 next = g_nextPos;\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0)\r\n return g_windowPos;\r\n\r\n float param = a_param;\r\n float weight = computeLineWeight();\r\n float scale = 1.0, directionScale = 1.0;\r\n\r\n if (param >= kNoneAdjWt)\r\n param -= kNoneAdjWt;\r\n\r\n if (param >= kNegateAlong) {\r\n directionScale = -directionScale;\r\n param -= kNegateAlong;\r\n }\r\n\r\n if (param >= kNegatePerp) {\r\n scale = -1.0;\r\n param -= kNegatePerp;\r\n }\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\r\n g_windowDir = projNext.xy - g_windowPos.xy;\r\n\r\n if (param < kJointBase) {\r\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\r\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\r\n adjustWidth(weight, dir, pos);\r\n }\r\n\r\n if (kNone != param) {\r\n vec2 delta = vec2(0.0);\r\n vec4 prev = g_prevPos;\r\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\r\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\r\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\r\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\r\n float dist = weight / 2.0;\r\n\r\n if (thisLength > s_minNormalizeLength) {\r\n g_windowDir /= thisLength;\r\n\r\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\r\n\r\n if (prevLength > s_minNormalizeLength) {\r\n prevDir /= prevLength;\r\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\r\n float prevNextDot = dot(prevDir, g_windowDir);\r\n\r\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\r\n param = kSquare;\r\n } else\r\n param = kSquare;\r\n } else {\r\n g_windowDir = -normalize(prevDir);\r\n param = kSquare;\r\n }\r\n\r\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\r\n\r\n if (param == kSquare) {\r\n delta = perp;\r\n } else {\r\n vec2 bisector = normalize(prevDir - g_windowDir);\r\n float dotP = dot (bisector, perp);\r\n\r\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\r\n const float maxMiter = 3.0;\r\n float miterDistance = 1.0/dotP;\r\n\r\n if (param == kMiter) { // Straight miter.\r\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\r\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else {\r\n const float jointTriangleCount = 3.0;\r\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\r\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\r\n }\r\n }\r\n }\r\n\r\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\r\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\r\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\r\n }\r\n\r\n return pos;\r\n`;\r\n\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\r\n\r\n/** @internal */\r\nexport function createPolylineBuilder(isInstanced: IsInstanced): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { maxRgbaPerVertex: 5, instanced });\r\n\r\n addShaderFlags(builder);\r\n\r\n addCommon(builder);\r\n\r\n polylineAddLineCode(builder);\r\n\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPolylineHiliter(isInstanced: IsInstanced): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { maxRgbaPerVertex: 5, instanced });\r\n\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderBuilder, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { IsInstanced, PositionType } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addEdgeContrast } from \"./Edge\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport {\r\n addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix, addSamplePosition,\r\n} from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst checkForDiscard = \"return discardByLineCode;\";\r\n\r\nconst applyLineCode = `\r\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\r\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\r\n discardByLineCode = (0.0 == texColor.r);\r\n }\r\n\r\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\r\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\r\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\r\n if (v_lnInfo.w < 1.5) // not x-major\r\n dxy = dxy.yx;\r\n\r\n float dist = v_lnInfo.z * dxy.x - dxy.y;\r\n float distA = abs(dist);\r\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\r\n discardByLineCode = true; // borrow this flag to force discard\r\n }\r\n\r\n return baseColor;\r\n`;\r\n\r\nconst computeTextureCoord = `\r\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\r\n vec2 texc;\r\n float lineCode = computeLineCode();\r\n if (0.0 == lineCode) {\r\n // Solid line - tell frag shader not to bother.\r\n texc = vec2(-1.0, -1.0);\r\n } else {\r\n const float imagesPerPixel = 1.0/32.0;\r\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\r\n\r\n if (abs(windowDir.x) > abs(windowDir.y))\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\r\n else\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\r\n\r\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\r\n const float rowsPerCode = 1.0;\r\n const float numRows = numLineCodes*rowsPerCode;\r\n const float centerY = 0.5/numRows;\r\n const float stepY = rowsPerCode/numRows;\r\n texc.y = stepY * lineCode + centerY;\r\n }\r\n\r\n return texc;\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport const adjustWidth = `\r\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\r\n if (u_aaSamples > 1) {\r\n if (width < 5.0)\r\n width += (5.0 - width) * 0.125;\r\n return;\r\n }\r\n\r\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\r\n vec2 d2A = abs(d2);\r\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\r\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\r\n float len = length(d2A);\r\n float tan = d2A.x / d2A.y;\r\n\r\n if (width < 1.5) { // width 1\r\n if (tan <= 1.0)\r\n width = d2A.y;\r\n else\r\n width = d2A.x;\r\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\r\n width *= 1.01;\r\n v_lnInfo.xy = org;\r\n v_lnInfo.w = 1.0; // set flag to do trimming\r\n // set slope in v_lnInfo.z\r\n if (d2A.x - d2A.y > s_myFltEpsilon) {\r\n v_lnInfo.z = d2.y / d2.x;\r\n v_lnInfo.w += 2.0; // add in x-major flag\r\n } else\r\n v_lnInfo.z = d2.x / d2.y;\r\n\r\n } else if (width < 2.5) { // width 2\r\n if (tan <= 0.5)\r\n width = 2.0 * d2A.y;\r\n else\r\n width = (d2A.y + 2.0 * d2A.x);\r\n\r\n } else if (width < 3.5) { // width 3\r\n if (tan <= 1.0)\r\n width = (3.0 * d2A.y + d2A.x);\r\n else\r\n width = (d2A.y + 3.0 * d2A.x);\r\n\r\n } else { // if (width < 4.5) // width 4\r\n if (tan <= 0.5)\r\n width = (4.0 * d2A.y + d2A.x);\r\n else if (tan <= 2.0)\r\n width = (3.0 * d2A.y + 3.0 * d2A.x);\r\n else\r\n width = (d2A.y + 4.0 * d2A.x);\r\n }\r\n width /= len;\r\n }\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\r\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\r\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\r\n attr.setUniform1i(numSamples);\r\n });\r\n });\r\n vert.addFunction(adjustWidth);\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\r\n const lct = System.instance.lineCodeTexture;\r\n assert(undefined !== lct);\r\n if (undefined !== lct)\r\n lct.bindSampler(uniform, TextureUnit.LineCode);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCode(prog: ProgramBuilder, args: string) {\r\n const vert = prog.vert;\r\n const frag = prog.frag;\r\n\r\n addLineCodeUniform(vert);\r\n\r\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\r\n\r\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\r\n\r\n addFrustum(prog);\r\n addLineCodeTexture(prog.frag);\r\n\r\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\r\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\r\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\r\n}\r\n\r\nfunction polylineAddLineCode(prog: ProgramBuilder) {\r\n addLineCode(prog, lineCodeArgs);\r\n addModelViewMatrix(prog.vert);\r\n}\r\n\r\nfunction addCommon(prog: ProgramBuilder) {\r\n const vert = prog.vert;\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n addViewport(vert);\r\n\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addInitializer(decodeAdjacentPositions);\r\n\r\n vert.addFunction(unquantize2d);\r\n\r\n addLineWeight(vert);\r\n\r\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\r\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n\r\n addSamplePosition(vert);\r\n vert.addFunction(decodePosition);\r\n}\r\n\r\nconst decodePosition = `\r\nvec4 decodePosition(vec3 baseIndex) {\r\n float index = decodeUInt24(baseIndex);\r\n return samplePosition(index);\r\n}\r\n`;\r\n\r\nconst decodeAdjacentPositions = `\r\n g_prevPos = decodePosition(a_prevIndex);\r\n g_nextPos = decodePosition(a_nextIndex);\r\n`;\r\n\r\nconst computePosition = `\r\n const float kNone = 0.0,\r\n kSquare = 1.0*3.0,\r\n kMiter = 2.0*3.0,\r\n kMiterInsideOnly = 3.0*3.0,\r\n kJointBase = 4.0*3.0,\r\n kNegatePerp = 8.0*3.0,\r\n kNegateAlong = 16.0*3.0,\r\n kNoneAdjWt = 32.0*3.0;\r\n\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n\r\n vec4 next = g_nextPos;\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0)\r\n return g_windowPos;\r\n\r\n float param = a_param;\r\n float weight = computeLineWeight();\r\n float scale = 1.0, directionScale = 1.0;\r\n\r\n if (param >= kNoneAdjWt)\r\n param -= kNoneAdjWt;\r\n\r\n if (param >= kNegateAlong) {\r\n directionScale = -directionScale;\r\n param -= kNegateAlong;\r\n }\r\n\r\n if (param >= kNegatePerp) {\r\n scale = -1.0;\r\n param -= kNegatePerp;\r\n }\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\r\n g_windowDir = projNext.xy - g_windowPos.xy;\r\n\r\n if (param < kJointBase) {\r\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\r\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\r\n adjustWidth(weight, dir, pos);\r\n }\r\n\r\n if (kNone != param) {\r\n vec2 delta = vec2(0.0);\r\n vec4 prev = g_prevPos;\r\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\r\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\r\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\r\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\r\n float dist = weight / 2.0;\r\n\r\n if (thisLength > s_minNormalizeLength) {\r\n g_windowDir /= thisLength;\r\n\r\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\r\n\r\n if (prevLength > s_minNormalizeLength) {\r\n prevDir /= prevLength;\r\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\r\n float prevNextDot = dot(prevDir, g_windowDir);\r\n\r\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\r\n param = kSquare;\r\n } else\r\n param = kSquare;\r\n } else {\r\n g_windowDir = -normalize(prevDir);\r\n param = kSquare;\r\n }\r\n\r\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\r\n\r\n if (param == kSquare) {\r\n delta = perp;\r\n } else {\r\n vec2 bisector = normalize(prevDir - g_windowDir);\r\n float dotP = dot (bisector, perp);\r\n\r\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\r\n const float maxMiter = 3.0;\r\n float miterDistance = 1.0/dotP;\r\n\r\n if (param == kMiter) { // Straight miter.\r\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\r\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else {\r\n const float jointTriangleCount = 3.0;\r\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\r\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\r\n }\r\n }\r\n }\r\n\r\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\r\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\r\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\r\n }\r\n\r\n return pos;\r\n`;\r\n\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\r\n\r\n/** @internal */\r\nexport function createPolylineBuilder(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\r\n\r\n addShaderFlags(builder);\r\n\r\n addCommon(builder);\r\n\r\n polylineAddLineCode(builder);\r\n\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPolylineHiliter(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\r\n\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
4
|
import { ProgramBuilder } from "../ShaderBuilder";
|
|
5
|
-
import { IsAnimated, IsClassified, IsInstanced, IsThematic, TechniqueFlags } from "../TechniqueFlags";
|
|
5
|
+
import { IsAnimated, IsClassified, IsInstanced, IsThematic, PositionType, TechniqueFlags } from "../TechniqueFlags";
|
|
6
6
|
/** @internal */
|
|
7
|
-
export declare function createSurfaceHiliter(instanced: IsInstanced, classified: IsClassified): ProgramBuilder;
|
|
7
|
+
export declare function createSurfaceHiliter(instanced: IsInstanced, classified: IsClassified, posType: PositionType): ProgramBuilder;
|
|
8
8
|
/** @internal */
|
|
9
9
|
export declare const octDecodeNormal = "\nvec3 octDecodeNormal(vec2 e) {\n e = e / 255.0 * 2.0 - 1.0;\n vec3 n = vec3(e.x, e.y, 1.0 - abs(e.x) - abs(e.y));\n if (n.z < 0.0) {\n vec2 signNotZero = vec2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0);\n n.xy = (1.0 - abs(n.yx)) * signNotZero;\n }\n\n return normalize(n);\n}\n";
|
|
10
10
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACQ,UAAU,EAAE,YAAY,EAAE,WAAW,EAAgB,UAAU,EAAE,YAAY,EAAE,cAAc,EAC3G,MAAM,mBAAmB,CAAC;AA2O3B,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAc5H;AAgFD,gBAAgB;AAChB,eAAO,MAAM,eAAe,+SAW3B,CAAC;AAwEF,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,QAuBhH;AAoBD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,UAAQ,QAoCrH;AAED,eAAO,MAAM,wBAAwB,mWAQpC,CAAC;AA+BF,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA+E1E;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,cAAc,QAgB3E"}
|