@itwin/core-frontend 3.4.0-dev.8 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -1
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +60 -15
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +46 -36
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/AuxCoordSys.d.ts.map +1 -1
- package/lib/cjs/AuxCoordSys.js +2 -3
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/CategorySelectorState.d.ts.map +1 -1
- package/lib/cjs/CategorySelectorState.js +6 -4
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/DevTools.d.ts.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js +1 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +4 -2
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
- package/lib/cjs/FrustumAnimator.js +5 -1
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/FuzzySearch.d.ts.map +1 -1
- package/lib/cjs/FuzzySearch.js +9 -3
- package/lib/cjs/FuzzySearch.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +13 -3
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +7 -2
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +10 -2
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +3 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/ImageUtil.d.ts +6 -0
- package/lib/cjs/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/ImageUtil.js +14 -1
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +5 -1
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/TentativePoint.d.ts.map +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/ViewManager.d.ts +4 -0
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +9 -3
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewRect.d.ts.map +1 -1
- package/lib/cjs/ViewRect.js +5 -1
- package/lib/cjs/ViewRect.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +36 -12
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +35 -25
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.d.ts.map +1 -1
- package/lib/cjs/ViewingSpace.js +12 -5
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +14 -0
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +106 -5
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +6 -0
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +6 -0
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.d.ts.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.js +3 -1
- package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js +11 -0
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/public/scripts/checkbrowser.js +24 -0
- package/lib/cjs/render/Decorations.d.ts.map +1 -1
- package/lib/cjs/render/Decorations.js +24 -6
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts +19 -0
- package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -0
- package/lib/cjs/render/RealityMeshGraphicParams.js +10 -0
- package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -0
- package/lib/cjs/render/RealityMeshParams.d.ts +130 -0
- package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -0
- package/lib/cjs/render/RealityMeshParams.js +176 -0
- package/lib/cjs/render/RealityMeshParams.js.map +1 -0
- package/lib/cjs/render/RenderSystem.d.ts +8 -4
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +7 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTexture.d.ts +1 -1
- package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/UpsampleRealityMeshParams.d.ts +11 -0
- package/lib/cjs/render/UpsampleRealityMeshParams.d.ts.map +1 -0
- package/lib/cjs/render/UpsampleRealityMeshParams.js +205 -0
- package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -0
- package/lib/cjs/render/primitives/DisplayParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
- package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Polyface.js +3 -1
- package/lib/cjs/render/primitives/Polyface.js.map +1 -1
- package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Primitives.js.map +1 -1
- package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Strokes.js +6 -2
- package/lib/cjs/render/primitives/Strokes.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js +7 -85
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +4 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js +4 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +12 -3
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.js +4 -1
- package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +5 -2
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/Matrix.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Matrix.js +16 -4
- package/lib/cjs/render/webgl/Matrix.js.map +1 -1
- package/lib/cjs/render/webgl/PerformanceMetrics.js +2 -2
- package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +3 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +6 -6
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +20 -12
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +3 -2
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +3 -1
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +4 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +17 -5
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +6 -4
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +21 -4
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +3 -1
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +21 -12
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js +8 -2
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +3 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +3 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +7 -3
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js +3 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +14 -11
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.d.ts +57 -3
- package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTile.js +49 -5
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts +37 -2
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +30 -2
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +6 -2
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +12 -0
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +54 -4
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +10 -16
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequest.d.ts +5 -1
- package/lib/cjs/tile/TileRequest.d.ts.map +1 -1
- package/lib/cjs/tile/TileRequest.js +6 -2
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileStorage.d.ts +13 -0
- package/lib/cjs/tile/TileStorage.d.ts.map +1 -0
- package/lib/cjs/tile/TileStorage.js +50 -0
- package/lib/cjs/tile/TileStorage.js.map +1 -0
- package/lib/cjs/tile/internal.d.ts +2 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +2 -0
- package/lib/cjs/tile/internal.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.d.ts +0 -2
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -24
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.d.ts +8 -3
- package/lib/cjs/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +36 -14
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +2 -7
- package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +100 -90
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts +9 -12
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js +70 -67
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +9 -16
- 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 +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +8 -6
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +3 -3
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +21 -6
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.d.ts +62 -6
- package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +103 -17
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +4 -2
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +11 -7
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +68 -15
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +88 -30
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.d.ts.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/MapTileLoader.d.ts +2 -2
- package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +11 -20
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +72 -7
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +72 -16
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts +67 -55
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +71 -67
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.d.ts +24 -2
- package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
- package/lib/cjs/tile/map/QuadId.js +49 -20
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +79 -19
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js +28 -13
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/TerrainProvider.d.ts +34 -0
- package/lib/cjs/tile/map/TerrainProvider.d.ts.map +1 -0
- package/lib/cjs/tile/map/TerrainProvider.js +41 -0
- package/lib/cjs/tile/map/TerrainProvider.js.map +1 -0
- package/lib/cjs/tile/map/WmsCapabilities.js +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +7 -3
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tile/object-storage-azure.js +5 -0
- package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +87 -26
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.d.ts +2 -2
- package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +29 -16
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +26 -10
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +65 -41
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +9 -4
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
- package/lib/cjs/tools/SelectTool.js +20 -9
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts.map +1 -1
- package/lib/cjs/tools/Tool.js +13 -5
- 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 +27 -9
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +111 -40
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +60 -15
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +47 -37
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/AuxCoordSys.d.ts.map +1 -1
- package/lib/esm/AuxCoordSys.js +2 -3
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/CategorySelectorState.d.ts.map +1 -1
- package/lib/esm/CategorySelectorState.js +6 -4
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/DevTools.d.ts.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyleState.js +1 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +4 -2
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/FrustumAnimator.d.ts.map +1 -1
- package/lib/esm/FrustumAnimator.js +5 -1
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/FuzzySearch.d.ts.map +1 -1
- package/lib/esm/FuzzySearch.js +9 -3
- package/lib/esm/FuzzySearch.js.map +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +13 -3
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +7 -2
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +11 -3
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +3 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/ImageUtil.d.ts +6 -0
- package/lib/esm/ImageUtil.d.ts.map +1 -1
- package/lib/esm/ImageUtil.js +12 -0
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +5 -1
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/NativeAppLogger.d.ts.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/TentativePoint.d.ts.map +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/ViewManager.d.ts +4 -0
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +9 -3
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewRect.d.ts.map +1 -1
- package/lib/esm/ViewRect.js +5 -1
- package/lib/esm/ViewRect.js.map +1 -1
- package/lib/esm/ViewState.d.ts +36 -12
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +35 -25
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.d.ts.map +1 -1
- package/lib/esm/ViewingSpace.js +12 -5
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +14 -0
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +106 -5
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +6 -0
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +6 -0
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.d.ts.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/ExtensionImpl.d.ts.map +1 -1
- package/lib/esm/extension/ExtensionImpl.js +3 -1
- package/lib/esm/extension/ExtensionImpl.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js +12 -1
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/public/scripts/checkbrowser.js +24 -0
- package/lib/esm/render/Decorations.d.ts.map +1 -1
- package/lib/esm/render/Decorations.js +24 -6
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.d.ts +19 -0
- package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -0
- package/lib/esm/render/RealityMeshGraphicParams.js +9 -0
- package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -0
- package/lib/esm/render/RealityMeshParams.d.ts +130 -0
- package/lib/esm/render/RealityMeshParams.d.ts.map +1 -0
- package/lib/esm/render/RealityMeshParams.js +172 -0
- package/lib/esm/render/RealityMeshParams.js.map +1 -0
- package/lib/esm/render/RenderSystem.d.ts +8 -4
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +7 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTexture.d.ts +1 -1
- package/lib/esm/render/RenderTexture.d.ts.map +1 -1
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/UpsampleRealityMeshParams.d.ts +11 -0
- package/lib/esm/render/UpsampleRealityMeshParams.d.ts.map +1 -0
- package/lib/esm/render/UpsampleRealityMeshParams.js +201 -0
- package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -0
- package/lib/esm/render/primitives/DisplayParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
- package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/esm/render/primitives/Polyface.js +3 -1
- package/lib/esm/render/primitives/Polyface.js.map +1 -1
- package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/Primitives.js.map +1 -1
- package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/esm/render/primitives/Strokes.js +6 -2
- package/lib/esm/render/primitives/Strokes.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js +1 -79
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +4 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js +4 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +12 -3
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.js +4 -1
- package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +5 -2
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/Matrix.d.ts.map +1 -1
- package/lib/esm/render/webgl/Matrix.js +16 -4
- package/lib/esm/render/webgl/Matrix.js.map +1 -1
- package/lib/esm/render/webgl/PerformanceMetrics.js +2 -2
- package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +3 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +6 -6
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +20 -12
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +3 -2
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +3 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +4 -1
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +17 -5
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +6 -4
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +21 -4
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +3 -1
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +21 -12
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js +8 -2
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +3 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.js +1 -1
- package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +3 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +8 -4
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js +3 -1
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +14 -11
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.d.ts +57 -3
- package/lib/esm/tile/RealityTile.d.ts.map +1 -1
- package/lib/esm/tile/RealityTile.js +49 -5
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts +37 -2
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +30 -2
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.d.ts.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +6 -2
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +12 -0
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +35 -4
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +11 -17
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequest.d.ts +5 -1
- package/lib/esm/tile/TileRequest.d.ts.map +1 -1
- package/lib/esm/tile/TileRequest.js +6 -2
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileStorage.d.ts +13 -0
- package/lib/esm/tile/TileStorage.d.ts.map +1 -0
- package/lib/esm/tile/TileStorage.js +46 -0
- package/lib/esm/tile/TileStorage.js.map +1 -0
- package/lib/esm/tile/internal.d.ts +2 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +2 -0
- package/lib/esm/tile/internal.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.d.ts +0 -2
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -24
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.d.ts +8 -3
- package/lib/esm/tile/map/BingElevation.d.ts.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +36 -14
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +2 -7
- package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +101 -91
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts +9 -12
- package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js +71 -68
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +9 -16
- 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 +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +8 -6
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +3 -3
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +21 -6
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.d.ts +62 -6
- package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +103 -17
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +4 -2
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +11 -7
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +68 -15
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +88 -30
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.d.ts.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/MapTileLoader.d.ts +2 -2
- package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +12 -21
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +72 -7
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +73 -17
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts +67 -55
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +72 -68
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.d.ts +24 -2
- package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
- package/lib/esm/tile/map/QuadId.js +49 -20
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +79 -19
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js +28 -13
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/TerrainProvider.d.ts +34 -0
- package/lib/esm/tile/map/TerrainProvider.d.ts.map +1 -0
- package/lib/esm/tile/map/TerrainProvider.js +37 -0
- package/lib/esm/tile/map/TerrainProvider.js.map +1 -0
- package/lib/esm/tile/map/WmsCapabilities.js +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +7 -3
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tile/object-storage-azure.js +5 -0
- package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +87 -26
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.d.ts +2 -2
- package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +29 -16
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +26 -10
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
- package/lib/esm/tools/MeasureTool.js +65 -41
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +9 -4
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.d.ts.map +1 -1
- package/lib/esm/tools/SelectTool.js +20 -9
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts.map +1 -1
- package/lib/esm/tools/Tool.js +13 -5
- 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 +27 -9
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +111 -40
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +31 -25
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts +0 -47
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +0 -1
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js +0 -75
- package/lib/cjs/render/primitives/mesh/RealityMeshPrimitive.js.map +0 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +0 -56
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts.map +0 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +0 -270
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +0 -1
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts +0 -47
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.d.ts.map +0 -1
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js +0 -71
- package/lib/esm/render/primitives/mesh/RealityMeshPrimitive.js.map +0 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +0 -56
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts.map +0 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +0 -266
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +0 -1
|
@@ -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, 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);\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, new FrustumPlanes(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 const useMRT = System.instance.capabilities.supportsDrawBuffers;\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 if (!useMRT) target.compositor.currentRenderTargetIndex = 0;\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, 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);\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, new FrustumPlanes(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 const useMRT = System.instance.capabilities.supportsDrawBuffers;\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 if (!useMRT)\r\n target.compositor.currentRenderTargetIndex = 0;\r\n\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInfo.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAY;IACtC,SAAgB,eAAe,EAAE,OAAO,CAAC;IAEzC,OAAO;WAKO,aAAa,CAAC,KAAK,EAAE,SAAS;WAC9B,gBAAgB,CAAC,eAAe,EAAE,OAAO;WACzC,kBAAkB,CAAC,KAAK,EAAE,QAAQ;WAElC,oBAAoB,CAAC,UAAU,EAAE,UAAU;WAI3C,qBAAqB,CAAC,EAAE,EAAE,WAAW;IAInD,IAAW,SAAS,YAA0C;IAC9D,IAAW,YAAY,YAA8B;IACrD,IAAW,OAAO,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"ColorInfo.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAY;IACtC,SAAgB,eAAe,EAAE,OAAO,CAAC;IAEzC,OAAO;WAKO,aAAa,CAAC,KAAK,EAAE,SAAS;WAC9B,gBAAgB,CAAC,eAAe,EAAE,OAAO;WACzC,kBAAkB,CAAC,KAAK,EAAE,QAAQ;WAElC,oBAAoB,CAAC,UAAU,EAAE,UAAU;WAI3C,qBAAqB,CAAC,EAAE,EAAE,WAAW;IAInD,IAAW,SAAS,YAA0C;IAC9D,IAAW,YAAY,YAA8B;IACrD,IAAW,OAAO,IAAI,SAAS,CAG9B;IAED,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAuB;IAC5D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwB;CACzD"}
|
|
@@ -26,7 +26,10 @@ export class ColorInfo {
|
|
|
26
26
|
}
|
|
27
27
|
get isUniform() { return undefined !== this._uniform; }
|
|
28
28
|
get isNonUniform() { return !this.isUniform; }
|
|
29
|
-
get uniform() {
|
|
29
|
+
get uniform() {
|
|
30
|
+
assert(this.isUniform);
|
|
31
|
+
return this._uniform;
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
ColorInfo._nonUniformTranslucent = new ColorInfo(true);
|
|
32
35
|
ColorInfo._nonUniformOpaque = new ColorInfo(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,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,SAAS,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,
|
|
1
|
+
{"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,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,SAAS,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,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;;AAEc,gCAAsB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,2BAAiB,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ColorDef, ColorIndex } from \"@itwin/core-common\";\r\nimport { VertexTable } from \"../primitives/VertexTable\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAM3C,gBAAgB;AAChB,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAA+B;IAElD,IAAW,MAAM,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,10 @@ export class ShaderProgramParams {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
this._renderPass = 255 /* None */;
|
|
17
17
|
}
|
|
18
|
-
get target() {
|
|
18
|
+
get target() {
|
|
19
|
+
assert(undefined !== this._target);
|
|
20
|
+
return this._target;
|
|
21
|
+
}
|
|
19
22
|
get renderPass() { return this._renderPass; }
|
|
20
23
|
get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }
|
|
21
24
|
bindProjectionMatrix(uniform) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }
|
|
@@ -29,8 +32,14 @@ export class ShaderProgramParams {
|
|
|
29
32
|
}
|
|
30
33
|
/** @internal */
|
|
31
34
|
export class DrawParams {
|
|
32
|
-
get geometry() {
|
|
33
|
-
|
|
35
|
+
get geometry() {
|
|
36
|
+
assert(undefined !== this._geometry);
|
|
37
|
+
return this._geometry;
|
|
38
|
+
}
|
|
39
|
+
get programParams() {
|
|
40
|
+
assert(undefined !== this._programParams);
|
|
41
|
+
return this._programParams;
|
|
42
|
+
}
|
|
34
43
|
get target() { return this.programParams.target; }
|
|
35
44
|
get renderPass() { return this.programParams.renderPass; }
|
|
36
45
|
get projectionMatrix() { return this.programParams.projectionMatrix; }
|
|
@@ -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 { 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 { 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 { assert(undefined !== this._target); return this._target; }\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 { assert(undefined !== this._geometry); return this._geometry; }\r\n public get programParams(): ShaderProgramParams { assert(undefined !== this._programParams); return this._programParams; }\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() { return this.programParams.isViewCoords; }\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 && System.instance.isWebGL2 && (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 flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\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) continue;\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\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);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.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 { 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 { 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() { return this.programParams.isViewCoords; }\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 && System.instance.isWebGL2 && (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 flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\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\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);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameBuffer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,gBAAgB;AAChB,oBAAY,WAAW,GAAG,YAAY,GAAG,uBAAuB,GAAG,aAAa,CAAC;AAGjF,gBAAgB;AAChB,0BAAkB,oBAAoB;IACpC,OAAO,IAAA;IACP,KAAK,IAAA;IACL,oBAAoB,IAAA;IACpB,iBAAiB,IAAA;IACjB,gCAAgC,IAAA;IAChC,SAAS,IAAA;CACV;AAED,gBAAgB;AAChB,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,IAAI,CAAC,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,UAAU,CAAsD;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,SAAgB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1C,SAAgB,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5C,IAAW,UAAU,IAAI,OAAO,CAAoC;IAEpE,IAAW,OAAO,IAAI,OAAO,CAAsI;IAEnK,IAAW,mBAAmB,IAAI,OAAO,CAAoJ;IAE7L,IAAW,WAAW,IAAI,OAAO,CAA+D;IAEhG,IAAW,cAAc,IAAI,OAAO,CAAgF;IAE7G,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAQ3C,OAAO;WAiEO,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,uBAAuB,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IAQjN,OAAO,IAAI,IAAI;IAYf,IAAI,CAAC,eAAe,GAAE,OAAe,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO;IAwBxE,MAAM;IAMN,OAAO;
|
|
1
|
+
{"version":3,"file":"FrameBuffer.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,gBAAgB;AAChB,oBAAY,WAAW,GAAG,YAAY,GAAG,uBAAuB,GAAG,aAAa,CAAC;AAGjF,gBAAgB;AAChB,0BAAkB,oBAAoB;IACpC,OAAO,IAAA;IACP,KAAK,IAAA;IACL,oBAAoB,IAAA;IACpB,iBAAiB,IAAA;IACjB,gCAAgC,IAAA;IAChC,SAAS,IAAA;CACV;AAED,gBAAgB;AAChB,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,IAAI,CAAC,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,UAAU,CAAsD;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IACjE,SAAgB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1C,SAAgB,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5C,IAAW,UAAU,IAAI,OAAO,CAAoC;IAEpE,IAAW,OAAO,IAAI,OAAO,CAAsI;IAEnK,IAAW,mBAAmB,IAAI,OAAO,CAAoJ;IAE7L,IAAW,WAAW,IAAI,OAAO,CAA+D;IAEhG,IAAW,cAAc,IAAI,OAAO,CAAgF;IAE7G,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAQ3C,OAAO;WAiEO,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,uBAAuB,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IAQjN,OAAO,IAAI,IAAI;IAYf,IAAI,CAAC,eAAe,GAAE,OAAe,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO;IAwBxE,MAAM;IAMN,OAAO;IAKP,gBAAgB,IAAI,IAAI;IAQ/B;;OAEG;IACI,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM;IA0C/D;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAiB/G,IAAW,WAAW,IAAI,UAAU,GAAG,SAAS,CAkB/C;CACF;AAQD,gBAAgB;AAChB,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,OAAO,KAAK,IAAI,GAA8E;IAEvF,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAG,IAAI;IAYjF,GAAG,IAAI,IAAI;IAuBlB,IAAW,kBAAkB,IAAI,aAAa,GAAG,SAAS,CAGzD;IAED,IAAW,qBAAqB,IAAI,OAAO,CAE1C;IAED,IAAW,OAAO,IAAI,OAAO,CAAqC;IAE3D,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI;IAM/F,gBAAgB,IAAI,IAAI;IAMxB,OAAO,IAAI,IAAI;IAMf,MAAM,IAAI,IAAI;CAatB"}
|
|
@@ -131,7 +131,10 @@ export class FrameBuffer {
|
|
|
131
131
|
System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);
|
|
132
132
|
this._bindState = 0 /* Unbound */;
|
|
133
133
|
}
|
|
134
|
-
suspend() {
|
|
134
|
+
suspend() {
|
|
135
|
+
assert(this.isBound);
|
|
136
|
+
this._bindState = 5 /* Suspended */;
|
|
137
|
+
}
|
|
135
138
|
markTargetsDirty() {
|
|
136
139
|
for (const msBuff of this._colorMsBuffers) {
|
|
137
140
|
msBuff.markBufferDirty(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameBuffer.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { RenderBuffer, RenderBufferMultiSample } from \"./RenderBuffer\";\r\nimport { System } from \"./System\";\r\nimport { TextureHandle } from \"./Texture\";\r\n\r\n/** @internal */\r\nexport type DepthBuffer = RenderBuffer | RenderBufferMultiSample | TextureHandle;\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FrameBufferBindState {\r\n Unbound,\r\n Bound,\r\n BoundWithAttachments,\r\n BoundMultisampled,\r\n BoundWithAttachmentsMultisampled,\r\n Suspended,\r\n}\r\n\r\n/** @internal */\r\nexport class FrameBuffer implements WebGLDisposable {\r\n private _fbo?: WebGLFramebuffer;\r\n private _fboMs?: WebGLFramebuffer;\r\n private _bindState: FrameBufferBindState = FrameBufferBindState.Unbound;\r\n private readonly _colorTextures: TextureHandle[] = [];\r\n private readonly _colorMsBuffers: RenderBufferMultiSample[] = [];\r\n private readonly _colorAttachments: GLenum[] = [];\r\n private readonly _colorMsFilters: GL.MultiSampling.Filter[] = [];\r\n public readonly depthBuffer?: DepthBuffer;\r\n public readonly depthBufferMs?: DepthBuffer;\r\n\r\n public get isDisposed(): boolean { return this._fbo === undefined; }\r\n\r\n public get isBound(): boolean { return FrameBufferBindState.Bound <= this._bindState && FrameBufferBindState.BoundWithAttachmentsMultisampled >= this._bindState; }\r\n\r\n public get isBoundMultisampled(): boolean { return FrameBufferBindState.BoundMultisampled === this._bindState || FrameBufferBindState.BoundWithAttachmentsMultisampled === this._bindState; }\r\n\r\n public get isSuspended(): boolean { return FrameBufferBindState.Suspended === this._bindState; }\r\n\r\n public get isMultisampled(): boolean { return this._colorMsBuffers.length > 0 || undefined !== this.depthBufferMs; }\r\n\r\n public getColor(ndx: number): TextureHandle {\r\n assert(ndx < this._colorTextures.length);\r\n if (ndx < this._colorMsBuffers.length && this._colorMsBuffers[ndx].isDirty) {\r\n this.blitMsBuffersToTextures(false, ndx);\r\n }\r\n return this._colorTextures[ndx];\r\n }\r\n\r\n private constructor(fbo: WebGLFramebuffer, colorTextures: TextureHandle[], depthBuffer?: DepthBuffer,\r\n colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer) {\r\n this._fbo = fbo;\r\n const gl = System.instance.context;\r\n\r\n this.bind(false);\r\n\r\n let i: number = 0;\r\n for (const colTex of colorTextures) {\r\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\r\n this._colorAttachments.push(attachmentEnum);\r\n this._colorTextures.push(colTex);\r\n const texHandle = colTex.getHandle();\r\n if (undefined !== texHandle)\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentEnum, gl.TEXTURE_2D, texHandle, 0);\r\n i++;\r\n }\r\n\r\n if (depthBuffer !== undefined) {\r\n this.depthBuffer = depthBuffer;\r\n const dbHandle = depthBuffer.getHandle();\r\n if (undefined !== dbHandle) {\r\n if (depthBuffer instanceof RenderBuffer) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\r\n } else if (depthBuffer instanceof RenderBufferMultiSample) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\r\n } else {\r\n // Looks like we only get a 24 bit depth buffer anyway, so use a 24-8 with a stencil.\r\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\r\n }\r\n }\r\n }\r\n\r\n this.unbind();\r\n\r\n if (undefined !== colorMsBuffers && colorMsBuffers.length === colorTextures.length && undefined !== msFilters && msFilters.length === colorMsBuffers.length) {\r\n // Create a matching FBO with multisampling render buffers.\r\n const fbo2 = System.instance.context.createFramebuffer();\r\n if (null !== fbo2) {\r\n this._fboMs = fbo2;\r\n this.bind(false, true);\r\n i = 0;\r\n for (const colMsBuff of colorMsBuffers) {\r\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\r\n this._colorMsBuffers.push(colMsBuff);\r\n this._colorMsFilters.push(msFilters[i]);\r\n const msBuffHandle = colMsBuff.getHandle();\r\n if (undefined !== msBuffHandle)\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentEnum, gl.RENDERBUFFER, msBuffHandle);\r\n i++;\r\n }\r\n\r\n if (depthBufferMs !== undefined) {\r\n this.depthBufferMs = depthBufferMs;\r\n const dbHandleMs = depthBufferMs.getHandle();\r\n if (undefined !== dbHandleMs) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandleMs);\r\n }\r\n }\r\n this.unbind();\r\n }\r\n }\r\n }\r\n\r\n public static create(colorTextures: TextureHandle[], depthBuffer?: DepthBuffer, colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer): FrameBuffer | undefined {\r\n const fbo: WebGLFramebuffer | null = System.instance.context.createFramebuffer();\r\n if (null === fbo) {\r\n return undefined;\r\n }\r\n return new FrameBuffer(fbo, colorTextures, depthBuffer, colorMsBuffers, msFilters, depthBufferMs);\r\n }\r\n\r\n public dispose(): void {\r\n // NB: The FrameBuffer does not *own* the textures and depth buffer.\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteFramebuffer(this._fbo!);\r\n this._fbo = undefined;\r\n if (undefined !== this._fboMs) {\r\n System.instance.context.deleteFramebuffer(this._fboMs);\r\n this._fboMs = undefined;\r\n }\r\n }\r\n }\r\n\r\n public bind(bindAttachments: boolean = false, bindMS: boolean = false): boolean {\r\n assert(undefined !== this._fbo);\r\n assert(!this.isBound);\r\n\r\n if (undefined === this._fbo)\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n\r\n if (bindMS && undefined !== this._fboMs) {\r\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fboMs);\r\n this._bindState = FrameBufferBindState.BoundMultisampled;\r\n } else {\r\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fbo);\r\n this._bindState = FrameBufferBindState.Bound;\r\n }\r\n\r\n if (bindAttachments) {\r\n System.instance.setDrawBuffers(this._colorAttachments);\r\n this._bindState++;\r\n }\r\n return true;\r\n }\r\n\r\n public unbind() {\r\n assert(this.isBound);\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n this._bindState = FrameBufferBindState.Unbound;\r\n }\r\n\r\n public suspend() { assert(this.isBound); this._bindState = FrameBufferBindState.Suspended; }\r\n\r\n public markTargetsDirty(): void {\r\n for (const msBuff of this._colorMsBuffers) {\r\n msBuff.markBufferDirty(true);\r\n }\r\n if (undefined !== this.depthBufferMs)\r\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(true);\r\n }\r\n\r\n /** blitDepth is true to blit the depth/stencil buffer. ndx is index of single attachment to blit.\r\n * All color attachments are blitted if ndx is undefined, none are blitted if ndx is -1.\r\n */\r\n public blitMsBuffersToTextures(blitDepth: boolean, ndx?: number) {\r\n if (!this._fboMs)\r\n return;\r\n System.instance.frameBufferStack.suspend();\r\n const gl2 = System.instance.context as WebGL2RenderingContext;\r\n const attachments = [];\r\n const max = (undefined === ndx ? this._colorMsBuffers.length : ndx + 1);\r\n for (let i = 0; i < max; ++i) {\r\n if (undefined !== ndx && i < ndx) {\r\n attachments.push(gl2.NONE); // skip this one, but first add a NONE for it in the attachment list\r\n continue;\r\n }\r\n if (this._colorMsBuffers[i].isDirty) {\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\r\n gl2.readBuffer(this._colorAttachments[i]);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\r\n attachments.push(this._colorAttachments[i]);\r\n gl2.drawBuffers(attachments);\r\n attachments.pop();\r\n attachments.push(gl2.NONE);\r\n gl2.blitFramebuffer(0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\r\n 0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\r\n GL.BufferBit.Color, this._colorMsFilters[i]);\r\n this._colorMsBuffers[i].markBufferDirty(false);\r\n if (undefined !== ndx && i === ndx)\r\n break;\r\n }\r\n }\r\n if (blitDepth && undefined !== this.depthBuffer && undefined !== this.depthBufferMs && (this.depthBufferMs as RenderBufferMultiSample).isDirty) {\r\n const mask = GL.BufferBit.Depth; // (this.depthBuffer instanceof RenderBuffer ? GL.BufferBit.Depth : GL.BufferBit.Depth | GL.BufferBit.Stencil);\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\r\n gl2.blitFramebuffer(0, 0, this.depthBuffer.width, this.depthBuffer.height,\r\n 0, 0, this.depthBuffer.width, this.depthBuffer.height,\r\n mask, GL.MultiSampling.Filter.Nearest);\r\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(false);\r\n }\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, null);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, null);\r\n System.instance.frameBufferStack.resume();\r\n }\r\n\r\n /** invDepth is true to invalidate depth buffer. invStencil is true to invalidate stencil buffer. ndx is index of single color attachment to invalidate.\r\n * All color attachments are invalidated if ndx is undefined, none are invalidated if ndx is -1.\r\n * Set withMultiSampling to true to invalidate the MS buffers.\r\n */\r\n public invalidate(invDepth: boolean, invStencil: boolean, withMultiSampling: boolean, indices?: number[]): void {\r\n const gl = System.instance.context;\r\n const attachments = invDepth ? (invStencil ? [gl.DEPTH_STENCIL_ATTACHMENT] : [System.instance.context.DEPTH_ATTACHMENT]) : (invDepth ? [gl.STENCIL_ATTACHMENT] : []);\r\n if (undefined !== indices) {\r\n if (indices.length > 0) {\r\n for (const i of indices)\r\n attachments.push(gl.COLOR_ATTACHMENT0 + i);\r\n }\r\n } else {\r\n attachments.concat(this._colorAttachments);\r\n }\r\n System.instance.frameBufferStack.execute(this, true, withMultiSampling, () => {\r\n System.instance.invalidateFrameBuffer(attachments);\r\n });\r\n }\r\n\r\n // Chiefly for debugging currently - assumes RGBA, unsigned byte, want all pixels.\r\n public get debugPixels(): Uint8Array | undefined {\r\n if (!this.isBound || 0 === this._colorTextures.length || !(this._colorTextures[0] instanceof TextureHandle))\r\n return undefined;\r\n\r\n const tex = this._colorTextures[0];\r\n if (GL.Texture.Format.Rgba !== tex.format || GL.Texture.DataType.UnsignedByte !== tex.dataType)\r\n return undefined;\r\n\r\n const buffer = new Uint8Array(tex.width * tex.height * 4);\r\n for (let i = 0; i < buffer.length; i += 4) {\r\n buffer[i] = 0xba;\r\n buffer[i + 1] = 0xad;\r\n buffer[i + 2] = 0xf0;\r\n buffer[i + 3] = 0x0d;\r\n }\r\n\r\n System.instance.context.readPixels(0, 0, tex.width, tex.height, tex.format, tex.dataType, buffer);\r\n return buffer;\r\n }\r\n}\r\n\r\ninterface Binding {\r\n fbo: FrameBuffer;\r\n withAttachments: boolean;\r\n withMultSampling: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class FrameBufferStack {\r\n // FrameBuffers within this array are not owned, as this is only a storage device holding references\r\n private readonly _stack: Binding[] = [];\r\n\r\n private get _top() { return !this.isEmpty ? this._stack[this._stack.length - 1] : undefined; }\r\n\r\n public push(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean): void {\r\n if (undefined !== this._top) {\r\n this._top.fbo.suspend();\r\n }\r\n\r\n assert(!fbo.isBound);\r\n fbo.bind(withAttachments, withMultSampling);\r\n assert(fbo.isBound);\r\n\r\n this._stack.push({ fbo, withAttachments, withMultSampling });\r\n }\r\n\r\n public pop(): void {\r\n assert(!this.isEmpty);\r\n if (undefined === this._top) {\r\n return;\r\n }\r\n\r\n const fbo = this._top.fbo;\r\n this._stack.pop();\r\n\r\n assert(fbo.isBound);\r\n fbo.unbind();\r\n assert(!fbo.isBound);\r\n\r\n if (this.isEmpty) {\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n } else {\r\n const top = this._top;\r\n assert(top.fbo.isSuspended);\r\n top.fbo.bind(top.withAttachments, top.withMultSampling);\r\n assert(top.fbo.isBound);\r\n }\r\n }\r\n\r\n public get currentColorBuffer(): TextureHandle | undefined {\r\n assert(!this.isEmpty);\r\n return undefined !== this._top ? this._top.fbo.getColor(0) : undefined;\r\n }\r\n\r\n public get currentFbMultisampled(): boolean {\r\n return undefined !== this._top ? this._top.fbo.isBoundMultisampled : false;\r\n }\r\n\r\n public get isEmpty(): boolean { return 0 === this._stack.length; }\r\n\r\n public execute(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean, func: () => void) {\r\n this.push(fbo, withAttachments, withMultSampling);\r\n func();\r\n this.pop();\r\n }\r\n\r\n public markTargetsDirty(): void {\r\n const top = this._top;\r\n if (undefined !== top)\r\n top.fbo.markTargetsDirty();\r\n }\r\n\r\n public suspend(): void {\r\n if (undefined !== this._top) {\r\n this._top.fbo.suspend();\r\n }\r\n }\r\n\r\n public resume(): void {\r\n if (undefined === this._top) {\r\n return;\r\n }\r\n\r\n if (this.isEmpty) {\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n } else {\r\n const top = this._top;\r\n top.fbo.bind(top.withAttachments, top.withMultSampling);\r\n assert(top.fbo.isBound);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FrameBuffer.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrameBuffer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { RenderBuffer, RenderBufferMultiSample } from \"./RenderBuffer\";\r\nimport { System } from \"./System\";\r\nimport { TextureHandle } from \"./Texture\";\r\n\r\n/** @internal */\r\nexport type DepthBuffer = RenderBuffer | RenderBufferMultiSample | TextureHandle;\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport const enum FrameBufferBindState {\r\n Unbound,\r\n Bound,\r\n BoundWithAttachments,\r\n BoundMultisampled,\r\n BoundWithAttachmentsMultisampled,\r\n Suspended,\r\n}\r\n\r\n/** @internal */\r\nexport class FrameBuffer implements WebGLDisposable {\r\n private _fbo?: WebGLFramebuffer;\r\n private _fboMs?: WebGLFramebuffer;\r\n private _bindState: FrameBufferBindState = FrameBufferBindState.Unbound;\r\n private readonly _colorTextures: TextureHandle[] = [];\r\n private readonly _colorMsBuffers: RenderBufferMultiSample[] = [];\r\n private readonly _colorAttachments: GLenum[] = [];\r\n private readonly _colorMsFilters: GL.MultiSampling.Filter[] = [];\r\n public readonly depthBuffer?: DepthBuffer;\r\n public readonly depthBufferMs?: DepthBuffer;\r\n\r\n public get isDisposed(): boolean { return this._fbo === undefined; }\r\n\r\n public get isBound(): boolean { return FrameBufferBindState.Bound <= this._bindState && FrameBufferBindState.BoundWithAttachmentsMultisampled >= this._bindState; }\r\n\r\n public get isBoundMultisampled(): boolean { return FrameBufferBindState.BoundMultisampled === this._bindState || FrameBufferBindState.BoundWithAttachmentsMultisampled === this._bindState; }\r\n\r\n public get isSuspended(): boolean { return FrameBufferBindState.Suspended === this._bindState; }\r\n\r\n public get isMultisampled(): boolean { return this._colorMsBuffers.length > 0 || undefined !== this.depthBufferMs; }\r\n\r\n public getColor(ndx: number): TextureHandle {\r\n assert(ndx < this._colorTextures.length);\r\n if (ndx < this._colorMsBuffers.length && this._colorMsBuffers[ndx].isDirty) {\r\n this.blitMsBuffersToTextures(false, ndx);\r\n }\r\n return this._colorTextures[ndx];\r\n }\r\n\r\n private constructor(fbo: WebGLFramebuffer, colorTextures: TextureHandle[], depthBuffer?: DepthBuffer,\r\n colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer) {\r\n this._fbo = fbo;\r\n const gl = System.instance.context;\r\n\r\n this.bind(false);\r\n\r\n let i: number = 0;\r\n for (const colTex of colorTextures) {\r\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\r\n this._colorAttachments.push(attachmentEnum);\r\n this._colorTextures.push(colTex);\r\n const texHandle = colTex.getHandle();\r\n if (undefined !== texHandle)\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentEnum, gl.TEXTURE_2D, texHandle, 0);\r\n i++;\r\n }\r\n\r\n if (depthBuffer !== undefined) {\r\n this.depthBuffer = depthBuffer;\r\n const dbHandle = depthBuffer.getHandle();\r\n if (undefined !== dbHandle) {\r\n if (depthBuffer instanceof RenderBuffer) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\r\n } else if (depthBuffer instanceof RenderBufferMultiSample) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandle);\r\n } else {\r\n // Looks like we only get a 24 bit depth buffer anyway, so use a 24-8 with a stencil.\r\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\r\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D, dbHandle, 0);\r\n }\r\n }\r\n }\r\n\r\n this.unbind();\r\n\r\n if (undefined !== colorMsBuffers && colorMsBuffers.length === colorTextures.length && undefined !== msFilters && msFilters.length === colorMsBuffers.length) {\r\n // Create a matching FBO with multisampling render buffers.\r\n const fbo2 = System.instance.context.createFramebuffer();\r\n if (null !== fbo2) {\r\n this._fboMs = fbo2;\r\n this.bind(false, true);\r\n i = 0;\r\n for (const colMsBuff of colorMsBuffers) {\r\n const attachmentEnum: GLenum = gl.COLOR_ATTACHMENT0 + i;\r\n this._colorMsBuffers.push(colMsBuff);\r\n this._colorMsFilters.push(msFilters[i]);\r\n const msBuffHandle = colMsBuff.getHandle();\r\n if (undefined !== msBuffHandle)\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentEnum, gl.RENDERBUFFER, msBuffHandle);\r\n i++;\r\n }\r\n\r\n if (depthBufferMs !== undefined) {\r\n this.depthBufferMs = depthBufferMs;\r\n const dbHandleMs = depthBufferMs.getHandle();\r\n if (undefined !== dbHandleMs) {\r\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, dbHandleMs);\r\n }\r\n }\r\n this.unbind();\r\n }\r\n }\r\n }\r\n\r\n public static create(colorTextures: TextureHandle[], depthBuffer?: DepthBuffer, colorMsBuffers?: RenderBufferMultiSample[], msFilters?: GL.MultiSampling.Filter[], depthBufferMs?: DepthBuffer): FrameBuffer | undefined {\r\n const fbo: WebGLFramebuffer | null = System.instance.context.createFramebuffer();\r\n if (null === fbo) {\r\n return undefined;\r\n }\r\n return new FrameBuffer(fbo, colorTextures, depthBuffer, colorMsBuffers, msFilters, depthBufferMs);\r\n }\r\n\r\n public dispose(): void {\r\n // NB: The FrameBuffer does not *own* the textures and depth buffer.\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteFramebuffer(this._fbo!);\r\n this._fbo = undefined;\r\n if (undefined !== this._fboMs) {\r\n System.instance.context.deleteFramebuffer(this._fboMs);\r\n this._fboMs = undefined;\r\n }\r\n }\r\n }\r\n\r\n public bind(bindAttachments: boolean = false, bindMS: boolean = false): boolean {\r\n assert(undefined !== this._fbo);\r\n assert(!this.isBound);\r\n\r\n if (undefined === this._fbo)\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n\r\n if (bindMS && undefined !== this._fboMs) {\r\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fboMs);\r\n this._bindState = FrameBufferBindState.BoundMultisampled;\r\n } else {\r\n gl.bindFramebuffer(GL.FrameBuffer.TARGET, this._fbo);\r\n this._bindState = FrameBufferBindState.Bound;\r\n }\r\n\r\n if (bindAttachments) {\r\n System.instance.setDrawBuffers(this._colorAttachments);\r\n this._bindState++;\r\n }\r\n return true;\r\n }\r\n\r\n public unbind() {\r\n assert(this.isBound);\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n this._bindState = FrameBufferBindState.Unbound;\r\n }\r\n\r\n public suspend() {\r\n assert(this.isBound);\r\n this._bindState = FrameBufferBindState.Suspended;\r\n }\r\n\r\n public markTargetsDirty(): void {\r\n for (const msBuff of this._colorMsBuffers) {\r\n msBuff.markBufferDirty(true);\r\n }\r\n if (undefined !== this.depthBufferMs)\r\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(true);\r\n }\r\n\r\n /** blitDepth is true to blit the depth/stencil buffer. ndx is index of single attachment to blit.\r\n * All color attachments are blitted if ndx is undefined, none are blitted if ndx is -1.\r\n */\r\n public blitMsBuffersToTextures(blitDepth: boolean, ndx?: number) {\r\n if (!this._fboMs)\r\n return;\r\n System.instance.frameBufferStack.suspend();\r\n const gl2 = System.instance.context as WebGL2RenderingContext;\r\n const attachments = [];\r\n const max = (undefined === ndx ? this._colorMsBuffers.length : ndx + 1);\r\n for (let i = 0; i < max; ++i) {\r\n if (undefined !== ndx && i < ndx) {\r\n attachments.push(gl2.NONE); // skip this one, but first add a NONE for it in the attachment list\r\n continue;\r\n }\r\n if (this._colorMsBuffers[i].isDirty) {\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\r\n gl2.readBuffer(this._colorAttachments[i]);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\r\n attachments.push(this._colorAttachments[i]);\r\n gl2.drawBuffers(attachments);\r\n attachments.pop();\r\n attachments.push(gl2.NONE);\r\n gl2.blitFramebuffer(0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\r\n 0, 0, this._colorTextures[i].width, this._colorTextures[i].height,\r\n GL.BufferBit.Color, this._colorMsFilters[i]);\r\n this._colorMsBuffers[i].markBufferDirty(false);\r\n if (undefined !== ndx && i === ndx)\r\n break;\r\n }\r\n }\r\n if (blitDepth && undefined !== this.depthBuffer && undefined !== this.depthBufferMs && (this.depthBufferMs as RenderBufferMultiSample).isDirty) {\r\n const mask = GL.BufferBit.Depth; // (this.depthBuffer instanceof RenderBuffer ? GL.BufferBit.Depth : GL.BufferBit.Depth | GL.BufferBit.Stencil);\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, this._fboMs);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, this._fbo!);\r\n gl2.blitFramebuffer(0, 0, this.depthBuffer.width, this.depthBuffer.height,\r\n 0, 0, this.depthBuffer.width, this.depthBuffer.height,\r\n mask, GL.MultiSampling.Filter.Nearest);\r\n (this.depthBufferMs as RenderBufferMultiSample).markBufferDirty(false);\r\n }\r\n gl2.bindFramebuffer(gl2.READ_FRAMEBUFFER, null);\r\n gl2.bindFramebuffer(gl2.DRAW_FRAMEBUFFER, null);\r\n System.instance.frameBufferStack.resume();\r\n }\r\n\r\n /** invDepth is true to invalidate depth buffer. invStencil is true to invalidate stencil buffer. ndx is index of single color attachment to invalidate.\r\n * All color attachments are invalidated if ndx is undefined, none are invalidated if ndx is -1.\r\n * Set withMultiSampling to true to invalidate the MS buffers.\r\n */\r\n public invalidate(invDepth: boolean, invStencil: boolean, withMultiSampling: boolean, indices?: number[]): void {\r\n const gl = System.instance.context;\r\n const attachments = invDepth ? (invStencil ? [gl.DEPTH_STENCIL_ATTACHMENT] : [System.instance.context.DEPTH_ATTACHMENT]) : (invDepth ? [gl.STENCIL_ATTACHMENT] : []);\r\n if (undefined !== indices) {\r\n if (indices.length > 0) {\r\n for (const i of indices)\r\n attachments.push(gl.COLOR_ATTACHMENT0 + i);\r\n }\r\n } else {\r\n attachments.concat(this._colorAttachments);\r\n }\r\n System.instance.frameBufferStack.execute(this, true, withMultiSampling, () => {\r\n System.instance.invalidateFrameBuffer(attachments);\r\n });\r\n }\r\n\r\n // Chiefly for debugging currently - assumes RGBA, unsigned byte, want all pixels.\r\n public get debugPixels(): Uint8Array | undefined {\r\n if (!this.isBound || 0 === this._colorTextures.length || !(this._colorTextures[0] instanceof TextureHandle))\r\n return undefined;\r\n\r\n const tex = this._colorTextures[0];\r\n if (GL.Texture.Format.Rgba !== tex.format || GL.Texture.DataType.UnsignedByte !== tex.dataType)\r\n return undefined;\r\n\r\n const buffer = new Uint8Array(tex.width * tex.height * 4);\r\n for (let i = 0; i < buffer.length; i += 4) {\r\n buffer[i] = 0xba;\r\n buffer[i + 1] = 0xad;\r\n buffer[i + 2] = 0xf0;\r\n buffer[i + 3] = 0x0d;\r\n }\r\n\r\n System.instance.context.readPixels(0, 0, tex.width, tex.height, tex.format, tex.dataType, buffer);\r\n return buffer;\r\n }\r\n}\r\n\r\ninterface Binding {\r\n fbo: FrameBuffer;\r\n withAttachments: boolean;\r\n withMultSampling: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class FrameBufferStack {\r\n // FrameBuffers within this array are not owned, as this is only a storage device holding references\r\n private readonly _stack: Binding[] = [];\r\n\r\n private get _top() { return !this.isEmpty ? this._stack[this._stack.length - 1] : undefined; }\r\n\r\n public push(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean): void {\r\n if (undefined !== this._top) {\r\n this._top.fbo.suspend();\r\n }\r\n\r\n assert(!fbo.isBound);\r\n fbo.bind(withAttachments, withMultSampling);\r\n assert(fbo.isBound);\r\n\r\n this._stack.push({ fbo, withAttachments, withMultSampling });\r\n }\r\n\r\n public pop(): void {\r\n assert(!this.isEmpty);\r\n if (undefined === this._top) {\r\n return;\r\n }\r\n\r\n const fbo = this._top.fbo;\r\n this._stack.pop();\r\n\r\n assert(fbo.isBound);\r\n fbo.unbind();\r\n assert(!fbo.isBound);\r\n\r\n if (this.isEmpty) {\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n } else {\r\n const top = this._top;\r\n assert(top.fbo.isSuspended);\r\n top.fbo.bind(top.withAttachments, top.withMultSampling);\r\n assert(top.fbo.isBound);\r\n }\r\n }\r\n\r\n public get currentColorBuffer(): TextureHandle | undefined {\r\n assert(!this.isEmpty);\r\n return undefined !== this._top ? this._top.fbo.getColor(0) : undefined;\r\n }\r\n\r\n public get currentFbMultisampled(): boolean {\r\n return undefined !== this._top ? this._top.fbo.isBoundMultisampled : false;\r\n }\r\n\r\n public get isEmpty(): boolean { return 0 === this._stack.length; }\r\n\r\n public execute(fbo: FrameBuffer, withAttachments: boolean, withMultSampling: boolean, func: () => void) {\r\n this.push(fbo, withAttachments, withMultSampling);\r\n func();\r\n this.pop();\r\n }\r\n\r\n public markTargetsDirty(): void {\r\n const top = this._top;\r\n if (undefined !== top)\r\n top.fbo.markTargetsDirty();\r\n }\r\n\r\n public suspend(): void {\r\n if (undefined !== this._top) {\r\n this._top.fbo.suspend();\r\n }\r\n }\r\n\r\n public resume(): void {\r\n if (undefined === this._top) {\r\n return;\r\n }\r\n\r\n if (this.isEmpty) {\r\n System.instance.context.bindFramebuffer(GL.FrameBuffer.TARGET, null);\r\n } else {\r\n const top = this._top;\r\n top.fbo.bind(top.withAttachments, top.withMultSampling);\r\n assert(top.fbo.isBound);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Frustum, Npc } from \"@itwin/core-common\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** @internal */\r\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\r\n TwoDee,\r\n Orthographic,\r\n Perspective,\r\n}\r\n\r\nconst enum Plane { // eslint-disable-line no-restricted-syntax\r\n kTop,\r\n kBottom,\r\n kLeft,\r\n kRight,\r\n}\r\n\r\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\r\n kNear,\r\n kFar,\r\n kType,\r\n}\r\n\r\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\r\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\r\n * @internal\r\n */\r\nexport class FrustumUniforms {\r\n // CPU state. Do not modify - use APIs.\r\n public readonly planFrustum = new Frustum();\r\n private _planFraction = 0;\r\n private readonly _nearPlaneCenter = new Point3d();\r\n public readonly viewMatrix = Transform.createIdentity();\r\n public readonly projectionMatrix = Matrix4d.createIdentity();\r\n private readonly _worldUpVector = Vector3d.unitZ();\r\n private readonly _viewUpVector = Vector3d.unitZ();\r\n\r\n // GPU state\r\n private readonly _planeData: Float32Array = new Float32Array(4);\r\n private readonly _frustumData: Float32Array = new Float32Array(3);\r\n public readonly projectionMatrix32 = new Matrix4();\r\n private readonly _logZData = new Float32Array(2);\r\n private readonly _viewUpVector32 = new Float32Array(3);\r\n\r\n // SyncTarget\r\n public syncKey = 0;\r\n\r\n // Scratch variables\r\n private readonly _scratch = {\r\n point3d: new Point3d(),\r\n vec3d: new Vector3d(),\r\n viewX: new Vector3d(),\r\n viewY: new Vector3d(),\r\n viewZ: new Vector3d(),\r\n };\r\n\r\n public constructor() {\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix4(this.projectionMatrix32);\r\n }\r\n\r\n public bindUpVector(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewUpVector32);\r\n }\r\n\r\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\r\n public get planes(): Float32Array { return this._planeData; }\r\n\r\n // uniform vec3 u_frustum; // { near, far, type }\r\n public get frustum(): Float32Array { return this._frustumData; }\r\n\r\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\r\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\r\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\r\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\r\n public get planFraction(): number { return this._planFraction; }\r\n\r\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\r\n public get logZ(): Float32Array { return this._logZData; }\r\n\r\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\r\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\r\n return;\r\n\r\n desync(this);\r\n\r\n newFrustum.clone(this.planFrustum);\r\n\r\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\r\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\r\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\r\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\r\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\r\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\r\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\r\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\r\n\r\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\r\n\r\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\r\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\r\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\r\n\r\n this._planFraction = newFraction;\r\n\r\n if (!is3d || newFraction > 0.999) { // ortho or 2d\r\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\r\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\r\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\r\n\r\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\r\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\r\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\r\n } else { // perspective\r\n const scale = 1.0 / (1.0 - newFraction);\r\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\r\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\r\n\r\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\r\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\r\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\r\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\r\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\r\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\r\n\r\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\r\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\r\n\r\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\r\n cameraPosition,\r\n viewX,\r\n viewY,\r\n viewZ,\r\n });\r\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\r\n type: FrustumUniformType.Perspective,\r\n left: frustumLeft,\r\n right: frustumRight,\r\n bottom: frustumBottom,\r\n top: frustumTop,\r\n front: frustumFront,\r\n back: frustumBack,\r\n });\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\r\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\r\n }\r\n\r\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\r\n\r\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\r\n this._viewUpVector.normalizeInPlace();\r\n this._viewUpVector32[0] = this._viewUpVector.x;\r\n this._viewUpVector32[1] = this._viewUpVector.y;\r\n this._viewUpVector32[2] = this._viewUpVector.z;\r\n\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\r\n desync(this);\r\n this.projectionMatrix.setFrom(newMatrix);\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\r\n this._planeData[Plane.kTop] = top;\r\n this._planeData[Plane.kBottom] = bottom;\r\n this._planeData[Plane.kLeft] = left;\r\n this._planeData[Plane.kRight] = right;\r\n }\r\n\r\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\r\n this._frustumData[FrustumData.kNear] = nearPlane;\r\n this._frustumData[FrustumData.kFar] = farPlane;\r\n this._frustumData[FrustumData.kType] = type as number;\r\n\r\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\r\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\r\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\r\n }\r\n}\r\n\r\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\r\n const result = undefined !== out ? out : new Vector3d();\r\n result.x = p0.x - p1.x;\r\n result.y = p0.y - p1.y;\r\n result.z = p0.z - p1.z;\r\n result.normalizeInPlace();\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\r\n const result = undefined !== out ? out : new Point3d();\r\n result.x = p.x + v.x * scale;\r\n result.y = p.y + v.y * scale;\r\n result.z = p.z + v.z * scale;\r\n return result;\r\n}\r\n\r\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\r\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\r\n}\r\n\r\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\r\n const rot = result.matrix.coffs;\r\n rot[0] = viewX.x; rot[1] = viewX.y; rot[2] = viewX.z;\r\n rot[3] = viewY.x; rot[4] = viewY.y; rot[5] = viewY.z;\r\n rot[6] = viewZ.x; rot[7] = viewZ.y; rot[8] = viewZ.z;\r\n\r\n result.origin.x = -viewX.dotProduct(eye);\r\n result.origin.y = -viewY.dotProduct(eye);\r\n result.origin.z = -viewZ.dotProduct(eye);\r\n}\r\n\r\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\r\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\r\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\r\n 0.0, 0.0, 0.0, 1.0,\r\n result);\r\n}\r\n\r\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\r\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\r\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\r\n 0.0, 0.0, -1.0, 0.0,\r\n result);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Frustum, Npc } from \"@itwin/core-common\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** @internal */\r\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\r\n TwoDee,\r\n Orthographic,\r\n Perspective,\r\n}\r\n\r\nconst enum Plane { // eslint-disable-line no-restricted-syntax\r\n kTop,\r\n kBottom,\r\n kLeft,\r\n kRight,\r\n}\r\n\r\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\r\n kNear,\r\n kFar,\r\n kType,\r\n}\r\n\r\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\r\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\r\n * @internal\r\n */\r\nexport class FrustumUniforms {\r\n // CPU state. Do not modify - use APIs.\r\n public readonly planFrustum = new Frustum();\r\n private _planFraction = 0;\r\n private readonly _nearPlaneCenter = new Point3d();\r\n public readonly viewMatrix = Transform.createIdentity();\r\n public readonly projectionMatrix = Matrix4d.createIdentity();\r\n private readonly _worldUpVector = Vector3d.unitZ();\r\n private readonly _viewUpVector = Vector3d.unitZ();\r\n\r\n // GPU state\r\n private readonly _planeData: Float32Array = new Float32Array(4);\r\n private readonly _frustumData: Float32Array = new Float32Array(3);\r\n public readonly projectionMatrix32 = new Matrix4();\r\n private readonly _logZData = new Float32Array(2);\r\n private readonly _viewUpVector32 = new Float32Array(3);\r\n\r\n // SyncTarget\r\n public syncKey = 0;\r\n\r\n // Scratch variables\r\n private readonly _scratch = {\r\n point3d: new Point3d(),\r\n vec3d: new Vector3d(),\r\n viewX: new Vector3d(),\r\n viewY: new Vector3d(),\r\n viewZ: new Vector3d(),\r\n };\r\n\r\n public constructor() {\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix4(this.projectionMatrix32);\r\n }\r\n\r\n public bindUpVector(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewUpVector32);\r\n }\r\n\r\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\r\n public get planes(): Float32Array { return this._planeData; }\r\n\r\n // uniform vec3 u_frustum; // { near, far, type }\r\n public get frustum(): Float32Array { return this._frustumData; }\r\n\r\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\r\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\r\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\r\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\r\n public get planFraction(): number { return this._planFraction; }\r\n\r\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\r\n public get logZ(): Float32Array { return this._logZData; }\r\n\r\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\r\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\r\n return;\r\n\r\n desync(this);\r\n\r\n newFrustum.clone(this.planFrustum);\r\n\r\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\r\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\r\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\r\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\r\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\r\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\r\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\r\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\r\n\r\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\r\n\r\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\r\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\r\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\r\n\r\n this._planFraction = newFraction;\r\n\r\n if (!is3d || newFraction > 0.999) { // ortho or 2d\r\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\r\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\r\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\r\n\r\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\r\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\r\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\r\n } else { // perspective\r\n const scale = 1.0 / (1.0 - newFraction);\r\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\r\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\r\n\r\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\r\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\r\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\r\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\r\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\r\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\r\n\r\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\r\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\r\n\r\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\r\n cameraPosition,\r\n viewX,\r\n viewY,\r\n viewZ,\r\n });\r\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\r\n type: FrustumUniformType.Perspective,\r\n left: frustumLeft,\r\n right: frustumRight,\r\n bottom: frustumBottom,\r\n top: frustumTop,\r\n front: frustumFront,\r\n back: frustumBack,\r\n });\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\r\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\r\n }\r\n\r\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\r\n\r\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\r\n this._viewUpVector.normalizeInPlace();\r\n this._viewUpVector32[0] = this._viewUpVector.x;\r\n this._viewUpVector32[1] = this._viewUpVector.y;\r\n this._viewUpVector32[2] = this._viewUpVector.z;\r\n\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\r\n desync(this);\r\n this.projectionMatrix.setFrom(newMatrix);\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\r\n this._planeData[Plane.kTop] = top;\r\n this._planeData[Plane.kBottom] = bottom;\r\n this._planeData[Plane.kLeft] = left;\r\n this._planeData[Plane.kRight] = right;\r\n }\r\n\r\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\r\n this._frustumData[FrustumData.kNear] = nearPlane;\r\n this._frustumData[FrustumData.kFar] = farPlane;\r\n this._frustumData[FrustumData.kType] = type as number;\r\n\r\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\r\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\r\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\r\n }\r\n}\r\n\r\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\r\n const result = undefined !== out ? out : new Vector3d();\r\n result.x = p0.x - p1.x;\r\n result.y = p0.y - p1.y;\r\n result.z = p0.z - p1.z;\r\n result.normalizeInPlace();\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\r\n const result = undefined !== out ? out : new Point3d();\r\n result.x = p.x + v.x * scale;\r\n result.y = p.y + v.y * scale;\r\n result.z = p.z + v.z * scale;\r\n return result;\r\n}\r\n\r\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\r\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\r\n}\r\n\r\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\r\n const rot = result.matrix.coffs;\r\n rot[0] = viewX.x;\r\n rot[1] = viewX.y;\r\n rot[2] = viewX.z;\r\n rot[3] = viewY.x;\r\n rot[4] = viewY.y;\r\n rot[5] = viewY.z;\r\n rot[6] = viewZ.x;\r\n rot[7] = viewZ.y;\r\n rot[8] = viewZ.z;\r\n\r\n result.origin.x = -viewX.dotProduct(eye);\r\n result.origin.y = -viewY.dotProduct(eye);\r\n result.origin.z = -viewZ.dotProduct(eye);\r\n}\r\n\r\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\r\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\r\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\r\n 0.0, 0.0, 0.0, 1.0,\r\n result);\r\n}\r\n\r\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\r\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\r\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\r\n 0.0, 0.0, -1.0, 0.0,\r\n result);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
|
|
@@ -227,8 +227,11 @@ export class Branch extends Graphic {
|
|
|
227
227
|
this.textureDrape = opts.classifierOrDrape;
|
|
228
228
|
if (opts.secondaryClassifiers) {
|
|
229
229
|
this.secondaryClassifiers = new Array();
|
|
230
|
-
opts.secondaryClassifiers.forEach((classifier) => {
|
|
231
|
-
|
|
230
|
+
opts.secondaryClassifiers.forEach((classifier) => {
|
|
231
|
+
var _a;
|
|
232
|
+
if (classifier instanceof PlanarClassifier)
|
|
233
|
+
(_a = this.secondaryClassifiers) === null || _a === void 0 ? void 0 : _a.push(classifier);
|
|
234
|
+
});
|
|
232
235
|
}
|
|
233
236
|
}
|
|
234
237
|
get isDisposed() {
|