@itwin/core-frontend 4.1.0-dev.35 → 4.1.0-dev.40
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/CompactEdges.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 +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/CompactEdges.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 +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 +23 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibleTileFeatures.js","sourceRoot":"","sources":["../../../../src/render/webgl/VisibleTileFeatures.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"VisibleTileFeatures.js","sourceRoot":"","sources":["../../../../src/render/webgl/VisibleTileFeatures.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 { Id64 } from \"@itwin/core-bentley\";\nimport { BatchType, PackedFeature } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { QueryTileFeaturesOptions, VisibleFeature } from \"../VisibleFeature\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { Target } from \"./Target\";\n\n/** Iterates over features visible in tiles selected for display by a Target by inspecting its RenderCommands.\n * @internal\n */\nexport class VisibleTileFeatures implements Iterable<VisibleFeature> {\n public readonly includeNonLocatable: boolean;\n public readonly renderCommands: RenderCommands;\n public readonly target: Target;\n public readonly iModel: IModelConnection;\n\n public constructor(commands: RenderCommands, options: QueryTileFeaturesOptions, target: Target, iModel: IModelConnection) {\n this.includeNonLocatable = true === options.includeNonLocatable;\n this.renderCommands = commands;\n this.target = target;\n this.iModel = iModel;\n\n target.compositor.preDraw();\n }\n\n public [Symbol.iterator](): Iterator<VisibleFeature> {\n return iterator(this);\n }\n}\n\nconst clippedPasses: RenderPass[] = [\n RenderPass.BackgroundMap,\n RenderPass.OpaqueLayers,\n RenderPass.OpaqueLinear,\n RenderPass.OpaquePlanar,\n RenderPass.OpaqueGeneral,\n RenderPass.TranslucentLayers,\n RenderPass.Translucent,\n RenderPass.OverlayLayers,\n];\n\nfunction isFeatureVisible(feature: PackedFeature, target: Target, includeNonLocatable: boolean) {\n const ovrs = target.currentFeatureSymbologyOverrides;\n if (!ovrs)\n return true;\n\n const app = target.currentBranch.getFeatureAppearance(\n ovrs,\n feature.elementId.lower, feature.elementId.upper,\n feature.subCategoryId.lower, feature.subCategoryId.upper,\n feature.geometryClass,\n feature.modelId.lower, feature.modelId.upper,\n BatchType.Primary, feature.animationNodeId);\n\n return undefined !== app && (includeNonLocatable || !app.nonLocatable);\n}\n\nfunction* commandIterator(features: VisibleTileFeatures, pass: RenderPass) {\n const commands = features.renderCommands.getCommands(pass);\n const executor = new ShaderProgramExecutor(features.target, pass);\n try {\n for (const command of commands) {\n if (command.opcode !== \"drawPrimitive\")\n command.execute(executor);\n\n if (command.opcode !== \"pushBatch\")\n continue;\n\n const ovrs = command.batch.getOverrides(features.target);\n if (ovrs.allHidden)\n continue;\n\n const scratchFeature = PackedFeature.createWithIndex();\n const table = command.batch.featureTable;\n for (const feature of table.iterable(scratchFeature)) {\n if (!ovrs.anyOverridden || isFeatureVisible(feature, features.target, features.includeNonLocatable)) {\n yield {\n elementId: Id64.fromUint32PairObject(feature.elementId),\n subCategoryId: Id64.fromUint32PairObject(feature.subCategoryId),\n geometryClass: feature.geometryClass,\n modelId: Id64.fromUint32PairObject(feature.modelId),\n iModel: command.batch.batchIModel ?? features.iModel,\n };\n }\n }\n }\n } finally {\n executor.dispose();\n }\n}\n\nfunction* iterator(features: VisibleTileFeatures) {\n try {\n features.target.pushViewClip();\n for (const pass of clippedPasses)\n yield* commandIterator(features, pass);\n } finally {\n features.target.popViewClip();\n }\n}\n"]}
|
|
@@ -16,172 +16,172 @@ import { addViewport } from "./Viewport";
|
|
|
16
16
|
import { createViewportQuadBuilder } from "./ViewportQuad";
|
|
17
17
|
// 'PB' indicates a shader variation when only the pickbuffer is available
|
|
18
18
|
// 'DB' indicates a shader variation when the real floating point depth buffer is available.
|
|
19
|
-
const computeAmbientOcclusionPrefixPB = `
|
|
20
|
-
vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);
|
|
21
|
-
vec2 depthAndOrder = readDepthAndOrder(tc);
|
|
22
|
-
float db = depthAndOrder.y;
|
|
19
|
+
const computeAmbientOcclusionPrefixPB = `
|
|
20
|
+
vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);
|
|
21
|
+
vec2 depthAndOrder = readDepthAndOrder(tc);
|
|
22
|
+
float db = depthAndOrder.y;
|
|
23
23
|
`;
|
|
24
|
-
const computeAmbientOcclusionPrefixDB = `
|
|
25
|
-
vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);
|
|
26
|
-
vec2 depthAndOrder = readDepthAndOrder(tc);
|
|
27
|
-
float db = readDepth(tc);
|
|
24
|
+
const computeAmbientOcclusionPrefixDB = `
|
|
25
|
+
vec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);
|
|
26
|
+
vec2 depthAndOrder = readDepthAndOrder(tc);
|
|
27
|
+
float db = readDepth(tc);
|
|
28
28
|
`;
|
|
29
29
|
// This outputs 1 for unlit surfaces, and for polylines and point strings.
|
|
30
30
|
// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.
|
|
31
31
|
// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.
|
|
32
|
-
const computeAmbientOcclusion = `
|
|
33
|
-
depthAndOrder.y = unfinalizeLinearDepth(db);
|
|
34
|
-
float order = depthAndOrder.x;
|
|
35
|
-
if (order >= kRenderOrder_PlanarBit)
|
|
36
|
-
order = order - kRenderOrder_PlanarBit;
|
|
37
|
-
|
|
38
|
-
if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)
|
|
39
|
-
return vec4(1.0);
|
|
40
|
-
|
|
41
|
-
// NB: linearDepth: 1 == near, 0 == far
|
|
42
|
-
|
|
43
|
-
float linearDepth = depthAndOrder.y;
|
|
44
|
-
float nonLinearDepth = computeNonLinearDepth(db);
|
|
45
|
-
if (nonLinearDepth > u_maxDistance)
|
|
46
|
-
return vec4(1.0);
|
|
47
|
-
|
|
48
|
-
vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;
|
|
49
|
-
|
|
50
|
-
vec2 pixelSize = 1.0 / u_viewport;
|
|
51
|
-
vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);
|
|
52
|
-
|
|
53
|
-
vec2 sampleDirection = vec2(1.0, 0.0);
|
|
54
|
-
float gapAngle = 90.0 * 0.017453292519943295; // radians per degree
|
|
55
|
-
|
|
56
|
-
// Grab some random noise
|
|
57
|
-
// Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.
|
|
58
|
-
// Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.
|
|
59
|
-
vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;
|
|
60
|
-
|
|
61
|
-
float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.
|
|
62
|
-
float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.
|
|
63
|
-
float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.
|
|
64
|
-
float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.
|
|
65
|
-
|
|
66
|
-
float tOcclusion = 0.0;
|
|
67
|
-
|
|
68
|
-
// loop for each direction
|
|
69
|
-
for (int i = 0; i < 4; i++) {
|
|
70
|
-
float newGapAngle = gapAngle * (float(i) + noiseVec.x);
|
|
71
|
-
float cosVal = cos(newGapAngle);
|
|
72
|
-
float sinVal = sin(newGapAngle);
|
|
73
|
-
|
|
74
|
-
// rotate sampling direction
|
|
75
|
-
vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);
|
|
76
|
-
float curOcclusion = 0.0;
|
|
77
|
-
float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?
|
|
78
|
-
|
|
79
|
-
// loop for each step
|
|
80
|
-
for (int j = 0; j < 6; j++) {
|
|
81
|
-
vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);
|
|
82
|
-
vec2 newCoords = directionWithStep + tc;
|
|
83
|
-
|
|
84
|
-
// do not repeat around the depth texture
|
|
85
|
-
if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
db = readDepth(newCoords);
|
|
90
|
-
float curLinearDepth = unfinalizeLinearDepth(db);
|
|
91
|
-
float curNonLinearDepth = computeNonLinearDepth(db);
|
|
92
|
-
vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;
|
|
93
|
-
vec3 diffVec = curViewPos.xyz - viewPos.xyz;
|
|
94
|
-
float zLength = abs(curLinearDepth - linearDepth);
|
|
95
|
-
|
|
96
|
-
float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);
|
|
97
|
-
float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);
|
|
98
|
-
|
|
99
|
-
if (dotVal < bias) {
|
|
100
|
-
dotVal = 0.0;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
curOcclusion = max(curOcclusion, dotVal * weight);
|
|
104
|
-
curStepSize += texelStepSize;
|
|
105
|
-
}
|
|
106
|
-
tOcclusion += curOcclusion;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;
|
|
110
|
-
tOcclusion *= distanceFadeFactor;
|
|
111
|
-
|
|
112
|
-
tOcclusion /= 4.0;
|
|
113
|
-
tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);
|
|
114
|
-
tOcclusion = pow(tOcclusion, intensity);
|
|
115
|
-
|
|
116
|
-
return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);
|
|
32
|
+
const computeAmbientOcclusion = `
|
|
33
|
+
depthAndOrder.y = unfinalizeLinearDepth(db);
|
|
34
|
+
float order = depthAndOrder.x;
|
|
35
|
+
if (order >= kRenderOrder_PlanarBit)
|
|
36
|
+
order = order - kRenderOrder_PlanarBit;
|
|
37
|
+
|
|
38
|
+
if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)
|
|
39
|
+
return vec4(1.0);
|
|
40
|
+
|
|
41
|
+
// NB: linearDepth: 1 == near, 0 == far
|
|
42
|
+
|
|
43
|
+
float linearDepth = depthAndOrder.y;
|
|
44
|
+
float nonLinearDepth = computeNonLinearDepth(db);
|
|
45
|
+
if (nonLinearDepth > u_maxDistance)
|
|
46
|
+
return vec4(1.0);
|
|
47
|
+
|
|
48
|
+
vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;
|
|
49
|
+
|
|
50
|
+
vec2 pixelSize = 1.0 / u_viewport;
|
|
51
|
+
vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);
|
|
52
|
+
|
|
53
|
+
vec2 sampleDirection = vec2(1.0, 0.0);
|
|
54
|
+
float gapAngle = 90.0 * 0.017453292519943295; // radians per degree
|
|
55
|
+
|
|
56
|
+
// Grab some random noise
|
|
57
|
+
// Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.
|
|
58
|
+
// Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.
|
|
59
|
+
vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;
|
|
60
|
+
|
|
61
|
+
float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.
|
|
62
|
+
float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.
|
|
63
|
+
float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.
|
|
64
|
+
float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.
|
|
65
|
+
|
|
66
|
+
float tOcclusion = 0.0;
|
|
67
|
+
|
|
68
|
+
// loop for each direction
|
|
69
|
+
for (int i = 0; i < 4; i++) {
|
|
70
|
+
float newGapAngle = gapAngle * (float(i) + noiseVec.x);
|
|
71
|
+
float cosVal = cos(newGapAngle);
|
|
72
|
+
float sinVal = sin(newGapAngle);
|
|
73
|
+
|
|
74
|
+
// rotate sampling direction
|
|
75
|
+
vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);
|
|
76
|
+
float curOcclusion = 0.0;
|
|
77
|
+
float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?
|
|
78
|
+
|
|
79
|
+
// loop for each step
|
|
80
|
+
for (int j = 0; j < 6; j++) {
|
|
81
|
+
vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);
|
|
82
|
+
vec2 newCoords = directionWithStep + tc;
|
|
83
|
+
|
|
84
|
+
// do not repeat around the depth texture
|
|
85
|
+
if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
db = readDepth(newCoords);
|
|
90
|
+
float curLinearDepth = unfinalizeLinearDepth(db);
|
|
91
|
+
float curNonLinearDepth = computeNonLinearDepth(db);
|
|
92
|
+
vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;
|
|
93
|
+
vec3 diffVec = curViewPos.xyz - viewPos.xyz;
|
|
94
|
+
float zLength = abs(curLinearDepth - linearDepth);
|
|
95
|
+
|
|
96
|
+
float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);
|
|
97
|
+
float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);
|
|
98
|
+
|
|
99
|
+
if (dotVal < bias) {
|
|
100
|
+
dotVal = 0.0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
curOcclusion = max(curOcclusion, dotVal * weight);
|
|
104
|
+
curStepSize += texelStepSize;
|
|
105
|
+
}
|
|
106
|
+
tOcclusion += curOcclusion;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;
|
|
110
|
+
tOcclusion *= distanceFadeFactor;
|
|
111
|
+
|
|
112
|
+
tOcclusion /= 4.0;
|
|
113
|
+
tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);
|
|
114
|
+
tOcclusion = pow(tOcclusion, intensity);
|
|
115
|
+
|
|
116
|
+
return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);
|
|
117
117
|
`;
|
|
118
|
-
const computePositionFromDepth = `
|
|
119
|
-
vec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {
|
|
120
|
-
if (kFrustumType_Perspective == u_frustum.z) {
|
|
121
|
-
vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));
|
|
122
|
-
vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);
|
|
123
|
-
posEC = posEC / posEC.w;
|
|
124
|
-
return posEC;
|
|
125
|
-
} else {
|
|
126
|
-
float top = u_frustumPlanes.x;
|
|
127
|
-
float bottom = u_frustumPlanes.y;
|
|
128
|
-
float left = u_frustumPlanes.z;
|
|
129
|
-
float right = u_frustumPlanes.w;
|
|
130
|
-
return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
118
|
+
const computePositionFromDepth = `
|
|
119
|
+
vec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {
|
|
120
|
+
if (kFrustumType_Perspective == u_frustum.z) {
|
|
121
|
+
vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));
|
|
122
|
+
vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);
|
|
123
|
+
posEC = posEC / posEC.w;
|
|
124
|
+
return posEC;
|
|
125
|
+
} else {
|
|
126
|
+
float top = u_frustumPlanes.x;
|
|
127
|
+
float bottom = u_frustumPlanes.y;
|
|
128
|
+
float left = u_frustumPlanes.z;
|
|
129
|
+
float right = u_frustumPlanes.w;
|
|
130
|
+
return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
133
|
`;
|
|
134
|
-
const computeNormalFromDepth = `
|
|
135
|
-
vec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {
|
|
136
|
-
float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));
|
|
137
|
-
float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));
|
|
138
|
-
float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));
|
|
139
|
-
float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));
|
|
140
|
-
|
|
141
|
-
vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;
|
|
142
|
-
vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;
|
|
143
|
-
vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;
|
|
144
|
-
vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;
|
|
145
|
-
|
|
146
|
-
vec3 up = viewPos.xyz - viewPosUp.xyz;
|
|
147
|
-
vec3 down = viewPosDown.xyz - viewPos.xyz;
|
|
148
|
-
vec3 left = viewPos.xyz - viewPosLeft.xyz;
|
|
149
|
-
vec3 right = viewPosRight.xyz - viewPos.xyz;
|
|
150
|
-
|
|
151
|
-
vec3 dx = length(left) < length(right) ? left : right;
|
|
152
|
-
vec3 dy = length(up) < length(down) ? up : down;
|
|
153
|
-
|
|
154
|
-
return normalize(cross(dy, dx));
|
|
155
|
-
}
|
|
134
|
+
const computeNormalFromDepth = `
|
|
135
|
+
vec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {
|
|
136
|
+
float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));
|
|
137
|
+
float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));
|
|
138
|
+
float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));
|
|
139
|
+
float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));
|
|
140
|
+
|
|
141
|
+
vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;
|
|
142
|
+
vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;
|
|
143
|
+
vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;
|
|
144
|
+
vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;
|
|
145
|
+
|
|
146
|
+
vec3 up = viewPos.xyz - viewPosUp.xyz;
|
|
147
|
+
vec3 down = viewPosDown.xyz - viewPos.xyz;
|
|
148
|
+
vec3 left = viewPos.xyz - viewPosLeft.xyz;
|
|
149
|
+
vec3 right = viewPosRight.xyz - viewPos.xyz;
|
|
150
|
+
|
|
151
|
+
vec3 dx = length(left) < length(right) ? left : right;
|
|
152
|
+
vec3 dy = length(up) < length(down) ? up : down;
|
|
153
|
+
|
|
154
|
+
return normalize(cross(dy, dx));
|
|
155
|
+
}
|
|
156
156
|
`;
|
|
157
|
-
const computeNonLinearDepthPB = `
|
|
158
|
-
float computeNonLinearDepth(float linearDepth) {
|
|
159
|
-
return mix(u_frustum.y, u_frustum.x, linearDepth);
|
|
160
|
-
}
|
|
157
|
+
const computeNonLinearDepthPB = `
|
|
158
|
+
float computeNonLinearDepth(float linearDepth) {
|
|
159
|
+
return mix(u_frustum.y, u_frustum.x, linearDepth);
|
|
160
|
+
}
|
|
161
161
|
`;
|
|
162
|
-
const computeNonLinearDepthDB = `
|
|
163
|
-
float computeNonLinearDepth(float depth) {
|
|
164
|
-
return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;
|
|
165
|
-
}
|
|
162
|
+
const computeNonLinearDepthDB = `
|
|
163
|
+
float computeNonLinearDepth(float depth) {
|
|
164
|
+
return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;
|
|
165
|
+
}
|
|
166
166
|
`;
|
|
167
|
-
const readDepthPB = `
|
|
168
|
-
float readDepth(vec2 tc) {
|
|
169
|
-
return readDepthAndOrder(tc).y;
|
|
170
|
-
}
|
|
167
|
+
const readDepthPB = `
|
|
168
|
+
float readDepth(vec2 tc) {
|
|
169
|
+
return readDepthAndOrder(tc).y;
|
|
170
|
+
}
|
|
171
171
|
`;
|
|
172
|
-
const readDepthDB = `
|
|
173
|
-
float readDepth(vec2 tc) {
|
|
174
|
-
return TEXTURE(u_depthBuffer, tc).r;
|
|
175
|
-
}
|
|
172
|
+
const readDepthDB = `
|
|
173
|
+
float readDepth(vec2 tc) {
|
|
174
|
+
return TEXTURE(u_depthBuffer, tc).r;
|
|
175
|
+
}
|
|
176
176
|
`;
|
|
177
|
-
const unfinalizeLinearDepthDB = `
|
|
178
|
-
float unfinalizeLinearDepth(float depth) {
|
|
179
|
-
float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;
|
|
180
|
-
float near = u_frustum.x, far = u_frustum.y;
|
|
181
|
-
float depthRange = far - near;
|
|
182
|
-
float linearDepth = (eyeZ - near) / depthRange;
|
|
183
|
-
return 1.0 - linearDepth;
|
|
184
|
-
}
|
|
177
|
+
const unfinalizeLinearDepthDB = `
|
|
178
|
+
float unfinalizeLinearDepth(float depth) {
|
|
179
|
+
float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;
|
|
180
|
+
float near = u_frustum.x, far = u_frustum.y;
|
|
181
|
+
float depthRange = far - near;
|
|
182
|
+
float linearDepth = (eyeZ - near) / depthRange;
|
|
183
|
+
return 1.0 - linearDepth;
|
|
184
|
+
}
|
|
185
185
|
`;
|
|
186
186
|
function _shouldUseDB() {
|
|
187
187
|
return System.instance.supportsLogZBuffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.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\n// portions adapted from Cesium.js Copyright 2011 - 2017 Cesium Contributors\r\n\r\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addFrustum } from \"./Common\";\r\nimport { decodeDepthRgb } from \"./Decode\";\r\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { addViewport } from \"./Viewport\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// 'PB' indicates a shader variation when only the pickbuffer is available\r\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\r\n\r\nconst computeAmbientOcclusionPrefixPB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = depthAndOrder.y;\r\n`;\r\n\r\nconst computeAmbientOcclusionPrefixDB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = readDepth(tc);\r\n`;\r\n\r\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\r\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\r\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\r\nconst computeAmbientOcclusion = `\r\n depthAndOrder.y = unfinalizeLinearDepth(db);\r\n float order = depthAndOrder.x;\r\n if (order >= kRenderOrder_PlanarBit)\r\n order = order - kRenderOrder_PlanarBit;\r\n\r\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\r\n return vec4(1.0);\r\n\r\n // NB: linearDepth: 1 == near, 0 == far\r\n\r\n float linearDepth = depthAndOrder.y;\r\n float nonLinearDepth = computeNonLinearDepth(db);\r\n if (nonLinearDepth > u_maxDistance)\r\n return vec4(1.0);\r\n\r\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\r\n\r\n vec2 pixelSize = 1.0 / u_viewport;\r\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\r\n\r\n vec2 sampleDirection = vec2(1.0, 0.0);\r\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\r\n\r\n // Grab some random noise\r\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\r\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\r\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\r\n\r\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\r\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\r\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\r\n float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.\r\n\r\n float tOcclusion = 0.0;\r\n\r\n // loop for each direction\r\n for (int i = 0; i < 4; i++) {\r\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\r\n float cosVal = cos(newGapAngle);\r\n float sinVal = sin(newGapAngle);\r\n\r\n // rotate sampling direction\r\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\r\n float curOcclusion = 0.0;\r\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\r\n\r\n // loop for each step\r\n for (int j = 0; j < 6; j++) {\r\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\r\n vec2 newCoords = directionWithStep + tc;\r\n\r\n // do not repeat around the depth texture\r\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\r\n break;\r\n }\r\n\r\n db = readDepth(newCoords);\r\n float curLinearDepth = unfinalizeLinearDepth(db);\r\n float curNonLinearDepth = computeNonLinearDepth(db);\r\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\r\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\r\n float zLength = abs(curLinearDepth - linearDepth);\r\n\r\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\r\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\r\n\r\n if (dotVal < bias) {\r\n dotVal = 0.0;\r\n }\r\n\r\n curOcclusion = max(curOcclusion, dotVal * weight);\r\n curStepSize += texelStepSize;\r\n }\r\n tOcclusion += curOcclusion;\r\n }\r\n\r\n float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;\r\n tOcclusion *= distanceFadeFactor;\r\n\r\n tOcclusion /= 4.0;\r\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\r\n tOcclusion = pow(tOcclusion, intensity);\r\n\r\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\r\n`;\r\n\r\nconst computePositionFromDepth = `\r\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\r\n if (kFrustumType_Perspective == u_frustum.z) {\r\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\r\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\r\n posEC = posEC / posEC.w;\r\n return posEC;\r\n } else {\r\n float top = u_frustumPlanes.x;\r\n float bottom = u_frustumPlanes.y;\r\n float left = u_frustumPlanes.z;\r\n float right = u_frustumPlanes.w;\r\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\r\n }\r\n}\r\n`;\r\n\r\nconst computeNormalFromDepth = `\r\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\r\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\r\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\r\n\r\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\r\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\r\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\r\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\r\n\r\n vec3 up = viewPos.xyz - viewPosUp.xyz;\r\n vec3 down = viewPosDown.xyz - viewPos.xyz;\r\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\r\n vec3 right = viewPosRight.xyz - viewPos.xyz;\r\n\r\n vec3 dx = length(left) < length(right) ? left : right;\r\n vec3 dy = length(up) < length(down) ? up : down;\r\n\r\n return normalize(cross(dy, dx));\r\n}\r\n`;\r\n\r\nconst computeNonLinearDepthPB = `\r\nfloat computeNonLinearDepth(float linearDepth) {\r\n return mix(u_frustum.y, u_frustum.x, linearDepth);\r\n}\r\n`;\r\nconst computeNonLinearDepthDB = `\r\nfloat computeNonLinearDepth(float depth) {\r\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n}\r\n`;\r\n\r\nconst readDepthPB = `\r\nfloat readDepth(vec2 tc) {\r\n return readDepthAndOrder(tc).y;\r\n}\r\n`;\r\nconst readDepthDB = `\r\nfloat readDepth(vec2 tc) {\r\n return TEXTURE(u_depthBuffer, tc).r;\r\n}\r\n`;\r\nconst unfinalizeLinearDepthDB = `\r\n float unfinalizeLinearDepth(float depth) {\r\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n }\r\n`;\r\n\r\nfunction _shouldUseDB() {\r\n return System.instance.supportsLogZBuffer;\r\n}\r\n\r\n/** @internal */\r\nexport function createAmbientOcclusionProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n const shouldUseDB = _shouldUseDB();\r\n\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n if (shouldUseDB) {\r\n frag.addFunction(unfinalizeLinearDepthDB);\r\n frag.addFunction(computeNonLinearDepthDB);\r\n frag.addFunction(readDepthDB);\r\n } else {\r\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\r\n frag.addFunction(computeNonLinearDepthPB);\r\n frag.addFunction(readDepthPB);\r\n }\r\n\r\n frag.addFunction(computePositionFromDepth);\r\n frag.addFunction(computeNormalFromDepth);\r\n addRenderOrderConstants(frag);\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\r\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\r\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\r\n });\r\n });\r\n\r\n addFrustum(builder);\r\n addViewport(frag);\r\n\r\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\r\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\r\n const invProj = params.projectionMatrix.clone();\r\n invProj.invert();\r\n uniform.setMatrix4(invProj);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\r\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\r\n const hbaoSettings = new Float32Array([\r\n params.target.ambientOcclusionSettings.bias,\r\n params.target.ambientOcclusionSettings.zLengthCap,\r\n params.target.ambientOcclusionSettings.intensity,\r\n params.target.ambientOcclusionSettings.texelStepSize]);\r\n uniform.setUniform4fv(hbaoSettings);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\r\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,0EAA0E;AAC1E,4FAA4F;AAE5F,MAAM,+BAA+B,GAAG;;;;CAIvC,CAAC;AAEF,MAAM,+BAA+B,GAAG;;;;CAIvC,CAAC;AAEF,0EAA0E;AAC1E,yFAAyF;AACzF,wGAAwG;AACxG,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF/B,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;CAehC,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB9B,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;CAI/B,CAAC;AACF,MAAM,uBAAuB,GAAG;;;;CAI/B,CAAC;AAEF,MAAM,WAAW,GAAG;;;;CAInB,CAAC;AACF,MAAM,WAAW,GAAG;;;;CAInB,CAAC;AACF,MAAM,uBAAuB,GAAG;;;;;;;;CAQ/B,CAAC;AAEF,SAAS,YAAY;IACnB,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAC5C,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;IAEnC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAEpC,IAAI,WAAW,EAAE;QACf,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KAC/B;SAAM;QACL,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KAC/B;IAED,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACzC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE9B,IAAI,WAAW;QACb,IAAI,CAAC,UAAU,CAAC,QAAQ,6BAAqB,CAAC,IAAI,EAAE,EAAE;YACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,GAAG,mDAA2C,WAAW,CAAC,CAAC;QAC9D,+BAA+B,GAAG,uBAAuB,CAAC,CAAC;QAC3D,+BAA+B,GAAG,uBAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,kDAAyC,eAAe,CAAC,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,qBAAqB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;YACzD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW;QACb,IAAI,CAAC,UAAU,CAAC,eAAe,kCAA0B,CAAC,IAAI,EAAE,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;gBACzD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,UAAU,CAAC,SAAS,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;YACzD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,WAAW,CAAC,IAAI,CAAC,CAAC;IAElB,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,iBAAiB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,gBAAgB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI;gBAC3C,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,UAAU;gBACjD,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS;gBAChD,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;aAAC,CAAC,CAAC;YACzD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,eAAe,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IAEtD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\n// portions adapted from Cesium.js Copyright 2011 - 2017 Cesium Contributors\n\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { System } from \"../System\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { addFrustum } from \"./Common\";\nimport { decodeDepthRgb } from \"./Decode\";\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\nimport { addViewport } from \"./Viewport\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\n// 'PB' indicates a shader variation when only the pickbuffer is available\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\n\nconst computeAmbientOcclusionPrefixPB = `\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\nvec2 depthAndOrder = readDepthAndOrder(tc);\nfloat db = depthAndOrder.y;\n`;\n\nconst computeAmbientOcclusionPrefixDB = `\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\nvec2 depthAndOrder = readDepthAndOrder(tc);\nfloat db = readDepth(tc);\n`;\n\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\nconst computeAmbientOcclusion = `\n depthAndOrder.y = unfinalizeLinearDepth(db);\n float order = depthAndOrder.x;\n if (order >= kRenderOrder_PlanarBit)\n order = order - kRenderOrder_PlanarBit;\n\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\n return vec4(1.0);\n\n // NB: linearDepth: 1 == near, 0 == far\n\n float linearDepth = depthAndOrder.y;\n float nonLinearDepth = computeNonLinearDepth(db);\n if (nonLinearDepth > u_maxDistance)\n return vec4(1.0);\n\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\n\n vec2 pixelSize = 1.0 / u_viewport;\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\n\n vec2 sampleDirection = vec2(1.0, 0.0);\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\n\n // Grab some random noise\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\n\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\n float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.\n\n float tOcclusion = 0.0;\n\n // loop for each direction\n for (int i = 0; i < 4; i++) {\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\n float cosVal = cos(newGapAngle);\n float sinVal = sin(newGapAngle);\n\n // rotate sampling direction\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\n float curOcclusion = 0.0;\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\n\n // loop for each step\n for (int j = 0; j < 6; j++) {\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\n vec2 newCoords = directionWithStep + tc;\n\n // do not repeat around the depth texture\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\n break;\n }\n\n db = readDepth(newCoords);\n float curLinearDepth = unfinalizeLinearDepth(db);\n float curNonLinearDepth = computeNonLinearDepth(db);\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\n float zLength = abs(curLinearDepth - linearDepth);\n\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\n\n if (dotVal < bias) {\n dotVal = 0.0;\n }\n\n curOcclusion = max(curOcclusion, dotVal * weight);\n curStepSize += texelStepSize;\n }\n tOcclusion += curOcclusion;\n }\n\n float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;\n tOcclusion *= distanceFadeFactor;\n\n tOcclusion /= 4.0;\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\n tOcclusion = pow(tOcclusion, intensity);\n\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\n`;\n\nconst computePositionFromDepth = `\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\n if (kFrustumType_Perspective == u_frustum.z) {\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\n posEC = posEC / posEC.w;\n return posEC;\n } else {\n float top = u_frustumPlanes.x;\n float bottom = u_frustumPlanes.y;\n float left = u_frustumPlanes.z;\n float right = u_frustumPlanes.w;\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\n }\n}\n`;\n\nconst computeNormalFromDepth = `\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\n\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\n\n vec3 up = viewPos.xyz - viewPosUp.xyz;\n vec3 down = viewPosDown.xyz - viewPos.xyz;\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\n vec3 right = viewPosRight.xyz - viewPos.xyz;\n\n vec3 dx = length(left) < length(right) ? left : right;\n vec3 dy = length(up) < length(down) ? up : down;\n\n return normalize(cross(dy, dx));\n}\n`;\n\nconst computeNonLinearDepthPB = `\nfloat computeNonLinearDepth(float linearDepth) {\n return mix(u_frustum.y, u_frustum.x, linearDepth);\n}\n`;\nconst computeNonLinearDepthDB = `\nfloat computeNonLinearDepth(float depth) {\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\n}\n`;\n\nconst readDepthPB = `\nfloat readDepth(vec2 tc) {\n return readDepthAndOrder(tc).y;\n}\n`;\nconst readDepthDB = `\nfloat readDepth(vec2 tc) {\n return TEXTURE(u_depthBuffer, tc).r;\n}\n`;\nconst unfinalizeLinearDepthDB = `\n float unfinalizeLinearDepth(float depth) {\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\n float near = u_frustum.x, far = u_frustum.y;\n float depthRange = far - near;\n float linearDepth = (eyeZ - near) / depthRange;\n return 1.0 - linearDepth;\n }\n`;\n\nfunction _shouldUseDB() {\n return System.instance.supportsLogZBuffer;\n}\n\n/** @internal */\nexport function createAmbientOcclusionProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n const shouldUseDB = _shouldUseDB();\n\n addWindowToTexCoords(frag);\n frag.addFunction(decodeDepthRgb);\n frag.addFunction(readDepthAndOrder);\n\n if (shouldUseDB) {\n frag.addFunction(unfinalizeLinearDepthDB);\n frag.addFunction(computeNonLinearDepthDB);\n frag.addFunction(readDepthDB);\n } else {\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\n frag.addFunction(computeNonLinearDepthPB);\n frag.addFunction(readDepthPB);\n }\n\n frag.addFunction(computePositionFromDepth);\n frag.addFunction(computeNormalFromDepth);\n addRenderOrderConstants(frag);\n\n if (shouldUseDB)\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\n });\n });\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\n const geom = params.geometry as AmbientOcclusionGeometry;\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\n });\n });\n\n if (shouldUseDB)\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\n const geom = params.geometry as AmbientOcclusionGeometry;\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\n });\n });\n\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\n const geom = params.geometry as AmbientOcclusionGeometry;\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\n });\n });\n\n addFrustum(builder);\n addViewport(frag);\n\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\n const invProj = params.projectionMatrix.clone();\n invProj.invert();\n uniform.setMatrix4(invProj);\n });\n });\n\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\n });\n });\n\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\n const hbaoSettings = new Float32Array([\n params.target.ambientOcclusionSettings.bias,\n params.target.ambientOcclusionSettings.zLengthCap,\n params.target.ambientOcclusionSettings.intensity,\n params.target.ambientOcclusionSettings.texelStepSize]);\n uniform.setUniform4fv(hbaoSettings);\n });\n }, VariablePrecision.High);\n\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\n });\n }, VariablePrecision.High);\n\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\n\n return builder.buildProgram(context);\n}\n"]}
|
|
@@ -10,104 +10,104 @@ import { ThematicGradientSettings } from "@itwin/core-common";
|
|
|
10
10
|
import { TextureUnit } from "../RenderFlags";
|
|
11
11
|
import { octDecodeNormal } from "./Surface";
|
|
12
12
|
import { unquantizePosition } from "./Vertex";
|
|
13
|
-
const initialize = `
|
|
14
|
-
g_anim_step = vec2(1.0) / u_animLUTParams.xy;
|
|
15
|
-
g_anim_center = g_anim_step * 0.5;
|
|
13
|
+
const initialize = `
|
|
14
|
+
g_anim_step = vec2(1.0) / u_animLUTParams.xy;
|
|
15
|
+
g_anim_center = g_anim_step * 0.5;
|
|
16
16
|
`;
|
|
17
17
|
// The vertex index is an integer in [0..numVertices].
|
|
18
18
|
// The frame index is an integer in [0..numBytesPerVertex/2].
|
|
19
19
|
// Therefore each frame index points at 2 bytes within the texture.
|
|
20
20
|
// The third component of the return value is 0.0 if the input index points to the first 2 bytes of the texel, or 1.0 if pointing to the second 2 bytes
|
|
21
|
-
const computeAnimLUTCoords = `
|
|
22
|
-
vec3 computeAnimLUTCoords(float vertIndex, float frameIndex) {
|
|
23
|
-
// float baseIndex = (vertIndex * 2.0) + frameIndex;
|
|
24
|
-
float baseIndex = (vertIndex * u_animLUTParams.z) + frameIndex;
|
|
25
|
-
float halfIndex = baseIndex * 0.5;
|
|
26
|
-
float index = floor(halfIndex);
|
|
27
|
-
|
|
28
|
-
float epsilon = 0.5 / u_animLUTParams.x;
|
|
29
|
-
float yId = floor(index / u_animLUTParams.x + epsilon);
|
|
30
|
-
float xId = index - u_animLUTParams.x * yId;
|
|
31
|
-
|
|
32
|
-
vec2 texCoord = g_anim_center + vec2(xId / u_animLUTParams.x, yId / u_animLUTParams.y);
|
|
33
|
-
return vec3(texCoord, 2.0 * (halfIndex - index));
|
|
34
|
-
}
|
|
21
|
+
const computeAnimLUTCoords = `
|
|
22
|
+
vec3 computeAnimLUTCoords(float vertIndex, float frameIndex) {
|
|
23
|
+
// float baseIndex = (vertIndex * 2.0) + frameIndex;
|
|
24
|
+
float baseIndex = (vertIndex * u_animLUTParams.z) + frameIndex;
|
|
25
|
+
float halfIndex = baseIndex * 0.5;
|
|
26
|
+
float index = floor(halfIndex);
|
|
27
|
+
|
|
28
|
+
float epsilon = 0.5 / u_animLUTParams.x;
|
|
29
|
+
float yId = floor(index / u_animLUTParams.x + epsilon);
|
|
30
|
+
float xId = index - u_animLUTParams.x * yId;
|
|
31
|
+
|
|
32
|
+
vec2 texCoord = g_anim_center + vec2(xId / u_animLUTParams.x, yId / u_animLUTParams.y);
|
|
33
|
+
return vec3(texCoord, 2.0 * (halfIndex - index));
|
|
34
|
+
}
|
|
35
35
|
`;
|
|
36
36
|
// Sample 2 bytes at the specified index.
|
|
37
|
-
const sampleAnimVec2 = `
|
|
38
|
-
vec2 sampleAnimVec2(float vertIndex, float frameIndex) {
|
|
39
|
-
vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);
|
|
40
|
-
vec4 texel = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
41
|
-
return texel.xy * (1.0 - tc.z) + texel.zw * tc.z;
|
|
42
|
-
}
|
|
37
|
+
const sampleAnimVec2 = `
|
|
38
|
+
vec2 sampleAnimVec2(float vertIndex, float frameIndex) {
|
|
39
|
+
vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);
|
|
40
|
+
vec4 texel = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
41
|
+
return texel.xy * (1.0 - tc.z) + texel.zw * tc.z;
|
|
42
|
+
}
|
|
43
43
|
`;
|
|
44
44
|
// Position is quantized to 6 bytes (2 bytes per component). So we always must sample two adjacent texels. We discard two bytes based on whether the index is even or odd.
|
|
45
|
-
const computeAnimationFrameDisplacement = `
|
|
46
|
-
vec3 computeAnimationFrameDisplacement(float vertIndex, float frameIndex, vec3 origin, vec3 scale) {
|
|
47
|
-
vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);
|
|
48
|
-
vec4 enc1 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
49
|
-
tc.x += g_anim_step.x;
|
|
50
|
-
vec4 enc2 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
51
|
-
|
|
52
|
-
vec2 ex = enc1.xy * (1.0 - tc.z) + enc1.zw * tc.z;
|
|
53
|
-
vec2 ey = enc1.zw * (1.0 - tc.z) + enc2.xy * tc.z;
|
|
54
|
-
vec2 ez = enc2.xy * (1.0 - tc.z) + enc2.zw * tc.z;
|
|
55
|
-
|
|
56
|
-
vec3 qpos = vec3(decodeUInt16(ex), decodeUInt16(ey), decodeUInt16(ez));
|
|
57
|
-
return unquantizePosition(qpos, origin, scale).xyz;
|
|
58
|
-
}
|
|
45
|
+
const computeAnimationFrameDisplacement = `
|
|
46
|
+
vec3 computeAnimationFrameDisplacement(float vertIndex, float frameIndex, vec3 origin, vec3 scale) {
|
|
47
|
+
vec3 tc = computeAnimLUTCoords(vertIndex, frameIndex);
|
|
48
|
+
vec4 enc1 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
49
|
+
tc.x += g_anim_step.x;
|
|
50
|
+
vec4 enc2 = floor(TEXTURE(u_animLUT, tc.xy) * 255.0 + 0.5);
|
|
51
|
+
|
|
52
|
+
vec2 ex = enc1.xy * (1.0 - tc.z) + enc1.zw * tc.z;
|
|
53
|
+
vec2 ey = enc1.zw * (1.0 - tc.z) + enc2.xy * tc.z;
|
|
54
|
+
vec2 ez = enc2.xy * (1.0 - tc.z) + enc2.zw * tc.z;
|
|
55
|
+
|
|
56
|
+
vec3 qpos = vec3(decodeUInt16(ex), decodeUInt16(ey), decodeUInt16(ez));
|
|
57
|
+
return unquantizePosition(qpos, origin, scale).xyz;
|
|
58
|
+
}
|
|
59
59
|
`;
|
|
60
|
-
const computeAnimationDisplacement = `
|
|
61
|
-
vec3 computeAnimationDisplacement(float vertIndex, float frameIndex0, float frameIndex1, float fraction, vec3 origin, vec3 scale) {
|
|
62
|
-
if (frameIndex0 < 0.0)
|
|
63
|
-
return vec3(0.0, 0.0, 0.0);
|
|
64
|
-
|
|
65
|
-
vec3 displacement = computeAnimationFrameDisplacement(vertIndex, frameIndex0, origin, scale);
|
|
66
|
-
if (fraction > 0.0) {
|
|
67
|
-
vec3 displacement1 = computeAnimationFrameDisplacement(vertIndex, frameIndex1, origin, scale);
|
|
68
|
-
displacement += fraction * (displacement1 - displacement);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return displacement;
|
|
72
|
-
}
|
|
60
|
+
const computeAnimationDisplacement = `
|
|
61
|
+
vec3 computeAnimationDisplacement(float vertIndex, float frameIndex0, float frameIndex1, float fraction, vec3 origin, vec3 scale) {
|
|
62
|
+
if (frameIndex0 < 0.0)
|
|
63
|
+
return vec3(0.0, 0.0, 0.0);
|
|
64
|
+
|
|
65
|
+
vec3 displacement = computeAnimationFrameDisplacement(vertIndex, frameIndex0, origin, scale);
|
|
66
|
+
if (fraction > 0.0) {
|
|
67
|
+
vec3 displacement1 = computeAnimationFrameDisplacement(vertIndex, frameIndex1, origin, scale);
|
|
68
|
+
displacement += fraction * (displacement1 - displacement);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return displacement;
|
|
72
|
+
}
|
|
73
73
|
`;
|
|
74
|
-
const adjustRawPosition = `
|
|
75
|
-
rawPos.xyz += computeAnimationDisplacement(g_vertexLUTIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);
|
|
76
|
-
return rawPos;
|
|
74
|
+
const adjustRawPosition = `
|
|
75
|
+
rawPos.xyz += computeAnimationDisplacement(g_vertexLUTIndex, u_animDispParams.x, u_animDispParams.y, u_animDispParams.z, u_qAnimDispOrigin, u_qAnimDispScale);
|
|
76
|
+
return rawPos;
|
|
77
77
|
`;
|
|
78
|
-
const computeAnimationFrameNormal = `
|
|
79
|
-
vec3 computeAnimationFrameNormal(float frameIndex) {
|
|
80
|
-
vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);
|
|
81
|
-
return octDecodeNormal(enc);
|
|
82
|
-
}
|
|
78
|
+
const computeAnimationFrameNormal = `
|
|
79
|
+
vec3 computeAnimationFrameNormal(float frameIndex) {
|
|
80
|
+
vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);
|
|
81
|
+
return octDecodeNormal(enc);
|
|
82
|
+
}
|
|
83
83
|
`;
|
|
84
|
-
const computeAnimationNormal = `
|
|
85
|
-
vec3 computeAnimationNormal(float frameIndex0, float frameIndex1, float fraction) {
|
|
86
|
-
vec3 normal = computeAnimationFrameNormal(frameIndex0);
|
|
87
|
-
if (fraction > 0.0) {
|
|
88
|
-
vec3 normal1 = computeAnimationFrameNormal(frameIndex1);
|
|
89
|
-
normal += fraction * (normal1 - normal);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return normal;
|
|
93
|
-
}
|
|
84
|
+
const computeAnimationNormal = `
|
|
85
|
+
vec3 computeAnimationNormal(float frameIndex0, float frameIndex1, float fraction) {
|
|
86
|
+
vec3 normal = computeAnimationFrameNormal(frameIndex0);
|
|
87
|
+
if (fraction > 0.0) {
|
|
88
|
+
vec3 normal1 = computeAnimationFrameNormal(frameIndex1);
|
|
89
|
+
normal += fraction * (normal1 - normal);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return normal;
|
|
93
|
+
}
|
|
94
94
|
`;
|
|
95
|
-
const computeAnimationFrameParam = `
|
|
96
|
-
float computeAnimationFrameParam(float frameIndex, float origin, float scale) {
|
|
97
|
-
vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);
|
|
98
|
-
return clamp((origin + scale * decodeUInt16(enc)), 0.0, 1.0);
|
|
99
|
-
}
|
|
95
|
+
const computeAnimationFrameParam = `
|
|
96
|
+
float computeAnimationFrameParam(float frameIndex, float origin, float scale) {
|
|
97
|
+
vec2 enc = sampleAnimVec2(g_vertexLUTIndex, frameIndex);
|
|
98
|
+
return clamp((origin + scale * decodeUInt16(enc)), 0.0, 1.0);
|
|
99
|
+
}
|
|
100
100
|
`;
|
|
101
|
-
const computeAnimationParam = `
|
|
102
|
-
vec2 computeAnimationParam(float frameIndex0, float frameIndex1, float fraction, float origin, float scale) {
|
|
103
|
-
float param = computeAnimationFrameParam(frameIndex0, origin, scale);
|
|
104
|
-
if (fraction > 0.0) {
|
|
105
|
-
float param1 = computeAnimationFrameParam(frameIndex1, origin, scale);
|
|
106
|
-
param += fraction * (param1 - param);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return vec2(.5, param);
|
|
110
|
-
}
|
|
101
|
+
const computeAnimationParam = `
|
|
102
|
+
vec2 computeAnimationParam(float frameIndex0, float frameIndex1, float fraction, float origin, float scale) {
|
|
103
|
+
float param = computeAnimationFrameParam(frameIndex0, origin, scale);
|
|
104
|
+
if (fraction > 0.0) {
|
|
105
|
+
float param1 = computeAnimationFrameParam(frameIndex1, origin, scale);
|
|
106
|
+
param += fraction * (param1 - param);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return vec2(.5, param);
|
|
110
|
+
}
|
|
111
111
|
`;
|
|
112
112
|
const scratchAnimParams = [
|
|
113
113
|
undefined,
|