@itwin/core-frontend 4.0.0-dev.23 → 4.0.0-dev.28
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 +43 -36
- package/lib/cjs/AccuDraw.js +1 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +9 -11
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js +8 -12
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +4 -6
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +2 -3
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FlashSettings.js +3 -4
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/GeoServices.js +7 -9
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/IModelApp.js +19 -21
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +3 -4
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/ModelState.js +2 -3
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.js +4 -7
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -2
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.js +15 -23
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Tiles.js +2 -2
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/ViewContext.js +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +4 -5
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +5 -5
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewState.js +17 -24
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.js +22 -32
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.js +1 -1
- package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +1 -2
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +7 -9
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.js +1 -2
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +2 -3
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +7 -10
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js +1 -1
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js +1 -2
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js +2 -4
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js +6 -9
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +6 -7
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +2 -3
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js +1 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +9 -10
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/EDL.js +17 -21
- package/lib/cjs/render/webgl/EDL.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/Graphic.js +3 -5
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +7 -10
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js +1 -2
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +10 -15
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +5 -8
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +7 -8
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +7 -9
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +1 -2
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +1 -2
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.js +12 -16
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +9 -14
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetGraphics.js +1 -2
- package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +1 -2
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js +2 -4
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +6 -9
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +4 -5
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +1 -2
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +1 -2
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +3 -3
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js +61 -75
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +2 -3
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js +6 -11
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +5 -9
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +13 -17
- package/lib/cjs/tile/ImdlReader.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 +4 -5
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +22 -32
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +12 -19
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js +3 -5
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +2 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +22 -27
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +3 -6
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -3
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +5 -6
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +6 -8
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +6 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +13 -18
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +4 -5
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +17 -25
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +2 -4
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +2 -3
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +1 -2
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +2 -3
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +2 -4
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +3 -3
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BriefcaseConnection.js +9 -11
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/DisplayStyleState.js +8 -12
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +4 -6
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +2 -3
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FlashSettings.js +3 -4
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/GeoServices.js +7 -9
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/IModelApp.js +19 -21
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +3 -4
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/ModelState.js +2 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.js +4 -7
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -2
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/SheetViewState.js +15 -23
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Tiles.js +2 -2
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/ViewContext.js +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +4 -5
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +5 -5
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewState.js +17 -24
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.js +22 -32
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/extension/ExtensionImpl.js +1 -1
- package/lib/esm/extension/ExtensionImpl.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +1 -2
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +7 -9
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.js +1 -2
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +2 -3
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +7 -10
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderPlan.js +1 -1
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderSystem.js +1 -2
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js +2 -4
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/AuxChannelTable.js +6 -9
- package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +6 -7
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +2 -3
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js +1 -1
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +9 -10
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/EDL.js +17 -21
- package/lib/esm/render/webgl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +2 -2
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +3 -5
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +2 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +7 -10
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.js +1 -2
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +10 -15
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +5 -8
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +7 -8
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +7 -9
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +1 -2
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +1 -2
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.js +12 -16
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +9 -14
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetGraphics.js +1 -2
- package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +1 -2
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js +2 -4
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +6 -9
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +4 -5
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -2
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +1 -2
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +3 -3
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/GltfReader.js +61 -75
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js +2 -3
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js +6 -11
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +5 -9
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js +13 -17
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +2 -2
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +4 -5
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +22 -32
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +12 -19
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.js +3 -5
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +2 -2
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/Tile.js +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js +22 -27
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +3 -6
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -3
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +5 -6
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +6 -8
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +6 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +13 -18
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +4 -5
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +17 -25
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js +2 -4
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +2 -3
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +1 -2
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +2 -3
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +2 -4
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +3 -3
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\nimport { Decorations } from \"../Decorations\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\nimport { AnimationBranchState } from \"../GraphicBranch\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchState } from \"./BranchState\";\nimport {\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\n} from \"./DrawCommand\";\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LayerCommandLists } from \"./LayerCommands\";\nimport { MeshGraphic } from \"./Mesh\";\nimport { Primitive } from \"./Primitive\";\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { Target } from \"./Target\";\nimport { ClipVolume } from \"./ClipVolume\";\n\n/** A list of DrawCommands to be rendered, ordered by render pass.\n * @internal\n */\nexport class RenderCommands implements Iterable<DrawCommands> {\n private _frustumPlanes?: FrustumPlanes;\n private readonly _scratchFrustum = new Frustum();\n private readonly _scratchRange = new Range3d();\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\n private _target: Target;\n private _stack: BranchStack; // refers to the Target's BranchStack\n private _batchState: BatchState; // refers to the Target's BatchState\n private _forcedRenderPass: RenderPass = RenderPass.None;\n private _addLayersAsNormalGraphics = false;\n private _opaqueOverrides = false;\n private _translucentOverrides = false;\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\n private readonly _layers: LayerCommandLists;\n\n public get target(): Target { return this._target; }\n\n public [Symbol.iterator](): Iterator<DrawCommands> {\n return this._commands[Symbol.iterator]();\n }\n\n public get isEmpty(): boolean {\n for (const commands of this._commands)\n if (0 < commands.length)\n return false;\n\n return true;\n }\n\n public get isDrawingLayers() {\n switch (this._forcedRenderPass) {\n case RenderPass.OpaqueLayers:\n case RenderPass.TranslucentLayers:\n case RenderPass.OverlayLayers:\n return true;\n default:\n return false;\n }\n }\n\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\n public get compositeFlags(): CompositeFlags {\n let flags = CompositeFlags.None;\n if (this.hasCommands(RenderPass.Translucent))\n flags |= CompositeFlags.Translucent;\n\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\n flags |= CompositeFlags.Hilite;\n\n if (this.target.wantAmbientOcclusion)\n flags |= CompositeFlags.AmbientOcclusion;\n\n return flags;\n }\n\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\n\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\n\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this._layers = new LayerCommandLists(this);\n\n for (let i = 0; i < RenderPass.COUNT; ++i)\n this._commands[i] = [];\n }\n\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this.clear();\n }\n\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\n assert(this._forcedRenderPass === RenderPass.None);\n assert(!this._addLayersAsNormalGraphics);\n\n this._addLayersAsNormalGraphics = true;\n this.addGraphics(scene);\n this._addLayersAsNormalGraphics = false;\n }\n\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n /** Add backgroundMap graphics to their own render pass. */\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.BackgroundMap;\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n /** Add overlay graphics to the world overlay pass */\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.WorldOverlay;\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n for (const entry of dec) {\n (entry as Graphic).addCommands(this);\n }\n\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addWorldDecorations(decs: GraphicList): void {\n const world = this.target.getWorldDecorations(decs);\n this.pushAndPopBranch(world, () => {\n for (const entry of world.branch.entries) {\n (entry as Graphic).addCommands(this);\n }\n });\n }\n\n private addPickableDecorations(decs: Decorations): void {\n if (undefined !== decs.normal) {\n for (const normal of decs.normal) {\n const gf = normal as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n if (undefined !== decs.world) {\n const world = this.target.getWorldDecorations(decs.world);\n this.pushAndPopBranch(world, () => {\n for (const gf of world.branch.entries) {\n if ((gf as Graphic).isPickable)\n (gf as Graphic).addCommands(this);\n }\n });\n }\n }\n\n public addBackground(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.Background;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addSkyBox(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.SkyBox;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\n if (undefined === pass)\n pass = command.getPass(this.target);\n\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\n return;\n\n if (RenderPass.None !== this._forcedRenderPass) {\n // Add the command to the forced render pass (background).\n this.getCommands(this._forcedRenderPass).push(command);\n return;\n }\n\n if (!command.hasFeatures) {\n // Draw in general opaque pass so they are not in pick data.\n switch (pass) {\n case \"opaque-linear\":\n case \"opaque-planar\":\n pass = \"opaque\";\n break;\n case \"opaque-planar-translucent\":\n pass = \"opaque-translucent\";\n break;\n }\n }\n\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\n\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n pass = \"opaque-planar\";\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n pass = \"opaque\";\n break;\n default:\n pass = \"opaque-linear\";\n break;\n }\n }\n\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\n let opaquePass: RenderPass;\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\n opaquePass = Pass.toOpaquePass(pass);\n } else {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n opaquePass = RenderPass.OpaquePlanar;\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n opaquePass = RenderPass.OpaqueGeneral;\n break;\n default:\n opaquePass = RenderPass.OpaqueLinear;\n break;\n }\n }\n\n this.getCommands(opaquePass).push(command);\n }\n\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\n this.getCommands(RenderPass.Translucent).push(command);\n\n if (!Pass.rendersOpaqueAndTranslucent(pass))\n this.getCommands(Pass.toRenderPass(pass)).push(command);\n }\n\n public getCommands(pass: RenderPass): DrawCommands {\n let idx = pass as number;\n assert(idx < this._commands.length);\n if (idx >= this._commands.length)\n idx -= 1;\n\n return this._commands[idx];\n }\n\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\n const idx = pass as number;\n this._commands[idx].splice(0);\n this._commands[idx] = cmds;\n }\n\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\n this.pushAndPopBranchForPass(pass, branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\n });\n }\n\n public processLayers(container: LayerContainer): void {\n assert(RenderPass.None === this._forcedRenderPass);\n if (RenderPass.None !== this._forcedRenderPass)\n return;\n\n this._forcedRenderPass = container.renderPass;\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addLayerCommands(layer: Layer): void {\n if (this._addLayersAsNormalGraphics) {\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\n assert(this._forcedRenderPass === RenderPass.None);\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\n layer.graphic.addCommands(this);\n this._forcedRenderPass = RenderPass.None;\n return;\n }\n\n assert(this.isDrawingLayers);\n if (!this.isDrawingLayers)\n return;\n\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\n this._layers.currentLayer = layer;\n layer.graphic.addCommands(this);\n\n const cmds = this.getCommands(this._forcedRenderPass);\n this._layers.addCommands(cmds);\n\n cmds.length = 0;\n this._layers.currentLayer = undefined;\n }\n\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\n return;\n\n const prevPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.None;\n\n graphic.addHiliteCommands(this, pass);\n\n this._forcedRenderPass = prevPass;\n }\n\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\n const animId = branch.branch.animationId;\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\n }\n\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\n assert(!this.isDrawingLayers);\n\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n assert(RenderPass.None !== pass);\n\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n const cmds = this.getCommands(pass);\n const clip = animState?.clip as ClipVolume | undefined;\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\n if (pushClip)\n cmds.push(pushClip);\n\n const push = new PushBranchCommand(branch);\n cmds.push(push);\n\n func();\n\n this._stack.pop();\n if (cmds[cmds.length - 1] === push) {\n cmds.pop();\n if (pushClip)\n cmds.pop();\n } else {\n cmds.push(PopBranchCommand.instance);\n if (pushClip)\n cmds.push(PopClipCommand.instance);\n }\n }\n\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n if (this.isDrawingLayers) {\n this._commands[RenderPass.Hilite].push(push);\n this._layers.pushAndPop(push, pop, func);\n\n const cmds = this._commands[RenderPass.Hilite];\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n return;\n }\n\n if (RenderPass.None === this._forcedRenderPass) {\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\n for (const cmds of this._commands)\n cmds.push(push);\n } else {\n // May want to add hilite commands as well - add the push command to that pass.\n this._commands[this._forcedRenderPass].push(push);\n this._commands[RenderPass.Hilite].push(push);\n }\n\n func();\n\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\n if (RenderPass.None === this._forcedRenderPass) {\n for (const cmds of this._commands) {\n assert(0 < cmds.length);\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n } else {\n assert(0 < this._commands[this._forcedRenderPass].length);\n assert(0 < this._commands[RenderPass.Hilite].length);\n\n let cmds = this._commands[this._forcedRenderPass];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n cmds = this._commands[RenderPass.Hilite];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n }\n\n public pushAndPopBranch(branch: Branch, func: () => void): void {\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n if (animState?.clip)\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\n else\n this._pushAndPopBranch(branch, func);\n }\n\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\n\n this._stack.pop();\n }\n\n public pushAndPopState(state: BranchState, func: () => void): void {\n this._stack.pushState(state);\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\n this._stack.pop();\n }\n\n public clear(): void {\n assert(this._batchState.isEmpty);\n this._clearCommands();\n }\n\n private _clearCommands(): void {\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\n this._layers.clear();\n }\n\n private initForPickOverlayDecorations(overlays: GraphicList): void {\n for (const overlay of overlays) {\n const gf = overlay as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\n this._clearCommands();\n\n this._addTranslucentAsOpaque = true;\n\n for (const sceneGf of sceneOverlays)\n (sceneGf as Graphic).addCommands(this);\n\n if (worldOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState, () => {\n this.initForPickOverlayDecorations(worldOverlayDecorations);\n });\n }\n\n if (viewOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\n this.initForPickOverlayDecorations(viewOverlayDecorations);\n });\n }\n\n this._addTranslucentAsOpaque = false;\n }\n\n public initForReadPixels(gfx: TargetGraphics): void {\n this.clear();\n\n // Set flag to force translucent geometry to be put into the opaque pass.\n this._addTranslucentAsOpaque = true;\n\n // Add the scene graphics.\n this.addGraphics(gfx.foreground);\n\n // Also add any pickable decorations.\n if (undefined !== gfx.decorations)\n this.addPickableDecorations(gfx.decorations);\n\n // Also background map is pickable\n this.addBackgroundMapGraphics(gfx.background);\n\n this._addTranslucentAsOpaque = false;\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public initForRender(gfx: TargetGraphics): void {\n this.clear();\n\n this.addGraphics(gfx.foreground);\n this.addBackgroundMapGraphics(gfx.background);\n this.addOverlayGraphics(gfx.overlays);\n\n const dynamics = gfx.dynamics;\n if (dynamics && dynamics.length > 0)\n this.addDecorations(dynamics);\n\n const dec = gfx.decorations;\n if (undefined !== dec) {\n this.addBackground(dec.viewBackground as Graphic);\n\n this.addSkyBox(dec.skyBox as Graphic);\n\n if (undefined !== dec.normal && 0 < dec.normal.length)\n this.addGraphics(dec.normal);\n\n if (undefined !== dec.world && 0 < dec.world.length)\n this.addWorldDecorations(dec.world);\n\n this.pushAndPopState(this.target.decorationsState, () => {\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\n\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\n });\n }\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public addPrimitive(prim: Primitive): void {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\n // return;\n\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\n if (\"classification\" === prim.getPass(this.target)) {\n const geom = prim.cachedGeometry;\n geom.computeRange(this._scratchRange);\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const command = new PrimitiveCommand(prim);\n this.addPrimitiveCommand(command);\n\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\n const vf: ViewFlags = this.target.currentViewFlags;\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\n this.getCommands(RenderPass.HiddenEdge).push(command);\n }\n }\n\n public addBranch(branch: Branch): void {\n this.pushAndPopBranch(branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n });\n }\n\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\n let pass = RenderPass.Hilite;\n if (batch.graphic instanceof MeshGraphic) {\n const mg = batch.graphic;\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (batch.graphic instanceof GraphicsArray) {\n const ga = batch.graphic;\n if (ga.graphics[0] instanceof MeshGraphic) {\n const mg = ga.graphics[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (ga.graphics[0] instanceof Branch) {\n const b = ga.graphics[0];\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\n const mg = b.branch.entries[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n }\n }\n }\n return pass;\n }\n\n public addBatch(batch: Batch): void {\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\n return;\n\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\n // They may draw during both, or neither.\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\n // assert(RenderPass.None === this._forcedRenderPass);\n assert(!this._opaqueOverrides && !this._translucentOverrides);\n assert(undefined === this._curBatch);\n\n // If all features are overridden to be invisible, draw no graphics in this batch\n const overrides = batch.getOverrides(this.target);\n if (overrides.allHidden)\n return;\n\n if (!batch.range.isNull) {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\n // return;\n\n if (undefined !== this._frustumPlanes) {\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const classifier = this._stack.top.planarClassifier;\n\n this._batchState.push(batch, true);\n\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\n this._opaqueOverrides = overrides.anyOpaque;\n this._translucentOverrides = overrides.anyTranslucent;\n\n if (undefined !== classifier) {\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\n }\n }\n\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\n let savedForcedRenderPass = RenderPass.None;\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.modelId === this.target.activeVolumeClassifierModelId) {\n savedForcedRenderPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\n }\n\n (batch.graphic as Graphic).addCommands(this);\n\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\n this._forcedRenderPass = savedForcedRenderPass;\n\n // If the batch contains hilited features, need to render them in the hilite pass\n const anyHilited = overrides.anyHilited;\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\n if (anyHilited || planarClassifierHilited)\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\n\n });\n\n this._opaqueOverrides = this._translucentOverrides = false;\n this._batchState.pop();\n }\n\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\n // Clear the culling frustum.\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\n\n private setupClassificationByVolume(): void {\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\n // nested branches and batches.\n const groupedCmds = this._commands[RenderPass.Classification];\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\n for (const cmd of groupedCmds) {\n switch (cmd.opcode) {\n case \"pushBranch\":\n case \"pushBatch\":\n case \"pushState\":\n pushCommands.push(cmd);\n break;\n case \"drawPrimitive\":\n for (const pushCmd of pushCommands) {\n byIndexCmds.push(pushCmd);\n }\n byIndexCmds.push(cmd);\n for (let i = pushCommands.length - 1; i >= 0; --i) {\n if (\"pushBatch\" === pushCommands[i].opcode)\n byIndexCmds.push(PopBatchCommand.instance);\n else // should be eith pushBranch or pushState opcode\n byIndexCmds.push(PopBranchCommand.instance);\n }\n break;\n case \"popBatch\":\n case \"popBranch\":\n pushCommands.pop();\n break;\n }\n }\n }\n\n public dump(): Array<{ name: string, count: number }> {\n const dump = [\n { name: \"Primitives\", count: 0 },\n { name: \"Batches\", count: 0 },\n { name: \"Branches\", count: 0 },\n ];\n\n for (const cmds of this._commands) {\n for (const cmd of cmds) {\n let index;\n switch (cmd.opcode) {\n case \"drawPrimitive\":\n index = 0;\n break;\n case \"pushBatch\":\n index = 1;\n break;\n case \"pushBranch\":\n index = 2;\n break;\n default:\n continue;\n }\n\n dump[index].count++;\n }\n }\n\n return dump;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RenderCommands.js","sourceRoot":"","sources":["../../../../src/render/webgl/RenderCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { Frustum, FrustumPlanes, RenderMode, ViewFlags } from \"@itwin/core-common\";\nimport { Decorations } from \"../Decorations\";\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\nimport { GraphicList, RenderGraphic } from \"../RenderGraphic\";\nimport { AnimationBranchState } from \"../GraphicBranch\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchState } from \"./BranchState\";\nimport {\n DrawCommands, PopBatchCommand, PopBranchCommand, PopClipCommand, PopCommand, PrimitiveCommand, PushBatchCommand,\n PushBranchCommand, PushClipCommand, PushCommand, PushStateCommand,\n} from \"./DrawCommand\";\nimport { Batch, Branch, Graphic, GraphicsArray } from \"./Graphic\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { LayerCommandLists } from \"./LayerCommands\";\nimport { MeshGraphic } from \"./Mesh\";\nimport { Primitive } from \"./Primitive\";\nimport { CompositeFlags, Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { TargetGraphics } from \"./TargetGraphics\";\nimport { Target } from \"./Target\";\nimport { ClipVolume } from \"./ClipVolume\";\n\n/** A list of DrawCommands to be rendered, ordered by render pass.\n * @internal\n */\nexport class RenderCommands implements Iterable<DrawCommands> {\n private _frustumPlanes?: FrustumPlanes;\n private readonly _scratchFrustum = new Frustum();\n private readonly _scratchRange = new Range3d();\n private readonly _commands = new Array<DrawCommands>(RenderPass.COUNT);\n private _target: Target;\n private _stack: BranchStack; // refers to the Target's BranchStack\n private _batchState: BatchState; // refers to the Target's BatchState\n private _forcedRenderPass: RenderPass = RenderPass.None;\n private _addLayersAsNormalGraphics = false;\n private _opaqueOverrides = false;\n private _translucentOverrides = false;\n private _addTranslucentAsOpaque = false; // true when rendering for _ReadPixels to force translucent items to be drawn in opaque pass.\n private readonly _layers: LayerCommandLists;\n\n public get target(): Target { return this._target; }\n\n public [Symbol.iterator](): Iterator<DrawCommands> {\n return this._commands[Symbol.iterator]();\n }\n\n public get isEmpty(): boolean {\n for (const commands of this._commands)\n if (0 < commands.length)\n return false;\n\n return true;\n }\n\n public get isDrawingLayers() {\n switch (this._forcedRenderPass) {\n case RenderPass.OpaqueLayers:\n case RenderPass.TranslucentLayers:\n case RenderPass.OverlayLayers:\n return true;\n default:\n return false;\n }\n }\n\n public get currentViewFlags(): ViewFlags { return this._stack.top.viewFlags; }\n public get compositeFlags(): CompositeFlags {\n let flags = CompositeFlags.None;\n if (this.hasCommands(RenderPass.Translucent))\n flags |= CompositeFlags.Translucent;\n\n if (this.hasCommands(RenderPass.Hilite) || this.hasCommands(RenderPass.HiliteClassification) || this.hasCommands(RenderPass.HilitePlanarClassification))\n flags |= CompositeFlags.Hilite;\n\n if (this.target.wantAmbientOcclusion)\n flags |= CompositeFlags.AmbientOcclusion;\n\n return flags;\n }\n\n private get _curBatch(): Batch | undefined { return this._batchState.currentBatch; }\n\n public hasCommands(pass: RenderPass): boolean { return 0 !== this.getCommands(pass).length; }\n public isOpaquePass(pass: RenderPass): boolean { return pass >= RenderPass.OpaqueLinear && pass <= RenderPass.OpaqueGeneral; }\n\n constructor(target: Target, stack: BranchStack, batchState: BatchState) {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this._layers = new LayerCommandLists(this);\n\n for (let i = 0; i < RenderPass.COUNT; ++i)\n this._commands[i] = [];\n }\n\n public reset(target: Target, stack: BranchStack, batchState: BatchState): void {\n this._target = target;\n this._stack = stack;\n this._batchState = batchState;\n this.clear();\n }\n\n public collectGraphicsForPlanarProjection(scene: GraphicList): void {\n assert(this._forcedRenderPass === RenderPass.None);\n assert(!this._addLayersAsNormalGraphics);\n\n this._addLayersAsNormalGraphics = true;\n this.addGraphics(scene);\n this._addLayersAsNormalGraphics = false;\n }\n\n public addGraphics(scene: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n scene.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n /** Add backgroundMap graphics to their own render pass. */\n public addBackgroundMapGraphics(backgroundMapGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.BackgroundMap;\n backgroundMapGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n /** Add overlay graphics to the world overlay pass */\n public addOverlayGraphics(overlayGraphics: GraphicList): void {\n this._forcedRenderPass = RenderPass.WorldOverlay;\n overlayGraphics.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addDecorations(dec: GraphicList, forcedPass: RenderPass = RenderPass.None): void {\n this._forcedRenderPass = forcedPass;\n for (const entry of dec) {\n (entry as Graphic).addCommands(this);\n }\n\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addWorldDecorations(decs: GraphicList): void {\n const world = this.target.getWorldDecorations(decs);\n this.pushAndPopBranch(world, () => {\n for (const entry of world.branch.entries) {\n (entry as Graphic).addCommands(this);\n }\n });\n }\n\n private addPickableDecorations(decs: Decorations): void {\n if (undefined !== decs.normal) {\n for (const normal of decs.normal) {\n const gf = normal as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n if (undefined !== decs.world) {\n const world = this.target.getWorldDecorations(decs.world);\n this.pushAndPopBranch(world, () => {\n for (const gf of world.branch.entries) {\n if ((gf as Graphic).isPickable)\n (gf as Graphic).addCommands(this);\n }\n });\n }\n }\n\n public addBackground(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.Background;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addSkyBox(gf?: Graphic): void {\n if (undefined === gf)\n return;\n\n assert(RenderPass.None === this._forcedRenderPass);\n\n this._forcedRenderPass = RenderPass.SkyBox;\n this.pushAndPopState(this.target.decorationsState, () => gf.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addPrimitiveCommand(command: PrimitiveCommand, pass?: Pass): void {\n if (undefined === pass)\n pass = command.getPass(this.target);\n\n if (\"none\" === pass) // Edges will return none if they don't want to draw at all (edges not turned on).\n return;\n\n if (RenderPass.None !== this._forcedRenderPass) {\n // Add the command to the forced render pass (background).\n this.getCommands(this._forcedRenderPass).push(command);\n return;\n }\n\n if (!command.hasFeatures) {\n // Draw in general opaque pass so they are not in pick data.\n switch (pass) {\n case \"opaque-linear\":\n case \"opaque-planar\":\n pass = \"opaque\";\n break;\n case \"opaque-planar-translucent\":\n pass = \"opaque-translucent\";\n break;\n }\n }\n\n const haveFeatureOverrides = (this._opaqueOverrides || this._translucentOverrides) && command.opcode && command.hasFeatures;\n\n if (Pass.rendersTranslucent(pass) && this._addTranslucentAsOpaque) {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n pass = \"opaque-planar\";\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n pass = \"opaque\";\n break;\n default:\n pass = \"opaque-linear\";\n break;\n }\n }\n\n const isDoublePass = Pass.rendersOpaqueAndTranslucent(pass);\n const renderTranslucentDuringOpaque = isDoublePass || (this._opaqueOverrides && haveFeatureOverrides);\n if (renderTranslucentDuringOpaque && Pass.rendersTranslucent(pass) && !command.primitive.cachedGeometry.alwaysRenderTranslucent) {\n let opaquePass: RenderPass;\n if (Pass.rendersOpaqueAndTranslucent(pass)) {\n opaquePass = Pass.toOpaquePass(pass);\n } else {\n switch (command.renderOrder) {\n case RenderOrder.PlanarLitSurface:\n case RenderOrder.PlanarUnlitSurface:\n case RenderOrder.BlankingRegion:\n opaquePass = RenderPass.OpaquePlanar;\n break;\n case RenderOrder.LitSurface:\n case RenderOrder.UnlitSurface:\n opaquePass = RenderPass.OpaqueGeneral;\n break;\n default:\n opaquePass = RenderPass.OpaqueLinear;\n break;\n }\n }\n\n this.getCommands(opaquePass).push(command);\n }\n\n const renderOpaqueDuringTranslucent = isDoublePass || (this._translucentOverrides && haveFeatureOverrides);\n if (renderOpaqueDuringTranslucent && Pass.rendersOpaque(pass) && !this._addTranslucentAsOpaque)\n this.getCommands(RenderPass.Translucent).push(command);\n\n if (!Pass.rendersOpaqueAndTranslucent(pass))\n this.getCommands(Pass.toRenderPass(pass)).push(command);\n }\n\n public getCommands(pass: RenderPass): DrawCommands {\n let idx = pass as number;\n assert(idx < this._commands.length);\n if (idx >= this._commands.length)\n idx -= 1;\n\n return this._commands[idx];\n }\n\n public replaceCommands(pass: RenderPass, cmds: DrawCommands): void {\n const idx = pass as number;\n this._commands[idx].splice(0);\n this._commands[idx] = cmds;\n }\n\n public addHiliteBranch(branch: Branch, pass: RenderPass): void {\n this.pushAndPopBranchForPass(pass, branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addHiliteCommands(this, pass));\n });\n }\n\n public processLayers(container: LayerContainer): void {\n assert(RenderPass.None === this._forcedRenderPass);\n if (RenderPass.None !== this._forcedRenderPass)\n return;\n\n this._forcedRenderPass = container.renderPass;\n this._layers.processLayers(container, () => container.graphic.addCommands(this));\n this._forcedRenderPass = RenderPass.None;\n }\n\n public addLayerCommands(layer: Layer): void {\n if (this._addLayersAsNormalGraphics) {\n // GraphicsCollectorDrawArgs wants to collect graphics to project to a plane for masking.\n // It bypasses PlanProjectionTreeReference.createDrawArgs which would otherwise wrap the graphics in a LayerContainer.\n assert(this._forcedRenderPass === RenderPass.None);\n this._forcedRenderPass = RenderPass.OpaqueGeneral;\n layer.graphic.addCommands(this);\n this._forcedRenderPass = RenderPass.None;\n return;\n }\n\n assert(this.isDrawingLayers);\n if (!this.isDrawingLayers)\n return;\n\n // Let the graphic add its commands. Afterward, pull them out and add them to the LayerCommands.\n this._layers.currentLayer = layer;\n layer.graphic.addCommands(this);\n\n const cmds = this.getCommands(this._forcedRenderPass);\n this._layers.addCommands(cmds);\n\n cmds.length = 0;\n this._layers.currentLayer = undefined;\n }\n\n public addHiliteLayerCommands(graphic: Graphic, pass: RenderPass): void {\n assert(this.isDrawingLayers || this._addLayersAsNormalGraphics);\n if (!this.isDrawingLayers && !this._addLayersAsNormalGraphics)\n return;\n\n const prevPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.None;\n\n graphic.addHiliteCommands(this, pass);\n\n this._forcedRenderPass = prevPass;\n }\n\n private getAnimationBranchState(branch: Branch): AnimationBranchState | undefined {\n const animId = branch.branch.animationId;\n return undefined !== animId ? this.target.animationBranches?.branchStates.get(animId) : undefined;\n }\n\n private pushAndPopBranchForPass(pass: RenderPass, branch: Branch, func: () => void): void {\n assert(!this.isDrawingLayers);\n\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n assert(RenderPass.None !== pass);\n\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n const cmds = this.getCommands(pass);\n const clip = animState?.clip as ClipVolume | undefined;\n const pushClip = undefined !== clip ? new PushClipCommand(clip) : undefined;\n if (pushClip)\n cmds.push(pushClip);\n\n const push = new PushBranchCommand(branch);\n cmds.push(push);\n\n func();\n\n this._stack.pop();\n if (cmds[cmds.length - 1] === push) {\n cmds.pop();\n if (pushClip)\n cmds.pop();\n } else {\n cmds.push(PopBranchCommand.instance);\n if (pushClip)\n cmds.push(PopClipCommand.instance);\n }\n }\n\n private pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n if (this.isDrawingLayers) {\n this._commands[RenderPass.Hilite].push(push);\n this._layers.pushAndPop(push, pop, func);\n\n const cmds = this._commands[RenderPass.Hilite];\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n return;\n }\n\n if (RenderPass.None === this._forcedRenderPass) {\n // Need to make sure the push command precedes any subsequent commands added to any render pass.\n for (const cmds of this._commands)\n cmds.push(push);\n } else {\n // May want to add hilite commands as well - add the push command to that pass.\n this._commands[this._forcedRenderPass].push(push);\n this._commands[RenderPass.Hilite].push(push);\n }\n\n func();\n\n // Remove push command from any passes that didn't receive any commands; add the pop command to any passes that did.\n if (RenderPass.None === this._forcedRenderPass) {\n for (const cmds of this._commands) {\n assert(0 < cmds.length);\n if (0 < cmds.length && cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n } else {\n assert(0 < this._commands[this._forcedRenderPass].length);\n assert(0 < this._commands[RenderPass.Hilite].length);\n\n let cmds = this._commands[this._forcedRenderPass];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n\n cmds = this._commands[RenderPass.Hilite];\n if (cmds[cmds.length - 1] === push)\n cmds.pop();\n else\n cmds.push(pop);\n }\n }\n\n public pushAndPopBranch(branch: Branch, func: () => void): void {\n const animState = this.getAnimationBranchState(branch);\n if (animState?.omit)\n return;\n\n if (animState?.clip)\n this.pushAndPop(new PushClipCommand(animState.clip as ClipVolume), PopClipCommand.instance, () => this._pushAndPopBranch(branch, func));\n else\n this._pushAndPopBranch(branch, func);\n }\n\n private _pushAndPopBranch(branch: Branch, func: () => void): void {\n this._stack.pushBranch(branch);\n if (branch.planarClassifier)\n branch.planarClassifier.pushBatchState(this._batchState);\n\n if (branch.secondaryClassifiers)\n branch.secondaryClassifiers.forEach((classifier) => classifier.pushBatchState(this._batchState));\n\n this.pushAndPop(new PushBranchCommand(branch), PopBranchCommand.instance, func);\n\n this._stack.pop();\n }\n\n public pushAndPopState(state: BranchState, func: () => void): void {\n this._stack.pushState(state);\n this.pushAndPop(new PushStateCommand(state), PopBranchCommand.instance, func);\n this._stack.pop();\n }\n\n public clear(): void {\n assert(this._batchState.isEmpty);\n this._clearCommands();\n }\n\n private _clearCommands(): void {\n this._commands.forEach((cmds: DrawCommands) => cmds.splice(0));\n this._layers.clear();\n }\n\n private initForPickOverlayDecorations(overlays: GraphicList): void {\n for (const overlay of overlays) {\n const gf = overlay as Graphic;\n if (gf.isPickable)\n gf.addCommands(this);\n }\n }\n\n public initForPickOverlays(sceneOverlays: GraphicList, worldOverlayDecorations: GraphicList | undefined, viewOverlayDecorations: GraphicList | undefined): void {\n this._clearCommands();\n\n this._addTranslucentAsOpaque = true;\n\n for (const sceneGf of sceneOverlays)\n (sceneGf as Graphic).addCommands(this);\n\n if (worldOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState, () => {\n this.initForPickOverlayDecorations(worldOverlayDecorations);\n });\n }\n\n if (viewOverlayDecorations?.length) {\n this.pushAndPopState(this.target.decorationsState.withViewCoords(), () => {\n this.initForPickOverlayDecorations(viewOverlayDecorations);\n });\n }\n\n this._addTranslucentAsOpaque = false;\n }\n\n public initForReadPixels(gfx: TargetGraphics): void {\n this.clear();\n\n // Set flag to force translucent geometry to be put into the opaque pass.\n this._addTranslucentAsOpaque = true;\n\n // Add the scene graphics.\n this.addGraphics(gfx.foreground);\n\n // Also add any pickable decorations.\n if (undefined !== gfx.decorations)\n this.addPickableDecorations(gfx.decorations);\n\n // Also background map is pickable\n this.addBackgroundMapGraphics(gfx.background);\n\n this._addTranslucentAsOpaque = false;\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public initForRender(gfx: TargetGraphics): void {\n this.clear();\n\n this.addGraphics(gfx.foreground);\n this.addBackgroundMapGraphics(gfx.background);\n this.addOverlayGraphics(gfx.overlays);\n\n const dynamics = gfx.dynamics;\n if (dynamics && dynamics.length > 0)\n this.addDecorations(dynamics);\n\n const dec = gfx.decorations;\n if (undefined !== dec) {\n this.addBackground(dec.viewBackground as Graphic);\n\n this.addSkyBox(dec.skyBox as Graphic);\n\n if (undefined !== dec.normal && 0 < dec.normal.length)\n this.addGraphics(dec.normal);\n\n if (undefined !== dec.world && 0 < dec.world.length)\n this.addWorldDecorations(dec.world);\n\n this.pushAndPopState(this.target.decorationsState, () => {\n if (undefined !== dec.viewOverlay && 0 < dec.viewOverlay.length)\n this.addDecorations(dec.viewOverlay, RenderPass.ViewOverlay);\n\n if (undefined !== dec.worldOverlay && 0 < dec.worldOverlay.length)\n this.addDecorations(dec.worldOverlay, RenderPass.WorldOverlay);\n });\n }\n\n this.setupClassificationByVolume();\n this._layers.outputCommands();\n }\n\n public addPrimitive(prim: Primitive): void {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isGeometryOutsideActiveVolume(prim.cachedGeometry))\n // return;\n\n if (undefined !== this._frustumPlanes) { // See if we can cull this primitive.\n if (\"classification\" === prim.getPass(this.target)) {\n const geom = prim.cachedGeometry;\n geom.computeRange(this._scratchRange);\n let frustum = Frustum.fromRange(this._scratchRange, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const command = new PrimitiveCommand(prim);\n this.addPrimitiveCommand(command);\n\n if (RenderPass.None === this._forcedRenderPass && prim.isEdge) {\n const vf: ViewFlags = this.target.currentViewFlags;\n if (vf.renderMode !== RenderMode.Wireframe && vf.hiddenEdges)\n this.getCommands(RenderPass.HiddenEdge).push(command);\n }\n }\n\n public addBranch(branch: Branch): void {\n this.pushAndPopBranch(branch, () => {\n branch.branch.entries.forEach((entry: RenderGraphic) => (entry as Graphic).addCommands(this));\n });\n }\n\n public computeBatchHiliteRenderPass(batch: Batch): RenderPass {\n let pass = RenderPass.Hilite;\n if (batch.graphic instanceof MeshGraphic) {\n const mg = batch.graphic;\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (batch.graphic instanceof GraphicsArray) {\n const ga = batch.graphic;\n if (ga.graphics[0] instanceof MeshGraphic) {\n const mg = ga.graphics[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n } else if (ga.graphics[0] instanceof Branch) {\n const b = ga.graphics[0];\n if (b.branch.entries.length > 0 && b.branch.entries[0] instanceof MeshGraphic) {\n const mg = b.branch.entries[0];\n if (SurfaceType.VolumeClassifier === mg.surfaceType)\n pass = RenderPass.HiliteClassification;\n }\n }\n }\n return pass;\n }\n\n public addBatch(batch: Batch): void {\n if (batch.locateOnly && !this.target.isReadPixelsInProgress)\n return;\n\n // Batches (aka element tiles) should only draw during ordinary (translucent or opaque) passes.\n // They may draw during both, or neither.\n // NB: This is no longer true - pickable overlay decorations are defined as Batches. Problem?\n // assert(RenderPass.None === this._forcedRenderPass);\n assert(!this._opaqueOverrides && !this._translucentOverrides);\n assert(undefined === this._curBatch);\n\n // If all features are overridden to be invisible, draw no graphics in this batch\n const overrides = batch.getOverrides(this.target);\n if (overrides.allHidden)\n return;\n\n if (!batch.range.isNull) {\n // ###TODO Would be nice if we could detect outside active volume here, but active volume only applies to specific render passes\n // if (this.target.isRangeOutsideActiveVolume(batch.range))\n // return;\n\n if (undefined !== this._frustumPlanes) {\n let frustum = Frustum.fromRange(batch.range, this._scratchFrustum);\n frustum = frustum.transformBy(this.target.currentTransform, frustum);\n if (FrustumPlanes.Containment.Outside === this._frustumPlanes.computeFrustumContainment(frustum)) {\n return;\n }\n }\n }\n\n const classifier = this._stack.top.planarClassifier;\n\n this._batchState.push(batch, true);\n\n this.pushAndPop(new PushBatchCommand(batch), PopBatchCommand.instance, () => {\n if (this.currentViewFlags.transparency || overrides.anyViewIndependentTranslucent) {\n this._opaqueOverrides = overrides.anyOpaque;\n this._translucentOverrides = overrides.anyTranslucent;\n\n if (undefined !== classifier) {\n this._opaqueOverrides = this._opaqueOverrides || classifier.anyOpaque;\n this._translucentOverrides = this._translucentOverrides || classifier.anyTranslucent;\n }\n }\n\n // If we have an active volume classifier then force all batches for the reality data being classified into a special render pass.\n let savedForcedRenderPass = RenderPass.None;\n if (undefined !== this.target.activeVolumeClassifierModelId && batch.featureTable.modelId === this.target.activeVolumeClassifierModelId) {\n savedForcedRenderPass = this._forcedRenderPass;\n this._forcedRenderPass = RenderPass.VolumeClassifiedRealityData;\n }\n\n (batch.graphic as Graphic).addCommands(this);\n\n if (RenderPass.VolumeClassifiedRealityData === this._forcedRenderPass)\n this._forcedRenderPass = savedForcedRenderPass;\n\n // If the batch contains hilited features, need to render them in the hilite pass\n const anyHilited = overrides.anyHilited;\n const planarClassifierHilited = undefined !== classifier && classifier.anyHilited;\n if (anyHilited || planarClassifierHilited)\n (batch.graphic as Graphic).addHiliteCommands(this, planarClassifierHilited ? RenderPass.HilitePlanarClassification : this.computeBatchHiliteRenderPass(batch));\n\n });\n\n this._opaqueOverrides = this._translucentOverrides = false;\n this._batchState.pop();\n }\n\n // Define a culling frustum. Commands associated with Graphics whose ranges do not intersect the frustum will be skipped.\n public setCheckRange(frustum: Frustum) { this._frustumPlanes = FrustumPlanes.fromFrustum(frustum); }\n // Clear the culling frustum.\n public clearCheckRange(): void { this._frustumPlanes = undefined; }\n\n private setupClassificationByVolume(): void {\n // To make it easier to process the classifiers individually, set up a secondary command list for them where they\n // are each separated by their own pushes & pops so that they can easily be drawn individually. This now supports\n // nested branches and batches.\n const groupedCmds = this._commands[RenderPass.Classification];\n const byIndexCmds = this._commands[RenderPass.ClassificationByIndex];\n const pushCommands: DrawCommands = []; // will contain current set of pushes ahead of a primitive\n for (const cmd of groupedCmds) {\n switch (cmd.opcode) {\n case \"pushBranch\":\n case \"pushBatch\":\n case \"pushState\":\n pushCommands.push(cmd);\n break;\n case \"drawPrimitive\":\n for (const pushCmd of pushCommands) {\n byIndexCmds.push(pushCmd);\n }\n byIndexCmds.push(cmd);\n for (let i = pushCommands.length - 1; i >= 0; --i) {\n if (\"pushBatch\" === pushCommands[i].opcode)\n byIndexCmds.push(PopBatchCommand.instance);\n else // should be eith pushBranch or pushState opcode\n byIndexCmds.push(PopBranchCommand.instance);\n }\n break;\n case \"popBatch\":\n case \"popBranch\":\n pushCommands.pop();\n break;\n }\n }\n }\n\n public dump(): Array<{ name: string, count: number }> {\n const dump = [\n { name: \"Primitives\", count: 0 },\n { name: \"Batches\", count: 0 },\n { name: \"Branches\", count: 0 },\n ];\n\n for (const cmds of this._commands) {\n for (const cmd of cmds) {\n let index;\n switch (cmd.opcode) {\n case \"drawPrimitive\":\n index = 0;\n break;\n case \"pushBatch\":\n index = 1;\n break;\n case \"pushBranch\":\n index = 2;\n break;\n default:\n continue;\n }\n\n dump[index].count++;\n }\n }\n\n return dump;\n }\n}\n"]}
|
|
@@ -415,12 +415,11 @@ class Geometry {
|
|
|
415
415
|
return undefined !== this.copyPickBuffers && undefined !== this.clearTranslucent && undefined !== this.clearPickAndColor;
|
|
416
416
|
}
|
|
417
417
|
enableOcclusion(textures, depth) {
|
|
418
|
-
var _a;
|
|
419
418
|
assert(undefined !== textures.occlusion && undefined !== textures.occlusionBlur && undefined !== textures.depthAndOrder && undefined !== textures.occlusionBlur);
|
|
420
419
|
this.composite.occlusion = textures.occlusion.getHandle();
|
|
421
420
|
this.occlusion = AmbientOcclusionGeometry.createGeometry(textures.depthAndOrder.getHandle(), depth.getHandle());
|
|
422
421
|
this.occlusionXBlur = BlurGeometry.createGeometry(textures.occlusion.getHandle(), textures.depthAndOrder.getHandle(), undefined, new Vector2d(1.0, 0.0), BlurType.NoTest);
|
|
423
|
-
const depthAndOrderHidden = (undefined === textures.depthAndOrderHidden ?
|
|
422
|
+
const depthAndOrderHidden = (undefined === textures.depthAndOrderHidden ? textures.revealage?.getHandle() : textures.depthAndOrderHidden.getHandle());
|
|
424
423
|
this.occlusionYBlur = BlurGeometry.createGeometry(textures.occlusionBlur.getHandle(), textures.depthAndOrder.getHandle(), depthAndOrderHidden, new Vector2d(0.0, 1.0), BlurType.TestOrder);
|
|
425
424
|
}
|
|
426
425
|
disableOcclusion() {
|
|
@@ -794,7 +793,6 @@ class Compositor extends SceneCompositor {
|
|
|
794
793
|
this._needHiddenEdges = false;
|
|
795
794
|
}
|
|
796
795
|
renderPointClouds(commands, compositeFlags) {
|
|
797
|
-
var _a, _b;
|
|
798
796
|
const is3d = 2 /* Perspective */ === this.target.uniforms.frustum.type;
|
|
799
797
|
// separate individual point clouds and get their point cloud settings
|
|
800
798
|
const pointClouds = [];
|
|
@@ -806,7 +804,7 @@ class Compositor extends SceneCompositor {
|
|
|
806
804
|
if ("pushBranch" === cmd.opcode) { // should be first command
|
|
807
805
|
++pushDepth;
|
|
808
806
|
if (pushDepth === 1) {
|
|
809
|
-
pcs =
|
|
807
|
+
pcs = cmd.branch.branch.realityModelDisplaySettings?.pointCloud;
|
|
810
808
|
this.target.uniforms.realityModel.pointCloud.updateRange(cmd.branch.branch.realityModelRange, this.target, cmd.branch.localToWorldTransform, is3d);
|
|
811
809
|
pointClouds.push(curPC = { pcs, cmds: [cmd] });
|
|
812
810
|
}
|
|
@@ -830,7 +828,7 @@ class Compositor extends SceneCompositor {
|
|
|
830
828
|
this._readPickDataFromPingPong = false;
|
|
831
829
|
for (const pc of pointClouds) {
|
|
832
830
|
pcs = pc.pcs;
|
|
833
|
-
let edlOn =
|
|
831
|
+
let edlOn = pcs?.edlMode !== "off" && is3d;
|
|
834
832
|
if (edlOn) {
|
|
835
833
|
if (undefined === this._textures.hilite)
|
|
836
834
|
edlOn = false;
|
|
@@ -843,7 +841,7 @@ class Compositor extends SceneCompositor {
|
|
|
843
841
|
let drawColBufs;
|
|
844
842
|
if (undefined !== this._fbos.edlDrawCol)
|
|
845
843
|
drawColBufs = this._fbos.edlDrawCol.getColorTargets(useMsBuffers, 0);
|
|
846
|
-
if (undefined === this._fbos.edlDrawCol || this._textures.hilite !==
|
|
844
|
+
if (undefined === this._fbos.edlDrawCol || this._textures.hilite !== drawColBufs?.tex || this._textures.hiliteMsBuff !== drawColBufs.msBuf) {
|
|
847
845
|
this._fbos.edlDrawCol = dispose(this._fbos.edlDrawCol);
|
|
848
846
|
const filters = [GL.MultiSampling.Filter.Linear];
|
|
849
847
|
if (useMsBuffers)
|
|
@@ -866,8 +864,8 @@ class Compositor extends SceneCompositor {
|
|
|
866
864
|
// next process buffers to generate EDL (depth buffer is passed during init)
|
|
867
865
|
this.target.beginPerfMetricRecord("Calc EDL"); // ### todo keep? (probably)
|
|
868
866
|
const sts = this.eyeDomeLighting.draw({
|
|
869
|
-
edlMode:
|
|
870
|
-
edlFilter: !!
|
|
867
|
+
edlMode: pc.pcs?.edlMode === "full" ? EDLMode.Full : EDLMode.On,
|
|
868
|
+
edlFilter: !!pcs?.edlFilter,
|
|
871
869
|
useMsBuffers,
|
|
872
870
|
inputTex: this._textures.hilite,
|
|
873
871
|
curFbo: fbo,
|
|
@@ -1227,7 +1225,7 @@ class Compositor extends SceneCompositor {
|
|
|
1227
1225
|
this.target.endPerfMetricRecord(true);
|
|
1228
1226
|
this.target.popViewClip();
|
|
1229
1227
|
}
|
|
1230
|
-
if (!sceneOverlays.length && !
|
|
1228
|
+
if (!sceneOverlays.length && !worldOverlayDecorations?.length && !viewOverlayDecorations?.length)
|
|
1231
1229
|
return;
|
|
1232
1230
|
// Now populate the opaque passes with any pickable world overlays
|
|
1233
1231
|
this.target.beginPerfMetricRecord("Overlay Draws", true);
|