@itwin/core-frontend 3.0.0-dev.98 → 3.1.0-dev.0
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 +89 -1
- package/LICENSE.md +1 -1
- package/lib/cjs/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +10 -5
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +2 -2
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js +2 -2
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +1 -1
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +10 -163
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +69 -350
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.d.ts +2 -2
- package/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +3 -3
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts +5 -0
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +12 -2
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +14 -4
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
- package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
- package/lib/cjs/EnvironmentDecorations.js +203 -0
- package/lib/cjs/EnvironmentDecorations.js.map +1 -0
- package/lib/cjs/FrontendHubAccess.d.ts +11 -7
- package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js +2 -8
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/HitDetail.js +7 -7
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +30 -17
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +33 -26
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +4 -6
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +6 -11
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModeljs-css.d.ts.map +1 -1
- package/lib/cjs/IModeljs-css.js +8 -6
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/ImageUtil.d.ts +3 -3
- package/lib/cjs/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/ImageUtil.js +7 -4
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +21 -7
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/Marker.d.ts +9 -2
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +33 -5
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelState.js +1 -1
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts +3 -38
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +4 -73
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +0 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +0 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/NotificationManager.d.ts +3 -1
- package/lib/cjs/NotificationManager.d.ts.map +1 -1
- package/lib/cjs/NotificationManager.js +2 -0
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +59 -29
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +247 -94
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RenderScheduleState.d.ts +2 -0
- package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
- package/lib/cjs/RenderScheduleState.js +10 -5
- package/lib/cjs/RenderScheduleState.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +2 -2
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +7 -6
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts +10 -2
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +12 -2
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/Tiles.d.ts +11 -1
- package/lib/cjs/Tiles.d.ts.map +1 -1
- package/lib/cjs/Tiles.js +7 -0
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
- package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
- package/lib/cjs/TwoWayViewportSync.js +51 -11
- package/lib/cjs/TwoWayViewportSync.js.map +1 -1
- package/lib/cjs/UserPreferences.d.ts +72 -0
- package/lib/cjs/UserPreferences.d.ts.map +1 -0
- package/lib/cjs/UserPreferences.js +7 -0
- package/lib/cjs/UserPreferences.js.map +1 -0
- package/lib/cjs/ViewContext.d.ts +3 -1
- package/lib/cjs/ViewContext.d.ts.map +1 -1
- package/lib/cjs/ViewContext.js +4 -0
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.d.ts +1 -1
- package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
- package/lib/cjs/ViewCreator3d.js +4 -5
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewManager.d.ts +6 -6
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +13 -13
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +11 -5
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +18 -63
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +57 -11
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +55 -31
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +10 -24
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +10 -24
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +3 -3
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +18 -2
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +9 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +3 -1
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/RenderMemory.d.ts +21 -15
- package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
- package/lib/cjs/render/RenderMemory.js +21 -15
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +38 -7
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +24 -9
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +10 -2
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js +2 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/RenderTexture.d.ts +2 -17
- package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/render/RenderTexture.js +0 -17
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/EdgeParams.js +220 -0
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.js +43 -0
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.js +205 -0
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
- package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
- package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Primitives.js.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +16 -352
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeMap.js +5 -5
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +6 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
- package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +41 -3
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +18 -458
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshData.js +66 -0
- package/lib/cjs/render/webgl/MeshData.js.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
- package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +2 -2
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +3 -3
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js +6 -6
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js +5 -5
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +9 -9
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
- package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +81 -48
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +64 -2
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/System.d.ts +11 -10
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +32 -21
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +13 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +88 -2
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +112 -119
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
- package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js +7 -7
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +15 -12
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +26 -23
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
- package/lib/cjs/render/webgl/glsl/Color.js +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
- 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 +43 -21
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
- package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
- package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
- package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/cjs/render-primitives.d.ts +5 -1
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +5 -1
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/request/Request.d.ts +167 -0
- package/lib/cjs/request/Request.d.ts.map +1 -0
- package/lib/cjs/request/Request.js +315 -0
- package/lib/cjs/request/Request.js.map +1 -0
- package/lib/cjs/tile/B3dmReader.d.ts +2 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +11 -7
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
- package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
- package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
- package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
- package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
- package/lib/cjs/tile/ContextShareProvider.js +129 -0
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
- package/lib/cjs/tile/DynamicIModelTile.js +9 -3
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +594 -55
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +703 -264
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.d.ts +2 -1
- package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/I3dmReader.js +10 -6
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTile.js +14 -7
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
- package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +36 -1
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +365 -10
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +201 -69
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +10 -20
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +69 -14
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -41
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +57 -217
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +4 -3
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +5 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +37 -4
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +18 -12
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +6 -1
- package/lib/cjs/tile/TileDrawArgs.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 +5 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +4 -1
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +4 -1
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
- package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +4 -4
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +5 -34
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +4 -3
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +2 -2
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +30 -21
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.d.ts +1 -0
- package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
- package/lib/cjs/tile/map/QuadId.js +2 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
- package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +1 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +2 -2
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
- package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +2 -2
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts +29 -1
- package/lib/cjs/tools/Tool.d.ts.map +1 -1
- package/lib/cjs/tools/Tool.js +66 -0
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +20 -10
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +3 -11
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/webgl.d.ts +5 -0
- package/lib/cjs/webgl.d.ts.map +1 -1
- package/lib/cjs/webgl.js +5 -0
- package/lib/cjs/webgl.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +10 -5
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +2 -2
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BingLocation.js +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/CheckpointConnection.js +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/ContextRealityModelState.js +1 -1
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +10 -163
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +70 -346
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.d.ts +2 -2
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +3 -3
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts +5 -0
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +12 -2
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +14 -4
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.d.ts +39 -0
- package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
- package/lib/esm/EnvironmentDecorations.js +199 -0
- package/lib/esm/EnvironmentDecorations.js.map +1 -0
- package/lib/esm/FrontendHubAccess.d.ts +11 -7
- package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
- package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js +2 -8
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/HitDetail.js +7 -7
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +30 -17
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +32 -25
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +4 -6
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +6 -11
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModeljs-css.d.ts.map +1 -1
- package/lib/esm/IModeljs-css.js +8 -6
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/ImageUtil.d.ts +3 -3
- package/lib/esm/ImageUtil.d.ts.map +1 -1
- package/lib/esm/ImageUtil.js +7 -4
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts +2 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +22 -8
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/Marker.d.ts +9 -2
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +34 -6
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelState.js +1 -1
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts +3 -38
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +1 -69
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +0 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +0 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/NotificationManager.d.ts +3 -1
- package/lib/esm/NotificationManager.d.ts.map +1 -1
- package/lib/esm/NotificationManager.js +2 -0
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +59 -29
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +247 -92
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RenderScheduleState.d.ts +2 -0
- package/lib/esm/RenderScheduleState.d.ts.map +1 -1
- package/lib/esm/RenderScheduleState.js +8 -4
- package/lib/esm/RenderScheduleState.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +2 -2
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +7 -6
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts +10 -2
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +12 -2
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/Tiles.d.ts +11 -1
- package/lib/esm/Tiles.d.ts.map +1 -1
- package/lib/esm/Tiles.js +7 -0
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/TwoWayViewportSync.d.ts +35 -6
- package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
- package/lib/esm/TwoWayViewportSync.js +49 -10
- package/lib/esm/TwoWayViewportSync.js.map +1 -1
- package/lib/esm/UserPreferences.d.ts +72 -0
- package/lib/esm/UserPreferences.d.ts.map +1 -0
- package/lib/esm/UserPreferences.js +6 -0
- package/lib/esm/UserPreferences.js.map +1 -0
- package/lib/esm/ViewContext.d.ts +3 -1
- package/lib/esm/ViewContext.d.ts.map +1 -1
- package/lib/esm/ViewContext.js +4 -0
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.d.ts +1 -1
- package/lib/esm/ViewCreator3d.d.ts.map +1 -1
- package/lib/esm/ViewCreator3d.js +5 -6
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewManager.d.ts +6 -6
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +13 -13
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewState.d.ts +11 -5
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +21 -66
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +57 -11
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +56 -32
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +10 -24
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +10 -24
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +3 -3
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +18 -2
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +8 -0
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +7 -1
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +3 -1
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/RenderMemory.d.ts +21 -15
- package/lib/esm/render/RenderMemory.d.ts.map +1 -1
- package/lib/esm/render/RenderMemory.js +21 -15
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +38 -7
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +24 -9
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +10 -2
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js +2 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/RenderTexture.d.ts +2 -17
- package/lib/esm/render/RenderTexture.d.ts.map +1 -1
- package/lib/esm/render/RenderTexture.js +1 -16
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/EdgeParams.js +217 -0
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.js +39 -0
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.js +199 -0
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
- package/lib/esm/render/primitives/Primitives.d.ts +1 -1
- package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/Primitives.js.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/SurfaceParams.js +37 -0
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +11 -342
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
- package/lib/esm/render/webgl/AttributeMap.js +5 -5
- package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +8 -5
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +26 -23
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +6 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.js +13 -11
- package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +13 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +39 -2
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +8 -162
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +12 -445
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +38 -0
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshData.js +62 -0
- package/lib/esm/render/webgl/MeshData.js.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.js +55 -0
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js +3 -3
- package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +2 -2
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +3 -3
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +3 -3
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js +6 -6
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +2 -2
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js +5 -5
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +9 -9
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
- package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +78 -45
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +63 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +10 -9
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +4 -4
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/esm/render/webgl/System.d.ts +11 -10
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +34 -23
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +13 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +88 -2
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +112 -119
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
- package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js +7 -7
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +15 -12
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +27 -24
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
- package/lib/esm/render/webgl/glsl/Color.js +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
- package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +132 -14
- 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 +44 -22
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
- package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
- package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
- package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
- package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
- package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +41 -16
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
- package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/esm/render-primitives.d.ts +5 -1
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +5 -1
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/request/Request.d.ts +167 -0
- package/lib/esm/request/Request.d.ts.map +1 -0
- package/lib/esm/request/Request.js +289 -0
- package/lib/esm/request/Request.js.map +1 -0
- package/lib/esm/tile/B3dmReader.d.ts +2 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +12 -8
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
- package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
- package/lib/esm/tile/CesiumAssetProvider.js +31 -0
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
- package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
- package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
- package/lib/esm/tile/ContextShareProvider.js +125 -0
- package/lib/esm/tile/ContextShareProvider.js.map +1 -0
- package/lib/esm/tile/DynamicIModelTile.js +9 -3
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +594 -55
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +678 -242
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/I3dmReader.d.ts +2 -1
- package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/I3dmReader.js +11 -7
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.d.ts.map +1 -1
- package/lib/esm/tile/IModelTile.js +14 -7
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.d.ts +8 -0
- package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +36 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +365 -10
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +198 -67
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +10 -20
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +70 -15
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts +2 -41
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +56 -215
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +4 -3
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +5 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +37 -4
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +19 -13
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +6 -1
- package/lib/esm/tile/TileDrawArgs.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 +5 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +4 -1
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +4 -1
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
- package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
- package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
- package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
- package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +1 -1
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +21 -25
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +7 -36
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +4 -3
- 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.d.ts +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +30 -21
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
- package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +22 -9
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.d.ts +1 -0
- package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
- package/lib/esm/tile/map/QuadId.js +2 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +37 -3
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
- package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
- package/lib/esm/tools/EditManipulator.js +1 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +2 -2
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
- package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +2 -2
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts +29 -1
- package/lib/esm/tools/Tool.d.ts.map +1 -1
- package/lib/esm/tools/Tool.js +66 -0
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +20 -10
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +3 -11
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/webgl.d.ts +5 -0
- package/lib/esm/webgl.d.ts.map +1 -1
- package/lib/esm/webgl.js +5 -0
- package/lib/esm/webgl.js.map +1 -1
- package/lib/public/locales/en/iModelJs.json +3 -1
- package/package.json +33 -28
- package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
- package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
- package/lib/cjs/RealityDataAccessProps.js +0 -23
- package/lib/cjs/RealityDataAccessProps.js.map +0 -1
- package/lib/cjs/RealityDataConnection.d.ts +0 -31
- package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
- package/lib/cjs/RealityDataConnection.js +0 -101
- package/lib/cjs/RealityDataConnection.js.map +0 -1
- package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
- package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
- package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
- package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
- package/lib/esm/RealityDataAccessProps.d.ts +0 -44
- package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
- package/lib/esm/RealityDataAccessProps.js +0 -20
- package/lib/esm/RealityDataAccessProps.js.map +0 -1
- package/lib/esm/RealityDataConnection.d.ts +0 -31
- package/lib/esm/RealityDataConnection.d.ts.map +0 -1
- package/lib/esm/RealityDataConnection.js +0 -98
- package/lib/esm/RealityDataConnection.js.map +0 -1
- package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
- package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
- package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
- package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\n/** For techniques which by default use MRT, on devices which don't support MRT we fall back to\r\n * multi-pass rendering. The same shader is used each pass, with a uniform supplied indicating\r\n * which value to output to gl_FragColor. It's specified as an index - the same one that would be\r\n * used to index into gl_FragData[] in MRT context.\r\n * @internal\r\n */\r\nexport function addRenderTargetIndex(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_renderTargetIndex\", VariableType.Int, (prog) => {\r\n prog.addProgramUniform(\"u_renderTargetIndex\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.compositor.currentRenderTargetIndex);\r\n });\r\n });\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(u_renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst assignPickBufferOutputsMP = `\r\n if (0 == u_renderTargetIndex)\r\n FragColor = output0;\r\n else if (1 == u_renderTargetIndex)\r\n FragColor = output1;\r\n else\r\n FragColor = output2;\r\n`;\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
|
|
1
|
+
{"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\n/** For techniques which by default use MRT, on devices which don't support MRT we fall back to\r\n * multi-pass rendering. The same shader is used each pass, with a uniform supplied indicating\r\n * which value to output to gl_FragColor. It's specified as an index - the same one that would be\r\n * used to index into gl_FragData[] in MRT context.\r\n * @internal\r\n */\r\nexport function addRenderTargetIndex(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_renderTargetIndex\", VariableType.Int, (prog) => {\r\n prog.addProgramUniform(\"u_renderTargetIndex\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.compositor.currentRenderTargetIndex);\r\n });\r\n });\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst assignPickBufferOutputsMP = `\r\n if (0 == u_renderTargetIndex)\r\n FragColor = output0;\r\n else if (1 == u_renderTargetIndex)\r\n FragColor = output1;\r\n else\r\n FragColor = output2;\r\n`;\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\r\n if (overrideOrder) {\r\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\r\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\r\n } else {\r\n prelude.addline(\" float renderOrder = u_renderOrder;\");\r\n }\r\n\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n if (System.instance.capabilities.supportsMRTPickShaders) {\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n } else {\r\n addRenderTargetIndex(frag);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMP);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
|
|
@@ -24,6 +24,6 @@ export function addLogDepth(builder) {
|
|
|
24
24
|
});
|
|
25
25
|
if (!System.instance.capabilities.isWebGL2)
|
|
26
26
|
frag.addExtension("GL_EXT_frag_depth");
|
|
27
|
-
frag.set(
|
|
27
|
+
frag.set(18 /* FinalizeDepth */, finalizeDepth);
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=LogarithmicDepthBuffer.js.map
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
4
|
import { VertexShaderBuilder } from "../ShaderBuilder";
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult?: string, addInitializer?: boolean): string;
|
|
7
9
|
//# sourceMappingURL=LookupTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LookupTable.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA2BrE
|
|
1
|
+
{"version":3,"file":"LookupTable.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA2BrE;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,EAAE,cAAc,UAAO,GAAG,MAAM,CAyB5H"}
|
|
@@ -27,8 +27,10 @@ const initializerTemplate = `
|
|
|
27
27
|
float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;
|
|
28
28
|
{LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});
|
|
29
29
|
`;
|
|
30
|
-
/**
|
|
31
|
-
|
|
30
|
+
/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export function addLookupTable(sb, lutName, mult = "1.0", addInitializer = true) {
|
|
32
34
|
sb.addFunction(computeLUTCoords);
|
|
33
35
|
const lutStepX = `g_${lutName}_stepX`;
|
|
34
36
|
const lutStepY = `${lutName}_stepY`;
|
|
@@ -41,10 +43,12 @@ export function addLookupTable(sb, lutName, mult = "1.0") {
|
|
|
41
43
|
initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);
|
|
42
44
|
initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);
|
|
43
45
|
initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);
|
|
44
|
-
|
|
46
|
+
if (addInitializer)
|
|
47
|
+
sb.addInitializer(initializerSpecific);
|
|
45
48
|
let computeCoordsSpecific = computeCoordsTemplate;
|
|
46
49
|
computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);
|
|
47
50
|
computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);
|
|
48
51
|
sb.addFunction(computeCoordsSpecific);
|
|
52
|
+
return initializerSpecific;
|
|
49
53
|
}
|
|
50
54
|
//# sourceMappingURL=LookupTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAuB,EAAE,OAAe,EAAE,OAAe,KAAK,EAAE,cAAc,GAAG,IAAI;IAClH,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,OAAO,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;IAEvC,EAAE,CAAC,SAAS,CAAC,QAAQ,gBAAqB,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,SAAS,eAAoB,CAAC;IAE3C,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;IAC9C,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,IAAI,cAAc;QAChB,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEzC,IAAI,qBAAqB,GAAG,qBAAqB,CAAC;IAClD,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,OAAO,mBAAmB,CAAC;AAC7B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\n\r\nconst computeLUTCoords = `\r\nvec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {\r\n float baseIndex = index*mult;\r\n\r\n // Fix precision issues wherein mod(x,y) => y instead of 0 when x is multiple of y...\r\n float epsilon = 0.5 / dimensions.x;\r\n float yId = floor(baseIndex / dimensions.x + epsilon);\r\n float xId = baseIndex - dimensions.x * yId; // replaces mod()...\r\n\r\n return center + vec2(xId/dimensions.x, yId/dimensions.y);\r\n}\r\n`;\r\n\r\nconst computeCoordsTemplate = `\r\nvec2 compute_{LUTNAME}_coords(float index) {\r\n return computeLUTCoords(index, u_{LUTNAME}Params.xy, g_{LUTNAME}_center, {MULT});\r\n}\r\n`;\r\n\r\nconst initializerTemplate = `\r\n {LUTSTEPX} = 1.0 / {LUTPARAMS}.x;\r\n float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;\r\n {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});\r\n`;\r\n\r\n/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.\r\n * @internal\r\n */\r\nexport function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult: string = \"1.0\", addInitializer = true): string {\r\n sb.addFunction(computeLUTCoords);\r\n\r\n const lutStepX = `g_${lutName}_stepX`;\r\n const lutStepY = `${lutName}_stepY`;\r\n const lutCenter = `g_${lutName}_center`;\r\n const lutParams = `u_${lutName}Params`;\r\n\r\n sb.addGlobal(lutStepX, VariableType.Float);\r\n sb.addGlobal(lutCenter, VariableType.Vec2);\r\n\r\n let initializerSpecific = initializerTemplate;\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPX}/g, lutStepX);\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);\r\n initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);\r\n initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);\r\n if (addInitializer)\r\n sb.addInitializer(initializerSpecific);\r\n\r\n let computeCoordsSpecific = computeCoordsTemplate;\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);\r\n sb.addFunction(computeCoordsSpecific);\r\n\r\n return initializerSpecific;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarClassification.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2B,cAAc,EAA+B,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,eAAO,MAAM,mBAAmB,qMAM/B,CAAC;
|
|
1
|
+
{"version":3,"file":"PlanarClassification.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2B,cAAc,EAA+B,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,eAAO,MAAM,mBAAmB,qMAM/B,CAAC;AAmNF,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,QAyD7G;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,QAiBjE;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,UAAO,QAYxF;AAkED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAgBhG"}
|
|
@@ -44,6 +44,12 @@ if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain dra
|
|
|
44
44
|
return vec4(rgb, baseColor.a);
|
|
45
45
|
}
|
|
46
46
|
float imageCount = u_pClassColorParams.z;
|
|
47
|
+
// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
|
|
48
|
+
bool doInvert = false;
|
|
49
|
+
if (imageCount < 0.0) {
|
|
50
|
+
imageCount = - imageCount;
|
|
51
|
+
doInvert = true;
|
|
52
|
+
}
|
|
47
53
|
|
|
48
54
|
vec4 colorTexel = vec4(0);
|
|
49
55
|
vec4 maskTexel = vec4(0);
|
|
@@ -70,7 +76,10 @@ if (!isOutside) {
|
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
if (doMask) {
|
|
73
|
-
|
|
79
|
+
bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
|
|
80
|
+
if (doInvert)
|
|
81
|
+
masked = !masked;
|
|
82
|
+
if (masked) {
|
|
74
83
|
float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
|
|
75
84
|
if (maskTransparency <= 0.0) {
|
|
76
85
|
discard;
|
|
@@ -281,7 +290,7 @@ export function addFeaturePlanarClassifier(builder) {
|
|
|
281
290
|
uniform.setUniform4fv(scratchBatchBaseComponents);
|
|
282
291
|
});
|
|
283
292
|
});
|
|
284
|
-
frag.set(
|
|
293
|
+
frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
|
|
285
294
|
frag.addFunction(addUInt32s);
|
|
286
295
|
}
|
|
287
296
|
/** @internal */
|
|
@@ -370,8 +379,8 @@ export function addOverrideClassifierColor(builder, isThematic) {
|
|
|
370
379
|
const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
|
|
371
380
|
builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
|
|
372
381
|
if (isThematic === 0 /* No */)
|
|
373
|
-
builder.frag.set(
|
|
382
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
|
|
374
383
|
else
|
|
375
|
-
builder.frag.set(
|
|
384
|
+
builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
|
|
376
385
|
}
|
|
377
386
|
//# sourceMappingURL=PlanarClassification.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n if (!isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a > 0.0)) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;CAMlC,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;CAIhC,CAAC;AAEF,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuExC,CACE;AAEH,4EAA4E;AAC5E,sDAAsD;AACtD,MAAM,8BAA8B,GAAG,gCAAgC,GAAG,sCAAsC;IAC9G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BD,CAAC;AAEF,MAAM,yCAAyC,GAAG,gCAAgC,GAAG,sCAAsC;IACzH;;;;;;;;;;;;;;;;;;;;;;;;;CAyBD,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;GAKvB,CAAC;AAEJ,MAAM,4BAA4B,GAAG;;;CAGpC,CAAC;AACF,MAAM,mCAAmC,GAAG;;;EAG1C,4BAA4B,EAAE,CAAC;AAEjC,MAAM,oBAAoB,GAAG,0EAA0E,CAAC;AACxG,MAAM,6BAA6B,GAAG,iGAAiG,CAAC;AACxI,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,kBAAkB,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,0BAA0B,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAM,0JAA0J;AAC/M,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;AAC/C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;AACzD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAEpC,SAAS,yBAAyB,CAAC,OAAuB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,gBAAqB,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA+B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE;gBAC9D,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,sBAAsB,CAAC,CAAC;gBAC7I,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;aACxD;;gBACC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,8CAA8C;YAC9E,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,qBAAqB;QAC5B,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,wBAAwB,CAAC,aAAa,gBAAqB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACtJ,OAAO,CAAC,wBAAwB,CAAC,cAAc,iBAAsB,qBAAqB,CAAC,CAAC;IAE5F,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAsB;IAC1D,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,SAAS,CAAC,4BAA4B,EAAE,8BAA8B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,EAAE,GAAG,8BAA8B,CAAC,YAAY,GAAG,CAAC,CAAC;IAC3D,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,+BAA+B,EAAE,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,SAAS,CAAC,kCAAkC,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,wBAAwB,CAAC,OAAuB,EAAE,WAAoB,EAAE,UAAsB;IAC5G,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,iBAAiB,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;aAC/E;;gBACC,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,QAAS,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,qBAAqB,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACjE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC;YAC7D,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;aACtC;iBAAM;gBACL,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uCAAuC;gBACzE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;gBACzD,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;gBACzD,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAM,uBAAuB;aAC1D;YACD,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,eAAkB,EAAE;QAChC,IAAI,CAAC,UAAU,CAAC,oBAAoB,mBAAwB,CAAC,IAAI,EAAE,EAAE;YACnE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;gBACzD,MAAM,YAAY,GAAG,SAAS,KAAK,UAAU,IAAI,UAAU,CAAC,uBAAuB,CAAC;gBACpF,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,WAAW;QACb,2EAA2E;QAC3E,yGAAyG;QACzG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;SACxC;QACH,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;KACvC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,IAAI,CAAC,GAAG,iCAAgD,CAAC,UAAU,eAAkB,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC;AACvK,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,0BAA0B,CAAC,OAAuB;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,gBAAqB,CAAC,IAAI,EAAE,EAAE;QACzD,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;YACzD,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,kBAAkB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC/C,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,0BAA0B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,6BAA4C,iBAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAC,OAAuB,EAAE,eAAe,GAAG,IAAI;IACvF,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,uBAAuB,qBAA0B,CAAC,IAAI,EAAE,EAAE;QACxE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAwB,CAAC;YAC1D,MAAM,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;YAC3E,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,2BAA2C,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAC3I,CAAC;AAED,mGAAmG;AACnG,MAAM,8BAA8B,GAAG;;;;;CAKtC,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;CAK1B,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;CAMlC,CAAC;AAEF,MAAM,+BAA+B,GAAG;;CAEvC,CAAC;AAEF,MAAM,8BAA8B,GAAG,8BAA8B,GAAG,0BAA0B,GAAG,+BAA+B,CAAC;AACrI,MAAM,yBAAyB,GAAG,8BAA8B,GAAG,+BAA+B,CAAC;AAEnG,MAAM,yCAAyC,GAAG;;;;;;;;CAQjD,CAAC;AAEF,MAAM,qCAAqC,GAAG;;;;;;CAM7C,CAAC;AAEF,gJAAgJ;AAChJ,MAAM,8CAA8C,GAAG;;CAEtD,CAAC;AAEF,MAAM,yCAAyC,GAAG,yCAAyC,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACtK,MAAM,oCAAoC,GAAG,yCAAyC,GAAG,8CAA8C,CAAC;AAExI;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAuB,EAAE,UAAsB;IACxF,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,8BAA8B,iBAAsB,CAAC,IAAI,EAAE,EAAE;QACnF,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;YAC5D,MAAM,QAAQ,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9F,IAAI,UAAU,eAAkB;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,yBAAwC,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;;QAEpI,OAAO,CAAC,IAAI,CAAC,GAAG,yBAAwC,aAAa,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;AAC9J,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
|
|
@@ -45,10 +45,10 @@ const fwidth2dWhenNotAvailable = `\nvec2 screenSpaceDeriv(vec2 screenXY) { retur
|
|
|
45
45
|
const defaultTransparency = new PlanarGridTransparency();
|
|
46
46
|
/** @internal */
|
|
47
47
|
export default function createPlanarGridProgram(context) {
|
|
48
|
-
const builder = new ProgramBuilder(AttributeMap.findAttributeMap(
|
|
48
|
+
const builder = new ProgramBuilder(AttributeMap.findAttributeMap(8 /* PlanarGrid */, false));
|
|
49
49
|
const vert = builder.vert;
|
|
50
50
|
const frag = builder.frag;
|
|
51
|
-
vert.set(
|
|
51
|
+
vert.set(10 /* ComputePosition */, computePosition);
|
|
52
52
|
addModelViewProjectionMatrix(vert);
|
|
53
53
|
addShaderFlags(builder);
|
|
54
54
|
addTranslucency(builder);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA2B,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEhH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,eAAe,GAAG,8CAA8C,CAAC;AACvE,MAAM,eAAe,GAAG,oDAAoD,CAAC;AAE7E,MAAM,gBAAgB,GAAG;;;;;;;;CAQxB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;CAcpB,CAAC;AAEF,MAAM,qBAAqB,GAAI,uEAAuE,CAAC;AACvG,MAAM,wBAAwB,GAAI,uEAAuE,CAAC;AAE1G,MAAM,mBAAmB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACzD,gBAAgB;AAChB,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,OAAqB;IACnE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,gBAAgB,qBAAyB,KAAK,CAAC,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\n\r\nconst computeBaseColor = `\r\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\r\n vec4 color = vec4(u_gridColor, u_gridProps.y);\r\n float refsPerGrid = u_gridProps.x;\r\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\r\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\r\n\r\n return color;\r\n`;\r\n\r\nconst drawGridLine = `\r\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\r\n vec2 scaledTexCoord = v_texCoord * mult;\r\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\r\n if (deriv.x != 0.0 && deriv.y != 0.0) {\r\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\r\n float line = min(grid.x, grid.y);\r\n if (line < 1.0) {\r\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n`;\r\n\r\nconst fwidth2dWhenAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\r\nconst fwidth2dWhenNotAvailable = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return vec2(0.25, 0.25); }\\n`;\r\n\r\nconst defaultTransparency = new PlanarGridTransparency();\r\n/** @internal */\r\nexport default function createPlanarGridProgram(context: WebGLContext): ShaderProgram {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n addShaderFlags(builder);\r\n\r\n addTranslucency(builder);\r\n if (System.instance.capabilities.isWebGL2) {\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else if (System.instance.capabilities.supportsStandardDerivatives) {\r\n frag.addExtension(\"GL_OES_standard_derivatives\");\r\n frag.addFunction(fwidth2dWhenAvailable);\r\n } else {\r\n frag.addFunction(fwidth2dWhenNotAvailable);\r\n }\r\n\r\n if (System.instance.supportsLogZBuffer)\r\n addLogDepth(builder);\r\n\r\n frag.addFunction(drawGridLine);\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n vert.headerComment = `//!V! PlanarGrid`;\r\n frag.headerComment = `//!F! PlanarGrid`;\r\n\r\n vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n uniform.setUniform4fv(planarGrid.uvParams.params);\r\n });\r\n });\r\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n const color = planarGrid.props.color.colors;\r\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\r\n });\r\n });\r\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\r\n const planarGridProps = params.geometry.asPlanarGrid!.props;\r\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\r\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\r\n });\r\n });\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n"]}
|
|
@@ -36,7 +36,7 @@ function createBuilder() {
|
|
|
36
36
|
const vert = builder.vert;
|
|
37
37
|
addLineWeight(vert);
|
|
38
38
|
addViewportTransformation(vert);
|
|
39
|
-
vert.set(
|
|
39
|
+
vert.set(10 /* ComputePosition */, computePosition);
|
|
40
40
|
addModelViewProjectionMatrix(vert);
|
|
41
41
|
return builder;
|
|
42
42
|
}
|
|
@@ -45,7 +45,7 @@ const scratchPointCloudParams = new Float32Array(2);
|
|
|
45
45
|
export function createPointCloudBuilder(classified, featureMode, thematic) {
|
|
46
46
|
const builder = createBuilder();
|
|
47
47
|
builder.addVarying("v_color", 5 /* Vec4 */);
|
|
48
|
-
builder.vert.set(
|
|
48
|
+
builder.vert.set(5 /* ComputeBaseColor */, computeColor);
|
|
49
49
|
const frag = builder.frag;
|
|
50
50
|
frag.set(1 /* ComputeBaseColor */, computeBaseColor);
|
|
51
51
|
frag.set(0 /* CheckForEarlyDiscard */, roundPointDiscard);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointCloud.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA2B,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAGhH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACzH,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,YAAY,GAAG,yGAAyG,CAAC;AAC/H,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAE3C,MAAM,iBAAiB,GAAG;;;CAGzB,CAAC;AAEF,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAE/D,MAAM,eAAe,GAAG;;;;;;;;;;CAUvB,CAAC;AAEF,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,gBAAgB,qBAAyB,KAAK,CAAC,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointCloud.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { FeatureMode, IsAnimated, IsClassified, IsThematic } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addUniformHiliter } from \"./FeatureSymbology\";\r\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\nimport { addViewportTransformation } from \"./Viewport\";\r\nimport { addThematicDisplay } from \"./Thematic\";\r\nimport { addTexture } from \"./Surface\";\r\n\r\nconst computeColor = \"return (u_pointCloudParams.x == 1.0) ? vec4(a_color.z, a_color.y, a_color.x, 1.0) : vec4(a_color, 1.0);\";\r\nconst computeBaseColor = \"return v_color;\";\r\n\r\nconst roundPointDiscard = `\r\n vec2 pointXY = (2.0 * gl_PointCoord - 1.0);\r\n return dot(pointXY, pointXY) > 1.0;\r\n`;\r\n\r\nconst checkForClassifiedDiscard = \"return baseColor.a == 0.0;\";\r\n\r\nconst computePosition = `\r\n gl_PointSize = 1.0;\r\n vec4 pos = MAT_MVP * rawPos;\r\n\r\n if (u_lineWeight < 0.0 && pos.w > 0.0) {\r\n mat4 toView = u_viewportTransformation * MAT_MVP;\r\n float scale = length(toView[0].xyz);\r\n gl_PointSize = clamp (- u_lineWeight * scale / pos.w, 2.0, 20.0);\r\n }\r\n return pos;\r\n`;\r\n\r\nfunction createBuilder(): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PointCloud, false));\r\n const vert = builder.vert;\r\n addLineWeight(vert);\r\n addViewportTransformation(vert);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n return builder;\r\n}\r\n\r\nconst scratchPointCloudParams = new Float32Array(2);\r\n/** @internal */\r\nexport function createPointCloudBuilder(classified: IsClassified, featureMode: FeatureMode, thematic: IsThematic): ProgramBuilder {\r\n const builder = createBuilder();\r\n\r\n builder.addVarying(\"v_color\", VariableType.Vec4);\r\n builder.vert.set(VertexShaderComponent.ComputeBaseColor, computeColor);\r\n\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundPointDiscard);\r\n if (classified) {\r\n addColorPlanarClassifier(builder, false, thematic);\r\n builder.frag.set(FragmentShaderComponent.CheckForDiscard, checkForClassifiedDiscard);\r\n\r\n if (FeatureMode.None !== featureMode)\r\n addFeaturePlanarClassifier(builder);\r\n }\r\n\r\n if (IsThematic.Yes === thematic) {\r\n addThematicDisplay(builder, true);\r\n addTexture(builder, IsAnimated.No, IsThematic.Yes, true);\r\n }\r\n\r\n builder.vert.addUniform(\"u_pointCloudParams\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_pointCloudParams\", (uniform, params) => {\r\n const pointCloud = params.geometry.asPointCloud!;\r\n scratchPointCloudParams[0] = pointCloud.colorIsBgr ? 1 : 0; // Volume classifier, by element color.\r\n scratchPointCloudParams[1] = pointCloud.minimumPointSize;\r\n uniform.setUniform2fv(scratchPointCloudParams);\r\n });\r\n });\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointCloudHiliter(classified: IsClassified): ProgramBuilder {\r\n const builder = createBuilder();\r\n addUniformHiliter(builder);\r\n if (classified)\r\n addHilitePlanarClassifier(builder, false);\r\n\r\n return builder;\r\n}\r\n"]}
|
|
@@ -32,7 +32,7 @@ function createBase(instanced) {
|
|
|
32
32
|
const attrMap = AttributeMap.findAttributeMap(3 /* PointString */, 1 /* Yes */ === instanced);
|
|
33
33
|
const builder = new ProgramBuilder(attrMap, instanced ? 3 /* InstancedVertexTable */ : 1 /* VertexTable */);
|
|
34
34
|
const vert = builder.vert;
|
|
35
|
-
vert.set(
|
|
35
|
+
vert.set(10 /* ComputePosition */, computePosition);
|
|
36
36
|
addModelViewProjectionMatrix(vert);
|
|
37
37
|
addLineWeight(vert);
|
|
38
38
|
builder.addInlineComputedVarying("v_roundCorners", 2 /* Float */, computeRoundCorners);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA2B,cAAc,EAA2D,MAAM,kBAAkB,CAAC;AAGpI,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,sBAA0B,gBAAoB,SAAS,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,8BAAyC,CAAC,oBAA+B,CAAC,CAAC;IAClI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"PointString.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PointString.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA2B,cAAc,EAA2D,MAAM,kBAAkB,CAAC;AAGpI,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAEvE,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,uFAAuF;AACvF,4GAA4G;AAC5G,2EAA2E;AAC3E,6BAA6B;AAC7B,MAAM,YAAY,GAAG;;;;CAIpB,CAAC;AAEF,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,SAAS,UAAU,CAAC,SAAsB;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,sBAA0B,gBAAoB,SAAS,CAAC,CAAC;IAEtG,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,8BAAyC,CAAC,oBAA+B,CAAC,CAAC;IAClI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,2BAAwC,eAAe,CAAC,CAAC;IACjE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAEnC,aAAa,CAAC,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,MAAM,UAAU,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,wBAAwB,CAAC,SAAsB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilderFlags, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { IsInstanced } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport { addLineWeight, addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = `\r\n float lineWeight = computeLineWeight();\r\n lineWeight += 0.5 * float(lineWeight > 4.0); // fudge factor for rounding fat points...\r\n gl_PointSize = lineWeight;\r\n return MAT_MVP * rawPos;\r\n`;\r\n\r\n// gl_PointSize specifies coordinates of this fragment within the point in range [0,1].\r\n// This should be the most precise of the many approaches we've tried, but it still yields some asymmetry...\r\n// Discarding if it meets radius precisely seems to reduce that slightly...\r\n// ###TODO try point sprites?\r\nconst roundCorners = `\r\n const vec2 center = vec2(0.5, 0.5);\r\n vec2 vt = gl_PointCoord - center;\r\n return dot(vt, vt) * v_roundCorners >= 0.25; // meets or exceeds radius of circle\r\n`;\r\n\r\nconst computeRoundCorners = \" v_roundCorners = gl_PointSize > 4.0 ? 1.0 : 0.0;\";\r\n\r\nfunction createBase(instanced: IsInstanced): ProgramBuilder {\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.PointString, IsInstanced.Yes === instanced);\r\n\r\n const builder = new ProgramBuilder(attrMap, instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n addLineWeight(vert);\r\n builder.addInlineComputedVarying(\"v_roundCorners\", VariableType.Float, computeRoundCorners);\r\n builder.frag.set(FragmentShaderComponent.CheckForEarlyDiscard, roundCorners);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringHiliter(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPointStringBuilder(instanced: IsInstanced): ProgramBuilder {\r\n const builder = createBase(instanced);\r\n addShaderFlags(builder);\r\n addColor(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n return builder;\r\n}\r\n"]}
|
|
@@ -175,7 +175,7 @@ function addCommon(prog) {
|
|
|
175
175
|
addLineWeight(vert);
|
|
176
176
|
vert.addGlobal("miterAdjust", 2 /* Float */, "0.0");
|
|
177
177
|
prog.addVarying("v_eyeSpace", 4 /* Vec3 */);
|
|
178
|
-
vert.set(
|
|
178
|
+
vert.set(10 /* ComputePosition */, computePosition);
|
|
179
179
|
prog.addVarying("v_lnInfo", 5 /* Vec4 */);
|
|
180
180
|
addAdjustWidth(vert);
|
|
181
181
|
vert.addFunction(decodePosition);
|
|
@@ -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, ShaderBuilderFlags, 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 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\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(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\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(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\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, ShaderBuilderFlags, 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 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\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(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\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(instanced: IsInstanced): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.Polyline, IsInstanced.Yes === instanced), instanced ? ShaderBuilderFlags.InstancedVertexTable : ShaderBuilderFlags.VertexTable);\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoKvG,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,cAAc,CAInE;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,cAAc,CAIzD;AAED,gBAAgB;AAChB,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAwEtF"}
|