@itwin/core-frontend 4.1.0-dev.13 → 4.1.0-dev.14
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/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.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/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/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/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/common/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/common/ImageUtil.js.map +1 -1
- package/lib/cjs/common/ViewRect.js.map +1 -1
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
- package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
- package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/common/render/AnimationNodeId.js.map +1 -1
- package/lib/cjs/common/render/MaterialParams.js.map +1 -1
- package/lib/cjs/common/render/TextureParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -1
- package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -1
- package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/common/render/primitives/VertexTableSplitter.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/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/CreateRenderMaterialArgs.js.map +1 -1
- package/lib/cjs/render/CreateTextureArgs.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/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/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/ColorMap.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/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableBuilder.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/ImdlDecoder.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/ImdlParser.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.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/cjs/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -40
- package/lib/cjs/workers/RegisterWorker.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.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/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/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/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/common/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/common/ImageUtil.js.map +1 -1
- package/lib/esm/common/ViewRect.js.map +1 -1
- package/lib/esm/common/WorkerProxy.js.map +1 -1
- package/lib/esm/common/gltf/GltfModel.js.map +1 -1
- package/lib/esm/common/gltf/GltfParser.js.map +1 -1
- package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/common/render/AnimationNodeId.js.map +1 -1
- package/lib/esm/common/render/MaterialParams.js.map +1 -1
- package/lib/esm/common/render/TextureParams.js.map +1 -1
- package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -1
- package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/common/render/primitives/MeshParams.js.map +1 -1
- package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -1
- package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -1
- package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -1
- package/lib/esm/common/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/common/render/primitives/VertexTableSplitter.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/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/CreateRenderMaterialArgs.js.map +1 -1
- package/lib/esm/render/CreateTextureArgs.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/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/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/ColorMap.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/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableBuilder.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/ImdlDecoder.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/ImdlParser.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.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/esm/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/esm/workers/ImdlParser/webpack.config.js +40 -40
- package/lib/esm/workers/RegisterWorker.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.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 { assert } from \"@itwin/core-bentley\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { Material } from \"../Material\";\nimport { Pass, SurfaceBitIndex, SurfaceFlags, TextureUnit } from \"../RenderFlags\";\nimport {\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent,\n} from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport {\n FeatureMode, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, PositionType, TechniqueFlags,\n} from \"../TechniqueFlags\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { Texture } from \"../Texture\";\nimport { addAnimation } from \"./Animation\";\nimport { unpackFloat } from \"./Clipping\";\nimport { addColor } from \"./Color\";\nimport { addChooseVec2WithBitFlagsFunction, addChooseVec3WithBitFlagFunction, addExtractNthBit, addFrustum, addShaderFlags } from \"./Common\";\nimport { addUnpackAndNormalize2Bytes, decodeDepthRgb, unquantize2d } from \"./Decode\";\nimport {\n addFeatureSymbology, addMaxAlpha, addRenderOrder, addRenderOrderConstants, addSurfaceDiscard, addSurfaceHiliter, FeatureSymbologyOptions,\n} from \"./FeatureSymbology\";\nimport {\n addAltPickBufferOutputs, addFragColorWithPreMultipliedAlpha, addPickBufferOutputs, addWhiteOnWhiteReversal, assignFragColor,\n} from \"./Fragment\";\nimport { addLighting } from \"./Lighting\";\nimport { addSurfaceMonochrome } from \"./Monochrome\";\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier, addOverrideClassifierColor } from \"./PlanarClassification\";\nimport { addRenderPass } from \"./RenderPass\";\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\nimport { addTranslucency } from \"./Translucency\";\nimport { addModelViewMatrix, addNormalMatrix, addProjectionMatrix } from \"./Vertex\";\nimport { wantMaterials } from \"../SurfaceGeometry\";\nimport { addWiremesh } from \"./Wiremesh\";\nimport { Npc } from \"@itwin/core-common\";\n\nconst constantLodTextureLookup = `\nvec4 constantLodTextureLookup(sampler2D textureSampler) {\n float logDepth = log2(v_uvCustom.z);\n float f = fract(logDepth);\n float p = floor(logDepth);\n // When p changes, both tc1 and tc2 jumped by a power of 2 at that transition (and f goes from ~1 to 0).\n // This caused a line to show up with incorrect tex coords, we believe due to a problem with the derivative\n // that is auto calculated on the tex coords for the mip-map. The below approach attempts to \"smooth\"\n // the transition of the coord in use at the transition by only changing the coord that is not in use\n // (but by 2 powers of 2) and switching the mix selector to account for it. It does this by using whether\n // p is odd or even to select which way it is going, so it alternates at the boundaries. This fixes the\n // line problem.\n float p1, p2;\n if (0u == (uint(p) & 1u)) { // p is even\n p1 = p;\n p2 = p + 1.0;\n } else { // p is odd\n p1 = p + 1.0;\n p2 = p;\n f = 1.0 - f;\n }\n\n vec2 tc1 = v_uvCustom.xy / clamp(pow(2.0, p1), float(u_constantLodFParams.x), float(u_constantLodFParams.y)) * u_constantLodFParams.z;\n vec2 tc2 = v_uvCustom.xy / clamp(pow(2.0, p2), float(u_constantLodFParams.x), float(u_constantLodFParams.y)) * u_constantLodFParams.z;\n return mix(TEXTURE(textureSampler, tc1), TEXTURE(textureSampler, tc2), f);\n}\n`;\n\n// NB: Textures do not contain pre-multiplied alpha.\nconst sampleSurfaceTexture = `\nvec4 sampleSurfaceTexture() {\n vec4 clr;\n if (!isSurfaceBitSet(kSurfaceBit_HasTexture))\n clr = vec4(1.0, 1.0, 1.0, 1.0);\n else if (u_surfaceFlags[kSurfaceBitIndex_UseConstantLodTextureMapping])\n clr = constantLodTextureLookup(s_texture);\n else\n clr = TEXTURE(s_texture, v_texCoord);\n return clr;\n}\n`;\n\nconst applyMaterialColor = `\n float useMatColor = float(use_material);\n vec3 rgb = mix(baseColor.rgb, mat_rgb.rgb, useMatColor * mat_rgb.a);\n float a = mix(baseColor.a, mat_alpha.x, useMatColor * mat_alpha.y);\n return vec4(rgb, a);\n`;\n\n// if this is a raster glyph, the sampled color has already been modified - do not modify further.\n// Mix diffuse color with texel based on texture weight.\n// Replace with diffuse RGB if RGB overridden.\n// Replace with diffuse alpha if alpha overridden.\n// Multiply texel alpha with diffuse alpha if specified.\nconst applyTextureWeight = `\n bool applyTexture = !u_applyGlyphTex && isSurfaceBitSet(kSurfaceBit_HasTexture);\n float textureWeight = applyTexture ? mat_texture_weight : 0.0;\n vec3 rgb = mix(baseColor.rgb, g_surfaceTexel.rgb, textureWeight);\n rgb = chooseVec3WithBitFlag(rgb, baseColor.rgb, surfaceFlags, kSurfaceBit_OverrideRgb);\n\n float a = applyTexture ? baseColor.a * g_surfaceTexel.a : baseColor.a;\n\n return vec4(rgb, a);\n`;\n\nconst decodeFragMaterialParams = `\nvoid decodeMaterialParams(vec4 params) {\n mat_weights = unpackAndNormalize2Bytes(params.x);\n\n vec2 texAndSpecR = unpackAndNormalize2Bytes(params.y);\n mat_texture_weight = texAndSpecR.x;\n\n vec2 specGB = unpackAndNormalize2Bytes(params.z);\n mat_specular = vec4(texAndSpecR.y, specGB, params.w);\n}\n`;\n\nconst decodeMaterialColor = `\nvoid decodeMaterialColor(vec4 rgba) {\n mat_rgb = vec4(rgba.rgb, float(rgba.r >= 0.0));\n mat_alpha = vec2(rgba.a, float(rgba.a >= 0.0));\n}\n`;\n\n// defaults: (0x6699, 0xffff, 0xffff, 13.5)\nconst computeMaterialParams = `\n const vec4 defaults = vec4(26265.0, 65535.0, 65535.0, 13.5);\n return use_material ? g_materialParams : defaults;\n`;\n\n// The 8-bit material index is stored with the 24-bit feature index, in the high byte.\nconst readMaterialAtlas = `\nvoid readMaterialAtlas() {\n float materialAtlasStart = u_vertParams.z * u_vertParams.w + u_numColors;\n float materialIndex = g_featureAndMaterialIndex.w * 4.0 + materialAtlasStart;\n\n vec2 tc = computeLUTCoords(materialIndex, u_vertParams.xy, g_vert_center, 1.0);\n vec4 rgba = TEXTURE(u_vertLUT, tc);\n\n tc = computeLUTCoords(materialIndex + 1.0, u_vertParams.xy, g_vert_center, 1.0);\n vec4 weightsAndFlags = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\n\n tc = computeLUTCoords(materialIndex + 2.0, u_vertParams.xy, g_vert_center, 1.0);\n vec3 specularRgb = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5).rgb;\n\n tc = computeLUTCoords(materialIndex + 3.0, u_vertParams.xy, g_vert_center, 1.0);\n vec4 packedSpecularExponent = TEXTURE(u_vertLUT, tc);\n\n float flags = weightsAndFlags.w;\n mat_rgb = vec4(rgba.rgb, float(flags == 1.0 || flags == 3.0));\n mat_alpha = vec2(rgba.a, float(flags == 2.0 || flags == 3.0));\n\n float specularExponent = unpackFloat(packedSpecularExponent);\n g_materialParams.x = weightsAndFlags.y + weightsAndFlags.z * 256.0;\n g_materialParams.y = 255.0 + specularRgb.r * 256.0;\n g_materialParams.z = specularRgb.g + specularRgb.b * 256.0;\n g_materialParams.w = specularExponent;\n}\n`;\n\nconst computeMaterial = `\n if (u_surfaceFlags[kSurfaceBitIndex_HasMaterialAtlas]) {\n readMaterialAtlas();\n } else {\n decodeMaterialColor(u_materialColor);\n g_materialParams = u_materialParams;\n }\n`;\n\nconst computeMaterialInstanced = `\n decodeMaterialColor(u_materialColor);\n g_materialParams = u_materialParams;\n`;\n\nfunction addMaterial(builder: ProgramBuilder, instanced: boolean): void {\n const frag = builder.frag;\n assert(undefined !== frag.find(\"v_surfaceFlags\"));\n\n frag.addGlobal(\"mat_texture_weight\", VariableType.Float);\n frag.addGlobal(\"mat_weights\", VariableType.Vec2); // diffuse, specular\n frag.addGlobal(\"mat_specular\", VariableType.Vec4); // rgb, exponent\n\n addUnpackAndNormalize2Bytes(frag);\n frag.addFunction(decodeFragMaterialParams);\n frag.addInitializer(\"decodeMaterialParams(v_materialParams);\");\n\n addChooseVec3WithBitFlagFunction(frag);\n frag.set(FragmentShaderComponent.ApplyMaterialOverrides, applyTextureWeight);\n\n const vert = builder.vert;\n vert.addGlobal(\"mat_rgb\", VariableType.Vec4); // a = 0 if not overridden, else 1\n vert.addGlobal(\"mat_alpha\", VariableType.Vec2); // a = 0 if not overridden, else 1\n vert.addGlobal(\"use_material\", VariableType.Boolean);\n vert.addInitializer(\"use_material = (0u == (surfaceFlags & kSurfaceBit_IgnoreMaterial));\");\n\n // Uniform material\n vert.addFunction(decodeMaterialColor);\n vert.addUniform(\"u_materialColor\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_materialColor\", (uniform, params) => {\n const info = wantMaterials(params.target.currentViewFlags) ? params.geometry.materialInfo : undefined;\n const mat = undefined !== info && !info.isAtlas ? info : Material.default;\n uniform.setUniform4fv(mat.rgba);\n });\n });\n\n vert.addUniform(\"u_materialParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_materialParams\", (uniform, params) => {\n const info = wantMaterials(params.target.currentViewFlags) ? params.geometry.materialInfo : undefined;\n const mat = undefined !== info && !info.isAtlas ? info : Material.default;\n uniform.setUniform4fv(mat.fragUniforms);\n });\n });\n\n if (!instanced) {\n // Material atlas\n vert.addFunction(unpackFloat);\n vert.addFunction(readMaterialAtlas);\n vert.addUniform(\"u_numColors\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_numColors\", (uniform, params) => {\n const info = params.geometry.materialInfo;\n const numColors = undefined !== info && info.isAtlas ? info.vertexTableOffset : 0;\n uniform.setUniform1f(numColors);\n });\n });\n }\n vert.addGlobal(\"g_materialParams\", VariableType.Vec4);\n vert.set(VertexShaderComponent.ComputeMaterial, instanced ? computeMaterialInstanced : computeMaterial);\n vert.set(VertexShaderComponent.ApplyMaterialColor, applyMaterialColor);\n builder.addFunctionComputedVarying(\"v_materialParams\", VariableType.Vec4, \"computeMaterialParams\", computeMaterialParams);\n}\n\nconst computePositionPrelude = `\n vec4 pos = MAT_MV * rawPos;\n`;\n\n// We used to use gl.polygonOffset() for blanking regions, but that doesn't work with logarithmic depth buffer which overwrites the\n// computed Z. Instead we must manually offset in vertex shader. We do this even if log depth is not enabled/supported.\n// NOTE: If log depth is *not* supported, then the hilite surface vertex shaders previously would still include this logic, but the\n// fragment shaders would not use v_eyeSpace. Some Ubuntu 20.04 graphics drivers cleverly and correctly optimized out the varying and the uniform,\n// causing an exception when gl.getProgramLocation() failed. So, omit this bit in that case.\nconst adjustEyeSpace = `\n v_eyeSpace = pos.xyz;\n const float blankingRegionOffset = 2.0 / 65536.0;\n if (kRenderOrder_BlankingRegion == u_renderOrder)\n v_eyeSpace.z -= blankingRegionOffset * (u_frustum.y - u_frustum.x);\n`;\n\nconst computeConstantLodUvCustom = `\n vec2 worldpos = (u_modelToWorld * vec4(rawPos.xyz, 0.0)).xy;\n v_uvCustom = vec3((u_constantLodVParams.xy + worldpos) * vec2(1.0, -1.0), kFrustumType_Perspective == u_frustum.z ? -v_eyeSpace.z : u_constantLodVParams.z);\n`;\n\nconst computePositionPostlude = `\n return u_proj * pos;\n`;\n\nfunction createCommon(isInstanced: IsInstanced, animated: IsAnimated, shadowable: IsShadowable, isHiliter: boolean, positionType: PositionType): ProgramBuilder {\n const instanced = IsInstanced.Yes === isInstanced;\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Surface, instanced);\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\n const vert = builder.vert;\n\n if (animated)\n addAnimation(vert, true);\n\n if (shadowable)\n addSolarShadowMap(builder);\n\n addProjectionMatrix(vert);\n addModelViewMatrix(vert);\n\n let computePosition = computePositionPrelude;\n if (!isHiliter || System.instance.supportsLogZBuffer) {\n addFrustum(builder);\n addRenderOrder(builder.vert);\n addRenderOrderConstants(builder.vert);\n builder.addVarying(\"v_eyeSpace\", VariableType.Vec3);\n computePosition += adjustEyeSpace;\n }\n if (!isHiliter)\n computePosition += computeConstantLodUvCustom;\n computePosition += computePositionPostlude;\n\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n\n return builder;\n}\n\n/** @internal */\nexport function createSurfaceHiliter(instanced: IsInstanced, classified: IsClassified, posType: PositionType): ProgramBuilder {\n const builder = createCommon(instanced, IsAnimated.No, IsShadowable.No, true, posType);\n\n addSurfaceFlags(builder, true, false);\n addTexture(builder, IsAnimated.No, IsThematic.No, false, true);\n if (classified) {\n addHilitePlanarClassifier(builder);\n builder.vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n } else {\n addSurfaceHiliter(builder);\n }\n\n return builder;\n}\n\nconst isSurfaceBitSet = `\nbool isSurfaceBitSet(uint flag) { return 0u != (surfaceFlags & flag); }\n`;\n\n/** @internal */\nfunction addSurfaceFlagsLookup(builder: ShaderBuilder) {\n builder.addConstant(\"kSurfaceBitIndex_HasTexture\", VariableType.Int, SurfaceBitIndex.HasTexture.toString());\n builder.addConstant(\"kSurfaceBitIndex_ApplyLighting\", VariableType.Int, SurfaceBitIndex.ApplyLighting.toString());\n builder.addConstant(\"kSurfaceBitIndex_HasNormals\", VariableType.Int, SurfaceBitIndex.HasNormals.toString());\n builder.addConstant(\"kSurfaceBitIndex_IgnoreMaterial\", VariableType.Int, SurfaceBitIndex.IgnoreMaterial.toString());\n builder.addConstant(\"kSurfaceBitIndex_TransparencyThreshold\", VariableType.Int, SurfaceBitIndex.TransparencyThreshold.toString());\n builder.addConstant(\"kSurfaceBitIndex_BackgroundFill\", VariableType.Int, SurfaceBitIndex.BackgroundFill.toString());\n builder.addConstant(\"kSurfaceBitIndex_HasColorAndNormal\", VariableType.Int, SurfaceBitIndex.HasColorAndNormal.toString());\n builder.addConstant(\"kSurfaceBitIndex_OverrideRgb\", VariableType.Int, SurfaceBitIndex.OverrideRgb.toString());\n builder.addConstant(\"kSurfaceBitIndex_HasNormalMap\", VariableType.Int, SurfaceBitIndex.HasNormalMap.toString());\n builder.addConstant(\"kSurfaceBitIndex_HasMaterialAtlas\", VariableType.Int, SurfaceBitIndex.HasMaterialAtlas.toString());\n builder.addConstant(\"kSurfaceBitIndex_UseConstantLodTextureMapping\", VariableType.Int, SurfaceBitIndex.UseConstantLodTextureMapping.toString());\n builder.addConstant(\"kSurfaceBitIndex_UseConstantLodNormalMapMapping\", VariableType.Int, SurfaceBitIndex.UseConstantLodNormalMapMapping.toString());\n\n // Surface flags which get modified in vertex shader are still passed to fragment shader as a single float & are thus\n // used differently there & so require different constants. Unused constants are commented out.\n builder.addBitFlagConstant(\"kSurfaceBit_HasTexture\", SurfaceBitIndex.HasTexture);\n builder.addBitFlagConstant(\"kSurfaceBit_IgnoreMaterial\", SurfaceBitIndex.IgnoreMaterial);\n builder.addBitFlagConstant(\"kSurfaceBit_OverrideRgb\", SurfaceBitIndex.OverrideRgb);\n builder.addBitFlagConstant(\"kSurfaceBit_HasNormalMap\", SurfaceBitIndex.HasNormalMap);\n\n // Only need masks for flags modified in vertex shader\n const suffix = \"u\";\n const type = VariableType.Uint;\n builder.addConstant(\"kSurfaceMask_HasTexture\", type, SurfaceFlags.HasTexture.toString() + suffix);\n builder.addConstant(\"kSurfaceMask_IgnoreMaterial\", type, SurfaceFlags.IgnoreMaterial.toString() + suffix);\n builder.addConstant(\"kSurfaceMask_OverrideRgb\", type, SurfaceFlags.OverrideRgb.toString() + suffix);\n builder.addConstant(\"kSurfaceMask_HasNormalMap\", type, SurfaceFlags.HasNormalMap.toString() + suffix);\n\n addExtractNthBit(builder);\n builder.addFunction(isSurfaceBitSet);\n builder.addGlobal(\"surfaceFlags\", VariableType.Uint);\n}\n\nconst initSurfaceFlags = `\n surfaceFlags = u_surfaceFlags[kSurfaceBitIndex_HasTexture] ? kSurfaceMask_HasTexture : 0u;\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_IgnoreMaterial] ? kSurfaceMask_IgnoreMaterial : 0u;\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_OverrideRgb] ? kSurfaceMask_OverrideRgb : 0u;\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_HasNormalMap] ? kSurfaceMask_HasNormalMap : 0u;\n`;\n\nconst computeBaseSurfaceFlags = `\n if (feature_ignore_material) {\n if (u_surfaceFlags[kSurfaceBitIndex_HasTexture])\n surfaceFlags -= kSurfaceMask_HasTexture;\n if (u_surfaceFlags[kSurfaceBitIndex_HasNormalMap])\n surfaceFlags -= kSurfaceMask_HasNormalMap;\n\n surfaceFlags += kSurfaceMask_IgnoreMaterial;\n }\n`;\n\n// Textured surfaces (including raster glyphs) always *multiply* the sampled alpha by the alpha override.\nconst computeColorSurfaceFlags = `\n if (feature_rgb.r >= 0.0)\n surfaceFlags += kSurfaceMask_OverrideRgb;\n`;\n\nconst returnSurfaceFlags = \" return float(surfaceFlags);\\n\";\n\nconst computeSurfaceFlags = computeBaseSurfaceFlags;\nconst computeSurfaceFlagsWithColor = computeBaseSurfaceFlags + computeColorSurfaceFlags;\n\n/** @internal */\nexport const octDecodeNormal = `\nvec3 octDecodeNormal(vec2 e) {\n e = e / 255.0 * 2.0 - 1.0;\n vec3 n = vec3(e.x, e.y, 1.0 - abs(e.x) - abs(e.y));\n if (n.z < 0.0) {\n vec2 signNotZero = vec2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0);\n n.xy = (1.0 - abs(n.yx)) * signNotZero;\n }\n\n return normalize(n);\n}\n`;\n\nfunction getComputeNormal(quantized: boolean): string {\n const a = quantized ? \"g_vertLutData3.xy\" : \"g_vertLutData4.zw\";\n const b = quantized ? \"g_vertLutData1.zw\" : \"g_vertLutData5.xy\";\n return `\n if (!u_surfaceFlags[kSurfaceBitIndex_HasNormals])\n return vec3(0.0);\n\n vec2 normal = (u_surfaceFlags[kSurfaceBitIndex_HasColorAndNormal]) ? ${a} : ${b};\n return normalize(MAT_NORM * octDecodeNormal(normal));\n`;\n}\n\nconst finalizeNormalPrelude = `\n vec3 normal = normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\n`;\n\nconst finalizeNormalNormalMap = `\n if (isSurfaceBitSet(kSurfaceBit_HasNormalMap)) {\n // Modify the normal with the normal map texture.\n // First calculate the tangent.\n vec3 dp1 = dFdx(v_eyeSpace);\n vec3 dp2 = dFdy(v_eyeSpace);\n vec2 duv1 = dFdx(v_texCoord);\n vec2 duv2 = dFdy(v_texCoord);\n vec3 tangent = normalize(duv2.y * dp1 - duv1.y * dp2);\n tangent = normalize (tangent - normal * dot (normal, tangent)); // re-orthogonalize with normal\n bool flip = (duv1.x * duv2.y - duv2.x * duv1.y) < 0.0;\n if (flip)\n tangent = -tangent;\n vec3 biTangent = cross (normal, tangent);\n if (flip)\n biTangent = -biTangent;\n vec3 normM;\n if (u_surfaceFlags[kSurfaceBitIndex_UseConstantLodNormalMapMapping])\n normM = constantLodTextureLookup(s_normalMap).xyz;\n else\n normM = TEXTURE(s_normalMap, v_texCoord).xyz;\n if (length (normM) > 0.0001) { // check for empty normal texture\n normM = (normM - 0.5) * 2.0;\n normM = normalize (normM);\n normM.x *= abs(u_normalMapScale);\n normM.y *= u_normalMapScale;\n normM = normalize (normM);\n normal = normalize (normM.x * tangent + normM.y * biTangent + normM.z * normal);\n }\n }\n`;\n\nconst finalizeNormalPostlude = `\n return normal;\n`;\n\nfunction getComputeAnimatedNormal(quantized: boolean): string {\n return `\n if (u_animNormalParams.x >= 0.0)\n return normalize(MAT_NORM * computeAnimationNormal(u_animNormalParams.x, u_animNormalParams.y, u_animNormalParams.z));\n\n ${getComputeNormal(quantized)}`;\n}\n\nconst applyBackgroundColor = `\n return u_surfaceFlags[kSurfaceBitIndex_BackgroundFill] ? vec4(u_bgColor.rgb, baseColor.a) : baseColor;\n`;\n\nfunction getComputeTexCoord(quantized: boolean): string {\n const vertData = quantized ? \"g_vertLutData3\" : \"g_vertLutData4\";\n return `\n vec4 rgba = ${vertData};\n vec2 qcoords = vec2(decodeUInt16(rgba.xy), decodeUInt16(rgba.zw));\n return chooseVec2With2BitFlags(vec2(0.0), unquantize2d(qcoords, u_qTexCoordParams), surfaceFlags, kSurfaceBit_HasTexture, kSurfaceBit_HasNormalMap);\n`;\n}\n\nfunction getComputeAnimatedTexCoord(quantized: boolean): string {\n return `\n if (u_animScalarQParams.x >= 0.0)\n return computeAnimationParam(u_animScalarParams.x, u_animScalarParams.y, u_animScalarParams.z, u_animScalarQParams.x, u_animScalarQParams.y);\n\n ${getComputeTexCoord(quantized)}\n`;\n}\n\nconst getSurfaceColor = `\nvec4 getSurfaceColor() { return v_color; }\n`;\n\n// If we have texture weight < 1.0 we must compute the element/material color first then mix with texture color\n// in ApplyMaterialOverrides(). Do the sample once, here, and store in a global variable for possible later use.\n// If a glyph texture, must mix getSurfaceColor() with texture color so texture color alpha is applied 100% and\n// surface color rgb is scaled by texture color rgb (latter is full white originally but stretched via mipmapping).\nconst computeBaseColor = `\n g_surfaceTexel = sampleSurfaceTexture();\n vec4 surfaceColor = getSurfaceColor();\n\n if (!u_applyGlyphTex)\n return surfaceColor;\n\n // Compute color for raster glyph.\n const vec3 white = vec3(1.0);\n const vec3 epsilon = vec3(0.0001);\n const vec3 almostWhite = white - epsilon;\n\n // set to black if almost white and reverse white-on-white is on\n bvec3 isAlmostWhite = greaterThan(surfaceColor.rgb, almostWhite);\n surfaceColor.rgb = (u_reverseWhiteOnWhite && isAlmostWhite.r && isAlmostWhite.g && isAlmostWhite.b ? vec3(0.0, 0.0, 0.0) : surfaceColor.rgb);\n return vec4(surfaceColor.rgb * g_surfaceTexel.rgb, g_surfaceTexel.a);\n`;\n\nconst surfaceFlagArray = new Int32Array(SurfaceBitIndex.Count);\n\n/** @internal */\nexport function addSurfaceFlags(builder: ProgramBuilder, withFeatureOverrides: boolean, withFeatureColor: boolean) {\n addSurfaceFlagsLookup(builder.vert);\n addSurfaceFlagsLookup(builder.frag);\n\n let compute = initSurfaceFlags;\n if (withFeatureOverrides)\n compute += `${withFeatureColor ? computeSurfaceFlagsWithColor : computeSurfaceFlags}\\n`;\n compute += returnSurfaceFlags;\n builder.addFunctionComputedVarying(\"v_surfaceFlags\", VariableType.Float, \"computeSurfaceFlags\", compute);\n\n builder.frag.addInitializer(\"surfaceFlags = uint(floor(v_surfaceFlags + 0.5));\");\n\n builder.addUniformArray(\"u_surfaceFlags\", VariableType.Boolean, SurfaceBitIndex.Count, (prog) => {\n prog.addGraphicUniform(\"u_surfaceFlags\", (uniform, params) => {\n assert(undefined !== params.geometry.asSurface);\n const mesh = params.geometry.asSurface;\n mesh.computeSurfaceFlags(params.programParams, surfaceFlagArray);\n uniform.setUniform1iv(surfaceFlagArray);\n });\n });\n}\n\nfunction addNormal(builder: ProgramBuilder, animated: IsAnimated) {\n addNormalMatrix(builder.vert);\n\n const quantized = \"quantized\" === builder.vert.positionType;\n builder.vert.addFunction(octDecodeNormal);\n builder.vert.addFunction(\"vec3 computeSurfaceNormal()\", getComputeNormal(quantized));\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", animated ? getComputeAnimatedNormal(quantized) : \"return computeSurfaceNormal();\");\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\n let finalizeNormal = finalizeNormalPrelude;\n\n finalizeNormal += finalizeNormalNormalMap;\n builder.frag.addFunction(constantLodTextureLookup);\n builder.frag.addUniform(\"u_normalMapScale\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_normalMapScale\", (uniform, params) => {\n if (undefined !== params.geometry.materialInfo && !params.geometry.materialInfo.isAtlas) {\n const normalMapParams = params.geometry.materialInfo.textureMapping?.normalMapParams;\n if (undefined !== normalMapParams) {\n let normalMapScale = 1.0;\n normalMapScale = normalMapParams.scale ?? 1.0;\n if (normalMapParams.greenUp)\n normalMapScale = -normalMapScale;\n uniform.setUniform1f(normalMapScale);\n }\n }\n });\n });\n\n finalizeNormal += finalizeNormalPostlude;\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\n\n // Set to true to colorize surfaces based on normals (in world space).\n // You must also set checkMaxVarying to false in ProgramBuilder.buildProgram to avoid assertions, if using a non-optimized build.\n const debugNormals = false;\n if (debugNormals) {\n builder.frag.set(FragmentShaderComponent.ApplyDebugColor, \"return vec4(vec3(v_normal / 2.0 + 0.5), baseColor.a);\");\n builder.addInlineComputedVarying(\"v_normal\", VariableType.Vec3, \"v_normal = computeSurfaceNormal();\");\n }\n}\n\n/** @internal */\nexport function addTexture(builder: ProgramBuilder, animated: IsAnimated, isThematic: IsThematic, isPointCloud: boolean, isHilite: boolean) {\n if (isThematic) {\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, isPointCloud, true));\n }\n\n // Point clouds do not need to compute texture coordinates since the only texture they use is the thematic gradient.\n // Surfaces now need texture coordinates even for thematic in case they have a normal map.\n if (!isPointCloud) {\n builder.vert.addFunction(unquantize2d);\n addChooseVec2WithBitFlagsFunction(builder.vert);\n const quantized = \"quantized\" === builder.vert.positionType;\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", animated ? getComputeAnimatedTexCoord(quantized) : getComputeTexCoord(quantized));\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const surfGeom = params.geometry.asSurface!;\n if (surfGeom.useTexture(params.programParams) || (surfGeom.useNormalMap(params.programParams) && !isPointCloud)) {\n const uvQParams = surfGeom.lut.uvQParams;\n if (undefined !== uvQParams) {\n uniform.setUniform4fv(uvQParams);\n }\n }\n });\n });\n }\n\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\n const surfGeom = params.geometry.asSurface!;\n if (params.geometry.supportsThematicDisplay && params.target.wantThematicDisplay) { // NB: if thematic display is enabled, bind the thematic texture and ignore any applied surface textures\n params.target.uniforms.thematic.bindTexture(uniform, TextureUnit.SurfaceTexture);\n } else if (surfGeom.useTexture(params.programParams)) {\n const texture = (params.geometry.hasAnimation && params.target.analysisTexture) ? (params.target.analysisTexture as Texture) : surfGeom.texture;\n assert(undefined !== texture);\n texture.texture.bindSampler(uniform, TextureUnit.SurfaceTexture);\n } else {\n System.instance.ensureSamplerBound(uniform, TextureUnit.SurfaceTexture);\n }\n });\n });\n\n if (!isHilite && !isPointCloud) {\n builder.frag.addUniform(\"s_normalMap\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_normalMap\", (uniform, params) => {\n const surfGeom = params.geometry.asSurface!;\n if (surfGeom.useNormalMap(params.programParams)) {\n const normalMap = surfGeom.normalMap;\n assert(undefined !== normalMap);\n normalMap.texture.bindSampler(uniform, TextureUnit.NormalMap);\n } else {\n System.instance.ensureSamplerBound(uniform, TextureUnit.NormalMap);\n }\n });\n });\n }\n}\n\nexport const discardClassifiedByAlpha = `\n if (u_no_classifier_discard)\n return false;\n\n bool hasAlpha = alpha <= s_maxAlpha;\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\n`;\n\nconst discardByTextureAlpha = `\n if (isSurfaceBitSet(kSurfaceBit_HasTexture)) {\n float cutoff = abs(u_alphaCutoff);\n if (kRenderPass_Translucent == u_renderPass)\n return u_alphaCutoff > 0.0 && alpha >= cutoff;\n else\n return alpha < cutoff;\n }\n\n return false;\n`;\n\nfunction addTransparencyDiscard(frag: FragmentShaderBuilder): void {\n addRenderPass(frag);\n frag.addUniform(\"u_alphaCutoff\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_alphaCutoff\", (uniform, params) => {\n // This cutoff is used to discard pixels based on the alpha value sampled from the surface texture.\n // During readPixels, or when transparency is disabled, only discard 100% opaque pixels.\n // Otherwise, if the geometry draws in both opaque and translucent passes, use DisplayParams.minTransparency to filter pixels into appropriate pass to produce appropriate blending.\n // Negative cutoff applies only during opaque pass; positive cutoff applies during opaque and translucent passes.\n const pass = params.geometry.getPass(params.target);\n const cutoff = (!Pass.rendersOpaqueAndTranslucent(pass) || params.target.isReadPixelsInProgress || !params.target.currentViewFlags.transparency) ? -1 / 255 : 241 / 255;\n uniform.setUniform1f(cutoff);\n });\n });\n\n frag.set(FragmentShaderComponent.DiscardByAlpha, discardByTextureAlpha);\n}\n\n/** @internal */\nexport function createSurfaceBuilder(flags: TechniqueFlags): ProgramBuilder {\n const builder = createCommon(flags.isInstanced, flags.isAnimated, flags.isShadowable, false, flags.positionType);\n addShaderFlags(builder);\n\n const feat = flags.featureMode;\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\n if (flags.isClassified) {\n opts &= ~FeatureSymbologyOptions.Alpha;\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\n }\n\n if (flags.isThematic) {\n addThematicDisplay(builder);\n } else {\n builder.vert.addUniform(\"u_modelToWorld\", VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(\"u_modelToWorld\", (uniform, params) => {\n if (undefined !== params.geometry.asSurface?.mesh.constantLodVParams)\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\n });\n });\n }\n\n addFeatureSymbology(builder, feat, opts);\n addSurfaceFlags(builder, FeatureMode.Overrides === feat, true);\n addSurfaceDiscard(builder, flags);\n addNormal(builder, flags.isAnimated);\n\n // In HiddenLine mode, we must compute the base color (plus feature overrides etc) in order to get the alpha, then replace with background color (preserving alpha for the transparency threshold test).\n builder.frag.set(FragmentShaderComponent.FinalizeBaseColor, applyBackgroundColor);\n builder.frag.addUniform(\"u_bgColor\", VariableType.Vec3, (prog) => {\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\n params.target.uniforms.style.bindBackgroundRgb(uniform);\n });\n });\n\n addTexture(builder, flags.isAnimated, flags.isThematic, false, false);\n\n builder.frag.addUniform(\"u_applyGlyphTex\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_applyGlyphTex\", (uniform, params) => {\n const surfGeom = params.geometry.asSurface!;\n uniform.setUniform1i(surfGeom.useTexture(params.programParams) && surfGeom.isGlyph ? 1 : 0);\n });\n });\n\n // Fragment and Vertex\n addColor(builder);\n\n // Fragment\n builder.frag.addFunction(getSurfaceColor);\n addLighting(builder);\n addWhiteOnWhiteReversal(builder.frag);\n\n if (flags.isTranslucent) {\n addTranslucency(builder);\n } else {\n if (FeatureMode.None === feat) {\n addFragColorWithPreMultipliedAlpha(builder.frag);\n } else {\n if (!flags.isClassified)\n addOverrideClassifierColor(builder, flags.isThematic);\n else\n addFeaturePlanarClassifier(builder);\n\n builder.frag.addFunction(decodeDepthRgb);\n if (flags.isEdgeTestNeeded || flags.isClassified)\n addPickBufferOutputs(builder.frag);\n else\n addAltPickBufferOutputs(builder.frag);\n }\n }\n\n builder.addVarying(\"v_uvCustom\", VariableType.Vec3);\n\n builder.vert.addUniform(\"u_constantLodVParams\", VariableType.Vec3, (prog) => {\n prog.addGraphicUniform(\"u_constantLodVParams\", (uniform, params) => {\n const vParams = params.geometry.asSurface?.mesh.constantLodVParams;\n if (undefined !== vParams) {\n vParams[2] = params.target.planFrustum.points[Npc.LeftTopRear].distance(params.target.planFrustum.points[Npc.RightTopRear]);\n uniform.setUniform3fv(vParams);\n }\n });\n });\n\n builder.frag.addUniform(\"u_constantLodFParams\", VariableType.Vec3, (prog) => {\n prog.addGraphicUniform(\"u_constantLodFParams\", (uniform, params) => {\n const fParams = params.geometry.asSurface?.mesh.constantLodFParams;\n if (undefined !== fParams)\n uniform.setUniform3fv(fParams);\n });\n });\n builder.frag.addFunction(constantLodTextureLookup);\n builder.frag.addFunction(sampleSurfaceTexture);\n\n builder.frag.addGlobal(\"g_surfaceTexel\", VariableType.Vec4);\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, (flags.isThematic === IsThematic.No) ? computeBaseColor : \"return getSurfaceColor();\");\n\n if (flags.isClassified)\n addClassificationTranslucencyDiscard(builder);\n else\n addTransparencyDiscard(builder.frag);\n\n addSurfaceMonochrome(builder.frag);\n addMaterial(builder, flags.isInstanced === IsInstanced.Yes);\n\n if (flags.isWiremesh)\n addWiremesh(builder);\n\n return builder;\n}\n\nexport function addClassificationTranslucencyDiscard(builder: ProgramBuilder) {\n // For unclassified geometry, we need to render in both the translucent and opaque passes if any feature transparency overrides are applied that would change the default render pass used.\n // Those shaders compute the transparency in the vertex shader and discard the vertex in one pass or the other.\n // For classified geometry, the transparency comes from the classifier geometry (when using Display.ElementColor), so even if there are no feature overrides, we may need to draw in both passes.\n // Since the transparency is not known until the fragment shader, we must perform the discard there instead.\n addMaxAlpha(builder.frag);\n addRenderPass(builder.frag);\n\n // Do not discard transparent classified geometry if we're trying to do a pick...\n builder.frag.addUniform(\"u_no_classifier_discard\", VariableType.Boolean, (prog) => {\n prog.addProgramUniform(\"u_no_classifier_discard\", (uniform, params) => {\n uniform.setUniform1i(params.target.isReadPixelsInProgress ? 1 : 0);\n });\n });\n\n builder.frag.set(FragmentShaderComponent.DiscardByAlpha, discardClassifiedByAlpha);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Surface.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { Material } from \"../Material\";\r\nimport { Pass, SurfaceBitIndex, SurfaceFlags, TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport {\r\n FeatureMode, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, PositionType, TechniqueFlags,\r\n} from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { Texture } from \"../Texture\";\r\nimport { addAnimation } from \"./Animation\";\r\nimport { unpackFloat } from \"./Clipping\";\r\nimport { addColor } from \"./Color\";\r\nimport { addChooseVec2WithBitFlagsFunction, addChooseVec3WithBitFlagFunction, addExtractNthBit, addFrustum, addShaderFlags } from \"./Common\";\r\nimport { addUnpackAndNormalize2Bytes, decodeDepthRgb, unquantize2d } from \"./Decode\";\r\nimport {\r\n addFeatureSymbology, addMaxAlpha, addRenderOrder, addRenderOrderConstants, addSurfaceDiscard, addSurfaceHiliter, FeatureSymbologyOptions,\r\n} from \"./FeatureSymbology\";\r\nimport {\r\n addAltPickBufferOutputs, addFragColorWithPreMultipliedAlpha, addPickBufferOutputs, addWhiteOnWhiteReversal, assignFragColor,\r\n} from \"./Fragment\";\r\nimport { addLighting } from \"./Lighting\";\r\nimport { addSurfaceMonochrome } from \"./Monochrome\";\r\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier, addOverrideClassifierColor } from \"./PlanarClassification\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\r\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\r\nimport { addTranslucency } from \"./Translucency\";\r\nimport { addModelViewMatrix, addNormalMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { wantMaterials } from \"../SurfaceGeometry\";\r\nimport { addWiremesh } from \"./Wiremesh\";\r\nimport { Npc } from \"@itwin/core-common\";\r\n\r\nconst constantLodTextureLookup = `\r\nvec4 constantLodTextureLookup(sampler2D textureSampler) {\r\n float logDepth = log2(v_uvCustom.z);\r\n float f = fract(logDepth);\r\n float p = floor(logDepth);\r\n // When p changes, both tc1 and tc2 jumped by a power of 2 at that transition (and f goes from ~1 to 0).\r\n // This caused a line to show up with incorrect tex coords, we believe due to a problem with the derivative\r\n // that is auto calculated on the tex coords for the mip-map. The below approach attempts to \"smooth\"\r\n // the transition of the coord in use at the transition by only changing the coord that is not in use\r\n // (but by 2 powers of 2) and switching the mix selector to account for it. It does this by using whether\r\n // p is odd or even to select which way it is going, so it alternates at the boundaries. This fixes the\r\n // line problem.\r\n float p1, p2;\r\n if (0u == (uint(p) & 1u)) { // p is even\r\n p1 = p;\r\n p2 = p + 1.0;\r\n } else { // p is odd\r\n p1 = p + 1.0;\r\n p2 = p;\r\n f = 1.0 - f;\r\n }\r\n\r\n vec2 tc1 = v_uvCustom.xy / clamp(pow(2.0, p1), float(u_constantLodFParams.x), float(u_constantLodFParams.y)) * u_constantLodFParams.z;\r\n vec2 tc2 = v_uvCustom.xy / clamp(pow(2.0, p2), float(u_constantLodFParams.x), float(u_constantLodFParams.y)) * u_constantLodFParams.z;\r\n return mix(TEXTURE(textureSampler, tc1), TEXTURE(textureSampler, tc2), f);\r\n}\r\n`;\r\n\r\n// NB: Textures do not contain pre-multiplied alpha.\r\nconst sampleSurfaceTexture = `\r\nvec4 sampleSurfaceTexture() {\r\n vec4 clr;\r\n if (!isSurfaceBitSet(kSurfaceBit_HasTexture))\r\n clr = vec4(1.0, 1.0, 1.0, 1.0);\r\n else if (u_surfaceFlags[kSurfaceBitIndex_UseConstantLodTextureMapping])\r\n clr = constantLodTextureLookup(s_texture);\r\n else\r\n clr = TEXTURE(s_texture, v_texCoord);\r\n return clr;\r\n}\r\n`;\r\n\r\nconst applyMaterialColor = `\r\n float useMatColor = float(use_material);\r\n vec3 rgb = mix(baseColor.rgb, mat_rgb.rgb, useMatColor * mat_rgb.a);\r\n float a = mix(baseColor.a, mat_alpha.x, useMatColor * mat_alpha.y);\r\n return vec4(rgb, a);\r\n`;\r\n\r\n// if this is a raster glyph, the sampled color has already been modified - do not modify further.\r\n// Mix diffuse color with texel based on texture weight.\r\n// Replace with diffuse RGB if RGB overridden.\r\n// Replace with diffuse alpha if alpha overridden.\r\n// Multiply texel alpha with diffuse alpha if specified.\r\nconst applyTextureWeight = `\r\n bool applyTexture = !u_applyGlyphTex && isSurfaceBitSet(kSurfaceBit_HasTexture);\r\n float textureWeight = applyTexture ? mat_texture_weight : 0.0;\r\n vec3 rgb = mix(baseColor.rgb, g_surfaceTexel.rgb, textureWeight);\r\n rgb = chooseVec3WithBitFlag(rgb, baseColor.rgb, surfaceFlags, kSurfaceBit_OverrideRgb);\r\n\r\n float a = applyTexture ? baseColor.a * g_surfaceTexel.a : baseColor.a;\r\n\r\n return vec4(rgb, a);\r\n`;\r\n\r\nconst decodeFragMaterialParams = `\r\nvoid decodeMaterialParams(vec4 params) {\r\n mat_weights = unpackAndNormalize2Bytes(params.x);\r\n\r\n vec2 texAndSpecR = unpackAndNormalize2Bytes(params.y);\r\n mat_texture_weight = texAndSpecR.x;\r\n\r\n vec2 specGB = unpackAndNormalize2Bytes(params.z);\r\n mat_specular = vec4(texAndSpecR.y, specGB, params.w);\r\n}\r\n`;\r\n\r\nconst decodeMaterialColor = `\r\nvoid decodeMaterialColor(vec4 rgba) {\r\n mat_rgb = vec4(rgba.rgb, float(rgba.r >= 0.0));\r\n mat_alpha = vec2(rgba.a, float(rgba.a >= 0.0));\r\n}\r\n`;\r\n\r\n// defaults: (0x6699, 0xffff, 0xffff, 13.5)\r\nconst computeMaterialParams = `\r\n const vec4 defaults = vec4(26265.0, 65535.0, 65535.0, 13.5);\r\n return use_material ? g_materialParams : defaults;\r\n`;\r\n\r\n// The 8-bit material index is stored with the 24-bit feature index, in the high byte.\r\nconst readMaterialAtlas = `\r\nvoid readMaterialAtlas() {\r\n float materialAtlasStart = u_vertParams.z * u_vertParams.w + u_numColors;\r\n float materialIndex = g_featureAndMaterialIndex.w * 4.0 + materialAtlasStart;\r\n\r\n vec2 tc = computeLUTCoords(materialIndex, u_vertParams.xy, g_vert_center, 1.0);\r\n vec4 rgba = TEXTURE(u_vertLUT, tc);\r\n\r\n tc = computeLUTCoords(materialIndex + 1.0, u_vertParams.xy, g_vert_center, 1.0);\r\n vec4 weightsAndFlags = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5);\r\n\r\n tc = computeLUTCoords(materialIndex + 2.0, u_vertParams.xy, g_vert_center, 1.0);\r\n vec3 specularRgb = floor(TEXTURE(u_vertLUT, tc) * 255.0 + 0.5).rgb;\r\n\r\n tc = computeLUTCoords(materialIndex + 3.0, u_vertParams.xy, g_vert_center, 1.0);\r\n vec4 packedSpecularExponent = TEXTURE(u_vertLUT, tc);\r\n\r\n float flags = weightsAndFlags.w;\r\n mat_rgb = vec4(rgba.rgb, float(flags == 1.0 || flags == 3.0));\r\n mat_alpha = vec2(rgba.a, float(flags == 2.0 || flags == 3.0));\r\n\r\n float specularExponent = unpackFloat(packedSpecularExponent);\r\n g_materialParams.x = weightsAndFlags.y + weightsAndFlags.z * 256.0;\r\n g_materialParams.y = 255.0 + specularRgb.r * 256.0;\r\n g_materialParams.z = specularRgb.g + specularRgb.b * 256.0;\r\n g_materialParams.w = specularExponent;\r\n}\r\n`;\r\n\r\nconst computeMaterial = `\r\n if (u_surfaceFlags[kSurfaceBitIndex_HasMaterialAtlas]) {\r\n readMaterialAtlas();\r\n } else {\r\n decodeMaterialColor(u_materialColor);\r\n g_materialParams = u_materialParams;\r\n }\r\n`;\r\n\r\nconst computeMaterialInstanced = `\r\n decodeMaterialColor(u_materialColor);\r\n g_materialParams = u_materialParams;\r\n`;\r\n\r\nfunction addMaterial(builder: ProgramBuilder, instanced: boolean): void {\r\n const frag = builder.frag;\r\n assert(undefined !== frag.find(\"v_surfaceFlags\"));\r\n\r\n frag.addGlobal(\"mat_texture_weight\", VariableType.Float);\r\n frag.addGlobal(\"mat_weights\", VariableType.Vec2); // diffuse, specular\r\n frag.addGlobal(\"mat_specular\", VariableType.Vec4); // rgb, exponent\r\n\r\n addUnpackAndNormalize2Bytes(frag);\r\n frag.addFunction(decodeFragMaterialParams);\r\n frag.addInitializer(\"decodeMaterialParams(v_materialParams);\");\r\n\r\n addChooseVec3WithBitFlagFunction(frag);\r\n frag.set(FragmentShaderComponent.ApplyMaterialOverrides, applyTextureWeight);\r\n\r\n const vert = builder.vert;\r\n vert.addGlobal(\"mat_rgb\", VariableType.Vec4); // a = 0 if not overridden, else 1\r\n vert.addGlobal(\"mat_alpha\", VariableType.Vec2); // a = 0 if not overridden, else 1\r\n vert.addGlobal(\"use_material\", VariableType.Boolean);\r\n vert.addInitializer(\"use_material = (0u == (surfaceFlags & kSurfaceBit_IgnoreMaterial));\");\r\n\r\n // Uniform material\r\n vert.addFunction(decodeMaterialColor);\r\n vert.addUniform(\"u_materialColor\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_materialColor\", (uniform, params) => {\r\n const info = wantMaterials(params.target.currentViewFlags) ? params.geometry.materialInfo : undefined;\r\n const mat = undefined !== info && !info.isAtlas ? info : Material.default;\r\n uniform.setUniform4fv(mat.rgba);\r\n });\r\n });\r\n\r\n vert.addUniform(\"u_materialParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_materialParams\", (uniform, params) => {\r\n const info = wantMaterials(params.target.currentViewFlags) ? params.geometry.materialInfo : undefined;\r\n const mat = undefined !== info && !info.isAtlas ? info : Material.default;\r\n uniform.setUniform4fv(mat.fragUniforms);\r\n });\r\n });\r\n\r\n if (!instanced) {\r\n // Material atlas\r\n vert.addFunction(unpackFloat);\r\n vert.addFunction(readMaterialAtlas);\r\n vert.addUniform(\"u_numColors\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_numColors\", (uniform, params) => {\r\n const info = params.geometry.materialInfo;\r\n const numColors = undefined !== info && info.isAtlas ? info.vertexTableOffset : 0;\r\n uniform.setUniform1f(numColors);\r\n });\r\n });\r\n }\r\n vert.addGlobal(\"g_materialParams\", VariableType.Vec4);\r\n vert.set(VertexShaderComponent.ComputeMaterial, instanced ? computeMaterialInstanced : computeMaterial);\r\n vert.set(VertexShaderComponent.ApplyMaterialColor, applyMaterialColor);\r\n builder.addFunctionComputedVarying(\"v_materialParams\", VariableType.Vec4, \"computeMaterialParams\", computeMaterialParams);\r\n}\r\n\r\nconst computePositionPrelude = `\r\n vec4 pos = MAT_MV * rawPos;\r\n`;\r\n\r\n// We used to use gl.polygonOffset() for blanking regions, but that doesn't work with logarithmic depth buffer which overwrites the\r\n// computed Z. Instead we must manually offset in vertex shader. We do this even if log depth is not enabled/supported.\r\n// NOTE: If log depth is *not* supported, then the hilite surface vertex shaders previously would still include this logic, but the\r\n// fragment shaders would not use v_eyeSpace. Some Ubuntu 20.04 graphics drivers cleverly and correctly optimized out the varying and the uniform,\r\n// causing an exception when gl.getProgramLocation() failed. So, omit this bit in that case.\r\nconst adjustEyeSpace = `\r\n v_eyeSpace = pos.xyz;\r\n const float blankingRegionOffset = 2.0 / 65536.0;\r\n if (kRenderOrder_BlankingRegion == u_renderOrder)\r\n v_eyeSpace.z -= blankingRegionOffset * (u_frustum.y - u_frustum.x);\r\n`;\r\n\r\nconst computeConstantLodUvCustom = `\r\n vec2 worldpos = (u_modelToWorld * vec4(rawPos.xyz, 0.0)).xy;\r\n v_uvCustom = vec3((u_constantLodVParams.xy + worldpos) * vec2(1.0, -1.0), kFrustumType_Perspective == u_frustum.z ? -v_eyeSpace.z : u_constantLodVParams.z);\r\n`;\r\n\r\nconst computePositionPostlude = `\r\n return u_proj * pos;\r\n`;\r\n\r\nfunction createCommon(isInstanced: IsInstanced, animated: IsAnimated, shadowable: IsShadowable, isHiliter: boolean, positionType: PositionType): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Surface, instanced);\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\r\n const vert = builder.vert;\r\n\r\n if (animated)\r\n addAnimation(vert, true);\r\n\r\n if (shadowable)\r\n addSolarShadowMap(builder);\r\n\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n\r\n let computePosition = computePositionPrelude;\r\n if (!isHiliter || System.instance.supportsLogZBuffer) {\r\n addFrustum(builder);\r\n addRenderOrder(builder.vert);\r\n addRenderOrderConstants(builder.vert);\r\n builder.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n computePosition += adjustEyeSpace;\r\n }\r\n if (!isHiliter)\r\n computePosition += computeConstantLodUvCustom;\r\n computePosition += computePositionPostlude;\r\n\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createSurfaceHiliter(instanced: IsInstanced, classified: IsClassified, posType: PositionType): ProgramBuilder {\r\n const builder = createCommon(instanced, IsAnimated.No, IsShadowable.No, true, posType);\r\n\r\n addSurfaceFlags(builder, true, false);\r\n addTexture(builder, IsAnimated.No, IsThematic.No, false, true);\r\n if (classified) {\r\n addHilitePlanarClassifier(builder);\r\n builder.vert.addGlobal(\"feature_ignore_material\", VariableType.Boolean, \"false\");\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n } else {\r\n addSurfaceHiliter(builder);\r\n }\r\n\r\n return builder;\r\n}\r\n\r\nconst isSurfaceBitSet = `\r\nbool isSurfaceBitSet(uint flag) { return 0u != (surfaceFlags & flag); }\r\n`;\r\n\r\n/** @internal */\r\nfunction addSurfaceFlagsLookup(builder: ShaderBuilder) {\r\n builder.addConstant(\"kSurfaceBitIndex_HasTexture\", VariableType.Int, SurfaceBitIndex.HasTexture.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_ApplyLighting\", VariableType.Int, SurfaceBitIndex.ApplyLighting.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_HasNormals\", VariableType.Int, SurfaceBitIndex.HasNormals.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_IgnoreMaterial\", VariableType.Int, SurfaceBitIndex.IgnoreMaterial.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_TransparencyThreshold\", VariableType.Int, SurfaceBitIndex.TransparencyThreshold.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_BackgroundFill\", VariableType.Int, SurfaceBitIndex.BackgroundFill.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_HasColorAndNormal\", VariableType.Int, SurfaceBitIndex.HasColorAndNormal.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_OverrideRgb\", VariableType.Int, SurfaceBitIndex.OverrideRgb.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_HasNormalMap\", VariableType.Int, SurfaceBitIndex.HasNormalMap.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_HasMaterialAtlas\", VariableType.Int, SurfaceBitIndex.HasMaterialAtlas.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_UseConstantLodTextureMapping\", VariableType.Int, SurfaceBitIndex.UseConstantLodTextureMapping.toString());\r\n builder.addConstant(\"kSurfaceBitIndex_UseConstantLodNormalMapMapping\", VariableType.Int, SurfaceBitIndex.UseConstantLodNormalMapMapping.toString());\r\n\r\n // Surface flags which get modified in vertex shader are still passed to fragment shader as a single float & are thus\r\n // used differently there & so require different constants. Unused constants are commented out.\r\n builder.addBitFlagConstant(\"kSurfaceBit_HasTexture\", SurfaceBitIndex.HasTexture);\r\n builder.addBitFlagConstant(\"kSurfaceBit_IgnoreMaterial\", SurfaceBitIndex.IgnoreMaterial);\r\n builder.addBitFlagConstant(\"kSurfaceBit_OverrideRgb\", SurfaceBitIndex.OverrideRgb);\r\n builder.addBitFlagConstant(\"kSurfaceBit_HasNormalMap\", SurfaceBitIndex.HasNormalMap);\r\n\r\n // Only need masks for flags modified in vertex shader\r\n const suffix = \"u\";\r\n const type = VariableType.Uint;\r\n builder.addConstant(\"kSurfaceMask_HasTexture\", type, SurfaceFlags.HasTexture.toString() + suffix);\r\n builder.addConstant(\"kSurfaceMask_IgnoreMaterial\", type, SurfaceFlags.IgnoreMaterial.toString() + suffix);\r\n builder.addConstant(\"kSurfaceMask_OverrideRgb\", type, SurfaceFlags.OverrideRgb.toString() + suffix);\r\n builder.addConstant(\"kSurfaceMask_HasNormalMap\", type, SurfaceFlags.HasNormalMap.toString() + suffix);\r\n\r\n addExtractNthBit(builder);\r\n builder.addFunction(isSurfaceBitSet);\r\n builder.addGlobal(\"surfaceFlags\", VariableType.Uint);\r\n}\r\n\r\nconst initSurfaceFlags = `\r\n surfaceFlags = u_surfaceFlags[kSurfaceBitIndex_HasTexture] ? kSurfaceMask_HasTexture : 0u;\r\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_IgnoreMaterial] ? kSurfaceMask_IgnoreMaterial : 0u;\r\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_OverrideRgb] ? kSurfaceMask_OverrideRgb : 0u;\r\n surfaceFlags += u_surfaceFlags[kSurfaceBitIndex_HasNormalMap] ? kSurfaceMask_HasNormalMap : 0u;\r\n`;\r\n\r\nconst computeBaseSurfaceFlags = `\r\n if (feature_ignore_material) {\r\n if (u_surfaceFlags[kSurfaceBitIndex_HasTexture])\r\n surfaceFlags -= kSurfaceMask_HasTexture;\r\n if (u_surfaceFlags[kSurfaceBitIndex_HasNormalMap])\r\n surfaceFlags -= kSurfaceMask_HasNormalMap;\r\n\r\n surfaceFlags += kSurfaceMask_IgnoreMaterial;\r\n }\r\n`;\r\n\r\n// Textured surfaces (including raster glyphs) always *multiply* the sampled alpha by the alpha override.\r\nconst computeColorSurfaceFlags = `\r\n if (feature_rgb.r >= 0.0)\r\n surfaceFlags += kSurfaceMask_OverrideRgb;\r\n`;\r\n\r\nconst returnSurfaceFlags = \" return float(surfaceFlags);\\n\";\r\n\r\nconst computeSurfaceFlags = computeBaseSurfaceFlags;\r\nconst computeSurfaceFlagsWithColor = computeBaseSurfaceFlags + computeColorSurfaceFlags;\r\n\r\n/** @internal */\r\nexport const octDecodeNormal = `\r\nvec3 octDecodeNormal(vec2 e) {\r\n e = e / 255.0 * 2.0 - 1.0;\r\n vec3 n = vec3(e.x, e.y, 1.0 - abs(e.x) - abs(e.y));\r\n if (n.z < 0.0) {\r\n vec2 signNotZero = vec2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0);\r\n n.xy = (1.0 - abs(n.yx)) * signNotZero;\r\n }\r\n\r\n return normalize(n);\r\n}\r\n`;\r\n\r\nfunction getComputeNormal(quantized: boolean): string {\r\n const a = quantized ? \"g_vertLutData3.xy\" : \"g_vertLutData4.zw\";\r\n const b = quantized ? \"g_vertLutData1.zw\" : \"g_vertLutData5.xy\";\r\n return `\r\n if (!u_surfaceFlags[kSurfaceBitIndex_HasNormals])\r\n return vec3(0.0);\r\n\r\n vec2 normal = (u_surfaceFlags[kSurfaceBitIndex_HasColorAndNormal]) ? ${a} : ${b};\r\n return normalize(MAT_NORM * octDecodeNormal(normal));\r\n`;\r\n}\r\n\r\nconst finalizeNormalPrelude = `\r\n vec3 normal = normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\r\n`;\r\n\r\nconst finalizeNormalNormalMap = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasNormalMap)) {\r\n // Modify the normal with the normal map texture.\r\n // First calculate the tangent.\r\n vec3 dp1 = dFdx(v_eyeSpace);\r\n vec3 dp2 = dFdy(v_eyeSpace);\r\n vec2 duv1 = dFdx(v_texCoord);\r\n vec2 duv2 = dFdy(v_texCoord);\r\n vec3 tangent = normalize(duv2.y * dp1 - duv1.y * dp2);\r\n tangent = normalize (tangent - normal * dot (normal, tangent)); // re-orthogonalize with normal\r\n bool flip = (duv1.x * duv2.y - duv2.x * duv1.y) < 0.0;\r\n if (flip)\r\n tangent = -tangent;\r\n vec3 biTangent = cross (normal, tangent);\r\n if (flip)\r\n biTangent = -biTangent;\r\n vec3 normM;\r\n if (u_surfaceFlags[kSurfaceBitIndex_UseConstantLodNormalMapMapping])\r\n normM = constantLodTextureLookup(s_normalMap).xyz;\r\n else\r\n normM = TEXTURE(s_normalMap, v_texCoord).xyz;\r\n if (length (normM) > 0.0001) { // check for empty normal texture\r\n normM = (normM - 0.5) * 2.0;\r\n normM = normalize (normM);\r\n normM.x *= abs(u_normalMapScale);\r\n normM.y *= u_normalMapScale;\r\n normM = normalize (normM);\r\n normal = normalize (normM.x * tangent + normM.y * biTangent + normM.z * normal);\r\n }\r\n }\r\n`;\r\n\r\nconst finalizeNormalPostlude = `\r\n return normal;\r\n`;\r\n\r\nfunction getComputeAnimatedNormal(quantized: boolean): string {\r\n return `\r\n if (u_animNormalParams.x >= 0.0)\r\n return normalize(MAT_NORM * computeAnimationNormal(u_animNormalParams.x, u_animNormalParams.y, u_animNormalParams.z));\r\n\r\n ${getComputeNormal(quantized)}`;\r\n}\r\n\r\nconst applyBackgroundColor = `\r\n return u_surfaceFlags[kSurfaceBitIndex_BackgroundFill] ? vec4(u_bgColor.rgb, baseColor.a) : baseColor;\r\n`;\r\n\r\nfunction getComputeTexCoord(quantized: boolean): string {\r\n const vertData = quantized ? \"g_vertLutData3\" : \"g_vertLutData4\";\r\n return `\r\n vec4 rgba = ${vertData};\r\n vec2 qcoords = vec2(decodeUInt16(rgba.xy), decodeUInt16(rgba.zw));\r\n return chooseVec2With2BitFlags(vec2(0.0), unquantize2d(qcoords, u_qTexCoordParams), surfaceFlags, kSurfaceBit_HasTexture, kSurfaceBit_HasNormalMap);\r\n`;\r\n}\r\n\r\nfunction getComputeAnimatedTexCoord(quantized: boolean): string {\r\n return `\r\n if (u_animScalarQParams.x >= 0.0)\r\n return computeAnimationParam(u_animScalarParams.x, u_animScalarParams.y, u_animScalarParams.z, u_animScalarQParams.x, u_animScalarQParams.y);\r\n\r\n ${getComputeTexCoord(quantized)}\r\n`;\r\n}\r\n\r\nconst getSurfaceColor = `\r\nvec4 getSurfaceColor() { return v_color; }\r\n`;\r\n\r\n// If we have texture weight < 1.0 we must compute the element/material color first then mix with texture color\r\n// in ApplyMaterialOverrides(). Do the sample once, here, and store in a global variable for possible later use.\r\n// If a glyph texture, must mix getSurfaceColor() with texture color so texture color alpha is applied 100% and\r\n// surface color rgb is scaled by texture color rgb (latter is full white originally but stretched via mipmapping).\r\nconst computeBaseColor = `\r\n g_surfaceTexel = sampleSurfaceTexture();\r\n vec4 surfaceColor = getSurfaceColor();\r\n\r\n if (!u_applyGlyphTex)\r\n return surfaceColor;\r\n\r\n // Compute color for raster glyph.\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n const vec3 almostWhite = white - epsilon;\r\n\r\n // set to black if almost white and reverse white-on-white is on\r\n bvec3 isAlmostWhite = greaterThan(surfaceColor.rgb, almostWhite);\r\n surfaceColor.rgb = (u_reverseWhiteOnWhite && isAlmostWhite.r && isAlmostWhite.g && isAlmostWhite.b ? vec3(0.0, 0.0, 0.0) : surfaceColor.rgb);\r\n return vec4(surfaceColor.rgb * g_surfaceTexel.rgb, g_surfaceTexel.a);\r\n`;\r\n\r\nconst surfaceFlagArray = new Int32Array(SurfaceBitIndex.Count);\r\n\r\n/** @internal */\r\nexport function addSurfaceFlags(builder: ProgramBuilder, withFeatureOverrides: boolean, withFeatureColor: boolean) {\r\n addSurfaceFlagsLookup(builder.vert);\r\n addSurfaceFlagsLookup(builder.frag);\r\n\r\n let compute = initSurfaceFlags;\r\n if (withFeatureOverrides)\r\n compute += `${withFeatureColor ? computeSurfaceFlagsWithColor : computeSurfaceFlags}\\n`;\r\n compute += returnSurfaceFlags;\r\n builder.addFunctionComputedVarying(\"v_surfaceFlags\", VariableType.Float, \"computeSurfaceFlags\", compute);\r\n\r\n builder.frag.addInitializer(\"surfaceFlags = uint(floor(v_surfaceFlags + 0.5));\");\r\n\r\n builder.addUniformArray(\"u_surfaceFlags\", VariableType.Boolean, SurfaceBitIndex.Count, (prog) => {\r\n prog.addGraphicUniform(\"u_surfaceFlags\", (uniform, params) => {\r\n assert(undefined !== params.geometry.asSurface);\r\n const mesh = params.geometry.asSurface;\r\n mesh.computeSurfaceFlags(params.programParams, surfaceFlagArray);\r\n uniform.setUniform1iv(surfaceFlagArray);\r\n });\r\n });\r\n}\r\n\r\nfunction addNormal(builder: ProgramBuilder, animated: IsAnimated) {\r\n addNormalMatrix(builder.vert);\r\n\r\n const quantized = \"quantized\" === builder.vert.positionType;\r\n builder.vert.addFunction(octDecodeNormal);\r\n builder.vert.addFunction(\"vec3 computeSurfaceNormal()\", getComputeNormal(quantized));\r\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", animated ? getComputeAnimatedNormal(quantized) : \"return computeSurfaceNormal();\");\r\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\r\n let finalizeNormal = finalizeNormalPrelude;\r\n\r\n finalizeNormal += finalizeNormalNormalMap;\r\n builder.frag.addFunction(constantLodTextureLookup);\r\n builder.frag.addUniform(\"u_normalMapScale\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_normalMapScale\", (uniform, params) => {\r\n if (undefined !== params.geometry.materialInfo && !params.geometry.materialInfo.isAtlas) {\r\n const normalMapParams = params.geometry.materialInfo.textureMapping?.normalMapParams;\r\n if (undefined !== normalMapParams) {\r\n let normalMapScale = 1.0;\r\n normalMapScale = normalMapParams.scale ?? 1.0;\r\n if (normalMapParams.greenUp)\r\n normalMapScale = -normalMapScale;\r\n uniform.setUniform1f(normalMapScale);\r\n }\r\n }\r\n });\r\n });\r\n\r\n finalizeNormal += finalizeNormalPostlude;\r\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\r\n\r\n // Set to true to colorize surfaces based on normals (in world space).\r\n // You must also set checkMaxVarying to false in ProgramBuilder.buildProgram to avoid assertions, if using a non-optimized build.\r\n const debugNormals = false;\r\n if (debugNormals) {\r\n builder.frag.set(FragmentShaderComponent.ApplyDebugColor, \"return vec4(vec3(v_normal / 2.0 + 0.5), baseColor.a);\");\r\n builder.addInlineComputedVarying(\"v_normal\", VariableType.Vec3, \"v_normal = computeSurfaceNormal();\");\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addTexture(builder: ProgramBuilder, animated: IsAnimated, isThematic: IsThematic, isPointCloud: boolean, isHilite: boolean) {\r\n if (isThematic) {\r\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, isPointCloud, true));\r\n }\r\n\r\n // Point clouds do not need to compute texture coordinates since the only texture they use is the thematic gradient.\r\n // Surfaces now need texture coordinates even for thematic in case they have a normal map.\r\n if (!isPointCloud) {\r\n builder.vert.addFunction(unquantize2d);\r\n addChooseVec2WithBitFlagsFunction(builder.vert);\r\n const quantized = \"quantized\" === builder.vert.positionType;\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", animated ? getComputeAnimatedTexCoord(quantized) : getComputeTexCoord(quantized));\r\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const surfGeom = params.geometry.asSurface!;\r\n if (surfGeom.useTexture(params.programParams) || (surfGeom.useNormalMap(params.programParams) && !isPointCloud)) {\r\n const uvQParams = surfGeom.lut.uvQParams;\r\n if (undefined !== uvQParams) {\r\n uniform.setUniform4fv(uvQParams);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\r\n const surfGeom = params.geometry.asSurface!;\r\n if (params.geometry.supportsThematicDisplay && params.target.wantThematicDisplay) { // NB: if thematic display is enabled, bind the thematic texture and ignore any applied surface textures\r\n params.target.uniforms.thematic.bindTexture(uniform, TextureUnit.SurfaceTexture);\r\n } else if (surfGeom.useTexture(params.programParams)) {\r\n const texture = (params.geometry.hasAnimation && params.target.analysisTexture) ? (params.target.analysisTexture as Texture) : surfGeom.texture;\r\n assert(undefined !== texture);\r\n texture.texture.bindSampler(uniform, TextureUnit.SurfaceTexture);\r\n } else {\r\n System.instance.ensureSamplerBound(uniform, TextureUnit.SurfaceTexture);\r\n }\r\n });\r\n });\r\n\r\n if (!isHilite && !isPointCloud) {\r\n builder.frag.addUniform(\"s_normalMap\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_normalMap\", (uniform, params) => {\r\n const surfGeom = params.geometry.asSurface!;\r\n if (surfGeom.useNormalMap(params.programParams)) {\r\n const normalMap = surfGeom.normalMap;\r\n assert(undefined !== normalMap);\r\n normalMap.texture.bindSampler(uniform, TextureUnit.NormalMap);\r\n } else {\r\n System.instance.ensureSamplerBound(uniform, TextureUnit.NormalMap);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport const discardClassifiedByAlpha = `\r\n if (u_no_classifier_discard)\r\n return false;\r\n\r\n bool hasAlpha = alpha <= s_maxAlpha;\r\n bool isOpaquePass = (kRenderPass_OpaqueLinear <= u_renderPass && kRenderPass_OpaqueGeneral >= u_renderPass);\r\n bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;\r\n return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);\r\n`;\r\n\r\nconst discardByTextureAlpha = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture)) {\r\n float cutoff = abs(u_alphaCutoff);\r\n if (kRenderPass_Translucent == u_renderPass)\r\n return u_alphaCutoff > 0.0 && alpha >= cutoff;\r\n else\r\n return alpha < cutoff;\r\n }\r\n\r\n return false;\r\n`;\r\n\r\nfunction addTransparencyDiscard(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n frag.addUniform(\"u_alphaCutoff\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_alphaCutoff\", (uniform, params) => {\r\n // This cutoff is used to discard pixels based on the alpha value sampled from the surface texture.\r\n // During readPixels, or when transparency is disabled, only discard 100% opaque pixels.\r\n // Otherwise, if the geometry draws in both opaque and translucent passes, use DisplayParams.minTransparency to filter pixels into appropriate pass to produce appropriate blending.\r\n // Negative cutoff applies only during opaque pass; positive cutoff applies during opaque and translucent passes.\r\n const pass = params.geometry.getPass(params.target);\r\n const cutoff = (!Pass.rendersOpaqueAndTranslucent(pass) || params.target.isReadPixelsInProgress || !params.target.currentViewFlags.transparency) ? -1 / 255 : 241 / 255;\r\n uniform.setUniform1f(cutoff);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.DiscardByAlpha, discardByTextureAlpha);\r\n}\r\n\r\n/** @internal */\r\nexport function createSurfaceBuilder(flags: TechniqueFlags): ProgramBuilder {\r\n const builder = createCommon(flags.isInstanced, flags.isAnimated, flags.isShadowable, false, flags.positionType);\r\n addShaderFlags(builder);\r\n\r\n const feat = flags.featureMode;\r\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\r\n if (flags.isClassified) {\r\n opts &= ~FeatureSymbologyOptions.Alpha;\r\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\r\n }\r\n\r\n if (flags.isThematic) {\r\n addThematicDisplay(builder);\r\n } else {\r\n builder.vert.addUniform(\"u_modelToWorld\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_modelToWorld\", (uniform, params) => {\r\n if (undefined !== params.geometry.asSurface?.mesh.constantLodVParams)\r\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n }\r\n\r\n addFeatureSymbology(builder, feat, opts);\r\n addSurfaceFlags(builder, FeatureMode.Overrides === feat, true);\r\n addSurfaceDiscard(builder, flags);\r\n addNormal(builder, flags.isAnimated);\r\n\r\n // In HiddenLine mode, we must compute the base color (plus feature overrides etc) in order to get the alpha, then replace with background color (preserving alpha for the transparency threshold test).\r\n builder.frag.set(FragmentShaderComponent.FinalizeBaseColor, applyBackgroundColor);\r\n builder.frag.addUniform(\"u_bgColor\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\r\n params.target.uniforms.style.bindBackgroundRgb(uniform);\r\n });\r\n });\r\n\r\n addTexture(builder, flags.isAnimated, flags.isThematic, false, false);\r\n\r\n builder.frag.addUniform(\"u_applyGlyphTex\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_applyGlyphTex\", (uniform, params) => {\r\n const surfGeom = params.geometry.asSurface!;\r\n uniform.setUniform1i(surfGeom.useTexture(params.programParams) && surfGeom.isGlyph ? 1 : 0);\r\n });\r\n });\r\n\r\n // Fragment and Vertex\r\n addColor(builder);\r\n\r\n // Fragment\r\n builder.frag.addFunction(getSurfaceColor);\r\n addLighting(builder);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n if (flags.isTranslucent) {\r\n addTranslucency(builder);\r\n } else {\r\n if (FeatureMode.None === feat) {\r\n addFragColorWithPreMultipliedAlpha(builder.frag);\r\n } else {\r\n if (!flags.isClassified)\r\n addOverrideClassifierColor(builder, flags.isThematic);\r\n else\r\n addFeaturePlanarClassifier(builder);\r\n\r\n builder.frag.addFunction(decodeDepthRgb);\r\n if (flags.isEdgeTestNeeded || flags.isClassified)\r\n addPickBufferOutputs(builder.frag);\r\n else\r\n addAltPickBufferOutputs(builder.frag);\r\n }\r\n }\r\n\r\n builder.addVarying(\"v_uvCustom\", VariableType.Vec3);\r\n\r\n builder.vert.addUniform(\"u_constantLodVParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_constantLodVParams\", (uniform, params) => {\r\n const vParams = params.geometry.asSurface?.mesh.constantLodVParams;\r\n if (undefined !== vParams) {\r\n vParams[2] = params.target.planFrustum.points[Npc.LeftTopRear].distance(params.target.planFrustum.points[Npc.RightTopRear]);\r\n uniform.setUniform3fv(vParams);\r\n }\r\n });\r\n });\r\n\r\n builder.frag.addUniform(\"u_constantLodFParams\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_constantLodFParams\", (uniform, params) => {\r\n const fParams = params.geometry.asSurface?.mesh.constantLodFParams;\r\n if (undefined !== fParams)\r\n uniform.setUniform3fv(fParams);\r\n });\r\n });\r\n builder.frag.addFunction(constantLodTextureLookup);\r\n builder.frag.addFunction(sampleSurfaceTexture);\r\n\r\n builder.frag.addGlobal(\"g_surfaceTexel\", VariableType.Vec4);\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, (flags.isThematic === IsThematic.No) ? computeBaseColor : \"return getSurfaceColor();\");\r\n\r\n if (flags.isClassified)\r\n addClassificationTranslucencyDiscard(builder);\r\n else\r\n addTransparencyDiscard(builder.frag);\r\n\r\n addSurfaceMonochrome(builder.frag);\r\n addMaterial(builder, flags.isInstanced === IsInstanced.Yes);\r\n\r\n if (flags.isWiremesh)\r\n addWiremesh(builder);\r\n\r\n return builder;\r\n}\r\n\r\nexport function addClassificationTranslucencyDiscard(builder: ProgramBuilder) {\r\n // For unclassified geometry, we need to render in both the translucent and opaque passes if any feature transparency overrides are applied that would change the default render pass used.\r\n // Those shaders compute the transparency in the vertex shader and discard the vertex in one pass or the other.\r\n // For classified geometry, the transparency comes from the classifier geometry (when using Display.ElementColor), so even if there are no feature overrides, we may need to draw in both passes.\r\n // Since the transparency is not known until the fragment shader, we must perform the discard there instead.\r\n addMaxAlpha(builder.frag);\r\n addRenderPass(builder.frag);\r\n\r\n // Do not discard transparent classified geometry if we're trying to do a pick...\r\n builder.frag.addUniform(\"u_no_classifier_discard\", VariableType.Boolean, (prog) => {\r\n prog.addProgramUniform(\"u_no_classifier_discard\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.isReadPixelsInProgress ? 1 : 0);\r\n });\r\n });\r\n\r\n builder.frag.set(FragmentShaderComponent.DiscardByAlpha, discardClassifiedByAlpha);\r\n}\r\n"]}
|
|
@@ -14,142 +14,142 @@ const RenderPass_1 = require("./RenderPass");
|
|
|
14
14
|
const Vertex_1 = require("./Vertex");
|
|
15
15
|
const RenderFlags_1 = require("../RenderFlags");
|
|
16
16
|
const Common_1 = require("./Common");
|
|
17
|
-
const getSensorFloat = `
|
|
18
|
-
vec4 getSensor(int index) {
|
|
19
|
-
float x = 0.5;
|
|
20
|
-
float y = (float(index) + 0.5) / float(u_numSensors);
|
|
21
|
-
return TEXTURE(s_sensorSampler, vec2(x, y));
|
|
22
|
-
}
|
|
17
|
+
const getSensorFloat = `
|
|
18
|
+
vec4 getSensor(int index) {
|
|
19
|
+
float x = 0.5;
|
|
20
|
+
float y = (float(index) + 0.5) / float(u_numSensors);
|
|
21
|
+
return TEXTURE(s_sensorSampler, vec2(x, y));
|
|
22
|
+
}
|
|
23
23
|
`;
|
|
24
24
|
// Access a gradient texture at the specified index.
|
|
25
25
|
// A stepped gradient texture is arranged with single unique color pixels for each step. The dimension of a stepped gradient texture is stepCount.
|
|
26
26
|
// A smooth gradient texture is arranged with blended color pixels across the entire span of the texture. The dimension of a smooth gradient texture is the system's maximum texture size.
|
|
27
|
-
const getColor = `
|
|
28
|
-
vec3 getColor(float ndx) {
|
|
29
|
-
if (ndx < 0.0 || ndx > 1.0)
|
|
30
|
-
return u_marginColor;
|
|
31
|
-
|
|
32
|
-
return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;
|
|
33
|
-
}
|
|
27
|
+
const getColor = `
|
|
28
|
+
vec3 getColor(float ndx) {
|
|
29
|
+
if (ndx < 0.0 || ndx > 1.0)
|
|
30
|
+
return u_marginColor;
|
|
31
|
+
|
|
32
|
+
return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;
|
|
33
|
+
}
|
|
34
34
|
`;
|
|
35
35
|
// Access a stepped gradient texture at the specified index taking into account isolines.
|
|
36
36
|
// The texture format is exactly as described above for stepped mode. We just access the gradient differently,
|
|
37
37
|
// specifically to ensure that the texels sampled result in lines of overall singular colors - no stepping into the
|
|
38
38
|
// neighboring bands.
|
|
39
|
-
const getIsoLineColor = `
|
|
40
|
-
vec3 getIsoLineColor(float ndx, float stepCount) {
|
|
41
|
-
if (ndx < 0.01 || ndx > 0.99)
|
|
42
|
-
return u_marginColor;
|
|
43
|
-
|
|
44
|
-
ndx += 0.5 / stepCount; // center on step pixels
|
|
45
|
-
return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;
|
|
46
|
-
}
|
|
39
|
+
const getIsoLineColor = `
|
|
40
|
+
vec3 getIsoLineColor(float ndx, float stepCount) {
|
|
41
|
+
if (ndx < 0.01 || ndx > 0.99)
|
|
42
|
+
return u_marginColor;
|
|
43
|
+
|
|
44
|
+
ndx += 0.5 / stepCount; // center on step pixels
|
|
45
|
+
return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;
|
|
46
|
+
}
|
|
47
47
|
`;
|
|
48
48
|
const fwidth = `\nfloat _universal_fwidth(float coord) { return fwidth(coord); }\n`;
|
|
49
|
-
const slopeAndHillShadeShader = ` else if (kThematicDisplayMode_Slope == u_thematicDisplayMode) {
|
|
50
|
-
float d = dot(g_normal, u_thematicAxis);
|
|
51
|
-
if (d < 0.0)
|
|
52
|
-
d = -d;
|
|
53
|
-
|
|
54
|
-
// The range of d is now 0 to 1 (90 degrees to 0 degrees).
|
|
55
|
-
// However, the range from 0 to 1 is not linear. Therefore, we use acos() to find the actual angle in radians.
|
|
56
|
-
d = acos(d);
|
|
57
|
-
|
|
58
|
-
// range of d is currently 1.5708 to 0 radians.
|
|
59
|
-
if (d < u_thematicRange.x || d > u_thematicRange.y)
|
|
60
|
-
d = -1.0; // use marginColor if outside the requested range
|
|
61
|
-
else { // convert d from radians to 0 to 1 using requested range
|
|
62
|
-
d -= u_thematicRange.x;
|
|
63
|
-
d /= (u_thematicRange.y - u_thematicRange.x);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
ndx = d;
|
|
67
|
-
} else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
68
|
-
float d = dot(g_normal, u_thematicSunDirection);
|
|
69
|
-
|
|
70
|
-
ndx = max(0.0, d);
|
|
49
|
+
const slopeAndHillShadeShader = ` else if (kThematicDisplayMode_Slope == u_thematicDisplayMode) {
|
|
50
|
+
float d = dot(g_normal, u_thematicAxis);
|
|
51
|
+
if (d < 0.0)
|
|
52
|
+
d = -d;
|
|
53
|
+
|
|
54
|
+
// The range of d is now 0 to 1 (90 degrees to 0 degrees).
|
|
55
|
+
// However, the range from 0 to 1 is not linear. Therefore, we use acos() to find the actual angle in radians.
|
|
56
|
+
d = acos(d);
|
|
57
|
+
|
|
58
|
+
// range of d is currently 1.5708 to 0 radians.
|
|
59
|
+
if (d < u_thematicRange.x || d > u_thematicRange.y)
|
|
60
|
+
d = -1.0; // use marginColor if outside the requested range
|
|
61
|
+
else { // convert d from radians to 0 to 1 using requested range
|
|
62
|
+
d -= u_thematicRange.x;
|
|
63
|
+
d /= (u_thematicRange.y - u_thematicRange.x);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
ndx = d;
|
|
67
|
+
} else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
68
|
+
float d = dot(g_normal, u_thematicSunDirection);
|
|
69
|
+
|
|
70
|
+
ndx = max(0.0, d);
|
|
71
71
|
}`;
|
|
72
72
|
// Access the appropriate gradient texel for a particular index based on display mode and gradient mode.
|
|
73
|
-
const applyThematicColorPrelude = `
|
|
74
|
-
float ndx = v_thematicIndex;
|
|
75
|
-
|
|
76
|
-
if (kThematicDisplayMode_InverseDistanceWeightedSensors == u_thematicDisplayMode) {
|
|
77
|
-
float sensorSum = 0.0;
|
|
78
|
-
float contributionSum = 0.0;
|
|
79
|
-
|
|
80
|
-
vec3 sensorPos;
|
|
81
|
-
float sensorValue;
|
|
82
|
-
float sensorWeight;
|
|
83
|
-
|
|
84
|
-
ndx = -1.0; // default index = marginColor
|
|
85
|
-
|
|
86
|
-
float distanceCutoff = u_thematicSettings.y;
|
|
87
|
-
|
|
88
|
-
for (int i = 0; i < 8192; i++) { // ###TODO: set maximum number of sensors during an incremental form of shader construction
|
|
89
|
-
if (i >= u_numSensors)
|
|
90
|
-
break;
|
|
91
|
-
|
|
92
|
-
vec4 sensor = getSensor(i);
|
|
93
|
-
|
|
94
|
-
float dist = distance(v_eyeSpace, sensor.xyz);
|
|
95
|
-
|
|
96
|
-
bool skipThisSensor = (distanceCutoff > 0.0 && dist > distanceCutoff);
|
|
97
|
-
if (!skipThisSensor) {
|
|
98
|
-
float contribution = 1.0 / pow(dist, 2.0);
|
|
99
|
-
sensorSum += sensor.w * contribution;
|
|
100
|
-
contributionSum += contribution;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (contributionSum > 0.0) // avoid division by zero
|
|
105
|
-
ndx = sensorSum / contributionSum;
|
|
73
|
+
const applyThematicColorPrelude = `
|
|
74
|
+
float ndx = v_thematicIndex;
|
|
75
|
+
|
|
76
|
+
if (kThematicDisplayMode_InverseDistanceWeightedSensors == u_thematicDisplayMode) {
|
|
77
|
+
float sensorSum = 0.0;
|
|
78
|
+
float contributionSum = 0.0;
|
|
79
|
+
|
|
80
|
+
vec3 sensorPos;
|
|
81
|
+
float sensorValue;
|
|
82
|
+
float sensorWeight;
|
|
83
|
+
|
|
84
|
+
ndx = -1.0; // default index = marginColor
|
|
85
|
+
|
|
86
|
+
float distanceCutoff = u_thematicSettings.y;
|
|
87
|
+
|
|
88
|
+
for (int i = 0; i < 8192; i++) { // ###TODO: set maximum number of sensors during an incremental form of shader construction
|
|
89
|
+
if (i >= u_numSensors)
|
|
90
|
+
break;
|
|
91
|
+
|
|
92
|
+
vec4 sensor = getSensor(i);
|
|
93
|
+
|
|
94
|
+
float dist = distance(v_eyeSpace, sensor.xyz);
|
|
95
|
+
|
|
96
|
+
bool skipThisSensor = (distanceCutoff > 0.0 && dist > distanceCutoff);
|
|
97
|
+
if (!skipThisSensor) {
|
|
98
|
+
float contribution = 1.0 / pow(dist, 2.0);
|
|
99
|
+
sensorSum += sensor.w * contribution;
|
|
100
|
+
contributionSum += contribution;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (contributionSum > 0.0) // avoid division by zero
|
|
105
|
+
ndx = sensorSum / contributionSum;
|
|
106
106
|
}`;
|
|
107
|
-
const applyThematicColorPostlude = `
|
|
108
|
-
float gradientMode = u_thematicSettings.x;
|
|
109
|
-
float stepCount = u_thematicSettings.z;
|
|
110
|
-
|
|
111
|
-
vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);
|
|
112
|
-
rgba = mix(rgba, baseColor, u_thematicColorMix);
|
|
113
|
-
|
|
114
|
-
if (kThematicGradientMode_IsoLines == gradientMode) {
|
|
115
|
-
float coord = v_thematicIndex * stepCount;
|
|
116
|
-
float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);
|
|
117
|
-
rgba.a = 1.0 - min(line, 1.0);
|
|
118
|
-
if (u_discardBetweenIsolines && 0.0 == rgba.a)
|
|
119
|
-
discard;
|
|
120
|
-
} else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {
|
|
121
|
-
float coord = v_thematicIndex * stepCount;
|
|
122
|
-
float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);
|
|
123
|
-
float value = min(line, 1.0);
|
|
124
|
-
rgba.rgb *= value;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return rgba;
|
|
107
|
+
const applyThematicColorPostlude = `
|
|
108
|
+
float gradientMode = u_thematicSettings.x;
|
|
109
|
+
float stepCount = u_thematicSettings.z;
|
|
110
|
+
|
|
111
|
+
vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);
|
|
112
|
+
rgba = mix(rgba, baseColor, u_thematicColorMix);
|
|
113
|
+
|
|
114
|
+
if (kThematicGradientMode_IsoLines == gradientMode) {
|
|
115
|
+
float coord = v_thematicIndex * stepCount;
|
|
116
|
+
float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);
|
|
117
|
+
rgba.a = 1.0 - min(line, 1.0);
|
|
118
|
+
if (u_discardBetweenIsolines && 0.0 == rgba.a)
|
|
119
|
+
discard;
|
|
120
|
+
} else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {
|
|
121
|
+
float coord = v_thematicIndex * stepCount;
|
|
122
|
+
float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);
|
|
123
|
+
float value = min(line, 1.0);
|
|
124
|
+
rgba.rgb *= value;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return rgba;
|
|
128
128
|
`;
|
|
129
129
|
// fwidth does not function for point clouds, so we work around the limitation with a less-than-ideal rendering of isolines and delimiters
|
|
130
130
|
// using a tolerance not based on neighboring fragments.
|
|
131
131
|
const delimiterToleranceForPointClouds = `0.025`; // / (stepCount * 40.0)`;
|
|
132
|
-
const applyThematicColorPostludeForPointClouds = `
|
|
133
|
-
float gradientMode = u_thematicSettings.x;
|
|
134
|
-
float stepCount = u_thematicSettings.z;
|
|
135
|
-
|
|
136
|
-
vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);
|
|
137
|
-
rgba = mix(rgba, baseColor, u_thematicColorMix);
|
|
138
|
-
|
|
139
|
-
if (kThematicGradientMode_IsoLines == gradientMode) {
|
|
140
|
-
float coord = v_thematicIndex * stepCount;
|
|
141
|
-
float line = abs(fract(coord - 0.5) - 0.5);
|
|
142
|
-
if (line > ${delimiterToleranceForPointClouds})
|
|
143
|
-
discard;
|
|
144
|
-
} else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {
|
|
145
|
-
float coord = v_thematicIndex * stepCount;
|
|
146
|
-
float line = abs(fract(coord - 0.5) - 0.5);
|
|
147
|
-
float value = min(line, 1.0);
|
|
148
|
-
if (line < ${delimiterToleranceForPointClouds} && value < 1.0)
|
|
149
|
-
rgba.rgb *= 0.0;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return rgba;
|
|
132
|
+
const applyThematicColorPostludeForPointClouds = `
|
|
133
|
+
float gradientMode = u_thematicSettings.x;
|
|
134
|
+
float stepCount = u_thematicSettings.z;
|
|
135
|
+
|
|
136
|
+
vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);
|
|
137
|
+
rgba = mix(rgba, baseColor, u_thematicColorMix);
|
|
138
|
+
|
|
139
|
+
if (kThematicGradientMode_IsoLines == gradientMode) {
|
|
140
|
+
float coord = v_thematicIndex * stepCount;
|
|
141
|
+
float line = abs(fract(coord - 0.5) - 0.5);
|
|
142
|
+
if (line > ${delimiterToleranceForPointClouds})
|
|
143
|
+
discard;
|
|
144
|
+
} else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {
|
|
145
|
+
float coord = v_thematicIndex * stepCount;
|
|
146
|
+
float line = abs(fract(coord - 0.5) - 0.5);
|
|
147
|
+
float value = min(line, 1.0);
|
|
148
|
+
if (line < ${delimiterToleranceForPointClouds} && value < 1.0)
|
|
149
|
+
rgba.rgb *= 0.0;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return rgba;
|
|
153
153
|
`;
|
|
154
154
|
function _getShader(isPointCloud) {
|
|
155
155
|
return isPointCloud ?
|
|
@@ -160,29 +160,29 @@ function _getShader(isPointCloud) {
|
|
|
160
160
|
// We will project a vector onto another vector using this equation: proju = (v . u) / (v . v) * v
|
|
161
161
|
function getComputeThematicIndex(instanced, skipSlopeAndHillShade, decodeNormal) {
|
|
162
162
|
const modelPos = instanced ? "(g_instancedRtcMatrix * rawPosition)" : "rawPosition";
|
|
163
|
-
const heightMode = `
|
|
164
|
-
if (kThematicDisplayMode_Height == u_thematicDisplayMode) {
|
|
165
|
-
vec3 u = (u_modelToWorld * ${modelPos}).xyz;
|
|
166
|
-
vec3 v = u_thematicAxis;
|
|
167
|
-
vec3 proju = (dot(v, u) / dot(v, v)) * v;
|
|
168
|
-
vec3 a = v * u_thematicRange.s;
|
|
169
|
-
vec3 b = v * u_thematicRange.t;
|
|
170
|
-
vec3 c = proju;
|
|
171
|
-
v_thematicIndex = findFractionalPositionOnLine(a, b, c);
|
|
163
|
+
const heightMode = `
|
|
164
|
+
if (kThematicDisplayMode_Height == u_thematicDisplayMode) {
|
|
165
|
+
vec3 u = (u_modelToWorld * ${modelPos}).xyz;
|
|
166
|
+
vec3 v = u_thematicAxis;
|
|
167
|
+
vec3 proju = (dot(v, u) / dot(v, v)) * v;
|
|
168
|
+
vec3 a = v * u_thematicRange.s;
|
|
169
|
+
vec3 b = v * u_thematicRange.t;
|
|
170
|
+
vec3 c = proju;
|
|
171
|
+
v_thematicIndex = findFractionalPositionOnLine(a, b, c);
|
|
172
172
|
}`;
|
|
173
|
-
const hillShadeMode = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
174
|
-
v_thematicIndex = computeSurfaceNormal().z;
|
|
173
|
+
const hillShadeMode = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
174
|
+
v_thematicIndex = computeSurfaceNormal().z;
|
|
175
175
|
}`;
|
|
176
|
-
const hillShadeMode2 = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
177
|
-
v_thematicIndex = g_hillshadeIndex;
|
|
176
|
+
const hillShadeMode2 = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {
|
|
177
|
+
v_thematicIndex = g_hillshadeIndex;
|
|
178
178
|
}`;
|
|
179
179
|
return skipSlopeAndHillShade ? heightMode : heightMode + (decodeNormal ? hillShadeMode : hillShadeMode2);
|
|
180
180
|
}
|
|
181
181
|
exports.getComputeThematicIndex = getComputeThematicIndex;
|
|
182
182
|
// Determine the fractional position of c on line segment ab. Assumes the three points are aligned on the same axis.
|
|
183
|
-
const findFractionalPositionOnLine = `
|
|
184
|
-
float abDist = distance(a, b);
|
|
185
|
-
return dot(b - a, c - a) / (abDist * abDist);
|
|
183
|
+
const findFractionalPositionOnLine = `
|
|
184
|
+
float abDist = distance(a, b);
|
|
185
|
+
return dot(b - a, c - a) / (abDist * abDist);
|
|
186
186
|
`;
|
|
187
187
|
function addThematicDisplayModeConstants(builder) {
|
|
188
188
|
builder.addDefine("kThematicDisplayMode_Height", core_common_1.ThematicDisplayMode.Height.toFixed(1));
|