@itwin/core-frontend 4.0.3 → 4.0.4
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 +18 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts +3 -3
- package/lib/cjs/BriefcaseConnection.js +3 -3
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/ChangeFlags.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/CoordSystem.js.map +1 -1
- package/lib/cjs/DecorationsCache.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +5 -5
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EntityState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/Frustum2d.js.map +1 -1
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/FuzzySearch.js.map +1 -1
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +23 -23
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IModeljs-css.js +133 -133
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/MarginPercent.js.map +1 -1
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelSelectorState.js.map +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/StandardView.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/UserPreferences.js.map +1 -1
- package/lib/cjs/ViewAnimation.js.map +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewRect.js.map +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewStatus.js.map +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/ViewportSync.js.map +1 -1
- package/lib/cjs/WebWorkerManager.js.map +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/Extension.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/ExtensionHost.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/cjs/gltf/GltfModel.js.map +1 -1
- package/lib/cjs/gltf/GltfParser.js.map +1 -1
- package/lib/cjs/gltf/GltfSchema.js.map +1 -1
- package/lib/cjs/properties/AngleDescription.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/properties/LengthDescription.js.map +1 -1
- package/lib/cjs/public/scripts/checkbrowser.js +24 -24
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/cjs/render/CanvasDecoration.js.map +1 -1
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/FrameStats.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
- package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderClipVolume.js.map +1 -1
- package/lib/cjs/render/RenderGraphic.js.map +1 -1
- package/lib/cjs/render/RenderMaterial.js.map +1 -1
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/Scene.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
- package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
- package/lib/cjs/render/primitives/Polyface.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/Primitives.js.map +1 -1
- package/lib/cjs/render/primitives/Strokes.js.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
- package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/Disposable.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/GL.js.map +1 -1
- package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Layer.js.map +1 -1
- package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
- package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/LineCode.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Matrix.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Sync.js.map +1 -1
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
- package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
- package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +12 -12
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
- package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +16 -16
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
- package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
- package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
- package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
- package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
- package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
- package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
- package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
- package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
- package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/LRUTileList.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileContent.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
- package/lib/cjs/tile/TileParams.js.map +1 -1
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileStorage.js.map +1 -1
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
- package/lib/cjs/tile/TileTreeParams.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
- package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
- package/lib/cjs/tile/TileUser.js.map +1 -1
- package/lib/cjs/tile/TileUserSet.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/EventController.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/webgl.js.map +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +3 -3
- package/lib/esm/BriefcaseConnection.js +3 -3
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/ChangeFlags.js.map +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/CoordSystem.js.map +1 -1
- package/lib/esm/DecorationsCache.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +5 -5
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EntityState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FeatureOverrideProvider.js.map +1 -1
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/Frustum2d.js.map +1 -1
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/FuzzySearch.js.map +1 -1
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +23 -23
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IModeljs-css.js +133 -133
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LinePlaneIntersect.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/MarginPercent.js.map +1 -1
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelSelectorState.js.map +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/StandardView.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/UserPreferences.js.map +1 -1
- package/lib/esm/ViewAnimation.js.map +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewRect.js.map +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewStatus.js.map +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/ViewportSync.js.map +1 -1
- package/lib/esm/WebWorkerManager.js.map +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/Extension.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/ExtensionHost.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/esm/gltf/GltfModel.js.map +1 -1
- package/lib/esm/gltf/GltfParser.js.map +1 -1
- package/lib/esm/gltf/GltfSchema.js.map +1 -1
- package/lib/esm/properties/AngleDescription.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/properties/LengthDescription.js.map +1 -1
- package/lib/esm/public/scripts/checkbrowser.js +24 -24
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/esm/render/CanvasDecoration.js.map +1 -1
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/FrameStats.js.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicPrimitive.js.map +1 -1
- package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderClipVolume.js.map +1 -1
- package/lib/esm/render/RenderGraphic.js.map +1 -1
- package/lib/esm/render/RenderMaterial.js.map +1 -1
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/Scene.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/render/primitives/ColorMap.js.map +1 -1
- package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
- package/lib/esm/render/primitives/Polyface.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/Primitives.js.map +1 -1
- package/lib/esm/render/primitives/Strokes.js.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/BranchStack.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
- package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/Disposable.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/render/webgl/GL.js.map +1 -1
- package/lib/esm/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Layer.js.map +1 -1
- package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
- package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/esm/render/webgl/LineCode.js.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Matrix.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Sync.js.map +1 -1
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +83 -83
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
- package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +37 -37
- package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
- package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.js +12 -12
- package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
- package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
- package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.js +16 -16
- package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +71 -71
- package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
- package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Decode.js +65 -65
- package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EDL.js +103 -103
- package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +146 -146
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
- package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
- package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
- package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
- package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
- package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
- package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
- package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +9 -9
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
- package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +239 -239
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
- package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
- package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/ContextShareProvider.js.map +1 -1
- package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/GraphicsCollector.js.map +1 -1
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/LRUTileList.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileContent.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
- package/lib/esm/tile/TileParams.js.map +1 -1
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileStorage.js.map +1 -1
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeOwner.js.map +1 -1
- package/lib/esm/tile/TileTreeParams.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
- package/lib/esm/tile/TileUsageMarker.js.map +1 -1
- package/lib/esm/tile/TileUser.js.map +1 -1
- package/lib/esm/tile/TileUserSet.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/EventController.js.map +1 -1
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/webgl.js.map +1 -1
- package/lib/public/assets/MapLayerSources.json +25 -25
- package/lib/public/images/cesium-ion.svg +92 -92
- package/lib/public/images/imodeljs-icon.svg +2 -2
- package/lib/public/locales/en/CoreTools.json +477 -477
- package/lib/public/locales/en/iModelJs.json +170 -170
- package/lib/public/scripts/checkbrowser.js +24 -24
- package/package.json +18 -18
|
@@ -19,165 +19,165 @@ const Common_1 = require("./Common");
|
|
|
19
19
|
const FeatureSymbology_1 = require("./FeatureSymbology");
|
|
20
20
|
const Fragment_1 = require("./Fragment");
|
|
21
21
|
const Vertex_1 = require("./Vertex");
|
|
22
|
-
exports.volClassOpaqueColor = `
|
|
23
|
-
vec4 volClassColor(vec4 baseColor, float depth) {
|
|
24
|
-
if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)
|
|
25
|
-
discard;
|
|
26
|
-
return vec4(baseColor.rgb, 1.0);
|
|
27
|
-
}
|
|
22
|
+
exports.volClassOpaqueColor = `
|
|
23
|
+
vec4 volClassColor(vec4 baseColor, float depth) {
|
|
24
|
+
if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)
|
|
25
|
+
discard;
|
|
26
|
+
return vec4(baseColor.rgb, 1.0);
|
|
27
|
+
}
|
|
28
28
|
`;
|
|
29
|
-
const volClassTranslucentColor = `
|
|
30
|
-
vec4 volClassColor(vec4 baseColor, float depth) {
|
|
31
|
-
return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error
|
|
32
|
-
}
|
|
29
|
+
const volClassTranslucentColor = `
|
|
30
|
+
vec4 volClassColor(vec4 baseColor, float depth) {
|
|
31
|
+
return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error
|
|
32
|
+
}
|
|
33
33
|
`;
|
|
34
|
-
const applyPlanarClassificationPrelude = `
|
|
35
|
-
const float dimScale = .7;
|
|
36
|
-
|
|
37
|
-
vec2 classPos = v_pClassPos.xy / v_pClassPosW;
|
|
38
|
-
bool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;
|
|
39
|
-
if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.
|
|
40
|
-
if (u_pClassColorParams.x > kTextureDrape) {
|
|
41
|
-
return volClassColor(baseColor, depth);
|
|
42
|
-
}
|
|
43
|
-
if (isOutside)
|
|
44
|
-
discard;
|
|
45
|
-
|
|
46
|
-
vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;
|
|
47
|
-
return vec4(rgb, baseColor.a);
|
|
48
|
-
}
|
|
49
|
-
float imageCount = u_pClassColorParams.z;
|
|
50
|
-
// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
|
|
51
|
-
bool doInvert = false;
|
|
52
|
-
if (imageCount < 0.0) {
|
|
53
|
-
imageCount = - imageCount;
|
|
54
|
-
doInvert = true;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
vec4 colorTexel = vec4(0);
|
|
58
|
-
vec4 maskTexel = vec4(0);
|
|
59
|
-
bool doMask = imageCount != kTextureContentClassifierOnly;
|
|
60
|
-
bool doClassify = imageCount != kTextureContentMaskOnly;
|
|
61
|
-
|
|
62
|
-
if (!isOutside) {
|
|
63
|
-
if (imageCount == kTextureContentClassifierOnly) {
|
|
64
|
-
colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
|
|
65
|
-
} else if (imageCount == kTextureContentMaskOnly) {
|
|
66
|
-
maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));
|
|
67
|
-
} else if (imageCount == kTextureContentClassifierAndMask) {
|
|
68
|
-
colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
|
|
69
|
-
maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));
|
|
70
|
-
}
|
|
71
|
-
if (colorTexel.b >= 0.5) {
|
|
72
|
-
if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {
|
|
73
|
-
discard;
|
|
74
|
-
return vec4(0.0);
|
|
75
|
-
}
|
|
76
|
-
colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;
|
|
77
|
-
} else {
|
|
78
|
-
colorTexel.b *= 255.0 / 127.0;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (doMask) {
|
|
82
|
-
bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
|
|
83
|
-
if (doInvert)
|
|
84
|
-
masked = !masked;
|
|
85
|
-
if (masked) {
|
|
86
|
-
float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
|
|
87
|
-
if (maskTransparency <= 0.0) {
|
|
88
|
-
discard;
|
|
89
|
-
return vec4(0);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
baseColor.a = baseColor.a * maskTransparency;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (!doClassify)
|
|
96
|
-
return baseColor;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);
|
|
100
|
-
float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;
|
|
101
|
-
if (kClassifierDisplay_Off == param) {
|
|
102
|
-
discard;
|
|
103
|
-
return vec4(0);
|
|
104
|
-
}
|
|
34
|
+
const applyPlanarClassificationPrelude = `
|
|
35
|
+
const float dimScale = .7;
|
|
36
|
+
|
|
37
|
+
vec2 classPos = v_pClassPos.xy / v_pClassPosW;
|
|
38
|
+
bool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;
|
|
39
|
+
if (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.
|
|
40
|
+
if (u_pClassColorParams.x > kTextureDrape) {
|
|
41
|
+
return volClassColor(baseColor, depth);
|
|
42
|
+
}
|
|
43
|
+
if (isOutside)
|
|
44
|
+
discard;
|
|
45
|
+
|
|
46
|
+
vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;
|
|
47
|
+
return vec4(rgb, baseColor.a);
|
|
48
|
+
}
|
|
49
|
+
float imageCount = u_pClassColorParams.z;
|
|
50
|
+
// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)
|
|
51
|
+
bool doInvert = false;
|
|
52
|
+
if (imageCount < 0.0) {
|
|
53
|
+
imageCount = - imageCount;
|
|
54
|
+
doInvert = true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
vec4 colorTexel = vec4(0);
|
|
58
|
+
vec4 maskTexel = vec4(0);
|
|
59
|
+
bool doMask = imageCount != kTextureContentClassifierOnly;
|
|
60
|
+
bool doClassify = imageCount != kTextureContentMaskOnly;
|
|
61
|
+
|
|
62
|
+
if (!isOutside) {
|
|
63
|
+
if (imageCount == kTextureContentClassifierOnly) {
|
|
64
|
+
colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
|
|
65
|
+
} else if (imageCount == kTextureContentMaskOnly) {
|
|
66
|
+
maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));
|
|
67
|
+
} else if (imageCount == kTextureContentClassifierAndMask) {
|
|
68
|
+
colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));
|
|
69
|
+
maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));
|
|
70
|
+
}
|
|
71
|
+
if (colorTexel.b >= 0.5) {
|
|
72
|
+
if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {
|
|
73
|
+
discard;
|
|
74
|
+
return vec4(0.0);
|
|
75
|
+
}
|
|
76
|
+
colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;
|
|
77
|
+
} else {
|
|
78
|
+
colorTexel.b *= 255.0 / 127.0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (doMask) {
|
|
82
|
+
bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;
|
|
83
|
+
if (doInvert)
|
|
84
|
+
masked = !masked;
|
|
85
|
+
if (masked) {
|
|
86
|
+
float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;
|
|
87
|
+
if (maskTransparency <= 0.0) {
|
|
88
|
+
discard;
|
|
89
|
+
return vec4(0);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
baseColor.a = baseColor.a * maskTransparency;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (!doClassify)
|
|
96
|
+
return baseColor;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);
|
|
100
|
+
float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;
|
|
101
|
+
if (kClassifierDisplay_Off == param) {
|
|
102
|
+
discard;
|
|
103
|
+
return vec4(0);
|
|
104
|
+
}
|
|
105
105
|
`;
|
|
106
106
|
// Currently we discard if classifier is pure black (acts as clipping mask).
|
|
107
107
|
// These could be more efficiently handled with masks.
|
|
108
108
|
const applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template
|
|
109
|
-
`
|
|
110
|
-
float colorMix = u_pClassPointCloud ? .65 : .35;
|
|
111
|
-
vec4 classColor;
|
|
112
|
-
if (kClassifierDisplay_On == param)
|
|
113
|
-
classColor = baseColor;
|
|
114
|
-
else if (!isClassified || kClassifierDisplay_Dimmed == param)
|
|
115
|
-
classColor = vec4(baseColor.rgb * dimScale, baseColor.a);
|
|
116
|
-
else if (kClassifierDisplay_Hilite == param)
|
|
117
|
-
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);
|
|
118
|
-
else {
|
|
119
|
-
if (colorTexel.b > colorTexel.a) {
|
|
120
|
-
discard;
|
|
121
|
-
return vec4(0.0);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.
|
|
125
|
-
float alpha = colorTexel.a * baseColor.a;
|
|
126
|
-
vec3 rgb = colorTexel.rgb / colorTexel.a;
|
|
127
|
-
rgb = mix(baseColor.rgb, rgb, colorMix);
|
|
128
|
-
classColor = vec4(rgb, alpha);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (kClassifierDisplay_Element != param && isClassified) {
|
|
132
|
-
if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
|
|
133
|
-
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
|
|
134
|
-
|
|
135
|
-
if (colorTexel.g > colorTexel.a)
|
|
136
|
-
classColor = applyClassifierFlash(classColor);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return classColor;
|
|
109
|
+
`
|
|
110
|
+
float colorMix = u_pClassPointCloud ? .65 : .35;
|
|
111
|
+
vec4 classColor;
|
|
112
|
+
if (kClassifierDisplay_On == param)
|
|
113
|
+
classColor = baseColor;
|
|
114
|
+
else if (!isClassified || kClassifierDisplay_Dimmed == param)
|
|
115
|
+
classColor = vec4(baseColor.rgb * dimScale, baseColor.a);
|
|
116
|
+
else if (kClassifierDisplay_Hilite == param)
|
|
117
|
+
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);
|
|
118
|
+
else {
|
|
119
|
+
if (colorTexel.b > colorTexel.a) {
|
|
120
|
+
discard;
|
|
121
|
+
return vec4(0.0);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.
|
|
125
|
+
float alpha = colorTexel.a * baseColor.a;
|
|
126
|
+
vec3 rgb = colorTexel.rgb / colorTexel.a;
|
|
127
|
+
rgb = mix(baseColor.rgb, rgb, colorMix);
|
|
128
|
+
classColor = vec4(rgb, alpha);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (kClassifierDisplay_Element != param && isClassified) {
|
|
132
|
+
if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
|
|
133
|
+
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
|
|
134
|
+
|
|
135
|
+
if (colorTexel.g > colorTexel.a)
|
|
136
|
+
classColor = applyClassifierFlash(classColor);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return classColor;
|
|
140
140
|
`;
|
|
141
141
|
const applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template
|
|
142
|
-
`
|
|
143
|
-
vec4 classColor = baseColor;
|
|
144
|
-
|
|
145
|
-
if (kClassifierDisplay_Element == param) {
|
|
146
|
-
if (colorTexel.b > colorTexel.a) {
|
|
147
|
-
discard;
|
|
148
|
-
return vec4(0.0);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.
|
|
152
|
-
baseColor.rgb = baseColor.rgb / baseColor.a;
|
|
153
|
-
classColor = vec4(baseColor.rgb, colorTexel.b);
|
|
154
|
-
classColor.rgb *= classColor.a;
|
|
155
|
-
colorTexel.a = 0.5; // make conditions below potentially pass
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (isClassified) {
|
|
159
|
-
if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
|
|
160
|
-
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
|
|
161
|
-
|
|
162
|
-
if (colorTexel.g > colorTexel.a)
|
|
163
|
-
classColor = applyClassifierFlash(classColor);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return classColor;
|
|
142
|
+
`
|
|
143
|
+
vec4 classColor = baseColor;
|
|
144
|
+
|
|
145
|
+
if (kClassifierDisplay_Element == param) {
|
|
146
|
+
if (colorTexel.b > colorTexel.a) {
|
|
147
|
+
discard;
|
|
148
|
+
return vec4(0.0);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.
|
|
152
|
+
baseColor.rgb = baseColor.rgb / baseColor.a;
|
|
153
|
+
classColor = vec4(baseColor.rgb, colorTexel.b);
|
|
154
|
+
classColor.rgb *= classColor.a;
|
|
155
|
+
colorTexel.a = 0.5; // make conditions below potentially pass
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (isClassified) {
|
|
159
|
+
if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)
|
|
160
|
+
classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);
|
|
161
|
+
|
|
162
|
+
if (colorTexel.g > colorTexel.a)
|
|
163
|
+
classColor = applyClassifierFlash(classColor);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return classColor;
|
|
167
167
|
`;
|
|
168
|
-
const overrideFeatureId = `
|
|
169
|
-
if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;
|
|
170
|
-
vec2 classPos = v_pClassPos / v_pClassPosW;
|
|
171
|
-
vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));
|
|
172
|
-
return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;
|
|
168
|
+
const overrideFeatureId = `
|
|
169
|
+
if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;
|
|
170
|
+
vec2 classPos = v_pClassPos / v_pClassPosW;
|
|
171
|
+
vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));
|
|
172
|
+
return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;
|
|
173
173
|
`;
|
|
174
|
-
const computeClassifiedHiliteColor = `
|
|
175
|
-
vec2 classPos = v_pClassPos / v_pClassPosW;
|
|
176
|
-
return TEXTURE(s_pClassHiliteSampler, classPos);
|
|
174
|
+
const computeClassifiedHiliteColor = `
|
|
175
|
+
vec2 classPos = v_pClassPos / v_pClassPosW;
|
|
176
|
+
return TEXTURE(s_pClassHiliteSampler, classPos);
|
|
177
177
|
`;
|
|
178
|
-
const computeClassifiedSurfaceHiliteColor = `
|
|
179
|
-
if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)
|
|
180
|
-
return vec4(0.0);
|
|
178
|
+
const computeClassifiedSurfaceHiliteColor = `
|
|
179
|
+
if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)
|
|
180
|
+
return vec4(0.0);
|
|
181
181
|
${computeClassifiedHiliteColor}`;
|
|
182
182
|
const computeClassifierPos = "vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;";
|
|
183
183
|
const computeInstancedClassifierPos = "vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;";
|
|
@@ -313,56 +313,56 @@ function addHilitePlanarClassifier(builder, supportTextures = true) {
|
|
|
313
313
|
}
|
|
314
314
|
exports.addHilitePlanarClassifier = addHilitePlanarClassifier;
|
|
315
315
|
// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.
|
|
316
|
-
const encodeNonLocatableWithFeatures = `
|
|
317
|
-
vec4 encodeNonLocatable(vec4 clr) {
|
|
318
|
-
float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;
|
|
319
|
-
return vec4(clr.r, clr.g, encoded_b, clr.a);
|
|
320
|
-
}
|
|
316
|
+
const encodeNonLocatableWithFeatures = `
|
|
317
|
+
vec4 encodeNonLocatable(vec4 clr) {
|
|
318
|
+
float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;
|
|
319
|
+
return vec4(clr.r, clr.g, encoded_b, clr.a);
|
|
320
|
+
}
|
|
321
321
|
`;
|
|
322
|
-
const encodeNonLocatable = `
|
|
323
|
-
vec4 encodeNonLocatable(vec4 clr) {
|
|
324
|
-
float encoded_b = floor(clr.b * 127.0) / 255.0;
|
|
325
|
-
return vec4(clr.r, clr.g, encoded_b, clr.a);
|
|
326
|
-
}
|
|
322
|
+
const encodeNonLocatable = `
|
|
323
|
+
vec4 encodeNonLocatable(vec4 clr) {
|
|
324
|
+
float encoded_b = floor(clr.b * 127.0) / 255.0;
|
|
325
|
+
return vec4(clr.r, clr.g, encoded_b, clr.a);
|
|
326
|
+
}
|
|
327
327
|
`;
|
|
328
|
-
const overrideClassifierColorPrelude = `
|
|
329
|
-
if (0.0 == u_planarClassifierInsideMode)
|
|
330
|
-
return currentColor;
|
|
331
|
-
|
|
332
|
-
if (0.0 == currentColor.a)
|
|
333
|
-
return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
|
|
328
|
+
const overrideClassifierColorPrelude = `
|
|
329
|
+
if (0.0 == u_planarClassifierInsideMode)
|
|
330
|
+
return currentColor;
|
|
331
|
+
|
|
332
|
+
if (0.0 == currentColor.a)
|
|
333
|
+
return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
|
|
334
334
|
`;
|
|
335
|
-
const overrideClassifierEmphasis = `
|
|
336
|
-
if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {
|
|
337
|
-
float emph = floor(v_feature_emphasis + 0.5);
|
|
338
|
-
if (0.0 != emph)
|
|
339
|
-
return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));
|
|
340
|
-
}
|
|
335
|
+
const overrideClassifierEmphasis = `
|
|
336
|
+
if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {
|
|
337
|
+
float emph = floor(v_feature_emphasis + 0.5);
|
|
338
|
+
if (0.0 != emph)
|
|
339
|
+
return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));
|
|
340
|
+
}
|
|
341
341
|
`;
|
|
342
|
-
const overrideClassifierColorPostlude = `
|
|
343
|
-
return encodeNonLocatable(currentColor);
|
|
342
|
+
const overrideClassifierColorPostlude = `
|
|
343
|
+
return encodeNonLocatable(currentColor);
|
|
344
344
|
`;
|
|
345
345
|
const overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;
|
|
346
346
|
const overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;
|
|
347
|
-
const overrideClassifierColorPreludeForThematic = `
|
|
348
|
-
if (0.0 == u_planarClassifierInsideMode)
|
|
349
|
-
return currentColor;
|
|
350
|
-
|
|
351
|
-
if (0.0 == currentColor.a)
|
|
352
|
-
return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
|
|
353
|
-
|
|
354
|
-
bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;
|
|
347
|
+
const overrideClassifierColorPreludeForThematic = `
|
|
348
|
+
if (0.0 == u_planarClassifierInsideMode)
|
|
349
|
+
return currentColor;
|
|
350
|
+
|
|
351
|
+
if (0.0 == currentColor.a)
|
|
352
|
+
return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));
|
|
353
|
+
|
|
354
|
+
bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;
|
|
355
355
|
`;
|
|
356
|
-
const overrideClassifierEmphasisForThematic = `
|
|
357
|
-
float emph = floor(v_feature_emphasis + 0.5);
|
|
358
|
-
if (0.0 != emph)
|
|
359
|
-
return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));
|
|
360
|
-
else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)
|
|
361
|
-
return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));
|
|
356
|
+
const overrideClassifierEmphasisForThematic = `
|
|
357
|
+
float emph = floor(v_feature_emphasis + 0.5);
|
|
358
|
+
if (0.0 != emph)
|
|
359
|
+
return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));
|
|
360
|
+
else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)
|
|
361
|
+
return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));
|
|
362
362
|
`;
|
|
363
363
|
// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.
|
|
364
|
-
const overrideClassifierColorPostludeClipForThematic = `
|
|
365
|
-
return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);
|
|
364
|
+
const overrideClassifierColorPostludeClipForThematic = `
|
|
365
|
+
return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);
|
|
366
366
|
`;
|
|
367
367
|
const overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;
|
|
368
368
|
const overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\nimport { Matrix4 } from \"../Matrix\";\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\nimport { IsThematic } from \"../TechniqueFlags\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { addShaderFlags, addUInt32s } from \"./Common\";\nimport { addClassifierFlash } from \"./FeatureSymbology\";\nimport { addWindowToTexCoords } from \"./Fragment\";\nimport { addInstancedRtcMatrix } from \"./Vertex\";\n\nexport const volClassOpaqueColor = `\nvec4 volClassColor(vec4 baseColor, float depth) {\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\n discard;\n return vec4(baseColor.rgb, 1.0);\n}\n`;\n\nconst volClassTranslucentColor = `\nvec4 volClassColor(vec4 baseColor, float depth) {\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\n}\n`;\n\nconst applyPlanarClassificationPrelude = `\nconst float dimScale = .7;\n\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\n if (u_pClassColorParams.x > kTextureDrape) {\n return volClassColor(baseColor, depth);\n }\n if (isOutside)\n discard;\n\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\n return vec4(rgb, baseColor.a);\n}\nfloat imageCount = u_pClassColorParams.z;\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\nbool doInvert = false;\nif (imageCount < 0.0) {\n imageCount = - imageCount;\n doInvert = true;\n}\n\nvec4 colorTexel = vec4(0);\nvec4 maskTexel = vec4(0);\nbool doMask = imageCount != kTextureContentClassifierOnly;\nbool doClassify = imageCount != kTextureContentMaskOnly;\n\nif (!isOutside) {\n if (imageCount == kTextureContentClassifierOnly) {\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\n } else if (imageCount == kTextureContentMaskOnly) {\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\n } else if (imageCount == kTextureContentClassifierAndMask) {\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\n }\n if (colorTexel.b >= 0.5) {\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\n discard;\n return vec4(0.0);\n }\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\n } else {\n colorTexel.b *= 255.0 / 127.0;\n }\n}\nif (doMask) {\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\n if (doInvert)\n masked = !masked;\n if (masked) {\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\n if (maskTransparency <= 0.0) {\n discard;\n return vec4(0);\n }\n\n baseColor.a = baseColor.a * maskTransparency;\n }\n\n if (!doClassify)\n return baseColor;\n }\n\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\n if (kClassifierDisplay_Off == param) {\n discard;\n return vec4(0);\n}\n`\n ;\n\n// Currently we discard if classifier is pure black (acts as clipping mask).\n// These could be more efficiently handled with masks.\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\n `\n float colorMix = u_pClassPointCloud ? .65 : .35;\n vec4 classColor;\n if (kClassifierDisplay_On == param)\n classColor = baseColor;\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\n else if (kClassifierDisplay_Hilite == param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\n else {\n if (colorTexel.b > colorTexel.a) {\n discard;\n return vec4(0.0);\n }\n\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\n float alpha = colorTexel.a * baseColor.a;\n vec3 rgb = colorTexel.rgb / colorTexel.a;\n rgb = mix(baseColor.rgb, rgb, colorMix);\n classColor = vec4(rgb, alpha);\n }\n\n if (kClassifierDisplay_Element != param && isClassified) {\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\n\n if (colorTexel.g > colorTexel.a)\n classColor = applyClassifierFlash(classColor);\n }\n\n return classColor;\n`;\n\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\n `\n vec4 classColor = baseColor;\n\n if (kClassifierDisplay_Element == param) {\n if (colorTexel.b > colorTexel.a) {\n discard;\n return vec4(0.0);\n }\n\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\n baseColor.rgb = baseColor.rgb / baseColor.a;\n classColor = vec4(baseColor.rgb, colorTexel.b);\n classColor.rgb *= classColor.a;\n colorTexel.a = 0.5; // make conditions below potentially pass\n }\n\n if (isClassified) {\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\n\n if (colorTexel.g > colorTexel.a)\n classColor = applyClassifierFlash(classColor);\n }\n\n return classColor;\n`;\n\nconst overrideFeatureId = `\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\n vec2 classPos = v_pClassPos / v_pClassPosW;\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\n `;\n\nconst computeClassifiedHiliteColor = `\n vec2 classPos = v_pClassPos / v_pClassPosW;\n return TEXTURE(s_pClassHiliteSampler, classPos);\n`;\nconst computeClassifiedSurfaceHiliteColor = `\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\n return vec4(0.0);\n${computeClassifiedHiliteColor}`;\n\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\n\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\nconst scratchModel = Matrix4d.createIdentity();\nconst scratchModelProjection = Matrix4d.createIdentity();\nconst scratchMatrix = new Matrix4();\n\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\n const vert = builder.vert;\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape!;\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\n } else\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\n uniform.setMatrix4(scratchMatrix);\n });\n });\n\n if (vert.usesInstancedGeometry)\n addInstancedRtcMatrix(vert);\n\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\n\n addPlanarClassifierConstants(builder.frag);\n}\n\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\n}\n\n/** @internal */\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\n addPlanarClassifierCommon(builder);\n const frag = builder.frag;\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape;\n const volClass = params.target.activeVolumeClassifierTexture;\n assert(undefined !== source || undefined !== volClass);\n if (source) {\n assert(undefined !== source.texture);\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\n } else\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\n });\n });\n\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\n const source = params.target.currentPlanarClassifierOrDrape;\n const volClass = params.target.activeVolumeClassifierTexture;\n assert(undefined !== source || undefined !== volClass);\n if (undefined !== source) {\n source.getParams(scratchColorParams);\n } else {\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\n scratchColorParams[1] = 0.5; // used for alpha value\n scratchColorParams[2] = 0.0; // Not used for volume.\n scratchColorParams[3] = 0.0; // Not used for volume.\n }\n uniform.setUniform4fv(scratchColorParams);\n });\n });\n\n if (isThematic === IsThematic.No) {\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier;\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\n uniform.setUniform1i(isPointCloud ? 1 : 0);\n });\n });\n }\n\n addClassifierFlash(frag);\n\n if (translucent)\n // We will never call the shaders for volume classifiers with translucency,\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\n frag.addFunction(volClassTranslucentColor);\n else {\n addWindowToTexCoords(frag);\n frag.addFunction(volClassOpaqueColor);\n }\n\n addShaderFlags(builder);\n\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\n}\n\n/** @internal */\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\n const frag = builder.frag;\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier;\n if (classifier !== undefined) {\n scratchBatchBaseId[0] = classifier.baseBatchId;\n scratchBatchBaseComponents[0] = scratchBytes[0];\n scratchBatchBaseComponents[1] = scratchBytes[1];\n scratchBatchBaseComponents[2] = scratchBytes[2];\n scratchBatchBaseComponents[3] = scratchBytes[3];\n }\n uniform.setUniform4fv(scratchBatchBaseComponents);\n });\n });\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\n frag.addFunction(addUInt32s);\n}\n\n/** @internal */\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\n addPlanarClassifierCommon(builder);\n const frag = builder.frag;\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\n const classifier = params.target.currentPlanarClassifier!;\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\n });\n });\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\n}\n\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\nconst encodeNonLocatableWithFeatures = `\nvec4 encodeNonLocatable(vec4 clr) {\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\n return vec4(clr.r, clr.g, encoded_b, clr.a);\n}\n`;\n\nconst encodeNonLocatable = `\nvec4 encodeNonLocatable(vec4 clr) {\n float encoded_b = floor(clr.b * 127.0) / 255.0;\n return vec4(clr.r, clr.g, encoded_b, clr.a);\n}\n`;\n\nconst overrideClassifierColorPrelude = `\n if (0.0 == u_planarClassifierInsideMode)\n return currentColor;\n\n if (0.0 == currentColor.a)\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\n`;\n\nconst overrideClassifierEmphasis = `\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\n float emph = floor(v_feature_emphasis + 0.5);\n if (0.0 != emph)\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\n }\n`;\n\nconst overrideClassifierColorPostlude = `\n return encodeNonLocatable(currentColor);\n`;\n\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\n\nconst overrideClassifierColorPreludeForThematic = `\n if (0.0 == u_planarClassifierInsideMode)\n return currentColor;\n\n if (0.0 == currentColor.a)\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\n\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\n`;\n\nconst overrideClassifierEmphasisForThematic = `\n float emph = floor(v_feature_emphasis + 0.5);\n if (0.0 != emph)\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\n`;\n\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\nconst overrideClassifierColorPostludeClipForThematic = `\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\n`;\n\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\n\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\n * - Red: hilited.\n * - Green: flashed.\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\n * @internal\n */\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\n addPlanarClassifierConstants(builder.frag);\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\n const classifier = params.target.currentlyDrawingClassifier;\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\n uniform.setUniform1f(override);\n });\n });\n\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\n if (isThematic === IsThematic.No)\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\n else\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x > kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
|
|
@@ -18,29 +18,29 @@ const Translucency_1 = require("./Translucency");
|
|
|
18
18
|
const Vertex_1 = require("./Vertex");
|
|
19
19
|
const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
|
|
20
20
|
const computeTexCoord = "return unquantize2d(a_uvParam, u_qTexCoordParams);";
|
|
21
|
-
const computeBaseColor = `
|
|
22
|
-
// u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.
|
|
23
|
-
vec4 color = vec4(u_gridColor, u_gridProps.y);
|
|
24
|
-
float refsPerGrid = u_gridProps.x;
|
|
25
|
-
if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))
|
|
26
|
-
drawGridLine(color, 1.0, u_gridProps.z - color.a);
|
|
27
|
-
|
|
28
|
-
return color;
|
|
21
|
+
const computeBaseColor = `
|
|
22
|
+
// u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.
|
|
23
|
+
vec4 color = vec4(u_gridColor, u_gridProps.y);
|
|
24
|
+
float refsPerGrid = u_gridProps.x;
|
|
25
|
+
if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))
|
|
26
|
+
drawGridLine(color, 1.0, u_gridProps.z - color.a);
|
|
27
|
+
|
|
28
|
+
return color;
|
|
29
29
|
`;
|
|
30
|
-
const drawGridLine = `
|
|
31
|
-
bool drawGridLine(inout vec4 color, float mult, float alphaScale) {
|
|
32
|
-
vec2 scaledTexCoord = v_texCoord * mult;
|
|
33
|
-
vec2 deriv = mult * screenSpaceDeriv(v_texCoord);
|
|
34
|
-
if (deriv.x != 0.0 && deriv.y != 0.0) {
|
|
35
|
-
vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;
|
|
36
|
-
float line = min(grid.x, grid.y);
|
|
37
|
-
if (line < 1.0) {
|
|
38
|
-
color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
30
|
+
const drawGridLine = `
|
|
31
|
+
bool drawGridLine(inout vec4 color, float mult, float alphaScale) {
|
|
32
|
+
vec2 scaledTexCoord = v_texCoord * mult;
|
|
33
|
+
vec2 deriv = mult * screenSpaceDeriv(v_texCoord);
|
|
34
|
+
if (deriv.x != 0.0 && deriv.y != 0.0) {
|
|
35
|
+
vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;
|
|
36
|
+
float line = min(grid.x, grid.y);
|
|
37
|
+
if (line < 1.0) {
|
|
38
|
+
color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
44
|
`;
|
|
45
45
|
const fwidth2d = `\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\n`;
|
|
46
46
|
const defaultTransparency = new RenderSystem_1.PlanarGridTransparency();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { System } from \"../System\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { addShaderFlags } from \"./Common\";\nimport { unquantize2d } from \"./Decode\";\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\nimport { addTranslucency } from \"./Translucency\";\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\n\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\n\nconst computeBaseColor = `\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\n vec4 color = vec4(u_gridColor, u_gridProps.y);\n float refsPerGrid = u_gridProps.x;\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\n\n return color;\n`;\n\nconst drawGridLine = `\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\n vec2 scaledTexCoord = v_texCoord * mult;\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\n if (deriv.x != 0.0 && deriv.y != 0.0) {\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\n float line = min(grid.x, grid.y);\n if (line < 1.0) {\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\n return true;\n }\n }\n return false;\n }\n`;\n\nconst fwidth2d = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\n\nconst defaultTransparency = new PlanarGridTransparency();\n/** @internal */\nexport default function createPlanarGridProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\n const vert = builder.vert;\n const frag = builder.frag;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n addShaderFlags(builder);\n\n addTranslucency(builder);\n frag.addFunction(fwidth2d);\n\n if (System.instance.supportsLogZBuffer)\n addLogDepth(builder);\n\n frag.addFunction(drawGridLine);\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n\n vert.headerComment = `//!V! PlanarGrid`;\n frag.headerComment = `//!F! PlanarGrid`;\n\n vert.addFunction(unquantize2d);\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const planarGrid = params.geometry.asPlanarGrid!;\n uniform.setUniform4fv(planarGrid.uvParams.params);\n });\n });\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\n const planarGrid = params.geometry.asPlanarGrid!;\n const color = planarGrid.props.color.colors;\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\n });\n });\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\n const planarGridProps = params.geometry.asPlanarGrid!.props;\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\n });\n });\n\n return builder.buildProgram(context);\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"PlanarGrid.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarGrid.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { PlanarGridTransparency } from \"../../RenderSystem\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addLogDepth } from \"./LogarithmicDepthBuffer\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewProjectionMatrix } from \"./Vertex\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\n\r\nconst computeBaseColor = `\r\n // u_gridProps - x = gridsPerRef, y - planeAlpha, z = line alpha, w = ref alpha.\r\n vec4 color = vec4(u_gridColor, u_gridProps.y);\r\n float refsPerGrid = u_gridProps.x;\r\n if (0.0 == refsPerGrid || !drawGridLine(color, 1.0 / refsPerGrid, u_gridProps.w - color.a))\r\n drawGridLine(color, 1.0, u_gridProps.z - color.a);\r\n\r\n return color;\r\n`;\r\n\r\nconst drawGridLine = `\r\n bool drawGridLine(inout vec4 color, float mult, float alphaScale) {\r\n vec2 scaledTexCoord = v_texCoord * mult;\r\n vec2 deriv = mult * screenSpaceDeriv(v_texCoord);\r\n if (deriv.x != 0.0 && deriv.y != 0.0) {\r\n vec2 grid = abs(fract(mult * v_texCoord - 0.5) - 0.5) / deriv;\r\n float line = min(grid.x, grid.y);\r\n if (line < 1.0) {\r\n color.a += alphaScale * (1.0 - min(line, 1.0)) / max(1.0, length(deriv));\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n`;\r\n\r\nconst fwidth2d = `\\nvec2 screenSpaceDeriv(vec2 screenXY) { return fwidth(screenXY); }\\n`;\r\n\r\nconst defaultTransparency = new PlanarGridTransparency();\r\n/** @internal */\r\nexport default function createPlanarGridProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.PlanarGrid, false));\r\n const vert = builder.vert;\r\n const frag = builder.frag;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n addShaderFlags(builder);\r\n\r\n addTranslucency(builder);\r\n frag.addFunction(fwidth2d);\r\n\r\n if (System.instance.supportsLogZBuffer)\r\n addLogDepth(builder);\r\n\r\n frag.addFunction(drawGridLine);\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n vert.headerComment = `//!V! PlanarGrid`;\r\n frag.headerComment = `//!F! PlanarGrid`;\r\n\r\n vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n uniform.setUniform4fv(planarGrid.uvParams.params);\r\n });\r\n });\r\n frag.addUniform(\"u_gridColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_gridColor\", (uniform, params) => {\r\n const planarGrid = params.geometry.asPlanarGrid!;\r\n const color = planarGrid.props.color.colors;\r\n uniform.setUniform3fv([color.r / 255, color.g / 255, color.b / 255]);\r\n });\r\n });\r\n frag.addUniform(\"u_gridProps\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_gridProps\", (uniform, params) => {\r\n const planarGridProps = params.geometry.asPlanarGrid!.props;\r\n const transparency = planarGridProps.transparency ? planarGridProps.transparency : defaultTransparency;\r\n uniform.setUniform4fv([planarGridProps.gridsPerRef, 1.0 - transparency.planeTransparency, 1.0 - transparency.lineTransparency, 1.0 - transparency.refTransparency]);\r\n });\r\n });\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n"]}
|