@itwin/core-frontend 4.10.0-dev.30 → 4.10.0-dev.32
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 +6 -1
- package/lib/cjs/AccuDraw.js +2 -2
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +7 -2
- 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/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.d.ts +3 -3
- package/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +9 -8
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/cjs/HitDetail.d.ts +36 -7
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +11 -3
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js +1 -2
- package/lib/cjs/LinePlaneIntersect.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/SheetViewState.d.ts +3 -3
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +18 -5
- package/lib/cjs/SheetViewState.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 +16 -7
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +4 -4
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +1 -0
- 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.js +1 -2
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/gltf/GltfParser.js +1 -2
- package/lib/cjs/common/gltf/GltfParser.js.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/ParseImdlDocument.js +6 -7
- package/lib/cjs/common/imdl/ParseImdlDocument.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/MeshPrimitives.js +3 -3
- package/lib/cjs/common/internal/render/MeshPrimitives.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.js +1 -2
- 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/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/BasicUnitsProvider.js +2 -2
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.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 +3 -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 +9 -7
- package/lib/cjs/render/Pixel.d.ts.map +1 -1
- package/lib/cjs/render/Pixel.js +20 -5
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js +3 -3
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts.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/BranchState.d.ts +2 -0
- package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +2 -0
- package/lib/cjs/render/webgl/BranchState.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/DrawCommand.js +3 -3
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +2 -2
- 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/Graphic.d.ts +3 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +4 -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 +2 -2
- 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/RenderFlags.js +2 -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 +7 -4
- 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/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/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/glsl/AmbientOcclusion.js +1 -2
- 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 +1 -2
- package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +1 -2
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -2
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -2
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +2 -2
- 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 +1 -2
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -2
- 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 +1 -2
- package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Contours.js +1 -2
- package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -2
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -2
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -5
- 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 +4 -5
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -2
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +2 -3
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +15 -15
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +6 -6
- 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 +1 -2
- 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 +5 -5
- 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 +2 -3
- 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 +5 -5
- 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 +1 -2
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -2
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -2
- package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +3 -3
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +6 -6
- 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 +2 -2
- 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 +1 -2
- 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 +2 -2
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js +4 -4
- 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 +3 -4
- 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.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.js +2 -2
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +1 -2
- 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 +6 -6
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +2 -2
- 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/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.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.js +2 -2
- package/lib/cjs/tile/TileAdmin.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/ViewFlagOverrides.js +1 -2
- package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +4 -5
- package/lib/cjs/tile/map/CesiumTerrainProvider.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/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/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/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/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.js +2 -2
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +7 -2
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.d.ts +3 -3
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +9 -8
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/esm/HitDetail.d.ts +36 -7
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +11 -3
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.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/SheetViewState.d.ts +3 -3
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +18 -5
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/ViewState.d.ts +16 -7
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +4 -4
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +1 -0
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +3 -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 +9 -7
- package/lib/esm/render/Pixel.d.ts.map +1 -1
- package/lib/esm/render/Pixel.js +20 -5
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.d.ts +2 -0
- package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +2 -0
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +3 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +4 -0
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +4 -1
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts.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/request/Request.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.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/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.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/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/MapTileTree.d.ts.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/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 +18 -18
|
@@ -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"]}
|
|
@@ -40,6 +40,7 @@ export interface BranchStateOptions {
|
|
|
40
40
|
readonly realityModelDisplaySettings?: RealityModelDisplaySettings;
|
|
41
41
|
forceViewCoords?: boolean;
|
|
42
42
|
readonly viewAttachmentId?: Id64String;
|
|
43
|
+
readonly inSectionDrawingAttachment?: boolean;
|
|
43
44
|
groupNodeId?: number;
|
|
44
45
|
/** If true, the view's [DisplayStyleSettings.clipStyle]($common) will be disabled for this branch.
|
|
45
46
|
* No [ClipStyle.insideColor]($common), [ClipStyle.outsideColor]($common), or [ClipStyle.intersectionStyle]($common) will be applied.
|
|
@@ -72,6 +73,7 @@ export declare class BranchState {
|
|
|
72
73
|
get secondaryClassifiers(): PlanarClassifier[] | undefined;
|
|
73
74
|
get realityModelDisplaySettings(): RealityModelDisplaySettings | undefined;
|
|
74
75
|
get viewAttachmentId(): string | undefined;
|
|
76
|
+
get inSectionDrawingAttachment(): boolean | undefined;
|
|
75
77
|
get groupNodeId(): number | undefined;
|
|
76
78
|
get disableClipStyle(): true | undefined;
|
|
77
79
|
get symbologyOverrides(): FeatureSymbology.Overrides;
|
|
@@ -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,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IACzC;;;;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;IACrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAE3C,IAAW,SAAS,cAAmC;IACvD,IAAW,SAAS,IACK,SAAS,CADqB;IACvD,IAAW,SAAS,CAAC,EAAE,EAAE,SAAS,EAA4C;IAC9E,IAAW,UAAU,2BAAoC;IACzD,IAAW,eAAe,IAAI,OAAO,CAAgD;IACrF,IAAW,gBAAgB,iCAA0C;IACrE,IAAW,YAAY,6BAAsC;IAC7D,IAAW,YAAY,iBAAsC;IAC7D,IAAW,MAAM,iCAAgC;IACjD,IAAW,mBAAmB,0BAA6C;IAC3E,IAAW,IAAI,YAA8B;IAC7C,IAAW,YAAY
|
|
1
|
+
{"version":3,"file":"BranchState.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchState.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ class BranchState {
|
|
|
34
34
|
get secondaryClassifiers() { return this._opts.secondaryClassifiers; }
|
|
35
35
|
get realityModelDisplaySettings() { return this._opts.realityModelDisplaySettings; }
|
|
36
36
|
get viewAttachmentId() { return this._opts.viewAttachmentId; }
|
|
37
|
+
get inSectionDrawingAttachment() { return this._opts.inSectionDrawingAttachment; }
|
|
37
38
|
get groupNodeId() { return this._opts.groupNodeId; }
|
|
38
39
|
get disableClipStyle() { return this._opts.disableClipStyle; }
|
|
39
40
|
get symbologyOverrides() {
|
|
@@ -67,6 +68,7 @@ class BranchState {
|
|
|
67
68
|
appearanceProvider: branch.appearanceProvider ?? (branch.branch.symbologyOverrides ? undefined : prev.appearanceProvider),
|
|
68
69
|
realityModelDisplaySettings: branch.branch.realityModelDisplaySettings ?? prev.realityModelDisplaySettings,
|
|
69
70
|
viewAttachmentId: branch.viewAttachmentId ?? prev.viewAttachmentId,
|
|
71
|
+
inSectionDrawingAttachment: branch.inSectionDrawingAttachment ?? prev.inSectionDrawingAttachment,
|
|
70
72
|
groupNodeId: branch.branch.groupNodeId ?? prev.groupNodeId,
|
|
71
73
|
disableClipStyle: branch.disableClipStyle ?? prev.disableClipStyle,
|
|
72
74
|
});
|
|
@@ -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 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 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 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 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"]}
|
|
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"]}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* @module WebGL
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
10
|
+
exports.ClippingProgram = void 0;
|
|
11
|
+
exports.createClippingProgram = createClippingProgram;
|
|
11
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
13
|
const System_1 = require("./System");
|
|
13
14
|
const Clipping_1 = require("./glsl/Clipping");
|
|
@@ -39,5 +40,4 @@ exports.ClippingProgram = ClippingProgram;
|
|
|
39
40
|
function createClippingProgram(builder) {
|
|
40
41
|
return new ClippingProgram(builder);
|
|
41
42
|
}
|
|
42
|
-
exports.createClippingProgram = createClippingProgram;
|
|
43
43
|
//# sourceMappingURL=ClippingProgram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAuCH,sDAEC;AAvCD,sDAA8C;AAG9C,qCAAkC;AAClC,8CAA8C;AAE9C,SAAS,qBAAqB,CAAC,GAAmB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAa,eAAe;IAGnB,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,kCAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAED,YAAmB,GAAmB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAnBD,0CAmBC;AAED,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { ProgramBuilder } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { addClipping } from \"./glsl/Clipping\";\r\n\r\nfunction createClippingBuilder(src: ProgramBuilder): ProgramBuilder {\r\n const builder = src.clone();\r\n builder.vert.headerComment += \"-Clip\";\r\n builder.frag.headerComment += \"-Clip\";\r\n addClipping(builder);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport class ClippingProgram {\r\n protected _program?: ShaderProgram;\r\n\r\n public compile(): boolean {\r\n return undefined === this._program || CompileStatus.Success === this._program.compile();\r\n }\r\n\r\n public constructor(src: ProgramBuilder) {\r\n const builder = createClippingBuilder(src);\r\n this._program = builder.buildProgram(System.instance.context);\r\n }\r\n\r\n public getProgram(numPlanes: number): ShaderProgram | undefined {\r\n return numPlanes > 0 ? this._program : undefined;\r\n }\r\n\r\n public dispose(): void {\r\n this._program = dispose(this._program);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\r\n return new ClippingProgram(builder);\r\n}\r\n"]}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* @module WebGL
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
10
|
+
exports.PrimitiveCommand = exports.PopClipCommand = exports.PushClipCommand = exports.PopBranchCommand = exports.PushBranchCommand = exports.PushStateCommand = exports.PushBatchCommand = exports.PopBatchCommand = exports.DrawOpCode = exports.DrawParams = exports.ShaderProgramParams = void 0;
|
|
11
|
+
exports.extractFlashedVolumeClassifierCommands = extractFlashedVolumeClassifierCommands;
|
|
12
|
+
exports.extractHilitedVolumeClassifierCommands = extractHilitedVolumeClassifierCommands;
|
|
11
13
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
14
|
const core_common_1 = require("@itwin/core-common");
|
|
13
15
|
const FeatureOverrides_1 = require("./FeatureOverrides");
|
|
@@ -222,7 +224,6 @@ function extractFlashedVolumeClassifierCommands(flashedId, cmds, numCmdsPerClass
|
|
|
222
224
|
}
|
|
223
225
|
return undefined;
|
|
224
226
|
}
|
|
225
|
-
exports.extractFlashedVolumeClassifierCommands = extractFlashedVolumeClassifierCommands;
|
|
226
227
|
const scratchFeature = core_common_1.PackedFeature.create();
|
|
227
228
|
/** @internal */
|
|
228
229
|
function extractHilitedVolumeClassifierCommands(hilites, cmds) {
|
|
@@ -264,5 +265,4 @@ function extractHilitedVolumeClassifierCommands(hilites, cmds) {
|
|
|
264
265
|
}
|
|
265
266
|
return result;
|
|
266
267
|
}
|
|
267
|
-
exports.extractHilitedVolumeClassifierCommands = extractHilitedVolumeClassifierCommands;
|
|
268
268
|
//# sourceMappingURL=DrawCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { PackedFeature } from \"@itwin/core-common\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { EnableAtmosphere, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() {\r\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\r\n }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n const enableAtmosphere = target.wantAtmosphere ? EnableAtmosphere.Yes : EnableAtmosphere.No;\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType, enableAtmosphere);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nconst scratchFeature = PackedFeature.create();\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId, scratchFeature);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(Id64.fromUint32PairObject(feature.modelId))))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { PackedFeature } from \"@itwin/core-common\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { EnableAtmosphere, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() {\r\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\r\n }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n const enableAtmosphere = target.wantAtmosphere ? EnableAtmosphere.Yes : EnableAtmosphere.No;\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType, enableAtmosphere);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nconst scratchFeature = PackedFeature.create();\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId, scratchFeature);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(Id64.fromUint32PairObject(feature.modelId))))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* @module WebGL
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.FeatureOverrides =
|
|
10
|
+
exports.FeatureOverrides = void 0;
|
|
11
|
+
exports.isFeatureHilited = isFeatureHilited;
|
|
11
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
13
|
const core_common_1 = require("@itwin/core-common");
|
|
13
14
|
const LineCode_1 = require("./LineCode");
|
|
@@ -25,7 +26,6 @@ function isFeatureHilited(feature, hilites, isModelHilited) {
|
|
|
25
26
|
return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);
|
|
26
27
|
return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));
|
|
27
28
|
}
|
|
28
|
-
exports.isFeatureHilited = isFeatureHilited;
|
|
29
29
|
const scratchPackedFeature = core_common_1.PackedFeature.createWithIndex();
|
|
30
30
|
/** @internal */
|
|
31
31
|
class FeatureOverrides {
|