@itwin/core-frontend 4.10.0-dev.9 → 5.0.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +0 -2
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +17 -8
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +3 -3
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js +1 -1
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts +0 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +2 -3
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/ChangeFlags.d.ts +1 -1
- package/lib/cjs/ChangeFlags.d.ts.map +1 -1
- package/lib/cjs/ChangeFlags.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +6 -6
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.d.ts +8 -6
- package/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +20 -10
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/cjs/HitDetail.d.ts +37 -5
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +12 -2
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +1 -2
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +1 -0
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +9 -8
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +8 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js +1 -2
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/ModelState.d.ts +0 -8
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +0 -8
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts +1 -1
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NotificationManager.d.ts +2 -2
- package/lib/cjs/NotificationManager.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +1 -2
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -3
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +4 -11
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +18 -12
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts +0 -1
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +1 -2
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.js +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +9 -9
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +14 -1
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +4 -2
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.d.ts.map +1 -1
- package/lib/cjs/ViewingSpace.js +3 -0
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +2 -4
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/ViewportSync.js +6 -6
- package/lib/cjs/ViewportSync.js.map +1 -1
- package/lib/cjs/common/ImageUtil.js +15 -16
- package/lib/cjs/common/ImageUtil.js.map +1 -1
- package/lib/cjs/common/WorkerProxy.d.ts +8 -4
- package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
- package/lib/cjs/common/WorkerProxy.js +1 -2
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/gltf/GltfParser.js +7 -8
- package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
- package/lib/cjs/common/gltf/GltfSchema.d.ts +1 -1
- package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
- package/lib/cjs/common/gltf/GltfSchema.js +5 -5
- package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
- package/lib/cjs/common/imdl/CompactEdges.js +1 -2
- package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js +2 -3
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js +10 -12
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/EdgeParams.js +2 -3
- package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryList.d.ts +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +3 -3
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/LineCode.js +1 -2
- package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js +3 -3
- package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/cjs/common/internal/render/OvrFlags.d.ts +4 -2
- package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
- package/lib/cjs/common/internal/render/PointStringParams.js +1 -2
- package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
- package/lib/cjs/common/internal/render/PolylineParams.js +4 -5
- package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
- package/lib/cjs/common/internal/render/SurfaceParams.js +3 -3
- package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/VertexTable.js +4 -7
- package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.js +2 -2
- package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableSplitter.js +4 -4
- package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/extension/providers/ExtensionLoadScript.js +1 -2
- package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +2 -3
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +2 -2
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js +2 -2
- package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +3 -3
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +12 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +2 -2
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicTemplate.js +1 -2
- package/lib/cjs/render/GraphicTemplate.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.d.ts +14 -4
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +22 -5
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/cjs/render/RenderMemory.d.ts +2 -0
- package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
- package/lib/cjs/render/RenderMemory.js +2 -0
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderPlan.d.ts +2 -1
- package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
- package/lib/cjs/render/RenderPlan.js +5 -3
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +1 -1
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +8 -9
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/UpsampleRealityMeshParams.js +1 -2
- package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js +1 -2
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeBuffers.js +5 -5
- package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
- package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
- package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.d.ts +9 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +6 -0
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +14 -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/ClippingProgram.js +2 -2
- package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
- package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
- package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
- package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
- package/lib/cjs/render/webgl/Contours.d.ts +34 -0
- package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
- package/lib/cjs/render/webgl/Contours.js +127 -0
- package/lib/cjs/render/webgl/Contours.js.map +1 -0
- package/lib/cjs/render/webgl/DrawCommand.js +3 -3
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +48 -51
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.js +2 -2
- package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/GL.d.ts +2 -1
- package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
- package/lib/cjs/render/webgl/GL.js +1 -0
- package/lib/cjs/render/webgl/GL.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +12 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +31 -0
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -2
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js +4 -4
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Matrix.js +3 -3
- package/lib/cjs/render/webgl/Matrix.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +4 -2
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +19 -7
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScratchDrawParams.js +2 -3
- package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -2
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Sync.js +3 -4
- package/lib/cjs/render/webgl/Sync.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +7 -7
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +2 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
- package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
- package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js +1 -2
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +2 -2
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +2 -3
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +1 -2
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Atmosphere.js +2 -3
- package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +2 -3
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -3
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -3
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +3 -3
- package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +2 -3
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +2 -3
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +2 -3
- package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +7 -7
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +2 -3
- package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
- package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/Contours.js +137 -0
- package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
- package/lib/cjs/render/webgl/glsl/CopyColor.js +2 -3
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -3
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +9 -10
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.js +2 -2
- package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.js +8 -9
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -3
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +3 -4
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +35 -28
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +15 -15
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +3 -4
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.js +1 -2
- package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +2 -3
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.js +1 -2
- package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Monochrome.js +2 -3
- package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +9 -9
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +3 -4
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +2 -3
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +6 -6
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +8 -8
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RenderPass.js +1 -2
- package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -3
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -3
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -3
- package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +4 -4
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +11 -9
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +2 -3
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +3 -3
- package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +13 -13
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Viewport.js +3 -4
- package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -2
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -3
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/cjs/request/Request.d.ts.map +1 -1
- package/lib/cjs/request/Request.js +2 -2
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/request/utils.js +3 -4
- package/lib/cjs/request/utils.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +3 -3
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/ContextShareProvider.js +2 -2
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +1 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +18 -16
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +2 -2
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +2 -2
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.js +1 -2
- package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +7 -8
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/ImdlParser.js +1 -2
- package/lib/cjs/tile/ImdlParser.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +3 -3
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/MeshoptCompression.js +1 -2
- package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +3 -4
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +2 -3
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +12 -12
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +3 -4
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RenderGraphicTileTree.js +1 -2
- package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js +2 -2
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +3 -4
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +2 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequest.js +1 -1
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js +1 -1
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/TileStorage.js +1 -1
- package/lib/cjs/tile/TileStorage.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +3 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/ViewFlagOverrides.js +1 -2
- package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +0 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +3 -3
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +7 -8
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +1 -2
- package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
- package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.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/MapLayerTileTreeReference.js +2 -2
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +1 -1
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +2 -2
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +4 -0
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/UrlUtils.js +1 -2
- package/lib/cjs/tile/map/UrlUtils.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +2 -2
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts +1 -1
- package/lib/cjs/tools/Tool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +2 -2
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/RegisterWorker.js +1 -2
- package/lib/cjs/workers/RegisterWorker.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +0 -2
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +17 -8
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BingLocation.js +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +0 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +2 -3
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/ChangeFlags.d.ts +1 -1
- package/lib/esm/ChangeFlags.d.ts.map +1 -1
- package/lib/esm/ChangeFlags.js.map +1 -1
- package/lib/esm/CheckpointConnection.js +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +6 -6
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.d.ts +8 -6
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +20 -10
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/esm/HitDetail.d.ts +37 -5
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +12 -2
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +1 -2
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +1 -0
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +9 -8
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +8 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/ModelState.d.ts +0 -8
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +0 -8
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts +1 -1
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NotificationManager.d.ts +2 -2
- package/lib/esm/NotificationManager.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +1 -2
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +2 -3
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +4 -11
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +18 -12
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts +0 -1
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +1 -2
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.js +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewState.d.ts +14 -1
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +4 -2
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.d.ts.map +1 -1
- package/lib/esm/ViewingSpace.js +3 -0
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +2 -4
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/WorkerProxy.d.ts +8 -4
- package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
- package/lib/esm/common/WorkerProxy.js.map +1 -1
- package/lib/esm/common/gltf/GltfParser.js +6 -6
- package/lib/esm/common/gltf/GltfParser.js.map +1 -1
- package/lib/esm/common/gltf/GltfSchema.d.ts +1 -1
- package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
- package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js +4 -5
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
- package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
- package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/esm/common/internal/render/OvrFlags.d.ts +4 -2
- package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -1
- package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
- package/lib/esm/common/internal/render/VertexTable.js +3 -5
- package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
- package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js +2 -2
- package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +12 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/Pixel.d.ts +14 -4
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +22 -5
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
- package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/esm/render/RenderMemory.d.ts +2 -0
- package/lib/esm/render/RenderMemory.d.ts.map +1 -1
- package/lib/esm/render/RenderMemory.js +2 -0
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderPlan.d.ts +2 -1
- package/lib/esm/render/RenderPlan.d.ts.map +1 -1
- package/lib/esm/render/RenderPlan.js +2 -0
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +1 -1
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +8 -9
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
- package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.js +18 -0
- package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +9 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +6 -0
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +14 -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/ContourUniforms.d.ts +22 -0
- package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
- package/lib/esm/render/webgl/ContourUniforms.js +94 -0
- package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
- package/lib/esm/render/webgl/Contours.d.ts +34 -0
- package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
- package/lib/esm/render/webgl/Contours.js +123 -0
- package/lib/esm/render/webgl/Contours.js.map +1 -0
- package/lib/esm/render/webgl/EdgeSettings.js +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +46 -49
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/GL.d.ts +2 -1
- package/lib/esm/render/webgl/GL.d.ts.map +1 -1
- package/lib/esm/render/webgl/GL.js +1 -0
- package/lib/esm/render/webgl/GL.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +12 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +31 -0
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/Material.js +2 -2
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +1 -1
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +2 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +2 -0
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +16 -4
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +26 -0
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +7 -7
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +2 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
- package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.js +2 -0
- package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +2 -2
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
- package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
- package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/Contours.js +134 -0
- package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
- package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
- package/lib/esm/render/webgl/glsl/EDL.js +4 -4
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +21 -15
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
- package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +5 -3
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
- package/lib/esm/request/Request.d.ts.map +1 -1
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +1 -1
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/ContextShareProvider.js +2 -2
- package/lib/esm/tile/ContextShareProvider.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +1 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +14 -12
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +4 -4
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +1 -2
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +6 -6
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +1 -2
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +1 -2
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +2 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequest.js +1 -1
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js +1 -1
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/TileStorage.js +1 -1
- package/lib/esm/tile/TileStorage.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +3 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +0 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +3 -3
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +3 -3
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
- package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.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/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +1 -1
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +4 -0
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/esm/tools/MeasureTool.js +2 -2
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts +1 -1
- package/lib/esm/tools/Tool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +2 -2
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +30 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisibleFeature.js","sourceRoot":"","sources":["../../../src/render/VisibleFeature.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 Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometryClass } from \"@itwin/core-common\";\r\nimport { ViewRect } from \"../common/ViewRect\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { Pixel } from \"./Pixel\";\r\n\r\n/** Represents a [Feature]($common) determined to be visible within a [[Viewport]].\r\n * @see [[Viewport.queryVisibleFeatures]].\r\n * @public\r\n */\r\nexport interface VisibleFeature {\r\n /** The Id of the [Element]($backend) associated with the feature. May be invalid or transient. */\r\n readonly elementId: Id64String;\r\n /** The Id of the [SubCategory]($backend) associated with the feature. May be invalid or transient. */\r\n readonly subCategoryId: Id64String;\r\n /** The class of geometry associated with the feature. */\r\n readonly geometryClass: GeometryClass;\r\n /** The Id of the [GeometricModel]($backend) associated with the feature. May be invalid or transient. */\r\n readonly modelId: Id64String;\r\n /** The iModel associated with the feature. In some cases this may differ from the [[Viewport]]'s iModel. */\r\n iModel: IModelConnection;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s by reading pixels rendered by a [[Viewport]].\r\n * This method of determining visibility considers a feature \"visible\" if it lit up at least one pixel.\r\n * @note A pixel that is behind another, transparent pixel is not considered visible.\r\n * @see [[QueryVisibleFeaturesOptions]].\r\n * @public\r\n */\r\nexport interface QueryScreenFeaturesOptions {\r\n /** Union discriminator for [[QueryVisibleFeaturesOptions]]. */\r\n source: \"screen\";\r\n /** If true, non-locatable features are considered visible. */\r\n includeNonLocatable?: boolean;\r\n /** If specified, a sub-region of the [[Viewport]] to which to constrain the query. */\r\n rect?: ViewRect;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s by inspecting the [[Tile]]s selected for display by a [[Viewport]].\r\n * This method of determining visibility considers a feature \"visible\" if it is included in at least one tile selected for display and is\r\n * not otherwise rendered invisible by the view's [[CategorySelectorState]], [SubCategoryAppearance]($common) overrides, [FeatureOverrides]($common), or\r\n * other means.\r\n * @note If a clip volume is applied to the view, features contained in tiles that *intersect* the clip volume are considered visible regardless of whether\r\n * their geometry would actually be entirely clipped out by the clip volume.\r\n * @see [[QueryVisibleFeaturesOptions]].\r\n * @public\r\n */\r\nexport interface QueryTileFeaturesOptions {\r\n /** Union discriminator for [[QueryVisibleFeaturesOptions]]. */\r\n source: \"tiles\";\r\n /** If true, non-locatable features are considered visible. */\r\n includeNonLocatable?: boolean;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s.\r\n * @see [[Viewport.queryVisibleFeatures]].\r\n * @public\r\n */\r\nexport type QueryVisibleFeaturesOptions = QueryScreenFeaturesOptions | QueryTileFeaturesOptions;\r\n\r\n/** A function supplied to [[Viewport.queryVisibleFeatures]] to process the results. The iterable supplied to the callback consists of all of the\r\n * [Feature]($common)s determined to be visible. The same feature may recur multiple times.\r\n * @note The iterable supplied to the callback is usable only within the callback. Once the callback exits, the iterable becomes empty.\r\n * @public\r\n */\r\nexport type QueryVisibleFeaturesCallback = (features: Iterable<VisibleFeature>) => void;\r\n\r\n/** Ensures that the iterable supplied to QueryVisibleFeaturesCallback becomes invalidated once the callback exits.\r\n * The iterable relies on RenderTarget state that changes from one frame to another.\r\n */\r\nclass ExpiringIterable implements Iterable<VisibleFeature> {\r\n private _features: Iterable<VisibleFeature>;\r\n private _disposed = false;\r\n\r\n public constructor(features: Iterable<VisibleFeature>) {\r\n this._features = features;\r\n }\r\n\r\n public dispose(): void {\r\n this._disposed = true;\r\n this._features = [];\r\n }\r\n\r\n public [Symbol.iterator](): Iterator<VisibleFeature> {\r\n assert(!this._disposed, \"The iterable supplied to QueryVisibleFeaturesCallback is valid only for the duration of the callback.\");\r\n return this._features[Symbol.iterator]();\r\n }\r\n}\r\n\r\nfunction invokeCallback(features: Iterable<VisibleFeature>, callback: QueryVisibleFeaturesCallback): void {\r\n const iterable = new ExpiringIterable(features);\r\n try {\r\n callback(iterable);\r\n } finally {\r\n iterable.dispose();\r\n }\r\n}\r\n\r\n/** Features read from pixels rendered by a viewport. */\r\nclass ScreenFeatures implements Iterable<VisibleFeature> {\r\n private readonly _pixels: Pixel.Buffer;\r\n private readonly _rect: ViewRect;\r\n private readonly _iModel: IModelConnection;\r\n\r\n public constructor(pixels: Pixel.Buffer, rect: ViewRect, viewport: Viewport) {\r\n this._pixels = pixels;\r\n this._rect = rect.clone();\r\n this._rect.right = viewport.cssPixelsToDevicePixels(this._rect.right);\r\n this._rect.bottom = viewport.cssPixelsToDevicePixels(this._rect.bottom);\r\n this._iModel = viewport.iModel;\r\n }\r\n\r\n public [Symbol.iterator](): Iterator<VisibleFeature> {\r\n function* iterator(pixels: Pixel.Buffer, rect: ViewRect, iModel: IModelConnection) {\r\n for (let x = rect.left; x < rect.right; x++) {\r\n for (let y = rect.top; y < rect.bottom; y++) {\r\n const pixel = pixels.getPixel(x, y);\r\n if (pixel.feature && pixel.modelId) {\r\n yield {\r\n elementId: pixel.feature.elementId,\r\n subCategoryId: pixel.feature.subCategoryId,\r\n geometryClass: pixel.feature.geometryClass,\r\n modelId: pixel.modelId,\r\n iModel: pixel.iModel ?? iModel,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n return iterator(this._pixels, this._rect, this._iModel);\r\n }\r\n}\r\n\r\n/** Implementation of [[Viewport.queryVisibleFeatures]].\r\n * @internal\r\n */\r\nexport function queryVisibleFeatures(viewport: Viewport, options: QueryVisibleFeaturesOptions, callback: QueryVisibleFeaturesCallback): void {\r\n assert(\"screen\" === options.source || \"tiles\" === options.source);\r\n switch (options.source) {\r\n case \"screen\":\r\n const rect = options.rect ?? viewport.viewRect;\r\n viewport.readPixels(rect, Pixel.Selector.Feature, (pixels) => invokeCallback(pixels ? new ScreenFeatures(pixels, rect, viewport) : [], callback), true !== options.includeNonLocatable);\r\n break;\r\n case \"tiles\":\r\n viewport.target.queryVisibleTileFeatures(options, viewport.iModel, (features) => invokeCallback(features, callback));\r\n break;\r\n default:\r\n invokeCallback([], callback);\r\n break;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"VisibleFeature.js","sourceRoot":"","sources":["../../../src/render/VisibleFeature.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AA4IH,oDAcC;AAxJD,sDAAyD;AAKzD,mCAAgC;AA+DhC;;GAEG;AACH,MAAM,gBAAgB;IAIpB,YAAmB,QAAkC;QAF7C,cAAS,GAAG,KAAK,CAAC;QAGxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,SAAS,EAAE,uGAAuG,CAAC,CAAC;QACjI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3C,CAAC;CACF;AAED,SAAS,cAAc,CAAC,QAAkC,EAAE,QAAsC;IAChG,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,cAAc;IAKlB,YAAmB,MAAoB,EAAE,IAAc,EAAE,QAAkB;QACzE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjC,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAoB,EAAE,IAAc,EAAE,MAAwB;YAC/E,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnC,MAAM;4BACJ,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;4BAClC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;4BAC1C,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;4BAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;yBAC/B,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;CACF;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,QAAkB,EAAE,OAAoC,EAAE,QAAsC;IACnI,IAAA,qBAAM,EAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC;YAC/C,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,aAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACxL,MAAM;QACR,KAAK,OAAO;YACV,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrH,MAAM;QACR;YACE,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC7B,MAAM;IACV,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometryClass } from \"@itwin/core-common\";\r\nimport { ViewRect } from \"../common/ViewRect\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { Pixel } from \"./Pixel\";\r\n\r\n/** Represents a [Feature]($common) determined to be visible within a [[Viewport]].\r\n * @see [[Viewport.queryVisibleFeatures]].\r\n * @public\r\n */\r\nexport interface VisibleFeature {\r\n /** The Id of the [Element]($backend) associated with the feature. May be invalid or transient. */\r\n readonly elementId: Id64String;\r\n /** The Id of the [SubCategory]($backend) associated with the feature. May be invalid or transient. */\r\n readonly subCategoryId: Id64String;\r\n /** The class of geometry associated with the feature. */\r\n readonly geometryClass: GeometryClass;\r\n /** The Id of the [GeometricModel]($backend) associated with the feature. May be invalid or transient. */\r\n readonly modelId: Id64String;\r\n /** The iModel associated with the feature. In some cases this may differ from the [[Viewport]]'s iModel. */\r\n iModel: IModelConnection;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s by reading pixels rendered by a [[Viewport]].\r\n * This method of determining visibility considers a feature \"visible\" if it lit up at least one pixel.\r\n * @note A pixel that is behind another, transparent pixel is not considered visible.\r\n * @see [[QueryVisibleFeaturesOptions]].\r\n * @public\r\n */\r\nexport interface QueryScreenFeaturesOptions {\r\n /** Union discriminator for [[QueryVisibleFeaturesOptions]]. */\r\n source: \"screen\";\r\n /** If true, non-locatable features are considered visible. */\r\n includeNonLocatable?: boolean;\r\n /** If specified, a sub-region of the [[Viewport]] to which to constrain the query. */\r\n rect?: ViewRect;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s by inspecting the [[Tile]]s selected for display by a [[Viewport]].\r\n * This method of determining visibility considers a feature \"visible\" if it is included in at least one tile selected for display and is\r\n * not otherwise rendered invisible by the view's [[CategorySelectorState]], [SubCategoryAppearance]($common) overrides, [FeatureOverrides]($common), or\r\n * other means.\r\n * @note If a clip volume is applied to the view, features contained in tiles that *intersect* the clip volume are considered visible regardless of whether\r\n * their geometry would actually be entirely clipped out by the clip volume.\r\n * @see [[QueryVisibleFeaturesOptions]].\r\n * @public\r\n */\r\nexport interface QueryTileFeaturesOptions {\r\n /** Union discriminator for [[QueryVisibleFeaturesOptions]]. */\r\n source: \"tiles\";\r\n /** If true, non-locatable features are considered visible. */\r\n includeNonLocatable?: boolean;\r\n}\r\n\r\n/** Options specifying how to query for visible [Feature]($common)s.\r\n * @see [[Viewport.queryVisibleFeatures]].\r\n * @public\r\n */\r\nexport type QueryVisibleFeaturesOptions = QueryScreenFeaturesOptions | QueryTileFeaturesOptions;\r\n\r\n/** A function supplied to [[Viewport.queryVisibleFeatures]] to process the results. The iterable supplied to the callback consists of all of the\r\n * [Feature]($common)s determined to be visible. The same feature may recur multiple times.\r\n * @note The iterable supplied to the callback is usable only within the callback. Once the callback exits, the iterable becomes empty.\r\n * @public\r\n */\r\nexport type QueryVisibleFeaturesCallback = (features: Iterable<VisibleFeature>) => void;\r\n\r\n/** Ensures that the iterable supplied to QueryVisibleFeaturesCallback becomes invalidated once the callback exits.\r\n * The iterable relies on RenderTarget state that changes from one frame to another.\r\n */\r\nclass ExpiringIterable implements Iterable<VisibleFeature> {\r\n private _features: Iterable<VisibleFeature>;\r\n private _disposed = false;\r\n\r\n public constructor(features: Iterable<VisibleFeature>) {\r\n this._features = features;\r\n }\r\n\r\n public dispose(): void {\r\n this._disposed = true;\r\n this._features = [];\r\n }\r\n\r\n public [Symbol.iterator](): Iterator<VisibleFeature> {\r\n assert(!this._disposed, \"The iterable supplied to QueryVisibleFeaturesCallback is valid only for the duration of the callback.\");\r\n return this._features[Symbol.iterator]();\r\n }\r\n}\r\n\r\nfunction invokeCallback(features: Iterable<VisibleFeature>, callback: QueryVisibleFeaturesCallback): void {\r\n const iterable = new ExpiringIterable(features);\r\n try {\r\n callback(iterable);\r\n } finally {\r\n iterable.dispose();\r\n }\r\n}\r\n\r\n/** Features read from pixels rendered by a viewport. */\r\nclass ScreenFeatures implements Iterable<VisibleFeature> {\r\n private readonly _pixels: Pixel.Buffer;\r\n private readonly _rect: ViewRect;\r\n private readonly _iModel: IModelConnection;\r\n\r\n public constructor(pixels: Pixel.Buffer, rect: ViewRect, viewport: Viewport) {\r\n this._pixels = pixels;\r\n this._rect = rect.clone();\r\n this._rect.right = viewport.cssPixelsToDevicePixels(this._rect.right);\r\n this._rect.bottom = viewport.cssPixelsToDevicePixels(this._rect.bottom);\r\n this._iModel = viewport.iModel;\r\n }\r\n\r\n public [Symbol.iterator](): Iterator<VisibleFeature> {\r\n function* iterator(pixels: Pixel.Buffer, rect: ViewRect, iModel: IModelConnection) {\r\n for (let x = rect.left; x < rect.right; x++) {\r\n for (let y = rect.top; y < rect.bottom; y++) {\r\n const pixel = pixels.getPixel(x, y);\r\n if (pixel.feature && pixel.modelId) {\r\n yield {\r\n elementId: pixel.feature.elementId,\r\n subCategoryId: pixel.feature.subCategoryId,\r\n geometryClass: pixel.feature.geometryClass,\r\n modelId: pixel.modelId,\r\n iModel: pixel.iModel ?? iModel,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n return iterator(this._pixels, this._rect, this._iModel);\r\n }\r\n}\r\n\r\n/** Implementation of [[Viewport.queryVisibleFeatures]].\r\n * @internal\r\n */\r\nexport function queryVisibleFeatures(viewport: Viewport, options: QueryVisibleFeaturesOptions, callback: QueryVisibleFeaturesCallback): void {\r\n assert(\"screen\" === options.source || \"tiles\" === options.source);\r\n switch (options.source) {\r\n case \"screen\":\r\n const rect = options.rect ?? viewport.viewRect;\r\n viewport.readPixels(rect, Pixel.Selector.Feature, (pixels) => invokeCallback(pixels ? new ScreenFeatures(pixels, rect, viewport) : [], callback), true !== options.includeNonLocatable);\r\n break;\r\n case \"tiles\":\r\n viewport.target.queryVisibleTileFeatures(options, viewport.iModel, (features) => invokeCallback(features, callback));\r\n break;\r\n default:\r\n invokeCallback([], callback);\r\n break;\r\n }\r\n}\r\n"]}
|
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
* @module WebGL
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.QBufferHandle3d = exports.QBufferHandle2d = exports.
|
|
10
|
+
exports.QBufferHandle3d = exports.QBufferHandle2d = exports.BufferHandle = exports.VAOHandle = exports.BuffersContainer = exports.BufferParameters = void 0;
|
|
11
|
+
exports.qparams2dToArray = qparams2dToArray;
|
|
12
|
+
exports.qorigin3dToArray = qorigin3dToArray;
|
|
13
|
+
exports.qscale3dToArray = qscale3dToArray;
|
|
14
|
+
exports.qparams3dToArray = qparams3dToArray;
|
|
11
15
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
16
|
const GL_1 = require("./GL");
|
|
13
17
|
const System_1 = require("./System");
|
|
@@ -209,7 +213,6 @@ function qparams2dToArray(params) {
|
|
|
209
213
|
setScale(3, params.scale.y, arr);
|
|
210
214
|
return arr;
|
|
211
215
|
}
|
|
212
|
-
exports.qparams2dToArray = qparams2dToArray;
|
|
213
216
|
/** @internal */
|
|
214
217
|
function qorigin3dToArray(qorigin) {
|
|
215
218
|
const origin = new Float32Array(3);
|
|
@@ -218,7 +221,6 @@ function qorigin3dToArray(qorigin) {
|
|
|
218
221
|
origin[2] = qorigin.z;
|
|
219
222
|
return origin;
|
|
220
223
|
}
|
|
221
|
-
exports.qorigin3dToArray = qorigin3dToArray;
|
|
222
224
|
/** @internal */
|
|
223
225
|
function qscale3dToArray(qscale) {
|
|
224
226
|
const scale = new Float32Array(3);
|
|
@@ -227,7 +229,6 @@ function qscale3dToArray(qscale) {
|
|
|
227
229
|
setScale(2, qscale.z, scale);
|
|
228
230
|
return scale;
|
|
229
231
|
}
|
|
230
|
-
exports.qscale3dToArray = qscale3dToArray;
|
|
231
232
|
/** Converts 3d quantization params to a pair of Float32Arrays
|
|
232
233
|
* @internal
|
|
233
234
|
*/
|
|
@@ -236,7 +237,6 @@ function qparams3dToArray(params) {
|
|
|
236
237
|
const scale = qscale3dToArray(params.scale);
|
|
237
238
|
return { origin, scale };
|
|
238
239
|
}
|
|
239
|
-
exports.qparams3dToArray = qparams3dToArray;
|
|
240
240
|
/** A handle to a WebGLBuffer intended to hold quantized 2d points
|
|
241
241
|
* @internal
|
|
242
242
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport class BuffersContainer implements WebGLDisposable {\r\n public readonly linkages: BufferHandleLinkage[] = [];\r\n protected readonly _vao: VAOHandle;\r\n private readonly _context: WebGL2RenderingContext;\r\n\r\n public static create(): BuffersContainer {\r\n return new BuffersContainer(System.instance.context);\r\n }\r\n\r\n private constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n this._vao = new VAOHandle(this._context);\r\n }\r\n\r\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n public dispose(): void {\r\n this._vao.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._vao.isDisposed;\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this.linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this.linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public unbind(): void {\r\n VAOHandle.unbind(this._context);\r\n }\r\n}\r\n\r\n/** A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VAOHandle implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n this._context.deleteVertexArray(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteBuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage { // eslint-disable-line @typescript-eslint/no-unsafe-declaration-merging\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport class BuffersContainer implements WebGLDisposable {\r\n public readonly linkages: BufferHandleLinkage[] = [];\r\n protected readonly _vao: VAOHandle;\r\n private readonly _context: WebGL2RenderingContext;\r\n\r\n public static create(): BuffersContainer {\r\n return new BuffersContainer(System.instance.context);\r\n }\r\n\r\n private constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n this._vao = new VAOHandle(this._context);\r\n }\r\n\r\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n public dispose(): void {\r\n this._vao.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._vao.isDisposed;\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this.linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this.linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public unbind(): void {\r\n VAOHandle.unbind(this._context);\r\n }\r\n}\r\n\r\n/** A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VAOHandle implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n this._context.deleteVertexArray(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteBuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array | Float32Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
|
|
@@ -16,6 +16,7 @@ export declare class BatchUniforms {
|
|
|
16
16
|
syncKey: number;
|
|
17
17
|
private _overrides?;
|
|
18
18
|
private _sensors?;
|
|
19
|
+
private _contours?;
|
|
19
20
|
private _batchId;
|
|
20
21
|
private _scratchBytes;
|
|
21
22
|
private _scratchUint32;
|
|
@@ -25,6 +26,9 @@ export declare class BatchUniforms {
|
|
|
25
26
|
get featureMode(): FeatureMode;
|
|
26
27
|
bindNumThematicSensors(uniform: UniformHandle): void;
|
|
27
28
|
bindThematicSensors(uniform: UniformHandle): void;
|
|
29
|
+
get wantContourLines(): boolean;
|
|
30
|
+
bindContourLUT(uniform: UniformHandle): void;
|
|
31
|
+
bindContourLUTWidth(uniform: UniformHandle): void;
|
|
28
32
|
bindLUT(uniform: UniformHandle): void;
|
|
29
33
|
bindLUTParams(uniform: UniformHandle): void;
|
|
30
34
|
bindUniformSymbologyFlags(uniform: UniformHandle): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C;;GAEG;AACH,qBAAa,aAAa;IACxB,SAAgB,KAAK,EAAE,UAAU,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACjC,OAAO,SAAK;IAEnB,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAA8C;gBAEjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAKlD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI;IAoC/C,eAAe,IAAI,IAAI;IAI9B,IAAW,WAAW,IAAI,WAAW,CAA8B;IAE5D,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKpD,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxD,IAAW,gBAAgB,IAAI,OAAO,CAGrC;IAEM,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAM5C,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASjD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMrC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK3C,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAUvD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmBtD,+BAA+B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAgB7D,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,GAAG,IAAI;CAW1F"}
|
|
@@ -51,6 +51,7 @@ class BatchUniforms {
|
|
|
51
51
|
this._featureMode = 1 /* FeatureMode.Pick */;
|
|
52
52
|
else
|
|
53
53
|
this._featureMode = 0 /* FeatureMode.None */;
|
|
54
|
+
this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;
|
|
54
55
|
}
|
|
55
56
|
resetBatchState() {
|
|
56
57
|
this.state.reset();
|
|
@@ -64,6 +65,23 @@ class BatchUniforms {
|
|
|
64
65
|
if (undefined !== this._sensors)
|
|
65
66
|
this._sensors.bindTexture(uniform);
|
|
66
67
|
}
|
|
68
|
+
get wantContourLines() {
|
|
69
|
+
const contours = this._target.plan.contours;
|
|
70
|
+
return undefined !== contours && contours.displayContours && contours.groups.length > 0;
|
|
71
|
+
}
|
|
72
|
+
bindContourLUT(uniform) {
|
|
73
|
+
// Note we can't use sync() here because a different texture may have been assigned to the desired texture unit
|
|
74
|
+
if (undefined !== this._contours)
|
|
75
|
+
this._contours.bindContourLUT(uniform);
|
|
76
|
+
}
|
|
77
|
+
bindContourLUTWidth(uniform) {
|
|
78
|
+
if (!(0, Sync_1.sync)(this, uniform)) {
|
|
79
|
+
if (undefined === this._contours)
|
|
80
|
+
uniform.setUniform1ui(0);
|
|
81
|
+
else
|
|
82
|
+
this._contours.bindContourLUTWidth(uniform);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
67
85
|
bindLUT(uniform) {
|
|
68
86
|
// Note we can't use sync() here because a different texture may have been assigned to the desired texture unit
|
|
69
87
|
if (undefined !== this._overrides)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { BatchState } from \"./BatchState\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { Batch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { FeatureMode } from \"./TechniqueFlags\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\n\r\nconst scratchRgb = new Float32Array(3);\r\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\r\n\r\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BatchUniforms {\r\n public readonly state: BatchState;\r\n private readonly _target: Target;\r\n private _featureMode = FeatureMode.None;\r\n public syncKey = 0;\r\n\r\n private _overrides?: FeatureOverrides;\r\n private _sensors?: ThematicSensors;\r\n private _batchId = new Float32Array(4);\r\n\r\n private _scratchBytes = new Uint8Array(4);\r\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\r\n\r\n public constructor(target: Target, batchState: BatchState) {\r\n this.state = batchState;\r\n this._target = target;\r\n }\r\n\r\n public setCurrentBatch(batch: Batch | undefined): void {\r\n desync(this);\r\n\r\n if (undefined !== batch)\r\n this.state.push(batch, false);\r\n else\r\n this.state.pop();\r\n\r\n const batchId = this.state.currentBatchId;\r\n this._scratchUint32[0] = batchId;\r\n this._batchId[0] = this._scratchBytes[0];\r\n this._batchId[1] = this._scratchBytes[1];\r\n this._batchId[2] = this._scratchBytes[2];\r\n this._batchId[3] = this._scratchBytes[3];\r\n\r\n const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;\r\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\r\n\r\n let sensors: ThematicSensors | undefined;\r\n if (undefined !== batch && this._target.wantThematicSensors) {\r\n const distanceCutoff = this._target.plan.thematic!.sensorSettings.distanceCutoff;\r\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\r\n sensors = batch.getThematicSensors(this._target);\r\n }\r\n this._sensors = sensors;\r\n\r\n if (undefined !== this._overrides)\r\n this._featureMode = FeatureMode.Overrides;\r\n else if (0 !== batchId)\r\n this._featureMode = FeatureMode.Pick;\r\n else\r\n this._featureMode = FeatureMode.None;\r\n }\r\n\r\n public resetBatchState(): void {\r\n this.state.reset();\r\n }\r\n\r\n public get featureMode(): FeatureMode { return this._featureMode; }\r\n\r\n public bindNumThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindNumSensors(uniform);\r\n }\r\n\r\n public bindThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindTexture(uniform);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._overrides)\r\n this._overrides.bindLUT(uniform);\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n if (undefined !== this._overrides && !sync(this, uniform))\r\n this._overrides.bindLUTParams(uniform);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides)\r\n this._overrides.bindUniformSymbologyFlags(uniform);\r\n else\r\n uniform.setUniform1f(0);\r\n }\r\n\r\n public bindBatchId(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._batchId);\r\n }\r\n\r\n public bindUniformColorOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Rgb) {\r\n scratchRgb[0] = uo[4] / 255.0;\r\n scratchRgb[1] = uo[5] / 255.0;\r\n scratchRgb[2] = uo[6] / 255.0;\r\n uniform.setUniform3fv(scratchRgb);\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n }\r\n\r\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Alpha) {\r\n uniform.setUniform1f(uo[7]/255.0);\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n }\r\n\r\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n let nonLocatable = 0;\r\n if (!ignoreNonLocatable && undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\r\n }\r\n uniform.setUniform1i(nonLocatable);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BatchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { BatchState } from \"./BatchState\";\r\nimport { FeatureOverrides } from \"./FeatureOverrides\";\r\nimport { Batch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { FeatureMode } from \"./TechniqueFlags\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { Contours } from \"./Contours\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\n\r\nconst scratchRgb = new Float32Array(3);\r\nconst noOverrideRgb = new Float32Array([-1.0, -1.0, -1.0]);\r\n\r\n/** Maintains uniform variable state associated with the Batch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BatchUniforms {\r\n public readonly state: BatchState;\r\n private readonly _target: Target;\r\n private _featureMode = FeatureMode.None;\r\n public syncKey = 0;\r\n\r\n private _overrides?: FeatureOverrides;\r\n private _sensors?: ThematicSensors;\r\n private _contours?: Contours;\r\n private _batchId = new Float32Array(4);\r\n\r\n private _scratchBytes = new Uint8Array(4);\r\n private _scratchUint32 = new Uint32Array(this._scratchBytes.buffer);\r\n\r\n public constructor(target: Target, batchState: BatchState) {\r\n this.state = batchState;\r\n this._target = target;\r\n }\r\n\r\n public setCurrentBatch(batch: Batch | undefined): void {\r\n desync(this);\r\n\r\n if (undefined !== batch)\r\n this.state.push(batch, false);\r\n else\r\n this.state.pop();\r\n\r\n const batchId = this.state.currentBatchId;\r\n this._scratchUint32[0] = batchId;\r\n this._batchId[0] = this._scratchBytes[0];\r\n this._batchId[1] = this._scratchBytes[1];\r\n this._batchId[2] = this._scratchBytes[2];\r\n this._batchId[3] = this._scratchBytes[3];\r\n\r\n const overrides = undefined !== batch ? batch.getOverrides(this._target) : undefined;\r\n this._overrides = (undefined !== overrides && overrides.anyOverridden) ? overrides : undefined;\r\n\r\n let sensors: ThematicSensors | undefined;\r\n if (undefined !== batch && this._target.wantThematicSensors) {\r\n const distanceCutoff = this._target.plan.thematic!.sensorSettings.distanceCutoff;\r\n if (distanceCutoff > 0) // if we have a distance cutoff, we want to create per-batch sensor textures\r\n sensors = batch.getThematicSensors(this._target);\r\n }\r\n this._sensors = sensors;\r\n\r\n if (undefined !== this._overrides)\r\n this._featureMode = FeatureMode.Overrides;\r\n else if (0 !== batchId)\r\n this._featureMode = FeatureMode.Pick;\r\n else\r\n this._featureMode = FeatureMode.None;\r\n\r\n this._contours = undefined !== batch && this.wantContourLines ? batch.getContours(this._target) : undefined;\r\n }\r\n\r\n public resetBatchState(): void {\r\n this.state.reset();\r\n }\r\n\r\n public get featureMode(): FeatureMode { return this._featureMode; }\r\n\r\n public bindNumThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindNumSensors(uniform);\r\n }\r\n\r\n public bindThematicSensors(uniform: UniformHandle): void {\r\n if (undefined !== this._sensors)\r\n this._sensors.bindTexture(uniform);\r\n }\r\n\r\n public get wantContourLines(): boolean {\r\n const contours = this._target.plan.contours;\r\n return undefined !== contours && contours.displayContours && contours.groups.length > 0;\r\n }\r\n\r\n public bindContourLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._contours)\r\n this._contours.bindContourLUT(uniform);\r\n }\r\n\r\n public bindContourLUTWidth(uniform: UniformHandle): void {\r\n if (!sync(this, uniform)) {\r\n if (undefined === this._contours)\r\n uniform.setUniform1ui(0);\r\n else\r\n this._contours.bindContourLUTWidth(uniform);\r\n }\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n // Note we can't use sync() here because a different texture may have been assigned to the desired texture unit\r\n if (undefined !== this._overrides)\r\n this._overrides.bindLUT(uniform);\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n if (undefined !== this._overrides && !sync(this, uniform))\r\n this._overrides.bindLUTParams(uniform);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides)\r\n this._overrides.bindUniformSymbologyFlags(uniform);\r\n else\r\n uniform.setUniform1f(0);\r\n }\r\n\r\n public bindBatchId(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._batchId);\r\n }\r\n\r\n public bindUniformColorOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Rgb) {\r\n scratchRgb[0] = uo[4] / 255.0;\r\n scratchRgb[1] = uo[5] / 255.0;\r\n scratchRgb[2] = uo[6] / 255.0;\r\n uniform.setUniform3fv(scratchRgb);\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n } else {\r\n uniform.setUniform3fv(noOverrideRgb);\r\n }\r\n }\r\n\r\n public bindUniformTransparencyOverride(uniform: UniformHandle): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n if (undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n if (uo[0] & OvrFlags.Alpha) {\r\n uniform.setUniform1f(uo[7]/255.0);\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n } else {\r\n uniform.setUniform1f(-1.0);\r\n }\r\n }\r\n\r\n public bindUniformNonLocatable(uniform: UniformHandle, ignoreNonLocatable: boolean): void {\r\n if (sync(this, uniform))\r\n return;\r\n\r\n let nonLocatable = 0;\r\n if (!ignoreNonLocatable && undefined !== this._overrides) {\r\n const uo = this._overrides.getUniformOverrides();\r\n nonLocatable = (uo[0] & OvrFlags.NonLocatable) ? 1 : 0;\r\n }\r\n uniform.setUniform1i(nonLocatable);\r\n }\r\n}\r\n"]}
|
|
@@ -25,6 +25,7 @@ export interface BranchStateOptions {
|
|
|
25
25
|
readonly edgeSettings: EdgeSettings;
|
|
26
26
|
/** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */
|
|
27
27
|
readonly iModel?: IModelConnection;
|
|
28
|
+
readonly transformFromIModel?: Transform;
|
|
28
29
|
/** Whether the graphics in this branch are 2d or 3d.
|
|
29
30
|
* Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).
|
|
30
31
|
* Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;
|
|
@@ -39,7 +40,12 @@ export interface BranchStateOptions {
|
|
|
39
40
|
readonly realityModelDisplaySettings?: RealityModelDisplaySettings;
|
|
40
41
|
forceViewCoords?: boolean;
|
|
41
42
|
readonly viewAttachmentId?: Id64String;
|
|
43
|
+
readonly inSectionDrawingAttachment?: boolean;
|
|
42
44
|
groupNodeId?: number;
|
|
45
|
+
/** If true, the view's [DisplayStyleSettings.clipStyle]($common) will be disabled for this branch.
|
|
46
|
+
* No [ClipStyle.insideColor]($common), [ClipStyle.outsideColor]($common), or [ClipStyle.intersectionStyle]($common) will be applied.
|
|
47
|
+
*/
|
|
48
|
+
disableClipStyle?: true;
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
51
|
* Represents a branch node in the scene graph, with associated view flags and transform to be applied to
|
|
@@ -57,6 +63,7 @@ export declare class BranchState {
|
|
|
57
63
|
get textureDrape(): TextureDrape | undefined;
|
|
58
64
|
get edgeSettings(): EdgeSettings;
|
|
59
65
|
get iModel(): IModelConnection | undefined;
|
|
66
|
+
get transformFromIModel(): Transform | undefined;
|
|
60
67
|
get is3d(): boolean;
|
|
61
68
|
get frustumScale(): {
|
|
62
69
|
x: number;
|
|
@@ -66,7 +73,9 @@ export declare class BranchState {
|
|
|
66
73
|
get secondaryClassifiers(): PlanarClassifier[] | undefined;
|
|
67
74
|
get realityModelDisplaySettings(): RealityModelDisplaySettings | undefined;
|
|
68
75
|
get viewAttachmentId(): string | undefined;
|
|
76
|
+
get inSectionDrawingAttachment(): boolean | undefined;
|
|
69
77
|
get groupNodeId(): number | undefined;
|
|
78
|
+
get disableClipStyle(): true | undefined;
|
|
70
79
|
get symbologyOverrides(): FeatureSymbology.Overrides;
|
|
71
80
|
set symbologyOverrides(ovrs: FeatureSymbology.Overrides);
|
|
72
81
|
changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,aAAa,EAAE,UAAU,EAAE,2BAA2B,EAAc,SAAS,EACvI,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAC/C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,kIAAkI;IAClI,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,13 +27,16 @@ class BranchState {
|
|
|
27
27
|
get textureDrape() { return this._opts.textureDrape; }
|
|
28
28
|
get edgeSettings() { return this._opts.edgeSettings; }
|
|
29
29
|
get iModel() { return this._opts.iModel; }
|
|
30
|
+
get transformFromIModel() { return this._opts.transformFromIModel; }
|
|
30
31
|
get is3d() { return this._opts.is3d; }
|
|
31
32
|
get frustumScale() { return this._opts.frustumScale; }
|
|
32
33
|
get appearanceProvider() { return this._opts.appearanceProvider; }
|
|
33
34
|
get secondaryClassifiers() { return this._opts.secondaryClassifiers; }
|
|
34
35
|
get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }
|
|
35
36
|
get viewAttachmentId() { return this._opts.viewAttachmentId; }
|
|
37
|
+
get inSectionDrawingAttachment() { return this._opts.inSectionDrawingAttachment; }
|
|
36
38
|
get groupNodeId() { return this._opts.groupNodeId; }
|
|
39
|
+
get disableClipStyle() { return this._opts.disableClipStyle; }
|
|
37
40
|
get symbologyOverrides() {
|
|
38
41
|
return this._opts.symbologyOverrides;
|
|
39
42
|
}
|
|
@@ -52,6 +55,7 @@ class BranchState {
|
|
|
52
55
|
transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),
|
|
53
56
|
symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,
|
|
54
57
|
iModel: branch.iModel ?? prev.iModel,
|
|
58
|
+
transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,
|
|
55
59
|
planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,
|
|
56
60
|
textureDrape: branch.textureDrape ?? prev.textureDrape,
|
|
57
61
|
clipVolume: branch.clips,
|
|
@@ -64,7 +68,9 @@ class BranchState {
|
|
|
64
68
|
appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),
|
|
65
69
|
realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,
|
|
66
70
|
viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,
|
|
71
|
+
inSectionDrawingAttachment: branch.inSectionDrawingAttachment ?? prev.inSectionDrawingAttachment,
|
|
67
72
|
groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,
|
|
73
|
+
disableClipStyle: branch.disableClipStyle ?? prev.disableClipStyle,
|
|
68
74
|
});
|
|
69
75
|
}
|
|
70
76
|
getFeatureAppearance(overrides, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, GeometryClass, HiddenLine, RealityModelDisplaySettings, RenderMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\n\r\n/** Options used to construct a BranchState.\r\n * @internal\r\n */\r\nexport interface BranchStateOptions {\r\n readonly transform: Transform;\r\n viewFlags: ViewFlags;\r\n symbologyOverrides: FeatureSymbology.Overrides;\r\n clipVolume?: ClipVolume;\r\n readonly planarClassifier?: PlanarClassifier;\r\n readonly secondaryClassifiers?: PlanarClassifier[];\r\n readonly textureDrape?: TextureDrape;\r\n readonly edgeSettings: EdgeSettings;\r\n /** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */\r\n readonly iModel?: IModelConnection;\r\n /** Whether the graphics in this branch are 2d or 3d.\r\n * Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).\r\n * Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;\r\n * in 3d we use the pick buffers.\r\n */\r\n is3d: boolean;\r\n frustumScale?: { x: number, y: number };\r\n readonly appearanceProvider?: FeatureAppearanceProvider;\r\n readonly realityModelDisplaySettings?: RealityModelDisplaySettings;\r\n forceViewCoords?: boolean;\r\n readonly viewAttachmentId?: Id64String;\r\n groupNodeId?: number;\r\n}\r\n\r\n/**\r\n * Represents a branch node in the scene graph, with associated view flags and transform to be applied to\r\n * all sub-nodes of the branch.\r\n * @internal\r\n */\r\nexport class BranchState {\r\n private readonly _opts: BranchStateOptions;\r\n\r\n public get transform() { return this._opts.transform; }\r\n public get viewFlags() { return this._opts.viewFlags; }\r\n public set viewFlags(vf: ViewFlags) { this._opts.viewFlags = vf.normalize(); }\r\n public get clipVolume() { return this._opts.clipVolume; }\r\n public get forceViewCoords(): boolean { return true === this._opts.forceViewCoords; }\r\n public get planarClassifier() { return this._opts.planarClassifier; }\r\n public get textureDrape() { return this._opts.textureDrape; }\r\n public get edgeSettings() { return this._opts.edgeSettings; }\r\n public get iModel() { return this._opts.iModel; }\r\n public get is3d() { return this._opts.is3d; }\r\n public get frustumScale() { return this._opts.frustumScale!; }\r\n public get appearanceProvider() { return this._opts.appearanceProvider; }\r\n public get secondaryClassifiers() { return this._opts.secondaryClassifiers; }\r\n public get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }\r\n public get viewAttachmentId() { return this._opts.viewAttachmentId; }\r\n public get groupNodeId() { return this._opts.groupNodeId; }\r\n\r\n public get symbologyOverrides() {\r\n return this._opts.symbologyOverrides;\r\n }\r\n public set symbologyOverrides(ovrs: FeatureSymbology.Overrides) {\r\n this._opts.symbologyOverrides = ovrs;\r\n }\r\n\r\n public changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this.viewFlags = viewFlags;\r\n this._opts.is3d = is3d;\r\n this.edgeSettings.init(hline);\r\n }\r\n\r\n /** Create a BranchState from a Branch. Any properties not explicitly specified by the new Branch are inherited from the previous BranchState. */\r\n public static fromBranch(prev: BranchState, branch: Branch): BranchState {\r\n return new BranchState({\r\n viewFlags: branch.branch.getViewFlags(prev.viewFlags),\r\n transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),\r\n symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,\r\n iModel: branch.iModel ?? prev.iModel,\r\n planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,\r\n textureDrape: branch.textureDrape ?? prev.textureDrape,\r\n clipVolume: branch.clips,\r\n forceViewCoords: prev.forceViewCoords,\r\n edgeSettings: branch.edgeSettings ?? prev.edgeSettings,\r\n is3d: branch.frustum?.is3d ?? prev.is3d,\r\n frustumScale: branch.frustum?.scale ?? prev.frustumScale,\r\n secondaryClassifiers: branch.secondaryClassifiers?? prev.secondaryClassifiers,\r\n // The branch can augment the symbology overrides. If it doesn't want to, allow its parent to do so, unless this branch supplies its own symbology overrides.\r\n appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),\r\n realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,\r\n viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,\r\n groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,\r\n });\r\n }\r\n\r\n public getFeatureAppearance(overrides: FeatureSymbology.Overrides, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._opts.appearanceProvider)\r\n return this._opts.appearanceProvider.getFeatureAppearance(overrides, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n\r\n return overrides.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n\r\n public static createForDecorations(): BranchState {\r\n const viewFlags = new ViewFlags({ renderMode: RenderMode.SmoothShade, lighting: false, whiteOnWhiteReversal: false });\r\n const symbologyOverrides = new FeatureSymbology.Overrides();\r\n symbologyOverrides.ignoreSubCategory = true;\r\n return new BranchState({\r\n viewFlags,\r\n transform: Transform.createIdentity(),\r\n symbologyOverrides,\r\n edgeSettings: EdgeSettings.create(undefined),\r\n is3d: true,\r\n });\r\n }\r\n\r\n public withViewCoords(): BranchState {\r\n return new BranchState({ ...this._opts, forceViewCoords: true });\r\n }\r\n\r\n public constructor(opts: BranchStateOptions) {\r\n if (!opts.frustumScale)\r\n opts.frustumScale = { x: 1, y: 1 };\r\n\r\n this._opts = opts;\r\n this._opts.viewFlags = this._opts.viewFlags.normalize();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BranchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport {\r\n BatchType, FeatureAppearance, FeatureAppearanceProvider, GeometryClass, HiddenLine, RealityModelDisplaySettings, RenderMode, ViewFlags,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\nimport { EdgeSettings } from \"./EdgeSettings\";\r\n\r\n/** Options used to construct a BranchState.\r\n * @internal\r\n */\r\nexport interface BranchStateOptions {\r\n readonly transform: Transform;\r\n viewFlags: ViewFlags;\r\n symbologyOverrides: FeatureSymbology.Overrides;\r\n clipVolume?: ClipVolume;\r\n readonly planarClassifier?: PlanarClassifier;\r\n readonly secondaryClassifiers?: PlanarClassifier[];\r\n readonly textureDrape?: TextureDrape;\r\n readonly edgeSettings: EdgeSettings;\r\n /** Used chiefly for readPixels() to identify context of picked Ids when graphics from multiple iModels are displayed together. */\r\n readonly iModel?: IModelConnection;\r\n readonly transformFromIModel?: Transform;\r\n /** Whether the graphics in this branch are 2d or 3d.\r\n * Sometimes we draw 3d orthographic views in the context of a 2d view (e.g., sheet view attachments).\r\n * Currently this only affects the logic for discarding surfaces (in 2d, we relay on display priority to enforce draw order between different elements;\r\n * in 3d we use the pick buffers.\r\n */\r\n is3d: boolean;\r\n frustumScale?: { x: number, y: number };\r\n readonly appearanceProvider?: FeatureAppearanceProvider;\r\n readonly realityModelDisplaySettings?: RealityModelDisplaySettings;\r\n forceViewCoords?: boolean;\r\n readonly viewAttachmentId?: Id64String;\r\n readonly inSectionDrawingAttachment?: boolean;\r\n groupNodeId?: number;\r\n /** If true, the view's [DisplayStyleSettings.clipStyle]($common) will be disabled for this branch.\r\n * No [ClipStyle.insideColor]($common), [ClipStyle.outsideColor]($common), or [ClipStyle.intersectionStyle]($common) will be applied.\r\n */\r\n disableClipStyle?: true;\r\n}\r\n\r\n/**\r\n * Represents a branch node in the scene graph, with associated view flags and transform to be applied to\r\n * all sub-nodes of the branch.\r\n * @internal\r\n */\r\nexport class BranchState {\r\n private readonly _opts: BranchStateOptions;\r\n\r\n public get transform() { return this._opts.transform; }\r\n public get viewFlags() { return this._opts.viewFlags; }\r\n public set viewFlags(vf: ViewFlags) { this._opts.viewFlags = vf.normalize(); }\r\n public get clipVolume() { return this._opts.clipVolume; }\r\n public get forceViewCoords(): boolean { return true === this._opts.forceViewCoords; }\r\n public get planarClassifier() { return this._opts.planarClassifier; }\r\n public get textureDrape() { return this._opts.textureDrape; }\r\n public get edgeSettings() { return this._opts.edgeSettings; }\r\n public get iModel() { return this._opts.iModel; }\r\n public get transformFromIModel() { return this._opts.transformFromIModel; }\r\n public get is3d() { return this._opts.is3d; }\r\n public get frustumScale() { return this._opts.frustumScale!; }\r\n public get appearanceProvider() { return this._opts.appearanceProvider; }\r\n public get secondaryClassifiers() { return this._opts.secondaryClassifiers; }\r\n public get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }\r\n public get viewAttachmentId() { return this._opts.viewAttachmentId; }\r\n public get inSectionDrawingAttachment() { return this._opts.inSectionDrawingAttachment; }\r\n public get groupNodeId() { return this._opts.groupNodeId; }\r\n public get disableClipStyle() { return this._opts.disableClipStyle;}\r\n\r\n public get symbologyOverrides() {\r\n return this._opts.symbologyOverrides;\r\n }\r\n public set symbologyOverrides(ovrs: FeatureSymbology.Overrides) {\r\n this._opts.symbologyOverrides = ovrs;\r\n }\r\n\r\n public changeRenderPlan(viewFlags: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this.viewFlags = viewFlags;\r\n this._opts.is3d = is3d;\r\n this.edgeSettings.init(hline);\r\n }\r\n\r\n /** Create a BranchState from a Branch. Any properties not explicitly specified by the new Branch are inherited from the previous BranchState. */\r\n public static fromBranch(prev: BranchState, branch: Branch): BranchState {\r\n return new BranchState({\r\n viewFlags: branch.branch.getViewFlags(prev.viewFlags),\r\n transform: prev.transform.multiplyTransformTransform(branch.localToWorldTransform),\r\n symbologyOverrides: branch.branch.symbologyOverrides ?? prev.symbologyOverrides,\r\n iModel: branch.iModel ?? prev.iModel,\r\n transformFromIModel: branch.transformFromExternalIModel ?? prev.transformFromIModel,\r\n planarClassifier: (undefined !== branch.planarClassifier && undefined !== branch.planarClassifier.texture) ? branch.planarClassifier : prev.planarClassifier,\r\n textureDrape: branch.textureDrape ?? prev.textureDrape,\r\n clipVolume: branch.clips,\r\n forceViewCoords: prev.forceViewCoords,\r\n edgeSettings: branch.edgeSettings ?? prev.edgeSettings,\r\n is3d: branch.frustum?.is3d ?? prev.is3d,\r\n frustumScale: branch.frustum?.scale ?? prev.frustumScale,\r\n secondaryClassifiers: branch.secondaryClassifiers?? prev.secondaryClassifiers,\r\n // The branch can augment the symbology overrides. If it doesn't want to, allow its parent to do so, unless this branch supplies its own symbology overrides.\r\n appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),\r\n realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,\r\n viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,\r\n inSectionDrawingAttachment: branch.inSectionDrawingAttachment ?? prev.inSectionDrawingAttachment,\r\n groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,\r\n disableClipStyle: branch.disableClipStyle ?? prev.disableClipStyle,\r\n });\r\n }\r\n\r\n public getFeatureAppearance(overrides: FeatureSymbology.Overrides, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this._opts.appearanceProvider)\r\n return this._opts.appearanceProvider.getFeatureAppearance(overrides, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n\r\n return overrides.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n }\r\n\r\n public static createForDecorations(): BranchState {\r\n const viewFlags = new ViewFlags({ renderMode: RenderMode.SmoothShade, lighting: false, whiteOnWhiteReversal: false });\r\n const symbologyOverrides = new FeatureSymbology.Overrides();\r\n symbologyOverrides.ignoreSubCategory = true;\r\n return new BranchState({\r\n viewFlags,\r\n transform: Transform.createIdentity(),\r\n symbologyOverrides,\r\n edgeSettings: EdgeSettings.create(undefined),\r\n is3d: true,\r\n });\r\n }\r\n\r\n public withViewCoords(): BranchState {\r\n return new BranchState({ ...this._opts, forceViewCoords: true });\r\n }\r\n\r\n public constructor(opts: BranchStateOptions) {\r\n if (!opts.frustumScale)\r\n opts.frustumScale = { x: 1, y: 1 };\r\n\r\n this._opts = opts;\r\n this._opts.viewFlags = this._opts.viewFlags.normalize();\r\n }\r\n}\r\n"]}
|
|
@@ -57,5 +57,6 @@ export declare class BranchUniforms {
|
|
|
57
57
|
bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void;
|
|
58
58
|
bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void;
|
|
59
59
|
private update;
|
|
60
|
+
private setClipStyle;
|
|
60
61
|
}
|
|
61
62
|
//# sourceMappingURL=BranchUniforms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA2B,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAgB,SAAS,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAY,QAAQ,EAA2B,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAgB,SAAS,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC;;GAEG;AACH,qBAAa,cAAc;IACzB,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,gBAAgB,CAAS;IAG1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,SAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAGjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAU;IAGzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAGlD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAGtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA8B;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8B;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEnD,IAAW,KAAK,IAAI,WAAW,CAAwB;gBAEpC,MAAM,EAAE,MAAM;IAQ1B,gBAAgB,IAAI,UAAU;IAI9B,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc;IAInE,IAAW,eAAe,IAAI,QAAQ,CAErC;IAED,IAAW,GAAG,IAAI,WAAW,CAE5B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAahC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAUnC,GAAG,IAAI,IAAI;IASX,YAAY,IAAI,IAAI;IAQpB,WAAW,IAAI,IAAI;IAMnB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IAI5F,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAIpE,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,GAAG,IAAI;IAI/D,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IAK9F,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IAKxG,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO;IAK7F,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO;IAKpG,OAAO,CAAC,MAAM;IA+Ed,OAAO,CAAC,YAAY;CASrB"}
|
|
@@ -16,6 +16,7 @@ const Matrix_1 = require("./Matrix");
|
|
|
16
16
|
const RenderCommands_1 = require("./RenderCommands");
|
|
17
17
|
const Sync_1 = require("./Sync");
|
|
18
18
|
const ClipStack_1 = require("./ClipStack");
|
|
19
|
+
const IModelApp_1 = require("../../IModelApp");
|
|
19
20
|
function equalXYZs(a, b) {
|
|
20
21
|
if (a === b)
|
|
21
22
|
return true;
|
|
@@ -72,6 +73,7 @@ class BranchUniforms {
|
|
|
72
73
|
pushBranch(branch) {
|
|
73
74
|
(0, Sync_1.desync)(this);
|
|
74
75
|
this._stack.pushBranch(branch);
|
|
76
|
+
this.setClipStyle(this.top.disableClipStyle);
|
|
75
77
|
if (this.top.clipVolume)
|
|
76
78
|
this.clipStack.push(this.top.clipVolume);
|
|
77
79
|
if (branch.branch.realityModelDisplaySettings)
|
|
@@ -90,6 +92,7 @@ class BranchUniforms {
|
|
|
90
92
|
if (this.top.clipVolume)
|
|
91
93
|
this.clipStack.pop();
|
|
92
94
|
this._stack.pop();
|
|
95
|
+
this.setClipStyle(this.top.disableClipStyle);
|
|
93
96
|
}
|
|
94
97
|
pushViewClip() {
|
|
95
98
|
(0, core_bentley_1.assert)(!this._viewClipEnabled);
|
|
@@ -187,7 +190,7 @@ class BranchUniforms {
|
|
|
187
190
|
this._m32.initFromTransform(modelMatrix);
|
|
188
191
|
this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);
|
|
189
192
|
}
|
|
190
|
-
else if (undefined !== geometry.asSurface?.mesh.constantLodVParams) {
|
|
193
|
+
else if (undefined !== geometry.asSurface?.mesh.constantLodVParams || this._target.uniforms.batch.wantContourLines) {
|
|
191
194
|
this._m32.initFromTransform(modelMatrix);
|
|
192
195
|
}
|
|
193
196
|
core_geometry_1.Matrix4d.createTransform(mv, this._mv);
|
|
@@ -199,6 +202,16 @@ class BranchUniforms {
|
|
|
199
202
|
}
|
|
200
203
|
return true;
|
|
201
204
|
}
|
|
205
|
+
// set the clip style based on disableClipStyle
|
|
206
|
+
setClipStyle(disableClipStyle) {
|
|
207
|
+
const vp = IModelApp_1.IModelApp.viewManager.selectedView;
|
|
208
|
+
if (vp) {
|
|
209
|
+
const style = vp.view.displayStyle.settings.clipStyle;
|
|
210
|
+
this.clipStack.insideColor.alpha = disableClipStyle ? 0 : (style.insideColor ? 1 : 0);
|
|
211
|
+
this.clipStack.outsideColor.alpha = disableClipStyle ? 0 : (style.outsideColor ? 1 : 0);
|
|
212
|
+
this.clipStack.intersectionStyle.alpha = disableClipStyle ? 0 : (style.intersectionStyle ? style.intersectionStyle.width : 0);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
202
215
|
}
|
|
203
216
|
exports.BranchUniforms = BranchUniforms;
|
|
204
217
|
//# sourceMappingURL=BranchUniforms.js.map
|