@itwin/core-frontend 5.2.0-dev.5 → 5.2.0-dev.8
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 +8 -1
- package/lib/cjs/BackgroundMapGeometry.js +13 -13
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +2 -2
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
- package/lib/cjs/CheckpointConnection.js +3 -3
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +7 -6
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +3 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +4 -0
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
- package/lib/cjs/FrustumAnimator.js +3 -2
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
- package/lib/cjs/GlobeAnimator.js +7 -6
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +12 -7
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +2 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +8 -9
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js +2 -0
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +2 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +4 -3
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +2 -2
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +5 -4
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -0
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +3 -3
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +1 -0
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +5 -5
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +1 -1
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.js +2 -2
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/TentativePoint.d.ts.map +1 -1
- package/lib/cjs/TentativePoint.js +10 -9
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +1 -1
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewPose.d.ts.map +1 -1
- package/lib/cjs/ViewPose.js +4 -1
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +17 -12
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.d.ts.map +1 -1
- package/lib/cjs/ViewingSpace.js +2 -0
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +17 -10
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/common/ImageUtil.js +2 -1
- package/lib/cjs/common/ImageUtil.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
- package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
- package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +2 -2
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/cjs/internal/ScriptUtils.js +1 -0
- package/lib/cjs/internal/ScriptUtils.js.map +1 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
- package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
- package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
- package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
- package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
- package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
- package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Contours.js +3 -3
- package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
- package/lib/cjs/internal/render/webgl/EDL.js +18 -18
- package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
- package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
- package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
- package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
- package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
- package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
- package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
- package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
- package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
- package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
- package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
- package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
- package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/System.js +1 -1
- package/lib/cjs/internal/render/webgl/System.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +10 -7
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Texture.js +10 -8
- package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
- package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
- package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
- package/lib/cjs/internal/tile/LRUTileList.js +4 -0
- package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
- package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
- package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
- package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
- package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
- package/lib/cjs/internal/tile/TileUserSet.js +4 -0
- package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
- package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
- package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
- package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +5 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +54 -16
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTile.js +2 -2
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +5 -5
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- 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 +2 -1
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +9 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +10 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +8 -7
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tools/Tool.js +1 -1
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +14 -14
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +2 -2
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/CheckpointConnection.d.ts.map +1 -1
- package/lib/esm/CheckpointConnection.js +4 -4
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +8 -7
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +3 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +4 -0
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FrustumAnimator.d.ts.map +1 -1
- package/lib/esm/FrustumAnimator.js +3 -2
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/GlobeAnimator.d.ts.map +1 -1
- package/lib/esm/GlobeAnimator.js +7 -6
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +12 -7
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +4 -3
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +9 -10
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +2 -2
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
- package/lib/esm/LinePlaneIntersect.js +2 -0
- package/lib/esm/LinePlaneIntersect.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +2 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +5 -4
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +3 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +5 -4
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.d.ts.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -0
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +3 -3
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +2 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +6 -6
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +2 -2
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.js +2 -2
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/TentativePoint.d.ts.map +1 -1
- package/lib/esm/TentativePoint.js +10 -9
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +1 -1
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewPose.d.ts.map +1 -1
- package/lib/esm/ViewPose.js +4 -1
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +18 -13
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.d.ts.map +1 -1
- package/lib/esm/ViewingSpace.js +2 -0
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +18 -11
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/ImageUtil.d.ts.map +1 -1
- package/lib/esm/common/ImageUtil.js +2 -1
- package/lib/esm/common/ImageUtil.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
- package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
- package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
- package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
- package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +2 -2
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/esm/internal/ScriptUtils.js +1 -0
- package/lib/esm/internal/ScriptUtils.js.map +1 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
- package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
- package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.js +2 -1
- package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
- package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
- package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
- package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/internal/render/webgl/Contours.js +4 -4
- package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
- package/lib/esm/internal/render/webgl/EDL.js +19 -19
- package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
- package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
- package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
- package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
- package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
- package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/MeshData.js +3 -3
- package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
- package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
- package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
- package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
- package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
- package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
- package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
- package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
- package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
- package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
- package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/System.js +2 -2
- package/lib/esm/internal/render/webgl/System.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +11 -8
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Texture.js +11 -9
- package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
- package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
- package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
- package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.js +2 -2
- package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
- package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
- package/lib/esm/internal/tile/LRUTileList.js +4 -0
- package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
- package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
- package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
- package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
- package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
- package/lib/esm/internal/tile/TileUserSet.js +4 -0
- package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
- package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
- package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
- package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
- package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +5 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +55 -17
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/RealityTile.d.ts.map +1 -1
- package/lib/esm/tile/RealityTile.js +3 -3
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +6 -6
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- 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 +2 -1
- package/lib/esm/tile/TileDrawArgs.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/MapLayerFormatRegistry.js +2 -2
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +10 -2
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +11 -9
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -8
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +2 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tools/Tool.js +2 -2
- package/lib/esm/tools/Tool.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 +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScratchDrawParams.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAuB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ScratchDrawParams.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAuB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAWlF;AAED,gBAAgB;AAChB,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { DrawParams, ShaderProgramParams } from "./DrawCommand";
|
|
2
|
-
|
|
3
|
-
let
|
|
2
|
+
;
|
|
3
|
+
let scratchDrawParams;
|
|
4
4
|
/** @internal */
|
|
5
5
|
export function getDrawParams(target, geometry) {
|
|
6
|
-
if (undefined ===
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if (undefined === scratchDrawParams) {
|
|
7
|
+
scratchDrawParams = {
|
|
8
|
+
progParams: new ShaderProgramParams(),
|
|
9
|
+
drawParams: new DrawParams(),
|
|
10
|
+
};
|
|
9
11
|
}
|
|
10
|
-
progParams.init(target);
|
|
11
|
-
drawParams.init(progParams, geometry);
|
|
12
|
-
return drawParams;
|
|
12
|
+
scratchDrawParams.progParams.init(target);
|
|
13
|
+
scratchDrawParams.drawParams.init(scratchDrawParams.progParams, geometry);
|
|
14
|
+
return scratchDrawParams.drawParams;
|
|
13
15
|
}
|
|
14
16
|
/** @internal */
|
|
15
17
|
export function freeDrawParams() {
|
|
16
|
-
|
|
17
|
-
drawParams = undefined;
|
|
18
|
+
scratchDrawParams = undefined;
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=ScratchDrawParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScratchDrawParams.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ScratchDrawParams.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAM/D,CAAC;AAEF,IAAI,iBAAgD,CAAC;AAErD,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,QAAwB;IACpE,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,iBAAiB,GAAG;YAClB,UAAU,EAAE,IAAI,mBAAmB,EAAE;YACrC,UAAU,EAAE,IAAI,UAAU,EAAE;SAC7B,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,iBAAiB,CAAC,UAAU,CAAC;AACtC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,cAAc;IAC5B,iBAAiB,GAAG,SAAS,CAAC;AAChC,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*--------------------------------------------------------------------------------------------*/\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\nimport { Target } from \"./Target\";\n\ninterface ScratchDrawParams {\n progParams: ShaderProgramParams;\n drawParams: DrawParams;\n};\n\nlet scratchDrawParams: ScratchDrawParams | undefined;\n\n/** @internal */\nexport function getDrawParams(target: Target, geometry: CachedGeometry): DrawParams {\n if (undefined === scratchDrawParams) {\n scratchDrawParams = {\n progParams: new ShaderProgramParams(),\n drawParams: new DrawParams(),\n };\n }\n\n scratchDrawParams.progParams.init(target);\n scratchDrawParams.drawParams.init(scratchDrawParams.progParams, geometry);\n return scratchDrawParams.drawParams;\n}\n\n/** @internal */\nexport function freeDrawParams(): void {\n scratchDrawParams = undefined;\n}\n"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module WebGL
|
|
7
7
|
*/
|
|
8
|
-
import { assert, dispose } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, dispose, expectDefined } from "@itwin/core-bentley";
|
|
9
9
|
import { UniformType, VaryingType, } from "../../../render/ScreenSpaceEffectBuilder";
|
|
10
10
|
import { RenderState } from "./RenderState";
|
|
11
11
|
import { SingleTexturedViewportQuadGeometry, ViewportQuadGeometry } from "./CachedGeometry";
|
|
@@ -114,7 +114,7 @@ export class ScreenSpaceEffects {
|
|
|
114
114
|
assert(effectGeometry instanceof ScreenSpaceGeometry);
|
|
115
115
|
this._effectGeometry = effectGeometry;
|
|
116
116
|
// NB: We'll replace the texture each time we draw.
|
|
117
|
-
const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(System.instance.lineCodeTexture
|
|
117
|
+
const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(expectDefined(System.instance.lineCodeTexture?.getHandle()), 18 /* TechniqueId.CopyColor */);
|
|
118
118
|
assert(undefined !== copyGeometry);
|
|
119
119
|
this._copyGeometry = copyGeometry;
|
|
120
120
|
}
|
|
@@ -158,7 +158,7 @@ export class ScreenSpaceEffects {
|
|
|
158
158
|
const copyFbo = target.compositor.screenSpaceEffectFbo;
|
|
159
159
|
for (const effect of effects) {
|
|
160
160
|
// Copy the rendered image to texture as input to the effect shader.
|
|
161
|
-
this._copyGeometry.texture = system.frameBufferStack.currentColorBuffer
|
|
161
|
+
this._copyGeometry.texture = expectDefined(system.frameBufferStack.currentColorBuffer?.getHandle());
|
|
162
162
|
system.frameBufferStack.execute(copyFbo, true, false, () => {
|
|
163
163
|
const copyParams = getDrawParams(target, this._copyGeometry);
|
|
164
164
|
system.techniques.draw(copyParams);
|
|
@@ -179,7 +179,7 @@ export class ScreenSpaceEffects {
|
|
|
179
179
|
for (let i = 0; i <= 1; i++) {
|
|
180
180
|
// Copy the pick buffer as input to the effect shader.
|
|
181
181
|
const buffer = 0 === i ? target.compositor.featureIds : target.compositor.depthAndOrder;
|
|
182
|
-
this._copyGeometry.texture = buffer.getHandle();
|
|
182
|
+
this._copyGeometry.texture = expectDefined(buffer.getHandle());
|
|
183
183
|
system.frameBufferStack.execute(copyFbo, true, false, () => {
|
|
184
184
|
const copyParams = getDrawParams(target, this._copyGeometry);
|
|
185
185
|
system.techniques.draw(copyParams);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScreenSpaceEffect.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, dispose } from \"@itwin/core-bentley\";\nimport {\n ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams, ScreenSpaceEffectContext, UniformArrayParams, UniformParams, UniformType, VaryingType,\n} from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { ProgramBuilder, VariableType } from \"./ShaderBuilder\";\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\nimport { RenderState } from \"./RenderState\";\nimport { SingleTexturedViewportQuadGeometry, ViewportQuadGeometry } from \"./CachedGeometry\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { SingularTechnique } from \"./Technique\";\nimport { Target } from \"./Target\";\nimport { System } from \"./System\";\nimport { createScreenSpaceEffectProgramBuilder } from \"./glsl/ScreenSpaceEffect\";\n\ntype ShouldApply = (context: ScreenSpaceEffectContext) => boolean;\n\nfunction getUniformVariableType(type: UniformType): VariableType {\n switch (type) {\n case UniformType.Bool: return VariableType.Boolean;\n case UniformType.Int: return VariableType.Int;\n case UniformType.Float: return VariableType.Float;\n case UniformType.Vec2: return VariableType.Vec2;\n case UniformType.Vec3: return VariableType.Vec3;\n case UniformType.Vec4: return VariableType.Vec4;\n }\n}\n\nfunction getVaryingVariableType(type: VaryingType): VariableType {\n switch (type) {\n case VaryingType.Float: return VariableType.Float;\n case VaryingType.Vec2: return VariableType.Vec2;\n case VaryingType.Vec3: return VariableType.Vec3;\n case VaryingType.Vec4: return VariableType.Vec4;\n }\n}\n\nclass Builder {\n private readonly _name: string;\n private readonly _builder: ProgramBuilder;\n private readonly _shiftsPixels: boolean;\n public shouldApply?: ShouldApply;\n\n public constructor(params: ScreenSpaceEffectBuilderParams) {\n this._name = params.name;\n this._builder = createScreenSpaceEffectProgramBuilder(params);\n this._builder.setDebugDescription(`Screen-space: ${this._name}`);\n this._shiftsPixels = undefined !== params.source.sampleSourcePixel;\n }\n\n public get isWebGL2(): boolean {\n return true;\n }\n\n public addUniform(params: UniformParams): void {\n const name = params.name;\n const type = getUniformVariableType(params.type);\n const bind = params.bind;\n\n this._builder.addUniform(name, type, (prog: ShaderProgram) => {\n prog.addProgramUniform(name, (uniform, progParams) => {\n bind(uniform, progParams.target.screenSpaceEffectContext);\n });\n });\n }\n\n public addUniformArray(params: UniformArrayParams): void {\n const { name, bind, length } = { ...params };\n const type = getUniformVariableType(params.type);\n this._builder.addUniformArray(name, type, length, (prog) => {\n prog.addProgramUniform(name, (uniform, progParams) => {\n bind(uniform, progParams.target.screenSpaceEffectContext);\n });\n });\n }\n\n public addVarying(name: string, type: VaryingType): void {\n this._builder.addVarying(name, getVaryingVariableType(type));\n }\n\n public finish(): void {\n const program = this._builder.buildProgram(System.instance.context);\n\n // NB: compile() will throw with WebGL error log if compile/link fails.\n if (CompileStatus.Success !== program.compile())\n throw new Error(`Failed to produce shader program for screen-space effect \"${this._name}\"`);\n\n const technique = new SingularTechnique(program);\n const techniqueId = System.instance.techniques.addDynamicTechnique(technique, this._name);\n\n const effect = new ScreenSpaceEffect(techniqueId, this._name, this._shiftsPixels, this.shouldApply);\n System.instance.screenSpaceEffects.add(effect);\n }\n}\n\nclass ScreenSpaceEffect {\n public readonly techniqueId: TechniqueId;\n public readonly name: string;\n private readonly _shouldApply?: ShouldApply;\n private readonly _shiftsPixels: boolean;\n\n public constructor(techniqueId: TechniqueId, name: string, shiftsPixels: boolean, shouldApply?: ShouldApply) {\n this.techniqueId = techniqueId;\n this.name = name;\n this._shouldApply = shouldApply;\n this._shiftsPixels = shiftsPixels;\n }\n\n public shouldApply(target: Target): boolean {\n // Effects only apply during readPixels() if they move pixels around (we need to move pixels in the pick buffers correspondingly).\n if (target.isReadPixelsInProgress && !this._shiftsPixels)\n return false;\n\n return undefined === this._shouldApply || this._shouldApply(target.screenSpaceEffectContext);\n }\n}\n\nclass ScreenSpaceGeometry extends ViewportQuadGeometry {\n public setTechniqueId(id: TechniqueId) {\n this._techniqueId = id;\n }\n}\n\n/** @internal */\nexport class ScreenSpaceEffects {\n private readonly _effects = new Map<string, ScreenSpaceEffect>();\n private readonly _effectGeometry: ScreenSpaceGeometry;\n private readonly _copyGeometry: SingleTexturedViewportQuadGeometry;\n private readonly _workingArray: ScreenSpaceEffect[] = [];\n\n public constructor() {\n // We will change the geometry's TechniqueId before applying each technique.\n const effectGeometry = ScreenSpaceGeometry.create(TechniqueId.Invalid);\n assert(effectGeometry instanceof ScreenSpaceGeometry);\n this._effectGeometry = effectGeometry;\n\n // NB: We'll replace the texture each time we draw.\n const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(System.instance.lineCodeTexture!.getHandle()!, TechniqueId.CopyColor);\n assert(undefined !== copyGeometry);\n this._copyGeometry = copyGeometry;\n }\n\n public [Symbol.dispose](): void {\n dispose(this._effectGeometry);\n dispose(this._copyGeometry);\n }\n\n public add(effect: ScreenSpaceEffect): void {\n if (undefined !== this._effects.get(effect.name))\n throw new Error(`Screen-space effect \"${effect.name}\" is already registered.`);\n\n this._effects.set(effect.name, effect);\n }\n\n /** Return true if any effects should be applied to this Target. */\n public shouldApply(target: Target): boolean {\n return this.getApplicableEffects(target).length > 0;\n }\n\n private getApplicableEffects(target: Target): ScreenSpaceEffect[] {\n const effects = this._workingArray;\n effects.length = 0;\n\n const names = target.screenSpaceEffects;\n for (const name of names) {\n const effect = this._effects.get(name);\n if (effect && effect.shouldApply(target))\n effects.push(effect);\n }\n\n return effects;\n }\n\n /** Apply screen-space effects to the Target's rendered image. */\n public apply(target: Target): void {\n if (0 === this._effects.size)\n return;\n\n const effects = this.getApplicableEffects(target);\n if (0 === effects.length)\n return;\n\n if (target.isReadPixelsInProgress) {\n this.applyForReadPixels(effects, target);\n return;\n }\n\n const system = System.instance;\n system.applyRenderState(RenderState.defaults);\n\n const copyFbo = target.compositor.screenSpaceEffectFbo;\n for (const effect of effects) {\n // Copy the rendered image to texture as input to the effect shader.\n this._copyGeometry.texture = system.frameBufferStack.currentColorBuffer!.getHandle()!;\n system.frameBufferStack.execute(copyFbo, true, false, () => {\n const copyParams = getDrawParams(target, this._copyGeometry);\n system.techniques.draw(copyParams);\n });\n\n // Run the effect shader with a copy of the current image as input.\n this._effectGeometry.setTechniqueId(effect.techniqueId);\n const params = getDrawParams(target, this._effectGeometry);\n system.techniques.draw(params);\n }\n }\n\n private applyForReadPixels(effects: ScreenSpaceEffect[], target: Target): void {\n const system = System.instance;\n system.applyRenderState(RenderState.defaults);\n\n // ###TODO: We could use MRT if available here rather than two passes.\n const copyFbo = target.compositor.screenSpaceEffectFbo;\n for (const effect of effects) {\n this._effectGeometry.setTechniqueId(effect.techniqueId);\n for (let i = 0; i <= 1; i++) {\n // Copy the pick buffer as input to the effect shader.\n const buffer = 0 === i ? target.compositor.featureIds : target.compositor.depthAndOrder;\n this._copyGeometry.texture = buffer.getHandle()!;\n system.frameBufferStack.execute(copyFbo, true, false, () => {\n const copyParams = getDrawParams(target, this._copyGeometry);\n system.techniques.draw(copyParams);\n });\n\n // Run the effect shader with a copy of the current pick buffer to output to pick buffer.\n // ###TODO: Avoid frequent framebuffer allocation.\n const effectFbo = FrameBuffer.create([buffer]);\n assert(undefined !== effectFbo);\n system.frameBufferStack.execute(effectFbo, true, false, () => {\n const effectParams = getDrawParams(target, this._effectGeometry);\n system.techniques.draw(effectParams);\n });\n\n effectFbo[Symbol.dispose]();\n }\n }\n }\n}\n\nexport function createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\n return new Builder(params);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ScreenSpaceEffect.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, dispose, expectDefined } from \"@itwin/core-bentley\";\nimport {\n ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams, ScreenSpaceEffectContext, UniformArrayParams, UniformParams, UniformType, VaryingType,\n} from \"../../../render/ScreenSpaceEffectBuilder\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { ProgramBuilder, VariableType } from \"./ShaderBuilder\";\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\nimport { RenderState } from \"./RenderState\";\nimport { SingleTexturedViewportQuadGeometry, ViewportQuadGeometry } from \"./CachedGeometry\";\nimport { FrameBuffer } from \"./FrameBuffer\";\nimport { getDrawParams } from \"./ScratchDrawParams\";\nimport { SingularTechnique } from \"./Technique\";\nimport { Target } from \"./Target\";\nimport { System } from \"./System\";\nimport { createScreenSpaceEffectProgramBuilder } from \"./glsl/ScreenSpaceEffect\";\n\ntype ShouldApply = (context: ScreenSpaceEffectContext) => boolean;\n\nfunction getUniformVariableType(type: UniformType): VariableType {\n switch (type) {\n case UniformType.Bool: return VariableType.Boolean;\n case UniformType.Int: return VariableType.Int;\n case UniformType.Float: return VariableType.Float;\n case UniformType.Vec2: return VariableType.Vec2;\n case UniformType.Vec3: return VariableType.Vec3;\n case UniformType.Vec4: return VariableType.Vec4;\n }\n}\n\nfunction getVaryingVariableType(type: VaryingType): VariableType {\n switch (type) {\n case VaryingType.Float: return VariableType.Float;\n case VaryingType.Vec2: return VariableType.Vec2;\n case VaryingType.Vec3: return VariableType.Vec3;\n case VaryingType.Vec4: return VariableType.Vec4;\n }\n}\n\nclass Builder {\n private readonly _name: string;\n private readonly _builder: ProgramBuilder;\n private readonly _shiftsPixels: boolean;\n public shouldApply?: ShouldApply;\n\n public constructor(params: ScreenSpaceEffectBuilderParams) {\n this._name = params.name;\n this._builder = createScreenSpaceEffectProgramBuilder(params);\n this._builder.setDebugDescription(`Screen-space: ${this._name}`);\n this._shiftsPixels = undefined !== params.source.sampleSourcePixel;\n }\n\n public get isWebGL2(): boolean {\n return true;\n }\n\n public addUniform(params: UniformParams): void {\n const name = params.name;\n const type = getUniformVariableType(params.type);\n const bind = params.bind;\n\n this._builder.addUniform(name, type, (prog: ShaderProgram) => {\n prog.addProgramUniform(name, (uniform, progParams) => {\n bind(uniform, progParams.target.screenSpaceEffectContext);\n });\n });\n }\n\n public addUniformArray(params: UniformArrayParams): void {\n const { name, bind, length } = { ...params };\n const type = getUniformVariableType(params.type);\n this._builder.addUniformArray(name, type, length, (prog) => {\n prog.addProgramUniform(name, (uniform, progParams) => {\n bind(uniform, progParams.target.screenSpaceEffectContext);\n });\n });\n }\n\n public addVarying(name: string, type: VaryingType): void {\n this._builder.addVarying(name, getVaryingVariableType(type));\n }\n\n public finish(): void {\n const program = this._builder.buildProgram(System.instance.context);\n\n // NB: compile() will throw with WebGL error log if compile/link fails.\n if (CompileStatus.Success !== program.compile())\n throw new Error(`Failed to produce shader program for screen-space effect \"${this._name}\"`);\n\n const technique = new SingularTechnique(program);\n const techniqueId = System.instance.techniques.addDynamicTechnique(technique, this._name);\n\n const effect = new ScreenSpaceEffect(techniqueId, this._name, this._shiftsPixels, this.shouldApply);\n System.instance.screenSpaceEffects.add(effect);\n }\n}\n\nclass ScreenSpaceEffect {\n public readonly techniqueId: TechniqueId;\n public readonly name: string;\n private readonly _shouldApply?: ShouldApply;\n private readonly _shiftsPixels: boolean;\n\n public constructor(techniqueId: TechniqueId, name: string, shiftsPixels: boolean, shouldApply?: ShouldApply) {\n this.techniqueId = techniqueId;\n this.name = name;\n this._shouldApply = shouldApply;\n this._shiftsPixels = shiftsPixels;\n }\n\n public shouldApply(target: Target): boolean {\n // Effects only apply during readPixels() if they move pixels around (we need to move pixels in the pick buffers correspondingly).\n if (target.isReadPixelsInProgress && !this._shiftsPixels)\n return false;\n\n return undefined === this._shouldApply || this._shouldApply(target.screenSpaceEffectContext);\n }\n}\n\nclass ScreenSpaceGeometry extends ViewportQuadGeometry {\n public setTechniqueId(id: TechniqueId) {\n this._techniqueId = id;\n }\n}\n\n/** @internal */\nexport class ScreenSpaceEffects {\n private readonly _effects = new Map<string, ScreenSpaceEffect>();\n private readonly _effectGeometry: ScreenSpaceGeometry;\n private readonly _copyGeometry: SingleTexturedViewportQuadGeometry;\n private readonly _workingArray: ScreenSpaceEffect[] = [];\n\n public constructor() {\n // We will change the geometry's TechniqueId before applying each technique.\n const effectGeometry = ScreenSpaceGeometry.create(TechniqueId.Invalid);\n assert(effectGeometry instanceof ScreenSpaceGeometry);\n this._effectGeometry = effectGeometry;\n\n // NB: We'll replace the texture each time we draw.\n const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(expectDefined(System.instance.lineCodeTexture?.getHandle()), TechniqueId.CopyColor);\n assert(undefined !== copyGeometry);\n this._copyGeometry = copyGeometry;\n }\n\n public [Symbol.dispose](): void {\n dispose(this._effectGeometry);\n dispose(this._copyGeometry);\n }\n\n public add(effect: ScreenSpaceEffect): void {\n if (undefined !== this._effects.get(effect.name))\n throw new Error(`Screen-space effect \"${effect.name}\" is already registered.`);\n\n this._effects.set(effect.name, effect);\n }\n\n /** Return true if any effects should be applied to this Target. */\n public shouldApply(target: Target): boolean {\n return this.getApplicableEffects(target).length > 0;\n }\n\n private getApplicableEffects(target: Target): ScreenSpaceEffect[] {\n const effects = this._workingArray;\n effects.length = 0;\n\n const names = target.screenSpaceEffects;\n for (const name of names) {\n const effect = this._effects.get(name);\n if (effect && effect.shouldApply(target))\n effects.push(effect);\n }\n\n return effects;\n }\n\n /** Apply screen-space effects to the Target's rendered image. */\n public apply(target: Target): void {\n if (0 === this._effects.size)\n return;\n\n const effects = this.getApplicableEffects(target);\n if (0 === effects.length)\n return;\n\n if (target.isReadPixelsInProgress) {\n this.applyForReadPixels(effects, target);\n return;\n }\n\n const system = System.instance;\n system.applyRenderState(RenderState.defaults);\n\n const copyFbo = target.compositor.screenSpaceEffectFbo;\n for (const effect of effects) {\n // Copy the rendered image to texture as input to the effect shader.\n this._copyGeometry.texture = expectDefined(system.frameBufferStack.currentColorBuffer?.getHandle());\n system.frameBufferStack.execute(copyFbo, true, false, () => {\n const copyParams = getDrawParams(target, this._copyGeometry);\n system.techniques.draw(copyParams);\n });\n\n // Run the effect shader with a copy of the current image as input.\n this._effectGeometry.setTechniqueId(effect.techniqueId);\n const params = getDrawParams(target, this._effectGeometry);\n system.techniques.draw(params);\n }\n }\n\n private applyForReadPixels(effects: ScreenSpaceEffect[], target: Target): void {\n const system = System.instance;\n system.applyRenderState(RenderState.defaults);\n\n // ###TODO: We could use MRT if available here rather than two passes.\n const copyFbo = target.compositor.screenSpaceEffectFbo;\n for (const effect of effects) {\n this._effectGeometry.setTechniqueId(effect.techniqueId);\n for (let i = 0; i <= 1; i++) {\n // Copy the pick buffer as input to the effect shader.\n const buffer = 0 === i ? target.compositor.featureIds : target.compositor.depthAndOrder;\n this._copyGeometry.texture = expectDefined(buffer.getHandle());\n system.frameBufferStack.execute(copyFbo, true, false, () => {\n const copyParams = getDrawParams(target, this._copyGeometry);\n system.techniques.draw(copyParams);\n });\n\n // Run the effect shader with a copy of the current pick buffer to output to pick buffer.\n // ###TODO: Avoid frequent framebuffer allocation.\n const effectFbo = FrameBuffer.create([buffer]);\n assert(undefined !== effectFbo);\n system.frameBufferStack.execute(effectFbo, true, false, () => {\n const effectParams = getDrawParams(target, this._effectGeometry);\n system.techniques.draw(effectParams);\n });\n\n effectFbo[Symbol.dispose]();\n }\n }\n }\n}\n\nexport function createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\n return new Builder(params);\n}\n"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module WebGL
|
|
7
7
|
*/
|
|
8
|
-
import { assert } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, expectDefined } from "@itwin/core-bentley";
|
|
9
9
|
import { DebugShaderFile } from "../RenderSystemDebugControl";
|
|
10
10
|
import { ShaderProgramParams } from "./DrawCommand";
|
|
11
11
|
import { GL } from "./GL";
|
|
@@ -95,7 +95,7 @@ export class ShaderProgram {
|
|
|
95
95
|
[Symbol.dispose]() {
|
|
96
96
|
if (!this.isDisposed) {
|
|
97
97
|
assert(!this._inUse);
|
|
98
|
-
System.instance.context.deleteProgram(this._glProgram);
|
|
98
|
+
System.instance.context.deleteProgram(expectDefined(this._glProgram));
|
|
99
99
|
this._glProgram = undefined;
|
|
100
100
|
this._status = 2 /* CompileStatus.Uncompiled */;
|
|
101
101
|
}
|
|
@@ -136,9 +136,9 @@ export class ShaderProgram {
|
|
|
136
136
|
gl.attachShader(this._glProgram, frag);
|
|
137
137
|
// bind attribute locations before final linking
|
|
138
138
|
if (this._attrMap !== undefined) {
|
|
139
|
-
this._attrMap
|
|
139
|
+
for (const [key, attr] of this._attrMap) {
|
|
140
140
|
gl.bindAttribLocation(this._glProgram, attr.location, key);
|
|
141
|
-
}
|
|
141
|
+
}
|
|
142
142
|
}
|
|
143
143
|
gl.linkProgram(this._glProgram);
|
|
144
144
|
const linkLog = gl.getProgramInfoLog(this._glProgram);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { DebugShaderFile } from \"../RenderSystemDebugControl\";\nimport { AttributeDetails } from \"./AttributeMap\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { Batch, Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueFlags } from \"./TechniqueFlags\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** Flags which control some conditional branches in shader code\n * @internal\n */\nexport const enum ShaderFlags {\n None = 0,\n Monochrome = 1 << 0,\n NonUniformColor = 1 << 1,\n OITFlatAlphaWeight = 1 << 2,\n OITScaleOutput = 1 << 3,\n IgnoreNonLocatable = 1 << 4,\n}\n\n/** Describes the location of a uniform variable within a shader program.\n * @internal\n */\nexport class Uniform {\n private readonly _name: string;\n protected _handle?: UniformHandle;\n\n protected constructor(name: string) { this._name = name; }\n\n public compile(prog: ShaderProgram): boolean {\n assert(!this.isValid);\n if (undefined !== prog.glProgram) {\n this._handle = UniformHandle.create(prog, this._name);\n }\n\n return this.isValid;\n }\n\n public get isValid(): boolean { return undefined !== this._handle; }\n}\n\n/**\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\n * The function is responsible for setting the value of the uniform.\n * @internal\n */\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\n\n/**\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\n * @internal\n */\nexport class ProgramUniform extends Uniform {\n private readonly _bind: BindProgramUniform;\n\n public constructor(name: string, bind: BindProgramUniform) {\n super(name);\n this._bind = bind;\n }\n\n public bind(params: ShaderProgramParams): void {\n if (undefined !== this._handle) {\n this._bind(this._handle, params);\n }\n }\n}\n\n/**\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\n * The function is responsible for setting the value of the uniform.\n * @internal\n */\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\n\n/**\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\n * to the program to set the value of the uniform.\n * @internal\n */\nexport class GraphicUniform extends Uniform {\n private readonly _bind: BindGraphicUniform;\n\n public constructor(name: string, bind: BindGraphicUniform) {\n super(name);\n this._bind = bind;\n }\n\n public bind(params: DrawParams): void {\n if (undefined !== this._handle) {\n this._bind(this._handle, params);\n }\n }\n}\n\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\n * @internal\n */\nexport const enum CompileStatus {\n Success, // The program was successfully compiled.\n Failure, // The program failed to compile.\n Uncompiled, // No attempt has yet been made to compile the program.\n}\n\n/** @internal */\nexport class ShaderProgram implements WebGLDisposable {\n public vertSource: string;\n public fragSource: string;\n private _glProgram?: WebGLProgram;\n private _inUse: boolean = false;\n private _status: CompileStatus = CompileStatus.Uncompiled;\n private readonly _programUniforms = new Array<ProgramUniform>();\n private readonly _graphicUniforms = new Array<GraphicUniform>();\n private readonly _attrMap?: Map<string, AttributeDetails>;\n // for debugging purposes...\n public readonly description: string;\n private _fragDescription: string;\n private _vertGNdx: number = -1;\n private _fragGNdx: number = -1;\n private _vertHNdx: number = -1;\n private _fragHNdx: number = -1;\n public readonly outputsToPick;\n\n public constructor(gl: WebGL2RenderingContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\n this.description = description;\n this.outputsToPick = description.includes(\"Overrides\") || description.includes(\"Pick\");\n this._fragDescription = fragDescription;\n this.vertSource = vertSource;\n this.fragSource = fragSource;\n this._attrMap = attrMap;\n\n const glProgram = gl.createProgram();\n this._glProgram = (null === glProgram) ? undefined : glProgram;\n }\n\n public get isDisposed(): boolean { return this._glProgram === undefined; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n assert(!this._inUse);\n System.instance.context.deleteProgram(this._glProgram!);\n this._glProgram = undefined;\n this._status = CompileStatus.Uncompiled;\n }\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\n public get isCompiled() { return CompileStatus.Success === this._status; }\n\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\n const gl = System.instance.context;\n\n const shader = gl.createShader(type);\n if (null === shader)\n return undefined;\n\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\n if (!succeeded) {\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\n throw new Error(compileLog);\n }\n\n if (System.instance.options.debugShaders) {\n const isVS = GL.ShaderType.Vertex === type;\n const desc = isVS ? this.description : this._fragDescription;\n this.saveShaderCode(isVS, desc, src, shader);\n }\n\n return shader;\n }\n\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\n assert(undefined !== this.glProgram);\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\n return false;\n\n const gl = System.instance.context;\n gl.attachShader(this._glProgram, vert);\n gl.attachShader(this._glProgram, frag);\n\n // bind attribute locations before final linking\n if (this._attrMap !== undefined) {\n this._attrMap.forEach((attr: AttributeDetails, key: string) => {\n gl.bindAttribLocation(this._glProgram!, attr.location, key);\n });\n }\n\n gl.linkProgram(this._glProgram);\n\n const linkLog = gl.getProgramInfoLog(this._glProgram);\n gl.validateProgram(this._glProgram);\n\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\n if (!succeeded) {\n const validateLog = gl.getProgramInfoLog(this._glProgram);\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\n throw new Error(msg);\n }\n\n // Debug output\n const debugUniforms = false;\n if (debugUniforms) {\n const dbgLog = (x: string) => console.log(x); // eslint-disable-line no-console\n const outSrc = false; // true for source out, false for just varying info\n if (this._fragDescription) {\n let tStr = \"\";\n if (!outSrc) {\n tStr = `${this._fragDescription}`;\n }\n const numUniforms = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.ActiveUniforms);\n const tStr2 = `Active Uniforms: ${numUniforms}`;\n if (tStr2) {\n if (outSrc) {\n dbgLog(\"//===============================================================================================================\");\n dbgLog(this.vertSource);\n dbgLog(\"//========= Num Active Uniforms =========\");\n dbgLog(`${tStr2}\\n`);\n dbgLog(this.fragSource);\n } else {\n dbgLog(`\\n${tStr2} ${tStr}\\n`);\n }\n }\n }\n }\n\n return true;\n }\n\n public compile(forUse: boolean = false): CompileStatus {\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\n this.setDebugShaderUsage();\n\n switch (this._status) {\n case CompileStatus.Failure: return CompileStatus.Failure;\n case CompileStatus.Success: return CompileStatus.Success;\n default: {\n if (this.isDisposed) {\n this._status = CompileStatus.Failure;\n return CompileStatus.Failure;\n }\n break;\n }\n }\n\n this._status = CompileStatus.Failure;\n\n const vert = this.compileShader(GL.ShaderType.Vertex);\n const frag = this.compileShader(GL.ShaderType.Fragment);\n if (undefined !== vert && undefined !== frag)\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\n this._status = CompileStatus.Success;\n\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\n this.setDebugShaderUsage();\n\n if (true !== System.instance.options.preserveShaderSourceCode)\n this.vertSource = this.fragSource = \"\";\n\n return this._status;\n }\n\n public use(params: ShaderProgramParams): boolean {\n if (this.compile(true) !== CompileStatus.Success)\n return false;\n\n assert(undefined !== this._glProgram);\n if (null === this._glProgram || undefined === this._glProgram)\n return false;\n\n assert(!this._inUse);\n this._inUse = true;\n params.context.useProgram(this._glProgram);\n\n for (const uniform of this._programUniforms)\n uniform.bind(params);\n\n return true;\n }\n\n public endUse() {\n this._inUse = false;\n System.instance.context.useProgram(null);\n }\n\n public draw(params: DrawParams): void {\n assert(this._inUse);\n for (const uniform of this._graphicUniforms)\n uniform.bind(params);\n\n params.geometry.draw();\n }\n\n public addProgramUniform(name: string, binding: BindProgramUniform) {\n assert(this.isUncompiled);\n this._programUniforms.push(new ProgramUniform(name, binding));\n }\n\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\n assert(this.isUncompiled);\n this._graphicUniforms.push(new GraphicUniform(name, binding));\n }\n\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\n for (const uniform of uniforms) {\n if (!uniform.compile(this))\n return false;\n }\n\n return true;\n }\n\n private setDebugShaderUsage() {\n if (!System.instance.options.debugShaders)\n return;\n\n const shaderFiles = System.instance.debugShaderFiles;\n if (this._vertGNdx >= 0)\n shaderFiles[this._vertGNdx].isUsed = true;\n\n if (this._fragGNdx >= 0)\n shaderFiles[this._fragGNdx].isUsed = true;\n\n if (this._vertHNdx >= 0)\n shaderFiles[this._vertHNdx].isUsed = true;\n\n if (this._fragHNdx >= 0)\n shaderFiles[this._fragHNdx].isUsed = true;\n }\n\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\n if (!System.instance.options.debugShaders)\n return;\n\n const shaderFiles = System.instance.debugShaderFiles;\n let sname: string;\n if (desc) {\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\n sname = sname.split(\": \").join(\"-\");\n sname = sname.split(\"; \").join(\"-\");\n } else {\n // need to investigate shaders with no comments to derive names, for now come up with unique name\n sname = `noname-${shaderFiles.length}`;\n }\n\n sname += isVS ? \"_VS\" : \"_FS\";\n const fname = `${sname}.glsl`;\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\n if (isVS)\n this._vertGNdx = dsfNdx - 1;\n else\n this._fragGNdx = dsfNdx - 1;\n\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\n if (!ext2)\n return;\n\n const srcH = ext2.getTranslatedShaderSource(shader);\n if (!srcH)\n return;\n\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\n\n // parse and edit srcH to make it compilable\n const fnameH = `${sname}.hlsl`;\n let numTargets = 0; // for gl_Color cases\n let haveGLpos = false;\n let haveGLpntsz = false;\n let haveGLDepth = false;\n let haveGLFrontFacing = false;\n let haveGLPointCoord = false;\n let haveGLFragCoord = false;\n let haveGLFragColorOnly = false; // for only 1 output\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\n const attrs: string[] = new Array<string>();\n const varyings: string[] = new Array<string>();\n const lines = srcH.split(\"\\n\");\n let toss = true;\n for (let ndx = 0; ndx < lines.length;) {\n let line = lines[ndx];\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\n toss = true;\n\n if (toss)\n lines.splice(ndx, 1);\n\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\n toss = false;\n } else if (!toss) { // look for lines that need editing\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\n ++ndx;\n line = lines[ndx].substring(6).trimStart();\n varyings.push(line.substring(0, line.indexOf(\"=\")));\n }\n }\n\n if (isVS) {\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\n ++ndx;\n line = lines[ndx].substring(6).trimStart();\n attrs.push(line.substring(0, line.indexOf(\"=\")));\n }\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\n haveGLpos = true;\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\n haveGLpntsz = true;\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\n let aNdx = 0;\n for (const tstr of attrs) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\n ++aNdx;\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\n for (const tstr of attrs) {\n let t = tstr.indexOf(\"_a\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\n }\n\n ++ndx;\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\n if (haveGLpos) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\n }\n\n if (haveGLpntsz) {\n ++ndx;\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\n }\n\n let vNdx = 0;\n for (const tstr of varyings) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\n ++vNdx;\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\n if (haveGLpos) {\n ++ndx;\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\n }\n\n if (haveGLpntsz) {\n ++ndx;\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\n }\n\n for (const tstr of varyings) {\n let t = tstr.indexOf(\"_v\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" return output;\\n}\");\n }\n } else { // fragment shader\n let tNdx = 0;\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\n //\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\n if (numTargets < 1)\n numTargets = 1;\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\n if (numTargets < 2)\n numTargets = 2;\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\n if (numTargets < 3)\n numTargets = 3;\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\n numTargets = 4;\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\n haveGLDepth = true;\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\n haveGLFrontFacing = true;\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\n haveGLPointCoord = true;\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\n haveGLFragCoord = true;\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\n const c = line.substring(tNdx + 13, tNdx + 13 + 1);\n if (c === \" \" || c === \"=\")\n haveGLFragColorOnly = true;\n else {\n tNdx = +c;\n haveGLFragColor[tNdx] = true;\n }\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\n if (haveGLFragCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\n }\n\n let vNdx = 0;\n for (const tstr of varyings) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\n ++vNdx;\n }\n\n if (haveGLFrontFacing) {\n ++ndx;\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\n }\n\n if (haveGLPointCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\n if (haveGLFragCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\n }\n\n for (const tstr of varyings) {\n let t = tstr.indexOf(\"_v\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\n }\n\n if (haveGLFrontFacing) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\n }\n\n if (haveGLPointCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\n let cNdx = 0;\n while (cNdx < numTargets) {\n ++ndx;\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\n ++cNdx;\n }\n\n if (haveGLFragColorOnly) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\n } else {\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\n if (haveGLFragColor[cNdx]) {\n ++ndx;\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\n }\n }\n }\n\n if (haveGLDepth) {\n ++ndx;\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\n cNdx = 0;\n while (cNdx < numTargets) {\n ++ndx;\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\n ++cNdx;\n }\n\n if (haveGLFragColorOnly) {\n ++ndx;\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\n } else {\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\n if (haveGLFragColor[cNdx]) {\n ++ndx;\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\n }\n }\n }\n\n if (haveGLDepth) {\n ++ndx;\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" return output;\\n}\");\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\n }\n }\n\n ++ndx;\n }\n }\n\n const srcH2 = lines.join(\"\\n\");\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\n if (isVS)\n this._vertHNdx = dsfNdx - 1;\n else\n this._fragHNdx = dsfNdx - 1;\n }\n}\n\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\n * Instances of this class must *only* be declared with the `using` keyword!\n * @internal\n */\nexport class ShaderProgramExecutor {\n private _program?: ShaderProgram;\n private static _params?: ShaderProgramParams;\n\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\n this.params.init(target, pass);\n this.changeProgram(program);\n }\n\n public static freeParams(): void {\n this._params = undefined;\n }\n\n private _isDisposed = false;\n public get isDisposed(): boolean { return this._isDisposed; }\n\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\n public [Symbol.dispose]() {\n this.changeProgram(undefined);\n ShaderProgramExecutor.freeParams();\n this._isDisposed = true;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\n public get isValid() { return undefined !== this._program; }\n public get target() { return this.params.target; }\n public get renderPass() { return this.params.renderPass; }\n public get params() {\n if (undefined === ShaderProgramExecutor._params)\n ShaderProgramExecutor._params = new ShaderProgramParams();\n\n return ShaderProgramExecutor._params;\n }\n\n public draw(params: DrawParams) {\n assert(this.isValid);\n if (undefined !== this._program) {\n this._program.draw(params);\n }\n }\n public drawInterrupt(params: DrawParams) {\n assert(params.target === this.params.target);\n\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\n const program = tech.getShader(TechniqueFlags.defaults);\n if (this.setProgram(program)) {\n this.draw(params);\n }\n }\n\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\n public popBranch(): void { this.target.popBranch(); }\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\n public popBatch(): void { this.target.popBatch(); }\n\n private changeProgram(program?: ShaderProgram): boolean {\n if (this._program === program) {\n return true;\n } else if (undefined !== this._program) {\n this._program.endUse();\n }\n\n this._program = program;\n if (undefined !== program && !program.use(this.params)) {\n this._program = undefined;\n return false;\n }\n\n return true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShaderProgram.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, expectDefined } from \"@itwin/core-bentley\";\nimport { DebugShaderFile } from \"../RenderSystemDebugControl\";\nimport { AttributeDetails } from \"./AttributeMap\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { Batch, Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueFlags } from \"./TechniqueFlags\";\n\n/* eslint-disable no-restricted-syntax */\n\n/** Flags which control some conditional branches in shader code\n * @internal\n */\nexport const enum ShaderFlags {\n None = 0,\n Monochrome = 1 << 0,\n NonUniformColor = 1 << 1,\n OITFlatAlphaWeight = 1 << 2,\n OITScaleOutput = 1 << 3,\n IgnoreNonLocatable = 1 << 4,\n}\n\n/** Describes the location of a uniform variable within a shader program.\n * @internal\n */\nexport class Uniform {\n private readonly _name: string;\n protected _handle?: UniformHandle;\n\n protected constructor(name: string) { this._name = name; }\n\n public compile(prog: ShaderProgram): boolean {\n assert(!this.isValid);\n if (undefined !== prog.glProgram) {\n this._handle = UniformHandle.create(prog, this._name);\n }\n\n return this.isValid;\n }\n\n public get isValid(): boolean { return undefined !== this._handle; }\n}\n\n/**\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\n * The function is responsible for setting the value of the uniform.\n * @internal\n */\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\n\n/**\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\n * @internal\n */\nexport class ProgramUniform extends Uniform {\n private readonly _bind: BindProgramUniform;\n\n public constructor(name: string, bind: BindProgramUniform) {\n super(name);\n this._bind = bind;\n }\n\n public bind(params: ShaderProgramParams): void {\n if (undefined !== this._handle) {\n this._bind(this._handle, params);\n }\n }\n}\n\n/**\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\n * The function is responsible for setting the value of the uniform.\n * @internal\n */\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\n\n/**\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\n * to the program to set the value of the uniform.\n * @internal\n */\nexport class GraphicUniform extends Uniform {\n private readonly _bind: BindGraphicUniform;\n\n public constructor(name: string, bind: BindGraphicUniform) {\n super(name);\n this._bind = bind;\n }\n\n public bind(params: DrawParams): void {\n if (undefined !== this._handle) {\n this._bind(this._handle, params);\n }\n }\n}\n\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\n * @internal\n */\nexport const enum CompileStatus {\n Success, // The program was successfully compiled.\n Failure, // The program failed to compile.\n Uncompiled, // No attempt has yet been made to compile the program.\n}\n\n/** @internal */\nexport class ShaderProgram implements WebGLDisposable {\n public vertSource: string;\n public fragSource: string;\n private _glProgram?: WebGLProgram;\n private _inUse: boolean = false;\n private _status: CompileStatus = CompileStatus.Uncompiled;\n private readonly _programUniforms = new Array<ProgramUniform>();\n private readonly _graphicUniforms = new Array<GraphicUniform>();\n private readonly _attrMap?: Map<string, AttributeDetails>;\n // for debugging purposes...\n public readonly description: string;\n private _fragDescription: string;\n private _vertGNdx: number = -1;\n private _fragGNdx: number = -1;\n private _vertHNdx: number = -1;\n private _fragHNdx: number = -1;\n public readonly outputsToPick;\n\n public constructor(gl: WebGL2RenderingContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\n this.description = description;\n this.outputsToPick = description.includes(\"Overrides\") || description.includes(\"Pick\");\n this._fragDescription = fragDescription;\n this.vertSource = vertSource;\n this.fragSource = fragSource;\n this._attrMap = attrMap;\n\n const glProgram = gl.createProgram();\n this._glProgram = (null === glProgram) ? undefined : glProgram;\n }\n\n public get isDisposed(): boolean { return this._glProgram === undefined; }\n\n public [Symbol.dispose](): void {\n if (!this.isDisposed) {\n assert(!this._inUse);\n System.instance.context.deleteProgram(expectDefined(this._glProgram));\n this._glProgram = undefined;\n this._status = CompileStatus.Uncompiled;\n }\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose(): void {\n this[Symbol.dispose]();\n }\n\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\n public get isCompiled() { return CompileStatus.Success === this._status; }\n\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\n const gl = System.instance.context;\n\n const shader = gl.createShader(type);\n if (null === shader)\n return undefined;\n\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\n if (!succeeded) {\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\n throw new Error(compileLog);\n }\n\n if (System.instance.options.debugShaders) {\n const isVS = GL.ShaderType.Vertex === type;\n const desc = isVS ? this.description : this._fragDescription;\n this.saveShaderCode(isVS, desc, src, shader);\n }\n\n return shader;\n }\n\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\n assert(undefined !== this.glProgram);\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\n return false;\n\n const gl = System.instance.context;\n gl.attachShader(this._glProgram, vert);\n gl.attachShader(this._glProgram, frag);\n\n // bind attribute locations before final linking\n if (this._attrMap !== undefined) {\n for (const [key, attr] of this._attrMap) {\n gl.bindAttribLocation(this._glProgram, attr.location, key);\n }\n }\n\n gl.linkProgram(this._glProgram);\n\n const linkLog = gl.getProgramInfoLog(this._glProgram);\n gl.validateProgram(this._glProgram);\n\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\n if (!succeeded) {\n const validateLog = gl.getProgramInfoLog(this._glProgram);\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\n throw new Error(msg);\n }\n\n // Debug output\n const debugUniforms = false;\n if (debugUniforms) {\n const dbgLog = (x: string) => console.log(x); // eslint-disable-line no-console\n const outSrc = false; // true for source out, false for just varying info\n if (this._fragDescription) {\n let tStr = \"\";\n if (!outSrc) {\n tStr = `${this._fragDescription}`;\n }\n const numUniforms = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.ActiveUniforms);\n const tStr2 = `Active Uniforms: ${numUniforms}`;\n if (tStr2) {\n if (outSrc) {\n dbgLog(\"//===============================================================================================================\");\n dbgLog(this.vertSource);\n dbgLog(\"//========= Num Active Uniforms =========\");\n dbgLog(`${tStr2}\\n`);\n dbgLog(this.fragSource);\n } else {\n dbgLog(`\\n${tStr2} ${tStr}\\n`);\n }\n }\n }\n }\n\n return true;\n }\n\n public compile(forUse: boolean = false): CompileStatus {\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\n this.setDebugShaderUsage();\n\n switch (this._status) {\n case CompileStatus.Failure: return CompileStatus.Failure;\n case CompileStatus.Success: return CompileStatus.Success;\n default: {\n if (this.isDisposed) {\n this._status = CompileStatus.Failure;\n return CompileStatus.Failure;\n }\n break;\n }\n }\n\n this._status = CompileStatus.Failure;\n\n const vert = this.compileShader(GL.ShaderType.Vertex);\n const frag = this.compileShader(GL.ShaderType.Fragment);\n if (undefined !== vert && undefined !== frag)\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\n this._status = CompileStatus.Success;\n\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\n this.setDebugShaderUsage();\n\n if (true !== System.instance.options.preserveShaderSourceCode)\n this.vertSource = this.fragSource = \"\";\n\n return this._status;\n }\n\n public use(params: ShaderProgramParams): boolean {\n if (this.compile(true) !== CompileStatus.Success)\n return false;\n\n assert(undefined !== this._glProgram);\n if (null === this._glProgram || undefined === this._glProgram)\n return false;\n\n assert(!this._inUse);\n this._inUse = true;\n params.context.useProgram(this._glProgram);\n\n for (const uniform of this._programUniforms)\n uniform.bind(params);\n\n return true;\n }\n\n public endUse() {\n this._inUse = false;\n System.instance.context.useProgram(null);\n }\n\n public draw(params: DrawParams): void {\n assert(this._inUse);\n for (const uniform of this._graphicUniforms)\n uniform.bind(params);\n\n params.geometry.draw();\n }\n\n public addProgramUniform(name: string, binding: BindProgramUniform) {\n assert(this.isUncompiled);\n this._programUniforms.push(new ProgramUniform(name, binding));\n }\n\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\n assert(this.isUncompiled);\n this._graphicUniforms.push(new GraphicUniform(name, binding));\n }\n\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\n for (const uniform of uniforms) {\n if (!uniform.compile(this))\n return false;\n }\n\n return true;\n }\n\n private setDebugShaderUsage() {\n if (!System.instance.options.debugShaders)\n return;\n\n const shaderFiles = System.instance.debugShaderFiles;\n if (this._vertGNdx >= 0)\n shaderFiles[this._vertGNdx].isUsed = true;\n\n if (this._fragGNdx >= 0)\n shaderFiles[this._fragGNdx].isUsed = true;\n\n if (this._vertHNdx >= 0)\n shaderFiles[this._vertHNdx].isUsed = true;\n\n if (this._fragHNdx >= 0)\n shaderFiles[this._fragHNdx].isUsed = true;\n }\n\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\n if (!System.instance.options.debugShaders)\n return;\n\n const shaderFiles = System.instance.debugShaderFiles;\n let sname: string;\n if (desc) {\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\n sname = sname.split(\": \").join(\"-\");\n sname = sname.split(\"; \").join(\"-\");\n } else {\n // need to investigate shaders with no comments to derive names, for now come up with unique name\n sname = `noname-${shaderFiles.length}`;\n }\n\n sname += isVS ? \"_VS\" : \"_FS\";\n const fname = `${sname}.glsl`;\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\n if (isVS)\n this._vertGNdx = dsfNdx - 1;\n else\n this._fragGNdx = dsfNdx - 1;\n\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\n if (!ext2)\n return;\n\n const srcH = ext2.getTranslatedShaderSource(shader);\n if (!srcH)\n return;\n\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\n\n // parse and edit srcH to make it compilable\n const fnameH = `${sname}.hlsl`;\n let numTargets = 0; // for gl_Color cases\n let haveGLpos = false;\n let haveGLpntsz = false;\n let haveGLDepth = false;\n let haveGLFrontFacing = false;\n let haveGLPointCoord = false;\n let haveGLFragCoord = false;\n let haveGLFragColorOnly = false; // for only 1 output\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\n const attrs: string[] = new Array<string>();\n const varyings: string[] = new Array<string>();\n const lines = srcH.split(\"\\n\");\n let toss = true;\n for (let ndx = 0; ndx < lines.length;) {\n let line = lines[ndx];\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\n toss = true;\n\n if (toss)\n lines.splice(ndx, 1);\n\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\n toss = false;\n } else if (!toss) { // look for lines that need editing\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\n ++ndx;\n line = lines[ndx].substring(6).trimStart();\n varyings.push(line.substring(0, line.indexOf(\"=\")));\n }\n }\n\n if (isVS) {\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\n ++ndx;\n line = lines[ndx].substring(6).trimStart();\n attrs.push(line.substring(0, line.indexOf(\"=\")));\n }\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\n haveGLpos = true;\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\n haveGLpntsz = true;\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\n let aNdx = 0;\n for (const tstr of attrs) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\n ++aNdx;\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\n for (const tstr of attrs) {\n let t = tstr.indexOf(\"_a\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\n }\n\n ++ndx;\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\n if (haveGLpos) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\n }\n\n if (haveGLpntsz) {\n ++ndx;\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\n }\n\n let vNdx = 0;\n for (const tstr of varyings) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\n ++vNdx;\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\n if (haveGLpos) {\n ++ndx;\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\n }\n\n if (haveGLpntsz) {\n ++ndx;\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\n }\n\n for (const tstr of varyings) {\n let t = tstr.indexOf(\"_v\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" return output;\\n}\");\n }\n } else { // fragment shader\n let tNdx = 0;\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\n //\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\n if (numTargets < 1)\n numTargets = 1;\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\n if (numTargets < 2)\n numTargets = 2;\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\n if (numTargets < 3)\n numTargets = 3;\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\n numTargets = 4;\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\n haveGLDepth = true;\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\n haveGLFrontFacing = true;\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\n haveGLPointCoord = true;\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\n haveGLFragCoord = true;\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\n const c = line.substring(tNdx + 13, tNdx + 13 + 1);\n if (c === \" \" || c === \"=\")\n haveGLFragColorOnly = true;\n else {\n tNdx = +c;\n haveGLFragColor[tNdx] = true;\n }\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\n if (haveGLFragCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\n }\n\n let vNdx = 0;\n for (const tstr of varyings) {\n ++ndx;\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\n ++vNdx;\n }\n\n if (haveGLFrontFacing) {\n ++ndx;\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\n }\n\n if (haveGLPointCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\n if (haveGLFragCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\n }\n\n for (const tstr of varyings) {\n let t = tstr.indexOf(\"_v\");\n let vName = tstr.substring(t);\n t = vName.indexOf(\" \");\n vName = vName.substring(0, t);\n ++ndx;\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\n }\n\n if (haveGLFrontFacing) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\n }\n\n if (haveGLPointCoord) {\n ++ndx;\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\n let cNdx = 0;\n while (cNdx < numTargets) {\n ++ndx;\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\n ++cNdx;\n }\n\n if (haveGLFragColorOnly) {\n ++ndx;\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\n } else {\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\n if (haveGLFragColor[cNdx]) {\n ++ndx;\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\n }\n }\n }\n\n if (haveGLDepth) {\n ++ndx;\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\n cNdx = 0;\n while (cNdx < numTargets) {\n ++ndx;\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\n ++cNdx;\n }\n\n if (haveGLFragColorOnly) {\n ++ndx;\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\n } else {\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\n if (haveGLFragColor[cNdx]) {\n ++ndx;\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\n }\n }\n }\n\n if (haveGLDepth) {\n ++ndx;\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\n }\n\n ++ndx;\n lines.splice(ndx, 0, \" return output;\\n}\");\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\n }\n }\n\n ++ndx;\n }\n }\n\n const srcH2 = lines.join(\"\\n\");\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\n if (isVS)\n this._vertHNdx = dsfNdx - 1;\n else\n this._fragHNdx = dsfNdx - 1;\n }\n}\n\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\n * Instances of this class must *only* be declared with the `using` keyword!\n * @internal\n */\nexport class ShaderProgramExecutor {\n private _program?: ShaderProgram;\n private static _params?: ShaderProgramParams;\n\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\n this.params.init(target, pass);\n this.changeProgram(program);\n }\n\n public static freeParams(): void {\n this._params = undefined;\n }\n\n private _isDisposed = false;\n public get isDisposed(): boolean { return this._isDisposed; }\n\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\n public [Symbol.dispose]() {\n this.changeProgram(undefined);\n ShaderProgramExecutor.freeParams();\n this._isDisposed = true;\n }\n\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\n public dispose() {\n this[Symbol.dispose]();\n }\n\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\n public get isValid() { return undefined !== this._program; }\n public get target() { return this.params.target; }\n public get renderPass() { return this.params.renderPass; }\n public get params() {\n if (undefined === ShaderProgramExecutor._params)\n ShaderProgramExecutor._params = new ShaderProgramParams();\n\n return ShaderProgramExecutor._params;\n }\n\n public draw(params: DrawParams) {\n assert(this.isValid);\n if (undefined !== this._program) {\n this._program.draw(params);\n }\n }\n public drawInterrupt(params: DrawParams) {\n assert(params.target === this.params.target);\n\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\n const program = tech.getShader(TechniqueFlags.defaults);\n if (this.setProgram(program)) {\n this.draw(params);\n }\n }\n\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\n public popBranch(): void { this.target.popBranch(); }\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\n public popBatch(): void { this.target.popBatch(); }\n\n private changeProgram(program?: ShaderProgram): boolean {\n if (this._program === program) {\n return true;\n } else if (undefined !== this._program) {\n this._program.endUse();\n }\n\n this._program = program;\n if (undefined !== program && !program.use(this.params)) {\n this._program = undefined;\n return false;\n }\n\n return true;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShadowUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"ShadowUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShadowUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAgB,SAAS,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,qBAAa,cAAc;IAElB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,SAAK;IAGnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;IAC/D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAAK;IAGlB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IAGjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA6B;gBAElD,MAAM,EAAE,MAAM;IAI1B,MAAM,IAAI,IAAI;IAgCrB,OAAO,CAAC,iBAAiB;IAclB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAK1D"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module WebGL
|
|
7
7
|
*/
|
|
8
|
+
import { expectDefined } from "@itwin/core-bentley";
|
|
8
9
|
import { Matrix4d } from "@itwin/core-geometry";
|
|
9
10
|
import { ColorDef, RgbColor } from "@itwin/core-common";
|
|
10
11
|
import { FloatRgba } from "./FloatRGBA";
|
|
@@ -40,7 +41,7 @@ export class ShadowUniforms {
|
|
|
40
41
|
}
|
|
41
42
|
if (!map.isEnabled)
|
|
42
43
|
return;
|
|
43
|
-
const settings = map.settings;
|
|
44
|
+
const settings = expectDefined(map.settings);
|
|
44
45
|
if (this._bias !== settings.bias) {
|
|
45
46
|
desync(this);
|
|
46
47
|
this._bias = this._colorAndBias.alpha = settings.bias;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShadowUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AAGjD;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,qDAAqD;IAC9C,SAAS,CAAa;IACtB,OAAO,GAAG,CAAC,CAAC;IAEnB,YAAY;IACK,OAAO,CAAS;IACzB,QAAQ,GAAG,KAAK,CAAC;IACR,iBAAiB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IACvD,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtC,KAAK,GAAG,CAAC,CAAC;IAElB,YAAY;IACK,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;IAEjD,oBAAoB;IACH,aAAa,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC1C,uBAAuB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAErE,YAAmB,MAAc;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,MAAM;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS;YAChB,OAAO;QAET,MAAM,QAAQ,GAAG,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"ShadowUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ShadowUniforms.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 { expectDefined } from \"@itwin/core-bentley\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { ColorDef, RgbColor } from \"@itwin/core-common\";\nimport { FloatRgba } from \"./FloatRGBA\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Matrix4 } from \"./Matrix\";\nimport { desync, sync, SyncToken } from \"./Sync\";\nimport { Target } from \"./Target\";\n\n/** Maintains state of uniforms used for applying shadows.\n * @internal\n */\nexport class ShadowUniforms {\n // The projection matrix depends on the model matrix.\n public syncToken?: SyncToken;\n public syncKey = 0;\n\n // CPU state\n private readonly _target: Target;\n private _enabled = false;\n private readonly _projectionMatrix = Matrix4d.createIdentity();\n private _color = RgbColor.fromJSON(undefined);\n private _bias = 0;\n\n // GPU state\n private readonly _projection32 = new Matrix4();\n private readonly _colorAndBias = new FloatRgba();\n\n // Working variables\n private readonly _scratchModel = Matrix4d.createIdentity();\n private readonly _scratchModelProjection = Matrix4d.createIdentity();\n\n public constructor(target: Target) {\n this._target = target;\n }\n\n public update(): void {\n const map = this._target.solarShadowMap;\n if (this._enabled !== map.isEnabled) {\n desync(this);\n this._enabled = map.isEnabled;\n }\n\n if (!map.isEnabled)\n return;\n\n const settings = expectDefined(map.settings);\n\n if (this._bias !== settings.bias) {\n desync(this);\n this._bias = this._colorAndBias.alpha = settings.bias;\n }\n\n if (!this._color.equals(settings.color)) {\n desync(this);\n this._color = settings.color;\n this._colorAndBias.setTbgr(ColorDef.computeTbgrFromComponents(settings.color.r, settings.color.g, settings.color.b));\n this._colorAndBias.alpha = this._bias;\n }\n\n // NB: The projection matrix must be computed later when it is bound because it uses the model matrix.\n const proj = map.projectionMatrix;\n if (!proj.isExactEqual(this._projectionMatrix)) {\n desync(this);\n proj.clone(this._projectionMatrix);\n }\n }\n\n private computeProjection(): void {\n const branch = this._target.uniforms.branch;\n if (sync(branch, this))\n return;\n\n // NB: We could decouple from the other uniforms so they don't get invalidated when frustum changes but meh.\n desync(this);\n\n const proj = this._target.solarShadowMap.projectionMatrix;\n const model = Matrix4d.createTransform(this._target.currentTransform, this._scratchModel);\n const modelProj = proj.multiplyMatrixMatrix(model, this._scratchModelProjection);\n this._projection32.initFromMatrix4d(modelProj);\n }\n\n public bindColorAndBias(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n this._colorAndBias.bind(uniform);\n }\n\n public bindProjectionMatrix(uniform: UniformHandle): void {\n this.computeProjection();\n if (!sync(this, uniform))\n uniform.setMatrix4(this._projection32);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolarShadowMap.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SolarShadowMap.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiE,KAAK,EAAY,QAAQ,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACvK,OAAO,EACL,OAAO,EAA4C,mBAAmB,EACvE,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQ/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAiB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"SolarShadowMap.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/SolarShadowMap.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiE,KAAK,EAAY,QAAQ,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACvK,OAAO,EACL,OAAO,EAA4C,mBAAmB,EACvE,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQ/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAiB,MAAM,WAAW,CAAC;AAwKnD,qBAAa,cAAe,YAAW,YAAY,CAAC,QAAQ,EAAE,eAAe;IAC3E,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8B;IAEhE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAG1B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAE/D,OAAO,CAAC,SAAS;IASjB,IAAW,OAAO,YAA4B;IAC9C,IAAW,SAAS,YAA8B;IAClD,IAAW,SAAS,YAA4B;IAChD,IAAW,gBAAgB,IAAI,QAAQ,CAAmC;IAC1E,IAAW,YAAY,IAAI,OAAO,GAAG,SAAS,CAA+E;IAC7H,IAAW,gBAAgB,IAAI,OAAO,GAAG,SAAS,CAAmF;IACrI,IAAW,QAAQ,IAAI,mBAAmB,GAAG,SAAS,CAA2E;IACjI,IAAW,SAAS,IAAI,QAAQ,GAAG,SAAS,CAA4E;IACxH,IAAW,OAAO,IAAI,OAAO,CAAgC;IAC7D,IAAW,cAAc,IAAI,KAAK,CAAiC;IAC5D,UAAU,CAAC,OAAO,EAAE,aAAa;gBAErB,MAAM,EAAE,MAAM;IAa1B,OAAO;IAOP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAM9D,IAAW,UAAU,IAAI,OAAO,CAAsE;IAE/F,CAAC,MAAM,CAAC,OAAO,CAAC;IAKvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IAKtB,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS;IA6IxC,IAAI,CAAC,MAAM,EAAE,MAAM;CAwE3B"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module WebGL
|
|
7
7
|
*/
|
|
8
|
-
import { assert, dispose } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, dispose, expectDefined } from "@itwin/core-bentley";
|
|
9
9
|
import { ClipUtilities, ConvexClipPlaneSet, Geometry, Map4d, Matrix3d, Matrix4d, Point3d, Range3d, Transform, Vector3d } from "@itwin/core-geometry";
|
|
10
10
|
import { Frustum, FrustumPlanes, RenderMode, RenderTexture, TextureTransparency, ViewFlags, } from "@itwin/core-common";
|
|
11
11
|
import { RenderType } from "@itwin/webgl-compatibility";
|
|
@@ -124,7 +124,7 @@ class Bundle {
|
|
|
124
124
|
if (undefined === fboSM)
|
|
125
125
|
return undefined;
|
|
126
126
|
const depthTexture = new Texture({ ownership: "external", type: RenderTexture.Type.TileSection, handle: depthTextureHandle, transparency: TextureTransparency.Opaque });
|
|
127
|
-
const evsmGeom = EVSMGeometry.createGeometry(depthTexture.texture.getHandle(), shadowMapWidth, shadowMapHeight);
|
|
127
|
+
const evsmGeom = EVSMGeometry.createGeometry(expectDefined(depthTexture.texture.getHandle()), shadowMapWidth, shadowMapHeight);
|
|
128
128
|
if (undefined === evsmGeom)
|
|
129
129
|
return undefined;
|
|
130
130
|
const shadowMapTexture = new Texture({ type: RenderTexture.Type.Normal, ownership: "external", handle: shadowMapTextureHandle, transparency: TextureTransparency.Opaque });
|
|
@@ -162,6 +162,8 @@ class ShadowMapParams {
|
|
|
162
162
|
direction.clone(this.direction);
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
+
// We know that normalize won't fail on this hard-coded vector.
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
165
167
|
const defaultSunDirection = Vector3d.create(-1, -1, -1).normalize();
|
|
166
168
|
const scratchFrustum = new Frustum();
|
|
167
169
|
const scratchFrustumPlanes = FrustumPlanes.createEmpty();
|
|
@@ -263,9 +265,9 @@ export class SolarShadowMap {
|
|
|
263
265
|
else
|
|
264
266
|
this._params.update(viewFrustum, sunDirection, settings);
|
|
265
267
|
const iModel = view.iModel;
|
|
266
|
-
const worldToMapTransform = Transform.createRefs(Point3d.createZero(), Matrix3d.createRigidHeadsUp(this._params.direction.negate()).inverse());
|
|
268
|
+
const worldToMapTransform = Transform.createRefs(Point3d.createZero(), expectDefined(Matrix3d.createRigidHeadsUp(this._params.direction.negate()).inverse()));
|
|
267
269
|
const worldToMap = Matrix4d.createTransform(worldToMapTransform);
|
|
268
|
-
const mapToWorld = worldToMap.createInverse();
|
|
270
|
+
const mapToWorld = expectDefined(worldToMap.createInverse());
|
|
269
271
|
// Start with entire project.
|
|
270
272
|
const shadowRange = worldToMapTransform.multiplyRange(iModel.projectExtents);
|
|
271
273
|
// Limit the map to only displayed models.
|
|
@@ -346,7 +348,7 @@ export class SolarShadowMap {
|
|
|
346
348
|
}
|
|
347
349
|
this._projectionMatrix = frustumMap.transform0.clone();
|
|
348
350
|
const worldToNpc = postProjectionMatrixNpc.multiplyMatrixMatrix(this._projectionMatrix);
|
|
349
|
-
const npcToView = Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(shadowMapWidth, shadowMapHeight, 1));
|
|
351
|
+
const npcToView = expectDefined(Map4d.createBoxMap(Point3d.create(0, 0, 0), Point3d.create(1, 1, 1), Point3d.create(0, 0, 0), Point3d.create(shadowMapWidth, shadowMapHeight, 1)));
|
|
350
352
|
const npcToWorld = worldToNpc.createInverse();
|
|
351
353
|
if (undefined === npcToWorld) {
|
|
352
354
|
this.clearGraphics(true);
|