@itwin/core-frontend 5.0.0-dev.32 → 5.0.0-dev.34
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/lib/cjs/AccuDraw.js +1 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +5 -5
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +9 -9
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +4 -4
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.js +61 -63
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +10 -10
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.js +1 -1
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IpcApp.js +2 -2
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.js +15 -17
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/SelectionSet.js +148 -156
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/Sprites.js +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +5 -5
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.js +2 -2
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +9 -9
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js +41 -41
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/render/MockRender.js +3 -3
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js +2 -2
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js +4 -4
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +4 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js +4 -4
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +39 -39
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +3 -3
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +8 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +9 -9
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +21 -21
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +32 -32
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +2 -2
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js +2 -2
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +34 -34
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +5 -5
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +10 -10
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +19 -19
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js +19 -19
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js +63 -63
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +37 -37
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +5 -5
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/DrawingViewState.js +9 -9
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +4 -4
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.js +61 -63
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +10 -10
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.js +1 -1
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IpcApp.js +2 -2
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NativeApp.js +15 -17
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/SelectionSet.js +148 -156
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/Sprites.js +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +5 -5
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewState.js +2 -2
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +9 -9
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js +41 -41
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/esm/render/MockRender.js +3 -3
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js +4 -4
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +4 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.js +4 -4
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js +39 -39
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +3 -3
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +8 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -9
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +2 -2
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +21 -21
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +32 -32
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js +2 -2
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/IdleTool.js +2 -2
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js +34 -34
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +5 -5
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +10 -10
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +19 -19
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js +19 -19
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js +63 -63
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +37 -37
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { ViewState3d } from \"../../ViewState\";\nimport { FeatureSymbology } from \"../FeatureSymbology\";\nimport { RenderGraphic } from \"../RenderGraphic\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture, TextureHandle } from \"./Texture\";\nimport { TextureDrape } from \"./TextureDrape\";\n\n/** @internal */\nexport class BackgroundMapDrape extends TextureDrape {\n private _fbo?: FrameBuffer;\n private readonly _graphics: RenderGraphic[] = [];\n private _frustum?: Frustum;\n private _width = 0;\n private _height = 0;\n private _mapTree: MapTileTreeReference;\n private _drapedTree: TileTreeReference;\n private static _postProjectionMatrix = Matrix4d.createRowValues(\n 0, 1, 0, 0,\n 0, 0, -1, 0,\n 1, 0, 0, 0,\n 0, 0, 0, 1);\n private _debugFrustum?: Frustum;\n private _debugFrustumGraphic?: RenderGraphic = undefined;\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\n\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\n super();\n this._drapedTree = drapedTree;\n this._mapTree = mapTree;\n }\n\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\n\n public override dispose() {\n super.dispose();\n this._fbo = dispose(this._fbo);\n }\n\n public addGraphic(graphic: RenderGraphic) {\n this._graphics.push(graphic);\n }\n\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\n return new BackgroundMapDrape(draped, map);\n }\n\n public collectGraphics(context: SceneContext) {\n this._graphics.length = 0;\n if (undefined === context.viewingSpace)\n return;\n\n const viewState = context.viewingSpace.view as ViewState3d;\n if (undefined === viewState)\n return;\n\n const tileTree = this._mapTree.treeOwner.load();\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\n return;\n\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\n const requiredHeight = requiredWidth;\n\n if (requiredWidth !== this._width || requiredHeight !== this._height)\n this.dispose();\n\n this._width = requiredWidth;\n this._height = requiredHeight;\n\n const targetTree = this._drapedTree.treeOwner.tileTree;\n const args = this._drapedTree.createDrawArgs(context);\n if (!targetTree || !args)\n return;\n\n const targetTiles = targetTree.selectTiles(args);\n\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\n return;\n\n this._frustum = projection.textureFrustum;\n this._debugFrustum = projection.debugFrustum;\n this._projectionMatrix = projection.projectionMatrix;\n\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\n if (undefined !== drawArgs)\n tileTree.draw(drawArgs);\n\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\n const builder = context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\n builder.addFrustum(context.viewingSpace.getFrustum());\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\n builder.addFrustum(this._debugFrustum!);\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\n builder.addFrustum(this._frustum);\n this._debugFrustumGraphic = builder.finish();\n }\n }\n\n public draw(target: Target) {\n if (undefined !== this._debugFrustumGraphic)\n target.graphics.foreground.push(this._debugFrustumGraphic);\n\n if (undefined === this._frustum || this._graphics.length === 0)\n return;\n\n if (undefined === this._fbo) {\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === colorTextureHandle) {\n assert(false, \"Failed to create planar texture\");\n return;\n }\n\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\n this._fbo = FrameBuffer.create([colorTextureHandle]);\n }\n if (undefined === this._fbo) {\n assert(false, \"unable to create frame buffer object\");\n return;\n }\n\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\n\n const prevState = System.instance.currentRenderState.clone();\n System.instance.context.viewport(0, 0, this._width, this._height);\n\n const prevPlan = target.plan;\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\n const stack = new BranchStack();\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\n stack.setSymbologyOverrides(this._symbologyOverrides);\n\n const batchState = new BatchState(stack);\n System.instance.applyRenderState(drawingParams.state);\n\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\n\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\n\n target.uniforms.branch.pushState(stack.top);\n\n const renderCommands = new RenderCommands(target, stack, batchState);\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\n\n const system = System.instance;\n const gl = system.context;\n\n system.frameBufferStack.execute(this._fbo, true, false, () => {\n gl.clearColor(0, 0, 0, 0);\n gl.clear(GL.BufferBit.Color);\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.\n });\n\n target.uniforms.branch.pop();\n\n batchState.reset(); // Reset the batch Ids...\n target.changeRenderPlan(prevPlan);\n\n system.applyRenderState(prevState);\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\n system.glTimer.endOperation();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAW,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAA2C,MAAM,qBAAqB,CAAC;AAGzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,MAAM,OAAO,kBAAmB,SAAQ,YAAY;aAQnC,0BAAqB,GAAG,QAAQ,CAAC,eAAe,CAC7D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,AAJuB,CAItB;IAOd,YAAoB,UAA6B,EAAE,OAA6B;QAC9E,KAAK,EAAE,CAAC;QAlBO,cAAS,GAAoB,EAAE,CAAC;QAEzC,WAAM,GAAG,CAAC,CAAC;QACX,YAAO,GAAG,CAAC,CAAC;QASZ,yBAAoB,GAAmB,SAAS,CAAC;QACxC,wBAAmB,GAAG,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACvD,aAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,WAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAI7G,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAoB,UAAU,KAAc,OAAO,KAAK,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjF,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,UAAU,CAAC,OAAsB;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,MAAyB,EAAE,GAAyB;QACvE,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,eAAe,CAAC,OAAqB;QAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,SAAS,KAAK,OAAO,CAAC,YAAY;YACpC,OAAO;QAET,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAmB,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACpE,OAAO;QAET,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAK,+BAA+B;QACtI,MAAM,cAAc,GAAG,aAAa,CAAC;QAErC,IAAI,aAAa,KAAK,IAAI,CAAC,MAAM,IAAI,cAAc,KAAK,IAAI,CAAC,OAAO;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI;YACtB,OAAO;QAET,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,uBAAuB,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9N,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,cAAc;YAC1F,OAAO;QAET,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QAErD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,SAAS,KAAK,QAAQ;YACxB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;YACnF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;YACpD,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;YACxC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,IAAI,CAAC,MAAc;QACxB,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB;YACzC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE7D,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC5D,OAAO;QAET,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,kBAAkB,GAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClJ,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBACrC,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;YACnK,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,aAAa,GAAG,uBAAuB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/E,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,4EAA4E;QACxI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC;QAE9H,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACrE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,mCAA2B,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1B,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;YAC3D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,kCAA0B,2CAAkC,CAAC,CAAI,gHAAgH;QAC/O,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAE7B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAG,yBAAyB;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACnC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;QACrF,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Vector3d } from \"@itwin/core-geometry\";\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\nimport { SceneContext } from \"../../ViewContext\";\nimport { ViewState3d } from \"../../ViewState\";\nimport { FeatureSymbology } from \"../FeatureSymbology\";\nimport { RenderGraphic } from \"../RenderGraphic\";\nimport { BatchState } from \"./BatchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { GL } from \"./GL\";\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture, TextureHandle } from \"./Texture\";\nimport { TextureDrape } from \"./TextureDrape\";\n\n/** @internal */\nexport class BackgroundMapDrape extends TextureDrape {\n private _fbo?: FrameBuffer;\n private readonly _graphics: RenderGraphic[] = [];\n private _frustum?: Frustum;\n private _width = 0;\n private _height = 0;\n private _mapTree: MapTileTreeReference;\n private _drapedTree: TileTreeReference;\n private static _postProjectionMatrix = Matrix4d.createRowValues(\n 0, 1, 0, 0,\n 0, 0, -1, 0,\n 1, 0, 0, 0,\n 0, 0, 0, 1);\n private _debugFrustum?: Frustum;\n private _debugFrustumGraphic?: RenderGraphic = undefined;\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\n\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\n super();\n this._drapedTree = drapedTree;\n this._mapTree = mapTree;\n }\n\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\n\n public override dispose() {\n super.dispose();\n this._fbo = dispose(this._fbo);\n }\n\n public addGraphic(graphic: RenderGraphic) {\n this._graphics.push(graphic);\n }\n\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\n return new BackgroundMapDrape(draped, map);\n }\n\n public collectGraphics(context: SceneContext) {\n this._graphics.length = 0;\n if (undefined === context.viewingSpace)\n return;\n\n const viewState = context.viewingSpace.view as ViewState3d;\n if (undefined === viewState)\n return;\n\n const tileTree = this._mapTree.treeOwner.load();\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\n return;\n\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\n const requiredHeight = requiredWidth;\n\n if (requiredWidth !== this._width || requiredHeight !== this._height)\n this.dispose();\n\n this._width = requiredWidth;\n this._height = requiredHeight;\n\n const targetTree = this._drapedTree.treeOwner.tileTree;\n const args = this._drapedTree.createDrawArgs(context);\n if (!targetTree || !args)\n return;\n\n const targetTiles = targetTree.selectTiles(args);\n\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height, Range3d.createNull());\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\n return;\n\n this._frustum = projection.textureFrustum;\n this._debugFrustum = projection.debugFrustum;\n this._projectionMatrix = projection.projectionMatrix;\n\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\n if (undefined !== drawArgs)\n tileTree.draw(drawArgs);\n\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\n const builder = context.createSceneGraphicBuilder();\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\n builder.addFrustum(context.viewingSpace.getFrustum());\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\n builder.addFrustum(this._debugFrustum!);\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\n builder.addFrustum(this._frustum);\n this._debugFrustumGraphic = builder.finish();\n }\n }\n\n public draw(target: Target) {\n if (undefined !== this._debugFrustumGraphic)\n target.graphics.foreground.push(this._debugFrustumGraphic);\n\n if (undefined === this._frustum || this._graphics.length === 0)\n return;\n\n if (undefined === this._fbo) {\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\n if (undefined === colorTextureHandle) {\n assert(false, \"Failed to create planar texture\");\n return;\n }\n\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\n this._fbo = FrameBuffer.create([colorTextureHandle]);\n }\n if (undefined === this._fbo) {\n assert(false, \"unable to create frame buffer object\");\n return;\n }\n\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\n\n const prevState = System.instance.currentRenderState.clone();\n System.instance.context.viewport(0, 0, this._width, this._height);\n\n const prevPlan = target.plan;\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\n const stack = new BranchStack();\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\n stack.setSymbologyOverrides(this._symbologyOverrides);\n\n const batchState = new BatchState(stack);\n System.instance.applyRenderState(drawingParams.state);\n\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\n\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\n\n target.uniforms.branch.pushState(stack.top);\n\n const renderCommands = new RenderCommands(target, stack, batchState);\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\n\n const system = System.instance;\n const gl = system.context;\n\n system.frameBufferStack.execute(this._fbo, true, false, () => {\n gl.clearColor(0, 0, 0, 0);\n gl.clear(GL.BufferBit.Color);\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.\n });\n\n target.uniforms.branch.pop();\n\n batchState.reset(); // Reset the batch Ids...\n target.changeRenderPlan(prevPlan);\n\n system.applyRenderState(prevState);\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\n system.glTimer.endOperation();\n }\n}\n"]}
|
|
@@ -46,6 +46,7 @@ export class BatchState {
|
|
|
46
46
|
this._batches.length = 0;
|
|
47
47
|
this._curBatch = undefined;
|
|
48
48
|
}
|
|
49
|
+
static { this._scratchElementIdPair = { lower: 0, upper: 0 }; }
|
|
49
50
|
getElementId(featureId) {
|
|
50
51
|
const batch = this.find(featureId);
|
|
51
52
|
if (undefined === batch)
|
|
@@ -104,5 +105,4 @@ export class BatchState {
|
|
|
104
105
|
return -1 !== index ? this._batches[index] : undefined;
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
|
-
BatchState._scratchElementIdPair = { lower: 0, upper: 0 };
|
|
108
108
|
//# sourceMappingURL=BatchState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchState.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,UAAU;IAKrB,YAAmB,KAAkB;QAH7B,aAAQ,GAAY,EAAE,CAAC,CAAC,8DAA8D;QAI5F,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,YAAY,KAAwB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,IAAW,cAAc,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,IAAW,kBAAkB,KAAmC,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/I,IAAW,OAAO,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,KAAY,EAAE,QAAiB;QACzC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAC/B,KAAK,CAAC,YAAY,EAAE,CAAC;QAEvB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"BatchState.js","sourceRoot":"","sources":["../../../../src/render/webgl/BatchState.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,UAAU;IAKrB,YAAmB,KAAkB;QAH7B,aAAQ,GAAY,EAAE,CAAC,CAAC,8DAA8D;QAI5F,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,YAAY,KAAwB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,IAAW,cAAc,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzG,IAAW,kBAAkB,KAAmC,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/I,IAAW,OAAO,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,KAAY,EAAE,QAAiB;QACzC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;YAC/B,KAAK,CAAC,YAAY,EAAE,CAAC;QAEvB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;aAEuB,0BAAqB,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,AAAzB,CAA0B;IAChE,YAAY,CAAC,SAAiB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;QAEtB,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/C,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAE1B,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAEM,UAAU,CAAC,SAAiB,EAAE,MAAoB;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/C,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjD,WAAW,CAAC,SAAiB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,IAAI,CAAC,OAAO;YACd,OAAO,CAAC,CAAC;QAEX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,KAAK,eAAe;YACvB,eAAe,GAAG,CAAC,CAAC;QAEtB,OAAO,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;IACxC,CAAC;IAEO,UAAU,CAAC,KAAY,EAAE,QAAiB;QAChD,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAEO,OAAO,CAAC,SAAiB;QAC/B,IAAI,SAAS,IAAI,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC;QAEZ,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAW,EAAE,GAAU,EAAE,EAAE;YAC7E,2EAA2E;YAC3E,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO;gBACnB,OAAO,CAAC,CAAC,CAAC;YAEZ,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;YACjD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,IAAI,CAAC,SAAiB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, Id64, Id64String, lowerBound } from \"@itwin/core-bentley\";\nimport { ModelFeature } from \"@itwin/core-common\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { BranchStack } from \"./BranchStack\";\nimport { Batch } from \"./Graphic\";\n\n/**\n * Assigns a transient, unique 32-bit integer ID to each Batch in a RenderCommands.\n * A batch ID of 0 means \"no batch\".\n * The first batch gets batch ID of 1.\n * The next batch gets the previous batch's ID plus the number of features in the previous batch's feature table\n * (or 1, if empty feature table).\n * The IDs are set temporarily as members on the Batch objects and reset to 0 immediately after rendering.\n * The currentBatch member identifies the batch containing primitives currently being drawn.\n * The combination of the current batch's ID (passed as uniform to shader) and the index of a given Feature within\n * its batch's FeatureTable (stored in vertex table) produce a unique ID for every feature rendered during a frame.\n * During rendering, the feature IDs are written to the \"feature ID\" color attachment.\n * The batch IDs remain valid during a call to Target.readPixels() so that they can be used to extract\n * Features from the Batch's FeatureTables.\n * @internal\n */\nexport class BatchState {\n private readonly _stack: BranchStack;\n private _batches: Batch[] = []; // NB: this list is ordered - but *not* indexed - by batch ID.\n private _curBatch?: Batch;\n\n public constructor(stack: BranchStack) {\n this._stack = stack;\n }\n\n public get currentBatch(): Batch | undefined { return this._curBatch; }\n public get currentBatchId(): number { return undefined !== this._curBatch ? this._curBatch.batchId : 0; }\n public get currentBatchIModel(): IModelConnection | undefined { return undefined !== this._curBatch ? this._curBatch.batchIModel : undefined; }\n public get isEmpty(): boolean { return 0 === this._batches.length; }\n\n public push(batch: Batch, allowAdd: boolean): void {\n assert(undefined === this.currentBatch, \"batches cannot nest\");\n this.getBatchId(batch, allowAdd);\n this._curBatch = batch;\n }\n\n public pop(): void {\n assert(undefined !== this.currentBatch);\n this._curBatch = undefined;\n }\n\n public reset(): void {\n assert(undefined === this.currentBatch);\n for (const batch of this._batches)\n batch.resetContext();\n\n this._batches.length = 0;\n this._curBatch = undefined;\n }\n\n private static readonly _scratchElementIdPair = { lower: 0, upper: 0 };\n public getElementId(featureId: number): Id64String {\n const batch = this.find(featureId);\n if (undefined === batch)\n return Id64.invalid;\n\n const featureIndex = featureId - batch.batchId;\n assert(featureIndex >= 0);\n\n const parts = batch.featureTable.getElementIdPair(featureIndex, BatchState._scratchElementIdPair);\n return Id64.fromUint32Pair(parts.lower, parts.upper);\n }\n\n public getFeature(featureId: number, result: ModelFeature): ModelFeature | undefined {\n const batch = this.find(featureId);\n if (undefined === batch)\n return undefined;\n\n const featureIndex = featureId - batch.batchId;\n assert(featureIndex >= 0);\n\n return batch.featureTable.findFeature(featureIndex, result);\n }\n\n public get numFeatureIds() { return this.nextBatchId; }\n public get numBatches() { return this._batches.length; }\n\n public findBatchId(featureId: number) {\n const batch = this.find(featureId);\n return undefined !== batch ? batch.batchId : 0;\n }\n\n public get nextBatchId(): number {\n if (this.isEmpty)\n return 1;\n\n const prev = this._batches[this._batches.length - 1];\n assert(0 !== prev.batchId);\n\n let prevNumFeatures = prev.featureTable.numFeatures;\n if (0 === prevNumFeatures)\n prevNumFeatures = 1;\n\n return prev.batchId + prevNumFeatures;\n }\n\n private getBatchId(batch: Batch, allowAdd: boolean): number {\n if (allowAdd && 0 === batch.batchId) {\n batch.setContext(this.nextBatchId, this._stack.top);\n this._batches.push(batch);\n }\n\n return batch.batchId;\n }\n\n private indexOf(featureId: number): number {\n if (featureId <= 0)\n return -1;\n\n const found = lowerBound(featureId, this._batches, (lhs: number, rhs: Batch) => {\n // Determine if the requested feature ID is within the range of this batch.\n if (lhs < rhs.batchId)\n return -1;\n\n const numFeatures = rhs.featureTable.numFeatures;\n const nextBatchId = rhs.batchId + (numFeatures > 0 ? numFeatures : 1);\n return lhs < nextBatchId ? 0 : 1;\n });\n\n return found.index < this._batches.length ? found.index : -1;\n }\n\n public find(featureId: number): Batch | undefined {\n const index = this.indexOf(featureId);\n return -1 !== index ? this._batches[index] : undefined;\n }\n}\n"]}
|
|
@@ -30,7 +30,7 @@ export class ColorInfo {
|
|
|
30
30
|
assert(this.isUniform);
|
|
31
31
|
return this._uniform;
|
|
32
32
|
}
|
|
33
|
+
static { this._nonUniformTranslucent = new ColorInfo(true); }
|
|
34
|
+
static { this._nonUniformOpaque = new ColorInfo(false); }
|
|
33
35
|
}
|
|
34
|
-
ColorInfo._nonUniformTranslucent = new ColorInfo(true);
|
|
35
|
-
ColorInfo._nonUniformOpaque = new ColorInfo(false);
|
|
36
36
|
//# sourceMappingURL=ColorInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInfo.js","sourceRoot":"","sources":["../../../../src/render/webgl/ColorInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;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
|
|
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;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;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,2BAAsB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;aAC7C,sBAAiB,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { ColorDef, ColorIndex } from \"@itwin/core-common\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { VertexTable } from \"../../common/internal/render/VertexTable\";\n\n/* Describes a primitive's basic color properties\n * @internal\n */\nexport class ColorInfo {\n private readonly _uniform?: FloatRgba;\n public readonly hasTranslucency: boolean;\n\n private constructor(hasTranslucency: boolean, uniform?: FloatRgba) {\n this.hasTranslucency = hasTranslucency;\n this._uniform = uniform;\n }\n\n public static createUniform(color: FloatRgba) { return new ColorInfo(color.hasTranslucency, color); }\n public static createNonUniform(hasTranslucency: boolean) { return hasTranslucency ? this._nonUniformTranslucent : this._nonUniformOpaque; }\n public static createFromColorDef(color: ColorDef) { return this.createUniform(FloatRgba.fromColorDef(color)); }\n\n public static createFromColorIndex(colorIndex: ColorIndex) {\n return undefined !== colorIndex.uniform ? this.createFromColorDef(colorIndex.uniform) : this.createNonUniform(colorIndex.hasAlpha);\n }\n\n public static createFromVertexTable(vt: VertexTable) {\n return undefined !== vt.uniformColor ? this.createFromColorDef(vt.uniformColor) : this.createNonUniform(vt.hasTranslucency);\n }\n\n public get isUniform() { return undefined !== this._uniform; }\n public get isNonUniform() { return !this.isUniform; }\n public get uniform(): FloatRgba {\n assert(this.isUniform);\n return this._uniform!;\n }\n\n private static _nonUniformTranslucent = new ColorInfo(true);\n private static _nonUniformOpaque = new ColorInfo(false);\n}\n"]}
|
|
@@ -11,6 +11,10 @@ import { System } from "./System";
|
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
13
|
export class Debug {
|
|
14
|
+
/** Whether [[Debug.print]] will actually produce output. */
|
|
15
|
+
static { this.printEnabled = false; }
|
|
16
|
+
/** Whether [[Debug.evaluate]] will actually evaluate an expression. */
|
|
17
|
+
static { this.evaluateEnabled = false; }
|
|
14
18
|
/** If [[Debug.printEnabled]] is true, outputs a message using `console.log`.
|
|
15
19
|
* @param message A function which returns a string. If [[Debug.printEnabled]] is false, the function is never evaluated.
|
|
16
20
|
*/
|
|
@@ -33,8 +37,4 @@ export class Debug {
|
|
|
33
37
|
return this.evaluate(() => System.instance.context.checkFramebufferStatus(GL.FrameBuffer.TARGET), GL.FrameBuffer.Status.Complete);
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
|
-
/** Whether [[Debug.print]] will actually produce output. */
|
|
37
|
-
Debug.printEnabled = false;
|
|
38
|
-
/** Whether [[Debug.evaluate]] will actually evaluate an expression. */
|
|
39
|
-
Debug.evaluateEnabled = false;
|
|
40
40
|
//# sourceMappingURL=Diagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../../src/render/webgl/Diagnostics.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,KAAK;
|
|
1
|
+
{"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../../src/render/webgl/Diagnostics.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,KAAK;IAChB,4DAA4D;aAC9C,iBAAY,GAAG,KAAK,CAAC;IACnC,uEAAuE;aACzD,oBAAe,GAAG,KAAK,CAAC;IAEtC;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,OAAqB;QACvC,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,iCAAiC;IAC7D,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAI,QAAiB,EAAE,YAAe;QAC1D,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1D,CAAC;IAED,yGAAyG;IAClG,MAAM,KAAK,kBAAkB,KAAc,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAE5H,mGAAmG;IAC5F,MAAM,CAAC,sBAAsB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpI,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\n\n/** Provides facilities for conditionally executing diagnostic/debug code. By default, all facilities are disabled - they must be explicitly enabled.\n * @internal\n */\nexport class Debug {\n /** Whether [[Debug.print]] will actually produce output. */\n public static printEnabled = false;\n /** Whether [[Debug.evaluate]] will actually evaluate an expression. */\n public static evaluateEnabled = false;\n\n /** If [[Debug.printEnabled]] is true, outputs a message using `console.log`.\n * @param message A function which returns a string. If [[Debug.printEnabled]] is false, the function is never evaluated.\n */\n public static print(message: () => string): void {\n if (this.printEnabled)\n console.log(message()); // eslint-disable-line no-console\n }\n\n /** If [[Debug.evaluate]] is true, executes the supplied function and returns its result; otherwise returns the supplied default value.\n * @param evaluate The function to execute\n * @param defaultValue The value to return if [[Debug.evaluate]] is false\n * @returns The return value of `evaluate` if [[Debug.evaluate]] is true; otherwise, the `defaultValue`.\n */\n public static evaluate<T>(evaluate: () => T, defaultValue: T): T {\n return this.evaluateEnabled ? evaluate() : defaultValue;\n }\n\n /** If [[Debug.evaluateEnabled]] is true, returns whether the currently-bound framebuffer is complete. */\n public static get isValidFrameBuffer(): boolean { return GL.FrameBuffer.Status.Complete === this.checkFrameBufferStatus(); }\n\n /** If [[Debug.evaluateEnabled]] is true, returns the status of the currently-bound framebuffer. */\n public static checkFrameBufferStatus(): GL.FrameBuffer.Status {\n return this.evaluate(() => System.instance.context.checkFramebufferStatus(GL.FrameBuffer.TARGET), GL.FrameBuffer.Status.Complete);\n }\n}\n"]}
|
|
@@ -75,11 +75,11 @@ export class PopBatchCommand {
|
|
|
75
75
|
constructor() {
|
|
76
76
|
this.opcode = "popBatch";
|
|
77
77
|
}
|
|
78
|
+
static { this.instance = new PopBatchCommand(); }
|
|
78
79
|
execute(exec) {
|
|
79
80
|
exec.target.popBatch();
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
|
-
PopBatchCommand.instance = new PopBatchCommand();
|
|
83
83
|
/** @internal */
|
|
84
84
|
export class PushBatchCommand {
|
|
85
85
|
constructor(batch) {
|
|
@@ -115,11 +115,11 @@ export class PopBranchCommand {
|
|
|
115
115
|
constructor() {
|
|
116
116
|
this.opcode = "popBranch";
|
|
117
117
|
}
|
|
118
|
+
static { this.instance = new PopBranchCommand(); }
|
|
118
119
|
execute(exec) {
|
|
119
120
|
exec.popBranch();
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
|
-
PopBranchCommand.instance = new PopBranchCommand();
|
|
123
123
|
/** @internal */
|
|
124
124
|
export class PushClipCommand {
|
|
125
125
|
constructor(clip) {
|
|
@@ -135,17 +135,18 @@ export class PopClipCommand {
|
|
|
135
135
|
constructor() {
|
|
136
136
|
this.opcode = "popClip";
|
|
137
137
|
}
|
|
138
|
+
static { this.instance = new PopClipCommand(); }
|
|
138
139
|
execute(exec) {
|
|
139
140
|
exec.target.uniforms.branch.clipStack.pop();
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
|
-
PopClipCommand.instance = new PopClipCommand();
|
|
143
143
|
/** @internal */
|
|
144
144
|
export class PrimitiveCommand {
|
|
145
145
|
constructor(primitive) {
|
|
146
146
|
this.primitive = primitive;
|
|
147
147
|
this.opcode = "drawPrimitive";
|
|
148
148
|
}
|
|
149
|
+
static { this._scratchTechniqueFlags = new TechniqueFlags(); }
|
|
149
150
|
execute(exec) {
|
|
150
151
|
if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))
|
|
151
152
|
return;
|
|
@@ -180,7 +181,6 @@ export class PrimitiveCommand {
|
|
|
180
181
|
return this.primitive.getPass(target);
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
|
-
PrimitiveCommand._scratchTechniqueFlags = new TechniqueFlags();
|
|
184
184
|
/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.
|
|
185
185
|
* NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).
|
|
186
186
|
* The primitive should be right in the middle of a set. We need to find the set which matches the flashID.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { PackedFeature } from \"@itwin/core-common\";\nimport { BranchState } from \"./BranchState\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { isFeatureHilited } from \"./FeatureOverrides\";\nimport { Batch, Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Primitive } from \"./Primitive\";\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { EnableAtmosphere, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\nimport { TechniqueId } from \"./TechniqueId\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport class ShaderProgramParams {\n private _target?: Target;\n private _renderPass: RenderPass = RenderPass.None;\n\n public get target(): Target {\n assert(undefined !== this._target);\n return this._target;\n }\n\n public get renderPass() { return this._renderPass; }\n\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\n\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\n public get context() { return System.instance.context; }\n\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\n this._renderPass = pass;\n this._target = target;\n }\n}\n\n/** @internal */\nexport class DrawParams {\n private _programParams?: ShaderProgramParams;\n private _geometry?: CachedGeometry;\n\n public get geometry(): CachedGeometry {\n assert(undefined !== this._geometry);\n return this._geometry;\n }\n\n public get programParams(): ShaderProgramParams {\n assert(undefined !== this._programParams);\n return this._programParams;\n }\n\n public get target() { return this.programParams.target; }\n public get renderPass() { return this.programParams.renderPass; }\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\n public get isViewCoords() {\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\n }\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\n public get context() { return this.programParams.context; }\n\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\n this._programParams = programParams;\n this._geometry = geometry;\n }\n}\n\n/** Defines operation associated with pushing or popping a branch\n * @internal\n */\nexport const enum PushOrPop {\n Push,\n Pop,\n}\n\n/** Represents a command to be executed within a RenderPass. The most common command is\n * to draw a primitive; others involve state changes such as pushing/popping transforms\n * and symbology overrides, which require that commands be executed in order.\n * @internal\n */\nexport enum DrawOpCode {\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\n PushBranch = \"pushBranch\",\n PopBranch = \"popBranch\",\n PushBatch = \"pushBatch\",\n PopBatch = \"popBatch\",\n PushState = \"pushState\",\n PushClip = \"pushClip\",\n PopClip = \"popClip\",\n}\n\n/** @internal */\nexport class PopBatchCommand {\n public readonly opcode = \"popBatch\";\n\n private constructor() { }\n\n public static instance = new PopBatchCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.popBatch();\n }\n}\n\n/** @internal */\nexport class PushBatchCommand {\n public readonly opcode = \"pushBatch\";\n\n public constructor(public readonly batch: Batch) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.pushBatch(this.batch);\n }\n}\n\n/** @internal */\nexport class PushStateCommand {\n public readonly opcode = \"pushState\";\n\n public constructor(public readonly state: BranchState) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.pushState(this.state);\n }\n}\n\n/** @internal */\nexport class PushBranchCommand {\n public readonly opcode = \"pushBranch\";\n\n public constructor(public readonly branch: Branch) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.pushBranch(this.branch);\n }\n}\n\n/** @internal */\nexport class PopBranchCommand {\n public readonly opcode = \"popBranch\";\n\n private constructor() { }\n\n public static instance = new PopBranchCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.popBranch();\n }\n}\n\n/** @internal */\nexport class PushClipCommand {\n public readonly opcode = \"pushClip\";\n\n public constructor(public readonly clip: ClipVolume) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.uniforms.branch.clipStack.push(this.clip);\n }\n}\n\n/** @internal */\nexport class PopClipCommand {\n public readonly opcode = \"popClip\";\n\n private constructor() { }\n\n public static instance = new PopClipCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.uniforms.branch.clipStack.pop();\n }\n}\n\n/** @internal */\nexport class PrimitiveCommand {\n public readonly opcode = \"drawPrimitive\";\n\n public constructor(public readonly primitive: Primitive) { }\n\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\n\n public execute(exec: ShaderProgramExecutor): void {\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\n return;\n\n const techniqueId = this.primitive.techniqueId;\n if (TechniqueId.Invalid === techniqueId)\n return;\n\n const target = exec.target;\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\n\n // Point clouds do not support hillshade or slope mode for thematic display.\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\n isThematic = IsThematic.No;\n\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\n const flags = PrimitiveCommand._scratchTechniqueFlags;\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\n const enableAtmosphere = target.wantAtmosphere ? EnableAtmosphere.Yes : EnableAtmosphere.No;\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType, enableAtmosphere);\n\n const technique = target.techniques.getTechnique(techniqueId);\n const program = technique.getShader(flags);\n\n if (exec.setProgram(program))\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\n }\n\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\n\n public getPass(target: Target): Pass {\n return this.primitive.getPass(target);\n }\n}\n\n/** @internal */\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\n/** @internal */\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\n/** @internal */\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\n\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\n * @internal\n */\nexport type DrawCommands = DrawCommand[];\n\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\n * @internal\n */\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\n return undefined;\n\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\n const surface = pc.primitive.cachedGeometry.asSurface;\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\n let j = i - 1;\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\n j--;\n if (j < 0)\n continue;\n\n const pushBatch = cmds[j] as PushBatchCommand;\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\n if (undefined !== elemId && elemId === flashedId) {\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\n }\n }\n }\n\n return undefined;\n}\n\nconst scratchFeature = PackedFeature.create();\n\n/** @internal */\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\n const result: DrawCommand[] = [];\n\n let batch;\n for (const cmd of cmds) {\n switch (cmd.opcode) {\n case \"popBranch\":\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\n result.pop(); // remove empty push/pop pairs\n continue;\n }\n break;\n case \"popBatch\":\n batch = undefined;\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\n result.pop(); // remove empty push/pop pairs\n continue;\n }\n break;\n case \"pushBatch\":\n batch = cmd.batch;\n break;\n case \"drawPrimitive\":\n if (undefined !== batch) {\n // Skip any primitives that are not hilited.\n const surface = cmd.primitive.cachedGeometry.asSurface;\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\n continue;\n\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId, scratchFeature);\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(Id64.fromUint32PairObject(feature.modelId))))\n continue;\n\n break;\n }\n }\n\n result.push(cmd);\n }\n\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { PackedFeature } from \"@itwin/core-common\";\nimport { BranchState } from \"./BranchState\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { isFeatureHilited } from \"./FeatureOverrides\";\nimport { Batch, Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Primitive } from \"./Primitive\";\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\nimport { System } from \"./System\";\nimport { Hilites, Target } from \"./Target\";\nimport { EnableAtmosphere, IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\nimport { TechniqueId } from \"./TechniqueId\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nexport class ShaderProgramParams {\n private _target?: Target;\n private _renderPass: RenderPass = RenderPass.None;\n\n public get target(): Target {\n assert(undefined !== this._target);\n return this._target;\n }\n\n public get renderPass() { return this._renderPass; }\n\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\n\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\n public get context() { return System.instance.context; }\n\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\n this._renderPass = pass;\n this._target = target;\n }\n}\n\n/** @internal */\nexport class DrawParams {\n private _programParams?: ShaderProgramParams;\n private _geometry?: CachedGeometry;\n\n public get geometry(): CachedGeometry {\n assert(undefined !== this._geometry);\n return this._geometry;\n }\n\n public get programParams(): ShaderProgramParams {\n assert(undefined !== this._programParams);\n return this._programParams;\n }\n\n public get target() { return this.programParams.target; }\n public get renderPass() { return this.programParams.renderPass; }\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\n public get isViewCoords() {\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\n }\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\n public get context() { return this.programParams.context; }\n\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\n this._programParams = programParams;\n this._geometry = geometry;\n }\n}\n\n/** Defines operation associated with pushing or popping a branch\n * @internal\n */\nexport const enum PushOrPop {\n Push,\n Pop,\n}\n\n/** Represents a command to be executed within a RenderPass. The most common command is\n * to draw a primitive; others involve state changes such as pushing/popping transforms\n * and symbology overrides, which require that commands be executed in order.\n * @internal\n */\nexport enum DrawOpCode {\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\n PushBranch = \"pushBranch\",\n PopBranch = \"popBranch\",\n PushBatch = \"pushBatch\",\n PopBatch = \"popBatch\",\n PushState = \"pushState\",\n PushClip = \"pushClip\",\n PopClip = \"popClip\",\n}\n\n/** @internal */\nexport class PopBatchCommand {\n public readonly opcode = \"popBatch\";\n\n private constructor() { }\n\n public static instance = new PopBatchCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.popBatch();\n }\n}\n\n/** @internal */\nexport class PushBatchCommand {\n public readonly opcode = \"pushBatch\";\n\n public constructor(public readonly batch: Batch) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.pushBatch(this.batch);\n }\n}\n\n/** @internal */\nexport class PushStateCommand {\n public readonly opcode = \"pushState\";\n\n public constructor(public readonly state: BranchState) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.pushState(this.state);\n }\n}\n\n/** @internal */\nexport class PushBranchCommand {\n public readonly opcode = \"pushBranch\";\n\n public constructor(public readonly branch: Branch) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.pushBranch(this.branch);\n }\n}\n\n/** @internal */\nexport class PopBranchCommand {\n public readonly opcode = \"popBranch\";\n\n private constructor() { }\n\n public static instance = new PopBranchCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.popBranch();\n }\n}\n\n/** @internal */\nexport class PushClipCommand {\n public readonly opcode = \"pushClip\";\n\n public constructor(public readonly clip: ClipVolume) { }\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.uniforms.branch.clipStack.push(this.clip);\n }\n}\n\n/** @internal */\nexport class PopClipCommand {\n public readonly opcode = \"popClip\";\n\n private constructor() { }\n\n public static instance = new PopClipCommand();\n\n public execute(exec: ShaderProgramExecutor): void {\n exec.target.uniforms.branch.clipStack.pop();\n }\n}\n\n/** @internal */\nexport class PrimitiveCommand {\n public readonly opcode = \"drawPrimitive\";\n\n public constructor(public readonly primitive: Primitive) { }\n\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\n\n public execute(exec: ShaderProgramExecutor): void {\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\n return;\n\n const techniqueId = this.primitive.techniqueId;\n if (TechniqueId.Invalid === techniqueId)\n return;\n\n const target = exec.target;\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\n\n // Point clouds do not support hillshade or slope mode for thematic display.\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\n isThematic = IsThematic.No;\n\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\n const flags = PrimitiveCommand._scratchTechniqueFlags;\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\n const enableAtmosphere = target.wantAtmosphere ? EnableAtmosphere.Yes : EnableAtmosphere.No;\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType, enableAtmosphere);\n\n const technique = target.techniques.getTechnique(techniqueId);\n const program = technique.getShader(flags);\n\n if (exec.setProgram(program))\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\n }\n\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\n\n public getPass(target: Target): Pass {\n return this.primitive.getPass(target);\n }\n}\n\n/** @internal */\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\n/** @internal */\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\n/** @internal */\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\n\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\n * @internal\n */\nexport type DrawCommands = DrawCommand[];\n\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\n * @internal\n */\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\n return undefined;\n\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\n const surface = pc.primitive.cachedGeometry.asSurface;\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\n let j = i - 1;\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\n j--;\n if (j < 0)\n continue;\n\n const pushBatch = cmds[j] as PushBatchCommand;\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\n if (undefined !== elemId && elemId === flashedId) {\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\n }\n }\n }\n\n return undefined;\n}\n\nconst scratchFeature = PackedFeature.create();\n\n/** @internal */\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\n const result: DrawCommand[] = [];\n\n let batch;\n for (const cmd of cmds) {\n switch (cmd.opcode) {\n case \"popBranch\":\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\n result.pop(); // remove empty push/pop pairs\n continue;\n }\n break;\n case \"popBatch\":\n batch = undefined;\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\n result.pop(); // remove empty push/pop pairs\n continue;\n }\n break;\n case \"pushBatch\":\n batch = cmd.batch;\n break;\n case \"drawPrimitive\":\n if (undefined !== batch) {\n // Skip any primitives that are not hilited.\n const surface = cmd.primitive.cachedGeometry.asSurface;\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\n continue;\n\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId, scratchFeature);\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(Id64.fromUint32PairObject(feature.modelId))))\n continue;\n\n break;\n }\n }\n\n result.push(cmd);\n }\n\n return result;\n}\n"]}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
import { BeEvent } from "@itwin/core-bentley";
|
|
9
9
|
/** @internal */
|
|
10
10
|
export class IModelFrameLifecycle {
|
|
11
|
+
static { this.onBeforeRender = new BeEvent(); }
|
|
12
|
+
static { this.onRenderOpaque = new BeEvent(); }
|
|
13
|
+
static { this.onChangeCameraFrustum = new BeEvent(); }
|
|
14
|
+
static { this.onChangeCameraView = new BeEvent(); }
|
|
11
15
|
}
|
|
12
|
-
IModelFrameLifecycle.onBeforeRender = new BeEvent();
|
|
13
|
-
IModelFrameLifecycle.onRenderOpaque = new BeEvent();
|
|
14
|
-
IModelFrameLifecycle.onChangeCameraFrustum = new BeEvent();
|
|
15
|
-
IModelFrameLifecycle.onChangeCameraView = new BeEvent();
|
|
16
16
|
//# sourceMappingURL=IModelFrameLifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4C9C,gBAAgB;AAChB,MAAM,OAAO,oBAAoB
|
|
1
|
+
{"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4C9C,gBAAgB;AAChB,MAAM,OAAO,oBAAoB;aACR,mBAAc,GAAG,IAAI,OAAO,EAAyC,CAAC;aACtE,mBAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;aAChE,0BAAqB,GAAG,IAAI,OAAO,EAA0C,CAAC;aAC9E,uBAAkB,GAAG,IAAI,OAAO,EAAuC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { Viewport } from \"../../Viewport\";\nimport { FrameBuffer, FrameBufferStack } from \"./FrameBuffer\";\nimport { FrustumUniformType } from \"./FrustumUniforms\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { CompositeFlags } from \"./RenderFlags\";\nimport { System } from \"./System\";\n\n/** @internal */\nexport interface FrameRenderData {\n commands: RenderCommands;\n needComposite: boolean;\n compositeFlags: CompositeFlags;\n fbo: FrameBuffer;\n frameBufferStack: FrameBufferStack;\n}\n\n/** @internal */\nexport interface FrameBeforeRenderData {\n renderSystem: System;\n viewport: Viewport;\n setSceneNeedRedraw: (redraw: boolean) => void;\n}\n\n/** @internal */\nexport interface FrameCameraFrustumData {\n type: FrustumUniformType;\n left: number;\n right: number;\n bottom: number;\n top: number;\n front: number;\n back: number;\n}\n\n/** @internal */\nexport interface FrameCameraViewData {\n cameraPosition: Point3d;\n viewX: Vector3d;\n viewY: Vector3d;\n viewZ: Vector3d;\n}\n\n/** @internal */\nexport class IModelFrameLifecycle {\n public static readonly onBeforeRender = new BeEvent<(data: FrameBeforeRenderData) => void>();\n public static readonly onRenderOpaque = new BeEvent<(data: FrameRenderData) => void>();\n public static readonly onChangeCameraFrustum = new BeEvent<(data: FrameCameraFrustumData) => void>();\n public static readonly onChangeCameraView = new BeEvent<(data: FrameCameraViewData) => void>();\n}\n"]}
|
|
@@ -37,11 +37,11 @@ class InstanceData {
|
|
|
37
37
|
getRtcOnlyTransform() {
|
|
38
38
|
return this._rtcOnlyTransform;
|
|
39
39
|
}
|
|
40
|
+
static { this._noFeatureId = new Float32Array([0, 0, 0]); }
|
|
40
41
|
get patternFeatureId() {
|
|
41
42
|
return InstanceData._noFeatureId;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
InstanceData._noFeatureId = new Float32Array([0, 0, 0]);
|
|
45
45
|
/** @internal */
|
|
46
46
|
export class InstanceBuffersData extends InstanceData {
|
|
47
47
|
constructor(count, transforms, rtcCenter, symbology, featureIds, disableDisposal = false) {
|
|
@@ -107,6 +107,7 @@ export var RenderInstancesImpl;
|
|
|
107
107
|
})(RenderInstancesImpl || (RenderInstancesImpl = {}));
|
|
108
108
|
/** @internal */
|
|
109
109
|
export class InstanceBuffers {
|
|
110
|
+
static { this._patternParams = new Float32Array([0, 0, 0, 0]); }
|
|
110
111
|
get numInstances() { return this._data.numInstances; }
|
|
111
112
|
get transforms() { return this._data.transforms; }
|
|
112
113
|
get featureIds() { return this._data.featureIds; }
|
|
@@ -196,9 +197,9 @@ export class InstanceBuffers {
|
|
|
196
197
|
return range.clone(out);
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
|
-
InstanceBuffers._patternParams = new Float32Array([0, 0, 0, 0]);
|
|
200
200
|
/** @internal */
|
|
201
201
|
export class PatternBuffers extends InstanceData {
|
|
202
|
+
static { _a = _implementationProhibited; }
|
|
202
203
|
constructor(count, rtcCenter, range, patternParams, // [ isAreaPattern, spacingX, spacingY, scale ]
|
|
203
204
|
origin, // [ x, y ]
|
|
204
205
|
orgTransform, localToModel, symbolToLocal, offsets, featureId, viewIndependentOrigin) {
|
|
@@ -245,7 +246,6 @@ export class PatternBuffers extends InstanceData {
|
|
|
245
246
|
stats.addInstances(this.offsets.bytesUsed);
|
|
246
247
|
}
|
|
247
248
|
}
|
|
248
|
-
_a = _implementationProhibited;
|
|
249
249
|
/** @internal */
|
|
250
250
|
export class InstancedGeometry extends CachedGeometry {
|
|
251
251
|
getRtcModelTransform(modelMatrix) { return this._buffers.getRtcModelTransform(modelMatrix); }
|