@arcgis/core 4.22.0-next.20211021 → 4.22.0-next.20211025
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/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/00ac1ce56f9885a8be83.js +1 -0
- package/assets/esri/core/workers/chunks/01c9afe41ab4ccc597c9.js +1 -0
- package/assets/esri/core/workers/chunks/02a3d14adc504a51fa24.js +1 -0
- package/assets/esri/core/workers/chunks/035a9ab0202d5386b782.js +1 -0
- package/assets/esri/core/workers/chunks/062bace5505f13689c7d.js +1 -0
- package/assets/esri/core/workers/chunks/06c7745d813bcb540ce8.js +1 -0
- package/assets/esri/core/workers/chunks/0950b488a60b2abc21fc.js +1 -0
- package/assets/esri/core/workers/chunks/0af396f2e0de681113ef.js +1 -0
- package/assets/esri/core/workers/chunks/131838059f0f81d8eaee.js +1 -0
- package/assets/esri/core/workers/chunks/146cba0d172ec2f4eba2.js +1 -0
- package/assets/esri/core/workers/chunks/17e49c0dfa5a5a6213e2.js +1 -0
- package/assets/esri/core/workers/chunks/1a0b08190274725dc956.js +1 -0
- package/assets/esri/core/workers/chunks/1add7f0779accdf8d204.js +1 -0
- package/assets/esri/core/workers/chunks/20b81d11e6286d347bfc.js +1 -0
- package/assets/esri/core/workers/chunks/{e596bd3de960d1dc1c57.js → 2207580a78ee292ed9b8.js} +1 -1
- package/assets/esri/core/workers/chunks/2d3646a83465c75986f9.js +1 -0
- package/assets/esri/core/workers/chunks/2d38ee3ef3ebe32a1194.js +1 -0
- package/assets/esri/core/workers/chunks/3737dcc3c0dea3ca05d5.js +1 -0
- package/assets/esri/core/workers/chunks/3e2042e70647c1afa6aa.js +1 -0
- package/assets/esri/core/workers/chunks/3ebfaab2855a2236a95d.js +1 -0
- package/assets/esri/core/workers/chunks/{d6fe616192a8efbfbc3e.js → 440f8101402a4c0d7019.js} +1 -1
- package/assets/esri/core/workers/chunks/4587d770767966985e22.js +1 -0
- package/assets/esri/core/workers/chunks/487b8892fae85810a8c0.js +1 -0
- package/assets/esri/core/workers/chunks/4901a78f32c3ea6b823b.js +1 -0
- package/assets/esri/core/workers/chunks/496fe47fc4d28e1a716d.js +1 -0
- package/assets/esri/core/workers/chunks/{9f22f47d4b2e72d7bdcf.js → 4c010119c24510ea31bb.js} +2 -2
- package/assets/esri/core/workers/chunks/{9f22f47d4b2e72d7bdcf.js.LICENSE.txt → 4c010119c24510ea31bb.js.LICENSE.txt} +0 -0
- package/assets/esri/core/workers/chunks/4f5076e1f2b18ce8156d.js +1 -0
- package/assets/esri/core/workers/chunks/{f291ebc4b089bd1f0a3f.js → 50e86a6bb13042b1dbac.js} +1 -1
- package/assets/esri/core/workers/chunks/{64d9a062c1f1ac08a3ac.js → 565020b1c02a8cb33c2b.js} +1 -1
- package/assets/esri/core/workers/chunks/{d78c60a22f76df7c48c7.js → 59640d78295e2e363f18.js} +1 -1
- package/assets/esri/core/workers/chunks/{a0356f320a1b2fbd03f0.js → 5ac2b2598245aa17cdbd.js} +1 -1
- package/assets/esri/core/workers/chunks/5b4a8cce5601cc92c8a3.js +1 -0
- package/assets/esri/core/workers/chunks/5b92d5d4049622531109.js +1 -0
- package/assets/esri/core/workers/chunks/{751c1a2838b54a74a9a6.js → 5f3caa0ddb215342c728.js} +2 -2
- package/assets/esri/core/workers/chunks/615e995d5ce8fa044b09.js +1 -0
- package/assets/esri/core/workers/chunks/62a2453699e0dd2393b9.js +1 -0
- package/assets/esri/core/workers/chunks/67013547be1a7ae1670a.js +1 -0
- package/assets/esri/core/workers/chunks/67eddf4808f8888faeb4.js +1 -0
- package/assets/esri/core/workers/chunks/695dbedff2340aa019ba.js +1 -0
- package/assets/esri/core/workers/chunks/6a7e388c94206d2f61ff.js +1 -0
- package/assets/esri/core/workers/chunks/6e22b69d55e791ab3d9a.js +1 -0
- package/assets/esri/core/workers/chunks/71e6c0c5ef0aa7eb1703.js +1 -0
- package/assets/esri/core/workers/chunks/7a74e230439c5111f852.js +1 -0
- package/assets/esri/core/workers/chunks/7e76a8e6fa67e607d09e.js +1 -0
- package/assets/esri/core/workers/chunks/7fe4985ca0cb3e6d35c6.js +1 -0
- package/assets/esri/core/workers/chunks/8027330714ff5ffb020e.js +1 -0
- package/assets/esri/core/workers/chunks/844b564d1a422a17f6ac.js +1 -0
- package/assets/esri/core/workers/chunks/856f9281a08cb032238e.js +1 -0
- package/assets/esri/core/workers/chunks/89b4983de872780e9aa1.js +1 -0
- package/assets/esri/core/workers/chunks/8f3bc0cd2c2b01ab80cd.js +1 -0
- package/assets/esri/core/workers/chunks/8fd912e325ccd48b98a9.js +1 -0
- package/assets/esri/core/workers/chunks/901907a5c01f0fd1478f.js +1 -0
- package/assets/esri/core/workers/chunks/92a0b88a14c92239df8a.js +1 -0
- package/assets/esri/core/workers/chunks/972e9aeb3c29c9bf441a.js +1 -0
- package/assets/esri/core/workers/chunks/9758c34ce61c3714515a.js +1 -0
- package/assets/esri/core/workers/chunks/{457ea4feaa006d60c6b1.js → 9a04d087a29f0f3937a3.js} +1 -1
- package/assets/esri/core/workers/chunks/9b0bb171224b35ce2031.js +1 -0
- package/assets/esri/core/workers/chunks/9cbe7afdaef8720dfc8d.js +1 -0
- package/assets/esri/core/workers/chunks/9ccde5b6562f0007fe45.js +1 -0
- package/assets/esri/core/workers/chunks/9d320bbeedeea15522ab.js +1 -0
- package/assets/esri/core/workers/chunks/a001b3b4527817548094.js +1 -0
- package/assets/esri/core/workers/chunks/{197b72bca45065e0eb4a.js → a0c580d4a1915ddd3fe4.js} +1 -1
- package/assets/esri/core/workers/chunks/a4a9c15929b43d83701f.js +1 -0
- package/assets/esri/core/workers/chunks/a54d11f44721f808b82f.js +1 -0
- package/assets/esri/core/workers/chunks/a646a11673d513c00e7a.js +1 -0
- package/assets/esri/core/workers/chunks/a792e2bc7cafdc29f05e.js +1 -0
- package/assets/esri/core/workers/chunks/acae1771697034f265b1.js +1 -0
- package/assets/esri/core/workers/chunks/af2ee804a9c63eea610c.js +1 -0
- package/assets/esri/core/workers/chunks/b28b487047da3aeef3fd.js +1 -0
- package/assets/esri/core/workers/chunks/b3e57824a5855cb37a96.js +1 -0
- package/assets/esri/core/workers/chunks/b89449ead32e4cd21edd.js +1 -0
- package/assets/esri/core/workers/chunks/b99891ed5a02cab02173.js +1 -0
- package/assets/esri/core/workers/chunks/bac84bc621be73a7a4bc.js +1 -0
- package/assets/esri/core/workers/chunks/{25037dcf8a0c72b7b647.js → bbe068388167e9dd0c11.js} +1 -1
- package/assets/esri/core/workers/chunks/c271a1857bcc4e9a36dd.js +1 -0
- package/assets/esri/core/workers/chunks/{eb3035e49a45ecc82575.js → c5030664720fcdc6d85e.js} +1 -1
- package/assets/esri/core/workers/chunks/c534ed122f8a1202d3a3.js +1 -0
- package/assets/esri/core/workers/chunks/c5ef2e28b0c539ddb6a7.js +1 -0
- package/assets/esri/core/workers/chunks/c65e5ccfae03d148d82b.js +1 -0
- package/assets/esri/core/workers/chunks/c91660f3982be4e03705.js +1 -0
- package/assets/esri/core/workers/chunks/ce93113b99bdbeddd07b.js +1 -0
- package/assets/esri/core/workers/chunks/cf2d408e669cfa2c65be.js +1 -0
- package/assets/esri/core/workers/chunks/d08f63ffeecefa02ad91.js +1 -0
- package/assets/esri/core/workers/chunks/{8d33644192c01e5416b4.js → d1a71b58ef62e71979c5.js} +1 -1
- package/assets/esri/core/workers/chunks/d30eade5afecd334f6cb.js +1 -0
- package/assets/esri/core/workers/chunks/d8782d0856b9d815cb6c.js +1 -0
- package/assets/esri/core/workers/chunks/db16c21b650001502e6c.js +1 -0
- package/assets/esri/core/workers/chunks/db18110c57253a31ac96.js +1 -0
- package/assets/esri/core/workers/chunks/dbaa5fb466d6c0214f24.js +1 -0
- package/assets/esri/core/workers/chunks/deae370788a7aacf4dd5.js +1 -0
- package/assets/esri/core/workers/chunks/e6ca132e1eeea3aa174e.js +1 -0
- package/assets/esri/core/workers/chunks/e878ccc431729ef3360f.js +1 -0
- package/assets/esri/core/workers/chunks/eb124f15ad4b9193f00a.js +1 -0
- package/assets/esri/core/workers/chunks/ebc71c06c1c22aaef54e.js +1 -0
- package/assets/esri/core/workers/chunks/f183da283af0836421ab.js +1 -0
- package/assets/esri/core/workers/chunks/f42bdc2a134833d33b4e.js +1 -0
- package/assets/esri/core/workers/chunks/{736d628cda4e02d40337.js → f8612c2fc5739e98be58.js} +1 -1
- package/assets/esri/core/workers/chunks/f965e3e5f6f4f9ba54ac.js +1 -0
- package/assets/esri/core/workers/chunks/fa4089640f480b69962e.js +1 -0
- package/assets/esri/core/workers/chunks/fb219563e5169ea67d68.js +1 -0
- package/assets/esri/libs/i3s/i3s.wasm +0 -0
- package/chunks/ChapmanAtmosphere.glsl.js +56 -77
- package/chunks/Clouds.glsl.js +1 -1
- package/chunks/Pattern.glsl.js +9 -11
- package/chunks/RibbonLine.glsl.js +60 -68
- package/chunks/i3s.js +1 -1
- package/chunks/mat4.js +1 -1
- package/chunks/vec3.js +1 -1
- package/core/Collection.js +1 -1
- package/core/Loadable.js +1 -1
- package/core/accessorSupport/ensureType.js +1 -1
- package/core/promiseUtils.js +1 -1
- package/core/support/OwningCollection.js +1 -1
- package/core/workers/RemoteClient.js +1 -1
- package/core/workers/WorkerOwner.js +1 -1
- package/core/workers/workers.js +2 -2
- package/geometry/projection.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/interfaces.d.ts +205 -497
- package/layers/ElevationLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/VoxelWasmPerScene.js +1 -1
- package/layers/WCSLayer.js +1 -1
- package/layers/analyses/AreaMeasurement3D.js +1 -1
- package/layers/analyses/DirectLineMeasurement3D.js +1 -1
- package/layers/analyses/Slice.js +1 -1
- package/layers/effects/EffectList.js +1 -1
- package/layers/effects/effects.js +1 -1
- package/layers/effects/jsonUtils.js +1 -1
- package/layers/effects/parser.js +1 -1
- package/layers/effects/utils.js +5 -0
- package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/data/QueryEngine.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/TilemapCache.js +1 -1
- package/layers/support/rasterDatasets/BaseRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
- package/layers/support/rasterDatasets/WCSRaster.js +1 -1
- package/layers/support/rasterFunctions/pixelUtils.js +1 -1
- package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
- package/package.json +2 -2
- package/portal/support/portalLayers.js +1 -1
- package/request.js +1 -1
- package/smartMapping/renderers/support/utils.js +1 -1
- package/smartMapping/statistics/support/WorkerClient.js +1 -1
- package/smartMapping/statistics/support/statsWorker.js +1 -1
- package/smartMapping/statistics/support/utils.js +1 -1
- package/smartMapping/support/adapters/CSVLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/SceneLayerAdapter.js +1 -1
- package/smartMapping/support/adapters/support/utils.js +1 -1
- package/statistics/utils.js +1 -1
- package/support/GraphicsCollection.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/FillSymbol3DLayer.js +1 -1
- package/symbols/IconSymbol3DLayer.js +1 -1
- package/symbols/LineSymbol3DLayer.js +1 -1
- package/symbols/patterns/LinePattern3D.js +5 -0
- package/symbols/patterns/LineStylePattern3D.d.ts +4 -0
- package/symbols/patterns/LineStylePattern3D.js +5 -0
- package/symbols/patterns/StylePattern3D.js +1 -1
- package/symbols/patterns/lineStyles.js +5 -0
- package/symbols/patterns/utils.js +1 -1
- package/symbols/support/Symbol3DFillMaterial.js +1 -1
- package/symbols/support/Symbol3DIconOutline.js +5 -0
- package/symbols/support/Symbol3DMaterial.js +1 -1
- package/symbols/support/Symbol3DOutline.js +1 -1
- package/symbols/support/defaults3D.js +1 -1
- package/symbols/support/previewSymbol3D.js +1 -1
- package/symbols/support/symbolLayerUtils3D.js +1 -1
- package/views/2d/engine/vectorTiles/TileParser.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
- package/views/2d/engine/vectorTiles/style/StyleRepository.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
- package/views/2d/layers/VectorTileLayerView2D.js +1 -1
- package/views/2d/layers/features/controllers/EditsQueue.js +1 -1
- package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/support/FeatureLayerProxy.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/environment/ChapmanAtmosphereTechnique.js +1 -1
- package/views/3d/environment/CloudsGenerator.js +1 -1
- package/views/3d/environment/EnvironmentRenderer.js +1 -1
- package/views/3d/environment/PanoramicAtmosphere.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.js +1 -1
- package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
- package/views/3d/externalRenderers.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/analysisTools/slice/SliceTool.js +1 -1
- package/views/3d/interactive/analysisTools/slice/images/Factory.js +5 -0
- package/views/3d/interactive/analysisTools/slice/sliceToolConfig.js +1 -1
- package/views/3d/interactive/analysisTools/slice/sliceToolUtils.js +1 -1
- package/views/3d/interactive/editingTools/settings.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/graphics/Slice/SliceController.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/SlicePlaneVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/VerticesVisualElement.js +1 -1
- package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
- package/views/3d/layers/DynamicLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/VectorTileLayerView3D.js +1 -1
- package/views/3d/layers/analyses/AreaMeasurement3D/AreaMeasurementView3D.js +1 -1
- package/views/3d/layers/analyses/AreaMeasurement3D/support/AreaMeasurementPathHelper.js +1 -1
- package/views/3d/layers/analyses/AreaMeasurement3D/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/layers/analyses/DirectLineMeasurement3D/DirectLineMeasurementView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/ElevationQuery.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/Loadable.js +1 -1
- package/views/3d/layers/graphics/ObjectResourceCache.js +1 -1
- package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
- package/views/3d/layers/graphics/graphicUtils.js +1 -1
- package/views/3d/layers/graphics/labelPlacement.js +1 -1
- package/views/3d/layers/graphics/pointUtils.js +1 -1
- package/views/3d/layers/i3s/I3SAttributeOverrides.js +1 -1
- package/views/3d/layers/i3s/I3SMaterialUtil.js +1 -1
- package/views/3d/layers/i3s/I3SStreamDataController.js +1 -1
- package/views/3d/layers/i3s/PointRenderer.js +1 -1
- package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/patternUtils.js +1 -1
- package/views/3d/state/GoToOperation.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/support/LaserLineRenderer.js +1 -1
- package/views/3d/support/SharedSymbolResources.js +1 -1
- package/views/3d/support/StreamDataLoader.js +1 -1
- package/views/3d/support/StreamTextureCollection.js +5 -0
- package/views/3d/support/TextureCollection.js +1 -1
- package/views/3d/support/debugFlags.js +1 -1
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/StableSurfaceCenter.js +1 -1
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderTarget.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/core/material/RenderTexture.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +13 -12
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Reprojection.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +10 -3
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterialRepository.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterialTexture.js +1 -1
- package/views/3d/webgl-engine/lib/GLMaterials.js +1 -1
- package/views/3d/webgl-engine/lib/Material.js +1 -1
- package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/SmaaRenderPass.js +1 -1
- package/views/3d/webgl-engine/lib/TextTexture.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/Texture.js +1 -1
- package/views/3d/webgl-engine/lib/TextureRepository.js +1 -1
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodComponentData.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodLevel.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodResources.js +1 -1
- package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/SlicePlaneMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterGLMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/lineStippleUtils.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/parts/Model.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
- package/views/LayerViewManager.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/ToolViewManager.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
- package/views/support/AllocationTracer.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/views/support/QueueProcessor.js +1 -1
- package/views/webgl/capabilities/load.js +1 -1
- package/webscene/Slide.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.js +1 -1
- package/widgets/BuildingExplorer/support/layerUtils.js +1 -1
- package/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Feature/FeatureViewModel.js +1 -1
- package/widgets/Home/HomeViewModel.js +1 -1
- package/widgets/Locate/LocateViewModel.js +1 -1
- package/widgets/Popup/PopupViewModel.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Search.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Slice/SliceViewModel.js +1 -1
- package/widgets/TimeSlider/TimeSliderViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/0283801d442984997abe.js +0 -1
- package/assets/esri/core/workers/chunks/0419e14a520b8fcf3e7a.js +0 -1
- package/assets/esri/core/workers/chunks/05318446b6a40caea361.js +0 -1
- package/assets/esri/core/workers/chunks/09e714d4381649348ac9.js +0 -1
- package/assets/esri/core/workers/chunks/0cecd668b9d5d3f83293.js +0 -1
- package/assets/esri/core/workers/chunks/13a73a88efd4f464173e.js +0 -1
- package/assets/esri/core/workers/chunks/1576727e8174d672555b.js +0 -1
- package/assets/esri/core/workers/chunks/1a3cbeb0a53d03a51dad.js +0 -1
- package/assets/esri/core/workers/chunks/1b8524b617bfc6fe422c.js +0 -1
- package/assets/esri/core/workers/chunks/1dc1d750046912ff6cef.js +0 -1
- package/assets/esri/core/workers/chunks/21fa174c114640be5e40.js +0 -1
- package/assets/esri/core/workers/chunks/2a3f6e56079620421a02.js +0 -1
- package/assets/esri/core/workers/chunks/2a5bcc73e55986ad93fe.js +0 -1
- package/assets/esri/core/workers/chunks/2a6f2e3d639aae491171.js +0 -1
- package/assets/esri/core/workers/chunks/2c17d1bad17bcee53f7d.js +0 -1
- package/assets/esri/core/workers/chunks/2cea27a0d07aa9a88ad4.js +0 -1
- package/assets/esri/core/workers/chunks/2e193d97d199b29b00c2.js +0 -1
- package/assets/esri/core/workers/chunks/2eb41fdf0d0a3b0c3232.js +0 -1
- package/assets/esri/core/workers/chunks/2f09ea639ca5d1d6ca7e.js +0 -1
- package/assets/esri/core/workers/chunks/2fb847ab1440bd1bdf15.js +0 -1
- package/assets/esri/core/workers/chunks/402d22ebbae608760b4f.js +0 -1
- package/assets/esri/core/workers/chunks/44daef7f0cbc6f6af09f.js +0 -1
- package/assets/esri/core/workers/chunks/46899156159e398c693f.js +0 -1
- package/assets/esri/core/workers/chunks/46bf8921db25845c63c0.js +0 -1
- package/assets/esri/core/workers/chunks/4eb23554e375350f73b5.js +0 -1
- package/assets/esri/core/workers/chunks/551917be63a513dfa4de.js +0 -1
- package/assets/esri/core/workers/chunks/564f6f5484bcb13ebb2b.js +0 -1
- package/assets/esri/core/workers/chunks/61df67ae47b7fb5875d9.js +0 -1
- package/assets/esri/core/workers/chunks/62642a8fc7bafe339984.js +0 -1
- package/assets/esri/core/workers/chunks/6304f4e53027df04eb8f.js +0 -1
- package/assets/esri/core/workers/chunks/6331987617ad166ea098.js +0 -1
- package/assets/esri/core/workers/chunks/6b13fcbc71c0088d317e.js +0 -1
- package/assets/esri/core/workers/chunks/6f7a6841e7269d2764ad.js +0 -1
- package/assets/esri/core/workers/chunks/70110efd2de23d9a5263.js +0 -1
- package/assets/esri/core/workers/chunks/7eae3f0588cde44fce39.js +0 -1
- package/assets/esri/core/workers/chunks/80d3c7a429c6412f1a8d.js +0 -1
- package/assets/esri/core/workers/chunks/80deebdf54bea04a0889.js +0 -1
- package/assets/esri/core/workers/chunks/81aa5fe7dcb4fdeb0974.js +0 -1
- package/assets/esri/core/workers/chunks/840d08b41913cad4df89.js +0 -1
- package/assets/esri/core/workers/chunks/85d154aeb511c5d70bb1.js +0 -1
- package/assets/esri/core/workers/chunks/8681e99e2bc9ece61c43.js +0 -1
- package/assets/esri/core/workers/chunks/8e5ef967f6518f4c93b1.js +0 -1
- package/assets/esri/core/workers/chunks/8edd7f70c8b95c34125c.js +0 -1
- package/assets/esri/core/workers/chunks/9044a7b90a53312b6392.js +0 -1
- package/assets/esri/core/workers/chunks/905b4dfc1ce57a225fa4.js +0 -1
- package/assets/esri/core/workers/chunks/945f90b31ebfae623ea0.js +0 -1
- package/assets/esri/core/workers/chunks/9943fd69b67cd1871d68.js +0 -1
- package/assets/esri/core/workers/chunks/9ad91c23480ffb656030.js +0 -1
- package/assets/esri/core/workers/chunks/9d103681372ab01a4147.js +0 -1
- package/assets/esri/core/workers/chunks/9d3230f59b4c4d1b2713.js +0 -1
- package/assets/esri/core/workers/chunks/9db75bc0980d16b730a1.js +0 -1
- package/assets/esri/core/workers/chunks/a0659b8bdc067da7badd.js +0 -1
- package/assets/esri/core/workers/chunks/a480ee9a994410177961.js +0 -1
- package/assets/esri/core/workers/chunks/a9b279975d7df0f295d7.js +0 -1
- package/assets/esri/core/workers/chunks/aa3abaa5ad4a5a3bcb84.js +0 -1
- package/assets/esri/core/workers/chunks/aa8e607f908297786675.js +0 -1
- package/assets/esri/core/workers/chunks/ab5a302b5f62d38293f9.js +0 -1
- package/assets/esri/core/workers/chunks/abd6a84396e0eb3f01ad.js +0 -1
- package/assets/esri/core/workers/chunks/abe9f8516b03a3fb0477.js +0 -1
- package/assets/esri/core/workers/chunks/aff6aa5c7f75f8e052d9.js +0 -1
- package/assets/esri/core/workers/chunks/b601cc5304b132536239.js +0 -1
- package/assets/esri/core/workers/chunks/b85f614ddbddd3c3007e.js +0 -1
- package/assets/esri/core/workers/chunks/b944f4ab25a691b3e611.js +0 -1
- package/assets/esri/core/workers/chunks/bbdacddb61e651ca0098.js +0 -1
- package/assets/esri/core/workers/chunks/c2fa728e805637a1783e.js +0 -1
- package/assets/esri/core/workers/chunks/c901f5f85d962254fc2c.js +0 -1
- package/assets/esri/core/workers/chunks/ca173b908d89a4e334f6.js +0 -1
- package/assets/esri/core/workers/chunks/cc2ef3bfa1f614d7452c.js +0 -1
- package/assets/esri/core/workers/chunks/cdb32a9ac9f5804c4212.js +0 -1
- package/assets/esri/core/workers/chunks/ce9a4997973da80141a5.js +0 -1
- package/assets/esri/core/workers/chunks/d0674b50a358d3bb9db2.js +0 -1
- package/assets/esri/core/workers/chunks/d18b7b4b3b9bea7204b0.js +0 -1
- package/assets/esri/core/workers/chunks/d2ce983f7babdf18a0ed.js +0 -1
- package/assets/esri/core/workers/chunks/d38a0d867dc6cecdc551.js +0 -1
- package/assets/esri/core/workers/chunks/e39ca33e9e463c1d6060.js +0 -1
- package/assets/esri/core/workers/chunks/e471d103205018a5cf7f.js +0 -1
- package/assets/esri/core/workers/chunks/e542fb044fc96f7e8af2.js +0 -1
- package/assets/esri/core/workers/chunks/e94e00a28591337b2def.js +0 -1
- package/assets/esri/core/workers/chunks/eb2709ccbc001f42ac1b.js +0 -1
- package/assets/esri/core/workers/chunks/f905511ca5f9b59fc17f.js +0 -1
- package/assets/esri/core/workers/chunks/f910e80dd87727af5184.js +0 -1
- package/assets/esri/core/workers/chunks/f9300a24305b0af1d227.js +0 -1
- package/assets/esri/core/workers/chunks/fa1e1ac5b3ef7bdf8a78.js +0 -1
- package/assets/esri/core/workers/chunks/fce76a84c7d25d8d47e8.js +0 -1
- package/assets/esri/core/workers/chunks/fef4f97fbe861a1b60e8.js +0 -1
- package/layers/AreaMeasurementLayer.d.ts +0 -4
- package/layers/DirectLineMeasurementLayer.d.ts +0 -4
- package/symbols/support/symbolPreview.d.ts +0 -4
- package/symbols/support/symbolPreview.js +0 -5
- package/views/3d/layers/AreaMeasurementLayerView3D.d.ts +0 -4
- package/views/3d/layers/DirectLineMeasurementLayerView3D.d.ts +0 -4
|
@@ -2,30 +2,31 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../support/debugFlags.js";import{RgbaFloatEncoding as t}from"../util/RgbaFloatEncoding.glsl.js";import{glsl as
|
|
5
|
+
import e from"../../../../support/debugFlags.js";import{RgbaFloatEncoding as t}from"../util/RgbaFloatEncoding.glsl.js";import{glsl as a}from"../../shaderModules/interfaces.js";function l(e,t){e.constants.add("stippleAlphaColorDiscard","float",.001),e.constants.add("stippleAlphaHighlightDiscard","float",.5),t.stippleEnabled?p(e,t):i(e)}function p(l,p){l.fragment.include(t);const i=e.ENABLE_CONTINUOUS_LINE_PATTERNS;i?p.draped?l.vertex.uniforms.add("worldToScreenRatio","float"):(l.vertex.uniforms.add("worldToScreenPerDistanceRatio","float"),l.vertex.uniforms.add("cameraDistanceToSurface","float"),l.vertex.uniforms.add("camPos","vec3")):l.vertex.uniforms.add("stipplePatternPixelSizeInv","float"),p.stippleDistanceMaxEnabled&&l.varyings.add("stippleDistanceMax","float"),l.varyings.add("stippleDistance","float"),l.fragment.uniforms.add("stipplePatternTexture","sampler2D"),l.fragment.uniforms.add("stipplePatternSDFNormalizer","float"),l.fragment.uniforms.add("stipplePatternTextureSize","float"),i&&l.fragment.uniforms.add("stipplePatternPixelSizeInv","float"),p.stippleOffColorEnabled&&l.fragment.uniforms.add("stippleOffColor","vec4"),l.fragment.code.add(a`float padTexture(float u) {
|
|
6
6
|
return (u * stipplePatternTextureSize + 1.0)/(stipplePatternTextureSize + 2.0);
|
|
7
|
-
}`),i?
|
|
7
|
+
}`),i?l.fragment.code.add(a`
|
|
8
8
|
float getStippleValue() {
|
|
9
|
-
|
|
9
|
+
float stippleDistanceClamped = clamp(stippleDistance, vStippleDistanceLimits.x, vStippleDistanceLimits.y);
|
|
10
|
+
${p.scaleStippleWithLineWidth?a`float u = fract(stippleDistanceClamped * stipplePatternPixelSizeInv * vLineSizeInv);`:a`float u = fract(stippleDistanceClamped * stipplePatternPixelSizeInv);`}
|
|
10
11
|
return rgba2float(texture2D(stipplePatternTexture, vec2(padTexture(u), 0.5)));
|
|
11
12
|
}
|
|
12
|
-
`):
|
|
13
|
+
`):l.fragment.code.add(a`
|
|
13
14
|
float getStippleValue() {
|
|
14
15
|
float stippleDistanceClamped = stippleDistance * gl_FragCoord.w;
|
|
15
|
-
${
|
|
16
|
-
${
|
|
16
|
+
${p.stippleDistanceMaxEnabled?"stippleDistanceClamped = clamp(stippleDistanceClamped, 0.0, stippleDistanceMax);":""}
|
|
17
|
+
${p.scaleStippleWithLineWidth?a`float u = fract(stippleDistanceClamped * vLineSizeInv);`:a`float u = fract(stippleDistanceClamped);`}
|
|
17
18
|
return rgba2float(texture2D(stipplePatternTexture, vec2(padTexture(u), 0.5)));
|
|
18
19
|
}
|
|
19
|
-
`),
|
|
20
|
+
`),l.fragment.code.add(a`
|
|
20
21
|
float getStippleSDF() {
|
|
21
22
|
return (getStippleValue() * 2.0 - 1.0) * stipplePatternSDFNormalizer;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
float getStippleAlpha() {
|
|
25
|
-
${
|
|
26
|
+
${p.scaleStippleWithLineWidth?a`return clamp(getStippleSDF() * vLineWidth + 0.5, 0.0, 1.0);`:a`return clamp(getStippleSDF() + 0.5, 0.0, 1.0);`}
|
|
26
27
|
}
|
|
27
|
-
`),
|
|
28
|
-
#define blendStipple(color, stippleAlpha) mix(color, stippleOffColor, stippleAlpha)`):
|
|
29
|
-
#define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)`)}function i(e){e.fragment.code.add(
|
|
28
|
+
`),p.stippleOffColorEnabled?l.fragment.code.add(a`#define discardByStippleAlpha(stippleAlpha, threshold) {}
|
|
29
|
+
#define blendStipple(color, stippleAlpha) mix(color, stippleOffColor, stippleAlpha)`):l.fragment.code.add(a`#define discardByStippleAlpha(stippleAlpha, threshold) if (stippleAlpha < threshold) { discard; }
|
|
30
|
+
#define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)`)}function i(e){e.fragment.code.add(a`float getStippleAlpha() { return 1.0; }
|
|
30
31
|
#define discardByStippleAlpha(_stippleAlpha_, _threshold_) {}
|
|
31
|
-
#define blendStipple(color, _stippleAlpha_) color`)}export{
|
|
32
|
+
#define blendStipple(color, _stippleAlpha_) color`)}export{l as LineStipple};
|
|
@@ -8,4 +8,4 @@ vec4 zw = rpProjectionMat * vec4(0.0, 0.0, -projectionCoordinate.z, 1.0);
|
|
|
8
8
|
vec4 reprojectedCoord = reprojectionMat * vec4(zw.w * (projectionCoordinate.xy * 2.0 - 1.0), zw.z, zw.w);
|
|
9
9
|
reprojectedCoord.xy /= reprojectedCoord.w;
|
|
10
10
|
return reprojectedCoord.xy * 0.5 + 0.5;
|
|
11
|
-
}`)}function e(r,o){r.bindTexture(o.lastFrameColorTexture,"lastFrameColorMap"),r.setUniformMatrix4fv("reprojectionMat",o.
|
|
11
|
+
}`)}function e(r,o){r.bindTexture(o.lastFrameColorTexture,"lastFrameColorMap"),r.setUniformMatrix4fv("reprojectionMat",o.reprojectionMatrix),r.setUniformMatrix4fv("rpProjectionMat",o.camera.projectionMatrix)}export{o as Reprojection,e as bindReprojectionUniforms};
|
|
@@ -43,12 +43,19 @@ float rimLightIntensity = 0.5 + 0.5 *pow(max(upDotLight, 0.0), 0.35);
|
|
|
43
43
|
vec3 directSunScattering = RIM_COLOR * rimLightIntensity * pow(dirDotLight, RIM_SCATTERING_FACTOR) * scatteringMod;
|
|
44
44
|
float additionalLight = BACKLIGHT_FACTOR * pow(dirDotLight, BACKLIGHT_SCATTERING_FACTOR) * (1. - pow(sunsetTransition, BACKLIGHT_TRANSITION_FACTOR)) ;
|
|
45
45
|
return vec3(baseCloudColor * (1. + additionalLight) + directSunScattering);
|
|
46
|
+
}`),a.fragment.code.add(t`vec4 getCloudData(vec3 rayDir){
|
|
47
|
+
vec4 cloudData = textureCube(cubeMap, rayDir);
|
|
48
|
+
float mu = dot(rayDir, vec3(0, 0, 1));
|
|
49
|
+
if(mu > 0.0){
|
|
50
|
+
cloudData = mix(vec4(vec3(1), 0.0), cloudData, smoothstep(-0.01, 0.075, mu));
|
|
51
|
+
}
|
|
52
|
+
return cloudData;
|
|
46
53
|
}`),a.fragment.code.add(t`vec4 renderCloud(vec3 worldRay)
|
|
47
54
|
{
|
|
48
55
|
vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPosition, 0.0);
|
|
49
56
|
vec3 worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixClouds, normalize(intersectionPoint));
|
|
50
57
|
vec3 worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
|
|
51
|
-
vec4 cloudData =
|
|
58
|
+
vec4 cloudData = getCloudData(worldRayRotatedCorrected);
|
|
52
59
|
float totalTransmittance = clamp(cloudData.a * (1.0 - totalFadeInOut) + totalFadeInOut, 0.0 , 1.0);
|
|
53
60
|
if (length(cloudData.rgb) == 0.0) {
|
|
54
61
|
totalTransmittance = 1.0;
|
|
@@ -59,12 +66,12 @@ return vec4(calculateCloudColor(normalize(-worldRay), cloudData), totalTransmitt
|
|
|
59
66
|
vec3 intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPosition, 0.0);
|
|
60
67
|
vec3 worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixClouds, normalize(intersectionPoint));
|
|
61
68
|
vec3 worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
|
|
62
|
-
vec4 cloudData =
|
|
69
|
+
vec4 cloudData = getCloudData(worldRayRotatedCorrected);
|
|
63
70
|
vec4 cloudColor = vec4(calculateCloudColor(normalize(-worldRay), cloudData), cloudData.a);
|
|
64
71
|
intersectionPoint = intersectWithCloudLayer(normalize(worldRay), cameraPosition, anchorPositionCrossFade, 0.0);
|
|
65
72
|
worldRayRotated = rotateDirectionToAnchorPoint(rotationMatrixCloudsCrossFade, normalize(intersectionPoint));
|
|
66
73
|
worldRayRotatedCorrected = correctForPlanetCurvature(worldRayRotated);
|
|
67
|
-
cloudData =
|
|
74
|
+
cloudData = getCloudData(worldRayRotatedCorrected);
|
|
68
75
|
vec4 cloudColorCrossFade = vec4(calculateCloudColor(normalize(-worldRay), cloudData), cloudData.a);
|
|
69
76
|
cloudColor = mix(cloudColor, cloudColorCrossFade, crossFadeAnchorFactor);
|
|
70
77
|
float totalTransmittance = clamp(cloudColor.a * (1.0 - totalFadeInOut) + totalFadeInOut, 0.0 , 1.0);
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isNone as e,isSome as t}from"../../../../../core/maybe.js";import{NestedMap as r}from"../../../../../core/NestedMap.js";class s{constructor(e){this.technique=e,this.refCount=0,this.refZeroFrame=0}}class n{constructor(e){this._context=e,this._perConstructorInstances=new r,this._frameCounter=0,this._keepAliveFrameCount=o}get viewingMode(){return this._context.viewingMode}get constructionContext(){return this._context}dispose(){this._perConstructorInstances.forEach((e=>e.forEach((e=>e.technique.dispose())))),this._perConstructorInstances.clear()}acquire(t,r){const n=r.key;let o=this._perConstructorInstances.get(t,n);if(e(o)){const e=new t(this._context,r,(()=>this.release(e)));o=new s(e),this._perConstructorInstances.set(t,n,o)}return++o.refCount,o.technique}releaseAndAcquire(e,r,s){if(t(s)){if(r.key===s.key)return s;s.release()}return this.acquire(e,r)}release(t){if(e(t)||this._perConstructorInstances.empty)return;const r=this._perConstructorInstances.get(t.constructor,t.key);e(r)||(--r.refCount,0===r.refCount&&(r.refZeroFrame=this._frameCounter))}frameUpdate(){this._frameCounter++,this._keepAliveFrameCount!==o&&this._perConstructorInstances.forEach(((e,t)=>{e.forEach(((e,r)=>{0===e.refCount&&e.refZeroFrame+this._keepAliveFrameCount<this._frameCounter&&(e.technique.dispose(),this._perConstructorInstances.delete(t,r))}))}))}async
|
|
5
|
+
import{isNone as e,isSome as t}from"../../../../../core/maybe.js";import{NestedMap as r}from"../../../../../core/NestedMap.js";class s{constructor(e){this.technique=e,this.refCount=0,this.refZeroFrame=0}}class n{constructor(e){this._context=e,this._perConstructorInstances=new r,this._frameCounter=0,this._keepAliveFrameCount=o}get viewingMode(){return this._context.viewingMode}get constructionContext(){return this._context}dispose(){this._perConstructorInstances.forEach((e=>e.forEach((e=>e.technique.dispose())))),this._perConstructorInstances.clear()}acquire(t,r){const n=r.key;let o=this._perConstructorInstances.get(t,n);if(e(o)){const e=new t(this._context,r,(()=>this.release(e)));o=new s(e),this._perConstructorInstances.set(t,n,o)}return++o.refCount,o.technique}releaseAndAcquire(e,r,s){if(t(s)){if(r.key===s.key)return s;s.release()}return this.acquire(e,r)}release(t){if(e(t)||this._perConstructorInstances.empty)return;const r=this._perConstructorInstances.get(t.constructor,t.key);e(r)||(--r.refCount,0===r.refCount&&(r.refZeroFrame=this._frameCounter))}frameUpdate(){this._frameCounter++,this._keepAliveFrameCount!==o&&this._perConstructorInstances.forEach(((e,t)=>{e.forEach(((e,r)=>{0===e.refCount&&e.refZeroFrame+this._keepAliveFrameCount<this._frameCounter&&(e.technique.dispose(),this._perConstructorInstances.delete(t,r))}))}))}async reloadAll(){const e=new Array;this._perConstructorInstances.forEach(((t,r)=>{const s=async(e,t)=>{const r=t.shader;r&&(await r.reload(),e.forEach((e=>{e.technique.reload(this._context)})))};e.push(s(t,r))})),await Promise.all(e)}}const o=-1;export{n as ShaderTechniqueRepository};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../core/Logger.js";import{lerp as i}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{createScreenPointArray as r,createRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{e as h,m as n,k as o,b as a,a as _,l as p}from"../../../../chunks/mat4.js";import{c as u}from"../../../../chunks/mat4f64.js";import{c as v,k as c}from"../../../../chunks/vec2.js";import{f as w}from"../../../../chunks/vec2f64.js";import{g as d,f as l,i as g,k as y,w as m,d as f,x,y as D,a as j,l as M,s as R,c as P,n as F,r as V}from"../../../../chunks/vec3.js";import{c as S,a as T,f as b}from"../../../../chunks/vec3f64.js";import{c as I,g as k,i as U,t as A}from"../../../../chunks/vec4.js";import{f as C,c as E}from"../../../../chunks/vec4f64.js";import{create as z,copy as H,fromMatrix as W}from"../../../../geometry/support/frustum.js";import{create as L}from"../../../../geometry/support/ray.js";import{projectPointSignedLength as G}from"../../../../geometry/support/vector.js";import{fovd2fovx as X,fovx2fovd as Y,fovd2fovy as q,fovy2fovd as N}from"./Util.js";const B=t.getLogger("esri.views.3d.webgl-engine.lib.Camera");class J{constructor(t=null,i=null,r=null){this._viewUp=S(),this._viewForward=S(),this._viewRight=S(),this._ray=L(),this._viewport=C(0,0,1,1),this._padding=C(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=w(1,1e3),this._viewDirty=!0,this._viewMatrix=u(),this._projectionDirty=!0,this._projectionMatrix=u(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=u(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=u(),this._frustumDirty=!0,this._frustum=z(),this._fullViewport=E(),this.pixelRatio=1,this.relativeElevation=0,e(t)&&d(this._ray.origin,t),this._center=e(i)?T(i):S(),this._up=e(r)?T(r):b(0,0,1)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center)}get ray(){return l(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up)}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){h(this._viewMatrix,t),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),this._viewForward}get viewUp(){return this._ensureViewClean(),this._viewUp}get viewRight(){return this._ensureViewClean(),this._viewRight}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get x(){return this._viewport[0]}set x(t){t+=this._padding[3],this._viewport[0]!==t&&(this._viewport[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get y(){return this._viewport[1]}set y(t){t+=this._padding[2],this._viewport[1]!==t&&(this._viewport[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get fullWidth(){return this._viewport[2]+this._padding[1]+this._padding[3]}set fullWidth(t){this.width=t-(this._padding[1]+this._padding[3])}get fullHeight(){return this._viewport[3]+this._padding[0]+this._padding[2]}set fullHeight(t){this.height=t-(this._padding[0]+this._padding[2])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[3],this._fullViewport[1]=this._viewport[1]-this._padding[2],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){this._padding[0]===t[0]&&this._padding[1]===t[1]&&this._padding[2]===t[2]&&this._padding[3]===t[3]||(this._viewport[0]+=t[3]-this._padding[3],this._viewport[1]+=t[2]-this._padding[2],this._viewport[2]-=t[1]+t[3]-(this._padding[1]+this._padding[3]),this._viewport[3]-=t[0]+t[2]-(this._padding[0]+this._padding[2]),I(this._padding,t),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewProjectionMatrix(){return this._viewProjectionDirty&&(n(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){if(this._projectionDirty){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2),r=e*this.aspect;o(this._projectionMatrix,-r*(1+2*this._padding[3]/t),r*(1+2*this._padding[1]/t),-e*(1+2*this._padding[2]/i),e*(1+2*this._padding[0]/i),this.near,this.far),this._projectionDirty=!1}return this._projectionMatrix}set projectionMatrix(t){h(this._projectionMatrix,t),this._projectionDirty=!1,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fov(){return this._fov}set fov(t){this._fov=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return X(this._fov,this.width,this.height)}set fovX(t){this._fov=Y(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return q(this._fov,this.width,this.height)}set fovY(t){this._fov=N(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return g(this._center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(a(this._viewInverseTransposeMatrix,this.viewMatrix),_(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const i=2*t-1;return 2*this.near*this.far/(this.far+this.near-i*(this.far-this.near))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return this.relativeElevation&&this.relativeElevation>=0}copyFrom(t){d(this._ray.origin,t.eye),d(this._center,t.center),d(this._up,t.up),I(this._viewport,t.viewport),I(this._padding,t.padding),v(this._nearFar,t.nearFar),this._fov=t.fov,this.relativeElevation=t.relativeElevation;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(h(this._viewMatrix,t.viewMatrix),d(this._viewRight,t.viewRight),d(this._viewUp,t.viewUp),d(this._viewForward,t.viewForward)),i._projectionDirty?this._projectionDirty=!0:(h(this._projectionMatrix,t.projectionMatrix),this._projectionDirty=!1),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(H(t.frustum,this._frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(h(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),I(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up}clone(){return(new J).copyFrom(this)}equals(t){return y(this.eye,t.eye)&&y(this._center,t.center)&&y(this._up,t.up)&&k(this._viewport,t.viewport)&&k(this._padding,t.padding)&&c(this._nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation}almostEquals(t){if(this.pixelRatio!==t.pixelRatio||Math.abs(t.fov-this._fov)>=.001)return!1;const i=5e-4,e=1-1e-10;m(Q,t.eye,t.center),m(Z,this.eye,this._center);const r=f(Q,Z),s=x(Q),h=x(Z);return r*r>=e*s*h&&D(t.eye,this.eye)<Math.max(s,h)*i*i&&U(t.padding,this._padding)<.5&&U(t.viewport,this._viewport)<.5}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this.viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this.viewDirectionDistance(t))}viewDirectionDistance(t){return Math.abs(G(this.viewForward,l(Q,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=r()){return t[0]=(this.padding[3]+this.width/2)/this.pixelRatio,t[1]=(this.padding[0]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[3]+this.width*i,t[1]=this.padding[2]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,e,r=!1){t!==K&&d(K,t),K[3]=1,r&&(e[2]=-K[2]),A(K,K,this.projectionMatrix),j(K,K,1/Math.abs(K[3]));const s=this.fullViewport;return e[0]=i(0,s[0]+s[2],.5+.5*K[0]),e[1]=i(0,s[1]+s[3],.5+.5*K[1]),r||(e[2]=.5*(K[2]+1)),e}projectToScreen(t,i){this.projectToRenderScreen(t,$),this.renderToScreen($,i)}projectToRenderScreen(t,e){if(K[0]=t[0],K[1]=t[1],K[2]=t[2],K[3]=1,A(K,K,this.viewProjectionMatrix),0===K[3])return null;j(K,K,1/Math.abs(K[3]));const r=this.fullViewport;return"x"in e?(e.x=i(0,r[0]+r[2],.5+.5*K[0]),e.y=i(0,r[1]+r[3],.5+.5*K[1])):(e[0]=i(0,r[0]+r[2],.5+.5*K[0]),e[1]=i(0,r[1]+r[3],.5+.5*K[1]),e.length>2&&(e[2]=.5*(K[2]+1))),e}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,$),i)}unprojectFromRenderScreen(t,i){if(n(O,this.projectionMatrix,this.viewMatrix),!a(O,O))return null;const e=this.fullViewport;return K[0]=2*(t[0]-e[0])/e[2]-1,K[1]=2*(t[1]-e[1])/e[3]-1,K[2]=2*t[2]-1,K[3]=1,A(K,K,O),0===K[3]?null:(i[0]=K[0]/K[3],i[1]=K[1]/K[3],i[2]=K[2]/K[3],i)}constrainWindowSize(t,i,e,r=e){const s=t*this.pixelRatio,h=i*this.pixelRatio,n=Math.max(s-e/2,0),o=Math.max(this.fullHeight-h-r/2,0),a=-Math.min(s-e/2,0),_=-Math.min(this.fullHeight-h-r/2,0);return[n,o,e-a- -Math.min(this.fullWidth-s-e/2,0),r-_- -Math.min(h-r/2,0)]}computeUp(t){1===t?this.computeUpGlobal():this.computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}computeUpGlobal(){l(Q,this.center,this.eye);const t=M(this.center);t<1?(R(this._up,0,0,1),this._markViewDirty()):Math.abs(f(Q,this.center))>.9999*M(Q)*t||(P(this._up,Q,this.center),P(this._up,this._up,Q),F(this._up,this._up),this._markViewDirty())}computeUpLocal(){V(Q,this.eye,this.center),Math.abs(Q[2])<=.9999&&(j(Q,Q,Q[2]),R(this._up,-Q[0],-Q[1],1-Q[2]),F(this._up,this._up),this._markViewDirty())}_compareAndSetView(t,i){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?y(t,i)||(d(i,t),this._markViewDirty()):B.warn("Camera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(W(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(p(this._viewMatrix,this.eye,this._center,this._up),R(this._viewForward,-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10]),R(this._viewUp,this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9]),R(this._viewRight,this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8]),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}}const K=E(),O=u(),Q=S(),Z=S(),$=s();export{J as default};
|
|
5
|
+
import t from"../../../../core/Logger.js";import{lerp as i}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{createScreenPointArray as r,createRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{e as h,m as n,k as o,b as a,a as _,l as p}from"../../../../chunks/mat4.js";import{c as u}from"../../../../chunks/mat4f64.js";import{c,k as v}from"../../../../chunks/vec2.js";import{f as w}from"../../../../chunks/vec2f64.js";import{g as d,f as l,i as g,k as y,w as m,d as f,x,y as D,a as j,l as M,s as R,c as F,n as P,r as V}from"../../../../chunks/vec3.js";import{c as S,a as T,f as b}from"../../../../chunks/vec3f64.js";import{c as I,g as k,i as U,t as A}from"../../../../chunks/vec4.js";import{f as C,c as E}from"../../../../chunks/vec4f64.js";import{create as z,copy as H,fromMatrix as W}from"../../../../geometry/support/frustum.js";import{create as L}from"../../../../geometry/support/ray.js";import{projectPointSignedLength as G}from"../../../../geometry/support/vector.js";import{fovd2fovx as X,fovx2fovd as Y,fovd2fovy as q,fovy2fovd as N}from"./Util.js";const B=t.getLogger("esri.views.3d.webgl-engine.lib.Camera");class J{constructor(t=null,i=null,r=null){this._viewUp=S(),this._viewForward=S(),this._viewRight=S(),this._ray=L(),this._viewport=C(0,0,1,1),this._padding=C(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=w(1,1e3),this._viewDirty=!0,this._viewMatrix=u(),this._projectionDirty=!0,this._projectionMatrix=u(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=u(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=u(),this._frustumDirty=!0,this._frustum=z(),this._fullViewport=E(),this.pixelRatio=1,this.relativeElevation=0,this.distanceFromSurface=0,e(t)&&d(this._ray.origin,t),this._center=e(i)?T(i):S(),this._up=e(r)?T(r):b(0,0,1)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center)}get ray(){return l(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up)}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){h(this._viewMatrix,t),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),this._viewForward}get viewUp(){return this._ensureViewClean(),this._viewUp}get viewRight(){return this._ensureViewClean(),this._viewRight}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get x(){return this._viewport[0]}set x(t){t+=this._padding[3],this._viewport[0]!==t&&(this._viewport[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get y(){return this._viewport[1]}set y(t){t+=this._padding[2],this._viewport[1]!==t&&(this._viewport[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get fullWidth(){return this._viewport[2]+this._padding[1]+this._padding[3]}set fullWidth(t){this.width=t-(this._padding[1]+this._padding[3])}get fullHeight(){return this._viewport[3]+this._padding[0]+this._padding[2]}set fullHeight(t){this.height=t-(this._padding[0]+this._padding[2])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[3],this._fullViewport[1]=this._viewport[1]-this._padding[2],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){this._padding[0]===t[0]&&this._padding[1]===t[1]&&this._padding[2]===t[2]&&this._padding[3]===t[3]||(this._viewport[0]+=t[3]-this._padding[3],this._viewport[1]+=t[2]-this._padding[2],this._viewport[2]-=t[1]+t[3]-(this._padding[1]+this._padding[3]),this._viewport[3]-=t[0]+t[2]-(this._padding[0]+this._padding[2]),I(this._padding,t),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewProjectionMatrix(){return this._viewProjectionDirty&&(n(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){if(this._projectionDirty){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2),r=e*this.aspect;o(this._projectionMatrix,-r*(1+2*this._padding[3]/t),r*(1+2*this._padding[1]/t),-e*(1+2*this._padding[2]/i),e*(1+2*this._padding[0]/i),this.near,this.far),this._projectionDirty=!1}return this._projectionMatrix}set projectionMatrix(t){h(this._projectionMatrix,t),this._projectionDirty=!1,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fov(){return this._fov}set fov(t){this._fov=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return X(this._fov,this.width,this.height)}set fovX(t){this._fov=Y(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return q(this._fov,this.width,this.height)}set fovY(t){this._fov=N(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return g(this._center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(a(this._viewInverseTransposeMatrix,this.viewMatrix),_(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const i=2*t-1;return 2*this.near*this.far/(this.far+this.near-i*(this.far-this.near))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return this.relativeElevation&&this.relativeElevation>=0}copyFrom(t){d(this._ray.origin,t.eye),d(this._center,t.center),d(this._up,t.up),I(this._viewport,t.viewport),I(this._padding,t.padding),c(this._nearFar,t.nearFar),this._fov=t.fov,this.relativeElevation=t.relativeElevation,this.distanceFromSurface=t.distanceFromSurface;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(h(this._viewMatrix,t.viewMatrix),d(this._viewRight,t.viewRight),d(this._viewUp,t.viewUp),d(this._viewForward,t.viewForward)),i._projectionDirty?this._projectionDirty=!0:(h(this._projectionMatrix,t.projectionMatrix),this._projectionDirty=!1),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(H(t.frustum,this._frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(h(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),I(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up}clone(){return(new J).copyFrom(this)}equals(t){return y(this.eye,t.eye)&&y(this._center,t.center)&&y(this._up,t.up)&&k(this._viewport,t.viewport)&&k(this._padding,t.padding)&&v(this._nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation}almostEquals(t){if(this.pixelRatio!==t.pixelRatio||Math.abs(t.fov-this._fov)>=.001)return!1;const i=5e-4,e=1-1e-10;m(Q,t.eye,t.center),m(Z,this.eye,this._center);const r=f(Q,Z),s=x(Q),h=x(Z);return r*r>=e*s*h&&D(t.eye,this.eye)<Math.max(s,h)*i*i&&U(t.padding,this._padding)<.5&&U(t.viewport,this._viewport)<.5}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this.viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this.viewDirectionDistance(t))}viewDirectionDistance(t){return Math.abs(G(this.viewForward,l(Q,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=r()){return t[0]=(this.padding[3]+this.width/2)/this.pixelRatio,t[1]=(this.padding[0]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[3]+this.width*i,t[1]=this.padding[2]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,e,r=!1){t!==K&&d(K,t),K[3]=1,r&&(e[2]=-K[2]),A(K,K,this.projectionMatrix),j(K,K,1/Math.abs(K[3]));const s=this.fullViewport;return e[0]=i(0,s[0]+s[2],.5+.5*K[0]),e[1]=i(0,s[1]+s[3],.5+.5*K[1]),r||(e[2]=.5*(K[2]+1)),e}projectToScreen(t,i){this.projectToRenderScreen(t,$),this.renderToScreen($,i)}projectToRenderScreen(t,e){if(K[0]=t[0],K[1]=t[1],K[2]=t[2],K[3]=1,A(K,K,this.viewProjectionMatrix),0===K[3])return null;j(K,K,1/Math.abs(K[3]));const r=this.fullViewport;return"x"in e?(e.x=i(0,r[0]+r[2],.5+.5*K[0]),e.y=i(0,r[1]+r[3],.5+.5*K[1])):(e[0]=i(0,r[0]+r[2],.5+.5*K[0]),e[1]=i(0,r[1]+r[3],.5+.5*K[1]),e.length>2&&(e[2]=.5*(K[2]+1))),e}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,$),i)}unprojectFromRenderScreen(t,i){if(n(O,this.projectionMatrix,this.viewMatrix),!a(O,O))return null;const e=this.fullViewport;return K[0]=2*(t[0]-e[0])/e[2]-1,K[1]=2*(t[1]-e[1])/e[3]-1,K[2]=2*t[2]-1,K[3]=1,A(K,K,O),0===K[3]?null:(i[0]=K[0]/K[3],i[1]=K[1]/K[3],i[2]=K[2]/K[3],i)}constrainWindowSize(t,i,e,r=e){const s=t*this.pixelRatio,h=i*this.pixelRatio,n=Math.max(s-e/2,0),o=Math.max(this.fullHeight-h-r/2,0),a=-Math.min(s-e/2,0),_=-Math.min(this.fullHeight-h-r/2,0);return[n,o,e-a- -Math.min(this.fullWidth-s-e/2,0),r-_- -Math.min(h-r/2,0)]}computeUp(t){1===t?this.computeUpGlobal():this.computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}computeUpGlobal(){l(Q,this.center,this.eye);const t=M(this.center);t<1?(R(this._up,0,0,1),this._markViewDirty()):Math.abs(f(Q,this.center))>.9999*M(Q)*t||(F(this._up,Q,this.center),F(this._up,this._up,Q),P(this._up,this._up),this._markViewDirty())}computeUpLocal(){V(Q,this.eye,this.center),Math.abs(Q[2])<=.9999&&(j(Q,Q,Q[2]),R(this._up,-Q[0],-Q[1],1-Q[2]),P(this._up,this._up),this._markViewDirty())}_compareAndSetView(t,i){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?y(t,i)||(d(i,t),this._markViewDirty()):B.warn("Camera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(W(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(p(this._viewMatrix,this.eye,this._center,this._up),R(this._viewForward,-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10]),R(this._viewUp,this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9]),R(this._viewRight,this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8]),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}}const K=E(),O=u(),Q=S(),Z=S(),$=s();export{J as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../core/Logger.js";import{isNone as t,isSome as i,disposeMaybe as r}from"../../../../core/maybe.js";import{NestedMap as s}from"../../../../core/NestedMap.js";import{assert as a}from"./Util.js";const
|
|
5
|
+
import e from"../../../../core/Logger.js";import{isNone as t,isSome as i,disposeMaybe as r}from"../../../../core/maybe.js";import{NestedMap as s}from"../../../../core/NestedMap.js";import{assert as a}from"./Util.js";const o=e.getLogger("esri.views.3d.webgl-engine.lib.GLMaterialRepository");class l{constructor(e){this._glMaterial=e,this.refCnt=0,this._glMaterial=e}incRefCnt(){++this.refCnt}decRefCnt(){--this.refCnt,a(this.refCnt>=0)}getRefCnt(){return this.refCnt}get glMaterial(){return this._glMaterial}}class n{constructor(e,t,i,r){this._textureRepository=e,this._techniqueRepository=t,this.materialChanged=i,this.requestRender=r,this._id2glMaterialRef=new s}dispose(){this._textureRepository.dispose()}acquire(e,i){this._ownMaterial(e);let r=this._id2glMaterialRef.get(i,e.id);if(t(r)){const t=e.createGLMaterial({material:e,techniqueRep:this._techniqueRepository,textureRep:this._textureRepository,output:i});r=new l(t),this._id2glMaterialRef.set(i,e.id,r)}return r.incRefCnt(),r.glMaterial}release(e,t){const s=this._id2glMaterialRef.get(t,e.id);i(s)&&(s.decRefCnt(),0===s.getRefCnt()&&(r(s.glMaterial),this._id2glMaterialRef.delete(t,e.id)))}_ownMaterial(e){i(e.repository)&&e.repository!==this&&o.error("Material is already owned by a different material repository"),e.repository=this}}export{n as GLMaterialRepository};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{releaseMaybe as e,isNone as t,isSome as r}from"../../../../core/maybe.js";import i from"./GLMaterial.js";class s extends i{constructor(e){super(e),this._numLoading=0,this._textureRepository=e.textureRep,this._textureId=e.textureId,this._acquire(e.textureId).then((e=>this._texture=e)),this._acquire(e.normalTextureId).then((e=>this._textureNormal=e)),this._acquire(e.emissiveTextureId).then((e=>this._textureEmissive=e)),this._acquire(e.occlusionTextureId).then((e=>this._textureOcclusion=e)),this._acquire(e.metallicRoughnessTextureId).then((e=>this._textureMetallicRoughness=e))}dispose(){this._texture=e(this._texture),this._textureNormal=e(this._textureNormal),this._textureEmissive=e(this._textureEmissive),this._textureOcclusion=e(this._textureOcclusion),this._textureMetallicRoughness=e(this._textureMetallicRoughness)}ensureResources(e){return 0===this._numLoading?2:1}updateTexture(e){(t(this._texture)||e!==this._texture.id)&&(this._release(this._texture),this._textureId=e,this._acquire(this._textureId).then((e=>this._texture=e)))}bindTextures(e){r(this._texture)&&e.bindTexture(this._texture.glTexture,"tex"),r(this._textureNormal)&&e.bindTexture(this._textureNormal.glTexture,"normalTexture"),r(this._textureEmissive)&&e.bindTexture(this._textureEmissive.glTexture,"texEmission"),r(this._textureOcclusion)&&e.bindTexture(this._textureOcclusion.glTexture,"texOcclusion"),r(this._textureMetallicRoughness)&&e.bindTexture(this._textureMetallicRoughness.glTexture,"texMetallicRoughness")}bindTextureScale(e){const t=r(this._texture)&&this._texture.glTexture;r(t)&&t.descriptor.textureCoordinateScaleFactor?e.setUniform2fv("textureCoordinateScaleFactor",t.descriptor.textureCoordinateScaleFactor):e.setUniform2f("textureCoordinateScaleFactor",1,1)}_acquire(e){return t(e)?Promise.resolve(null):(++this._numLoading,this._textureRepository.acquire(e).finally((()=>--this._numLoading)))}_release(e){t(e)||e.release()}}export{s as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as
|
|
5
|
+
import{isSome as e}from"../../../../core/maybe.js";class r{constructor(e,r){this._material=e,this._repository=r,this._map=new Map}destroy(){this._map.forEach(((r,s)=>{e(r)&&this._repository.release(this._material,t(s))}))}load(r,s){this._map.has(s)||this._map.set(s,this._repository.acquire(this._material,t(s)));const a=this._map.get(s);if(e(a)){if(2===a.ensureResources(r))return a;this._repository.requestRender()}return null}}function t(e){switch(e){default:return 0;case 1:return 7;case 4:case 7:case 6:return 3;case 3:return 2;case 2:return 1;case 5:return 4}}export{r as GLMaterials,t as outputFromPass};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as e}from"../../../../core/maybe.js";import{ContentObject as r}from"./ContentObject.js";import{Default3D as t}from"./DefaultVertexAttributeLocations.js";import{copyParameters as s,updateParameters as i}from"../materials/internal/MaterialUtil.js";class a extends r{constructor(e,r){super(),this.type=3,this.supportsEdges=!1,this._visible=!0,this._renderPriority=0,this._insertOrder=0,this._vertexAttributeLocations=t,this.
|
|
5
|
+
import{isSome as e}from"../../../../core/maybe.js";import{ContentObject as r}from"./ContentObject.js";import{Default3D as t}from"./DefaultVertexAttributeLocations.js";import{copyParameters as s,updateParameters as i}from"../materials/internal/MaterialUtil.js";class a extends r{constructor(e,r){super(),this.type=3,this.supportsEdges=!1,this._visible=!0,this._renderPriority=0,this._insertOrder=0,this._vertexAttributeLocations=t,this._parameters=s(e,r),this.validateParameters(this._parameters)}dispose(){}get parameters(){return this._parameters}update(e){return!1}setParameters(e){i(this._parameters,e)&&(this.validateParameters(this._parameters),this.parametersChanged())}validateParameters(e){}get visible(){return this._visible}set visible(e){e!==this._visible&&(this._visible=e,this.parametersChanged())}shouldRender(e){return this.isVisible()&&this.isVisibleInPass(e.pass)&&0!=(this.renderOccluded&e.renderOccludedMask)}isVisibleInPass(e){return!0}get renderOccluded(){return this.parameters.renderOccluded}get renderPriority(){return this._renderPriority}set renderPriority(e){e!==this._renderPriority&&(this._renderPriority=e,this.parametersChanged())}get insertOrder(){return this._insertOrder}set insertOrder(e){e!==this._insertOrder&&(this._insertOrder=e,this.parametersChanged())}get vertexAttributeLocations(){return this._vertexAttributeLocations}isVisible(){return this._visible}parametersChanged(){e(this.repository)&&this.repository.materialChanged(this)}}const n={renderOccluded:1};export{a as Material,n as materialParametersDefaults};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{someMap as r}from"../../../../core/MapUtils.js";import{
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{someMap as r}from"../../../../core/MapUtils.js";import{isSome as o,unwrapOr as s}from"../../../../core/maybe.js";import{NullUID as d}from"../../../../core/uid.js";import{property as i}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{GeometryRecord as a}from"./GeometryRecord.js";import{assert as n}from"./Util.js";let m=class extends t{constructor(e){super(e),this._residentGeomRecords=new Map,this._dirtyGeomRecords=new Map,this.dirty=!1}commit(e){this.dirty=!1,this._dirtyGeomRecords.forEach(((t,r)=>this.commitLayer(r,e)))}commitLayer(e,t){const r=this._dirtyGeomRecords.get(e);r&&(r.forEach(((r,s)=>{const d=this._ensureGeomRecord(e,s);r.forEach(((e,r)=>{const i=e[0],c=e[1],m=e[2];let h=!1;if(2&c){const e=d.get(r);if(e){const r=e[1];if(4&m){const e=this.model.getObject(s);this.model.updateRenderGeometryTransformation(e,i,r)&&(h=!0)}h||t.updates.push({renderGeometry:r,updateType:m})}else n(!1,"ModelDirtySet.getAddRemoveListFilteredByLayers: invalid update")}if(4&c||h){const e=d.get(r);e?(t.removes.push(e[1]),d.delete(r),e[0].disposed&&a.pool.release(e[0])):4===c&&n(!1,"ModelDirtySet.getAddRemoveListFilteredByLayers: invalid remove")}if(1&c||h){const e=this.model.getObject(s);if(o(e)){const o=this.model.getRenderGeometry(e,i),s=[i,o];t.adds.push(o),d.set(r,s)}}})),0===d.size&&this._residentGeomRecords.get(e).delete(s)})),0===this._residentGeomRecords.get(e).size&&this._residentGeomRecords.delete(e),this._dirtyGeomRecords.delete(e))}getResidentRenderGeometries(e,t){const r=this._residentGeomRecords.get(e);r&&r.forEach((e=>e.forEach((e=>t.push(e[1])))))}_objectStateChanged(e,t){for(const r of t.geometryRecords)this._updateOrCreateDirtyRecord(t,r,null,2,0,0,2,5,e)}visibilityChanged(e){this._objectStateChanged(1,e)}highlightChanged(e){this._objectStateChanged(8,e)}occlusionChanged(e){this._objectStateChanged(16,e)}vertexAttrsUpdated(e){this._updateOrCreateDirtyRecord(e.object,e.record,null,2,0,0,2,5,2)}layerAdded(e){e.objects.forAll((t=>this._layerObjectAdded(e,t)))}layerRemoved(e){e.objects.forAll((t=>this._layerObjectRemoved(e,t)))}layerObjectAdded(e){this._layerObjectAdded(e.layer,e.object)}_layerObjectAdded(e,t){const r=e.id;for(const o of t.geometryRecords)this._objectGeometryAdded(t,o,r)}layerObjectRemoved(e){this._layerObjectRemoved(e.layer,e.object)}layerObjectsAdded(e){for(const t of e.objects)this._layerObjectAdded(e.layer,t)}layerObjectsRemoved(e){for(const t of e.objects)this._layerObjectRemoved(e.layer,t)}_layerObjectRemoved(e,t){const r=e.id;for(const o of t.geometryRecords)this._objectGeometryRemoved(t,o,r)}shaderTransformationChanged(e){const t=this._residentGeomRecords.get(e.id);t&&t.forEach(((e,t)=>{const r=this.model.getObject(t);r&&r.hasVolativeTransformation()&&e.forEach((e=>{e[1].shaderTransformationChanged()}))}))}objectTransformation(e){const t=this._getParentLayerId(e),r=e.id;this._ensureGeomRecord(t,r).forEach((r=>{this._updateOrCreateDirtyRecord(e,r[0],t,2,0,0,2,5,4)}))}objectGeometryAdded(e){this._objectGeometryAdded(e.object,e.record)}_objectGeometryAdded(e,t,r=null){this._updateOrCreateDirtyRecord(e,t,r,1,4,0,0,0)}objectGeometryRemoved(e){this._objectGeometryRemoved(e.object,e.record)}_objectGeometryRemoved(e,t,r=null){this._updateOrCreateDirtyRecord(e,t,r,4,1,2,0,0)}_updateOrCreateDirtyRecord(e,t,r,o,d,i,c,m,h){r=s(r,this._getParentLayerId(e));const y=e.id,l=t.id,p=this._ensureDirtyRecord(r,y),R=p.get(l);if(R){const e=R[1];e&d?(p.delete(l),R[0].disposed&&a.pool.release(R[0])):e&i?(R[1]=o,R[2]=h):e&c?R[2]|=h:e&m||n(!1,"ModelDirtySet.objectGeometryAdded: inconsistent state")}else p.set(l,[t,o,h]);this.dirty=this._hasDirtyGeometryRecords}_ensureGeomRecord(e,t){let r=this._residentGeomRecords.get(e);r||(r=new Map,this._residentGeomRecords.set(e,r));let o=r.get(t);return o||(o=new Map,r.set(t,o)),o}get _hasDirtyGeometryRecords(){return r(this._dirtyGeomRecords,(e=>r(e,(e=>e&&e.size>0))))}_ensureDirtyRecord(e,t){let r=this._dirtyGeomRecords.get(e);r||(r=new Map,this._dirtyGeomRecords.set(e,r));let o=r.get(t);return o||(o=new Map,r.set(t,o)),o}_getParentLayerId(e){return o(e.parentLayer)?e.parentLayer.id:d}formatDebugInfo(){const e=["ADD","UPD",void 0,"REM"];let t="";return this._dirtyGeomRecords.forEach(((r,o)=>{r.forEach(((r,s)=>{t.length>0&&(t+="\n"),t+=o+"."+s;const d=[];r.forEach((e=>{const t=e[1];d[t]||(d[t]=[]),d[t].push(e[0].geometry.id)}));for(let o=0;o<d.length;o++)if(d[o]){t+=" "+e[o-1]+": ";for(let e=0;e<d[o].length;e++)t+=d[o][e]+", "}}))})),t}get test(){const e=this;return{get residentLayerCount(){return e._residentGeomRecords.size},get residentObjectCount(){return Array.from(e._residentGeomRecords.values()).reduce(((e,t)=>e+t.size),0)}}}};e([i({constructOnly:!0})],m.prototype,"model",void 0),e([i()],m.prototype,"dirty",void 0),m=e([c("esri.views.3d.webgl-engine.lib.ModelDirtySet")],m);const h=m;export{h as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as t,unwrapOr as e,isNone as s}from"../../../../core/maybe.js";import{e as i,m as r}from"../../../../chunks/mat4.js";import{c as o,b as a,I as n}from"../../../../chunks/mat4f64.js";import{e as h,m,i as c,g as l,s as d}from"../../../../chunks/vec3.js";import{a as g,f as
|
|
5
|
+
import{isSome as t,unwrapOr as e,isNone as s}from"../../../../core/maybe.js";import{e as i,m as r}from"../../../../chunks/mat4.js";import{c as o,b as a,I as n}from"../../../../chunks/mat4f64.js";import{e as h,m,i as c,g as l,s as d}from"../../../../chunks/vec3.js";import{a as g,f as _,c as u}from"../../../../chunks/vec3f64.js";import{c as b,a as f}from"../../../../chunks/sphere.js";import{maxScale as p}from"../../support/mathUtils.js";import{ContentObject as v}from"./ContentObject.js";import{GeometryRecord as y}from"./GeometryRecord.js";import{Object3DStateID as j}from"./Object3DStateID.js";import{assert as V}from"./Util.js";import{addObject3DStateID as S,removeObject3DStateID as A}from"../materials/renderers/utils.js";class T extends v{constructor(t={}){super(),this.type=1,this._geometryRecords=new Array,this._geometries=new Array,this._objectTransformation=o(),this._bvObjectSpace=new L,this._bvWorldSpace=new L,this._bvDirty=!0,this._hasVolatileTransformation=!1,this._visible=!0,this.castShadow=null==t.castShadow||t.castShadow,this.metadata=t.metadata,this.metadata&&this.metadata.isElevationSource&&(this.metadata.lastValidElevationBB=new x),this.transformation=o();const{geometries:e,materials:s,transformations:i,origins:r}=t;if(Array.isArray(e)){V(s.length===e.length,"Object3D: materials don't match geometries"),V(i.length===e.length,"Object3D: transformations don't match geometries"),this._geometryRecords.length=e.length,this._geometries.length=e.length;for(let t=0;t<e.length;t++)this._geometries[t]=e[t],this._geometryRecords[t]=y.pool.acquire(e[t],s[t],a(i[t]),{highlights:null,occludees:null,visible:this._visible},r&&r[t])}}get geometryRecords(){return this._geometryRecords}get geometries(){return this._geometries}get transformation(){return this._objectTransformation}set transformation(t){i(this._objectTransformation,t),this._invalidateBoundingVolume(),this._emit("objectTransformation",this)}dispose(){this._geometryRecords.length=0,this._geometries.length=0}get parentLayer(){return this._parentLayer}set parentLayer(t){V(null==this._parentLayer||null==t,"Object3D can only be added to a single Layer"),this._parentLayer=t}addGeometry(e,s,i,r,o){i=i||n,this._geometries.push(e);const a=y.pool.acquire(e,s,i,{highlights:null,occludees:null,visible:this._visible},r,o);return this._geometryRecords.push(a),this._hasVolatileTransformation=this._hasVolatileTransformation||t(a.shaderTransformation),this._emit("objectGeometryAdded",{object:this,record:a}),this._invalidateBoundingVolume(),a}removeGeometry(e){const s=this._geometryRecords.splice(e,1)[0];return this._hasVolatileTransformation=t(s.shaderTransformation)?this._geometryRecords.some((e=>t(e.shaderTransformation))):this._hasVolatileTransformation,s.dispose(),this._geometries.splice(e,1),this._emit("objectGeometryRemoved",{object:this,record:s}),this._invalidateBoundingVolume(),s}removeAllGeometries(){for(;this.geometryRecords.length>0;)this.removeGeometry(0)}geometryVertexAttrsUpdated(t){this._emit("vertexAttrsUpdated",{object:this,record:t}),this._invalidateBoundingVolume()}get isVisible(){return this._visible}setVisible(t){if(this._visible!==t){this._visible=t;for(const t of this._geometryRecords)t.instanceParameters.visible=this._visible;this._emit("visibilityChanged",this)}}maskOccludee(){const t=new j(1);for(const e of this._geometryRecords)e.instanceParameters.occludees=S(e.instanceParameters.occludees,t);return this._emit("occlusionChanged",this),t}removeOcclude(t){for(const e of this._geometryRecords)e.instanceParameters.occludees=A(e.instanceParameters.occludees,t);this._emit("occlusionChanged",this)}highlight(){const t=new j(0);for(const e of this._geometryRecords)e.instanceParameters.highlights=S(e.instanceParameters.highlights,t);return this._emit("highlightChanged",this),t}removeHighlight(t){for(const e of this._geometryRecords)e.instanceParameters.highlights=A(e.instanceParameters.highlights,t);this._emit("highlightChanged",this)}getCombinedStaticTransformation(t,s){return r(e(s,o()),this.transformation,t.getStaticTransformation())}getCombinedShaderTransformation(t,e){return e=e||o(),r(e,this.transformation,t.getShaderTransformation()),e}hasVolativeTransformation(){return this._hasVolatileTransformation}get boundingVolumeWorldSpace(){return this._validateBoundingVolume(),this._bvWorldSpace}get boundingVolumeObjectSpace(){return this._validateBoundingVolume(),this._bvObjectSpace}_validateBoundingVolume(){if(!this._bvDirty&&!this._hasVolatileTransformation)return;this._bvObjectSpace.init(),this._bvWorldSpace.init();for(let s=0;s<this._geometryRecords.length;++s){const e=this._geometries[s],i=this._geometryRecords[s],r=e.boundingInfo;t(r)&&(this._calculateTransformedBoundingVolume(r,this._bvObjectSpace,i.getShaderTransformation()),this._calculateTransformedBoundingVolume(r,this._bvWorldSpace,this.getCombinedShaderTransformation(i)))}h(this._bvObjectSpace.bounds,this._bvObjectSpace.min,this._bvObjectSpace.max,.5),h(this._bvWorldSpace.bounds,this._bvWorldSpace.min,this._bvWorldSpace.max,.5);const e=u(),i=u(),r=p(this.transformation);for(let t=0;t<this._geometryRecords.length;++t){const o=this._geometries[t].boundingInfo;if(s(o))continue;const a=this._geometryRecords[t].getShaderTransformation(),n=p(a);m(e,o.getCenter(),a);const h=c(e,this._bvObjectSpace.bounds),l=o.getBSRadius()*n;this._bvObjectSpace.bounds[3]=Math.max(this._bvObjectSpace.bounds[3],h+l),m(i,e,this.transformation);const d=c(i,this._bvWorldSpace.bounds),g=l*r;this._bvWorldSpace.bounds[3]=Math.max(this._bvWorldSpace.bounds[3],d+g)}this._bvDirty=!1}_calculateTransformedBoundingVolume(t,e,s){const i=t.getBBMin(),r=t.getBBMax(),o=g(i),a=g(r);m(o,o,s),m(a,a,s);for(let n=0;n<3;++n)e.min[n]=Math.min(e.min[n],o[n],a[n]),e.max[n]=Math.max(e.max[n],o[n],a[n]);for(let n=0;n<3;++n){l(o,i),l(a,r),o[n]=r[n],a[n]=i[n],m(o,o,s),m(a,a,s);for(let t=0;t<3;++t)e.min[t]=Math.min(e.min[t],o[t],a[t]),e.max[t]=Math.max(e.max[t],o[t],a[t])}}_invalidateBoundingVolume(){this._bvDirty=!0,t(this._parentLayer)&&this._parentLayer.notifyObjectBBChanged(this,this._bvWorldSpace.bounds)}_emit(e,s){t(this._parentLayer)&&this._parentLayer.events.emit(e,s)}get test(){const t=this;return{hasGeometry:e=>t._geometries.indexOf(e)>-1,getGeometryIndex:e=>t._geometries.indexOf(e)}}}class x{constructor(){this.min=_(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this.max=_(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE)}isEmpty(){return this.max[0]<this.min[0]&&this.max[1]<this.min[1]&&this.max[2]<this.min[2]}}class L extends x{constructor(){super(...arguments),this.bounds=b()}init(){d(this.min,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),d(this.max,-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),f(this.bounds)}}export{T as Object3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../core/Handles.js";import{someMap as r}from"../../../../core/MapUtils.js";import{destroyMaybe as t,disposeMaybe as s,isSome as n,isNone as i,unwrap as a}from"../../../../core/maybe.js";import{init as h}from"../../../../core/watchUtils.js";import{g as d,t as o,b as l,m as c}from"../../../../chunks/mat4.js";import{c as p}from"../../../../chunks/mat4f64.js";import{a as _}from"../../../../chunks/vec2f64.js";import{enableNewAtmosphere as g}from"../../../../support/featureFlags.js";import m from"../../support/debugFlags.js";import{RenderPassManager as u}from"../core/renderPasses/RenderPassManager.js";import{BoundingInfo as f}from"./BoundingInfo.js";import{ZERO as T,union as x}from"./depthRange.js";import{depthRangeFromScene as R}from"./depthRangeUtils.js";import{createEmptyDepthTexture as b}from"./glUtil3D.js";import w from"./HighlightHelper.js";import{OffscreenRendering as C}from"./OffscreenRendering.js";import{RenderContext as P}from"./RenderContext.js";import{splitRenderGeometryChangeSetByMaterial as y}from"./rendererUtils.js";import{RenderPluginManager as H}from"./RenderPluginManager.js";import{ShadowAccumulator as S}from"./ShadowAccumulator.js";import{ShadowHighlightHelper as D}from"./ShadowHighlightHelper.js";import M from"./ShadowMap.js";import E from"./SliceHelper.js";import{SmaaRenderPass as v}from"./SmaaRenderPass.js";import{SSAOHelper as O}from"./SSAOHelper.js";import{EdgeView as I}from"./edgeRendering/EdgeView.js";import{SceneLighting as q}from"../lighting/SceneLighting.js";import{MergedRenderer as A}from"../materials/renderers/MergedRenderer.js";import{HighlightShadowMapSlot as j,DefaultSnapshotSlot as L}from"../shaders/ShadowHighlightTechnique.js";import{RendererPerformanceInfo as G}from"../statistics/RendererPerformanceInfo.js";import{startMeasurement as V}from"../../../webgl/Measurement.js";class F{constructor(r,t,s,n,i,a,d,o,l){this._materialRep=r,this._shaderTechniqueRepository=s,this._rctx=n,this._compositingHelper=i,this._magnifierHelper=a,this.requestRender=d,this._stage=l,this._materialRenderers=new Map,this._hasHighlights=!1,this._hasOccludees=!1,this._hasWater=!1,this._hasOverlayWater=!1,this._content=new Map,this._isRendering=!1,this._fallbackDepthStencilTexture=null,this.performanceInfo=new G,this._antialiasing=1,this._oitEnabled=!1,this._multipassTerrain=!0,this._opaqueTerrain=!0,this._lighting=new q,this._enableNewAtmosphere=!1,this._handles=new e,this.renderHiddenTransparentEdges=()=>{},this._smaaPass=new v(this._rctx,s),this._oitEnabled=this._hasOITSupport,this._enableNewAtmosphere=g(),this.requestRender(),this._offscreenRendering=new C(this._rctx,this._compositingHelper),this._sliceHelper=new E,this._shadowMap=new M(this._rctx,l.viewingMode,2),this._ssaoHelper=new O(s,this._rctx,(()=>this.requestRender())),this._highlightHelper=new w(s,this._rctx),this._shadowHighlightHelper=new D(this._rctx,l.viewingMode),this._shadowAccumulator=new S(this._rctx,s,l,((e,r)=>{this.renderPassManager.shadowCastingEnabled=!0,this._renderPlugins.prepareRender(e,r),this.renderPassManager.shadowCastingEnabled=this._shadowMap.enabled}),((e,r,t,s)=>{e.start(t,r,s),this.renderShadowCascades(4,e),t.setGLViewport(this._rctx),this.ensureCameraBindParameters(t)}),(()=>this.requestRender())),this._bindParameters={slot:null,camera:null,inverseViewport:_(),shadowMap:this._shadowMap,shadowMappingEnabled:this._shadowMap.enabled,ssaoHelper:this._ssaoHelper,ssaoEnabled:this._ssaoHelper.enabled,origin:null,screenToWorldRatio:null,screenToPCSRatio:null,slicePlane:this._sliceHelper.plane,highlightDepthTexture:null,hasOccludees:!1,linearDepthTexture:null,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,multipassGeometryEnabled:!1,cullAboveGround:!1,lastFrameColorTexture:null,reprojectionMat:null,ssrEnabled:!1,lighting:this._lighting,highlightColorTexture:null},this._renderContext=new P(this._rctx,this._offscreenRendering,this._lighting,this._shadowMap,this._ssaoHelper,this._sliceHelper),this._renderContext.multipassTerrainParams={camera:null,multipassTerrainEnabled:!1,cullAboveGround:!1,terrainLinearDepthTexture:null},this._renderContext.multipassGeometryParams={multipassGeometryEnabled:!1,geometryLinearDepthTexture:null},this._renderContext.ssrParams={camera:null,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMat:null,ssrEnabled:!1},this._renderPlugins=new H({renderContext:this._renderContext,shaderTechniqueRep:s,textureRep:t,materialRep:this._materialRep,requestRender:this.requestRender,schedule:o}),this.renderPassManager=new u(this._rctx,this._shaderTechniqueRepository),this._renderPlugins.add(this.renderPassManager.slots(),this.renderPassManager),this._handles.add([h(m,"EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES",(e=>{this.renderHiddenTransparentEdges=e?()=>this.renderEdges(1):()=>{},this.requestRender()})),h(this._stage,"camera",(()=>this.requestRender()),!0)])}get hasWater(){return this._hasWater||this._hasOverlayWater}get hasWaterReflection(){return this.hasWater&&this._waterReflectionEnabled}dispose(){this._handles.destroy(),this._smaaPass.disable(),this._materialRenderers.forEach((e=>e.dispose())),this._materialRenderers.clear(),this._edgeView=t(this._edgeView),this._offscreenRendering.dispose(),this._fallbackDepthStencilTexture=s(this._fallbackDepthStencilTexture),this._shadowMap.enabled=!1,this._shadowMap.dispose(),this._ssaoHelper.enabled=!1,this._ssaoHelper.dispose(),this._highlightHelper.dispose(),this._shadowHighlightHelper.dispose(),this._shadowAccumulator.dispose(),f.prune(),this._content.clear()}get updating(){return 1===this._antialiasing&&this._smaaPass.isLoadingResources||n(this._edgeView)&&this._edgeView.updating||this._shadowAccumulator.running||!this.isCameraFinal}ensureEdgeView(){return i(this._edgeView)&&(this._edgeView=new I({rctx:this._rctx,renderSR:this._stage.renderSR,techniqueRepository:this._shaderTechniqueRepository,setNeedsRender:()=>this.requestRender(),schedule:e=>this._stage.resourceController.schedule(e)}),this._handles.add(this._edgeView.watch("updating",(()=>this.requestRender()),!0)),this.requestRender()),this._edgeView}get edgeView(){return this._edgeView}get isCameraFinal(){return null===this._bindParameters.reprojectionMat||d(this._bindParameters.reprojectionMat,z)}get hasShadowsEnabled(){var e;return!(null==(e=this._shadowMap)||!e.enabled)}setRenderParameters(e){const{renderPassManager:r,_shadowMap:t,_ssaoHelper:s}=this;void 0!==e.screenSpaceReflectionsEnabled&&r.screenSpaceReflectionsEnabled!==e.screenSpaceReflectionsEnabled&&(r.screenSpaceReflectionsEnabled=e.screenSpaceReflectionsEnabled,this.requestRender()),void 0===e.shadowMap||t.enabled===e.shadowMap&&r.shadowCastingEnabled===e.shadowMap||(t.enabled=e.shadowMap,r.shadowCastingEnabled=e.shadowMap,this.requestRender()),void 0!==e.shadowMapMaxCascades&&t.maxCascades!==e.shadowMapMaxCascades&&(t.maxCascades=e.shadowMapMaxCascades,this.requestRender()),void 0!==e.ssao&&s.enabled!==e.ssao&&(s.enabled=e.ssao,this.requestRender()),e.background&&this._offscreenRendering.background!==e.background&&(this._offscreenRendering.background=e.background,this.requestRender());const n=e.antialiasingEnabled?1:0;void 0!==e.antialiasingEnabled&&this._antialiasing!==n&&(this._antialiasing=n,this.requestRender()),void 0!==e.highQualityTransparency&&this._multipassTerrain!==e.highQualityTransparency&&(this._multipassTerrain=e.highQualityTransparency,this._oitEnabled=e.highQualityTransparency&&this._hasOITSupport,this.requestRender()),void 0!==e.defaultHighlightOptions&&(this._highlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._shadowHighlightHelper.setDefaultOptions(e.defaultHighlightOptions),this.requestRender()),void 0!==e.slicePlane&&this._sliceHelper.plane!==e.slicePlane&&(this._sliceHelper.plane=a(e.slicePlane),this.requestRender()),void 0!==e.waterReflectionEnabled&&this._waterReflectionEnabled!==e.waterReflectionEnabled&&(this._waterReflectionEnabled=e.waterReflectionEnabled,this.requestRender()),void 0!==e.opaqueTerrain&&this._opaqueTerrain!==e.opaqueTerrain&&(this._opaqueTerrain=e.opaqueTerrain,this.requestRender()),void 0!==e.hasOverlayWater&&this._hasOverlayWater!==e.hasOverlayWater&&(this._hasOverlayWater=e.hasOverlayWater,this.requestRender()),void 0!==e.shadowCastOptions&&this._shadowAccumulator.setOptions(e.shadowCastOptions)}get hasSlicePlane(){return!!this._sliceHelper.plane}get renderPlugins(){return this._renderPlugins}get _hasOITSupport(){return this._rctx.driverTest.floatBufferBlendWorking}modify(e){this._isRendering&&console.warn("Renderer.modify called while rendering");const{adds:t,removes:s,updates:n}=e;if(0===t.length&&0===s.length&&0===n.length)return;s.forAll((({id:e})=>this._content.delete(e))),t.forAll((e=>this._content.set(e.id,e)));const i=y(e);let a=!1;i.forEach(((e,r)=>{let t=this._materialRenderers.get(r);if(!t){if(!(e.adds.length>0))return;t=new A(this._rctx,this._materialRep,r),this._materialRenderers.set(r,t)}t.modify(e),t.isEmpty&&(a=!0)})),a&&this._materialRenderers.forEach(((e,r)=>{e.isEmpty&&(this._materialRenderers.delete(r),e.dispose())})),this._hasHighlights=r(this._materialRenderers,(e=>e.hasHighlights)),this._hasOccludees=r(this._materialRenderers,(e=>e.hasOccludees)),this._hasWater=r(this._materialRenderers,(e=>e.hasWater)),this.requestRender()}updateLogic(e){let r=!1;return this._materialRenderers.forEach((t=>r=t.updateLogic(e)||r)),r}updateLightSources(e,r,t){this._lighting.groundLightingFactor=r,this._lighting.globalFactor=t,this._lighting.set(e)}render(e,r,t,s){this._isRendering=!0,this.performanceInfo.prerender(this._rctx),this._bindParameters.lighting=this._lighting,this._renderContext.hasOccludees=this._hasOccludees,this._renderContext.transparencyPassType=3,this._bindParameters.transparencyPassType=3;const a=this._offscreenRendering;a.needLastFrameColorTexture=this.hasWaterReflection,a.advanceCurrentRenderTarget();const h=this._sliceHelper.plane;0===s&&(this._sliceHelper.plane=null),this._rctx.bindFramebuffer(e),r.setGLViewport(this._rctx),this.needsShadowCast&&(this.renderPassManager.shadowCastingEnabled=!0),this._renderPlugins.prepareRender(r,t),this.performanceInfo.advance(0);const d=this.computeDepthRange(r);this.renderShadowMap(e,r,this._lighting.lightingMainDirection,d),this.performanceInfo.advance(1),a.initializeFrame(r),this.ensureBindParameters(r),this.renderLinearDepth(),this.performanceInfo.advance(2),this.accumulateShadows(d,r,t),this.renderNormal(),this.performanceInfo.advance(3),this.ensureBindParametersSSR(),this._ssaoHelper.computeSSAO(r,a.linearDepthTexture,a.normalTexture),this.performanceInfo.advance(4),this._renderContext.pass=0,a.bindFramebuffer(),this.renderOpaqueGeometry(),this.performanceInfo.advance(5);const o=this._multipassTerrain&&!this._opaqueTerrain;this.renderTerrainLinearDepth(o),this.setMultipassFlags(o),this.setTerrainCulling(o),this.renderEdges(2),this.performanceInfo.advance(6),this.renderHiddenTransparentEdges(),this._oitEnabled?this.renderOrderIndependentTransparency((()=>this.renderTransparentGeometry()),!1):this.renderTransparentGeometry(),this.performanceInfo.advance(7),this.renderGeometryLinearDepth(o);const l={hudVisibility:!1,transparentTerrain:!1};l.hudVisibility=this.renderHUDVisibility(),o||this.renderInternalSlot(18),this.performanceInfo.advance(9),this.renderEdges(1,o),this.performanceInfo.advance(8),l.transparentTerrain=this.renderTransparentTerrain(),l.transparentTerrain&&l.hudVisibility&&(o?this.renderLineCallouts(0):a.compositeTransparentTerrainOntoHUDVisibility(),this.renderHUD(0,a.framebuffer),this.performanceInfo.advance(16)),this.performanceInfo.advance(10),this.setTerrainCulling(!1),l.transparentTerrain&&(a.compositeTransparentTerrainOntoMain(),o&&(this.renderEdges(2),this.performanceInfo.advance(6),this._oitEnabled?this.renderOrderIndependentTransparency((()=>this.renderTransparentGeometry()),!1):this.renderTransparentGeometry(),this.performanceInfo.advance(7),this.renderEdges(1),this.performanceInfo.advance(8))),o&&this.renderLineCallouts(1),this.setMultipassFlags(!1),this._shadowAccumulator.render(),a.renderToTargets((()=>{this.renderInternalSlot(7),this.renderSlot(13),this.renderSlot(14)}),a.currentColorTarget,a.mainDepth),this.performanceInfo.advance(11),this._renderPlugins.needsLaserlineWithContrastControl&&a.renderTmpAndCompositeToMain((()=>{this.renderSlot(15)}),2),this.performanceInfo.advance(12),this.renderOccluded(),this.performanceInfo.advance(13);const c=1===s&&this._magnifierHelper.enabled,p=c&&i(e)?this._offscreenRendering.getFramebuffer(this._offscreenRendering.tmpColor,this._offscreenRendering.tmpDepth):e;this._rctx.bindFramebuffer(p);const _=this._offscreenRendering.colorTexture;!this.renderAntiAliasing(this._antialiasing,_)&&n(_)&&this._compositingHelper.composite(_,0),this.performanceInfo.advance(14),this.renderHUD(1,p),this.performanceInfo.advance(17),this.renderHighlights(p,this._bindParameters),this.performanceInfo.advance(15),c&&this._magnifierHelper.render(this._rctx,this._bindParameters),p!==e&&(this._rctx.bindFramebuffer(e),this._compositingHelper.composite(this._offscreenRendering.tmpColorTexture,0)),this._renderContext.lastFrameCamera.copyFrom(this._renderContext.camera),this._sliceHelper.plane=h,this._isRendering=!1,this.onPostRender&&this.onPostRender(),this.performanceInfo.postrender()}readDepthPixels(e,r,t,s,n,i){const a=this._offscreenRendering.bindTarget(this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth);if(!this._needsLinearDepth){this.ensureBindParameters(e),this._renderContext.camera.setGLViewport(this._rctx),this._rctx.setClearColor(0,0,0,0);const r=17664;this._rctx.clearSafe(r),this.renderGeometryAndTransparentTerrainPass(2)}a.readPixels(r,t,s,n,6408,5121,i)}readAccumulatedShadow(e,r){return this._shadowAccumulator.readAccumulatedShadow(e,r)}setMultipassFlags(e){this._renderContext.multipassTerrainParams.multipassTerrainEnabled=this._bindParameters.multipassTerrainEnabled=e,this._renderContext.multipassGeometryParams.multipassGeometryEnabled=this._bindParameters.multipassGeometryEnabled=e}setTerrainCulling(e){this._renderContext.multipassTerrainParams.cullAboveGround=this._bindParameters.cullAboveGround=e}renderSlot(e){return this._renderContext.slot=e,this._renderPlugins.render()}renderEdges(e,r=!1){const t=this._edgeView;n(t)&&t.shouldRender()&&this._offscreenRendering.renderTmpAndCompositeToMain((()=>t.render(this._bindParameters,e)),1,r)}renderShadowMap(e,r,t,s){const n=this._shadowMap;n.enabled&&(n.start(r,t,s),this.needsShadowHighlight?(this.renderShadowCascades(7,this._shadowMap,(e=>n.takeCascadeSnapshotTo(e,j))),n.clear(),this.renderShadowCascades(6,this._shadowMap,(e=>{n.takeCascadeSnapshotTo(e,L),this.renderGeometryAndTransparentTerrainPass(7)}))):this.renderShadowCascades(4),n.finish(e),r.setGLViewport(this._rctx))}renderShadowCascades(e,r=this._shadowMap,t=(e=>{})){for(const s of r.getCascades())s.camera.setGLViewport(this._rctx),this.ensureCameraBindParameters(s.camera),this.renderGeometryAndTransparentTerrainPass(e),t(s)}get _needsLinearDepth(){return this._ssaoHelper.enabled||this._renderPlugins.needsLinearDepth||this._hasWater&&this._waterReflectionEnabled||this.needsShadowHighlight||this.needsShadowCast||this._enableNewAtmosphere}renderLinearDepth(){this._needsLinearDepth?this._offscreenRendering.renderToTargets((()=>this.renderGeometryAndTransparentTerrainPass(2)),this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.linearDepth),this._renderContext.ssrParams.linearDepthTexture=this._bindParameters.linearDepthTexture=this._offscreenRendering.linearDepthTexture}renderTerrainLinearDepth(e){if(e){const e=this._renderContext.pass;this._renderContext.pass=2,this._offscreenRendering.renderToTargets((()=>this.renderTransparentTerrain()),this._offscreenRendering.terrainLinearDepth,this._offscreenRendering.tmpDepth,[-1e10,-1e10,-1e10,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.terrainLinearDepth);this._renderContext.multipassTerrainParams.terrainLinearDepthTexture=this._bindParameters.terrainLinearDepthTexture=this._offscreenRendering.terrainLinearDepthTexture}renderGeometryLinearDepth(e){if(e){const e=this._renderContext.pass;this._offscreenRendering.renderToTargets((()=>this.renderGeometryPass(2)),this._offscreenRendering.geometryLinearDepth,this._offscreenRendering.tmpDepth,[1,1,1,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.geometryLinearDepth);this._renderContext.multipassGeometryParams.geometryLinearDepthTexture=this._bindParameters.geometryLinearDepthTexture=this._offscreenRendering.geometryLinearDepthTexture}get needsNormal(){return this._ssaoHelper.enabled}renderNormal(){this.needsNormal?this._offscreenRendering.renderToTargets((()=>{this.renderGeometryAndTransparentTerrainPass(3)}),this._offscreenRendering.normal,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.normal)}get needsDepthRange(){return this._shadowMap.enabled||this.needsShadowCast}computeDepthRange(e){if(!this.needsDepthRange)return T;const r=R(e,this._content,this._stage.layers);return x(r,this.renderPlugins.queryDepthRange(e)),r.near=Math.max(e.near,r.near),r.far=Math.min(e.far,r.far),r}renderGeometryAndTransparentTerrainPass(e){this._renderContext.pass=e,this.renderGeometryPass(e),this.renderTransparentTerrain()}renderGeometryPass(e){this._renderContext.pass=e,this.renderOpaqueGeometry(),this.renderTransparentGeometry()}renderOpaqueGeometry(){this.renderSlot(0),this.renderSlot(1),this.renderInternalSlot(2),this.renderSlot(3),this.renderSlot(12)}renderTransparentGeometry(){this.renderInternalSlot(4),this.renderSlot(5)}renderTransparentTerrain(){return this.renderSlot(6)}renderHUDVisibility(){let e=!1;return this._renderContext.offscreenRenderingHelper&&this._renderContext.offscreenRenderingHelper.renderHUDVisibility((()=>{this._bindParameters.hudVisibilityTexture=this._renderContext.offscreenRenderingHelper?this._renderContext.offscreenRenderingHelper.hudVisibilityTexture:null,e=this.renderInternalSlot(11)}),this._multipassTerrain&&!this._opaqueTerrain),e}renderLineCallouts(e){this._bindParameters.renderTransparentlyOccludedHUD=e,0===e?this._offscreenRendering.renderToTargets((()=>this.renderInternalSlot(18)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this.renderInternalSlot(18)}renderHUD(e,r){this._oitEnabled?(this.renderOrderIndependentTransparency((()=>this.renderHUDElements(e)),!0),this._rctx.bindFramebuffer(r),this._compositingHelper.composite(this._offscreenRendering.hudColorTexture,2)):0===e?this._offscreenRendering.renderToTargets((()=>this.renderHUDElements(0)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this.renderHUDElements(e)}renderHUDElements(e){this._bindParameters.renderTransparentlyOccludedHUD=e,this.renderInternalSlot(19),this.renderInternalSlot(16),this.renderInternalSlot(17)}get needsHighlight(){return this._hasHighlights||this._renderPlugins.needsHighlight}get needsShadowHighlight(){return this._shadowMap.enabled&&this._shadowHighlightHelper.isVisible&&this.needsHighlight}renderHighlights(e,r){if(!this.needsHighlight)return void this._offscreenRendering.disposeTarget(this._offscreenRendering.highlight);const t=this._highlightHelper,s=t.profilingCallback&&V(this._renderContext.rctx);this._renderContext.highlightDepthTexture=r.highlightDepthTexture;const i=this._offscreenRendering.renderToTargets((()=>{this.renderGeometryAndTransparentTerrainPass(5),this._rctx.clearSafe(256),this.renderHUDElements(2)}),this._offscreenRendering.highlight,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0);this._bindParameters.highlightColorTexture=i.colorTexture,this.needsShadowHighlight&&this._shadowHighlightHelper.render(r,e),t.render(this._renderContext.camera,i,e),n(s)&&t.profilingCallback&&s.stop((e=>{t.profilingCallback&&t.profilingCallback(e)}))}get needsShadowCast(){return this._shadowAccumulator.isAccumulating}accumulateShadows(e,r,t){this.needsShadowCast&&(this._shadowAccumulator.setAccumulationDependencies(this._offscreenRendering.linearDepthTexture,e,r,t),this._shadowAccumulator.accumulateFixedSamples(),this.renderPassManager.shadowCastingEnabled=this._shadowMap.enabled)}renderOrderIndependentTransparency(e,r){const t=t=>{this._renderContext.transparencyPassType=t,this._bindParameters.transparencyPassType=this._renderContext.transparencyPassType,this._offscreenRendering.renderOITPass((()=>e()),t,r)},s=this._renderContext.pass;this._renderContext.pass=1,t(1),this._renderContext.pass=0,t(0),t(2),this._offscreenRendering.compositeTransparentOntoOpaque(r),this._renderContext.transparencyPassType=3,this._bindParameters.transparencyPassType=this._renderContext.transparencyPassType,this._renderContext.pass=s}renderOccluded(){let e=0;this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&8===t.renderOccluded&&(e|=t.renderOccluded,U.push(t))}));const r=this._offscreenRendering,t=(t,s,n,i,a)=>{0!=(e&s)&&(r.renderToTargets(n,r.tmpColor,r.mainDepth,[0,0,0,0],i,a),r.compositeOccludedOntoMain(t))};0!==U.length&&(this.renderInternalSlot(9,U),t(.5,8,(()=>this.renderInternalSlot(10,U)),!1,!1),U.length=0),this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&(4===t.renderOccluded||2===t.renderOccluded||16===t.renderOccluded)&&(e|=t.renderOccluded,k.push(t))}));const s=this._renderPlugins.renderOccludedFlags;if(e|=s,!e)return;const n=e=>{this._renderContext.renderOccludedMask=e,s>1&&this.renderSlot(8),this.renderInternalSlot(2,k),this.renderInternalSlot(4,k),this.renderInternalSlot(7,k),this._renderContext.resetRenderOccludedMask()};this._renderContext.pass=0,t(.5,4,(()=>n(4)),!0,2),t(.5,2,(()=>n(2)),!0,2),t(1,16,(()=>n(16)),!0,2),k.length=0}renderAntiAliasing(e,r){if(1===e){if(this._smaaPass.loadResources((()=>this.requestRender())),this._smaaPass.enable()&&n(r))return this._smaaPass.render(r),!0}else this._smaaPass.disable();return!1}ensureCameraBindParameters(e){this._renderContext.camera=e,this._bindParameters.camera=this._renderContext.camera,this._bindParameters.inverseViewport[0]=1/this._renderContext.camera.fullViewport[2],this._bindParameters.inverseViewport[1]=1/this._renderContext.camera.fullViewport[3]}ensureBindParameters(e){var r;this.ensureCameraBindParameters(e);const t=this._renderContext.offscreenRenderingHelper;this._bindParameters.shadowMap=this._renderContext.shadowMap,this._bindParameters.shadowMappingEnabled=this._renderContext.shadowMap.enabled,this._bindParameters.ssaoHelper=this._renderContext.ssaoHelper,this._bindParameters.ssaoEnabled=this._renderContext.ssaoHelper.enabled,this._bindParameters.slicePlane=this._renderContext.sliceHelper.plane,this._bindParameters.hasOccludees=this._renderContext.hasOccludees,this._renderContext.multipassTerrainParams.camera=this._renderContext.camera,this._bindParameters.hudVisibilityTexture=t.hudVisibilityTexture,this._bindParameters.highlightDepthTexture=null!=(r=t.depthTexture)?r:this.getFallbackDepthTexture()}ensureBindParametersSSR(){this.hasWaterReflection?(this._renderContext.lastFrameCamera.equals(this._renderContext.camera)?this._renderContext.ssrParams.reprojectionMat=this._bindParameters.reprojectionMat=z:(o(W,this._renderContext.lastFrameCamera.viewMatrix,this._bindParameters.origin?this._bindParameters.origin:[0,0,0]),o(B,this._renderContext.camera.viewMatrix,this._bindParameters.origin?this._bindParameters.origin:[0,0,0]),l(B,B),l(N,this._renderContext.camera.projectionMatrix),c(Q,B,N),c(Q,W,Q),c(Q,this._renderContext.lastFrameCamera.projectionMatrix,Q),this._renderContext.ssrParams.reprojectionMat=this._bindParameters.reprojectionMat=Q),this._renderContext.ssrParams.camera=this._renderContext.camera,this._renderContext.ssrParams.lastFrameColorTexture=this._bindParameters.lastFrameColorTexture=this._offscreenRendering.lastFrameColorTexture):this._renderContext.ssrParams.lastFrameColorTexture=this._bindParameters.lastFrameColorTexture=null,this._renderContext.ssrParams.ssrEnabled=this._bindParameters.ssrEnabled=this.hasWaterReflection}renderInternalSlot(e,r){let t=!1;return this._bindParameters.slot=e,n(r)?r.forEach((r=>{if(!r.shouldRender(this._renderContext))return;const s=this._materialRenderers.get(r);n(s)&&(t=s.render(e,this._renderContext.pass,this._bindParameters)||t)})):this._materialRenderers.forEach(((r,s)=>{s.shouldRender(this._renderContext)&&(t=r.render(e,this._renderContext.pass,this._bindParameters)||t)})),t}getFallbackDepthTexture(){return this._fallbackDepthStencilTexture||(this._fallbackDepthStencilTexture=b(this._rctx)),this._fallbackDepthStencilTexture}get gpuMemoryUsage(){var e,r,t,s,n,i,a,h,d,o;return{offscreen:null!=(e=null==(r=this._offscreenRendering)?void 0:r.gpuMemoryUsage)?e:0,highlights:(null!=(t=null==(s=this._highlightHelper)?void 0:s.gpuMemoryUsage)?t:0)+(null!=(n=null==(i=this._shadowHighlightHelper)?void 0:i.gpuMemoryUsage)?n:0),shadows:null!=(a=null==(h=this._shadowMap)?void 0:h.gpuMemoryUsage)?a:0,ssao:null!=(d=null==(o=this._ssaoHelper)?void 0:o.gpuMemoryUsage)?d:0}}get test(){const e=this;return{offscreen:this._offscreenRendering,shadowMap:this._shadowMap,ssao:this._ssaoHelper,highlight:this._highlightHelper,lighting:this._lighting,materialRenderers:this._materialRenderers,shadowAccumulator:this._shadowAccumulator,enableNewAtmosphere:e=>{this._enableNewAtmosphere=e},getFramebufferTexture:r=>{var t;switch(r){case 0:return e._offscreenRendering.colorTexture;case 1:return e._offscreenRendering.linearDepthTexture;case 2:return e._offscreenRendering.normalTexture;case 3:return null==(t=e._shadowMap)?void 0:t.test.depthTexture;case 4:return e._offscreenRendering.hudVisibilityTexture;case 5:return e._offscreenRendering.highlightTexture}}}}}const k=[],U=[],W=p(),N=p(),B=p(),Q=p(),z=p();export{F as Renderer};
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import r from"../../../../core/Accessor.js";import t from"../../../../core/Handles.js";import{someMap as s}from"../../../../core/MapUtils.js";import{destroyMaybe as n,disposeMaybe as i,isSome as a,isNone as h,unwrap as o}from"../../../../core/maybe.js";import{init as d}from"../../../../core/watchUtils.js";import{property as l}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as c,t as _,b as m,m as g}from"../../../../chunks/mat4.js";import{I as u,c as f}from"../../../../chunks/mat4f64.js";import{a as T}from"../../../../chunks/vec2f64.js";import{enableNewAtmosphere as x}from"../../../../support/featureFlags.js";import R from"../../support/debugFlags.js";import{RenderPassManager as b}from"../core/renderPasses/RenderPassManager.js";import{BoundingInfo as w}from"./BoundingInfo.js";import{ZERO as C,union as P}from"./depthRange.js";import{depthRangeFromScene as y}from"./depthRangeUtils.js";import{createEmptyDepthTexture as H}from"./glUtil3D.js";import S from"./HighlightHelper.js";import{OffscreenRendering as M}from"./OffscreenRendering.js";import{RenderContext as D}from"./RenderContext.js";import{splitRenderGeometryChangeSetByMaterial as E}from"./rendererUtils.js";import{RenderPluginManager as v}from"./RenderPluginManager.js";import{ShadowAccumulator as O}from"./ShadowAccumulator.js";import{ShadowHighlightHelper as I}from"./ShadowHighlightHelper.js";import j from"./ShadowMap.js";import A from"./SliceHelper.js";import{SmaaRenderPass as q}from"./SmaaRenderPass.js";import{SSAOHelper as G}from"./SSAOHelper.js";import{EdgeView as L}from"./edgeRendering/EdgeView.js";import{SceneLighting as V}from"../lighting/SceneLighting.js";import{MergedRenderer as F}from"../materials/renderers/MergedRenderer.js";import{HighlightShadowMapSlot as k,DefaultSnapshotSlot as U}from"../shaders/ShadowHighlightTechnique.js";import{RendererPerformanceInfo as W}from"../statistics/RendererPerformanceInfo.js";import{startMeasurement as N}from"../../../webgl/Measurement.js";let B=class extends r{constructor(e,r,s,n,i,a,h,o,l){super({}),this._materialRepository=e,this._shaderTechniqueRepository=s,this._rctx=n,this._compositingHelper=i,this._magnifierHelper=a,this._requestRender=h,this._stage=l,this._materialRenderers=new Map,this._hasHighlights=!1,this._hasOccludees=!1,this._hasWater=!1,this._hasOverlayWater=!1,this._content=new Map,this._isRendering=!1,this._fallbackDepthStencilTexture=null,this.performanceInfo=new W,this._antialiasing=1,this._oitEnabled=!1,this._multipassTerrain=!0,this._opaqueTerrain=!0,this._lighting=new V,this._enableNewAtmosphere=!1,this._handles=new t,this.renderHiddenTransparentEdges=()=>{},this._smaaPass=new q(this._rctx,s),this._oitEnabled=this._hasOITSupport,this._enableNewAtmosphere=x(),this._requestRender(),this._offscreenRendering=new M(this._rctx,this._compositingHelper),this._sliceHelper=new A,this._shadowMap=new j(this._rctx,l.viewingMode,2),this._ssaoHelper=new G(s,this._rctx,(()=>this._requestRender())),this._highlightHelper=new S(s,this._rctx),this._shadowHighlightHelper=new I(this._rctx,l.viewingMode),this._shadowAccumulator=new O(this._rctx,s,l,((e,r)=>{this.renderPassManager.shadowCastingEnabled=!0,this._renderPlugins.prepareRender(e,r),this.renderPassManager.shadowCastingEnabled=this._shadowMap.enabled}),((e,r,t,s)=>{e.start(t,r,s),this.renderShadowCascades(4,e),t.setGLViewport(this._rctx),this.ensureCameraBindParameters(t)}),(()=>this._requestRender())),this._bindParameters={slot:null,camera:null,inverseViewport:T(),shadowMap:this._shadowMap,shadowMappingEnabled:this._shadowMap.enabled,ssaoHelper:this._ssaoHelper,ssaoEnabled:this._ssaoHelper.enabled,origin:null,screenToWorldRatio:null,screenToPCSRatio:null,slicePlane:this._sliceHelper.plane,highlightDepthTexture:null,hasOccludees:!1,linearDepthTexture:null,terrainLinearDepthTexture:null,geometryLinearDepthTexture:null,multipassTerrainEnabled:!1,multipassGeometryEnabled:!1,cullAboveGround:!1,lastFrameColorTexture:null,reprojectionMatrix:u,ssrEnabled:!1,lighting:this._lighting,highlightColorTexture:null},this._renderContext=new D(this._rctx,this._offscreenRendering,this._lighting,this._shadowMap,this._ssaoHelper,this._sliceHelper),this._renderContext.multipassTerrainParams={camera:null,multipassTerrainEnabled:!1,cullAboveGround:!1,terrainLinearDepthTexture:null},this._renderContext.multipassGeometryParams={multipassGeometryEnabled:!1,geometryLinearDepthTexture:null},this._renderContext.ssrParams={camera:null,linearDepthTexture:null,lastFrameColorTexture:null,reprojectionMatrix:u,ssrEnabled:!1},this._renderPlugins=new v({renderContext:this._renderContext,shaderTechniqueRep:s,textureRep:r,materialRep:this._materialRepository,requestRender:this._requestRender,schedule:o}),this.renderPassManager=new b(this._rctx,this._shaderTechniqueRepository),this._renderPlugins.add(this.renderPassManager.slots(),this.renderPassManager),this._handles.add([d(R,"EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES",(e=>{this.renderHiddenTransparentEdges=e?()=>this.renderEdges(1):()=>{},this._requestRender()})),d(this._stage,"camera",(()=>this._requestRender()),!0)])}get hasWater(){return this._hasWater||this._hasOverlayWater}get hasWaterReflection(){return this.hasWater&&this._waterReflectionEnabled}normalizeCtorArgs(){return{}}dispose(){this._handles.destroy(),this._smaaPass.dispose(),this._materialRenderers.forEach((e=>e.dispose())),this._materialRenderers.clear(),this._edgeView=n(this._edgeView),this._offscreenRendering.dispose(),this._fallbackDepthStencilTexture=i(this._fallbackDepthStencilTexture),this._shadowMap.enabled=!1,this._shadowMap.dispose(),this._ssaoHelper.enabled=!1,this._ssaoHelper.dispose(),this._highlightHelper.dispose(),this._shadowHighlightHelper.dispose(),this._shadowAccumulator.dispose(),w.prune(),this._content.clear()}get updating(){return 1===this._antialiasing&&this._smaaPass.updating||a(this._edgeView)&&this._edgeView.updating||this._shadowAccumulator.running||!this.isCameraFinal}ensureEdgeView(){return h(this._edgeView)&&(this._edgeView=new L({rctx:this._rctx,renderSR:this._stage.renderSR,techniqueRepository:this._shaderTechniqueRepository,setNeedsRender:()=>this._requestRender(),schedule:e=>this._stage.resourceController.schedule(e)}),this._handles.add(this._edgeView.watch("updating",(()=>this._requestRender()),!0)),this._requestRender()),this._edgeView}get edgeView(){return this._edgeView}get isCameraFinal(){return null===this._bindParameters.reprojectionMatrix||c(this._bindParameters.reprojectionMatrix,u)}set _reprojectionMatrix(e){c(this._bindParameters.reprojectionMatrix,e)||(this._bindParameters.reprojectionMatrix=e,this.notifyChange("isCameraFinal"))}get hasShadowsEnabled(){var e;return!(null==(e=this._shadowMap)||!e.enabled)}setRenderParameters(e){const{renderPassManager:r,_shadowMap:t,_ssaoHelper:s}=this;void 0!==e.screenSpaceReflectionsEnabled&&r.screenSpaceReflectionsEnabled!==e.screenSpaceReflectionsEnabled&&(r.screenSpaceReflectionsEnabled=e.screenSpaceReflectionsEnabled,this._requestRender()),void 0===e.shadowMap||t.enabled===e.shadowMap&&r.shadowCastingEnabled===e.shadowMap||(t.enabled=e.shadowMap,r.shadowCastingEnabled=e.shadowMap,this._requestRender()),void 0!==e.shadowMapMaxCascades&&t.maxCascades!==e.shadowMapMaxCascades&&(t.maxCascades=e.shadowMapMaxCascades,this._requestRender()),void 0!==e.ssao&&s.enabled!==e.ssao&&(s.enabled=e.ssao,this._requestRender()),e.background&&this._offscreenRendering.background!==e.background&&(this._offscreenRendering.background=e.background,this._requestRender());const n=e.antialiasingEnabled?1:0;void 0!==e.antialiasingEnabled&&this._antialiasing!==n&&(this._antialiasing=n,this._requestRender()),void 0!==e.highQualityTransparency&&this._multipassTerrain!==e.highQualityTransparency&&(this._multipassTerrain=e.highQualityTransparency,this._oitEnabled=e.highQualityTransparency&&this._hasOITSupport,this._requestRender()),void 0!==e.defaultHighlightOptions&&(this._highlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._shadowHighlightHelper.setDefaultOptions(e.defaultHighlightOptions),this._requestRender()),void 0!==e.slicePlane&&this._sliceHelper.plane!==e.slicePlane&&(this._sliceHelper.plane=o(e.slicePlane),this._requestRender()),void 0!==e.waterReflectionEnabled&&this._waterReflectionEnabled!==e.waterReflectionEnabled&&(this._waterReflectionEnabled=e.waterReflectionEnabled,this._requestRender()),void 0!==e.opaqueTerrain&&this._opaqueTerrain!==e.opaqueTerrain&&(this._opaqueTerrain=e.opaqueTerrain,this._requestRender()),void 0!==e.hasOverlayWater&&this._hasOverlayWater!==e.hasOverlayWater&&(this._hasOverlayWater=e.hasOverlayWater,this._requestRender()),void 0!==e.shadowCastOptions&&this._shadowAccumulator.setOptions(e.shadowCastOptions)}get hasSlicePlane(){return!!this._sliceHelper.plane}get renderPlugins(){return this._renderPlugins}get _hasOITSupport(){return this._rctx.driverTest.floatBufferBlendWorking}modify(e){this._isRendering&&console.warn("Renderer.modify called while rendering");const{adds:r,removes:t,updates:n}=e;if(0===r.length&&0===t.length&&0===n.length)return;t.forAll((({id:e})=>this._content.delete(e))),r.forAll((e=>this._content.set(e.id,e)));const i=E(e);let a=!1;i.forEach(((e,r)=>{let t=this._materialRenderers.get(r);if(!t){if(!(e.adds.length>0))return;t=new F(this._rctx,this._materialRepository,r),this._materialRenderers.set(r,t)}t.modify(e),t.isEmpty&&(a=!0)})),a&&this._materialRenderers.forEach(((e,r)=>{e.isEmpty&&(this._materialRenderers.delete(r),e.dispose())})),this._hasHighlights=s(this._materialRenderers,(e=>e.hasHighlights)),this._hasOccludees=s(this._materialRenderers,(e=>e.hasOccludees)),this._hasWater=s(this._materialRenderers,(e=>e.hasWater)),this._requestRender()}updateLogic(e){let r=!1;return this._materialRenderers.forEach((t=>r=t.updateLogic(e)||r)),r}updateLightSources(e,r,t){this._lighting.groundLightingFactor=r,this._lighting.globalFactor=t,this._lighting.set(e)}render(e,r,t,s){this._isRendering=!0,this.performanceInfo.prerender(this._rctx),this._bindParameters.lighting=this._lighting,this._renderContext.hasOccludees=this._hasOccludees,this._renderContext.transparencyPassType=3,this._bindParameters.transparencyPassType=3;const n=this._offscreenRendering;n.needLastFrameColorTexture=this.hasWaterReflection,n.advanceCurrentRenderTarget();const i=this._sliceHelper.plane;0===s&&(this._sliceHelper.plane=null),this._rctx.bindFramebuffer(e),r.setGLViewport(this._rctx),this.needsShadowCast&&(this.renderPassManager.shadowCastingEnabled=!0),this._renderPlugins.prepareRender(r,t),this.performanceInfo.advance(0);const o=this.computeDepthRange(r);this.renderShadowMap(e,r,this._lighting.lightingMainDirection,o),this.performanceInfo.advance(1),n.initializeFrame(r),this.ensureBindParameters(r),this.renderLinearDepth(),this.performanceInfo.advance(2),this.accumulateShadows(o,r,t),this.renderNormal(),this.performanceInfo.advance(3),this.ensureBindParametersSSR(),this._ssaoHelper.computeSSAO(r,n.linearDepthTexture,n.normalTexture),this.performanceInfo.advance(4),this._renderContext.pass=0,n.bindFramebuffer(),this.renderOpaqueGeometry(),this.performanceInfo.advance(5);const d=this._multipassTerrain&&!this._opaqueTerrain;this.renderTerrainLinearDepth(d),this.setMultipassFlags(d),this.setTerrainCulling(d),this.renderEdges(2),this.performanceInfo.advance(6),this.renderHiddenTransparentEdges(),this._oitEnabled?this.renderOrderIndependentTransparency((()=>this.renderTransparentGeometry()),!1):this.renderTransparentGeometry(),this.performanceInfo.advance(7),this.renderGeometryLinearDepth(d);const l={hudVisibility:!1,transparentTerrain:!1};l.hudVisibility=this.renderHUDVisibility(),d||this.renderInternalSlot(18),this.performanceInfo.advance(9),this.renderEdges(1,d),this.performanceInfo.advance(8),l.transparentTerrain=this.renderTransparentTerrain(),l.transparentTerrain&&l.hudVisibility&&(d?this.renderLineCallouts(0):n.compositeTransparentTerrainOntoHUDVisibility(),this.renderHUD(0,n.framebuffer),this.performanceInfo.advance(16)),this.performanceInfo.advance(10),this.setTerrainCulling(!1),l.transparentTerrain&&(n.compositeTransparentTerrainOntoMain(),d&&(this.renderEdges(2),this.performanceInfo.advance(6),this._oitEnabled?this.renderOrderIndependentTransparency((()=>this.renderTransparentGeometry()),!1):this.renderTransparentGeometry(),this.performanceInfo.advance(7),this.renderEdges(1),this.performanceInfo.advance(8))),d&&this.renderLineCallouts(1),this.setMultipassFlags(!1),this._shadowAccumulator.render(),n.renderToTargets((()=>{this.renderInternalSlot(7),this.renderSlot(13),this.renderSlot(14)}),n.currentColorTarget,n.mainDepth),this.performanceInfo.advance(11),this._renderPlugins.needsLaserlineWithContrastControl&&n.renderTmpAndCompositeToMain((()=>{this.renderSlot(15)}),2),this.performanceInfo.advance(12),this.renderOccluded(),this.performanceInfo.advance(13);const p=1===s&&this._magnifierHelper.enabled,c=p&&h(e)?this._offscreenRendering.getFramebuffer(this._offscreenRendering.tmpColor,this._offscreenRendering.tmpDepth):e;this._rctx.bindFramebuffer(c);const _=this._offscreenRendering.colorTexture;!this.renderAntiAliasing(this._antialiasing,_)&&a(_)&&this._compositingHelper.composite(_,0),this.performanceInfo.advance(14),this.renderHUD(1,c),this.performanceInfo.advance(17),this.renderHighlights(c,this._bindParameters),this.performanceInfo.advance(15),p&&this._magnifierHelper.render(this._rctx,this._bindParameters),c!==e&&(this._rctx.bindFramebuffer(e),this._compositingHelper.composite(this._offscreenRendering.tmpColorTexture,0)),this._renderContext.lastFrameCamera.copyFrom(this._renderContext.camera),this._sliceHelper.plane=i,this._isRendering=!1,this.onPostRender&&this.onPostRender(),this.performanceInfo.postrender()}readDepthPixels(e,r,t,s,n,i){const a=this._offscreenRendering.bindTarget(this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth);if(!this._needsLinearDepth){this.ensureBindParameters(e),this._renderContext.camera.setGLViewport(this._rctx),this._rctx.setClearColor(0,0,0,0);const r=17664;this._rctx.clearSafe(r),this.renderGeometryAndTransparentTerrainPass(2)}a.readPixels(r,t,s,n,6408,5121,i)}readAccumulatedShadow(e,r){return this._shadowAccumulator.readAccumulatedShadow(e,r)}setMultipassFlags(e){this._renderContext.multipassTerrainParams.multipassTerrainEnabled=this._bindParameters.multipassTerrainEnabled=e,this._renderContext.multipassGeometryParams.multipassGeometryEnabled=this._bindParameters.multipassGeometryEnabled=e}setTerrainCulling(e){this._renderContext.multipassTerrainParams.cullAboveGround=this._bindParameters.cullAboveGround=e}renderSlot(e){return this._renderContext.slot=e,this._renderPlugins.render()}renderEdges(e,r=!1){const t=this._edgeView;a(t)&&t.shouldRender()&&this._offscreenRendering.renderTmpAndCompositeToMain((()=>t.render(this._bindParameters,e)),1,r)}renderShadowMap(e,r,t,s){const n=this._shadowMap;n.enabled&&(n.start(r,t,s),this.needsShadowHighlight?(this.renderShadowCascades(7,this._shadowMap,(e=>n.takeCascadeSnapshotTo(e,k))),n.clear(),this.renderShadowCascades(6,this._shadowMap,(e=>{n.takeCascadeSnapshotTo(e,U),this.renderGeometryAndTransparentTerrainPass(7)}))):this.renderShadowCascades(4),n.finish(e),r.setGLViewport(this._rctx))}renderShadowCascades(e,r=this._shadowMap,t=(e=>{})){for(const s of r.getCascades())s.camera.setGLViewport(this._rctx),this.ensureCameraBindParameters(s.camera),this.renderGeometryAndTransparentTerrainPass(e),t(s)}get _needsLinearDepth(){return this._ssaoHelper.enabled||this._renderPlugins.needsLinearDepth||this._hasWater&&this._waterReflectionEnabled||this.needsShadowHighlight||this.needsShadowCast||this._enableNewAtmosphere}renderLinearDepth(){this._needsLinearDepth?this._offscreenRendering.renderToTargets((()=>this.renderGeometryAndTransparentTerrainPass(2)),this._offscreenRendering.linearDepth,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.linearDepth),this._renderContext.ssrParams.linearDepthTexture=this._bindParameters.linearDepthTexture=this._offscreenRendering.linearDepthTexture}renderTerrainLinearDepth(e){if(e){const e=this._renderContext.pass;this._renderContext.pass=2,this._offscreenRendering.renderToTargets((()=>this.renderTransparentTerrain()),this._offscreenRendering.terrainLinearDepth,this._offscreenRendering.tmpDepth,[-1e10,-1e10,-1e10,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.terrainLinearDepth);this._renderContext.multipassTerrainParams.terrainLinearDepthTexture=this._bindParameters.terrainLinearDepthTexture=this._offscreenRendering.terrainLinearDepthTexture}renderGeometryLinearDepth(e){if(e){const e=this._renderContext.pass;this._offscreenRendering.renderToTargets((()=>this.renderGeometryPass(2)),this._offscreenRendering.geometryLinearDepth,this._offscreenRendering.tmpDepth,[1,1,1,1],!0,!0),this._renderContext.pass=e}else this._offscreenRendering.disposeTarget(this._offscreenRendering.geometryLinearDepth);this._renderContext.multipassGeometryParams.geometryLinearDepthTexture=this._bindParameters.geometryLinearDepthTexture=this._offscreenRendering.geometryLinearDepthTexture}get needsNormal(){return this._ssaoHelper.enabled}renderNormal(){this.needsNormal?this._offscreenRendering.renderToTargets((()=>{this.renderGeometryAndTransparentTerrainPass(3)}),this._offscreenRendering.normal,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0):this._offscreenRendering.disposeTarget(this._offscreenRendering.normal)}get needsDepthRange(){return this._shadowMap.enabled||this.needsShadowCast}computeDepthRange(e){if(!this.needsDepthRange)return C;const r=y(e,this._content,this._stage.layers);return P(r,this.renderPlugins.queryDepthRange(e)),r.near=Math.max(e.near,r.near),r.far=Math.min(e.far,r.far),r}renderGeometryAndTransparentTerrainPass(e){this._renderContext.pass=e,this.renderGeometryPass(e),this.renderTransparentTerrain()}renderGeometryPass(e){this._renderContext.pass=e,this.renderOpaqueGeometry(),this.renderTransparentGeometry()}renderOpaqueGeometry(){this.renderSlot(0),this.renderSlot(1),this.renderInternalSlot(2),this.renderSlot(3),this.renderSlot(12)}renderTransparentGeometry(){this.renderInternalSlot(4),this.renderSlot(5)}renderTransparentTerrain(){return this.renderSlot(6)}renderHUDVisibility(){let e=!1;return this._renderContext.offscreenRenderingHelper&&this._renderContext.offscreenRenderingHelper.renderHUDVisibility((()=>{this._bindParameters.hudVisibilityTexture=this._renderContext.offscreenRenderingHelper?this._renderContext.offscreenRenderingHelper.hudVisibilityTexture:null,e=this.renderInternalSlot(11)}),this._multipassTerrain&&!this._opaqueTerrain),e}renderLineCallouts(e){this._bindParameters.renderTransparentlyOccludedHUD=e,0===e?this._offscreenRendering.renderToTargets((()=>this.renderInternalSlot(18)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this.renderInternalSlot(18)}renderHUD(e,r){this._oitEnabled?(this.renderOrderIndependentTransparency((()=>this.renderHUDElements(e)),!0),this._rctx.bindFramebuffer(r),this._compositingHelper.composite(this._offscreenRendering.hudColorTexture,2)):0===e?this._offscreenRendering.renderToTargets((()=>this.renderHUDElements(0)),this._offscreenRendering.currentColorTarget,this._offscreenRendering.tmpDepth,void 0,!0,!0):this.renderHUDElements(e)}renderHUDElements(e){this._bindParameters.renderTransparentlyOccludedHUD=e,this.renderInternalSlot(19),this.renderInternalSlot(16),this.renderInternalSlot(17)}get needsHighlight(){return this._hasHighlights||this._renderPlugins.needsHighlight}get needsShadowHighlight(){return this._shadowMap.enabled&&this._shadowHighlightHelper.isVisible&&this.needsHighlight}renderHighlights(e,r){if(!this.needsHighlight)return void this._offscreenRendering.disposeTarget(this._offscreenRendering.highlight);const t=this._highlightHelper,s=t.profilingCallback&&N(this._renderContext.rctx);this._renderContext.highlightDepthTexture=r.highlightDepthTexture;const n=this._offscreenRendering.renderToTargets((()=>{this.renderGeometryAndTransparentTerrainPass(5),this._rctx.clearSafe(256),this.renderHUDElements(2)}),this._offscreenRendering.highlight,this._offscreenRendering.tmpDepth,[0,0,0,0],!0,!0);this._bindParameters.highlightColorTexture=n.colorTexture,this.needsShadowHighlight&&this._shadowHighlightHelper.render(r,e),t.render(this._renderContext.camera,n,e),a(s)&&t.profilingCallback&&s.stop((e=>{t.profilingCallback&&t.profilingCallback(e)}))}get needsShadowCast(){return this._shadowAccumulator.isAccumulating}accumulateShadows(e,r,t){this.needsShadowCast&&(this._shadowAccumulator.setAccumulationDependencies(this._offscreenRendering.linearDepthTexture,e,r,t),this._shadowAccumulator.accumulateFixedSamples(),this.renderPassManager.shadowCastingEnabled=this._shadowMap.enabled)}renderOrderIndependentTransparency(e,r){const t=t=>{this._renderContext.transparencyPassType=t,this._bindParameters.transparencyPassType=this._renderContext.transparencyPassType,this._offscreenRendering.renderOITPass((()=>e()),t,r)},s=this._renderContext.pass;this._renderContext.pass=1,t(1),this._renderContext.pass=0,t(0),t(2),this._offscreenRendering.compositeTransparentOntoOpaque(r),this._renderContext.transparencyPassType=3,this._bindParameters.transparencyPassType=this._renderContext.transparencyPassType,this._renderContext.pass=s}renderOccluded(){let e=0;this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&8===t.renderOccluded&&(e|=t.renderOccluded,z.push(t))}));const r=this._offscreenRendering,t=(t,s,n,i,a)=>{0!=(e&s)&&(r.renderToTargets(n,r.tmpColor,r.mainDepth,[0,0,0,0],i,a),r.compositeOccludedOntoMain(t))};0!==z.length&&(this.renderInternalSlot(9,z),t(.5,8,(()=>this.renderInternalSlot(10,z)),!1,!1),z.length=0),this._materialRenderers.forEach(((r,t)=>{t&&t.isVisible()&&(4===t.renderOccluded||2===t.renderOccluded||16===t.renderOccluded)&&(e|=t.renderOccluded,Q.push(t))}));const s=this._renderPlugins.renderOccludedFlags;if(e|=s,!e)return;const n=e=>{this._renderContext.renderOccludedMask=e,s>1&&this.renderSlot(8),this.renderInternalSlot(2,Q),this.renderInternalSlot(4,Q),this.renderInternalSlot(7,Q),this._renderContext.resetRenderOccludedMask()};this._renderContext.pass=0,t(.5,4,(()=>n(4)),!0,2),t(.5,2,(()=>n(2)),!0,2),t(1,16,(()=>n(16)),!0,2),Q.length=0}renderAntiAliasing(e,r){if(1===e){if(this._smaaPass.enable((()=>this._requestRender()))&&a(r))return this._smaaPass.render(r),!0}else this._smaaPass.disable();return!1}ensureCameraBindParameters(e){this._renderContext.camera=e,this._bindParameters.camera=this._renderContext.camera,this._bindParameters.inverseViewport[0]=1/this._renderContext.camera.fullViewport[2],this._bindParameters.inverseViewport[1]=1/this._renderContext.camera.fullViewport[3]}ensureBindParameters(e){var r;this.ensureCameraBindParameters(e);const t=this._renderContext.offscreenRenderingHelper;this._bindParameters.shadowMap=this._renderContext.shadowMap,this._bindParameters.shadowMappingEnabled=this._renderContext.shadowMap.enabled,this._bindParameters.ssaoHelper=this._renderContext.ssaoHelper,this._bindParameters.ssaoEnabled=this._renderContext.ssaoHelper.enabled,this._bindParameters.slicePlane=this._renderContext.sliceHelper.plane,this._bindParameters.hasOccludees=this._renderContext.hasOccludees,this._renderContext.multipassTerrainParams.camera=this._renderContext.camera,this._bindParameters.hudVisibilityTexture=t.hudVisibilityTexture,this._bindParameters.highlightDepthTexture=null!=(r=t.depthTexture)?r:this.getFallbackDepthTexture()}ensureBindParametersSSR(){this.hasWaterReflection?(this._renderContext.lastFrameCamera.equals(this._renderContext.camera)?this._renderContext.ssrParams.reprojectionMatrix=this._reprojectionMatrix=u:(_(J,this._renderContext.lastFrameCamera.viewMatrix,this._bindParameters.origin?this._bindParameters.origin:[0,0,0]),_(X,this._renderContext.camera.viewMatrix,this._bindParameters.origin?this._bindParameters.origin:[0,0,0]),m(X,X),m(K,this._renderContext.camera.projectionMatrix),g(Y,X,K),g(Y,J,Y),g(Y,this._renderContext.lastFrameCamera.projectionMatrix,Y),this._renderContext.ssrParams.reprojectionMatrix=this._reprojectionMatrix=Y),this._renderContext.ssrParams.camera=this._renderContext.camera,this._renderContext.ssrParams.lastFrameColorTexture=this._bindParameters.lastFrameColorTexture=this._offscreenRendering.lastFrameColorTexture):this._renderContext.ssrParams.lastFrameColorTexture=this._bindParameters.lastFrameColorTexture=null,this._renderContext.ssrParams.ssrEnabled=this._bindParameters.ssrEnabled=this.hasWaterReflection}renderInternalSlot(e,r){let t=!1;return this._bindParameters.slot=e,a(r)?r.forEach((r=>{if(!r.shouldRender(this._renderContext))return;const s=this._materialRenderers.get(r);a(s)&&(t=s.render(e,this._renderContext.pass,this._bindParameters)||t)})):this._materialRenderers.forEach(((r,s)=>{s.shouldRender(this._renderContext)&&(t=r.render(e,this._renderContext.pass,this._bindParameters)||t)})),t}getFallbackDepthTexture(){return this._fallbackDepthStencilTexture||(this._fallbackDepthStencilTexture=H(this._rctx)),this._fallbackDepthStencilTexture}get gpuMemoryUsage(){var e,r,t,s,n,i,a,h,o,d;return{offscreen:null!=(e=null==(r=this._offscreenRendering)?void 0:r.gpuMemoryUsage)?e:0,highlights:(null!=(t=null==(s=this._highlightHelper)?void 0:s.gpuMemoryUsage)?t:0)+(null!=(n=null==(i=this._shadowHighlightHelper)?void 0:i.gpuMemoryUsage)?n:0),shadows:null!=(a=null==(h=this._shadowMap)?void 0:h.gpuMemoryUsage)?a:0,ssao:null!=(o=null==(d=this._ssaoHelper)?void 0:d.gpuMemoryUsage)?o:0}}get test(){const e=this;return{offscreen:this._offscreenRendering,shadowMap:this._shadowMap,ssao:this._ssaoHelper,highlight:this._highlightHelper,lighting:this._lighting,materialRenderers:this._materialRenderers,shadowAccumulator:this._shadowAccumulator,enableNewAtmosphere:e=>{this._enableNewAtmosphere=e},getFramebufferTexture:r=>{var t;switch(r){case 0:return e._offscreenRendering.colorTexture;case 1:return e._offscreenRendering.linearDepthTexture;case 2:return e._offscreenRendering.normalTexture;case 3:return null==(t=e._shadowMap)?void 0:t.test.depthTexture;case 4:return e._offscreenRendering.hudVisibilityTexture;case 5:return e._offscreenRendering.highlightTexture}}}}};e([l()],B.prototype,"_shadowAccumulator",void 0),e([l()],B.prototype,"_smaaPass",void 0),e([l()],B.prototype,"_antialiasing",void 0),e([l()],B.prototype,"_edgeView",void 0),e([l()],B.prototype,"updating",null),e([l()],B.prototype,"isCameraFinal",null),B=e([p("esri.views.3d.webgl-engine.lib.Renderer")],B);const Q=[],z=[],J=f(),K=f(),X=f(),Y=f();export{B as Renderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{equals as i}from"../../../../core/arrayUtils.js";import s from"../../../../core/Handles.js";import{smoothstep as r}from"../../../../core/mathUtils.js";import{isNone as o,disposeMaybe as a}from"../../../../core/maybe.js";import{react as n,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../../../core/accessorSupport/decorators/subclass.js";import{t as u,b as l}from"../../../../chunks/mat4.js";import{c as m}from"../../../../chunks/mat4f64.js";import{a as p}from"../../../../chunks/vec2f64.js";import{z as d,g}from"../../../../chunks/vec3.js";import{c as w}from"../../../../chunks/vec3f64.js";import{c as f}from"../../../../chunks/vec4f64.js";import"../../../webgl/BufferObject.js";import v from"../../../webgl/FramebufferObject.js";import"../../../webgl/checkWebGLError.js";import"../../../webgl/enums.js";import"../../../../chunks/builtins.js";import"../../../webgl/Texture.js";import"../../../webgl/VertexArrayObject.js";import b from"./Camera.js";import{ZERO as j}from"./depthRange.js";import{createQuadVAO as y}from"./glUtil3D.js";import{ShadowCastRenderer as S,shadowCastDisabledElevationThreshold as A,shadowCastDisableElevationMax as C,shadowCastDisableElevationMin as D}from"./ShadowCastRenderer.js";import R from"./ShadowMap.js";import{inverseProjectionInfo as x}from"./Util.js";import{s as F}from"../../../../chunks/ShadowCast.glsl.js";import{ShadowCastTechniqueConfiguration as T,ShadowCastTechnique as M}from"../shaders/ShadowCastTechnique.js";import{TaskPriority as P}from"../../../support/Scheduler.js";import{vertexCount as q}from"../../../webgl/Util.js";var E;let V=E=class extends t{constructor(e,t,i,r,a,c){super({}),this._rctx=e,this._stage=i,this._prepareForShadowMapPass=r,this._renderToShadowMap=a,this._requestRender=c,this._progress=0,this._sampleCount=0,this._cachedCamera=new b,this._contentCamera=new b,this._enabled=!1,this._cachedLightDirections=[],this._depthRange=j,this._previewing=!1,this._handles=new s,this._cameraForcedForScreenshot=!1,this._shadowMap=new R(e,i.viewingMode),this._shadowMap.enabled=!0,this._vao=y(e);const _={colorTarget:0,depthStencilTarget:0,width:0,height:0},u={target:3553,pixelFormat:6408,dataType:5121,samplingMode:9729,wrapMode:33071,width:0,height:0};this._fbo=new v(e,_,u),this._accumulationParams={camera:this._cachedCamera,linearDepthTexture:null,shadowMap:this._shadowMap,inverseView:m(),projInfo:f(),zScale:p()},this._accumulationRenderer=new S(t,e,this,c);const l=this._stage.resourceController.scheduler;this._handles.add(l.registerTask(P.SHADOW_ACCUMULATOR,this)),this._handles.add(n((()=>i.renderView),(e=>{this._handles.remove(E.renderViewHandleKey),o(e)||this._handles.add(e.events.on("force-camera-for-screenshot",(()=>this._cameraForcedForScreenshot=!0)),E.renderViewHandleKey)}),h))}normalizeCtorArgs(){return{}}get computedSamples(){return this._progress}get shadowCastTexture(){return this._fbo.colorTexture}get isAccumulating(){return this._isPreviewing||this._isRefining}get accumulationTechnique(){if(o(this._accumulationTechnique)){const e={rctx:this._rctx,viewingMode:this._stage.viewingMode},t=new T;t.pass=0,this._accumulationTechnique=new M(e,t)}return this._accumulationTechnique}get _isRefining(){return this._isActive&&!this._isDoneAccumulating&&!this._previewing}get _isPreviewing(){return this._isActive&&this._previewing}get _isActive(){return this._enabled&&this._sampleCount>0}get _canAccumulate(){return null!==this._accumulationParams.linearDepthTexture&&this._depthRange!==j&&this._opacityFromElevation>A}get _isDoneAccumulating(){return this._progress>=this._sampleCount}get _lightDirections(){return this._cachedLightDirections}set _lightDirections(e){const t=this._cachedLightDirections;if(i(t,e,d))return;const s=e.length;t.length=s,this._sampleCount=Math.min(F,s);for(let i=0;i<s;++i){const s=e[i],r=t[i]||w();g(r,s),t[i]=r}this._invalidate()}get _projInfo(){return this._accumulationParams.projInfo}get _zScale(){return this._accumulationParams.zScale}get _inverseView(){return this._accumulationParams.inverseView}get _opacityFromElevation(){return this._accumulationRenderer.opacityFromElevation}set _opacityFromElevation(e){this._accumulationRenderer.opacityFromElevation=e}get running(){return this._isRefining&&this._canAccumulate}runTask(e){for(this._prepareForShadowMapPass(this._cachedCamera,this._contentCamera);!e.done&&!this._isDoneAccumulating;)this._accumulateShadow(),e.madeProgress();this._requestRender()}accumulateFixedSamples(){if(!this.isAccumulating||!this._canAccumulate)return;(this._previewing||0===this._progress||this._cameraForcedForScreenshot)&&this._clear();const e=this._cameraForcedForScreenshot?this._sampleCount:Math.min(E.previewSamples,this._sampleCount-this._progress);for(let t=0;t<e;++t)this._accumulateShadow();this._cameraForcedForScreenshot=!1}render(){this._accumulationRenderer.render()}dispose(){this._stop(),this._handles.destroy(),this._accumulationRenderer=a(this._accumulationRenderer),this._shadowMap=a(this._shadowMap),this._fbo=a(this._fbo),this._vao=a(this._vao),this._accumulationTechnique=a(this._accumulationTechnique),this._cachedLightDirections.length=0,this._sampleCount=0}setOptions(e){void 0!==e.enabled&&this._setEnabled(e.enabled),void 0!==e.previewing&&this.setPreviewing(e.previewing),void 0!==e.lightDirections&&this.setLightDirections(e.lightDirections),this._accumulationRenderer.setOptions(e)}setPreviewing(e){this._previewing!==e&&(this._previewing=e,this._requestRenderIfEnabled())}setLightDirections(e){this._lightDirections=e}setAccumulationDependencies(e,t,i,s){this._accumulationParams.linearDepthTexture=e,this._depthRange=t,this._updateCamera(i),this._contentCamera=s}readAccumulatedShadow(e,t){if(!this._isActive||this._progress<1||e<0||e>this._fbo.width||t<0||t>this._fbo.height)return 0;const i=k;return this._fbo.readPixels(e,t,1,1,6408,5121,i),i[0]/this._progress}_start(){this._progress=0,this._enabled=!0}_stop(){this._enabled=!1}_invalidate(){this._progress=0,this._requestRenderIfEnabled()}_clear(){this._rctx.bindFramebuffer(this._fbo),this._rctx.setClearColor(0,0,0,0),this._rctx.clearSafe(16384),this._progress=0}_accumulateShadow(){const e=this._lightDirections[this._progress],t=this._cachedCamera;this._renderToShadowMap(this._shadowMap,e,t,this._depthRange),this._rctx.bindFramebuffer(this._fbo);const i=this.accumulationTechnique;this._rctx.useProgram(i.program),i.bindPipelineState(this._rctx),i.bindPass(this._accumulationParams),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(i.primitiveType,0,q(this._vao,"geometry")),this._progress++}_updateCamera(e){if(e.equals(this._cachedCamera))return;const{fullWidth:t,fullHeight:i,projectionMatrix:s,viewMatrix:o,center:a}=e;this._cachedCamera.copyFrom(e),this._fbo.resize(t,i),x(s,t,i,this._projInfo,this._zScale),u(this._inverseView,o,a),l(this._inverseView,this._inverseView),this._opacityFromElevation=1-r(D,C,e.relativeElevation)}_setEnabled(e){e!==this._enabled&&(e?this._start():this._stop())}_requestRenderIfEnabled(){this._enabled&&this._requestRender()}get test(){return{lightDirections:this._lightDirections,isDone:()=>this._isDoneAccumulating,isActive:()=>this._isActive}}};V.previewSamples=6,V.renderViewHandleKey="renderView",e([c()],V.prototype,"_progress",void 0),e([c()],V.prototype,"_sampleCount",void 0),e([c()],V.prototype,"_enabled",void 0),e([c()],V.prototype,"_depthRange",void 0),e([c()],V.prototype,"_previewing",void 0),e([c()],V.prototype,"_accumulationRenderer",void 0),e([c()],V.prototype,"_isRefining",null),e([c()],V.prototype,"_isActive",null),e([c()],V.prototype,"_canAccumulate",null),e([c()],V.prototype,"_isDoneAccumulating",null),e([c()],V.prototype,"_opacityFromElevation",null),e([c()],V.prototype,"running",null),V=E=e([_("esri.views.3d.webgl-engine.lib.ShadowAccumulator")],V);const k=new Uint8Array(4);export{V as ShadowAccumulator};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{disposeMaybe as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import i from"../../../../core/Accessor.js";import{disposeMaybe as t}from"../../../../core/maybe.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{g as o,c as r}from"../../../../chunks/vec4.js";import{f as n}from"../../../../chunks/vec4f64.js";import{createQuadVAO as h}from"./glUtil3D.js";import{ShadowCastTechniqueConfiguration as l,ShadowCastTechnique as u}from"../shaders/ShadowCastTechnique.js";import{vertexCount as _}from"../../../webgl/Util.js";const c=n(.01,0,.25,1),d=4e4,m=5e4,p=1/512;let v=class extends i{constructor(e,i,t,s){super({}),this._techniqueRepository=e,this._rctx=i,this._shadowAccumulator=t,this._requestRender=s,this._visualizationParams={shadowCastMap:this._shadowCastTexture,sampleScale:0,color:c,threshold:.5,bandSize:.1,opacityFromElevation:1},this._techniqueConfig=new l,this._enabled=!1,this._vao=h(i),this._techniqueConfig.pass=1,this._techniqueConfig.visualization=0}normalizeCtorArgs(){return{}}dispose(){this._stop(),this._vao=t(this._vao),this._techniqueRepository.release(this._technique),this._technique=null,this._shadowAccumulator=null}get visualizeShadowCastTechnique(){return this._technique=this._techniqueRepository.releaseAndAcquire(u,this._techniqueConfig,this._technique),this._technique}render(){if(!this._isRenderingVisualization)return;this._sampleScale=1/this._computedSamples,this._rctx.bindVAO(this._vao);const e=this.visualizeShadowCastTechnique;this._rctx.useProgram(e.program),e.bindPipelineState(this._rctx),e.bindPass(this._visualizationParams),this._rctx.drawArrays(e.primitiveType,0,_(this._vao,"geometry"))}setOptions(e){void 0!==e.enabled&&this._setEnabled(e.enabled),void 0!==e.color&&this._setColor(e.color),void 0!==e.threshold&&(this._threshold=e.threshold),void 0!==e.visualization&&(this._visualization=e.visualization),void 0!==e.bandSize&&(this._bandSize=e.bandSize),void 0!==e.bandsEnabled&&(this._bandsEnabled=e.bandsEnabled)}get opacityFromElevation(){return this._visualizationParams.opacityFromElevation}set opacityFromElevation(e){this._visualizationParams.opacityFromElevation!==e&&(this._visualizationParams.opacityFromElevation=e,this.notifyChange("opacityFromElevation"))}get _isRenderingVisualization(){return this._enabled&&this._computedSamples>0&&this.opacityFromElevation>p}get _computedSamples(){return this._shadowAccumulator.computedSamples}get _shadowCastTexture(){return this._shadowAccumulator.shadowCastTexture}get _sampleScale(){return this._visualizationParams.sampleScale}set _sampleScale(e){this._visualizationParams.sampleScale=e}get _threshold(){return this._visualizationParams.threshold}set _threshold(e){this._threshold!==e&&(this._visualizationParams.threshold=e,this._requestRenderIfRunning())}get _visualization(){return this._techniqueConfig.visualization}set _visualization(e){e!==this._visualization&&(this._techniqueConfig.visualization=e,this._techniqueRepository.release(this._technique),this._technique=null,this._requestRenderIfRunning())}get _bandSize(){return this._visualizationParams.bandSize}set _bandSize(e){e!==this._bandSize&&(this._visualizationParams.bandSize=e,this._requestRenderIfRunning())}get _bandsEnabled(){return this._techniqueConfig.bandsEnabled}set _bandsEnabled(e){e!==this._bandsEnabled&&(this._techniqueConfig.bandsEnabled=e,this._techniqueRepository.release(this._technique),this._technique=null,this._requestRenderIfRunning())}_setColor(e){const i=this._visualizationParams.color;o(e,i)||(r(this._visualizationParams.color,e),this._requestRenderIfRunning())}_setEnabled(e){e!==this._enabled&&(e?this._start():this._stop())}_requestRenderIfRunning(){this._enabled&&this._requestRender()}_start(){this._enabled=!0,this._requestRender()}_stop(){this._enabled=!1,this._requestRender()}};e([s()],v.prototype,"opacityFromElevation",null),v=e([a("esri.views.3d.webgl-engine.lib.ShadowCastRenderer")],v);export{v as ShadowCastRenderer,m as shadowCastDisableElevationMax,d as shadowCastDisableElevationMin,p as shadowCastDisabledElevationThreshold};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{abortMaybe as r,isSome as i,disposeMaybe as s}from"../../../../core/maybe.js";import{throwIfAborted as o,isAborted as h}from"../../../../core/promiseUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import{requestImage as n}from"../../../../support/requestImageUtils.js";import{createScreenSizeTriangleVAO as d}from"./glUtil3D.js";import{SMAATechniqueConfiguration as u,SMAATechnique as c}from"./SMAATechnique.js";import g from"../../../webgl/FramebufferObject.js";import p from"../../../webgl/Texture.js";let _=class extends t{constructor(e,t){super({}),this.rctx=e,this._techniqueRep=t,this._isEnabled=!1}normalizeCtorArgs(){return{}}dispose(){this._abortController=r(this._abortController),this.disable()}_loadResources(e){if(i(this._abortController))return!1;if(i(this._searchTexture))return!0;this._abortController=new AbortController;const t=this._abortController.signal;return import("./SmaaRenderPassData.js").then((e=>this._loadTextures(e,t))).then((()=>e())).finally((()=>this._abortController=null)),!1}_loadTextures(e,t){return o(t),Promise.all([this.loadTextureFromBase64(e.areaTexture,9729,6407),this.loadTextureFromBase64(e.searchTexure,9728,6409)]).then((([e,r])=>{h(t)?(e.dispose(),r.dispose(),o(t)):(this._areaTexture=e,this._searchTexture=r)}))}get updating(){return i(this._abortController)}enable(e){if(this._isEnabled)return!0;if(!this._edgeDetectTechnique||!this._blendWeights||!this._blur){const e=new u,t=(e,t)=>this._techniqueRep.releaseAndAcquire(c,e,t);e.output=0,this._edgeDetectTechnique=t(e,this._edgeDetectTechnique),e.output=1,this._blendWeights=t(e,this._blendWeights),e.output=2,this._blur=t(e,this._blur)}return!!this._loadResources(e)&&(this._vao=d(this.rctx),this._edges=new g(this.rctx,{colorTarget:0,depthStencilTarget:0},{target:3553,pixelFormat:6407,dataType:5121,samplingMode:9729,wrapMode:33071,width:4,height:4}),this._blend=new g(this.rctx,{colorTarget:0,depthStencilTarget:0},{target:3553,pixelFormat:6408,dataType:5121,samplingMode:9729,wrapMode:33071,width:4,height:4}),this._isEnabled=!0,!0)}disable(){this._isEnabled&&(this._vao=s(this._vao),this._areaTexture=s(this._areaTexture),this._searchTexture=s(this._searchTexture),this._blend=s(this._blend),this._edges=s(this._edges),this._isEnabled=!1)}render(e){if(!this._isEnabled)return;const t=this.rctx,r=t.getBoundFramebufferObject(),i={x:0,y:0,width:e.descriptor.width,height:e.descriptor.height};t.bindVAO(this._vao),this._edgeDetectTechnique.bindPipelineState(t),t.setViewport(i.x,i.y,i.width,i.height),this._edges.resize(i.width,i.height),t.bindFramebuffer(this._edges),t.setClearColor(0,0,0,1),t.clear(16384),t.useProgram(this._edgeDetectTechnique.program),this._edgeDetectTechnique.program.bindTexture(e,"tColor"),this._edgeDetectTechnique.program.setUniform4f("uResolution",1/i.width,1/i.height,i.width,i.height),t.drawArrays(4,0,3),this._blend.resize(i.width,i.height),t.bindFramebuffer(this._blend),t.setClearColor(0,0,1,1),t.clear(16384),t.useProgram(this._blendWeights.program),this._blendWeights.program.setUniform4f("uResolution",1/i.width,1/i.height,i.width,i.height),this._blendWeights.program.bindTexture(this._searchTexture,"tSearch"),this._blendWeights.program.bindTexture(this._areaTexture,"tArea"),this._blendWeights.program.bindTexture(this._edges.colorTexture,"tEdges"),t.drawArrays(4,0,3),t.bindFramebuffer(r),t.setClearColor(0,1,0,1),t.clear(16384),t.useProgram(this._blur.program),this._blur.program.setUniform4f("uResolution",1/i.width,1/i.height,i.width,i.height),this._blur.program.bindTexture(e,"tColor"),this._blur.program.bindTexture(this._blend.colorTexture,"tBlendWeights"),t.drawArrays(4,0,3)}loadTextureFromBase64(e,t,r){const i=new p(this.rctx,{pixelFormat:r,dataType:5121,wrapMode:33071,samplingMode:t},null);return n(e).then((e=>(i.resize(e.width,e.height),i.setData(e),i)))}};e([a()],_.prototype,"_abortController",void 0),e([a({readOnly:!0})],_.prototype,"updating",null),_=e([l("esri.views.3d.webgl-engine.lib.SmaaRenderPass")],_);export{_ as SmaaRenderPass};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.22/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../core/Evented.js";import{nextHighestPowerOfTwo as t}from"../../../../core/mathUtils.js";import{isSome as r}from"../../../../core/maybe.js";import{ContentObject as i}from"./ContentObject.js";import{TextRenderer as s,getTextHelperCanvas as h}from"./TextRenderer.js";import n from"../../../webgl/Texture.js";import d from"../../../webgl/capabilities/isWebGL2Context.js";class o extends i{constructor(t,r,i){super(),this.type=4,this._glTexture=null,this.events=new e,this._requiresPowerOfTwo=!d(t.gl),this._renderer=new s(r,i)}get width(){return this._renderer.renderedWidth}get height(){return this._renderer.renderedHeight}get textureWidth(){const e=this.width;return this._requiresPowerOfTwo?t(e):e}get textureHeight(){const e=this.height;return this._requiresPowerOfTwo?t(e):e}get displayWidth(){return this._renderer.displayWidth}get displayHeight(){return this._renderer.displayHeight}get texcoordScale(){return[this._renderer.renderedWidth/this.textureWidth,this._renderer.renderedHeight/this.textureHeight]}get requiresFrameUpdates(){return!1}createDescriptor(e){return{target:3553,pixelFormat:6408,dataType:5121,wrapMode:33071,flipped:!0,samplingMode:9987,hasMipmap:!0,preMultiplyAlpha:!0,maxAnisotropy:e.parameters.maxMaxAnisotropy}}load(e){if(r(this._glTexture))return this._glTexture;const t=h(u,this.textureWidth,this.textureHeight),i=t.getContext("2d");return i.save(),this._renderer.render(i,0,this.textureHeight-this._renderer.renderedHeight),this._glTexture=new n(e,this.createDescriptor(e),t),i.restore(),this._glTexture}unload(){r(this._glTexture)&&(this._glTexture.dispose(),this._glTexture=null),this.events.emit("unloaded")}}const u={canvas:null};export{o as default};
|
|
5
|
+
import e from"../../../../core/Evented.js";import{nextHighestPowerOfTwo as t}from"../../../../core/mathUtils.js";import{isSome as r}from"../../../../core/maybe.js";import{ContentObject as i}from"./ContentObject.js";import{TextRenderer as s,getTextHelperCanvas as h}from"./TextRenderer.js";import n from"../../../webgl/Texture.js";import d from"../../../webgl/capabilities/isWebGL2Context.js";class o extends i{constructor(t,r,i){super(),this.type=4,this._glTexture=null,this.events=new e,this._requiresPowerOfTwo=!d(t.gl),this._renderer=new s(r,i)}get width(){return this._renderer.renderedWidth}get height(){return this._renderer.renderedHeight}get textureWidth(){const e=this.width;return this._requiresPowerOfTwo?t(e):e}get textureHeight(){const e=this.height;return this._requiresPowerOfTwo?t(e):e}get displayWidth(){return this._renderer.displayWidth}get displayHeight(){return this._renderer.displayHeight}get texcoordScale(){return[this._renderer.renderedWidth/this.textureWidth,this._renderer.renderedHeight/this.textureHeight]}get requiresFrameUpdates(){return!1}createDescriptor(e){return{target:3553,pixelFormat:6408,dataType:5121,wrapMode:33071,flipped:!0,samplingMode:9987,hasMipmap:!0,preMultiplyAlpha:!0,maxAnisotropy:e.parameters.maxMaxAnisotropy}}get glTexture(){return this._glTexture}load(e){if(r(this._glTexture))return this._glTexture;const t=h(u,this.textureWidth,this.textureHeight),i=t.getContext("2d");return i.save(),this._renderer.render(i,0,this.textureHeight-this._renderer.renderedHeight),this._glTexture=new n(e,this.createDescriptor(e),t),i.restore(),this._glTexture}unload(){r(this._glTexture)&&(this._glTexture.dispose(),this._glTexture=null),this.events.emit("unloaded")}}const u={canvas:null};export{o as default};
|