@itwin/core-frontend 5.0.0-dev.4 → 5.0.0-dev.41
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 +42 -1
- package/lib/cjs/AccuDraw.d.ts +63 -8
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +118 -16
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +5 -5
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts +2 -2
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +9 -9
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +5 -5
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +62 -64
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +4 -1
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +24 -21
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.d.ts +0 -3
- package/lib/cjs/IModelRoutingContext.d.ts.map +1 -1
- package/lib/cjs/IModelRoutingContext.js +5 -4
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +4 -3
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.js +15 -17
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +14 -2
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +84 -35
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +419 -163
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/Sprites.js +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +5 -5
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.js +2 -2
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +9 -9
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js +41 -41
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.d.ts +4 -0
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js +80 -7
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
- package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/render/MockRender.js +3 -3
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js +2 -2
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js +4 -4
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +4 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js +4 -4
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +39 -39
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +3 -3
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +6 -1
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +79 -2
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlParser.js +2 -2
- package/lib/cjs/tile/ImdlParser.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/MeshoptCompression.d.ts +9 -0
- package/lib/cjs/tile/MeshoptCompression.d.ts.map +1 -1
- package/lib/cjs/tile/MeshoptCompression.js +98 -66
- package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +8 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +9 -9
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.d.ts +1 -0
- package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +22 -21
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +40 -40
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +2 -2
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +11 -4
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js +2 -2
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +39 -39
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +7 -7
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +10 -10
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +36 -24
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js +19 -19
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js +63 -63
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +37 -37
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/Worker.js +2 -2
- package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts +63 -8
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +119 -17
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +5 -5
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts +2 -2
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/DrawingViewState.js +9 -9
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +5 -5
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +63 -65
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +4 -1
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +20 -17
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.d.ts +0 -3
- package/lib/esm/IModelRoutingContext.d.ts.map +1 -1
- package/lib/esm/IModelRoutingContext.js +3 -2
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +4 -3
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NativeApp.js +15 -17
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +6 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js +14 -2
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +84 -35
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +418 -162
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/Sprites.js +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +5 -5
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewState.js +2 -2
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +9 -9
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js +41 -41
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.d.ts +4 -0
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js +80 -7
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
- package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/esm/render/MockRender.js +3 -3
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js +4 -4
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +4 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.js +4 -4
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js +39 -39
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +3 -3
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +6 -1
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +79 -2
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlParser.js +2 -2
- package/lib/esm/tile/ImdlParser.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/MeshoptCompression.d.ts +9 -0
- package/lib/esm/tile/MeshoptCompression.d.ts.map +1 -1
- package/lib/esm/tile/MeshoptCompression.js +98 -44
- package/lib/esm/tile/MeshoptCompression.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +5 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +8 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -9
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +2 -2
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.d.ts +1 -0
- package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +22 -21
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +40 -40
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js +2 -2
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +11 -4
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/IdleTool.js +2 -2
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
- package/lib/esm/tools/MeasureTool.js +40 -40
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +7 -7
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +10 -10
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +36 -24
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js +19 -19
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js +63 -63
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +37 -37
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/Worker.js +2 -2
- package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
- package/lib/public/locales/en/CoreTools.json +1 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +20 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.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\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.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\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
|
|
@@ -49,6 +49,7 @@ class BatchState {
|
|
|
49
49
|
this._batches.length = 0;
|
|
50
50
|
this._curBatch = undefined;
|
|
51
51
|
}
|
|
52
|
+
static { this._scratchElementIdPair = { lower: 0, upper: 0 }; }
|
|
52
53
|
getElementId(featureId) {
|
|
53
54
|
const batch = this.find(featureId);
|
|
54
55
|
if (undefined === batch)
|
|
@@ -108,5 +109,4 @@ class BatchState {
|
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
exports.BatchState = BatchState;
|
|
111
|
-
BatchState._scratchElementIdPair = { lower: 0, upper: 0 };
|
|
112
112
|
//# sourceMappingURL=BatchState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA2E;AAM3E;;;;;;;;;;;;;;GAcG;AACH,MAAa,UAAU;IAKrB,YAAmB,KAAkB;QAH7B,aAAQ,GAAY,EAAE,CAAC,CAAC,8DAA8D;QAI5F,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,YAAY,KAAwB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,IAAW,cAAc,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,IAAW,kBAAkB,KAAmC,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/I,IAAW,OAAO,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,KAAY,EAAE,QAAiB;QACzC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,GAAG;QACR,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAC/B,KAAK,CAAC,YAAY,EAAE,CAAC;QAEvB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchState.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, lowerBound } from \"@itwin/core-bentley\";\r\nimport { ModelFeature } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { Batch } from \"./Graphic\";\r\n\r\n/**\r\n * Assigns a transient, unique 32-bit integer ID to each Batch in a RenderCommands.\r\n * A batch ID of 0 means \"no batch\".\r\n * The first batch gets batch ID of 1.\r\n * The next batch gets the previous batch's ID plus the number of features in the previous batch's feature table\r\n * (or 1, if empty feature table).\r\n * The IDs are set temporarily as members on the Batch objects and reset to 0 immediately after rendering.\r\n * The currentBatch member identifies the batch containing primitives currently being drawn.\r\n * The combination of the current batch's ID (passed as uniform to shader) and the index of a given Feature within\r\n * its batch's FeatureTable (stored in vertex table) produce a unique ID for every feature rendered during a frame.\r\n * During rendering, the feature IDs are written to the \"feature ID\" color attachment.\r\n * The batch IDs remain valid during a call to Target.readPixels() so that they can be used to extract\r\n * Features from the Batch's FeatureTables.\r\n * @internal\r\n */\r\nexport class BatchState {\r\n private readonly _stack: BranchStack;\r\n private _batches: Batch[] = []; // NB: this list is ordered - but *not* indexed - by batch ID.\r\n private _curBatch?: Batch;\r\n\r\n public constructor(stack: BranchStack) {\r\n this._stack = stack;\r\n }\r\n\r\n public get currentBatch(): Batch | undefined { return this._curBatch; }\r\n public get currentBatchId(): number { return undefined !== this._curBatch ? this._curBatch.batchId : 0; }\r\n public get currentBatchIModel(): IModelConnection | undefined { return undefined !== this._curBatch ? this._curBatch.batchIModel : undefined; }\r\n public get isEmpty(): boolean { return 0 === this._batches.length; }\r\n\r\n public push(batch: Batch, allowAdd: boolean): void {\r\n assert(undefined === this.currentBatch, \"batches cannot nest\");\r\n this.getBatchId(batch, allowAdd);\r\n this._curBatch = batch;\r\n }\r\n\r\n public pop(): void {\r\n assert(undefined !== this.currentBatch);\r\n this._curBatch = undefined;\r\n }\r\n\r\n public reset(): void {\r\n assert(undefined === this.currentBatch);\r\n for (const batch of this._batches)\r\n batch.resetContext();\r\n\r\n this._batches.length = 0;\r\n this._curBatch = undefined;\r\n }\r\n\r\n private static readonly _scratchElementIdPair = { lower: 0, upper: 0 };\r\n public getElementId(featureId: number): Id64String {\r\n const batch = this.find(featureId);\r\n if (undefined === batch)\r\n return Id64.invalid;\r\n\r\n const featureIndex = featureId - batch.batchId;\r\n assert(featureIndex >= 0);\r\n\r\n const parts = batch.featureTable.getElementIdPair(featureIndex, BatchState._scratchElementIdPair);\r\n return Id64.fromUint32Pair(parts.lower, parts.upper);\r\n }\r\n\r\n public getFeature(featureId: number, result: ModelFeature): ModelFeature | undefined {\r\n const batch = this.find(featureId);\r\n if (undefined === batch)\r\n return undefined;\r\n\r\n const featureIndex = featureId - batch.batchId;\r\n assert(featureIndex >= 0);\r\n\r\n return batch.featureTable.findFeature(featureIndex, result);\r\n }\r\n\r\n public get numFeatureIds() { return this.nextBatchId; }\r\n public get numBatches() { return this._batches.length; }\r\n\r\n public findBatchId(featureId: number) {\r\n const batch = this.find(featureId);\r\n return undefined !== batch ? batch.batchId : 0;\r\n }\r\n\r\n public get nextBatchId(): number {\r\n if (this.isEmpty)\r\n return 1;\r\n\r\n const prev = this._batches[this._batches.length - 1];\r\n assert(0 !== prev.batchId);\r\n\r\n let prevNumFeatures = prev.featureTable.numFeatures;\r\n if (0 === prevNumFeatures)\r\n prevNumFeatures = 1;\r\n\r\n return prev.batchId + prevNumFeatures;\r\n }\r\n\r\n private getBatchId(batch: Batch, allowAdd: boolean): number {\r\n if (allowAdd && 0 === batch.batchId) {\r\n batch.setContext(this.nextBatchId, this._stack.top);\r\n this._batches.push(batch);\r\n }\r\n\r\n return batch.batchId;\r\n }\r\n\r\n private indexOf(featureId: number): number {\r\n if (featureId <= 0)\r\n return -1;\r\n\r\n const found = lowerBound(featureId, this._batches, (lhs: number, rhs: Batch) => {\r\n // Determine if the requested feature ID is within the range of this batch.\r\n if (lhs < rhs.batchId)\r\n return -1;\r\n\r\n const numFeatures = rhs.featureTable.numFeatures;\r\n const nextBatchId = rhs.batchId + (numFeatures > 0 ? numFeatures : 1);\r\n return lhs < nextBatchId ? 0 : 1;\r\n });\r\n\r\n return found.index < this._batches.length ? found.index : -1;\r\n }\r\n\r\n public find(featureId: number): Batch | undefined {\r\n const index = this.indexOf(featureId);\r\n return -1 !== index ? this._batches[index] : undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -33,8 +33,8 @@ class ColorInfo {
|
|
|
33
33
|
(0, core_bentley_1.assert)(this.isUniform);
|
|
34
34
|
return this._uniform;
|
|
35
35
|
}
|
|
36
|
+
static { this._nonUniformTranslucent = new ColorInfo(true); }
|
|
37
|
+
static { this._nonUniformOpaque = new ColorInfo(false); }
|
|
36
38
|
}
|
|
37
39
|
exports.ColorInfo = ColorInfo;
|
|
38
|
-
ColorInfo._nonUniformTranslucent = new ColorInfo(true);
|
|
39
|
-
ColorInfo._nonUniformOpaque = new ColorInfo(false);
|
|
40
40
|
//# sourceMappingURL=ColorInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAE7C,2CAAwC;AAGxC;;GAEG;AACH,MAAa,SAAS;IAIpB,YAAoB,eAAwB,EAAE,OAAmB;QAC/D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgB,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,gBAAgB,CAAC,eAAwB,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,kBAAkB,CAAC,KAAe,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExG,MAAM,CAAC,oBAAoB,CAAC,UAAsB;QACvD,OAAO,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrI,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,EAAe;QACjD,OAAO,SAAS,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9H,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAW,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,IAAW,OAAO;QAChB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC
|
|
1
|
+
{"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAE7C,2CAAwC;AAGxC;;GAEG;AACH,MAAa,SAAS;IAIpB,YAAoB,eAAwB,EAAE,OAAmB;QAC/D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAAgB,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,gBAAgB,CAAC,eAAwB,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,kBAAkB,CAAC,KAAe,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExG,MAAM,CAAC,oBAAoB,CAAC,UAAsB;QACvD,OAAO,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrI,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,EAAe;QACjD,OAAO,SAAS,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC9H,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAW,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,IAAW,OAAO;QAChB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;aAEc,2BAAsB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;aAC7C,sBAAiB,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;;AA7B1D,8BA8BC","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 { ColorDef, ColorIndex } from \"@itwin/core-common\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\nimport { VertexTable } from \"../../common/internal/render/VertexTable\";\r\n\r\n/* Describes a primitive's basic color properties\r\n * @internal\r\n */\r\nexport class ColorInfo {\r\n private readonly _uniform?: FloatRgba;\r\n public readonly hasTranslucency: boolean;\r\n\r\n private constructor(hasTranslucency: boolean, uniform?: FloatRgba) {\r\n this.hasTranslucency = hasTranslucency;\r\n this._uniform = uniform;\r\n }\r\n\r\n public static createUniform(color: FloatRgba) { return new ColorInfo(color.hasTranslucency, color); }\r\n public static createNonUniform(hasTranslucency: boolean) { return hasTranslucency ? this._nonUniformTranslucent : this._nonUniformOpaque; }\r\n public static createFromColorDef(color: ColorDef) { return this.createUniform(FloatRgba.fromColorDef(color)); }\r\n\r\n public static createFromColorIndex(colorIndex: ColorIndex) {\r\n return undefined !== colorIndex.uniform ? this.createFromColorDef(colorIndex.uniform) : this.createNonUniform(colorIndex.hasAlpha);\r\n }\r\n\r\n public static createFromVertexTable(vt: VertexTable) {\r\n return undefined !== vt.uniformColor ? this.createFromColorDef(vt.uniformColor) : this.createNonUniform(vt.hasTranslucency);\r\n }\r\n\r\n public get isUniform() { return undefined !== this._uniform; }\r\n public get isNonUniform() { return !this.isUniform; }\r\n public get uniform(): FloatRgba {\r\n assert(this.isUniform);\r\n return this._uniform!;\r\n }\r\n\r\n private static _nonUniformTranslucent = new ColorInfo(true);\r\n private static _nonUniformOpaque = new ColorInfo(false);\r\n}\r\n"]}
|
|
@@ -14,6 +14,10 @@ const System_1 = require("./System");
|
|
|
14
14
|
* @internal
|
|
15
15
|
*/
|
|
16
16
|
class Debug {
|
|
17
|
+
/** Whether [[Debug.print]] will actually produce output. */
|
|
18
|
+
static { this.printEnabled = false; }
|
|
19
|
+
/** Whether [[Debug.evaluate]] will actually evaluate an expression. */
|
|
20
|
+
static { this.evaluateEnabled = false; }
|
|
17
21
|
/** If [[Debug.printEnabled]] is true, outputs a message using `console.log`.
|
|
18
22
|
* @param message A function which returns a string. If [[Debug.printEnabled]] is false, the function is never evaluated.
|
|
19
23
|
*/
|
|
@@ -37,8 +41,4 @@ class Debug {
|
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
exports.Debug = Debug;
|
|
40
|
-
/** Whether [[Debug.print]] will actually produce output. */
|
|
41
|
-
Debug.printEnabled = false;
|
|
42
|
-
/** Whether [[Debug.evaluate]] will actually evaluate an expression. */
|
|
43
|
-
Debug.evaluateEnabled = false;
|
|
44
44
|
//# sourceMappingURL=Diagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../../src/render/webgl/Diagnostics.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,6BAA0B;AAC1B,qCAAkC;AAElC;;GAEG;AACH,MAAa,KAAK;
|
|
1
|
+
{"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../../src/render/webgl/Diagnostics.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,6BAA0B;AAC1B,qCAAkC;AAElC;;GAEG;AACH,MAAa,KAAK;IAChB,4DAA4D;aAC9C,iBAAY,GAAG,KAAK,CAAC;IACnC,uEAAuE;aACzD,oBAAe,GAAG,KAAK,CAAC;IAEtC;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,OAAqB;QACvC,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,iCAAiC;IAC7D,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAI,QAAiB,EAAE,YAAe;QAC1D,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1D,CAAC;IAED,yGAAyG;IAClG,MAAM,KAAK,kBAAkB,KAAc,OAAO,OAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAE5H,mGAAmG;IAC5F,MAAM,CAAC,sBAAsB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpI,CAAC;;AA7BH,sBA8BC","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 { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Provides facilities for conditionally executing diagnostic/debug code. By default, all facilities are disabled - they must be explicitly enabled.\r\n * @internal\r\n */\r\nexport class Debug {\r\n /** Whether [[Debug.print]] will actually produce output. */\r\n public static printEnabled = false;\r\n /** Whether [[Debug.evaluate]] will actually evaluate an expression. */\r\n public static evaluateEnabled = false;\r\n\r\n /** If [[Debug.printEnabled]] is true, outputs a message using `console.log`.\r\n * @param message A function which returns a string. If [[Debug.printEnabled]] is false, the function is never evaluated.\r\n */\r\n public static print(message: () => string): void {\r\n if (this.printEnabled)\r\n console.log(message()); // eslint-disable-line no-console\r\n }\r\n\r\n /** If [[Debug.evaluate]] is true, executes the supplied function and returns its result; otherwise returns the supplied default value.\r\n * @param evaluate The function to execute\r\n * @param defaultValue The value to return if [[Debug.evaluate]] is false\r\n * @returns The return value of `evaluate` if [[Debug.evaluate]] is true; otherwise, the `defaultValue`.\r\n */\r\n public static evaluate<T>(evaluate: () => T, defaultValue: T): T {\r\n return this.evaluateEnabled ? evaluate() : defaultValue;\r\n }\r\n\r\n /** If [[Debug.evaluateEnabled]] is true, returns whether the currently-bound framebuffer is complete. */\r\n public static get isValidFrameBuffer(): boolean { return GL.FrameBuffer.Status.Complete === this.checkFrameBufferStatus(); }\r\n\r\n /** If [[Debug.evaluateEnabled]] is true, returns the status of the currently-bound framebuffer. */\r\n public static checkFrameBufferStatus(): GL.FrameBuffer.Status {\r\n return this.evaluate(() => System.instance.context.checkFramebufferStatus(GL.FrameBuffer.TARGET), GL.FrameBuffer.Status.Complete);\r\n }\r\n}\r\n"]}
|
|
@@ -82,12 +82,12 @@ class PopBatchCommand {
|
|
|
82
82
|
constructor() {
|
|
83
83
|
this.opcode = "popBatch";
|
|
84
84
|
}
|
|
85
|
+
static { this.instance = new PopBatchCommand(); }
|
|
85
86
|
execute(exec) {
|
|
86
87
|
exec.target.popBatch();
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
exports.PopBatchCommand = PopBatchCommand;
|
|
90
|
-
PopBatchCommand.instance = new PopBatchCommand();
|
|
91
91
|
/** @internal */
|
|
92
92
|
class PushBatchCommand {
|
|
93
93
|
constructor(batch) {
|
|
@@ -126,12 +126,12 @@ class PopBranchCommand {
|
|
|
126
126
|
constructor() {
|
|
127
127
|
this.opcode = "popBranch";
|
|
128
128
|
}
|
|
129
|
+
static { this.instance = new PopBranchCommand(); }
|
|
129
130
|
execute(exec) {
|
|
130
131
|
exec.popBranch();
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
exports.PopBranchCommand = PopBranchCommand;
|
|
134
|
-
PopBranchCommand.instance = new PopBranchCommand();
|
|
135
135
|
/** @internal */
|
|
136
136
|
class PushClipCommand {
|
|
137
137
|
constructor(clip) {
|
|
@@ -148,18 +148,19 @@ class PopClipCommand {
|
|
|
148
148
|
constructor() {
|
|
149
149
|
this.opcode = "popClip";
|
|
150
150
|
}
|
|
151
|
+
static { this.instance = new PopClipCommand(); }
|
|
151
152
|
execute(exec) {
|
|
152
153
|
exec.target.uniforms.branch.clipStack.pop();
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
exports.PopClipCommand = PopClipCommand;
|
|
156
|
-
PopClipCommand.instance = new PopClipCommand();
|
|
157
157
|
/** @internal */
|
|
158
158
|
class PrimitiveCommand {
|
|
159
159
|
constructor(primitive) {
|
|
160
160
|
this.primitive = primitive;
|
|
161
161
|
this.opcode = "drawPrimitive";
|
|
162
162
|
}
|
|
163
|
+
static { this._scratchTechniqueFlags = new TechniqueFlags_1.TechniqueFlags(); }
|
|
163
164
|
execute(exec) {
|
|
164
165
|
if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))
|
|
165
166
|
return;
|
|
@@ -195,7 +196,6 @@ class PrimitiveCommand {
|
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
198
|
exports.PrimitiveCommand = PrimitiveCommand;
|
|
198
|
-
PrimitiveCommand._scratchTechniqueFlags = new TechniqueFlags_1.TechniqueFlags();
|
|
199
199
|
/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.
|
|
200
200
|
* NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).
|
|
201
201
|
* The primitive should be right in the middle of a set. We need to find the set which matches the flashID.
|
|
@@ -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"]}
|
|
@@ -11,10 +11,10 @@ exports.IModelFrameLifecycle = void 0;
|
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
/** @internal */
|
|
13
13
|
class IModelFrameLifecycle {
|
|
14
|
+
static { this.onBeforeRender = new core_bentley_1.BeEvent(); }
|
|
15
|
+
static { this.onRenderOpaque = new core_bentley_1.BeEvent(); }
|
|
16
|
+
static { this.onChangeCameraFrustum = new core_bentley_1.BeEvent(); }
|
|
17
|
+
static { this.onChangeCameraView = new core_bentley_1.BeEvent(); }
|
|
14
18
|
}
|
|
15
19
|
exports.IModelFrameLifecycle = IModelFrameLifecycle;
|
|
16
|
-
IModelFrameLifecycle.onBeforeRender = new core_bentley_1.BeEvent();
|
|
17
|
-
IModelFrameLifecycle.onRenderOpaque = new core_bentley_1.BeEvent();
|
|
18
|
-
IModelFrameLifecycle.onChangeCameraFrustum = new core_bentley_1.BeEvent();
|
|
19
|
-
IModelFrameLifecycle.onChangeCameraView = new core_bentley_1.BeEvent();
|
|
20
20
|
//# sourceMappingURL=IModelFrameLifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8C;AA4C9C,gBAAgB;AAChB,MAAa,oBAAoB
|
|
1
|
+
{"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8C;AA4C9C,gBAAgB;AAChB,MAAa,oBAAoB;aACR,mBAAc,GAAG,IAAI,sBAAO,EAAyC,CAAC;aACtE,mBAAc,GAAG,IAAI,sBAAO,EAAmC,CAAC;aAChE,0BAAqB,GAAG,IAAI,sBAAO,EAA0C,CAAC;aAC9E,uBAAkB,GAAG,IAAI,sBAAO,EAAuC,CAAC;;AAJjG,oDAKC","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 { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Viewport } from \"../../Viewport\";\r\nimport { FrameBuffer, FrameBufferStack } from \"./FrameBuffer\";\r\nimport { FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { CompositeFlags } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\n\r\n/** @internal */\r\nexport interface FrameRenderData {\r\n commands: RenderCommands;\r\n needComposite: boolean;\r\n compositeFlags: CompositeFlags;\r\n fbo: FrameBuffer;\r\n frameBufferStack: FrameBufferStack;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameBeforeRenderData {\r\n renderSystem: System;\r\n viewport: Viewport;\r\n setSceneNeedRedraw: (redraw: boolean) => void;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameCameraFrustumData {\r\n type: FrustumUniformType;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n top: number;\r\n front: number;\r\n back: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameCameraViewData {\r\n cameraPosition: Point3d;\r\n viewX: Vector3d;\r\n viewY: Vector3d;\r\n viewZ: Vector3d;\r\n}\r\n\r\n/** @internal */\r\nexport class IModelFrameLifecycle {\r\n public static readonly onBeforeRender = new BeEvent<(data: FrameBeforeRenderData) => void>();\r\n public static readonly onRenderOpaque = new BeEvent<(data: FrameRenderData) => void>();\r\n public static readonly onChangeCameraFrustum = new BeEvent<(data: FrameCameraFrustumData) => void>();\r\n public static readonly onChangeCameraView = new BeEvent<(data: FrameCameraViewData) => void>();\r\n}\r\n"]}
|
|
@@ -41,11 +41,11 @@ class InstanceData {
|
|
|
41
41
|
getRtcOnlyTransform() {
|
|
42
42
|
return this._rtcOnlyTransform;
|
|
43
43
|
}
|
|
44
|
+
static { this._noFeatureId = new Float32Array([0, 0, 0]); }
|
|
44
45
|
get patternFeatureId() {
|
|
45
46
|
return InstanceData._noFeatureId;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
InstanceData._noFeatureId = new Float32Array([0, 0, 0]);
|
|
49
49
|
/** @internal */
|
|
50
50
|
class InstanceBuffersData extends InstanceData {
|
|
51
51
|
constructor(count, transforms, rtcCenter, symbology, featureIds, disableDisposal = false) {
|
|
@@ -112,6 +112,7 @@ var RenderInstancesImpl;
|
|
|
112
112
|
})(RenderInstancesImpl || (exports.RenderInstancesImpl = RenderInstancesImpl = {}));
|
|
113
113
|
/** @internal */
|
|
114
114
|
class InstanceBuffers {
|
|
115
|
+
static { this._patternParams = new Float32Array([0, 0, 0, 0]); }
|
|
115
116
|
get numInstances() { return this._data.numInstances; }
|
|
116
117
|
get transforms() { return this._data.transforms; }
|
|
117
118
|
get featureIds() { return this._data.featureIds; }
|
|
@@ -202,9 +203,9 @@ class InstanceBuffers {
|
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
205
|
exports.InstanceBuffers = InstanceBuffers;
|
|
205
|
-
InstanceBuffers._patternParams = new Float32Array([0, 0, 0, 0]);
|
|
206
206
|
/** @internal */
|
|
207
207
|
class PatternBuffers extends InstanceData {
|
|
208
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
208
209
|
constructor(count, rtcCenter, range, patternParams, // [ isAreaPattern, spacingX, spacingY, scale ]
|
|
209
210
|
origin, // [ x, y ]
|
|
210
211
|
orgTransform, localToModel, symbolToLocal, offsets, featureId, viewIndependentOrigin) {
|
|
@@ -252,7 +253,6 @@ class PatternBuffers extends InstanceData {
|
|
|
252
253
|
}
|
|
253
254
|
}
|
|
254
255
|
exports.PatternBuffers = PatternBuffers;
|
|
255
|
-
_a = Symbols_1._implementationProhibited;
|
|
256
256
|
/** @internal */
|
|
257
257
|
class InstancedGeometry extends CachedGeometry_1.CachedGeometry {
|
|
258
258
|
getRtcModelTransform(modelMatrix) { return this._buffers.getRtcModelTransform(modelMatrix); }
|