@arcgis/core 5.1.0-next.73 → 5.1.0-next.75
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/Viewpoint.js +1 -1
- package/applications/Urban/editingSessionUtils.d.ts +95 -0
- package/applications/Urban/editingSessionUtils.js +2 -0
- package/arcade/ArcadePortal.js +1 -1
- package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
- package/arcade/functions/aiServices.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/arcade/functions/geomasync.js +1 -1
- package/arcade/functions/knowledgegraph.js +1 -1
- package/arcade/functions/string.js +1 -1
- package/arcade/languageUtils.js +1 -1
- package/arcade/portalUtils.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{d17fcfc502f0e0fa6523.js → 003476e950bd27a2f884.js} +1 -1
- package/assets/esri/core/workers/chunks/{8a664451845a47048859.js → 0539b5d015157c1d34a0.js} +1 -1
- package/assets/esri/core/workers/chunks/07aca5ecad659d55e795.js +2 -0
- package/assets/esri/core/workers/chunks/{5a4d7ba6dc1d4b41d80d.js → 07eff82916681fcff069.js} +1 -1
- package/assets/esri/core/workers/chunks/09630888267cde87654f.js +1 -0
- package/assets/esri/core/workers/chunks/{8a14e3db28c403b046cf.js → 0d2bc1be5802681666a4.js} +1 -1
- package/assets/esri/core/workers/chunks/0eed2b1b06355ab89013.js +1 -0
- package/assets/esri/core/workers/chunks/0fa207c68dfd7ddee160.js +1 -0
- package/assets/esri/core/workers/chunks/146424b5717d0a645ee1.js +1 -0
- package/assets/esri/core/workers/chunks/{cfe246adb5e6cb6f0cfc.js → 14eb2cc8e2ad6d8d03fd.js} +1 -1
- package/assets/esri/core/workers/chunks/1765dfeac20e34ce25b7.js +1 -0
- package/assets/esri/core/workers/chunks/176dd195f77b98cb0b0f.js +1 -0
- package/assets/esri/core/workers/chunks/18f77ee3552d92962f15.js +1 -0
- package/assets/esri/core/workers/chunks/1906416c84bab369bbd6.js +1 -0
- package/assets/esri/core/workers/chunks/1a87e9bbd85ba29b1514.js +1 -0
- package/assets/esri/core/workers/chunks/{b98c24229463029504e8.js → 1f6b7626f333809837ef.js} +1 -1
- package/assets/esri/core/workers/chunks/{b54b7cc6b23a70fed700.js → 1f8ccf96069ac3a40c3d.js} +1 -1
- package/assets/esri/core/workers/chunks/1ff3c15a51c4dc991806.js +1 -0
- package/assets/esri/core/workers/chunks/{cdf6ad970dc1893dac58.js → 24646a1176ce34039155.js} +1 -1
- package/assets/esri/core/workers/chunks/2a2e97918524e0f436d7.js +1 -0
- package/assets/esri/core/workers/chunks/2b0b398180ed98c2c84c.js +1 -0
- package/assets/esri/core/workers/chunks/{03894992558d063d0d5e.js → 312036c89a6a09bb06c2.js} +1 -1
- package/assets/esri/core/workers/chunks/{80ace1c7203c5059525d.js → 330b47ac0759c3c35cc5.js} +1 -1
- package/assets/esri/core/workers/chunks/34b6b5dd415c68f0b0d1.js +1 -0
- package/assets/esri/core/workers/chunks/{422824e407b550170c8c.js → 34ea3ed78041437a8fc8.js} +1 -1
- package/assets/esri/core/workers/chunks/{93ceb74ac88ef460fe5f.js → 359d3acb3953e64e5a78.js} +1 -1
- package/assets/esri/core/workers/chunks/384c235d36f32769e32b.js +1 -0
- package/assets/esri/core/workers/chunks/3a183259805638c25363.js +1 -0
- package/assets/esri/core/workers/chunks/{0839da55707f7c4cf780.js → 3b9100c59a8050f4834e.js} +1 -1
- package/assets/esri/core/workers/chunks/{deaca3cd202851ecf9c2.js → 3cce9dad8ee0e4971d50.js} +1 -1
- package/assets/esri/core/workers/chunks/3efbb684c0409955186d.js +1 -0
- package/assets/esri/core/workers/chunks/40d251b6b42a41d68bd2.js +1 -0
- package/assets/esri/core/workers/chunks/42336e0d1ef88737b078.js +1 -0
- package/assets/esri/core/workers/chunks/452c01cecbbd1e370098.js +1 -0
- package/assets/esri/core/workers/chunks/47656ec12401e53f4bd3.js +1 -0
- package/assets/esri/core/workers/chunks/47b3a5213539548ff3a6.js +1 -0
- package/assets/esri/core/workers/chunks/{260d4571722cb1ff1366.js → 484d6c1b0fe1633515b7.js} +1 -1
- package/assets/esri/core/workers/chunks/4a23b27bfbcfa08fd9a7.js +1 -0
- package/assets/esri/core/workers/chunks/4c97cc922eece3a91b6b.js +1 -0
- package/assets/esri/core/workers/chunks/52b3a11c962810bc6dbe.js +1 -0
- package/assets/esri/core/workers/chunks/53750e85f3128993a43a.js +1 -0
- package/assets/esri/core/workers/chunks/{f207b3be0714cc50030a.js → 537fe2522dff1e6ce03b.js} +1 -1
- package/assets/esri/core/workers/chunks/{656d6963e8f837fbf28f.js → 54023458195549f66215.js} +1 -1
- package/assets/esri/core/workers/chunks/55fd201ca5e10c6e4761.js +1 -0
- package/assets/esri/core/workers/chunks/56941e8bbd2d49bf2656.js +1 -0
- package/assets/esri/core/workers/chunks/{faad127dc07e54e7f6d1.js → 5abe34bb0110694f7b42.js} +1 -1
- package/assets/esri/core/workers/chunks/5d8e944b192aad4cf986.js +1 -0
- package/assets/esri/core/workers/chunks/{a78bc340a794fd332667.js → 5e1b847b116d21908a54.js} +1 -1
- package/assets/esri/core/workers/chunks/5ed8d8b5336c81fbcda3.js +1 -0
- package/assets/esri/core/workers/chunks/60915a3708a34da1977e.js +1 -0
- package/assets/esri/core/workers/chunks/6124141ac642e4ce1454.js +1 -0
- package/assets/esri/core/workers/chunks/61c523dd9d8027922465.js +1 -0
- package/assets/esri/core/workers/chunks/65c61171e6c6be5c5c2f.js +1 -0
- package/assets/esri/core/workers/chunks/6a3d207308b29651f397.js +1 -0
- package/assets/esri/core/workers/chunks/{b6cadb8a579241adcb86.js → 6b66fc32451433129a88.js} +1 -1
- package/assets/esri/core/workers/chunks/6c35583707f5c339ee99.js +1 -0
- package/assets/esri/core/workers/chunks/6f7aaba26773fe416ac2.js +1 -0
- package/assets/esri/core/workers/chunks/702e8468836863abd81b.js +1 -0
- package/assets/esri/core/workers/chunks/7540f7df86620f067b5a.js +1 -0
- package/assets/esri/core/workers/chunks/{9f4b97204def91567e3c.js → 7595ceba529ed01c7590.js} +1 -1
- package/assets/esri/core/workers/chunks/75d5ea0da181f9e7425f.js +1312 -0
- package/assets/esri/core/workers/chunks/{af75e91b88e747aa76ac.js → 7601278ebced0c0c31cf.js} +1 -1
- package/assets/esri/core/workers/chunks/76e34f81bb4a7b0e694c.js +1 -0
- package/assets/esri/core/workers/chunks/{1661684357912726a72a.js → 77dd719516138afb1a2a.js} +1 -1
- package/assets/esri/core/workers/chunks/7b6c8be59ed87e386aa4.js +1 -0
- package/assets/esri/core/workers/chunks/7c820c5f6f05480d5050.js +1 -0
- package/assets/esri/core/workers/chunks/{ce2aa75e084ee56f5e29.js → 7f55eef696e9ed717bfc.js} +1 -1
- package/assets/esri/core/workers/chunks/80f4f686ce403cb2693f.js +1 -0
- package/assets/esri/core/workers/chunks/852f4cd514008fee5a55.js +1 -0
- package/assets/esri/core/workers/chunks/85aac8539996372f1ee8.js +1 -0
- package/assets/esri/core/workers/chunks/{50d5d6654ada9f28345d.js → 85e65ced3312bf9cf162.js} +1 -1
- package/assets/esri/core/workers/chunks/8a3bff0f58483c1665f9.js +1 -0
- package/assets/esri/core/workers/chunks/8b046e28f879079caada.js +1 -0
- package/assets/esri/core/workers/chunks/8d738e9acc2f222235ea.js +1 -0
- package/assets/esri/core/workers/chunks/{b9848bdbaf3d9ac93d54.js → 8f4cd30ce23e41c1a42c.js} +1 -1
- package/assets/esri/core/workers/chunks/9103eb0b9078019d3a26.js +1 -0
- package/assets/esri/core/workers/chunks/915e2711d3a2cfa402b2.js +1 -0
- package/assets/esri/core/workers/chunks/91f9e0e3662d4bf9f163.js +1 -0
- package/assets/esri/core/workers/chunks/983f6c8727fd9484718e.js +1 -0
- package/assets/esri/core/workers/chunks/99c161fecae710b53b40.js +1 -0
- package/assets/esri/core/workers/chunks/99d298d0039c536fcf3e.js +1 -0
- package/assets/esri/core/workers/chunks/9a5ef33d99a8f89956ff.js +1 -0
- package/assets/esri/core/workers/chunks/9d10db72e342fe63c981.js +1 -0
- package/assets/esri/core/workers/chunks/{bef27a25fbc4a6e19ec0.js → 9d6491f996eeb0c646ed.js} +1 -1
- package/assets/esri/core/workers/chunks/a015c2f54eb91e43a1f4.js +1 -0
- package/assets/esri/core/workers/chunks/a242ec19a7508de436da.js +1 -0
- package/assets/esri/core/workers/chunks/a320998f18922a35899f.js +1 -0
- package/assets/esri/core/workers/chunks/a7f9f478bd1493fc3c76.js +1 -0
- package/assets/esri/core/workers/chunks/aac6a57edd7494125204.js +1 -0
- package/assets/esri/core/workers/chunks/b73c146d3e550eaf07eb.js +1 -0
- package/assets/esri/core/workers/chunks/b7af0e6b9aadbcaf6a0b.js +1 -0
- package/assets/esri/core/workers/chunks/b803e7b0d489bb628d72.js +1 -0
- package/assets/esri/core/workers/chunks/b858adff7043683fe41c.js +1 -0
- package/assets/esri/core/workers/chunks/baeb96aef03d4c566af7.js +1 -0
- package/assets/esri/core/workers/chunks/bc75ab48f4c7609ef09d.js +1 -0
- package/assets/esri/core/workers/chunks/bc78937986854e500b8e.js +1 -0
- package/assets/esri/core/workers/chunks/{6ef3b8d67b498d655a99.js → bcb021a167580bb1619f.js} +1 -1
- package/assets/esri/core/workers/chunks/bd10d21545bca9a49de0.js +1 -0
- package/assets/esri/core/workers/chunks/bec3ee5ea945e1e07a35.js +1 -0
- package/assets/esri/core/workers/chunks/{5c663d5f98bdfa29151b.js → bf8f603848bad4a7deb4.js} +1 -1
- package/assets/esri/core/workers/chunks/bfe575da727ce7c8d331.js +2 -0
- package/assets/esri/core/workers/chunks/c31ee5617c61a933cb0e.js +1 -0
- package/assets/esri/core/workers/chunks/cb45e5d4a4ef82cda583.js +1 -0
- package/assets/esri/core/workers/chunks/ce7ef7c4ca14d66d96f6.js +1 -0
- package/assets/esri/core/workers/chunks/{f5c57ff48ca505ed701d.js → cf14b3a44705dacefac4.js} +1 -1
- package/assets/esri/core/workers/chunks/d1a7d13e1d48abcd7bf1.js +1 -0
- package/assets/esri/core/workers/chunks/{06df187a116709f69952.js → d35c475f004367e333eb.js} +1 -1
- package/assets/esri/core/workers/chunks/d3b086eb9aa8c7d09048.js +1 -0
- package/assets/esri/core/workers/chunks/d55cef8199b8246fea3f.js +1 -0
- package/assets/esri/core/workers/chunks/d82da31dc702b8fd6a07.js +1 -0
- package/assets/esri/core/workers/chunks/d8decaee2c780e1b5e35.js +1 -0
- package/assets/esri/core/workers/chunks/{41809c16544ec25120fa.js → d95ffd990b3a7df69e1e.js} +1 -1
- package/assets/esri/core/workers/chunks/dc54d4a9fe1691862356.js +1 -0
- package/assets/esri/core/workers/chunks/dd4f431511edd975a53b.js +1 -0
- package/assets/esri/core/workers/chunks/dda2cb5c073d1e65f14f.js +1 -0
- package/assets/esri/core/workers/chunks/e18badd11f360cc2912b.js +1 -0
- package/assets/esri/core/workers/chunks/{e25a684eb9f025bdcc01.js → e262c4864dc06c43b380.js} +1 -1
- package/assets/esri/core/workers/chunks/e610d24539a675fb054b.js +1 -0
- package/assets/esri/core/workers/chunks/{99101789035f1787c630.js → e785f76c1a75cb1d1e1f.js} +1 -1
- package/assets/esri/core/workers/chunks/e9c5c295b6bf10e942a4.js +1 -0
- package/assets/esri/core/workers/chunks/ea59b81299acaf0d85ee.js +1 -0
- package/assets/esri/core/workers/chunks/{873c1b705ac3d4e6c384.js → ea97619a4470f1540b99.js} +1 -1
- package/assets/esri/core/workers/chunks/eaab5ac049622986e3bc.js +1 -0
- package/assets/esri/core/workers/chunks/edee616b6f1b5be8fd39.js +1 -0
- package/assets/esri/core/workers/chunks/ef0085aa743b33cb549f.js +1 -0
- package/assets/esri/core/workers/chunks/f0250cecb243b32cdba7.js +1 -0
- package/assets/esri/core/workers/chunks/f518835b2dc89a48cfb1.js +1 -0
- package/assets/esri/core/workers/chunks/f590b60fca607d66001a.js +1 -0
- package/assets/esri/core/workers/chunks/{f6d047358d14328f3622.js → f60292d97bcdbf19165b.js} +1 -1
- package/assets/esri/core/workers/chunks/f6c8e93ca2987e83f925.js +1 -0
- package/assets/esri/core/workers/chunks/fb5a2205f05afc396119.js +1 -0
- package/assets/esri/themes/base/widgets/_Sketch.scss +32 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ja.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_en.json +1 -1
- package/chunks/MultiPathImpl.js +1 -1
- package/chunks/Point2D.js +1 -1
- package/chunks/SpatialReference.js +1 -1
- package/chunks/aiServices.js +1 -1
- package/chunks/geometryEngineBase.js +1 -1
- package/chunks/languageUtils.js +1 -1
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/core/workers/registry.js +1 -1
- package/form/elements/AttachmentElement.d.ts +15 -16
- package/form/elements/FieldElement.js +1 -1
- package/form/elements/GroupElement.d.ts +3 -2
- package/form/elements/inputs/attachments/AttachmentInput.d.ts +7 -9
- package/form/elements/inputs/attachments/AudioInput.d.ts +6 -8
- package/form/elements/inputs/attachments/DocumentInput.d.ts +5 -7
- package/form/elements/inputs/attachments/ImageInput.d.ts +6 -8
- package/form/elements/inputs/attachments/Input.d.ts +2 -6
- package/form/elements/inputs/attachments/SignatureInput.d.ts +5 -7
- package/form/elements/inputs/attachments/VideoInput.d.ts +6 -8
- package/form/elements/inputs/attachments/types.d.ts +3 -3
- package/geometry/FlatGeometry.js +1 -1
- package/geometry/geometryEngine.js +1 -1
- package/geometry/geometryEngineJSON.js +1 -1
- package/geometry/operators/projectOperator.d.ts +5 -4
- package/geometry/operators/projectOperator.js +1 -1
- package/geometry/support/curves/densifyCurvedGeometry.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/geometry/support/normalizeUtilsCommon.js +1 -1
- package/graphic/ImageryGraphicOrigin.js +1 -1
- package/graphic/ImageryTileGraphicOrigin.js +1 -1
- package/graphic/WCSGraphicOrigin.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/kernel.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/IntegratedMeshLayer.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/support/SymbolLayerDrawing.d.ts +18 -4
- package/package.json +4 -4
- package/popup/Features.d.ts +9 -9
- package/popup/Features.js +1 -1
- package/popup/actionUtils.js +1 -1
- package/popup/actions.js +1 -1
- package/portal/Portal.js +1 -1
- package/portal/PortalQueryParams.js +1 -1
- package/rest/print.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/CIMSymbolRasterizer.js +1 -1
- package/symbols/support/previewCIMSymbol.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementController.js +1 -1
- package/views/2d/engine/webgl/TextureManager.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/Dimension/DimensionController.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
- package/views/3d/camera/intersectionUtils.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
- package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/editingTools/transform/extentTransform/ExtentMove.js +1 -1
- package/views/3d/interactive/editingTools/transform/extentTransform/ExtentScale.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
- package/views/3d/state/GoToOperation.js +1 -1
- package/views/3d/state/controllers/PinchAndPanControllerGlobal.js +1 -1
- package/views/3d/state/controllers/PinchAndPanControllerLocal.js +1 -1
- package/views/3d/support/cameraScaleUtils.js +2 -0
- package/views/3d/support/cameraUtils.js +1 -1
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/renderInfoUtils/line.js +1 -1
- package/views/3d/support/viewpointUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentData.glsl.js +13 -12
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl.js +1 -1
- package/views/SceneView.d.ts +1 -0
- package/views/VideoView.js +1 -1
- package/views/draw/DrawGraphicTool.js +1 -1
- package/views/draw/DrawTool.js +1 -1
- package/views/draw/support/Box.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/draw/support/editingSessionUtils.js +2 -0
- package/views/draw/support/managers/MeasurementManager.js +1 -1
- package/views/interactive/SegmentLabels.js +1 -1
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +9 -1
- package/views/interactive/snapping/SelfSnappingEngine.js +1 -1
- package/views/support/GeometryWorker.js +2 -0
- package/views/support/GeometryWorkerHandle.js +2 -0
- package/views/support/Scheduler.js +1 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/MergeFeaturesWorkflow.js +1 -1
- package/widgets/Editor/SplitFeatureWorkflow.js +1 -1
- package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
- package/widgets/Editor/UpdateFeaturesWorkflowData.js +1 -1
- package/widgets/Editor/support/SketchController.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.d.ts +1 -3
- package/widgets/FeatureTable/Grid/GridViewModel.d.ts +2 -11
- package/widgets/FeatureTable/support/types.d.ts +2 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.d.ts +28 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.js +1 -1
- package/widgets/OrientedImageryViewer.d.ts +27 -0
- package/widgets/Sketch/SketchViewModel.d.ts +10 -2
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/MeasuredContentGroup.js +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/ResponsiveToolbar.js +1 -1
- package/widgets/Sketch.js +1 -1
- package/assets/esri/core/workers/chunks/00bae4b7e179336e0362.js +0 -1
- package/assets/esri/core/workers/chunks/027c3ea756db68e51f0a.js +0 -1
- package/assets/esri/core/workers/chunks/041c372e98a6fba90b36.js +0 -1
- package/assets/esri/core/workers/chunks/0783890816bac45277b9.js +0 -1
- package/assets/esri/core/workers/chunks/07aac6245a0d1adbb2d4.js +0 -1
- package/assets/esri/core/workers/chunks/0c00e5e4bd18467bcecd.js +0 -1
- package/assets/esri/core/workers/chunks/0dad0bca8d58b2c63d22.js +0 -1
- package/assets/esri/core/workers/chunks/0ef93722524620023f69.js +0 -1
- package/assets/esri/core/workers/chunks/1286f41f245ef22b3a26.js +0 -1
- package/assets/esri/core/workers/chunks/12e575a6d2b008b8fc2b.js +0 -1
- package/assets/esri/core/workers/chunks/161d60fdac2013c15543.js +0 -1
- package/assets/esri/core/workers/chunks/168de44a789d1cecc1f8.js +0 -1
- package/assets/esri/core/workers/chunks/1d9d7915cf7449e5d468.js +0 -1
- package/assets/esri/core/workers/chunks/235cb82952a18ff8d206.js +0 -1
- package/assets/esri/core/workers/chunks/266ba61b72a278d93a26.js +0 -1
- package/assets/esri/core/workers/chunks/27b80c386cebadcaca3c.js +0 -1
- package/assets/esri/core/workers/chunks/29d3890a5a43d934067a.js +0 -1
- package/assets/esri/core/workers/chunks/29e76256e3e867e80520.js +0 -1
- package/assets/esri/core/workers/chunks/2abf124e2956e4f76688.js +0 -1
- package/assets/esri/core/workers/chunks/2f17438d215bea3ce70f.js +0 -1
- package/assets/esri/core/workers/chunks/30f04dc001eaf838d64c.js +0 -1
- package/assets/esri/core/workers/chunks/356cb86606b8c674f947.js +0 -1
- package/assets/esri/core/workers/chunks/398e0dd2bc7e1ab84831.js +0 -1
- package/assets/esri/core/workers/chunks/3b1052aa30af3f6186cc.js +0 -1
- package/assets/esri/core/workers/chunks/3e87e3ad857d72f6ecbb.js +0 -1
- package/assets/esri/core/workers/chunks/42e483fde18f12da32a6.js +0 -1
- package/assets/esri/core/workers/chunks/43678e08a3d9d51c2a6d.js +0 -1
- package/assets/esri/core/workers/chunks/43ab44d37bc0ea97ef98.js +0 -1
- package/assets/esri/core/workers/chunks/47f2113357b2aa4f4f37.js +0 -1
- package/assets/esri/core/workers/chunks/488ed9584b527ec47be3.js +0 -1
- package/assets/esri/core/workers/chunks/4ad32580e0c0699fde1f.js +0 -1
- package/assets/esri/core/workers/chunks/54ed37ec9682ea739deb.js +0 -1
- package/assets/esri/core/workers/chunks/55369c5bd65bcaf78da1.js +0 -1
- package/assets/esri/core/workers/chunks/56fd3da911c2c4511e5d.js +0 -1
- package/assets/esri/core/workers/chunks/59592bb25f226865e88a.js +0 -1
- package/assets/esri/core/workers/chunks/5a83ea967ecde01d5622.js +0 -1
- package/assets/esri/core/workers/chunks/5b278b9980752ef495a2.js +0 -1
- package/assets/esri/core/workers/chunks/5d55b4449bcb24cd72b6.js +0 -1
- package/assets/esri/core/workers/chunks/5d8fe41a3c06ddb4094b.js +0 -1
- package/assets/esri/core/workers/chunks/5e59ff96aecdf2adcb3b.js +0 -1
- package/assets/esri/core/workers/chunks/608d707fd9d9f9088473.js +0 -1
- package/assets/esri/core/workers/chunks/6a21c9a4aeebe806ea39.js +0 -1
- package/assets/esri/core/workers/chunks/6c7ff968bd4fc816442d.js +0 -1
- package/assets/esri/core/workers/chunks/6d11ec355e5474b2968b.js +0 -1
- package/assets/esri/core/workers/chunks/6ea8b0d68881d16a2432.js +0 -1
- package/assets/esri/core/workers/chunks/7027d93dc5a4595d70c6.js +0 -1
- package/assets/esri/core/workers/chunks/70b35b2446558d5280e3.js +0 -1
- package/assets/esri/core/workers/chunks/7349cb45a93e6916f115.js +0 -1
- package/assets/esri/core/workers/chunks/74be994d789c57031631.js +0 -1
- package/assets/esri/core/workers/chunks/76edaeaf8fe344bb77a8.js +0 -1
- package/assets/esri/core/workers/chunks/76fe5b821d6b54db5721.js +0 -1
- package/assets/esri/core/workers/chunks/770880ad43f252962017.js +0 -1
- package/assets/esri/core/workers/chunks/7951d93f5f15aa76f49c.js +0 -1
- package/assets/esri/core/workers/chunks/7a56c836c89a8b978800.js +0 -1
- package/assets/esri/core/workers/chunks/81750c5177d8d52a3e05.js +0 -1
- package/assets/esri/core/workers/chunks/81d30c9062ad0120a863.js +0 -1
- package/assets/esri/core/workers/chunks/84772b023d04e415f17f.js +0 -1
- package/assets/esri/core/workers/chunks/88c5f7c712c6b89b5109.js +0 -1
- package/assets/esri/core/workers/chunks/88e469b82d2594f23649.js +0 -1
- package/assets/esri/core/workers/chunks/8a8242e7cc7e6a9e7876.js +0 -1
- package/assets/esri/core/workers/chunks/9444ed8ea117861ae89b.js +0 -1
- package/assets/esri/core/workers/chunks/9a38fd68b02b617c45d3.js +0 -1
- package/assets/esri/core/workers/chunks/9eb4ae556950e1d0124d.js +0 -2
- package/assets/esri/core/workers/chunks/a11f05ddd8314b648f76.js +0 -1
- package/assets/esri/core/workers/chunks/a37c28e3c4a2be9fd1d5.js +0 -1
- package/assets/esri/core/workers/chunks/a8d7f59927bdad564141.js +0 -1
- package/assets/esri/core/workers/chunks/a94bd20551c1179c7ec5.js +0 -1
- package/assets/esri/core/workers/chunks/abe22ae8ee0dcc9efbb7.js +0 -1
- package/assets/esri/core/workers/chunks/af5db0372d526e592fcc.js +0 -1
- package/assets/esri/core/workers/chunks/b702279c48f3009f6dd8.js +0 -1
- package/assets/esri/core/workers/chunks/bc53ce9a643f82d516c2.js +0 -1
- package/assets/esri/core/workers/chunks/bc887bd62579dba81e2b.js +0 -1
- package/assets/esri/core/workers/chunks/be1d6a571f76933dfbb0.js +0 -1
- package/assets/esri/core/workers/chunks/bfcdc5c315131aae34d8.js +0 -1
- package/assets/esri/core/workers/chunks/c0f624a2ca0d07ef8f8c.js +0 -1
- package/assets/esri/core/workers/chunks/c327fe276238af60fda4.js +0 -1
- package/assets/esri/core/workers/chunks/c3381b9a36299210ee47.js +0 -1
- package/assets/esri/core/workers/chunks/cb5e4b9b4a59c2622eb5.js +0 -1
- package/assets/esri/core/workers/chunks/d201a5dff18a5bb467ab.js +0 -1
- package/assets/esri/core/workers/chunks/d21fdd67477800101f3b.js +0 -1
- package/assets/esri/core/workers/chunks/d65b1234867f7d773d50.js +0 -2
- package/assets/esri/core/workers/chunks/d8d7331600d93bbca2b4.js +0 -1
- package/assets/esri/core/workers/chunks/db588bf3256e95c977b7.js +0 -1
- package/assets/esri/core/workers/chunks/dfdd474fddcd1d6091ce.js +0 -1
- package/assets/esri/core/workers/chunks/e1bc9ad767e08dc18bbc.js +0 -1
- package/assets/esri/core/workers/chunks/e235ea4293d5d463acfb.js +0 -1
- package/assets/esri/core/workers/chunks/e272411e2c9378aa8496.js +0 -1312
- package/assets/esri/core/workers/chunks/e43486113aaf72ac4dc1.js +0 -1
- package/assets/esri/core/workers/chunks/ea4c3393c5757e309a71.js +0 -1
- package/assets/esri/core/workers/chunks/ed216ddeb7f59f510bd0.js +0 -1
- package/assets/esri/core/workers/chunks/ef8886dff54063928bcb.js +0 -1
- package/assets/esri/core/workers/chunks/f43a63094190d2074cd0.js +0 -1
- package/assets/esri/core/workers/chunks/f5223ffb3be548c9b0a1.js +0 -1
- package/assets/esri/core/workers/chunks/fa160a2a5dc9f5a7c34b.js +0 -1
- package/geometry/support/triangulationUtilsDeprecated.js +0 -2
- package/views/3d/layers/graphics/extrudeUtilsDeprecated.js +0 -2
- package/views/3d/support/renderInfoUtils/polygonDeprecated.js +0 -2
- package/views/support/MeasurementWorker.js +0 -2
- package/views/support/MeasurementWorkerHandle.js +0 -2
- /package/assets/esri/core/workers/chunks/{9eb4ae556950e1d0124d.js.LICENSE.txt → 07aca5ecad659d55e795.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{d65b1234867f7d773d50.js.LICENSE.txt → bfe575da727ce7c8d331.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,1312 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[1951,5647],{28491(e,t,r){r.d(t,{D:()=>W,b:()=>A});var o=r(32680),a=r(49255),n=r(68317),i=r(76597),s=r(24321),l=r(2585),c=r(43519),u=r(96336),d=r(39014),h=r(53466),m=r(92700),f=r(72824),p=r(35640),v=r(40261),g=r(77695),x=r(71651),b=r(32971),w=r(98619),y=r(62602),M=r(22393),S=r(59469),T=r(32482),C=r(51406),I=r(43259),_=r(58614),P=r(27950),z=r(77949),E=r(33079),F=r(71988),O=r(20304),D=r(31821),H=r(63761),B=r(27832),j=r(43616),R=r(73541),N=r(14113),G=r(49788);function A(e){const t=new N.N5,{attributes:r,vertex:A,fragment:W,varyings:L}=t,{output:V,normalType:k,offsetBackfaces:U,spherical:q,snowCover:$,pbrMode:Z,textureAlphaPremultiplied:Y,instancedDoublePrecision:J,hasVertexColors:X,hasVertexTangents:K,hasColorTexture:Q,hasNormalTexture:ee,hasNormalTextureTransform:te,hasColorTextureTransform:re}=e;if((0,z.NB)(A,e),r.add("position","vec3"),A.inputs.add("position",()=>"position"),L.add("vpos","vec3",{invariant:!0}),t.include(I.A,e),t.include(l.B,e),t.include(p.Ge,e),t.include(C.q2,e),!(0,a._o)(V))return t.include(v.E,e),t;t.include(C.Sx,e),t.include(C.MU,e),t.include(C.O1,e),t.include(C.QM,e),(0,z.yu)(A,e),t.include(u.Y,e),t.include(i.d);const oe=0===k||1===k;return oe&&U&&t.include(o.M),t.include(g.J,e),t.include(f.Mh,e),t.include(s.v,e),L.add("vPositionLocal","vec3"),t.include(h.U,e),t.include(d.K,e),t.include(m.c,e),A.uniforms.add(new F.E("externalColor",e=>e.externalColor,{supportsNaN:!0})),L.add("vcolorExt","vec4"),A.include(c.WD),A.include(c.oF),t.include(J?T.QH:T.LA,e),A.main.add(D.H`
|
|
2
|
+
forwardVertexColor();
|
|
3
|
+
|
|
4
|
+
MaskedColor maskedColor =
|
|
5
|
+
applySymbolColor(applyVVColor(applyInstanceColor(createMaskedFromNaNColor(externalColor))));
|
|
6
|
+
|
|
7
|
+
vcolorExt = maskedColor.color;
|
|
8
|
+
forwardColorMixMode(maskedColor.mask);
|
|
9
|
+
|
|
10
|
+
vpos = getVertexInLocalOriginSpace();
|
|
11
|
+
vPositionLocal = vpos - view[3].xyz;
|
|
12
|
+
vpos = subtractOrigin(vpos);
|
|
13
|
+
${(0,D.If)(oe,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
|
|
14
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
15
|
+
${(0,D.If)(K,"vTangent = dpTransformVertexTangent(tangent);")}
|
|
16
|
+
gl_Position = transformPosition(proj, view, vpos);
|
|
17
|
+
${(0,D.If)(oe&&U,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
|
|
18
|
+
|
|
19
|
+
forwardTextureCoordinates();
|
|
20
|
+
forwardColorUV();
|
|
21
|
+
forwardNormalUV();
|
|
22
|
+
forwardEmissiveUV();
|
|
23
|
+
forwardOcclusionUV();
|
|
24
|
+
forwardMetallicRoughnessUV();
|
|
25
|
+
|
|
26
|
+
if (opacityMixMode != ${D.H.int(j.Um.ignore)} && vcolorExt.a < ${D.H.float(G.Q)}) {
|
|
27
|
+
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
28
|
+
}
|
|
29
|
+
forwardLinearDepthToReadShadowMap();
|
|
30
|
+
`),W.include(b.kA,e),W.include(x.n,e),t.include(_.S,e),W.include(n.HQ,e),t.include(R.D,e),(0,z.yu)(W,e),W.uniforms.add(A.uniforms.get("localOrigin"),new E.t("ambient",e=>e.ambient),new E.t("diffuse",e=>e.diffuse),new O.m("opacity",e=>e.opacity),new O.m("layerOpacity",e=>e.layerOpacity)),Q&&W.uniforms.add(new H.N("tex",e=>e.texture)),t.include(S._,e),W.include(M.c,e),W.include(P.N),t.include(y.r,e),W.include(B.b,e),(0,b.a8)(W),(0,b.eU)(W),(0,w.O4)(W),W.main.add(D.H`
|
|
31
|
+
discardBySlice(vpos);
|
|
32
|
+
${Q?D.H`
|
|
33
|
+
vec4 texColor = texture(tex, ${re?"colorUV":"vuv0"});
|
|
34
|
+
${(0,D.If)(Y,"texColor.rgb /= texColor.a;")}
|
|
35
|
+
discardOrAdjustAlpha(texColor);`:D.H`vec4 texColor = vec4(1.0);`}
|
|
36
|
+
shadingParams.viewDirection = normalize(vpos - cameraPosition);
|
|
37
|
+
${2===k?D.H`vec3 normal = screenDerivativeNormal(vPositionLocal);`:D.H`shadingParams.normalView = vNormalWorld;
|
|
38
|
+
vec3 normal = shadingNormal(shadingParams);`}
|
|
39
|
+
applyPBRFactors();
|
|
40
|
+
float ssao = evaluateAmbientOcclusionInverse() * getBakedOcclusion();
|
|
41
|
+
|
|
42
|
+
vec3 posWorld = vpos + localOrigin;
|
|
43
|
+
|
|
44
|
+
float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
|
|
45
|
+
float shadow = readShadow(additionalAmbientScale, vpos);
|
|
46
|
+
|
|
47
|
+
vec3 matColor = max(ambient, diffuse);
|
|
48
|
+
vec3 albedo = mixExternalColor(${(0,D.If)(X,"vColor.rgb *")} matColor, texColor.rgb, vcolorExt.rgb, colorMixMode);
|
|
49
|
+
float opacity_ = layerOpacity * mixExternalOpacity(${(0,D.If)(X,"vColor.a * ")} opacity, texColor.a, vcolorExt.a, opacityMixMode);
|
|
50
|
+
|
|
51
|
+
${ee?`mat3 tangentSpace = computeTangentSpace(${K?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${te?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
|
|
52
|
+
vec3 normalGround = ${q?"normalize(posWorld);":"vec3(0.0, 0.0, 1.0);"}
|
|
53
|
+
|
|
54
|
+
${(0,D.If)($,D.H`
|
|
55
|
+
float snow = getSnow(normal, normalGround);
|
|
56
|
+
albedo = mix(albedo, vec3(1), snow);
|
|
57
|
+
shadingNormal = mix(shadingNormal, normal, snow);
|
|
58
|
+
ssao = mix(ssao, 1.0, snow);`)}
|
|
59
|
+
|
|
60
|
+
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
61
|
+
|
|
62
|
+
${1===Z||2===Z?D.H`
|
|
63
|
+
float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
|
|
64
|
+
${(0,D.If)($,"mrr = applySnowToMRR(mrr, snow);")}
|
|
65
|
+
vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, additionalAmbientIrradiance);`:D.H`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
|
|
66
|
+
vec4 finalColor = vec4(shadedColor, opacity_);
|
|
67
|
+
outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${(0,D.If)($,", snow")});
|
|
68
|
+
`),t}const W=Object.freeze(Object.defineProperty({__proto__:null,build:A},Symbol.toStringTag,{value:"Module"}))},587(e,t,r){r.d(t,{G:()=>v,a:()=>x,b:()=>g});var o=r(82048),a=r(92573),n=r(98619),i=r(96608),s=r(34845),l=r(20304),c=r(31821),u=r(58029),d=r(12791),h=r(63761),m=r(63907),f=r(65786),p=r(14113);class v extends f.Y{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.frameCount=0}}function g(e){const t=new p.N5,r=t.fragment;return t.include(o.c),t.include(s.Ir),(0,n.Gc)(r),r.include(a.V),t.include(i.t,{highStepCount:!1,screenSpaceReflections:!0}),r.uniforms.add(new h.N("normalMap",e=>e.normalTexture),new h.N("depthMap",e=>e.depthTexture),new h.N("lastFrameDepthTexture",(e,t)=>t.reprojection.lastFrameDepth?.attachment),new d.x("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new d.x("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(m.yI)),new u.F("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new u.F("view",e=>e.camera.viewMatrix),new l.m("accumulatedFramesGI",e=>e.accumulatedFrames),new l.m("frameCount",e=>e.frameCount),new l.m("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new h.N("blueNoiseTex",e=>e.noiseTexture)),e.hasEmission&&r.uniforms.add(new h.N("lastFrameEmissionTexture",(e,t)=>t.reprojection.lastFrameEmission?.attachment)),r.constants.add("timeSamplesSize","float",64),r.constants.add("blueNoiseGridSize","float",8),r.code.add(c.H`
|
|
69
|
+
float computeIdleEmissionBlendWeight(float accumulatedFrames) {
|
|
70
|
+
float idleEmissionBlendProgress = clamp(
|
|
71
|
+
accumulatedFrames / ${c.H.float(40)},
|
|
72
|
+
0.0,
|
|
73
|
+
1.0
|
|
74
|
+
);
|
|
75
|
+
return mix(
|
|
76
|
+
${c.H.float(.012)},
|
|
77
|
+
${c.H.float(.008)},
|
|
78
|
+
idleEmissionBlendProgress
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
float computeIdleOcclusionBlendWeight(float accumulatedFrames) {
|
|
83
|
+
float idleOcclusionBlendProgress = clamp(
|
|
84
|
+
accumulatedFrames / ${c.H.float(60)},
|
|
85
|
+
0.0,
|
|
86
|
+
1.0
|
|
87
|
+
);
|
|
88
|
+
return mix(
|
|
89
|
+
${c.H.float(.095)},
|
|
90
|
+
${c.H.float(.008)},
|
|
91
|
+
pow(idleOcclusionBlendProgress, ${c.H.float(2)})
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Blue noise value based on a texture lookup
|
|
96
|
+
vec4 randomDirection(float index) {
|
|
97
|
+
vec2 textureOffset = vec2(mod(index, blueNoiseGridSize), floor(index / blueNoiseGridSize)) * timeSamplesSize;
|
|
98
|
+
vec2 noiseCoord = textureOffset + mod(
|
|
99
|
+
floor(uv * vec2(textureSize(normalMap, 0)) * scaleGlobalIllumination),
|
|
100
|
+
vec2(timeSamplesSize)
|
|
101
|
+
);
|
|
102
|
+
vec4 blueNoiseValue = texelFetch(blueNoiseTex, ivec2(noiseCoord), 0);
|
|
103
|
+
|
|
104
|
+
return 2.0 * blueNoiseValue - 1.0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
bool isEdgeDepth(float centerDepth, vec2 sampleUv) {
|
|
108
|
+
vec2 texelSize = 1.0 / vec2(textureSize(depthMap, 0));
|
|
109
|
+
float depthLeft = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(-texelSize.x, 0.0)));
|
|
110
|
+
float depthRight = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(texelSize.x, 0.0)));
|
|
111
|
+
float depthUp = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(0.0, texelSize.y)));
|
|
112
|
+
float depthDown = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(0.0, -texelSize.y)));
|
|
113
|
+
|
|
114
|
+
float maxDifference = max(max(abs(centerDepth - depthLeft), abs(centerDepth - depthRight)), max(abs(centerDepth - depthUp), abs(centerDepth - depthDown)));
|
|
115
|
+
|
|
116
|
+
return abs(maxDifference / centerDepth) > 0.01;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
vec3 sampleCosineHemisphere(vec2 u) {
|
|
120
|
+
float phi = 6.28318530718 * u.x;
|
|
121
|
+
float radius = sqrt(u.y);
|
|
122
|
+
float x = radius * cos(phi);
|
|
123
|
+
float y = radius * sin(phi);
|
|
124
|
+
float z = sqrt(max(0.0, 1.0 - u.y));
|
|
125
|
+
|
|
126
|
+
return vec3(x, y, z);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
mat3 basisFromNormal(vec3 n) {
|
|
130
|
+
vec3 up = abs(n.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
|
131
|
+
vec3 tangent = normalize(cross(up, n));
|
|
132
|
+
vec3 bitangent = cross(n, tangent);
|
|
133
|
+
|
|
134
|
+
return mat3(tangent, bitangent, n);
|
|
135
|
+
}
|
|
136
|
+
`),t.outputs.add("fragGlobalIllumination","vec4",0),t.outputs.add("fragWeight","float",1),r.main.add(c.H`
|
|
137
|
+
float depth = depthFromTexture(depthMap, uv);
|
|
138
|
+
|
|
139
|
+
// Early out if depth is out of range, such as in the sky
|
|
140
|
+
if (depth >= 1.0 || depth <= 0.0) {
|
|
141
|
+
fragGlobalIllumination = vec4(0.0, 0.0, 0.0, 1.0);
|
|
142
|
+
fragWeight = 0.0;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Get the normal of current fragment
|
|
147
|
+
ivec2 iuv = ivec2(uv * vec2(textureSize(normalMap, 0)));
|
|
148
|
+
vec4 normal4 = texelFetch(normalMap, iuv, 0);
|
|
149
|
+
if (normal4.a != 1.0) {
|
|
150
|
+
fragGlobalIllumination = vec4(0.0, 0.0, 0.0, 1.0);
|
|
151
|
+
fragWeight = 0.0;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
vec3 normal = normalize(normal4.xyz * 2.0 - 1.0);
|
|
155
|
+
|
|
156
|
+
// Reconstruct view space position of current fragment
|
|
157
|
+
float currentPixelDepth = linearizeDepth(depth);
|
|
158
|
+
vec3 currentPixelPos = reconstructPosition(uv * vec2(textureSize(normalMap, 0)), currentPixelDepth);
|
|
159
|
+
vec4 viewPos = vec4(currentPixelPos, 1.0);
|
|
160
|
+
|
|
161
|
+
// Reproject current view position to last frame
|
|
162
|
+
vec4 reprojectedViewPos = reprojectionViewMatrix * viewPos;
|
|
163
|
+
vec4 reprojectedCoordinate = applyProjectionMat(proj, reprojectedViewPos.xyz);
|
|
164
|
+
|
|
165
|
+
// Read last frame reprojected depth and GI value.
|
|
166
|
+
float lastFrameDepthViewPos = -linearDepthFromTextureLastFrame(lastFrameDepthTexture, reprojectedCoordinate.xy);
|
|
167
|
+
vec4 lastFrameGlobalIllumination = texture(lastFrameGlobalIlluminationTexture, reprojectedCoordinate.xy);
|
|
168
|
+
float historyOcclusionBlendWeight = texture(lastFrameGlobalIlluminationWeightTexture, reprojectedCoordinate.xy).r;
|
|
169
|
+
|
|
170
|
+
int steps;
|
|
171
|
+
float occlusionBlendWeight = 1.0;
|
|
172
|
+
float emissionBlendWeight = 1.0;
|
|
173
|
+
float idleEmissionBlendWeight = computeIdleEmissionBlendWeight(accumulatedFramesGI);
|
|
174
|
+
float idleOcclusionBlendWeight = computeIdleOcclusionBlendWeight(accumulatedFramesGI);
|
|
175
|
+
float reprojectionDepthMismatch = abs((lastFrameDepthViewPos + reprojectedViewPos.z) / max(lastFrameDepthViewPos, reprojectedViewPos.z));
|
|
176
|
+
bool hasReprojectionMismatch = reprojectionDepthMismatch > ${c.H.float(.01)};
|
|
177
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
178
|
+
bool isLowQualityEdgePixel = isScaledGlobalIllumination && isEdgeDepth(currentPixelDepth, uv);
|
|
179
|
+
bool resetEmissionHistory = false;
|
|
180
|
+
|
|
181
|
+
// Heuristic to determine blending weights and number of steps for occlusion and emission
|
|
182
|
+
if (hasReprojectionMismatch) {
|
|
183
|
+
if (isLowQualityEdgePixel) {
|
|
184
|
+
steps = 1;
|
|
185
|
+
occlusionBlendWeight = ${c.H.float(.008)};
|
|
186
|
+
resetEmissionHistory = true;
|
|
187
|
+
} else {
|
|
188
|
+
steps = 6;
|
|
189
|
+
occlusionBlendWeight = 1.0;
|
|
190
|
+
resetEmissionHistory = true;
|
|
191
|
+
}
|
|
192
|
+
} else {
|
|
193
|
+
steps = 1;
|
|
194
|
+
if (historyOcclusionBlendWeight > ${c.H.float(.5)}) {
|
|
195
|
+
occlusionBlendWeight = ${c.H.float(.1)};
|
|
196
|
+
emissionBlendWeight = ${c.H.float(.008)};
|
|
197
|
+
} else if (historyOcclusionBlendWeight > ${c.H.float(.02)}) {
|
|
198
|
+
occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
|
|
199
|
+
emissionBlendWeight = ${c.H.float(.008)};
|
|
200
|
+
} else {
|
|
201
|
+
occlusionBlendWeight = isScaledGlobalIllumination ? ${c.H.float(.008)} : idleOcclusionBlendWeight;
|
|
202
|
+
emissionBlendWeight = isScaledGlobalIllumination ? ${c.H.float(.002)} : idleEmissionBlendWeight;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
vec4 randomDirectionSample;
|
|
207
|
+
mat3 normalBasis = basisFromNormal(normal);
|
|
208
|
+
int temporalSampleStride = min(64 / steps, 6);
|
|
209
|
+
float temporalFrameOffset = mod(frameCount, float(64 / steps));
|
|
210
|
+
|
|
211
|
+
// For each ray determine if it hits geometry and calculate occlusion and emission values
|
|
212
|
+
float stepSize = 1.0 / float(steps);
|
|
213
|
+
for (int i = 0; i < steps; ++i) {
|
|
214
|
+
float sampleIndex = float(i * temporalSampleStride + int(temporalFrameOffset));
|
|
215
|
+
randomDirectionSample = randomDirection(sampleIndex);
|
|
216
|
+
vec2 hemisphereSample = randomDirectionSample.rg * 0.5 + 0.5;
|
|
217
|
+
vec3 rayDirection = normalBasis * sampleCosineHemisphere(hemisphereSample);
|
|
218
|
+
vec3 hit = screenSpaceIntersection(rayDirection, viewPos.xyz, normalize(viewPos.xyz), normal, randomDirectionSample.a * 0.5 + 0.5, true);
|
|
219
|
+
|
|
220
|
+
if (hit.z > 0.0) {
|
|
221
|
+
// Emission - reproject to get and accumulate emission from last frame
|
|
222
|
+
vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
|
|
223
|
+
vec3 emissionColor = ${(0,c.If)(e.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
|
|
224
|
+
|
|
225
|
+
fragGlobalIllumination.rgb += emissionColor * stepSize;
|
|
226
|
+
} else {
|
|
227
|
+
// Occlusion - heuristic modulating sky intensity based on angle to main light
|
|
228
|
+
vec4 viewMainLightDirection = view * vec4(mainLightDirection, 0.0);
|
|
229
|
+
float skyModulation = pow(max(dot(rayDirection, viewMainLightDirection.xyz), 0.0), 3.0) * 5.5;
|
|
230
|
+
float skyFacingWeight = clamp(3.5 * dot(viewMainLightDirection.xyz, normal), 0.0, 1.0);
|
|
231
|
+
skyModulation = mix(1.0, skyModulation * 0.2 + 0.8, skyFacingWeight);
|
|
232
|
+
fragGlobalIllumination.a += skyModulation * stepSize;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Rendering trick add noise to reduce accumulation artifacts
|
|
237
|
+
float accumulationDither = occlusionBlendWeight < 1.0
|
|
238
|
+
? randomDirectionSample.b * ${c.H.float(.0039)}
|
|
239
|
+
: 0.0;
|
|
240
|
+
|
|
241
|
+
// Accumulate occlusion
|
|
242
|
+
// Accumulate emission
|
|
243
|
+
vec3 lastFrameEmission = lastFrameGlobalIllumination.rgb;
|
|
244
|
+
float emissionDitherScale = isScaledGlobalIllumination ? ${c.H.float(.25)} : 1.0;
|
|
245
|
+
fragGlobalIllumination.rgb = resetEmissionHistory
|
|
246
|
+
? vec3(0.0)
|
|
247
|
+
: mix(lastFrameEmission + accumulationDither * emissionDitherScale, fragGlobalIllumination.rgb, emissionBlendWeight);
|
|
248
|
+
|
|
249
|
+
// Accumulate occlusion
|
|
250
|
+
fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
|
|
251
|
+
|
|
252
|
+
fragWeight = occlusionBlendWeight;
|
|
253
|
+
`),t}const x=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:v,build:g},Symbol.toStringTag,{value:"Module"}))},52516(e,t,r){r.d(t,{G:()=>v,a:()=>x,b:()=>g});var o=r(48163),a=r(82048),n=r(52540),i=r(72885),s=r(34845),l=r(32976),c=r(68259),u=r(20304),d=r(31821),h=r(15976),m=r(63761),f=r(65786),p=r(14113);class v extends f.Y{constructor(){super(...arguments),this.blurSize=(0,o.vt)()}}function g(){const e=new p.N5,t=e.fragment;e.include(a.c),e.include(s.Ir),e.include(i.Q);return t.include(n.E),t.uniforms.add(new l.o("hasEmission",e=>e.hasEmission),new m.N("depthMap",e=>e.depthTexture),new m.N("normalMap",e=>e.normalTexture),new h.o("globalIlluminationTexture",e=>e.texture),new h.o("globalIlluminationWeightTexture",e=>e.weightTexture),new c.t("blurSize",e=>e.blurSize),new u.m("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new u.m("projScale",(e,t)=>{const r=t.camera.distance;return r>5e4?Math.max(0,e.projScale-(r-5e4)):e.projScale})),t.code.add(d.H`
|
|
254
|
+
void accumulateBlurSample(
|
|
255
|
+
vec2 sampleUv,
|
|
256
|
+
float sampleOffset,
|
|
257
|
+
float centerDepth,
|
|
258
|
+
vec3 centerNormal,
|
|
259
|
+
float depthSharpness,
|
|
260
|
+
bool skipOcclusionBlur,
|
|
261
|
+
inout float emissionWeightSum,
|
|
262
|
+
inout vec3 emissionSum,
|
|
263
|
+
inout float occlusionWeightSum,
|
|
264
|
+
inout float occlusionSum,
|
|
265
|
+
float centerOcclusionBlendWeight
|
|
266
|
+
) {
|
|
267
|
+
vec4 sampleGlobalIllumination = texture(globalIlluminationTexture, sampleUv);
|
|
268
|
+
vec3 sampleNormal = texture(normalMap, sampleUv).rgb;
|
|
269
|
+
float sampleDepth = linearDepthFromTexture(depthMap, sampleUv);
|
|
270
|
+
|
|
271
|
+
float depthDelta = sampleDepth - centerDepth;
|
|
272
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
273
|
+
float normalSimilarityWeight = globalIlluminationNormalSimilarityWeight(sampleNormal, centerNormal);
|
|
274
|
+
float depthNormalCorrection = globalIlluminationDepthNormalCorrection(sampleNormal);
|
|
275
|
+
vec3 emission = sampleGlobalIllumination.rgb;
|
|
276
|
+
float emissionSpatialWeightMultiplier = isScaledGlobalIllumination ? ${d.H.float(400)} : 1.0;
|
|
277
|
+
|
|
278
|
+
float emissionWeight = exp(
|
|
279
|
+
-sampleOffset * sampleOffset * ${d.H.float(1/24.5)} * ${d.H.float(.1)} * emissionSpatialWeightMultiplier
|
|
280
|
+
- depthDelta * depthDelta * depthSharpness * depthNormalCorrection
|
|
281
|
+
);
|
|
282
|
+
emissionWeight *= normalSimilarityWeight;
|
|
283
|
+
emissionWeightSum += emissionWeight;
|
|
284
|
+
emissionSum += emissionWeight * emission;
|
|
285
|
+
|
|
286
|
+
if (skipOcclusionBlur) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
float occlusionSpatialKernelScale = centerOcclusionBlendWeight > ${d.H.float(.03)}
|
|
291
|
+
? ${d.H.float(.08)}
|
|
292
|
+
: ${d.H.float(1.5)};
|
|
293
|
+
float occlusionWeight = exp(-sampleOffset * sampleOffset * occlusionSpatialKernelScale - depthDelta * depthDelta * depthSharpness);
|
|
294
|
+
occlusionWeight *= normalSimilarityWeight;
|
|
295
|
+
occlusionWeightSum += occlusionWeight;
|
|
296
|
+
occlusionSum += occlusionWeight * sampleGlobalIllumination.a;
|
|
297
|
+
}
|
|
298
|
+
`),t.main.add(d.H`
|
|
299
|
+
vec3 emissionSum = vec3(0.0);
|
|
300
|
+
float emissionWeightSum = 0.0;
|
|
301
|
+
|
|
302
|
+
vec4 centerGlobalIllumination = texture(globalIlluminationTexture, uv);
|
|
303
|
+
float centerOcclusionBlendWeight = texture(globalIlluminationWeightTexture, uv).r;
|
|
304
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
305
|
+
bool shouldReuseCenterOcclusion = isScaledGlobalIllumination && centerOcclusionBlendWeight <= ${d.H.float(.03)};
|
|
306
|
+
bool shouldSkipLowQualityBlur = !hasEmission && shouldReuseCenterOcclusion;
|
|
307
|
+
if (shouldSkipLowQualityBlur) {
|
|
308
|
+
fragColor = centerGlobalIllumination;
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
float centerDepth = linearDepthFromTexture(depthMap, uv);
|
|
313
|
+
vec3 centerNormal = texture(normalMap, uv).rgb;
|
|
314
|
+
float occlusionSum = 0.0;
|
|
315
|
+
float occlusionWeightSum = 0.0;
|
|
316
|
+
|
|
317
|
+
float depthSharpness = globalIlluminationDepthSharpness(projScale, centerDepth);
|
|
318
|
+
for (int sampleOffset = -${d.H.int(4)}; sampleOffset <= ${d.H.int(4)}; ++sampleOffset) {
|
|
319
|
+
float sampleOffsetFloat = float(sampleOffset);
|
|
320
|
+
vec2 sampleUv = uv + sampleOffsetFloat * blurSize;
|
|
321
|
+
accumulateBlurSample(
|
|
322
|
+
sampleUv,
|
|
323
|
+
sampleOffsetFloat,
|
|
324
|
+
centerDepth,
|
|
325
|
+
centerNormal,
|
|
326
|
+
depthSharpness,
|
|
327
|
+
shouldReuseCenterOcclusion,
|
|
328
|
+
emissionWeightSum,
|
|
329
|
+
emissionSum,
|
|
330
|
+
occlusionWeightSum,
|
|
331
|
+
occlusionSum,
|
|
332
|
+
centerOcclusionBlendWeight
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
vec3 blurredEmission = (emissionSum / emissionWeightSum).rgb;
|
|
337
|
+
float occlusion = shouldReuseCenterOcclusion ? centerGlobalIllumination.a : occlusionSum / occlusionWeightSum;
|
|
338
|
+
fragColor = vec4(blurredEmission, occlusion);
|
|
339
|
+
`),e}const x=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationBlurDrawParameters:v,build:g},Symbol.toStringTag,{value:"Module"}))},50704(e,t,r){r.d(t,{G:()=>m,a:()=>p,b:()=>f});var o=r(82048),a=r(52540),n=r(72885),i=r(34845),s=r(20304),l=r(31821),c=r(15976),u=r(63761),d=r(65786),h=r(14113);class m extends d.Y{}function f(){const e=new h.N5,t=e.fragment;return e.include(o.c),e.include(i.Ir),e.include(n.Q),t.include(a.E),t.uniforms.add(new u.N("depthMap",e=>e.depthTexture),new u.N("normalMap",e=>e.normalTexture),new c.o("tex",e=>e.colorTexture),new c.o("globalIlluminationWeightTexture",e=>e.weightTexture),new s.m("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new s.m("projScale",(e,t)=>{const r=t.camera.distance;return r>5e4?Math.max(0,e.projScale-(r-5e4)):e.projScale})),t.code.add(l.H`float computeDepthWeight(float sampleDepth, float centerDepth, float depthSharpness) {
|
|
340
|
+
float depthDelta = abs(sampleDepth - centerDepth);
|
|
341
|
+
return exp(-0.08 - depthDelta * depthDelta * depthSharpness);
|
|
342
|
+
}
|
|
343
|
+
vec3 normalFromTexture(sampler2D normalTexture, vec2 uv) {
|
|
344
|
+
ivec2 normalTextureSize = textureSize(normalTexture, 0);
|
|
345
|
+
ivec2 normalTexel = clamp(ivec2(uv * vec2(normalTextureSize)), ivec2(0), normalTextureSize - ivec2(1));
|
|
346
|
+
return texelFetch(normalTexture, normalTexel, 0).xyz;
|
|
347
|
+
}
|
|
348
|
+
void sampleJointBilateralUpscale(vec2 sampleUv, out vec4 upscaledColor, out float upscaledWeight) {
|
|
349
|
+
float centerDepth = linearDepthFromTexture(depthMap, sampleUv);
|
|
350
|
+
vec3 centerNormal = normalFromTexture(normalMap, sampleUv);
|
|
351
|
+
float depthSharpness = globalIlluminationDepthSharpness(projScale, centerDepth, centerNormal);
|
|
352
|
+
vec2 lowResTextureSize = vec2(textureSize(tex, 0));
|
|
353
|
+
vec2 texelPosition = sampleUv * lowResTextureSize - 0.5;
|
|
354
|
+
vec2 texelBase = floor(texelPosition);
|
|
355
|
+
vec2 bilinearWeightsFraction = fract(texelPosition);
|
|
356
|
+
vec2 uv00 = (texelBase + vec2(0.5, 0.5)) / lowResTextureSize;
|
|
357
|
+
vec2 uv10 = (texelBase + vec2(1.5, 0.5)) / lowResTextureSize;
|
|
358
|
+
vec2 uv01 = (texelBase + vec2(0.5, 1.5)) / lowResTextureSize;
|
|
359
|
+
vec2 uv11 = (texelBase + vec2(1.5, 1.5)) / lowResTextureSize;
|
|
360
|
+
vec4 color00 = texture(tex, uv00);
|
|
361
|
+
vec4 color10 = texture(tex, uv10);
|
|
362
|
+
vec4 color01 = texture(tex, uv01);
|
|
363
|
+
vec4 color11 = texture(tex, uv11);
|
|
364
|
+
float weight00 = texture(globalIlluminationWeightTexture, uv00).r;
|
|
365
|
+
float weight10 = texture(globalIlluminationWeightTexture, uv10).r;
|
|
366
|
+
float weight01 = texture(globalIlluminationWeightTexture, uv01).r;
|
|
367
|
+
float weight11 = texture(globalIlluminationWeightTexture, uv11).r;
|
|
368
|
+
float depth00 = linearDepthFromTexture(depthMap, uv00);
|
|
369
|
+
float depth10 = linearDepthFromTexture(depthMap, uv10);
|
|
370
|
+
float depth01 = linearDepthFromTexture(depthMap, uv01);
|
|
371
|
+
float depth11 = linearDepthFromTexture(depthMap, uv11);
|
|
372
|
+
vec3 normal00 = normalFromTexture(normalMap, uv00);
|
|
373
|
+
vec3 normal10 = normalFromTexture(normalMap, uv10);
|
|
374
|
+
vec3 normal01 = normalFromTexture(normalMap, uv01);
|
|
375
|
+
vec3 normal11 = normalFromTexture(normalMap, uv11);
|
|
376
|
+
float bilinearWeight00 = (1.0 - bilinearWeightsFraction.x) * (1.0 - bilinearWeightsFraction.y);
|
|
377
|
+
float bilinearWeight10 = bilinearWeightsFraction.x * (1.0 - bilinearWeightsFraction.y);
|
|
378
|
+
float bilinearWeight01 = (1.0 - bilinearWeightsFraction.x) * bilinearWeightsFraction.y;
|
|
379
|
+
float bilinearWeight11 = bilinearWeightsFraction.x * bilinearWeightsFraction.y;
|
|
380
|
+
float jointBilateralWeight00 = bilinearWeight00 * computeDepthWeight(depth00, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal00, centerNormal);
|
|
381
|
+
float jointBilateralWeight10 = bilinearWeight10 * computeDepthWeight(depth10, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal10, centerNormal);
|
|
382
|
+
float jointBilateralWeight01 = bilinearWeight01 * computeDepthWeight(depth01, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal01, centerNormal);
|
|
383
|
+
float jointBilateralWeight11 = bilinearWeight11 * computeDepthWeight(depth11, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal11, centerNormal);
|
|
384
|
+
float jointBilateralWeightSum = jointBilateralWeight00 + jointBilateralWeight10 + jointBilateralWeight01 + jointBilateralWeight11;
|
|
385
|
+
if (jointBilateralWeightSum < 0.0001) {
|
|
386
|
+
vec2 nearestUv = (floor(texelPosition + 0.5) + vec2(0.5)) / lowResTextureSize;
|
|
387
|
+
upscaledColor = texture(tex, nearestUv);
|
|
388
|
+
upscaledWeight = texture(globalIlluminationWeightTexture, nearestUv).r;
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
upscaledColor = (
|
|
392
|
+
color00 * jointBilateralWeight00 +
|
|
393
|
+
color10 * jointBilateralWeight10 +
|
|
394
|
+
color01 * jointBilateralWeight01 +
|
|
395
|
+
color11 * jointBilateralWeight11
|
|
396
|
+
) / jointBilateralWeightSum;
|
|
397
|
+
upscaledWeight = (
|
|
398
|
+
weight00 * jointBilateralWeight00 +
|
|
399
|
+
weight10 * jointBilateralWeight10 +
|
|
400
|
+
weight01 * jointBilateralWeight01 +
|
|
401
|
+
weight11 * jointBilateralWeight11
|
|
402
|
+
) / jointBilateralWeightSum;
|
|
403
|
+
}`),e.outputs.add("fragColor","vec4",0),e.outputs.add("fragWeight","float",1),t.main.add(l.H`sampleJointBilateralUpscale(uv, fragColor, fragWeight);`),e}const p=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationUpscaleDrawParameters:m,build:f},Symbol.toStringTag,{value:"Module"}))},57323(e,t,r){r.d(t,{R:()=>R,b:()=>j});var o=r(32680),a=r(49255),n=r(68317),i=r(76597),s=r(24321),l=r(2585),c=r(43519),u=r(96336),d=r(39014),h=r(53466),m=r(92700),f=r(35640),p=r(40261),v=r(71651),g=r(32971),x=r(98619),b=r(22393),w=r(59469),y=r(32482),M=r(43259),S=r(58614),T=r(27950),C=r(77949),I=r(33079),_=r(71988),P=r(20304),z=r(31821),E=r(63761),F=r(27832),O=r(43616),D=r(26934),H=r(73541),B=r(14113);function j(e){const t=new B.N5,{attributes:r,vertex:j,fragment:R,varyings:N}=t,{output:G,offsetBackfaces:A,pbrMode:W,snowCover:L,spherical:V}=e,k=1===W||2===W;if((0,C.NB)(j,e),r.add("position","vec3"),j.inputs.add("position",()=>"position"),N.add("vpos","vec3",{invariant:!0}),t.include(M.A,e),t.include(l.B,e),t.include(f.Ge,e),!(0,a._o)(G))return t.include(p.E,e),t;(0,C.yu)(t.vertex,e),t.include(u.Y,e),t.include(i.d),A&&t.include(o.M),N.add("vNormalWorld","vec3"),N.add("localvpos","vec3",{invariant:!0}),t.include(h.U,e),t.include(d.K,e),t.include(s.v,e),t.include(m.c,e),j.include(c.WD),j.include(c.oF),j.uniforms.add(new _.E("externalColor",e=>e.externalColor,{supportsNaN:!0})),N.add("vcolorExt","vec4"),t.include(e.instancedDoublePrecision?y.QH:y.LA,e),j.include(D.Q),j.main.add(z.H`
|
|
404
|
+
forwardVertexColor();
|
|
405
|
+
|
|
406
|
+
MaskedColor maskedColorExt =
|
|
407
|
+
applySymbolColor(applyVVColor(applyInstanceColor(createMaskedFromNaNColor(externalColor))));
|
|
408
|
+
|
|
409
|
+
vcolorExt = maskedColorExt.color;
|
|
410
|
+
forwardColorMixMode(maskedColorExt.mask);
|
|
411
|
+
|
|
412
|
+
bool alphaCut = opacityMixMode != ${z.H.int(O.Um.ignore)} && vcolorExt.a < alphaCutoff;
|
|
413
|
+
vpos = getVertexInLocalOriginSpace();
|
|
414
|
+
|
|
415
|
+
localvpos = vpos - view[3].xyz;
|
|
416
|
+
vpos = subtractOrigin(vpos);
|
|
417
|
+
vNormalWorld = dpNormal(vvLocalNormal(normalModel()));
|
|
418
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
419
|
+
vec4 basePosition = transformPosition(proj, view, vpos);
|
|
420
|
+
|
|
421
|
+
forwardTextureCoordinates();
|
|
422
|
+
forwardLinearDepthToReadShadowMap();
|
|
423
|
+
gl_Position = alphaCut ? vec4(1e38, 1e38, 1e38, 1.0) :
|
|
424
|
+
${(0,z.If)(A,"offsetBackfacingClipPosition(basePosition, vpos, vNormalWorld, cameraPosition);","basePosition;")}
|
|
425
|
+
`);const{hasColorTexture:U,hasColorTextureTransform:q}=e;return R.include(g.kA,e),R.include(v.n,e),t.include(S.S,e),R.include(n.HQ,e),t.include(H.D,e),(0,C.yu)(R,e),(0,x.Gc)(R),(0,g.a8)(R),(0,g.eU)(R),R.uniforms.add(j.uniforms.get("localOrigin"),j.uniforms.get("view"),new I.t("ambient",e=>e.ambient),new I.t("diffuse",e=>e.diffuse),new P.m("opacity",e=>e.opacity),new P.m("layerOpacity",e=>e.layerOpacity)),U&&R.uniforms.add(new E.N("tex",e=>e.texture)),t.include(w._,e),R.include(b.c,e),R.include(T.N),R.include(F.b,e),(0,x.O4)(R),R.main.add(z.H`
|
|
426
|
+
discardBySlice(vpos);
|
|
427
|
+
vec4 texColor = ${U?`texture(tex, ${q?"colorUV":"vuv0"})`:" vec4(1.0)"};
|
|
428
|
+
${(0,z.If)(U,`${(0,z.If)(e.textureAlphaPremultiplied,"texColor.rgb /= texColor.a;")}\n discardOrAdjustAlpha(texColor);`)}
|
|
429
|
+
vec3 viewDirection = normalize(vpos - cameraPosition);
|
|
430
|
+
applyPBRFactors();
|
|
431
|
+
float ssao = evaluateAmbientOcclusionInverse();
|
|
432
|
+
ssao *= getBakedOcclusion();
|
|
433
|
+
|
|
434
|
+
float additionalAmbientScale = additionalDirectedAmbientLight(vpos + localOrigin);
|
|
435
|
+
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
436
|
+
float shadow = readShadow(additionalAmbientScale, vpos);
|
|
437
|
+
vec3 matColor = max(ambient, diffuse);
|
|
438
|
+
${e.hasVertexColors?z.H`vec3 albedo = mixExternalColor(vColor.rgb * matColor, texColor.rgb, vcolorExt.rgb, colorMixMode);
|
|
439
|
+
float opacity_ = layerOpacity * mixExternalOpacity(vColor.a * opacity, texColor.a, vcolorExt.a, opacityMixMode);`:z.H`vec3 albedo = mixExternalColor(matColor, texColor.rgb, vcolorExt.rgb, colorMixMode);
|
|
440
|
+
float opacity_ = layerOpacity * mixExternalOpacity(opacity, texColor.a, vcolorExt.a, opacityMixMode);`}
|
|
441
|
+
|
|
442
|
+
vec3 shadingNormal = normalize(vNormalWorld);
|
|
443
|
+
vec3 groundNormal = ${V?"normalize(vpos + localOrigin)":"vec3(0.0, 0.0, 1.0)"};
|
|
444
|
+
|
|
445
|
+
${(0,z.If)(L,"vec3 faceNormal = screenDerivativeNormal(vpos);\n float snow = getRealisticTreeSnow(faceNormal, shadingNormal, groundNormal);\n albedo = mix(albedo, vec3(1), snow);")}
|
|
446
|
+
|
|
447
|
+
${z.H`albedo *= 1.2;
|
|
448
|
+
vec3 viewForward = vec3(view[0][2], view[1][2], view[2][2]);
|
|
449
|
+
float alignmentLightView = clamp(dot(viewForward, -mainLightDirection), 0.0, 1.0);
|
|
450
|
+
float transmittance = 1.0 - clamp(dot(viewForward, shadingNormal), 0.0, 1.0);
|
|
451
|
+
float treeRadialFalloff = vColor.r;
|
|
452
|
+
float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);
|
|
453
|
+
additionalLight += backLightFactor * mainLightIntensity;`}
|
|
454
|
+
|
|
455
|
+
${k?z.H`float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
|
|
456
|
+
${(0,z.If)(L,"mrr = applySnowToMRR(mrr, snow);")}
|
|
457
|
+
vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, groundNormal, mrr, additionalAmbientIrradiance);`:z.H`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
|
|
458
|
+
vec4 finalColor = vec4(shadedColor, opacity_);
|
|
459
|
+
outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${(0,z.If)(L,", 1.0")});`),t}const R=Object.freeze(Object.defineProperty({__proto__:null,build:j},Symbol.toStringTag,{value:"Module"}))},15581(e,t,r){r.d(t,{S:()=>b,b:()=>v,g:()=>g});var o=r(37585),a=r(48163),n=r(82048),i=r(52540),s=r(65261),l=r(34845),c=r(77108),u=r(47286),d=r(33094),h=r(20304),m=r(31821),f=r(63761),p=r(14113);function v(){const e=new p.N5,t=e.fragment;return e.include(n.c),e.include(l.Ir),t.include(i.E),t.include(s.C),t.uniforms.add(new d.U("radius",e=>g(e.camera))).code.add(m.H`vec3 sphere[16] = vec3[16](
|
|
460
|
+
vec3(0.186937, 0.0, 0.0),
|
|
461
|
+
vec3(0.700542, 0.0, 0.0),
|
|
462
|
+
vec3(-0.864858, -0.481795, -0.111713),
|
|
463
|
+
vec3(-0.624773, 0.102853, -0.730153),
|
|
464
|
+
vec3(-0.387172, 0.260319, 0.007229),
|
|
465
|
+
vec3(-0.222367, -0.642631, -0.707697),
|
|
466
|
+
vec3(-0.01336, -0.014956, 0.169662),
|
|
467
|
+
vec3(0.122575, 0.1544, -0.456944),
|
|
468
|
+
vec3(-0.177141, 0.85997, -0.42346),
|
|
469
|
+
vec3(-0.131631, 0.814545, 0.524355),
|
|
470
|
+
vec3(-0.779469, 0.007991, 0.624833),
|
|
471
|
+
vec3(0.308092, 0.209288,0.35969),
|
|
472
|
+
vec3(0.359331, -0.184533, -0.377458),
|
|
473
|
+
vec3(0.192633, -0.482999, -0.065284),
|
|
474
|
+
vec3(0.233538, 0.293706, -0.055139),
|
|
475
|
+
vec3(0.417709, -0.386701, 0.442449)
|
|
476
|
+
);
|
|
477
|
+
float fallOffFunction(float vv, float vn, float bias) {
|
|
478
|
+
float f = max(radius * radius - vv, 0.0);
|
|
479
|
+
return f * f * f * max(vn - bias, 0.0);
|
|
480
|
+
}`),t.code.add(m.H`float aoValueFromPositionsAndNormal(vec3 C, vec3 n_C, vec3 Q) {
|
|
481
|
+
vec3 v = Q - C;
|
|
482
|
+
float vv = dot(v, v);
|
|
483
|
+
float vn = dot(normalize(v), n_C);
|
|
484
|
+
return fallOffFunction(vv, vn, 0.1);
|
|
485
|
+
}`),e.outputs.add("fragOcclusion","float"),t.uniforms.add(new f.N("normalMap",e=>e.normalTexture),new f.N("depthMap",e=>e.depthTexture),new h.m("projScale",e=>e.projScale),new f.N("rnm",e=>e.noiseTexture),new u.G("rnmScale",(e,t)=>(0,o.hZ)(x,t.camera.fullWidth/e.noiseTexture.descriptor.width,t.camera.fullHeight/e.noiseTexture.descriptor.height)),new h.m("intensity",e=>e.intensity),new c.E("screenSize",e=>(0,o.hZ)(x,e.camera.fullWidth,e.camera.fullHeight))).main.add(m.H`
|
|
486
|
+
float depth = depthFromTexture(depthMap, uv);
|
|
487
|
+
|
|
488
|
+
// Early out if depth is out of range, such as in the sky
|
|
489
|
+
if (depth >= 1.0 || depth <= 0.0) {
|
|
490
|
+
fragOcclusion = 1.0;
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// get the normal of current fragment
|
|
495
|
+
ivec2 iuv = ivec2(uv * vec2(textureSize(normalMap, 0)));
|
|
496
|
+
vec4 norm4 = texelFetch(normalMap, iuv, 0);
|
|
497
|
+
if(norm4.a != 1.0) {
|
|
498
|
+
fragOcclusion = 1.0;
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
vec3 norm = normalize(norm4.xyz * 2.0 - 1.0);
|
|
502
|
+
|
|
503
|
+
float currentPixelDepth = linearizeDepth(depth);
|
|
504
|
+
vec3 currentPixelPos = reconstructPosition(gl_FragCoord.xy, currentPixelDepth);
|
|
505
|
+
|
|
506
|
+
float sum = 0.0;
|
|
507
|
+
vec3 tapPixelPos;
|
|
508
|
+
|
|
509
|
+
vec3 fres = normalize(2.0 * texture(rnm, uv * rnmScale).xyz - 1.0);
|
|
510
|
+
|
|
511
|
+
// note: the factor 2.0 should not be necessary, but makes ssao much nicer.
|
|
512
|
+
// bug or deviation from CE somewhere else?
|
|
513
|
+
float ps = projScale / (2.0 * currentPixelPos.z * zScale.x + zScale.y);
|
|
514
|
+
|
|
515
|
+
for(int i = 0; i < ${m.H.int(16)}; ++i) {
|
|
516
|
+
vec2 unitOffset = reflect(sphere[i], fres).xy;
|
|
517
|
+
vec2 offset = vec2(-unitOffset * radius * ps);
|
|
518
|
+
|
|
519
|
+
// don't use current or very nearby samples
|
|
520
|
+
if( abs(offset.x) < 2.0 || abs(offset.y) < 2.0){
|
|
521
|
+
continue;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
vec2 tc = vec2(gl_FragCoord.xy + offset);
|
|
525
|
+
if (tc.x < 0.0 || tc.y < 0.0 || tc.x > screenSize.x || tc.y > screenSize.y) continue;
|
|
526
|
+
vec2 tcTap = tc / screenSize;
|
|
527
|
+
float occluderFragmentDepth = linearDepthFromTexture(depthMap, tcTap);
|
|
528
|
+
|
|
529
|
+
tapPixelPos = reconstructPosition(tc, occluderFragmentDepth);
|
|
530
|
+
|
|
531
|
+
sum += aoValueFromPositionsAndNormal(currentPixelPos, norm, tapPixelPos);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// output the result
|
|
535
|
+
float A = max(1.0 - sum * intensity / float(${m.H.int(16)}), 0.0);
|
|
536
|
+
|
|
537
|
+
// Anti-tone map to reduce contrast and drag dark region farther: (x^0.2 + 1.2 * x^4) / 2.2
|
|
538
|
+
A = (pow(A, 0.2) + 1.2 * pow(A, 4.0)) * INV_GAMMA;
|
|
539
|
+
|
|
540
|
+
fragOcclusion = A;
|
|
541
|
+
`),e}function g(e){return Math.max(10,20*e.computeScreenPixelSizeAtDist(Math.abs(4*e.relativeElevation)))}const x=(0,a.vt)(),b=Object.freeze(Object.defineProperty({__proto__:null,build:v,getRadius:g},Symbol.toStringTag,{value:"Module"}))},95774(e,t,r){r.d(t,{S:()=>h,b:()=>d});var o=r(82048),a=r(52540),n=r(68259),i=r(20304),s=r(31821),l=r(15976),c=r(63761),u=r(14113);function d(){const e=new u.N5,t=e.fragment;return e.include(o.c),t.include(a.E),t.uniforms.add(new c.N("depthMap",e=>e.depthTexture),new l.o("tex",e=>e.colorTexture),new n.t("blurSize",e=>e.blurSize),new i.m("projScale",(e,t)=>{const r=t.camera.distance;return r>5e4?Math.max(0,e.projScale-(r-5e4)):e.projScale})),t.code.add(s.H`
|
|
542
|
+
void blurFunction(vec2 uv, float r, float center_d, float sharpness, inout float wTotal, inout float bTotal) {
|
|
543
|
+
float c = texture(tex, uv).r;
|
|
544
|
+
float d = linearDepthFromTexture(depthMap, uv);
|
|
545
|
+
|
|
546
|
+
float ddiff = d - center_d;
|
|
547
|
+
|
|
548
|
+
float w = exp(-r * r * ${s.H.float(.08)} - ddiff * ddiff * sharpness);
|
|
549
|
+
wTotal += w;
|
|
550
|
+
bTotal += w * c;
|
|
551
|
+
}
|
|
552
|
+
`),e.outputs.add("fragBlur","float"),t.main.add(s.H`
|
|
553
|
+
float b = 0.0;
|
|
554
|
+
float w_total = 0.0;
|
|
555
|
+
|
|
556
|
+
float center_d = linearDepthFromTexture(depthMap, uv);
|
|
557
|
+
|
|
558
|
+
float sharpness = -0.05 * projScale / center_d;
|
|
559
|
+
for (int r = -${s.H.int(4)}; r <= ${s.H.int(4)}; ++r) {
|
|
560
|
+
float rf = float(r);
|
|
561
|
+
vec2 uvOffset = uv + rf * blurSize;
|
|
562
|
+
blurFunction(uvOffset, rf, center_d, sharpness, w_total, b);
|
|
563
|
+
}
|
|
564
|
+
fragBlur = b / w_total;`),e}const h=Object.freeze(Object.defineProperty({__proto__:null,build:d},Symbol.toStringTag,{value:"Module"}))},43609(e,t,r){r.d(t,{a:()=>n,f:()=>i,n:()=>a});var o=r(34275);function a(e,t){n(e.typedBuffer,t.typedBuffer,e.typedBufferStride,t.typedBufferStride)}function n(e,t,r=2,a=r){const n=t.length/2;let i=0,s=0;if(!(0,o.iu)(t)||(0,o.dk)(t)){for(let o=0;o<n;++o)e[i]=t[s],e[i+1]=t[s+1],i+=r,s+=a;return}const l=(0,o.a3)(t);if((0,o.JI)(t))for(let o=0;o<n;++o)e[i]=Math.max(t[s]/l,-1),e[i+1]=Math.max(t[s+1]/l,-1),i+=r,s+=a;else for(let o=0;o<n;++o)e[i]=t[s]/l,e[i+1]=t[s+1]/l,i+=r,s+=a}function i(e,t,r,o){const a=e.typedBuffer,n=e.typedBufferStride,i=o?.count??e.count;let s=(o?.dstIndex??0)*n;for(let e=0;e<i;++e)a[s]=t,a[s+1]=r,s+=n}Object.freeze(Object.defineProperty({__proto__:null,fill:i,normalizeIntegerBuffer:n,normalizeIntegerBufferView:a},Symbol.toStringTag,{value:"Module"}))},73354(e,t,r){r.d(t,{a:()=>h,b:()=>l,c:()=>s,d:()=>n,e:()=>m,f:()=>d,l:()=>u,n:()=>f,t:()=>i});var o=r(40876),a=(r(44208),r(72727));function n(e,t,r){i(e.typedBuffer,t.typedBuffer,r,e.typedBufferStride,t.typedBufferStride)}function i(e,t,r,o=3,n=o){const i=(0,a.k)(e.length,o,3),s=(0,a.k)(t.length,n,3),l=Math.min(i,s),c=r[0],u=r[1],d=r[2],h=r[4],m=r[5],f=r[6],p=r[8],v=r[9],g=r[10],x=r[12],b=r[13],w=r[14];let y=0,M=0;for(let r=0;r<l;r++){const r=t[y],a=t[y+1],i=t[y+2];e[M]=c*r+h*a+p*i+x,e[M+1]=u*r+m*a+v*i+b,e[M+2]=d*r+f*a+g*i+w,y+=n,M+=o}return e}function s(e,t,r){l(e.typedBuffer,t.typedBuffer,r,e.typedBufferStride,t.typedBufferStride)}function l(e,t,r,o=3,n=o){const i=(0,a.k)(e.length,o,3),s=(0,a.k)(t.length,n,3),l=Math.min(i,s),c=r[0],u=r[1],d=r[2],h=r[3],m=r[4],f=r[5],p=r[6],v=r[7],g=r[8];let x=0,b=0;for(let r=0;r<l;r++){const r=t[x],a=t[x+1],i=t[x+2];e[b]=c*r+h*a+p*i,e[b+1]=u*r+m*a+v*i,e[b+2]=d*r+f*a+g*i,x+=n,b+=o}}function c(e,t,r,o=3,a=o){const n=Math.min(e.length/o,t.length/a);let i=0,s=0;for(let l=0;l<n;l++)e[s]=r*t[i],e[s+1]=r*t[i+1],e[s+2]=r*t[i+2],i+=a,s+=o;return e}function u(e,t,r,o){d(e.typedBuffer,t.typedBuffer,r,o,e.typedBufferStride,t.typedBufferStride)}function d(e,t,r,a,n=3,i=n){const s=Math.min(e.length/n,t.length/i);let l=0,c=0;const u=1/o.Tf;for(let o=0;o<s;o++)e[c]=a*(r*t[l])**u,e[c+1]=a*(r*t[l+1])**u,e[c+2]=a*(r*t[l+2])**u,l+=i,c+=n}function h(e,t,r,o=3,n=o){const i=(0,a.k)(e.length,o,3),s=(0,a.k)(t.length,n,3),l=Math.min(i,s);let c=0,u=0;for(let a=0;a<l;a++)e[u]=t[c]+r[0],e[u+1]=t[c+1]+r[1],e[u+2]=t[c+2]+r[2],c+=n,u+=o;return e}function m(e,t){f(e.typedBuffer,t.typedBuffer,e.typedBufferStride,t.typedBufferStride)}function f(e,t,r=3,o=r){const a=Math.min(e.length/r,t.length/o);let n=0,i=0;for(let s=0;s<a;s++){const a=t[n],s=t[n+1],l=t[n+2],c=a*a+s*s+l*l;if(c>0){const t=1/Math.sqrt(c);e[i]=t*a,e[i+1]=t*s,e[i+2]=t*l}n+=o,i+=r}}Object.freeze(Object.defineProperty({__proto__:null,linearToSRGB:d,linearToSRGBView:u,normalize:f,normalizeView:m,scale:c,scaleView:function(e,t,r){c(e.typedBuffer,t.typedBuffer,r,e.typedBufferStride,t.typedBufferStride)},shiftRight:function(e,t,r){const o=Math.min(e.count,t.count),a=e.typedBuffer,n=e.typedBufferStride,i=t.typedBuffer,s=t.typedBufferStride;let l=0,c=0;for(let e=0;e<o;e++)a[c]=i[l]>>r,a[c+1]=i[l+1]>>r,a[c+2]=i[l+2]>>r,l+=s,c+=n},transformMat3:l,transformMat3View:s,transformMat4:i,transformMat4View:n,translate:h},Symbol.toStringTag,{value:"Module"}))},69052(e,t,r){r.d(t,{hr:()=>a,ie:()=>l,uC:()=>s});var o=r(34727);class a{constructor(e,t){this.min=e,this.max=t,this.range=t-e}normalize(e,t=0,r=!1){return n(this.range,this.min,this.max,e,t,r)}clamp(e,t=0){return(0,o.qE)(e-t,this.min,this.max)+t}monotonic(e,t,r){return e<t?t:t+i(this.range,e-t,r)}minimalMonotonic(e,t,r){return n(this.range,e,e+this.range,t,r)}center(e,t,r){return t=this.monotonic(e,t,r),this.normalize((e+t)/2,r)}diff(e,t,r){return this.monotonic(e,t,r)-e}shortestSignedDiff(e,t){e=this.normalize(e);const r=(t=this.normalize(t))-e,o=t<e?this.minimalMonotonic(e,t)-e:t-this.minimalMonotonic(t,e);return Math.abs(r)<Math.abs(o)?r:o}contains(e,t,r){return t=this.minimalMonotonic(e,t),(r=this.minimalMonotonic(e,r))>e&&r<t}}function n(e,t,r,o,a=0,n=!1){return(o-=a)<t?o+=i(e,t-o):o>r&&(o-=i(e,o-r)),n&&o===r&&(o=t),o+a}function i(e,t,r=0){return Math.ceil((t-r)/e)*e+r}const s=new a(0,2*Math.PI),l=(new a(-Math.PI,Math.PI),new a(0,360))},46140(e,t,r){r.d(t,{A:()=>a});var o=r(49186);class a{constructor(e,t,r=""){this.major=e,this.minor=t,this._context=r}lessThan(e,t){return this.major<e||e===this.major&&this.minor<t}greaterEqual(e,t){return!this.lessThan(e,t)}toString(){return`${this.major}.${this.minor}`}validate(e){if(this.major!==e.major){const t=this._context&&this._context+":",r=this._context&&this._context+" ";throw new o.A(t+"unsupported-version",`Required major ${r}version is '${this.major}', but got '\${version.major}.\${version.minor}'`,{version:e})}}clone(){return new a(this.major,this.minor,this._context)}static parse(e,t=""){const[r,n]=e.split("."),i=/^\s*\d+\s*$/;if(!r?.match||!i.test(r))throw new o.A((t&&t+":")+"invalid-version","Expected major version to be a number, but got '${version}'",{version:e});if(!n?.match||!i.test(n))throw new o.A((t&&t+":")+"invalid-version","Expected minor version to be a number, but got '${version}'",{version:e});const s=parseInt(r,10),l=parseInt(n,10);return new a(s,l,t)}}},61473(e,t,r){function o(e){return e=e||globalThis.location.hostname,c.some(t=>null!=e?.match(t))}function a(e,t){return e?(t=t||globalThis.location.hostname)?null!=t.match(n)||null!=t.match(s)?e.replace("static.arcgis.com","staticdev.arcgis.com"):null!=t.match(i)||null!=t.match(l)?e.replace("static.arcgis.com","staticqa.arcgis.com"):e:e:null}r.d(t,{EM:()=>a,b5:()=>o});const n=/^devext\.arcgis\.com$/,i=/^qaext\.arcgis\.com$/,s=/^[\w-]*\.mapsdevext\.arcgis\.com$/,l=/^[\w-]*\.mapsqa\.arcgis\.com$/,c=[/^([\w-]*\.)?[\w-]*\.zrh-dev-local\.esri\.com$/,n,i,/^jsapps\.esri\.com$/,s,l]},82534(e,t,r){function o(){return[0,0,0,1]}function a(e){return[e[0],e[1],e[2],e[3]]}r.d(t,{o8:()=>a,vt:()=>o,zK:()=>n});const n=[0,0,0,1];Object.freeze(Object.defineProperty({__proto__:null,IDENTITY:n,clone:a,create:o,fromValues:function(e,t,r,o){return[e,t,r,o]}},Symbol.toStringTag,{value:"Module"}))},88340(e,t,r){function o(){return new Float32Array(2)}function a(e,t){const r=new Float32Array(2);return r[0]=e,r[1]=t,r}function n(){return o()}function i(){return a(1,1)}function s(){return a(1,0)}function l(){return a(0,1)}r.d(t,{Un:()=>u,fA:()=>a,uY:()=>c,vt:()=>o});const c=n(),u=i(),d=s(),h=l();Object.freeze(Object.defineProperty({__proto__:null,ONES:u,UNIT_X:d,UNIT_Y:h,ZEROS:c,clone:function(e){const t=new Float32Array(2);return t[0]=e[0],t[1]=e[1],t},create:o,fromValues:a,ones:i,unitX:s,unitY:l,zeros:n},Symbol.toStringTag,{value:"Module"}))},48163(e,t,r){function o(){return[0,0]}function a(e){return[e[0],e[1]]}function n(e,t){return[e,t]}function i(){return n(1,1)}function s(){return n(1,0)}function l(){return n(0,1)}r.d(t,{Un:()=>c,fA:()=>n,o8:()=>a,vt:()=>o});const c=i(),u=s(),d=l();Object.freeze(Object.defineProperty({__proto__:null,ONES:c,UNIT_X:u,UNIT_Y:d,ZEROS:[0,0],clone:a,create:o,freeze:function(e,t){return[e,t]},fromArray:function(e,t=[0,0]){const r=Math.min(2,e.length);for(let o=0;o<r;++o)t[o]=e[o];return t},fromValues:n,ones:i,unitX:s,unitY:l,zeros:function(){return[0,0]}},Symbol.toStringTag,{value:"Module"}))},91829(e,t,r){function o(){return[0,0,0,0]}function a(e,t,r,o){return[e,t,r,o]}function n(e,t,r,o){return[e,t,r,o]}function i(){return a(1,1,1,1)}function s(){return a(1,0,0,0)}function l(){return a(0,1,0,0)}function c(){return a(0,0,1,0)}function u(){return a(0,0,0,1)}r.d(t,{CN:()=>n,Un:()=>h,fA:()=>a,uY:()=>d,vt:()=>o});const d=[0,0,0,0],h=i(),m=s(),f=l(),p=c(),v=u();Object.freeze(Object.defineProperty({__proto__:null,ONES:h,UNIT_W:v,UNIT_X:m,UNIT_Y:f,UNIT_Z:p,ZEROS:d,clone:function(e){return[e[0],e[1],e[2],e[3]]},create:o,freeze:n,fromArray:function(e,t=[0,0,0,0]){const r=Math.min(4,e.length);for(let o=0;o<r;++o)t[o]=e[o];return t},fromValues:a,ones:i,unitW:u,unitX:s,unitY:l,unitZ:c,zeros:function(){return[0,0,0,0]}},Symbol.toStringTag,{value:"Module"}))},78955(e,t,r){r.d(t,{Bw:()=>v,C:()=>a,Cc:()=>w,LI:()=>h,Om:()=>b,S8:()=>x,T9:()=>d,WQ:()=>i,Z0:()=>y,aI:()=>S,hG:()=>p,hZ:()=>n,hs:()=>m,jk:()=>u,m3:()=>g,t2:()=>M});var o=r(34304);function a(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function n(e,t,r,o,a){return e[0]=t,e[1]=r,e[2]=o,e[3]=a,e}function i(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e}function s(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}function l(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e}function c(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e}function u(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e}function d(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e}function h(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e[3]=Math.round(t[3]),e}function m(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e}function f(e,t){const r=t[0]-e[0],o=t[1]-e[1],a=t[2]-e[2],n=t[3]-e[3];return Math.sqrt(r*r+o*o+a*a+n*n)}function p(e,t){const r=t[0]-e[0],o=t[1]-e[1],a=t[2]-e[2],n=t[3]-e[3];return r*r+o*o+a*a+n*n}function v(e){const t=e[0],r=e[1],o=e[2],a=e[3];return Math.sqrt(t*t+r*r+o*o+a*a)}function g(e){const t=e[0],r=e[1],o=e[2],a=e[3];return t*t+r*r+o*o+a*a}function x(e,t){const r=t[0],o=t[1],a=t[2],n=t[3];let i=r*r+o*o+a*a+n*n;return i>0&&(i=1/Math.sqrt(i),e[0]=r*i,e[1]=o*i,e[2]=a*i,e[3]=n*i),e}function b(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function w(e,t,r,o){const a=t[0],n=t[1],i=t[2],s=t[3];return e[0]=a+o*(r[0]-a),e[1]=n+o*(r[1]-n),e[2]=i+o*(r[2]-i),e[3]=s+o*(r[3]-s),e}function y(e,t,r){const o=t[0],a=t[1],n=t[2],i=t[3];return e[0]=r[0]*o+r[4]*a+r[8]*n+r[12]*i,e[1]=r[1]*o+r[5]*a+r[9]*n+r[13]*i,e[2]=r[2]*o+r[6]*a+r[10]*n+r[14]*i,e[3]=r[3]*o+r[7]*a+r[11]*n+r[15]*i,e}function M(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function S(e,t){const r=e[0],a=e[1],n=e[2],i=e[3],s=t[0],l=t[1],c=t[2],u=t[3],d=(0,o.FD)();return Math.abs(r-s)<=d*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(a-l)<=d*Math.max(1,Math.abs(a),Math.abs(l))&&Math.abs(n-c)<=d*Math.max(1,Math.abs(n),Math.abs(c))&&Math.abs(i-u)<=d*Math.max(1,Math.abs(i),Math.abs(u))}const T=s,C=l,I=c,_=f,P=p,z=v,E=g;Object.freeze(Object.defineProperty({__proto__:null,add:i,ceil:function(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e},copy:a,copyVec3:function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},dist:_,distance:f,div:I,divide:c,dot:b,equals:S,exactEquals:M,floor:function(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e},inverse:function(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e},len:z,length:v,lerp:w,max:d,min:u,mul:C,multiply:l,negate:function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e},normalize:x,random:function(e,t=1){const r=o.Ov;let a,n,i,s,l,c;do{a=2*r()-1,n=2*r()-1,l=a*a+n*n}while(l>=1);do{i=2*r()-1,s=2*r()-1,c=i*i+s*s}while(c>=1);const u=Math.sqrt((1-l)/c);return e[0]=t*a,e[1]=t*n,e[2]=t*i*u,e[3]=t*s*u,e},round:h,scale:m,scaleAndAdd:function(e,t,r,o){return e[0]=t[0]+r[0]*o,e[1]=t[1]+r[1]*o,e[2]=t[2]+r[2]*o,e[3]=t[3]+r[3]*o,e},set:n,sqrDist:P,sqrLen:E,squaredDistance:p,squaredLength:g,str:function(e){return"vec4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"},sub:T,subtract:s,transformMat4:y,transformQuat:function(e,t,r){const o=t[0],a=t[1],n=t[2],i=r[0],s=r[1],l=r[2],c=r[3],u=c*o+s*n-l*a,d=c*a+l*o-i*n,h=c*n+i*a-s*o,m=-i*o-s*a-l*n;return e[0]=u*c+m*-i+d*-l-h*-s,e[1]=d*c+m*-s+h*-i-u*-l,e[2]=h*c+m*-l+u*-s-d*-i,e[3]=t[3],e}},Symbol.toStringTag,{value:"Module"}))},56512(e,t,r){function o(e){let t,r,o=[],a=!1;return function(...n){return a&&t===this&&function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}(n,o)||(r=e.apply(this,n),t=this,o=n,a=!0),r}}r.d(t,{B:()=>o})},69397(e,t,r){r.d(t,{Qf:()=>l,Qh:()=>i,RS:()=>a,Ul:()=>m,i5:()=>h,lM:()=>n,qK:()=>u});var o=r(34275);const a=16;function n(e){if(!e)return 0;let t=u;for(const r in e)e.hasOwnProperty(r)&&(t+=s(e[r],!1));return t}function i(e){if(!e)return 0;if("number"==typeof e[0])return l(e);if(Array.isArray(e))return function(e){const t=e.length;if(0===t||"number"==typeof e[0])return c(e,8);let r=d;for(let o=0;o<t;o++)r+=s(e[o]);return r}(e);let t=u;for(const r in e)e.hasOwnProperty(r)&&(t+=s(e[r]));return t}function s(e,t=!0){switch(typeof e){case"object":return t?i(e):u;case"string":return function(e){return 32+e.length}(e);case"number":return a;case"boolean":return 4;default:return 8}}function l(...e){return e.reduce((e,t)=>e+(t?(0,o.iu)(t)?t.byteLength+h:Array.isArray(t)?c(t,a):0:0),0)}function c(e,t){return d+e.length*t}const u=32,d=16,h=145,m=64},65806(e,t,r){r.d(t,{g:()=>i});var o=r(51850),a=r(91218),n=r(9762);function i(e,t,r,o){if((0,a.canProjectWithoutEngine)(e.spatialReference,r))return s[0]=e.x,s[1]=e.y,s[2]=e.z??0,(0,n.projectBuffer)(s,e.spatialReference,0,t,r,0);const i=(0,a.tryProject)(e,r,o);return!!i&&(t[0]=i.x,t[1]=i.y,t[2]=i.z??0,!0)}const s=(0,o.vt)()},27993(e,t,r){r.d(t,{F:()=>s});var o=r(91218),a=r(16930),n=r(9762),i=r(65806);function s(e,t,r,a){return!(null==t||null==a||e.length<2)&&((0,o.canProjectWithoutEngine)(t,a)?(0,n.projectBuffer)(e,t,0,r,a,0,1):(l.x=e[0],l.y=e[1],l.z=e[2],l.spatialReference=t,(0,i.g)(l,r,a)))}const l={x:0,y:0,z:0,hasZ:!0,hasM:!1,spatialReference:a.A.WGS84,type:"point"}},72727(e,t,r){function o(e,t,r){if(t<=0)return 0;const o=e-r;return o<0?0:Math.floor(o/t)+1}r.d(t,{k:()=>o}),r(53966)},31411(e,t,r){r.d(t,{GS:()=>T,gh:()=>I});var o=r(49186),a=r(56512),n=r(65864),i=r(4305),s=r(50954),l=r(52006),c=r(49663),u=r(46068),d=r(15507);const h=1e-6,m=[0,0];function f(e){return{maxSegmentLength:e.maxSegmentLength??0,maxDeviation:e.maxDeviation??0,maxSegmentsPerCurve:e.maxSegmentsPerCurve??12e3,minSegmentsPerCurve:Math.max(e.minSegmentsPerCurve??1,1)}}class p{constructor(e,t){this.curveStart=e,this.curveEnd=t,this.tStart=0,this.tEnd=0,this.tEndStack=[],this.arcEndStack=[]}get stackSize(){return this.tEndStack.length}initialize(e,t){this.tStart=0,this.arcStart=e,this.tEndStack.push(1),this.arcEndStack.push(t)}splitAt(e){this.tEndStack.push(this.tEnd),this.arcEndStack.push(this.arcEnd),this.tEndStack.push(e),this.arcEndStack.push(this.interpolate(e))}splitInHalf(){return this.splitAt((this.tStart+this.tEnd)/2)}pop(){this.tEnd=this.tEndStack.pop(),this.arcEnd=this.arcEndStack.pop()}next(){this.tStart=this.tEnd,this.arcStart=this.arcEnd}densify(e,{maxDeviation:t,maxSegmentLength:r,maxSegmentsPerCurve:o,minSegmentsPerCurve:a}){const n=r*r,i=t*t,s=1/o,l=this.interpolate(0),c=this.interpolate(1);(0,d.kb)(this.curveStart,l)>h&&e.push(l),this.initialize(l,c);const u=1/a;for(let e=a-1;e>0;e--){const t=e*u;this.pop(),this.splitAt(t)}for(;this.stackSize>0;)this.pop(),this.tStart===this.tEnd||this.tEnd-this.tStart<s||(0===n||!isFinite(n)||(0,d.kb)(this.arcStart,this.arcEnd)<n)&&(0===i||!isFinite(i)||this.getDeviation2()<i)?(e.push(this.arcEnd),this.next()):this.splitInHalf();return(0,d.kb)(this.curveEnd,c)>h&&e.push([...this.curveEnd]),e}}class v extends p{constructor(e,t){const[r,o,a]=t.b;super(e,r),this._controlPointsStack=[],this._curveControlPoints=[o,a],this._arcControlPoints=[o,a],this._controlPointsStack.push(this._arcControlPoints)}splitAt(e){const{arcStart:t,arcEnd:r,tStart:o,tEnd:a}=this,[n,i]=this._arcControlPoints,s=(e-o)/(a-o),l=(0,d.RS)([],t,n,s),c=(0,d.RS)(m,n,i,s),u=(0,d.RS)([],i,r,s),h=(0,d.RS)([],l,c,s),f=(0,d.RS)([],c,u,s),p=(0,d.RS)([],h,f,s);this.tEndStack.push(this.tEnd),this.arcEndStack.push(this.arcEnd),this._controlPointsStack.push([f,u]),this.tEndStack.push(e),this.arcEndStack.push(p),this._arcControlPoints[0]=l,this._arcControlPoints[1]=h,this._controlPointsStack.push(this._arcControlPoints)}pop(){super.pop(),this._arcControlPoints=this._controlPointsStack.pop()}interpolate(e){const{curveStart:t,curveEnd:r}=this,[o,a]=this._curveControlPoints;return(0,i.B4)(t,o,a,r,e)}getDeviation2(){const{arcStart:e,arcEnd:t}=this,[r,o]=this._arcControlPoints;return Math.max((0,d.yE)(r,e,t),(0,d.yE)(o,e,t))}}class g extends p{constructor(e,t){const[r]=t.a;super(e,r),this._derivedEllipse=(0,u.SW)(e,t)}pop(){super.pop(),this._tMid=(this.tStart+this.tEnd)/2,this._arcMid=this.interpolate(this._tMid)}splitInHalf(){this.tEndStack.push(this.tEnd),this.arcEndStack.push(this.arcEnd),this.tEndStack.push(this._tMid),this.arcEndStack.push(this._arcMid)}interpolate(e){return(0,u.Uk)(this._derivedEllipse,e)}getDeviation2(){return(0,d.yE)(this._arcMid,this.arcStart,this.arcEnd)}}function x(e,t,r,{cx:o,cy:a,radius:n,thetaStart:i,thetaEnd:s,isInvalid:l},{maxDeviation:c,maxSegmentLength:u,maxSegmentsPerCurve:m,minSegmentsPerCurve:f}){if(l)return e.push([...r]),e;const p=2*n,v=[o+n*Math.cos(i),a+n*Math.sin(i)],g=[o+n*Math.cos(s),a+n*Math.sin(s)];(0,d.kb)(t,v)>h&&e.push(v);const x=Math.abs(s-i),b=u>0&&u<p?2*Math.asin(u/p):x,w=c>0&&c<=n?2*Math.acos(1-c/n):x,y=Math.min(b,w),M=Math.min(m,Math.max(f,Math.ceil(Math.abs(x/y)))),S=1/M;for(let t=1;t<M;t++){const r=t*S,l=i*(1-r)+s*r;e.push([o+n*Math.cos(l),a+n*Math.sin(l)])}return e.push(g),(0,d.kb)(r,g)>h&&e.push([...r]),e}function b(e,t,r,o){return new v(t,r).densify(e,o)}function w(e,t,r,o){const a=(0,s.pM)(t,r),[n]=r.c;return x(e,t,n,a,o)}function y(e,t,r,o){const a=(0,c.io)(t,r),[n]=r.a;return x(e,t,n,a,o)}function M(e,t,r,o){const[a,n,i,s,l,c,u]=r.a;return 0===c||0===u?(e.push([...a]),e):new g(t,r).densify(e,o)}function S(e,t,r,o){return(0,l.Xq)(r)?(e.push([...r]),e):(0,l.n1)(r)?b(e,t,r,o):(0,l.aO)(r)?w(e,t,r,o):(0,l.DA)(r)?y(e,t,r,o):M(e,t,r,o)}function T(e,t={}){if(!(0,l.Ed)(e))return e;const r=f(t),o=(0,l.FD)(e),a=[];for(const e of o){const t=[];for(let o=0;o<e.length-1;o++){const a=o+1,n=[...(0,l.yP)(e[o])];0===o&&t.push(n),S(t,n,e[a],r)}a.push(t)}return"curvePaths"in e?{...void 0!==e.hasZ?{hasZ:e.hasZ}:{},...void 0!==e.hasM?{hasM:e.hasM}:{},paths:a,spatialReference:e.spatialReference}:{...void 0!==e.hasZ?{hasZ:e.hasZ}:{},...void 0!==e.hasM?{hasM:e.hasM}:{},rings:a,spatialReference:e.spatialReference}}const C=(0,a.B)(e=>({maxDeviation:0,maxSegmentLength:100*e,maxSegmentsPerCurve:12e3,minSegmentsPerCurve:1}));async function I(e,t,a){const i=new Set(t);return await async function(e,t,a){let n=null;for(const i of e)if(i&&(0,l.Ed)(i)&&null==i.spatialReference.xyTolerance&&(0,l.V8)(i,t)){const e=i.spatialReference;if(!e)throw new o.A("geometry:missing-spatial-reference","Geometry contains an unsupported curve type, but it cannot be densified because it has no spatial reference.");const t=_(e);if(a.has(t))i.spatialReference=a.get(t);else{n||(n=await Promise.all([r.e(6042),r.e(1878),r.e(8885),r.e(5756),r.e(3299),r.e(6312)]).then(r.bind(r,78125)));const s=n.fromSpatialReference(e),l=s?.getTolerance();if(null==l)throw new o.A("geometry:missing-tolerance","Geometry contains an unsupported curve type, but it cannot be densified because the tolerance of its spatial reference is unknown. Set the `xyTolerance` property of the spatial reference.");const c=i.spatialReference.clone();c.read({xyTolerance:l}),i.spatialReference=c,a.set(t,c)}}}(e,i,a),e.map(e=>{if(!e||!(0,l.Ed)(e))return e;const r=e.spatialReference.xyTolerance;if(null==r)return e;const o=C(r);return(0,n.rS)(function(e,t,r){if(!(0,l.Ed)(e))return e;const o=new Set(t),a=f(r),n=(0,l.FD)(e),i=[];let s=!1;for(const e of n){const t=[];for(let r=0;r<e.length-1;r++){const n=r+1,i=[...(0,l.yP)(e[r])];0===r&&t.push(i);const c=e[n];(0,l.Xq)(c)?t.push([...c]):(0,l.n1)(c)&&!o.has("cubic-bezier")?b(t,i,c,a):(0,l.aO)(c)&&!o.has("circular-arc")?w(t,i,c,a):(0,l.DA)(c)&&!o.has("elliptic-arc")?y(t,i,c,a):(0,l.wY)(c)&&!o.has("elliptic-arc")?M(t,i,c,a):(t.push((0,l.tk)(c)),s=!0)}i.push(t)}return"curvePaths"in e?{...void 0!==e.hasZ?{hasZ:e.hasZ}:{},...void 0!==e.hasM?{hasM:e.hasM}:{},spatialReference:e.spatialReference,...s?{curvePaths:i}:{paths:i}}:{hasZ:e.hasZ,hasM:e.hasM,spatialReference:e.spatialReference,...s?{curveRings:i}:{rings:i}}}(e,t,o))})}function _(e){if(null!=e.wkid)return`${e.wkid}`;if(null!=e.wkt)return e.wkt;const t="toJSON"in e&&"function"==typeof e.toJSON?e.toJSON():e;return JSON.stringify(t)}},17136(e,t,r){r.d(t,{Y_:()=>E,O7:()=>P,el:()=>_});var o=r(92602),a=r(69052),n=r(49186),i=r(53966),s=r(39829),l=r(82799),c=r(16930),u=r(80754),d=r(21325),h=r(28735),m=r(52006),f=r(31411),p=r(11254),v=r(60408),g=r(65864),x=r(2272),b=r(84952),w=r(92300);const y=()=>i.A.getLogger("esri.geometry.support.normalizeUtils");function M(e){return"polygon"===e[0].type}function S(e){return"polyline"===e[0].type}function T(e,t,r){const o=1e6;if(t){const t=(0,m.Ed)(e)?(0,f.GS)(e,{maxSegmentLength:o}):function(e,t){if(!(e instanceof l.A||e instanceof s.A)){const e="straightLineDensify: the input geometry is neither polyline nor polygon";throw y().error(e),new n.A("internal:geometry",e)}const r=(0,u.r8)(e),o=[];for(const e of r){const r=[];o.push(r),r.push([e[0][0],e[0][1]]);for(let o=0;o<e.length-1;o++){const a=e[o][0],n=e[o][1],i=e[o+1][0],s=e[o+1][1],l=Math.sqrt((i-a)*(i-a)+(s-n)*(s-n)),c=(s-n)/l,u=(i-a)/l,d=l/t;if(d>1){for(let e=1;e<=d-1;e++){const o=e*t,i=u*o+a,s=c*o+n;r.push([i,s])}const e=(l+Math.floor(d-1)*t)/2,o=u*e+a,i=c*e+n;r.push([o,i])}r.push([i,s])}}return function(e){return"polygon"===e.type}(e)?new s.A({rings:o,spatialReference:e.spatialReference}):new l.A({paths:o,spatialReference:e.spatialReference})}(e,o);e=(0,h.ci)(t,!0)}return r&&(e=(0,u.kS)(e,r)),e}function C(e,t,r){if(Array.isArray(e)){const o=e[0];if(o>t){const r=(0,u.kd)(o,t);e[0]=o+r*(-2*t)}else if(o<r){const t=(0,u.kd)(o,r);e[0]=o+t*(-2*r)}}else{const o=e.x;if(o>t){const r=(0,u.kd)(o,t);e=e.clone().offset(r*(-2*t),0)}else if(o<r){const t=(0,u.kd)(o,r);e=e.clone().offset(t*(-2*r),0)}}return e}function I(e,t){let r=-1;for(let o=0;o<t.cutIndexes.length;o++){const a=t.cutIndexes[o],n=t.geometries[o],i=(0,u.r8)(n);for(let e=0;e<i.length;e++){const t=i[e];t.some(r=>{if(r[0]<180)return!0;{let r=0;for(let e=0;e<t.length;e++){const o=t[e][0];r=o>r?o:r}r=Number(r.toFixed(9));const o=-360*(0,u.kd)(r,180);for(let r=0;r<t.length;r++){const t=n.getPoint(e,r);n.setPoint(e,r,t.clone().offset(o,0))}return!0}})}if(a===r){if(M(e))for(const t of(0,u.r8)(n))e[a]=e[a].addRing(t);else if(S(e))for(const t of(0,u.r8)(n))e[a]=e[a].addPath(t)}else r=a,e[a]=n}return e}async function _(e,t,r){if(!Array.isArray(e))return _([e],t);t&&"string"!=typeof t&&y().warn("normalizeCentralMeridian()","The url object is deprecated, use the url string instead");const a="string"==typeof t?t:t?.url??o.A.geometryServiceUrl;let n,i,c,m,f,M,S,P,z=0;const E=[],F=[];for(const t of e)if(null!=t)if(n||(n=t.spatialReference,i=(0,d.Vp)(n),c=n.isWebMercator,M=c?102100:4326,m=u.j7[M].maxX,f=u.j7[M].minX,S=u.j7[M].plus180Line,P=u.j7[M].minus180Line),i)if("mesh"===t.type)F.push(t);else if("point"===t.type)F.push(C(t.clone(),m,f));else if("multipoint"===t.type){const e=t.clone();e.points=e.points.map(e=>C(e,m,f)),F.push(e)}else if("extent"===t.type){const e=t.clone()._normalize(!1,!1,i);F.push(e.rings?new s.A(e):e)}else if(t.extent){const e=t.extent,r=(0,u.kd)(e.xmin,f)*(2*m);let o=0===r?t.clone():(0,u.kS)(t.clone(),r);e.offset(r,0);let{xmin:a,xmax:n}=e;a=Number(a.toFixed(9)),n=Number(n.toFixed(9)),e.intersects(S)&&n!==m?(z=n>z?n:z,o=T(o,c),E.push(o),F.push("cut")):e.intersects(P)&&a!==f?(z=n*(2*m)>z?n*(2*m):z,o=T(o,c,360),E.push(o),F.push("cut")):F.push(o)}else F.push(t.clone());else F.push(t);else F.push(t);let O=(0,u.kd)(z,m),D=-90;const H=O,B=new l.A;for(;O>0;){const e=360*O-180;B.addPath([[e,D],[e,-1*D]]),D*=-1,O--}if(E.length>0&&H>0){const t=I(E,await async function(e,t,r,o){const a=(0,x.Dl)(e),n=t[0].spatialReference,i={...o,responseType:"json",query:{...a.query,f:"json",sr:(0,d.YX)(n),target:JSON.stringify({geometryType:(0,v.$B)(t[0]),geometries:t}),cutter:JSON.stringify(r)}},s=await(0,p.A)(a.path+"/cut",i),{cutIndexes:l,geometries:c=[]}=s.data;return{cutIndexes:l,geometries:c.map(e=>{const t=(0,g.rS)(e);return t.spatialReference=n,t})}}(a,E,B,r)),o=[],n=[];for(let r=0;r<F.length;r++){const a=F[r];if("cut"!==a)n.push(a);else{const a=t.shift(),i=e[r];null!=i&&"polygon"===i.type&&i.rings&&i.rings.length>1&&a.rings.length>=i.rings.length?(o.push(a),n.push("simplify")):n.push(c?(0,h.Gh)(a):a)}}if(!o.length)return n;const i=await async function(e,t,r){const o="string"==typeof e?(0,b.An)(e):e,a=t[0].spatialReference,n=(0,v.$B)(t[0]),i={...r,query:{...o.query,f:"json",sr:(0,d.YX)(a),geometries:JSON.stringify((0,w.X)(t))}},{data:s}=await(0,p.A)(o.path+"/simplify",i);return(0,w.V)(s.geometries,n,a)}(a,o,r),s=[];for(let e=0;e<n.length;e++){const t=n[e];"simplify"!==t?s.push(t):s.push(c?(0,h.Gh)(i.shift()):i.shift())}return s}const j=[];for(let e=0;e<F.length;e++){const t=F[e];if("cut"!==t)j.push(t);else{const e=E.shift();j.push(!0===c?(0,h.Gh)(e):e)}}return j}function P(e,t,r){const o=(0,d.Vp)(r);if(null==o)return e;const[a,n]=o.valid,i=2*n;let s=0,l=0;t>n?s=Math.ceil(Math.abs(t-n)/i):t<a&&(s=-Math.ceil(Math.abs(t-a)/i)),e>n?l=Math.ceil(Math.abs(e-n)/i):e<a&&(l=-Math.ceil(Math.abs(e-a)/i));let c=e+(s-l)*i;const u=c-t;return u>n?c-=i:u<a&&(c+=i),c}function z(e){const t=(0,d.Vp)(e);if(null==t)return null;const[r,o]=t.valid;return new a.hr(r,o)}const E=z(c.A.WGS84);z(c.A.WebMercator)},80754(e,t,r){r.d(t,{j7:()=>s,kS:()=>c,kd:()=>l,r8:()=>u});var o=r(82799),a=r(16930),n=r(60408),i=r(52006);const s={102100:{maxX:20037508.342788905,minX:-20037508.342788905,plus180Line:new o.A({paths:[[[20037508.342788905,-20037508.342788905],[20037508.342788905,20037508.342788905]]],spatialReference:a.A.WebMercator}),minus180Line:new o.A({paths:[[[-20037508.342788905,-20037508.342788905],[-20037508.342788905,20037508.342788905]]],spatialReference:a.A.WebMercator})},4326:{maxX:180,minX:-180,plus180Line:new o.A({paths:[[[180,-180],[180,180]]],spatialReference:a.A.WGS84}),minus180Line:new o.A({paths:[[[-180,-180],[-180,180]]],spatialReference:a.A.WGS84})}};function l(e,t){return Math.ceil((e-t)/(2*t))}function c(e,t){if((0,i.Ed)(e))for(const r of function(e){return(0,n.Bi)(e)?e.curveRings:e.curvePaths}(e))for(const e of r){if((0,i.aO)(e)){const[r,o]=e.c;r[0]+=t,o[0]+=t;continue}if((0,i.FG)(e)){const[r,o]=e.a;r[0]+=t,o[0]+=t;continue}if((0,i.n1)(e)){const[r,o,a]=e.b;r[0]+=t,o[0]+=t,a[0]+=t;continue}e[0]+=t}for(const r of u(e))for(const e of r)e[0]+=t;return e}function u(e){return(0,n.Bi)(e)?e.rings:e.paths}},27921(e,t,r){r.d(t,{$Q:()=>w,C:()=>s,Cr:()=>u,O_:()=>c,Qj:()=>l,T7:()=>x,Tj:()=>b,lU:()=>d,mN:()=>y,vE:()=>M,vt:()=>i});var o=r(34727),a=r(35522),n=r(51850);function i(e=S){return[e[0],e[1],e[2],e[3]]}function s(e,t){return function(e,t,r,o,a=i()){return a[0]=e,a[1]=t,a[2]=r,a[3]=o,a}(t[0],t[1],t[2],t[3],e)}function l(e){return e}function c(e,t,r){const o=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],a=Math.abs(o-1)>1e-5&&o>1e-12?1/Math.sqrt(o):1;return r[0]=t[0]*a,r[1]=t[1]*a,r[2]=t[2]*a,r[3]=-(r[0]*e[0]+r[1]*e[1]+r[2]*e[2]),r}function u(e,t,r,o=i()){const a=r[0]-t[0],n=r[1]-t[1],s=r[2]-t[2],l=e[0]-t[0],c=e[1]-t[1],u=e[2]-t[2],d=n*u-s*c,h=s*l-a*u,m=a*c-n*l,f=d*d+h*h+m*m,p=Math.abs(f-1)>1e-5&&f>1e-12?1/Math.sqrt(f):1;return o[0]=d*p,o[1]=h*p,o[2]=m*p,o[3]=-(o[0]*e[0]+o[1]*e[1]+o[2]*e[2]),o}function d(e,t,r,o=0,n=Math.floor(r*(1/3)),i=Math.floor(r*(2/3))){if(r<3)return!1;t(m,o);let s=n,l=!1;for(;s<r-1&&!l;)t(f,s),s++,l=!(0,a.t2)(m,f);if(!l)return!1;for(s=Math.max(s,i),l=!1;s<r&&!l;)t(p,s),s++,(0,a.Re)(v,m,f),(0,a.S8)(v,v),(0,a.Re)(g,f,p),(0,a.S8)(g,g),l=!(0,a.t2)(m,p)&&!(0,a.t2)(f,p)&&Math.abs((0,a.Om)(v,g))<h;return l?(u(m,f,p,e),!0):(0!==o||1!==n||2!==i)&&d(e,t,r,0,1,2)}r(78955),r(44280),r(32114),r(32728);const h=.99619469809,m=(0,n.vt)(),f=(0,n.vt)(),p=(0,n.vt)(),v=(0,n.vt)(),g=(0,n.vt)();function x(e,t,r){return function(e){return 0===e||1===e}(M(e,t.origin,t.vector,0,r))}function b(e,t){return y(e,t)>=0}function w(e,t){const r=(0,a.Om)(e,t.ray.direction),o=-y(e,t.ray.origin);if(o<0&&r>=0)return!1;if(r>-1e-6&&r<1e-6)return o>0;if((o<0||r<0)&&!(o<0&&r<0))return!0;const n=o/r;return r>0?n<t.c1&&(t.c1=n):n>t.c0&&(t.c0=n),t.c0<=t.c1}function y(e,t){return(0,a.Om)(e,t)+e[3]}function M(e,t,r,n,i){const s=(0,a.Om)(e,r),l=y(e,t);if(0===s)return l>=0?2:3;let c=-l/s;return 1&n&&(c=(0,o.qE)(c,0,1)),!(4&n)&&c<0||!(8&n)&&c>1?l>=0?2:3:((0,a.WQ)(i,t,(0,a.hs)(i,r,c)),l>=0?0:1)}const S=[0,0,1,0]},44280(e,t,r){r.d(t,{g7:()=>s,gr:()=>i});var o=r(34727),a=r(35522),n=r(51850);function i(e,t){return(0,a.Om)(e,t)/(0,a.Bw)(e)}function s(e,t){const r=(0,a.Om)(e,t)/((0,a.Bw)(e)*(0,a.Bw)(t));return-(0,o.XM)(r)}(0,n.vt)(),(0,n.vt)()},32114(e,t,r){r.d(t,{Rc:()=>m,J8:()=>f,rq:()=>d,Km:()=>h}),r(44208);var o=r(26390),a=r(29242),n=r(9093),i=r(82534),s=r(48163),l=r(51850),c=r(91829);class u{constructor(e){this._create=e,this._items=new Array,this._itemsPtr=0}get(){return 0===this._itemsPtr&&(0,o.d)(()=>this._reset()),this._itemsPtr>=this._items.length&&this._items.push(this._create()),this._items[this._itemsPtr++]}_reset(){const e=2*this._itemsPtr;this._items.length>e&&(this._items.length=e),this._itemsPtr=0}static createVec2f64(){return new u(s.vt)}static createVec3f64(){return new u(l.vt)}static createVec4f64(){return new u(c.vt)}static createMat3f64(){return new u(a.vt)}static createMat4f64(){return new u(n.vt)}static createQuatf64(){return new u(i.vt)}get test(){}}u.createVec2f64();const d=u.createVec3f64(),h=u.createVec4f64(),m=(u.createMat3f64(),u.createMat4f64()),f=u.createQuatf64()},38969(e,t,r){r.d(t,{i:()=>a});var o=r(37955);function a(e,t){return new Promise((r,a)=>{e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?r():(t((0,o.Oo)(e,"canplay",r)),t((0,o.Oo)(e,"error",a)))})}},92300(e,t,r){r.d(t,{V:()=>i,X:()=>n});var o=r(60408),a=r(65864);function n(e){return{geometryType:(0,o.$B)(e[0]),geometries:e.map(e=>e.toJSON())}}function i(e,t,r){const o=(0,a.xD)(t);return e.map(e=>{const t=o.fromJSON(e);return t.spatialReference=r,t})}},21015(e,t,r){r.d(t,{R:()=>l});var o=r(11254),a=r(60999),n=r(49186),i=r(17676),s=r(84952);class l{constructor(e=e=>e){this._resolveURI=e}async loadJSON(e,t){return this._load("json",e,t)}async loadBinary(e,t){return(0,s.DB)(e)?((0,i.Te)(t),(0,s.lJ)(e)):this._load("array-buffer",e,t)}async loadImage(e,t){return this._load("image",e,t)}async _load(e,t,r){t=this._resolveURI(t);const s=await(0,a.Ke)((0,o.A)(t,{responseType:e,...r}));if(s.ok)return s.value.data;throw(0,i.QP)(s.error),new n.A("gltf-loader-request-error",`Request for resource failed: ${s.error}`)}}},84498(e,t,r){r.d(t,{x:()=>i});var o=r(34275),a=r(97146),n=r(63907);function i(e,t){switch(t){case n.WR.TRIANGLES:return function(e){return"number"==typeof e?(0,a.tM)(e):(0,o.mg)(e)?new Uint16Array(e):e}(e);case n.WR.TRIANGLE_STRIP:return function(e){const t="number"==typeof e?e:e.length;if(t<3)return[];const r=t-2,o=(0,a.my)(3*r);if("number"==typeof e){let e=0;for(let t=0;t<r;t+=1)t%2==0?(o[e++]=t,o[e++]=t+1,o[e++]=t+2):(o[e++]=t+1,o[e++]=t,o[e++]=t+2)}else{let t=0;for(let a=0;a<r;a+=1)a%2==0?(o[t++]=e[a],o[t++]=e[a+1],o[t++]=e[a+2]):(o[t++]=e[a+1],o[t++]=e[a],o[t++]=e[a+2])}return o}(e);case n.WR.TRIANGLE_FAN:return function(e){const t="number"==typeof e?e:e.length;if(t<3)return new Uint16Array(0);const r=t-2,o=r<=65536?new Uint16Array(3*r):new Uint32Array(3*r);if("number"==typeof e){let e=0;for(let t=0;t<r;++t)o[e++]=0,o[e++]=t+1,o[e++]=t+2;return o}const a=e[0];let n=e[1],i=0;for(let t=0;t<r;++t){const r=e[t+2];o[i++]=a,o[i++]=n,o[i++]=r,n=r}return o}(e)}}},51530(e,t,r){r.d(t,{KB:()=>i,Xi:()=>a,pn:()=>s,x3:()=>n});var o=r(44208);class a{constructor(e){this.data=e,this.type="encoded-mesh-texture",this.encoding="image/ktx2"}}function n(e){return"encoded-mesh-texture"===e?.type}async function i(e){const t=new Blob([e]),r=await t.text();return JSON.parse(r)}async function s(e,t){if("image/ktx2"===t)return new a(e);const r=new Blob([e],{type:t});let n=URL.createObjectURL(r);switch(t){case"image/jpeg":n+="#.jpg";break;case"image/png":n+="#.png"}const i=new Image;if((0,o.A)("esri-iPhone"))return new Promise((e,t)=>{const r=()=>{a(),e(i)},o=e=>{a(),t(e)},a=()=>{URL.revokeObjectURL(n),i.removeEventListener("load",r),i.removeEventListener("error",o)};i.addEventListener("load",r),i.addEventListener("error",o),i.src=n});try{i.src=n,await i.decode()}catch(e){console.warn("Failed decoding HTMLImageElement")}return URL.revokeObjectURL(n),i}},5644(e,t,r){r.d(t,{fetch:()=>wt});var o=r(40876),a=r(61473),n=r(34727),i=r(77690),s=r(29242),l=r(58083),c=r(9093),u=r(48163),d=r(35522),h=r(51850),m=r(70328),f=r(34275);function p(e,t=!1){return e<=f.y9?t?new Array(e).fill(0):new Array(e):new Float32Array(e)}var v=r(13030),g=r(73354),x=r(50867),b=r(43609),w=r(21015),y=r(84498),M=r(51530),S=r(88340);function T(e){if(null==e)return null;const t=null!=e.offset?e.offset:S.uY,r=null!=e.rotation?e.rotation:0,o=null!=e.scale?e.scale:S.Un,a=(0,s.fA)(1,0,0,0,1,0,t[0],t[1],1),n=(0,s.fA)(Math.cos(r),-Math.sin(r),0,Math.sin(r),Math.cos(r),0,0,0,1),l=(0,s.fA)(o[0],0,0,0,o[1],0,0,0,1),c=(0,s.vt)();return(0,i.lw)(c,n,l),(0,i.lw)(c,a,c),c}class C{constructor(){this.geometries=new Array,this.materials=new Array,this.textures=new Array}}class I{constructor(e,t,r){this.name=e,this.lodThreshold=t,this.pivotOffset=r,this.stageResources=new C,this.numberOfVertices=0}}var _=r(11254),P=r(60999),z=r(49186),E=r(53966),F=r(69397);class O{constructor(){this._outer=new Map}clear(){this._outer.clear()}get empty(){return 0===this._outer.size}get outerSize(){return this._outer.size}get size(){let e=0;for(const t of this._outer.values())e+=t.size;return e}get(e,t){return this._outer.get(e)?.get(t)}getInner(e){return this._outer.get(e)}set(e,t,r){const o=this._outer.get(e);o?o.set(t,r):this._outer.set(e,new Map([[t,r]]))}delete(e,t){const r=this._outer.get(e);r&&(r.delete(t),0===r.size&&this._outer.delete(e))}pop(e,t){const r=this.get(e,t);return this.delete(e,t),r}*outerMap(){for(const e of this._outer)yield e}*values(){for(const e of this._outer.values())yield*e.values()}*[Symbol.iterator](){for(const[e,t]of this._outer)for(const[r,o]of t)yield[e,r,o]}forEach(e){this._outer.forEach((t,r)=>e(t,r))}forAll(e){this._outer.forEach((t,r)=>t.forEach((t,o)=>e(t,r,o)))}copy(){const e=new O;return this.forAll((t,r,o)=>e.set(r,o,t)),e}}var D=r(17676),H=r(46140),B=r(97146),j=r(31217),R=r(46610),N=r(63500),G=r(18845),A=r(49255),W=r(97768),L=r(92130),V=r(65786);class k extends L.A{constructor(e){super(e),this._numLoading=0,this._disposed=!1,this._textures=e.textures,this.updateTexture(e.textureId),this._acquire(e.normalTextureId,e=>this._textureNormal=e),this._acquire(e.emissiveTextureId,e=>this._textureEmissive=e),this._acquire(e.occlusionTextureId,e=>this._textureOcclusion=e),this._acquire(e.metallicRoughnessTextureId,e=>this._textureMetallicRoughness=e)}dispose(){super.dispose(),this._texture=(0,W.Gz)(this._texture),this._textureNormal=(0,W.Gz)(this._textureNormal),this._textureEmissive=(0,W.Gz)(this._textureEmissive),this._textureOcclusion=(0,W.Gz)(this._textureOcclusion),this._textureMetallicRoughness=(0,W.Gz)(this._textureMetallicRoughness),this._disposed=!0}ensureResources(e){return 0===this._numLoading?2:1}get textureBindParameters(){return new q(this._texture?.texture??null,this._textureNormal?.texture??null,this._textureEmissive?.texture??null,this._textureOcclusion?.texture??null,this._textureMetallicRoughness?.texture??null)}updateTexture(e){null!=this._texture&&e===this._texture.id||(this._texture=(0,W.Gz)(this._texture),this._acquire(e,e=>this._texture=e))}_acquire(e,t){if(null==e)return void t(null);const r=this._textures.acquire(e);if((0,D.$X)(r))return++this._numLoading,void r.then(e=>{if(this._disposed)return(0,W.Gz)(e),void t(null);t(e)}).finally(()=>--this._numLoading);t(r)}}class U extends V.Y{constructor(e=null){super(),this.textureEmissive=e}}class q extends U{constructor(e,t,r,o,a,n,i){super(r),this.texture=e,this.textureNormal=t,this.textureOcclusion=o,this.textureMetallicRoughness=a,this.scale=n,this.normalTextureTransformMatrix=i}}var $=r(11725),Z=r(620);class Y{constructor(e=0,t=!1,r=!0){this.tolerance=e,this.isVerticalRay=t,this.normalRequired=r}}const J=(0,m.vt)();function X(e,t,r,o,a,n){if(!e.visible)return;const i=(0,d.jb)(ue,o,r),{tolerance:s}=t,l=new Y(s,!1,t.options.normalRequired);if(e.boundingInfo)(0,Z.vA)(0===e.type),Q(e.boundingInfo,r,i,s,a,l,n);else{const t=e.positionAttribute,o=e.primitivePositionIndices;!function(e,t,r,o,a,n,i,s,l,c){const u=t,h=de,m=Math.abs(u[0]),f=Math.abs(u[1]),p=Math.abs(u[2]),v=m>=f?m>=p?0:2:f>=p?1:2,g=v,x=u[g]<0?2:1,b=(v+x)%3,w=(v+(3-x))%3,y=u[b]/u[g],M=u[w]/u[g],S=1/u[g],T=te,C=re,I=oe,{normalRequired:_}=l;for(let t=r;t<o;++t){const r=3*t,o=i*a[r];(0,d.hZ)(h[0],n[o+0],n[o+1],n[o+2]);const l=i*a[r+1];(0,d.hZ)(h[1],n[l+0],n[l+1],n[l+2]);const u=i*a[r+2];(0,d.hZ)(h[2],n[u+0],n[u+1],n[u+2]),s&&((0,d.C)(h[0],s.applyToVertex(h[0][0],h[0][1],h[0][2],t)),(0,d.C)(h[1],s.applyToVertex(h[1][0],h[1][1],h[1][2],t)),(0,d.C)(h[2],s.applyToVertex(h[2][0],h[2][1],h[2][2],t))),(0,d.jb)(T,h[0],e),(0,d.jb)(C,h[1],e),(0,d.jb)(I,h[2],e);const m=T[b]-y*T[g],f=T[w]-M*T[g],p=C[b]-y*C[g],v=C[w]-M*C[g],x=I[b]-y*I[g],P=I[w]-M*I[g],z=x*v-P*p,E=m*P-f*x,F=p*f-v*m;if((z<0||E<0||F<0)&&(z>0||E>0||F>0))continue;const O=z+E+F;if(0===O)continue;const D=z*(S*T[g])+E*(S*C[g])+F*(S*I[g]);if(D*Math.sign(O)<0)continue;const H=D/O;H>=0&&c(H,_?ne(h):null,t)}}(r,i,0,o.length/3,o,t.data,t.stride,a,l,n)}}const K=(0,h.vt)();function Q(e,t,r,o,a,n,i){if(null==e)return;const s=function(e,t){return(0,d.hZ)(t,1/e[0],1/e[1],1/e[2])}(r,K);if((0,m.Ne)(J,e.bbMin),(0,m.vI)(J,e.bbMax),null!=a&&a.applyToAabb(J),function(e,t,r,o){return function(e,t,r,o){const a=(e[0]-o-t[0])*r[0],n=(e[3]+o-t[0])*r[0];let i=Math.min(a,n),s=Math.max(a,n);const l=(e[1]-o-t[1])*r[1],c=(e[4]+o-t[1])*r[1];if(s=Math.min(s,Math.max(l,c)),s<0)return!1;if(i=Math.max(i,Math.min(l,c)),i>s)return!1;const u=(e[2]-o-t[2])*r[2],d=(e[5]+o-t[2])*r[2];return s=Math.min(s,Math.max(u,d)),!(s<0)&&(i=Math.max(i,Math.min(u,d)),!(i>s)&&i<1/0)}(e,t,r,o)}(J,t,s,o)){const{primitiveIndices:s,position:l}=e,c=s?s.length:l.indices.length/3;if(c>le){const s=e.getChildren();if(void 0!==s){for(const e of s)Q(e,t,r,o,a,n,i);return}}!function(e,t,r,o,a,n,i,s,l,c,u){const d=e[0],h=e[1],m=e[2],f=t[0],p=t[1],v=t[2],{normalRequired:g}=c;for(let e=0;e<o;++e){const t=s[e],r=3*t,o=i*a[r];let c=n[o],x=n[o+1],b=n[o+2];const w=i*a[r+1];let y=n[w],M=n[w+1],S=n[w+2];const T=i*a[r+2];let C=n[T],I=n[T+1],_=n[T+2];null!=l&&([c,x,b]=l.applyToVertex(c,x,b,e),[y,M,S]=l.applyToVertex(y,M,S,e),[C,I,_]=l.applyToVertex(C,I,_,e));const P=y-c,z=M-x,E=S-b,F=C-c,O=I-x,D=_-b,H=p*D-O*v,B=v*F-D*f,j=f*O-F*p,R=P*H+z*B+E*j;if(Math.abs(R)<=ce)continue;const N=d-c,G=h-x,A=m-b,W=N*H+G*B+A*j;if(R>0){if(W<0||W>R)continue}else if(W>0||W<R)continue;const L=G*E-z*A,V=A*P-E*N,k=N*z-P*G,U=f*L+p*V+v*k;if(R>0){if(U<0||W+U>R)continue}else if(U>0||W+U<R)continue;const q=(F*L+O*V+D*k)/R;q>=0&&u(q,g?ae(P,z,E,F,O,D,ee):null,t)}}(t,r,0,c,l.indices,l.data,l.stride,s,a,n,i)}}const ee=(0,h.vt)();const te=(0,h.vt)(),re=(0,h.vt)(),oe=(0,h.vt)();function ae(e,t,r,o,a,n,i){return(0,d.hZ)(ie,e,t,r),(0,d.hZ)(se,o,a,n),(0,d.$A)(i,ie,se),(0,d.S8)(i,i),i}function ne(e){return(0,d.jb)(ie,e[1],e[0]),(0,d.jb)(se,e[2],e[0]),(0,d.$A)(ee,ie,se),(0,d.S8)(ee,ee),ee}const ie=(0,h.vt)(),se=(0,h.vt)(),le=1e3,ce=1e-7,ue=(0,h.vt)(),de=[(0,h.vt)(),(0,h.vt)(),(0,h.vt)()];var he=r(16396),me=r(59907);class fe{constructor(e){this.layout=e}elementCount(e){return e.get("position").indices.length}write(e,t,r,o,a,n){return(0,me.vJ)(r,o,this.layout,e,t,a,n)}}var pe=r(33442),ve=r(43616),ge=r(5482),xe=r(91429),be=r(91829),we=r(4431),ye=r(1843),Me=r(72824),Se=r(13840),Te=r(98958),Ce=r(16943),Ie=r(33524),_e=r(56133),Pe=r(4576);r(66289);var ze=r(69622),Ee=r(65529),Fe=r(32728);class Oe{constructor(e){this.localTransform=e.localTransform,this.globalTransform=e.globalTransform,this.modelOrigin=e.modelOrigin,this.model=e.instanceModel,this.modelNormal=e.instanceModelNormal,this.modelScaleFactors=e.modelScaleFactors,this.boundingSphere=e.boundingSphere,this.featureAttribute=e.getField("instanceFeatureAttribute",v.Eq),this.color=e.getField("instanceColor",v.XP),this.olidColor=e.getField("instanceOlidColor",v.XP),this.state=e.getField("state",v.SL),this.lodLevel=e.getField("lodLevel",v.SL)}}let De=class extends ze.A{constructor(e,t){super(e),this.events=new Ee.bk,this._capacity=0,this._size=0,this._next=0,this._highlightOptionsMap=new Map,this._highlightOptionsMapPrev=new Map,this._layout=function(e){return Be(He.clone(),e).u8("state").u8("lodLevel")}(t),this._capacity=Ae,this._buffer=this._layout.createBuffer(this._capacity),this._view=new Oe(this._buffer)}get capacity(){return this._capacity}get size(){return this._size}get view(){return this._view}addInstance(){this._size+1>this._capacity&&this._grow();const e=this._findSlot();return this._view.state.set(e,1),this._size++,this.events.emit("instances-changed"),e}removeInstance(e){const t=this._view.state;(0,Z.vA)(e>=0&&e<this._capacity&&!!(1&t.get(e)),"invalid instance handle"),this._getStateFlag(e,18)?this._setStateFlags(e,32):this.freeInstance(e),this.events.emit("instances-changed")}freeInstance(e){const t=this._view.state;(0,Z.vA)(e>=0&&e<this._capacity&&!!(1&t.get(e)),"invalid instance handle"),t.set(e,0),this._size--}setLocalTransform(e,t,r=!0){this._view.localTransform.setMat(e,t),r&&this.updateModelTransform(e)}getLocalTransform(e,t){this._view.localTransform.getMat(e,t)}setGlobalTransform(e,t,r=!0){this._view.globalTransform.setMat(e,t),r&&this.updateModelTransform(e)}getGlobalTransform(e,t){this._view.globalTransform.getMat(e,t)}updateModelTransform(e){const t=this._view,r=je,o=Re;t.localTransform.getMat(e,Ne),t.globalTransform.getMat(e,Ge);const a=(0,l.lw)(Ge,Ge,Ne);(0,d.hZ)(r,a[12],a[13],a[14]),t.modelOrigin.setVec(e,r),(0,i.z0)(o,a),t.model.setMat(e,o);const n=(0,Fe.wp)(je,a);n.sort(),t.modelScaleFactors.set(e,0,n[1]),t.modelScaleFactors.set(e,1,n[2]),(0,i.B8)(o,o),(0,i.mg)(o,o),t.modelNormal.setMat(e,o),this._setStateFlags(e,64),this.events.emit("instance-transform-changed",{index:e})}getModelTransform(e,t){const r=this._view;r.model.getMat(e,Re),r.modelOrigin.getVec(e,je),t[0]=Re[0],t[1]=Re[1],t[2]=Re[2],t[3]=0,t[4]=Re[3],t[5]=Re[4],t[6]=Re[5],t[7]=0,t[8]=Re[6],t[9]=Re[7],t[10]=Re[8],t[11]=0,t[12]=je[0],t[13]=je[1],t[14]=je[2],t[15]=1}applyShaderTransformation(e,t){null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t)}getCombinedModelTransform(e,t){return this.getModelTransform(e,t),null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t),t}getCombinedLocalTransform(e,t){this._view.localTransform.getMat(e,t),null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t)}getCombinedMaxScaleFactor(e){let t=this._view.modelScaleFactors.get(e,1);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(je,this,e),t*=Math.max(je[0],je[1],je[2])),t}getCombinedMedianScaleFactor(e){let t=this._view.modelScaleFactors.get(e,0);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(je,this,e),t*=function(e,t,r){return Math.max(Math.min(e,t),Math.min(Math.max(e,t),r))}(je[0],je[1],je[2])),t}getModel(e,t){this._view.model.getMat(e,t)}setFeatureAttribute(e,t){this._view.featureAttribute?.setVec(e,t)}getFeatureAttribute(e,t){this._view.featureAttribute?.getVec(e,t)}setColor(e,t){this._view.color?.setVec(e,t)}setObjectAndLayerIdColor(e,t){this._view.olidColor?.setVec(e,t)}setVisible(e,t){t!==this.getVisible(e)&&(this._setStateFlag(e,4,t),this.events.emit("instance-visibility-changed",{index:e}))}getVisible(e){return this._getStateFlag(e,4)}setHighlight(e,t){const{_highlightOptionsMap:r}=this,o=r.get(e);t?t!==o&&(r.set(e,t),this._setStateFlag(e,8,!0),this.events.emit("instance-highlight-changed")):o&&(r.delete(e),this._setStateFlag(e,8,!1),this.events.emit("instance-highlight-changed"))}get highlightOptionsMap(){return this._highlightOptionsMap}getHighlightStateFlag(e){return this._getStateFlag(e,8)}geHighlightOptionsPrev(e){const t=this._highlightOptionsMapPrev.get(e)??null;return this._highlightOptionsMapPrev.delete(e),t}getHighlightName(e){const t=this.highlightOptionsMap.get(e)??null;return t?this._highlightOptionsMapPrev.set(e,t):this._highlightOptionsMapPrev.delete(e),t}getState(e){return this._view.state.get(e)}getLodLevel(e){return this._view.lodLevel.get(e)}countFlags(e){let t=0;for(let r=0;r<this._capacity;++r)this.getState(r)&e&&++t;return t}_setStateFlags(e,t){const r=this._view.state;t=r.get(e)|t,r.set(e,t)}_clearStateFlags(e,t){const r=this._view.state;t=r.get(e)&~t,r.set(e,t)}_setStateFlag(e,t,r){r?this._setStateFlags(e,t):this._clearStateFlags(e,t)}_getStateFlag(e,t){return!!(this._view.state.get(e)&t)}_grow(){this._capacity=Math.max(Ae,Math.floor(this._capacity*Pe.Ji)),this._buffer=this._layout.createBuffer(this._capacity).copyFrom(this._buffer),this._view=new Oe(this._buffer)}_findSlot(){const e=this._view.state;let t=this._next;for(;1&e.get(t);)t=t+1===this._capacity?0:t+1;return this._next=t+1===this._capacity?0:t+1,t}};(0,ge.Cg)([(0,xe.MZ)({constructOnly:!0})],De.prototype,"shaderTransformation",void 0),(0,ge.Cg)([(0,xe.MZ)()],De.prototype,"_size",void 0),(0,ge.Cg)([(0,xe.MZ)({readOnly:!0})],De.prototype,"size",null),De=(0,ge.Cg)([(0,xe.$K)("esri.views.3d.webgl-engine.lib.lodRendering.InstanceData")],De);const He=(0,ye.BP)().mat4f64("localTransform").mat4f64("globalTransform").vec4f64("boundingSphere").vec3f64("modelOrigin").mat3f("instanceModel").mat3f("instanceModelNormal").vec2f("modelScaleFactors");function Be(e,t){return t.instancedFeatureAttribute&&e.vec4f("instanceFeatureAttribute"),t.instancedColor&&e.vec4u8("instanceColor"),(0,Ce.E)()&&e.vec4u8("instanceOlidColor"),e}const je=(0,h.vt)(),Re=(0,s.vt)(),Ne=(0,c.vt)(),Ge=(0,c.vt)(),Ae=64,We=(0,ye.BP)().vec3f("instanceModelOriginHi").vec3f("instanceModelOriginLo").mat3f("instanceModel").mat3f("instanceModelNormal");var Le=r(74810),Ve=r(28491),ke=r(90644),Ue=r(49788);class qe extends Me.Zo{constructor(){super(...arguments),this.isSchematic=!1,this.usePBR=!1,this.mrrFactors=Le.mb,this.hasVertexColors=!1,this.hasSymbolColors=!1,this.doubleSided=!1,this.doubleSidedType="normal",this.cullFace=2,this.instanced=!1,this.instancedFeatureAttribute=!1,this.instancedColor=!1,this.instanceColorEncodesAlphaIgnore=!1,this.emissiveStrengthFromSymbol=0,this.emissiveStrengthKHR=1,this.emissiveSource=1,this.emissiveBaseColor=h.uY,this.instancedDoublePrecision=!1,this.normalType=0,this.receiveShadows=!0,this.receiveAmbientOcclusion=!0,this.castShadows=!0,this.ambient=(0,h.CN)(.2,.2,.2),this.diffuse=(0,h.CN)(.8,.8,.8),this.externalColor=(0,be.fA)(1,1,1,1),this.colorMixMode="multiply",this.opacity=1,this.layerOpacity=1,this.origin=(0,h.vt)(),this.hasSlicePlane=!1,this.offsetTransparentBackfaces=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.modelTransformation=null,this.drivenOpacity=!1,this.writeDepth=!0,this.customDepthTest=0,this.textureAlphaMode=0,this.textureAlphaCutoff=Ue.Q,this.textureAlphaPremultiplied=!1,this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}Me.gy;let $e=class extends Te.w{constructor(e,t){let o=(0,we.U)(Je(t));t.instanced&&t.instancedDoublePrecision&&(o=o.concat((0,we.U)(function(e){return Be(We.clone(),e)}(t)))),super(e,t,o),this.shader=new Se.r(Ve.D,()=>r.e(5141).then(r.bind(r,5141))),this.ignoreUnused=!0}_makePipeline(e,t){const{output:r,transparent:o,cullFace:a,customDepthTest:n,hasOccludees:i}=e;return(0,ke.Ey)({blending:o?(0,Ie.Yf)(r):null,culling:Ye(e)?(0,ke.Xt)(a):null,depthTest:(0,Ie.mt)(r,Ze(n)),depthWrite:(0,Ie.z5)(e),colorWrite:ke.kn,stencilWrite:i?_e.v0:null,stencilTest:i?t?_e.a9:_e.qh:null,polygonOffset:(0,pe.sG)(e)})}initializePipeline(e){return this._occludeePipelineState=this._makePipeline(e,!0),this._makePipeline(e,!1)}getPipeline(e,t){return t?this._occludeePipelineState:super.getPipeline(e)}};function Ze(e){switch(e){case 1:return 515;case 0:case 3:return 513;case 2:return 516}}function Ye(e){return 0!==e.cullFace||!e.hasSlicePlane&&!e.transparent&&!e.doubleSidedMode}function Je(e){const t=(0,ye.BP)().vec3f("position");return 1===e.normalType?t.vec2i16("normalCompressed",{glNormalized:!0}):t.vec3f("normal"),e.hasVertexTangents&&t.vec4f("tangent"),e.hasTextures&&t.vec2f16("uv0"),e.hasVertexColors&&t.vec4u8("color",{glNormalized:!0}),e.hasSymbolColors&&t.vec4u8("symbolColor"),!e.instanced&&(0,Ce.E)()&&t.vec4u8("olidColor"),t}$e=(0,ge.Cg)([(0,xe.$K)("esri.views.3d.webgl-engine.shaders.DefaultMaterialTechnique")],$e);var Xe=r(51976),Ke=r(47724);class Qe extends Ke.L{constructor(e){super(),this.spherical=e,this.alphaDiscardMode=1,this.doubleSidedMode=0,this.pbrMode=0,this.cullFace=0,this.normalType=0,this.customDepthTest=0,this.emissionSource=0,this.hasVertexColors=!1,this.hasSymbolColors=!1,this.hasVerticalOffset=!1,this.hasColorTexture=!1,this.hasMetallicRoughnessTexture=!1,this.hasOcclusionTexture=!1,this.hasNormalTexture=!1,this.hasScreenSizePerspective=!1,this.hasVertexTangents=!1,this.hasOccludees=!1,this.instanced=!1,this.instancedDoublePrecision=!1,this.hasModelTransformation=!1,this.offsetBackfaces=!1,this.hasVVSize=!1,this.hasVVColor=!1,this.receiveShadows=!1,this.hasShadowHighlights=!1,this.receiveAmbientOcclusion=!1,this.receiveGlobalIllumination=!1,this.textureAlphaPremultiplied=!1,this.instancedFeatureAttribute=!1,this.instancedColor=!1,this.writeDepth=!0,this.snowCover=!1,this.hasColorTextureTransform=!1,this.hasEmissionTextureTransform=!1,this.hasNormalTextureTransform=!1,this.hasOcclusionTextureTransform=!1,this.hasMetallicRoughnessTextureTransform=!1,this.useCustomDTRExponentForWater=!1,this.useFillLights=!0,this.draped=!1}get textureCoordinateType(){return this.hasTextures?1:0}get hasTextures(){return this.hasColorTexture||this.hasNormalTexture||this.hasMetallicRoughnessTexture||3===this.emissionSource||this.hasOcclusionTexture}get hasVVInstancing(){return this.instanced}get discardInvisibleFragments(){return this.transparent}}(0,ge.Cg)([(0,Xe.W)({count:4})],Qe.prototype,"alphaDiscardMode",void 0),(0,ge.Cg)([(0,Xe.W)({count:3})],Qe.prototype,"doubleSidedMode",void 0),(0,ge.Cg)([(0,Xe.W)({count:7})],Qe.prototype,"pbrMode",void 0),(0,ge.Cg)([(0,Xe.W)({count:3})],Qe.prototype,"cullFace",void 0),(0,ge.Cg)([(0,Xe.W)({count:3})],Qe.prototype,"normalType",void 0),(0,ge.Cg)([(0,Xe.W)({count:3})],Qe.prototype,"customDepthTest",void 0),(0,ge.Cg)([(0,Xe.W)({count:8})],Qe.prototype,"emissionSource",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasVertexColors",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasSymbolColors",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasVerticalOffset",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasColorTexture",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasMetallicRoughnessTexture",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasOcclusionTexture",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasNormalTexture",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasScreenSizePerspective",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasVertexTangents",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasOccludees",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"instanced",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"instancedDoublePrecision",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasModelTransformation",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"offsetBackfaces",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasVVSize",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasVVColor",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"receiveShadows",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasShadowHighlights",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"receiveAmbientOcclusion",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"receiveGlobalIllumination",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"textureAlphaPremultiplied",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"instancedFeatureAttribute",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"instancedColor",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"writeDepth",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"snowCover",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasColorTextureTransform",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasEmissionTextureTransform",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasNormalTextureTransform",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasOcclusionTextureTransform",void 0),(0,ge.Cg)([(0,Xe.W)()],Qe.prototype,"hasMetallicRoughnessTextureTransform",void 0);var et=r(57323);let tt=class extends $e{constructor(){super(...arguments),this.shader=new Se.r(et.R,()=>r.e(2314).then(r.bind(r,39933)))}};tt=(0,ge.Cg)([(0,xe.$K)("esri.views.3d.webgl-engine.shaders.RealisticTreeTechnique")],tt);class rt extends Xe.K{constructor(){super(...arguments),this.receiveShadows=!0}}(0,ge.Cg)([(0,Xe.W)()],rt.prototype,"receiveShadows",void 0);class ot extends $.i{constructor(e,t){super(e,nt),this.materialType="default",this.supportsEdges=!0,this.intersectDraped=void 0,this.produces=new Map([[2,e=>(0,A.uw)(e)&&!this.transparent],[4,e=>(0,A.uw)(e)&&this.transparent&&this.parameters.writeDepth],[8,e=>(0,A.uw)(e)&&this.transparent&&!this.parameters.writeDepth]]),this._layout=Je(this.parameters),this._configuration=new Qe(t.spherical)}isVisibleForOutput(e){return 5!==e&&7!==e&&6!==e||this.parameters.castShadows}get visible(){const{layerOpacity:e,colorMixMode:t,opacity:r,externalColor:o}=this.parameters;return e*("replace"===t?1:r)*("ignore"===t||isNaN(o[3])?1:o[3])>=Ue.Q}get _hasEmissiveBase(){return!!this.parameters.emissiveTextureId||!(0,d.t2)(this.parameters.emissiveBaseColor,h.uY)}get hasEmissions(){return this.parameters.emissiveStrength>0&&(0===this.parameters.emissiveSource&&this._hasEmissiveBase||1===this.parameters.emissiveSource)?this.transparent?2:1:0}updateConfiguration(e){super.updateConfiguration(e);const{parameters:t,_configuration:r}=this;r.hasNormalTexture=t.hasNormalTexture,r.hasColorTexture=t.hasColorTexture,r.hasMetallicRoughnessTexture=t.hasMetallicRoughnessTexture,r.hasOcclusionTexture=t.hasOcclusionTexture;const{treeRendering:o,doubleSided:a,doubleSidedType:n}=t;r.hasVertexTangents=!o&&t.hasVertexTangents,r.instanced=t.instanced,r.instancedDoublePrecision=t.instancedDoublePrecision,r.hasVVColor=!!t.vvColor,r.hasVVSize=!!t.vvSize,r.hasVerticalOffset=null!=t.verticalOffset,r.hasScreenSizePerspective=null!=t.screenSizePerspective,r.hasSlicePlane=t.hasSlicePlane,r.alphaDiscardMode=t.textureAlphaMode,r.normalType=o?0:t.normalType,r.transparent=this.transparent,r.enableOITOffset=e.enableOITOffset,r.writeDepth=t.writeDepth,r.customDepthTest=t.customDepthTest??0,r.hasOccludees=e.hasOccludees,r.cullFace=t.hasSlicePlane?0:t.cullFace,r.hasModelTransformation=!o&&null!=t.modelTransformation,r.hasVertexColors=t.hasVertexColors,r.hasSymbolColors=t.hasSymbolColors,r.doubleSidedMode=o?2:a&&"normal"===n?1:a&&"winding-order"===n?2:0,r.instancedFeatureAttribute=t.instancedFeatureAttribute,r.instancedColor=t.instancedColor,(0,A._o)(e.output)?(r.receiveShadows=t.receiveShadows,r.hasShadowHighlights=function(e,t){return e.receiveShadows&&null!=t.shadowHighlight?.getTexture()}(r,e),r.receiveAmbientOcclusion=t.receiveAmbientOcclusion&&null!=e.ssao,r.receiveGlobalIllumination=t.receiveAmbientOcclusion&&e.globalIlluminationEnabled):r.receiveShadows=r.hasShadowHighlights=r.receiveAmbientOcclusion=!1,r.textureAlphaPremultiplied=!!t.textureAlphaPremultiplied,r.pbrMode=t.usePBR?t.isSchematic?2:1:0,r.emissionSource=t.emissionSource,r.offsetBackfaces=!(!this.transparent||!t.offsetTransparentBackfaces),r.snowCover=e.snowCover>0,r.hasColorTextureTransform=!!t.colorTextureTransformMatrix,r.hasNormalTextureTransform=!!t.normalTextureTransformMatrix,r.hasEmissionTextureTransform=!!t.emissiveTextureTransformMatrix,r.hasOcclusionTextureTransform=!!t.occlusionTextureTransformMatrix,r.hasMetallicRoughnessTextureTransform=!!t.metallicRoughnessTextureTransformMatrix}intersect(e,t,r,o,a,n){if(null!=this.parameters.verticalOffset){const e=r.camera;(0,d.hZ)(dt,t[12],t[13],t[14]);let n=null;switch(r.viewingMode){case 1:n=(0,d.S8)(ct,dt);break;case 2:n=(0,d.C)(ct,lt)}const i=(0,d.Re)(ht,dt,e.eye),s=(0,d.Bw)(i),l=(0,d.hs)(i,i,1/s);let c=null;this.parameters.screenSizePerspective&&(c=(0,d.Om)(n,l));const u=(0,ve.kE)(e,s,this.parameters.verticalOffset,c??0,this.parameters.screenSizePerspective,null);(0,d.hs)(n,n,u),(0,d.ei)(ut,n,r.transform.inverseRotation),o=(0,d.Re)(it,o,ut),a=(0,d.Re)(st,a,ut)}n=(0,pe.b6)(n,this._configuration,o,a),X(e,r,o,a,(0,he.ou)(r.verticalOffset),n)}createGLMaterial(e){return new at(e)}createBufferWriter(){return new fe(this._layout)}get transparent(){return function(e){const{drivenOpacity:t,opacity:r,externalColor:o,layerOpacity:a,texture:n,textureId:i,textureAlphaMode:s,colorMixMode:l}=e,c=o[3];return t||r<1&&"replace"!==l||c<1&&"ignore"!==l||a<1||(null!=n||null!=i)&&1!==s&&2!==s&&"replace"!==l}(this.parameters)}}class at extends k{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){this._material.setParameters({receiveShadows:e.shadowMap.enabled});const t=this._material.parameters;this.updateTexture(t.textureId);const r=e.camera.viewInverseTransposeMatrix;return(0,d.hZ)(t.origin,r[3],r[7],r[11]),this._material.setParameters(this.textureBindParameters),this.getTechnique(t.treeRendering?tt:$e,e)}}class nt extends qe{constructor(){super(...arguments),this.treeRendering=!1,this.useIndexing=!1,this.hasVertexTangents=!1}get hasNormalTexture(){return!this.treeRendering&&!!this.normalTextureId}get hasColorTexture(){return!!this.textureId}get hasMetallicRoughnessTexture(){return!this.treeRendering&&!!this.metallicRoughnessTextureId}get hasOcclusionTexture(){return!this.treeRendering&&!!this.occlusionTextureId}get emissiveStrength(){return this.emissiveStrengthFromSymbol*this.emissiveStrengthKHR}get emissionSource(){return this.treeRendering?0:null!=this.emissiveTextureId&&0===this.emissiveSource?3:0===this.emissiveSource?2:1}get hasTextures(){return this.hasColorTexture||this.hasNormalTexture||this.hasMetallicRoughnessTexture||3===this.emissionSource||this.hasOcclusionTexture}}const it=(0,h.vt)(),st=(0,h.vt)(),lt=(0,h.fA)(0,0,1),ct=(0,h.vt)(),ut=(0,h.vt)(),dt=(0,h.vt)(),ht=(0,h.vt)(),mt=()=>E.A.getLogger("esri.views.3d.layers.graphics.objectResourceUtils");class ft{constructor(e,t,r){this.resource=e,this.textures=t,this.usedMemory=r}}function pt(e){const t=e.params,r=t.topology;let o=!0;switch(t.vertexAttributes||(mt().warn("Geometry must specify vertex attributes"),o=!1),t.topology){case"PerAttributeArray":break;case"Indexed":case null:case void 0:{const e=t.faces;if(e){if(t.vertexAttributes)for(const r in t.vertexAttributes){const t=e[r];t?.values?(null!=t.valueType&&"UInt32"!==t.valueType&&(mt().warn(`Unsupported indexed geometry indices type '${t.valueType}', only UInt32 is currently supported`),o=!1),null!=t.valuesPerElement&&1!==t.valuesPerElement&&(mt().warn(`Unsupported indexed geometry values per element '${t.valuesPerElement}', only 1 is currently supported`),o=!1)):(mt().warn(`Indexed geometry does not specify face indices for '${r}' attribute`),o=!1)}}else mt().warn("Indexed geometries must specify faces"),o=!1;break}default:mt().warn(`Unsupported topology '${r}'`),o=!1}e.params.material||(mt().warn("Geometry requires material"),o=!1);const a=e.params.vertexAttributes;for(const e in a)a[e].values||(mt().warn("Geometries with externally defined attributes are not yet supported"),o=!1);return o}function vt(e){const t=(0,m.Ie)();return e.forEach(e=>{const r=e.boundingInfo;null!=r&&((0,m.iT)(t,r.bbMin),(0,m.iT)(t,r.bbMax))}),t}function gt(e){switch(e){case"mask":return 2;case"maskAndTransparency":return 3;case"none":return 1;default:return 0}}function xt(e){const t=e.params;return{id:1,material:t.material,texture:t.texture,region:t.texture}}const bt=new H.A(1,2,"wosr");async function wt(e,t){const s=function(e){const t=e.match(/(.*\.(gltf|glb))(\?lod=([0-9]+))?$/);return t?{fileType:"gltf",url:t[1],specifiedLodIndex:null!=t[4]?Number(t[4]):null}:e.match(/(.*\.(json|json\.gz))$/)?{fileType:"wosr",url:e,specifiedLodIndex:null}:{fileType:"unknown",url:e,specifiedLodIndex:null}}((0,a.EM)(e));if("wosr"===s.fileType){const e=await(t.cache?t.cache.loadWOSR(s.url,t):async function(e,t){const r=await async function(e,t){const r=await(0,P.Ke)((0,_.A)(e,t));if(r.ok)return r.value.data;(0,D.QP)(r.error),function(e){throw new z.A("",`Request for object resource failed: ${e}`)}(r.error)}(e,t),o=await async function(e,t){const r=new Array;for(const o in e){const a=e[o],n=a.images[0].data;if(!n){mt().warn("Externally referenced texture data is not yet supported");continue}const i=a.encoding+";base64,"+n,s="/textureDefinitions/"+o,l="rgba"===a.channels?a.alphaChannelUsage||"transparency":"none",c={noUnpackFlip:!0,wrap:{s:10497,t:10497},preMultiplyAlpha:1!==gt(l)},u=t?.disableTextures?Promise.resolve(null):(0,j.D)(i,t);r.push(u.then(e=>({refId:s,image:e,parameters:c,alphaChannelUsage:l})))}const o=await Promise.all(r),a={};for(const e of o)a[e.refId]=e;return a}(r.textureDefinitions??{},t);let a=0;for(const e in o)if(o.hasOwnProperty(e)){const t=o[e];a+=t?.image?t.image.width*t.image.height*4:0}return new ft(r,o,a+(0,F.Qh)(r))}(s.url,t)),{engineResources:r,referenceBoundingBox:o}=function(e,t){const r=new Array,o=new Array,a=new Array,n=new O,i=e.resource,s=H.A.parse(i.version||"1.0","wosr");bt.validate(s);const l=i.model.name,c=i.model.geometries,u=i.materialDefinitions??{},d=e.textures;let m=0;const f=new Map;for(let e=0;e<c.length;e++){const i=c[e];if(!pt(i))continue;const s=xt(i),l=i.params.vertexAttributes,p=[],v=e=>{if("PerAttributeArray"===i.params.topology)return null;const t=i.params.faces;for(const r in t)if(r===e)return t[r].values;return null},g=l.position,x=g.values.length/g.valuesPerElement;for(const e in l){const t=l[e],r=t.values,o=v(e)??(0,B.tM)(x);p.push([e,new R.n(r,o,t.valuesPerElement,!0)])}const b=s.texture,w=d&&d[b];if(w&&!f.has(b)){const{image:e,parameters:t}=w,r=new G.h(e,t);o.push(r),f.set(b,r)}const y=f.get(b),M=y?y.id:void 0,S=s.material;let T=n.get(S,b);if(null==T){const e=u[S.slice(S.lastIndexOf("/")+1)].params;1===e.transparency&&(e.transparency=0);const r=w?gt(w.alphaChannelUsage):void 0,o={ambient:(0,h.ci)(e.diffuse),diffuse:(0,h.ci)(e.diffuse),opacity:1-(e.transparency||0),textureAlphaMode:r,textureAlphaCutoff:.33,textureId:M,doubleSided:!0,cullFace:0,colorMixMode:e.externalColorMixMode||"tint",textureAlphaPremultiplied:w?.parameters.preMultiplyAlpha??!1};t?.materialParameters&&Object.assign(o,t.materialParameters),T=new ot(o,t),n.set(S,b,T)}a.push(T);const C=new N.V(T,p);m+=p.find(e=>"position"===e[0])?.[1]?.indices.length??0,r.push(C)}return{engineResources:[{name:l,stageResources:{textures:o,materials:a,geometries:r},pivotOffset:i.model.pivotOffset,numberOfVertices:m,lodThreshold:null}],referenceBoundingBox:vt(r)}}(e,t);return{lods:r,referenceBoundingBox:o,isEsriSymbolResource:!1,isWosr:!0}}let f;if(t.cache)f=await t.cache.loadGLTF(s.url,t,!!t.usePBR,!!t.useEmissive);else{const{loadGLTF:e}=await r.e(1698).then(r.bind(r,51698));f=await e(new w.R,s.url,t,t.usePBR,t.useEmissive)}const{engineResources:S,referenceBoundingBox:C}=function(e,t,r){const a=e.model,s=e.meta,f=a.meta?.ESRI_proxyEllipsoid,w=s.isEsriSymbolResource&&null!=f&&"EsriRealisticTreesStyle"===s.ESRI_webstyle;w&&!e.customMeta.esriTreeRendering&&(e.customMeta.esriTreeRendering=!0,function(e,t){for(let r=0;r<e.model.lods.length;++r){const a=e.model.lods[r];for(const n of a.parts){const a=n.attributes.normal;if(null==a)return;const i=n.attributes.position,s=i.count,u=(0,h.vt)(),m=(0,h.vt)(),f=(0,h.vt)(),p=new Float32Array(4*s),g=new Float32Array(3*s),x=(0,l.B8)((0,c.vt)(),n.transform);let b=0,w=0;for(let l=0;l<s;l++){i.getVec(l,m),a.getVec(l,u),(0,d.Z0)(m,m,n.transform),(0,d.Re)(f,m,t.center),(0,d.Qr)(f,f,t.radius);const s=f[2],c=(0,d.Bw)(f),h=Math.min(.45+.55*c*c,1)**o.Tf;(0,d.Qr)(f,f,t.radius),null!==x&&(0,d.Z0)(f,f,x),(0,d.S8)(f,f),r+1!==e.model.lods.length&&e.model.lods.length>1&&(0,d.Cc)(f,f,u,s>-1?.2:Math.min(-4*s-3.8,1)),g[b]=f[0],g[b+1]=f[1],g[b+2]=f[2],b+=3,p[w]=h,p[w+1]=h,p[w+2]=h,p[w+3]=1,w+=4}n.attributes.normal=new v.xs(g.buffer),n.attributes.color=new v.Eq(p.buffer)}}}(e,f));const S=!!t.usePBR,C=s.isEsriSymbolResource?{usePBR:S,isSchematic:!1,treeRendering:w,mrrFactors:Le.SY}:{usePBR:S,isSchematic:!1,treeRendering:!1,mrrFactors:Le.mb},_={...t.materialParameters,treeRendering:w},P=new Array,z=new Map,E=new Map,F=a.lods.length,O=(0,m.Ie)();return a.lods.forEach((e,s)=>{const l=!0===t.skipHighLods&&(F>1&&0===s||F>3&&1===s)||!1===t.skipHighLods&&null!=r&&s!==r;if(l&&0!==s)return;const c=new I(e.name,e.lodThreshold,[0,0,0]);e.parts.forEach(e=>{const r=l?new ot({},t):function(e,t,r,a,n,i,s,l,c){const d=e.materials.get(t.material);if(null==d)return null;const{normal:h,color:m,texCoord0:f,tangent:p}=t.attributes,v=t.material+(h?"_normal":"")+(m?"_color":"")+(f?"_texCoord0":"")+(p?"_tangent":""),g=null!=t.attributes.texCoord0,x=null!=t.attributes.normal,b=function(e){switch(e){case"BLEND":return 0;case"MASK":return 2;case"OPAQUE":case null:case void 0:return 1}}(d.alphaMode);if(!i.has(v)){if(g){const t=(t,r=!1,o=!1)=>{if(null!=t&&!s.has(t)){const a=e.textures.get(t);if(a){const e=a.data,n=r&&!(0,M.x3)(e)?l.compressionOptions:void 0;s.set(t,new G.h((0,M.x3)(e)?e.data:e,{...a.parameters,preMultiplyAlpha:!(0,M.x3)(e)&&o,encoding:(0,M.x3)(e)?e.encoding:void 0,compressionOptions:n}))}}},r=1!==b&&!c;t(d.colorTexture,r,1!==b),t(d.normalTexture),t(d.occlusionTexture,!0),t(d.emissiveTexture),t(d.metallicRoughnessTexture,!0)}const r=(0,o.xV)(d.color[0]),h=(0,o.xV)(d.color[1]),m=(0,o.xV)(d.color[2]),f=null!=d.colorTexture&&g?s.get(d.colorTexture):null,p=(0,Le.Jr)(d),w=null!=d.normalTextureTransform?.scale?d.normalTextureTransform?.scale:u.Un;i.set(v,new ot({...a,customDepthTest:1,textureAlphaMode:b,textureAlphaCutoff:d.alphaCutoff,diffuse:[r,h,m],ambient:[r,h,m],opacity:"OPAQUE"===d.alphaMode?1:d.opacity,doubleSided:d.doubleSided,doubleSidedType:"winding-order",cullFace:d.doubleSided?0:2,hasVertexColors:!!t.attributes.color,hasVertexTangents:!!t.attributes.tangent,normalType:x?0:2,castShadows:!0,receiveShadows:d.receiveShadows,receiveAmbientOcclusion:d.receiveAmbientOcclusion,textureId:null!=f?f.id:void 0,colorMixMode:d.colorMixMode,normalTextureId:null!=d.normalTexture&&g?s.get(d.normalTexture).id:void 0,textureAlphaPremultiplied:null!=f&&!!f.parameters.preMultiplyAlpha,occlusionTextureId:null!=d.occlusionTexture&&g?s.get(d.occlusionTexture).id:void 0,emissiveTextureId:null!=d.emissiveTexture&&g?s.get(d.emissiveTexture).id:void 0,metallicRoughnessTextureId:null!=d.metallicRoughnessTexture&&g?s.get(d.metallicRoughnessTexture).id:void 0,emissiveBaseColor:[d.emissiveFactor[0],d.emissiveFactor[1],d.emissiveFactor[2]],emissiveStrengthKHR:null!=d.emissiveStrengthKHR?d.emissiveStrengthKHR:1,emissiveStrengthFromSymbol:null!=n.emissiveStrengthFromSymbol?n.emissiveStrengthFromSymbol:void 0,mrrFactors:p?Le.Bt:[d.metallicFactor,d.roughnessFactor,a.mrrFactors[2]],isSchematic:p,colorTextureTransformMatrix:T(d.colorTextureTransform),normalTextureTransformMatrix:T(d.normalTextureTransform),scale:[w[0],w[1]],occlusionTextureTransformMatrix:T(d.occlusionTextureTransform),emissiveTextureTransformMatrix:T(d.emissiveTextureTransform),metallicRoughnessTextureTransformMatrix:T(d.metallicRoughnessTextureTransform),...n},l))}const w=i.get(v);if(r.stageResources.materials.push(w),g){const e=e=>{null!=e&&r.stageResources.textures.push(s.get(e))};e(d.colorTexture),e(d.normalTexture),e(d.occlusionTexture),e(d.emissiveTexture),e(d.metallicRoughnessTexture)}return w}(a,e,c,C,_,z,E,t,w),{geometry:d,vertexCount:h}=function(e,t){const r=e.attributes.position.count,o=(0,y.x)(e.indices||r,e.primitiveType),a=p(3*r),{typedBuffer:s,typedBufferStride:l}=e.attributes.position;(0,g.t)(a,s,e.transform,3,l);const c=[["position",new R.n(a,o,3,!0)]];if(null!=e.attributes.normal){const t=p(3*r),{typedBuffer:a,typedBufferStride:s}=e.attributes.normal;(0,i.Ge)(yt,e.transform),(0,g.b)(t,a,yt,3,s),(0,n.or)(yt)&&(0,g.n)(t,t),c.push(["normal",new R.n(t,o,3,!0)])}if(null!=e.attributes.tangent){const t=p(4*r),{typedBuffer:a,typedBufferStride:s}=e.attributes.tangent;(0,i.z0)(yt,e.transform),(0,x.t)(t,a,yt,4,s),(0,n.or)(yt)&&(0,g.n)(t,t,4),c.push(["tangent",new R.n(t,o,4,!0)])}if(null!=e.attributes.texCoord0){const t=p(2*r),{typedBuffer:a,typedBufferStride:n}=e.attributes.texCoord0;(0,b.a)(t,a,2,n),c.push(["uv0",new R.n(t,o,2,!0)])}const u=e.attributes.color;if(null!=u){const t=new Uint8Array(4*r);4===u.elementCount?u instanceof v.Eq?(0,x.b)(t,u,1,255):(u instanceof v.XP||u instanceof v.Uz)&&(0,x.b)(t,u,1/255,255):(t.fill(255),u instanceof v.xs?(0,g.f)(t,u.typedBuffer,1,255,4,u.typedBufferStride):(e.attributes.color instanceof v.eI||e.attributes.color instanceof v.nS)&&(0,g.f)(t,u.typedBuffer,1/255,255,4,e.attributes.color.typedBufferStride)),c.push(["color",new R.n(t,o,4,!0)])}return{geometry:new N.V(t,c),vertexCount:r}}(e,r??new ot({},t)),f=d.boundingInfo;null!=f&&0===s&&((0,m.iT)(O,f.bbMin),(0,m.iT)(O,f.bbMax)),null!=r&&(c.stageResources.geometries.push(d),c.numberOfVertices+=h)}),l||P.push(c)}),{engineResources:P,referenceBoundingBox:O}}(f,t,s.specifiedLodIndex);return{lods:S,referenceBoundingBox:C,isEsriSymbolResource:f.meta.isEsriSymbolResource,isWosr:!1}}const yt=(0,s.vt)()},32728(e,t,r){r.d(t,{YH:()=>s,hG:()=>n,nu:()=>l,wp:()=>i}),r(34727);var o=r(35522),a=r(51850);function n(e){const t=e[0]*e[0]+e[4]*e[4]+e[8]*e[8],r=e[1]*e[1]+e[5]*e[5]+e[9]*e[9],o=e[2]*e[2]+e[6]*e[6]+e[10]*e[10];return Math.sqrt(Math.max(t,r,o))}function i(e,t){const r=Math.sqrt(t[0]*t[0]+t[4]*t[4]+t[8]*t[8]),a=Math.sqrt(t[1]*t[1]+t[5]*t[5]+t[9]*t[9]),n=Math.sqrt(t[2]*t[2]+t[6]*t[6]+t[10]*t[10]);return(0,o.hZ)(e,r,a,n),e}function s(e,t,r){r=r||e;const a=(0,o.Om)(e,t);(0,o.hZ)(r,e[0]-a*t[0],e[1]-a*t[1],e[2]-a*t[2]),(0,o.S8)(r,r)}function l(e,t,r,n=(0,a.vt)()){const i=(0,o.Bw)(e),s=(0,o.Bw)(t),l=(0,o.Om)(e,t)/(i*s);if(l<.9999999999999999){const a=Math.acos(l),d=((1-r)*i+r*s)/Math.sin(a),h=d/i*Math.sin((1-r)*a),m=d/s*Math.sin(r*a);return(0,o.hs)(c,e,h),(0,o.hs)(u,t,m),(0,o.WQ)(n,c,u)}return(0,o.Cc)(n,e,t,r)}(0,a.vt)(),(0,a.vt)(),(0,a.vt)();const c=(0,a.vt)(),u=(0,a.vt)()},46686(e,t,r){r.d(t,{o:()=>a});var o=r(31821);function a(e,t){t&&e.varyings.add("linearDepth","float",{invariant:!0}),e.vertex.code.add(o.H`
|
|
565
|
+
void forwardLinearDepth(float _linearDepth) { ${(0,o.If)(t,"linearDepth = _linearDepth;")} }
|
|
566
|
+
`)}},33120(e,t,r){r.d(t,{i$:()=>i,xJ:()=>n}),r(46686),r(62308);var o=r(77108),a=r(31821);function n(e){e.vertex.uniforms.add(new o.E("nearFar",e=>e.camera.nearFar))}function i(e){e.vertex.code.add(a.H`float calculateLinearDepth(vec2 nearFar,float z) {
|
|
567
|
+
return (-z - nearFar[0]) / (nearFar[1] - nearFar[0]);
|
|
568
|
+
}`)}},32680(e,t,r){r.d(t,{M:()=>a});var o=r(31821);function a(e){e.vertex.code.add(o.H`vec4 offsetBackfacingClipPosition(vec4 posClip, vec3 posWorld, vec3 normalWorld, vec3 camPosWorld) {
|
|
569
|
+
vec3 camToVert = posWorld - camPosWorld;
|
|
570
|
+
bool isBackface = dot(camToVert, normalWorld) > 0.0;
|
|
571
|
+
if (isBackface) {
|
|
572
|
+
posClip.z += 0.0000003 * posClip.w;
|
|
573
|
+
}
|
|
574
|
+
return posClip;
|
|
575
|
+
}`)}},49255(e,t,r){function o(e){return function(e){return c(e)||4===e}(e)||function(e){return 5===(t=e)||6===t||7===t||8===e||9===e;var t}(e)}function a(e){return 10===e||11===e}function n(e){return l(e)||a(e)}function i(e){return 1===e}function s(e){return 2===e}function l(e){return 0===e||function(e){return i(e)||s(e)}(e)}function c(e){return function(e){return l(e)||a(e)}(e)||u(e)}function u(e){return 3===e}r.d(t,{Ex:()=>a,Rb:()=>s,Sp:()=>i,_o:()=>l,eh:()=>u,gr:()=>c,i3:()=>n,uw:()=>o})},76597(e,t,r){r.d(t,{d:()=>n});var o=r(33120),a=r(31821);function n(e){(0,o.i$)(e),e.vertex.code.add(a.H`vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {
|
|
576
|
+
vec4 eye = view * vec4(pos, 1.0);
|
|
577
|
+
depth = calculateLinearDepth(nearFar,eye.z);
|
|
578
|
+
return proj * eye;
|
|
579
|
+
}`),e.vertex.code.add(a.H`vec4 transformPosition(mat4 proj, mat4 view, vec3 pos) {
|
|
580
|
+
return proj * (view * vec4(pos, 1.0));
|
|
581
|
+
}`)}},24321(e,t,r){r.d(t,{v:()=>n});var o=r(43519),a=r(31821);function n(e,t){t.instancedColor?(e.attributes.add("instanceColor","vec4"),e.vertex.include(o.WD),e.vertex.include(o.Y1),e.vertex.include(o.ML),e.vertex.code.add(a.H`
|
|
582
|
+
MaskedColor applyInstanceColor(MaskedColor color) {
|
|
583
|
+
return multiplyMaskedColors( color, createMaskedFromUInt8NaNColor(${"instanceColor"}));
|
|
584
|
+
}
|
|
585
|
+
`)):e.vertex.code.add(a.H`MaskedColor applyInstanceColor(MaskedColor color) {
|
|
586
|
+
return color;
|
|
587
|
+
}`)}},2585(e,t,r){r.d(t,{B:()=>g});var o=r(77690),a=r(29242),n=r(9093),i=r(35522),s=r(51850),l=r(26425),c=r(77949),u=r(23205),d=r(31821),h=r(35644),m=r(74333);class f extends m.n{constructor(e,t,r){super(e,"mat4",1,(o,a,n)=>o.setUniformMatrix4fv(e,t(a,n),r))}}var p=r(28449);r(65786).Y;const v=(0,a.vt)();function g(e,t){const{hasModelTransformation:r,instancedDoublePrecision:a,instanced:s,output:m,hasVertexTangents:g}=t;r&&(e.vertex.uniforms.add(new f("model",e=>e.modelTransformation??n.zK)),e.vertex.uniforms.add(new h.k("normalLocalOriginFromModel",e=>((0,o.Ge)(v,e.modelTransformation??n.zK),v)))),s&&a&&(e.attributes.add("instanceModelOriginHi","vec3"),e.attributes.add("instanceModelOriginLo","vec3"),e.attributes.add("instanceModel","mat3"),e.attributes.add("instanceModelNormal","mat3"));const b=e.vertex;a&&(b.include(l.u),b.uniforms.add(new u.d("viewOriginHi",e=>(0,p.Zo)((0,i.hZ)(x,e.camera.viewInverseTransposeMatrix[3],e.camera.viewInverseTransposeMatrix[7],e.camera.viewInverseTransposeMatrix[11]),x)),new u.d("viewOriginLo",e=>(0,p.jA)((0,i.hZ)(x,e.camera.viewInverseTransposeMatrix[3],e.camera.viewInverseTransposeMatrix[7],e.camera.viewInverseTransposeMatrix[11]),x)))),b.code.add(d.H`
|
|
588
|
+
vec3 getVertexInLocalOriginSpace() {
|
|
589
|
+
return ${r?a?"(model * vec4(instanceModel * localPosition().xyz, 1.0)).xyz":"(model * localPosition()).xyz":a?"instanceModel * localPosition().xyz":"localPosition().xyz"};
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
vec3 subtractOrigin(vec3 _pos) {
|
|
593
|
+
${a?d.H`
|
|
594
|
+
// Issue: (should be resolved now with invariant position) https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/56280
|
|
595
|
+
vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -instanceModelOriginHi, -instanceModelOriginLo);
|
|
596
|
+
return _pos - originDelta;`:"return vpos;"}
|
|
597
|
+
}
|
|
598
|
+
`),b.code.add(d.H`
|
|
599
|
+
vec3 dpNormal(vec4 _normal) {
|
|
600
|
+
return normalize(${r?a?"normalLocalOriginFromModel * (instanceModelNormal * _normal.xyz)":"normalLocalOriginFromModel * _normal.xyz":a?"instanceModelNormal * _normal.xyz":"_normal.xyz"});
|
|
601
|
+
}
|
|
602
|
+
`),4===m&&((0,c.S7)(b),b.code.add(d.H`
|
|
603
|
+
vec3 dpNormalView(vec4 _normal) {
|
|
604
|
+
return normalize((viewNormal * ${r?a?"vec4(normalLocalOriginFromModel * (instanceModelNormal * _normal.xyz), 1.0)":"vec4(normalLocalOriginFromModel * _normal.xyz, 1.0)":a?"vec4(instanceModelNormal * _normal.xyz, 1.0)":"_normal"}).xyz);
|
|
605
|
+
}
|
|
606
|
+
`)),g&&b.code.add(d.H`
|
|
607
|
+
vec4 dpTransformVertexTangent(vec4 _tangent) {
|
|
608
|
+
${r?a?"return vec4(normalLocalOriginFromModel * (instanceModelNormal * _tangent.xyz), _tangent.w);":"return vec4(normalLocalOriginFromModel * _tangent.xyz, _tangent.w);":a?"return vec4(instanceModelNormal * _tangent.xyz, _tangent.w);":"return _tangent;"}
|
|
609
|
+
}`)}const x=(0,s.vt)()},96336(e,t,r){r.d(t,{Y:()=>a});var o=r(31821);function a(e,t){switch(e.fragment.code.add(o.H`vec3 screenDerivativeNormal(vec3 positionView) {
|
|
610
|
+
return normalize(cross(dFdx(positionView), dFdy(positionView)));
|
|
611
|
+
}`),t.normalType){case 1:e.attributes.add("normalCompressed","vec2"),e.vertex.code.add(o.H`vec3 decompressNormal(vec2 normal) {
|
|
612
|
+
float z = 1.0 - abs(normal.x) - abs(normal.y);
|
|
613
|
+
return vec3(normal + sign(normal) * min(z, 0.0), z);
|
|
614
|
+
}
|
|
615
|
+
vec3 normalModel() {
|
|
616
|
+
return decompressNormal(normalCompressed);
|
|
617
|
+
}`);break;case 0:e.attributes.add("normal","vec3"),e.vertex.code.add(o.H`vec3 normalModel() {
|
|
618
|
+
return normal;
|
|
619
|
+
}`);break;default:t.normalType;case 2:case 3:}}},39014(e,t,r){r.d(t,{K:()=>s});var o=r(43519),a=r(31821),n=r(93588),i=r(43616);function s(e,t){e.varyings.add("colorMixMode","int"),e.varyings.add("opacityMixMode","int"),e.vertex.uniforms.add(new n.c("symbolColorMixMode",e=>i.Um[e.colorMixMode])),t.hasSymbolColors?(e.vertex.include(o.WD),e.vertex.include(o.Y1),e.vertex.include(o.ML),e.attributes.add("symbolColor","vec4"),e.vertex.code.add(a.H`
|
|
620
|
+
MaskedColor applySymbolColor(MaskedColor color) {
|
|
621
|
+
return multiplyMaskedColors(color, createMaskedFromUInt8NaNColor(${"symbolColor"}));
|
|
622
|
+
}
|
|
623
|
+
`)):e.vertex.code.add(a.H`MaskedColor applySymbolColor(MaskedColor color) {
|
|
624
|
+
return color;
|
|
625
|
+
}`),e.vertex.code.add(a.H`
|
|
626
|
+
void forwardColorMixMode(bvec4 mask) {
|
|
627
|
+
colorMixMode = mask.r ? ${a.H.int(i.Um.ignore)} : symbolColorMixMode;
|
|
628
|
+
opacityMixMode = mask.a ? ${a.H.int(i.Um.ignore)} : symbolColorMixMode;
|
|
629
|
+
}
|
|
630
|
+
`)}},53466(e,t,r){r.d(t,{U:()=>a});var o=r(31821);function a(e,t){switch(t.textureCoordinateType){case 1:return e.attributes.add("uv0","vec2"),e.varyings.add("vuv0","vec2"),void e.vertex.code.add(o.H`void forwardTextureCoordinates() { vuv0 = uv0; }`);case 2:return e.attributes.add("uv0","vec2"),e.attributes.add("uvRegion","vec4"),e.varyings.add("vuv0","vec2"),e.varyings.add("vuvRegion","vec4"),void e.vertex.code.add(o.H`void forwardTextureCoordinates() {
|
|
631
|
+
vuv0 = uv0;
|
|
632
|
+
vuvRegion = uvRegion;
|
|
633
|
+
}`);default:t.textureCoordinateType;case 0:return void e.vertex.code.add(o.H`void forwardTextureCoordinates() {}`);case 3:return}}},92700(e,t,r){r.d(t,{c:()=>a});var o=r(31821);function a(e,t){t.hasVertexColors?(e.attributes.add("color","vec4"),e.varyings.add("vColor","vec4"),e.vertex.code.add(o.H`void forwardVertexColor() { vColor = color; }`)):e.vertex.code.add(o.H`void forwardVertexColor() {}`)}},72824(e,t,r){r.d(t,{Mh:()=>u,Zo:()=>d,gy:()=>h});var o=r(29242),a=r(91829),n=r(96336),i=r(62308),s=r(31821),l=r(98353),c=r(35644);function u(e,t){const{vertex:r,varyings:o}=e;switch(t.normalType){case 0:case 1:{e.include(n.Y,t),o.add("vNormalWorld","vec3"),o.add("vNormalView","vec3"),r.uniforms.add(new c.k("transformNormalViewFromGlobal",e=>e.transformNormalViewFromGlobal));const{vertexNormalRotationType:a}=t,i=1===a;i&&r.uniforms.add(new l.h("transformNormalGlobalFromModel",e=>e.transformNormalGlobalFromModel)),r.code.add(s.H`
|
|
634
|
+
${(0,s.If)(i,s.H`
|
|
635
|
+
mat3 normalModelTransformation() {
|
|
636
|
+
return transformNormalGlobalFromModel;
|
|
637
|
+
}
|
|
638
|
+
`)}
|
|
639
|
+
|
|
640
|
+
void forwardNormal() {
|
|
641
|
+
vNormalWorld = ${(0,s.If)(i,s.H`normalModelTransformation() * `)}normalModel();
|
|
642
|
+
vNormalView = transformNormalViewFromGlobal * vNormalWorld;
|
|
643
|
+
}
|
|
644
|
+
`);break}case 2:e.vertex.code.add(s.H`void forwardNormal() {}`);break;default:t.normalType;case 3:}}class d extends i.dO{constructor(){super(...arguments),this.transformNormalViewFromGlobal=(0,o.vt)()}}class h extends i.EM{constructor(){super(...arguments),this.transformNormalGlobalFromModel=(0,o.vt)(),this.toMapSpace=(0,a.vt)()}}},62308(e,t,r){r.d(t,{EM:()=>s,dO:()=>i});var o=r(29242),a=r(51850);(r(26425),r(40710),r(33079),r(31821),r(74333)).n,r(98353),r(35644),r(58029),r(63761);var n=r(65786);class i extends n.Y{constructor(){super(...arguments),this.transformWorldFromViewTH=(0,a.vt)(),this.transformWorldFromViewTL=(0,a.vt)(),this.transformViewFromCameraRelativeRS=(0,o.vt)(),this.transformationTexture=null}}class s extends n.Y{constructor(){super(...arguments),this.transformWorldFromModelRS=(0,o.vt)(),this.transformWorldFromModelTH=(0,a.vt)(),this.transformWorldFromModelTL=(0,a.vt)(),this.transformationDrawId=0}}},99208(e,t,r){r.d(t,{r:()=>i});var o=r(53466),a=r(31821);function n(e){e.fragment.code.add(a.H`vec4 textureAtlasLookup(sampler2D tex, vec2 textureCoordinates, vec4 atlasRegion) {
|
|
645
|
+
vec2 atlasScale = atlasRegion.zw - atlasRegion.xy;
|
|
646
|
+
vec2 uvAtlas = fract(textureCoordinates) * atlasScale + atlasRegion.xy;
|
|
647
|
+
float maxdUV = 0.125;
|
|
648
|
+
vec2 dUVdx = clamp(dFdx(textureCoordinates), -maxdUV, maxdUV) * atlasScale;
|
|
649
|
+
vec2 dUVdy = clamp(dFdy(textureCoordinates), -maxdUV, maxdUV) * atlasScale;
|
|
650
|
+
return textureGrad(tex, uvAtlas, dUVdx, dUVdy);
|
|
651
|
+
}`)}function i(e,t){const{textureCoordinateType:r}=t;if(0===r||3===r)return;e.include(o.U,t);const i=2===r;i&&e.include(n),e.fragment.code.add(a.H`
|
|
652
|
+
vec4 textureLookup(sampler2D tex, vec2 uv) {
|
|
653
|
+
return ${i?"textureAtlasLookup(tex, uv, vuvRegion)":"texture(tex, uv)"};
|
|
654
|
+
}
|
|
655
|
+
`)}},35640(e,t,r){r.d(t,{Ge:()=>c});var o=r(78955),a=r(91829),n=r(52587),i=r(77949),s=r(71988),l=r(31821);function c(e,t){const r=e.vertex;t.hasVerticalOffset?(function(e){e.uniforms.add(new s.E("verticalOffset",(e,t)=>{const{minWorldLength:r,maxWorldLength:a,screenLength:n}=e.verticalOffset,i=Math.tan(.5*t.camera.fovY)/(.5*t.camera.fullViewport[3]),s=t.camera.pixelRatio||1;return(0,o.hZ)(u,n*s,i,r,a)}))}(r),t.hasScreenSizePerspective&&(e.include(n.Y6),(0,n.OH)(r),(0,i.yu)(e.vertex,t)),r.code.add(l.H`
|
|
656
|
+
vec3 calculateVerticalOffset(vec3 worldPos, vec3 localOrigin) {
|
|
657
|
+
float viewDistance = length((view * vec4(worldPos, 1.0)).xyz);
|
|
658
|
+
${t.spherical?l.H`vec3 worldNormal = normalize(worldPos + localOrigin);`:l.H`vec3 worldNormal = vec3(0.0, 0.0, 1.0);`}
|
|
659
|
+
${t.hasScreenSizePerspective?l.H`
|
|
660
|
+
float cosAngle = dot(worldNormal, normalize(worldPos - cameraPosition));
|
|
661
|
+
float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);`:l.H`
|
|
662
|
+
float verticalOffsetScreenHeight = verticalOffset.x;`}
|
|
663
|
+
// Screen sized offset in world space, used for example for line callouts
|
|
664
|
+
float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * viewDistance, verticalOffset.z, verticalOffset.w);
|
|
665
|
+
return worldNormal * worldOffset;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) {
|
|
669
|
+
return worldPos + calculateVerticalOffset(worldPos, localOrigin);
|
|
670
|
+
}
|
|
671
|
+
`)):r.code.add(l.H`vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) { return worldPos; }`)}const u=(0,a.vt)()},40261(e,t,r){r.d(t,{E:()=>g});var o=r(33120),a=r(68317),n=r(76597),i=r(96336),s=r(36782),l=r(53466),c=r(72824),u=r(31821);function d(e,t){switch(t.output){case 5:case 6:case 7:case 8:e.fragment.code.add(u.H`float _calculateFragDepth(const in float depth) {
|
|
672
|
+
const float SLOPE_SCALE = 2.0;
|
|
673
|
+
const float BIAS = 20.0 * .000015259;
|
|
674
|
+
float m = max(abs(dFdx(depth)), abs(dFdy(depth)));
|
|
675
|
+
return depth + SLOPE_SCALE * m + BIAS;
|
|
676
|
+
}
|
|
677
|
+
void outputDepth(float _linearDepth){
|
|
678
|
+
float fragDepth = _calculateFragDepth(_linearDepth);
|
|
679
|
+
gl_FragDepth = fragDepth;
|
|
680
|
+
}`);break;case 9:e.fragment.code.add(u.H`void outputDepth(float _linearDepth){
|
|
681
|
+
gl_FragDepth = _linearDepth;
|
|
682
|
+
}`)}}var h=r(3871),m=r(43259),f=r(58614),p=r(77949),v=r(63761);function g(e,t){const{vertex:r,fragment:g,varyings:x}=e,{hasColorTexture:b,alphaDiscardMode:w}=t,y=b&&1!==w,{output:M,normalType:S,hasColorTextureTransform:T}=t;switch(M){case 3:(0,p.NB)(r,t),e.include(n.d),g.include(a.HQ,t),e.include(l.U,t),y&&g.uniforms.add(new v.N("tex",e=>e.texture)),r.main.add(u.H`vpos = getVertexInLocalOriginSpace();
|
|
683
|
+
vpos = subtractOrigin(vpos);
|
|
684
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
685
|
+
gl_Position = transformPosition(proj, view, vpos);
|
|
686
|
+
forwardTextureCoordinates();`),e.include(f.S,t),g.main.add(u.H`
|
|
687
|
+
discardBySlice(vpos);
|
|
688
|
+
${(0,u.If)(y,u.H`vec4 texColor = texture(tex, ${T?"colorUV":"vuv0"});
|
|
689
|
+
discardOrAdjustAlpha(texColor);`)}`);break;case 5:case 6:case 7:case 8:case 11:(0,p.NB)(r,t),e.include(n.d),e.include(l.U,t),e.include(m.A,t),e.include(d,t),g.include(a.HQ,t),e.include(s.g,t),(0,o.xJ)(e),x.add("depth","float",{invariant:!0}),y&&g.uniforms.add(new v.N("tex",e=>e.texture)),r.main.add(u.H`vpos = getVertexInLocalOriginSpace();
|
|
690
|
+
vpos = subtractOrigin(vpos);
|
|
691
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
692
|
+
gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);
|
|
693
|
+
forwardTextureCoordinates();
|
|
694
|
+
forwardObjectAndLayerIdColor();`),e.include(f.S,t),g.main.add(u.H`
|
|
695
|
+
discardBySlice(vpos);
|
|
696
|
+
${(0,u.If)(y,u.H`vec4 texColor = texture(tex, ${T?"colorUV":"vuv0"});
|
|
697
|
+
discardOrAdjustAlpha(texColor);`)}
|
|
698
|
+
${11===M?u.H`outputObjectAndLayerIdColor();`:u.H`outputDepth(depth);`}`);break;case 4:{(0,p.NB)(r,t),e.include(n.d),e.include(i.Y,t),e.include(c.Mh,t),e.include(l.U,t),e.include(m.A,t),y&&g.uniforms.add(new v.N("tex",e=>e.texture)),2===S&&x.add("vPositionView","vec3",{invariant:!0});const o=0===S||1===S;r.main.add(u.H`
|
|
699
|
+
vpos = getVertexInLocalOriginSpace();
|
|
700
|
+
${o?u.H`vNormalWorld = dpNormalView(vvLocalNormal(normalModel()));`:u.H`vPositionView = (view * vec4(vpos, 1.0)).xyz;`}
|
|
701
|
+
vpos = subtractOrigin(vpos);
|
|
702
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
703
|
+
gl_Position = transformPosition(proj, view, vpos);
|
|
704
|
+
forwardTextureCoordinates();`),g.include(a.HQ,t),e.include(f.S,t),g.main.add(u.H`
|
|
705
|
+
discardBySlice(vpos);
|
|
706
|
+
${(0,u.If)(y,u.H`vec4 texColor = texture(tex, ${T?"colorUV":"vuv0"});
|
|
707
|
+
discardOrAdjustAlpha(texColor);`)}
|
|
708
|
+
|
|
709
|
+
${2===S?u.H`vec3 normal = screenDerivativeNormal(vPositionView);`:u.H`vec3 normal = normalize(vNormalWorld);
|
|
710
|
+
if (gl_FrontFacing == false){
|
|
711
|
+
normal = -normal;
|
|
712
|
+
}`}
|
|
713
|
+
fragColor = vec4(0.5 + 0.5 * normal, 1.0);`);break}case 10:(0,p.NB)(r,t),e.include(n.d),e.include(l.U,t),e.include(m.A,t),y&&g.uniforms.add(new v.N("tex",e=>e.texture)),r.main.add(u.H`vpos = getVertexInLocalOriginSpace();
|
|
714
|
+
vpos = subtractOrigin(vpos);
|
|
715
|
+
vpos = addVerticalOffset(vpos, localOrigin);
|
|
716
|
+
gl_Position = transformPosition(proj, view, vpos);
|
|
717
|
+
forwardTextureCoordinates();`),g.include(a.HQ,t),e.include(f.S,t),e.include(h.Q,t),g.main.add(u.H`
|
|
718
|
+
discardBySlice(vpos);
|
|
719
|
+
${(0,u.If)(y,u.H`vec4 texColor = texture(tex, ${T?"colorUV":"vuv0"});
|
|
720
|
+
discardOrAdjustAlpha(texColor);`)}
|
|
721
|
+
calculateOcclusionAndOutputHighlight();`)}}},22911(e,t,r){r.d(t,{NL:()=>p});var o=r(34727),a=r(49255),n=r(99208),i=r(65261),s=r(40710),l=r(33079),c=r(28421),u=r(20304),d=r(31821),h=r(15976),m=r(63761),f=r(66211);function p(e,t){if(!(0,a._o)(t.output))return;e.fragment.include(i.C);const{emissionSource:r,hasEmissiveTextureTransform:p,bindType:v,useFloatBlend:g}=t,x=3===r||4===r||5===r;x&&(e.include(n.r,t),e.fragment.uniforms.add(1===v?new m.N("texEmission",e=>e.textureEmissive):new h.o("texEmission",e=>e.textureEmissive)));const b=2===r||x;b&&e.fragment.uniforms.add(1===v?new l.t("emissiveBaseColor",e=>e.emissiveBaseColor):new s.W("emissiveBaseColor",e=>e.emissiveBaseColor));const w=0!==r;if(w&&7!==r&&6!==r&&4!==r&&5!==r){const t=e=>null!=e?g?e:(0,o.qE)(e,0,f.m):0;e.fragment.uniforms.add(1===v?new u.m("emissiveStrength",e=>t(e.emissiveStrength)):new c.J("emissiveStrength",e=>t(e.emissiveStrength)))}const y=7===r,M=5===r,S=1===r||6===r||y;e.fragment.code.add(d.H`
|
|
722
|
+
vec4 getEmissions(vec3 symbolColor) {
|
|
723
|
+
vec4 emissions = ${b?M?"emissiveSource == 0 ? vec4(emissiveBaseColor, 1.0): vec4(linearizeGamma(symbolColor), 1.0)":"vec4(emissiveBaseColor, 1.0)":S?y?"emissiveSource == 0 ? vec4(0.0): vec4(linearizeGamma(symbolColor), 1.0)":"vec4(linearizeGamma(symbolColor), 1.0)":"vec4(0.0)"};
|
|
724
|
+
${(0,d.If)(x,`${(0,d.If)(M,`if(emissiveSource == 0) {\n vec4 emissiveFromTex = textureLookup(texEmission, ${p?"emissiveUV":"vuv0"});\n emissions *= vec4(linearizeGamma(emissiveFromTex.rgb), emissiveFromTex.a);\n }`,`vec4 emissiveFromTex = textureLookup(texEmission, ${p?"emissiveUV":"vuv0"});\n emissions *= vec4(linearizeGamma(emissiveFromTex.rgb), emissiveFromTex.a);`)}\n emissions.w = emissions.rgb == vec3(0.0) ? 0.0: emissions.w;`)}
|
|
725
|
+
${(0,d.If)(w,`emissions.rgb *= emissiveStrength * ${d.H.float(1)};`)}
|
|
726
|
+
return emissions;
|
|
727
|
+
}
|
|
728
|
+
`)}},52540(e,t,r){r.d(t,{E:()=>s,l:()=>l});var o=r(37585),a=r(48163),n=r(77108),i=r(31821);function s(e){e.uniforms.add(new n.E("zProjectionMap",e=>l(e.camera))),e.code.add(i.H`float linearizeDepth(float depth, vec2 zProjectionConstants) {
|
|
729
|
+
float depthNdc = depth * 2.0 - 1.0;
|
|
730
|
+
return -(zProjectionConstants[0] / (depthNdc + zProjectionConstants[1] + 1e-7));
|
|
731
|
+
}
|
|
732
|
+
float linearizeDepth(float depth) {
|
|
733
|
+
return linearizeDepth(depth, zProjectionMap);
|
|
734
|
+
}`),e.code.add(i.H`float delinearizeDepth(float linearDepth) {
|
|
735
|
+
float c1 = zProjectionMap[0];
|
|
736
|
+
float c2 = zProjectionMap[1];
|
|
737
|
+
float depthNdc = (-c1/linearDepth) - c2 - 1e-7;
|
|
738
|
+
float depthNonlinear01 = (depthNdc + 1.0 ) / 2.0;
|
|
739
|
+
return depthNonlinear01;
|
|
740
|
+
}`),e.code.add(i.H`float depthFromTexture(sampler2D depthTexture, vec2 uv) {
|
|
741
|
+
ivec2 iuv = ivec2(uv * vec2(textureSize(depthTexture, 0)));
|
|
742
|
+
return texelFetch(depthTexture, iuv, 0).r;
|
|
743
|
+
}`),e.code.add(i.H`float linearDepthFromTexture(sampler2D depthTexture, vec2 uv) {
|
|
744
|
+
return linearizeDepth(depthFromTexture(depthTexture, uv));
|
|
745
|
+
}`)}function l(e){const t=e.projectionMatrix;return(0,o.hZ)(c,t[14],t[10])}const c=(0,a.vt)()},92573(e,t,r){r.d(t,{V:()=>i});var o=r(52540),a=r(77108),n=r(31821);function i(e){e.include(o.E),e.uniforms.add(new a.E("zProjectionMapLastFrame",e=>(0,o.l)(e.reprojection.lastFrameCamera))),e.code.add(n.H`float linearDepthFromTextureLastFrame(sampler2D depthTexture, vec2 uv) {
|
|
746
|
+
return linearizeDepth(depthFromTexture(depthTexture, uv), zProjectionMapLastFrame);
|
|
747
|
+
}`)}},77695(e,t,r){r.d(t,{J:()=>h});var o=r(29242),a=r(48163),n=r(99208),i=r(68259),s=r(47286),l=r(31821),c=r(35644),u=r(15976),d=r(63761);function h(e,t){return function(e,t){const r=e.fragment,{hasVertexTangents:h,doubleSidedMode:m,hasNormalTexture:f,textureCoordinateType:p,bindType:v,hasNormalTextureTransform:g}=t;h?(e.attributes.add("tangent","vec4"),e.varyings.add("vTangent","vec4"),2===m?r.code.add(l.H`mat3 computeTangentSpace(vec3 normal) {
|
|
748
|
+
float tangentHeadedness = gl_FrontFacing ? vTangent.w : -vTangent.w;
|
|
749
|
+
vec3 tangent = normalize(gl_FrontFacing ? vTangent.xyz : -vTangent.xyz);
|
|
750
|
+
vec3 bitangent = cross(normal, tangent) * tangentHeadedness;
|
|
751
|
+
return mat3(tangent, bitangent, normal);
|
|
752
|
+
}`):r.code.add(l.H`mat3 computeTangentSpace(vec3 normal) {
|
|
753
|
+
float tangentHeadedness = vTangent.w;
|
|
754
|
+
vec3 tangent = normalize(vTangent.xyz);
|
|
755
|
+
vec3 bitangent = cross(normal, tangent) * tangentHeadedness;
|
|
756
|
+
return mat3(tangent, bitangent, normal);
|
|
757
|
+
}`)):r.code.add(l.H`mat3 computeTangentSpace(vec3 normal, vec3 pos, vec2 st) {
|
|
758
|
+
vec3 Q1 = dFdx(pos);
|
|
759
|
+
vec3 Q2 = dFdy(pos);
|
|
760
|
+
vec2 stx = dFdx(st);
|
|
761
|
+
vec2 sty = dFdy(st);
|
|
762
|
+
float det = stx.t * sty.s - sty.t * stx.s;
|
|
763
|
+
vec3 T = stx.t * Q2 - sty.t * Q1;
|
|
764
|
+
T = T - normal * dot(normal, T);
|
|
765
|
+
T *= inversesqrt(max(dot(T,T), 1.e-10));
|
|
766
|
+
vec3 B = sign(det) * cross(normal, T);
|
|
767
|
+
return mat3(T, B, normal);
|
|
768
|
+
}`),f&&0!==p&&(e.include(n.r,t),r.uniforms.add(1===v?new d.N("normalTexture",e=>e.textureNormal):new u.o("normalTexture",e=>e.textureNormal)),g&&(r.uniforms.add(1===v?new s.G("scale",e=>e.scale??a.Un):new i.t("scale",e=>e.scale??a.Un)),r.uniforms.add(new c.k("normalTextureTransformMatrix",e=>e.normalTextureTransformMatrix??o.zK))),r.code.add(l.H`vec3 computeTextureNormal(mat3 tangentSpace, vec2 uv) {
|
|
769
|
+
vec3 rawNormal = textureLookup(normalTexture, uv).rgb * 2.0 - 1.0;`),g&&r.code.add(l.H`mat3 normalRotation = mat3(normalTextureTransformMatrix[0][0]/scale[0], normalTextureTransformMatrix[0][1]/scale[1], 0.0,
|
|
770
|
+
normalTextureTransformMatrix[1][0]/scale[0], normalTextureTransformMatrix[1][1]/scale[1], 0.0,
|
|
771
|
+
0.0, 0.0, 0.0 );
|
|
772
|
+
rawNormal.xy = (normalRotation * vec3(rawNormal.x, rawNormal.y, 1.0)).xy;`),r.code.add(l.H`return tangentSpace * rawNormal;
|
|
773
|
+
}`))}(e,t)}},71651(e,t,r){r.d(t,{n:()=>O});var o=r(31821),a=r(12791),n=r(5482),i=r(34727),s=r(97768),l=r(36708),c=r(78659),u=r(91429),d=r(37585),h=r(2016),m=r(48375);var f=r(15581),p=r(13840),v=r(98958),g=r(95774),x=r(90644);let b=class extends v.w{constructor(){super(...arguments),this.shader=new p.r(g.S,()=>r.e(1285).then(r.bind(r,91285)))}initializePipeline(){return(0,x.Ey)({colorWrite:x.kn})}};b=(0,n.Cg)([(0,u.$K)("esri.views.3d.webgl-engine.effects.ssao.SSAOBlurTechnique")],b);var w=r(48163),y=r(65786);class M extends y.Y{constructor(){super(...arguments),this.projScale=1}}class S extends M{constructor(){super(...arguments),this.intensity=1}}class T extends y.Y{}class C extends T{constructor(){super(...arguments),this.blurSize=(0,w.vt)()}}let I=class extends v.w{constructor(){super(...arguments),this.shader=new p.r(f.S,()=>r.e(6122).then(r.bind(r,86122)))}initializePipeline(){return(0,x.Ey)({colorWrite:x.kn})}};I=(0,n.Cg)([(0,u.$K)("esri.views.3d.webgl-engine.effects.ssao.SSAOTechnique")],I);var _=r(63907),P=r(76284),z=r(67171);let E=class extends m.A{constructor(e){super(e),this.consumes={required:["normals"]},this.produces=h.OG.AMBIENT_ILLUMINATION,this._enableTime=(0,c.l5)(0),this._passParameters=new S,this._drawParameters=new C}initialize(){const e=Uint8Array.from(atob("eXKEvZaUc66cjIKElE1jlJ6MjJ6Ufkl+jn2fcXp5jBx7c6KEflSGiXuXeW6OWs+tfqZ2Yot2Y7Zzfo2BhniEj3xoiXuXj4eGZpqEaHKDWjSMe7palFlzc3BziYOGlFVzg6Zzg7CUY5JrjFF7eYJ4jIKEcyyEonSXe7qUfqZ7j3xofqZ2c4R5lFZ5Y0WUbppoe1l2cIh2ezyUho+BcHN2cG6DbpqJhqp2e1GcezhrdldzjFGUcyxjc3aRjDyEc1h7Sl17c6aMjH92pb6Mjpd4dnqBjMOEhqZleIOBYzB7gYx+fnqGjJuEkWlwnCx7fGl+c4hjfGyRe5qMlNOMfnqGhIWHc6OMi4GDc6aMfqZuc6aMzqJzlKZ+lJ6Me3qRfoFue0WUhoR5UraEa6qMkXiPjMOMlJOGe7JrUqKMjK6MeYRzdod+Sl17boiPc6qEeYBlcIh2c1WEe7GDiWCDa0WMjEmMdod+Y0WcdntzhmN8WjyMjKJjiXtzgYxYaGd+a89zlEV7e2GJfnd+lF1rcK5zc4p5cHuBhL6EcXp5eYB7fnh8iX6HjIKEeaxuiYOGc66RfG2Ja5hzjlGMjEmMe9OEgXuPfHyGhPeEdl6JY02McGuMfnqGhFiMa3WJfnx2l4hwcG1uhmN8c0WMc39og1GBbrCEjE2EZY+JcIh2cIuGhIWHe0mEhIVrc09+gY5+eYBlnCyMhGCDl3drfmmMgX15aGd+gYx+fnuRfnhzY1SMsluJfnd+hm98WtNrcIuGh4SEj0qPdkqOjFF7jNNjdnqBgaqUjMt7boeBhnZ4jDR7c5pze4GGjEFrhLqMjHyMc0mUhKZze4WEa117kWlwbpqJjHZ2eX2Bc09zeId+e0V7WlF7jHJ2l72BfId8l3eBgXyBe897jGl7c66cgW+Xc76EjKNbgaSEjGx4fId8jFFjgZB8cG6DhlFziZhrcIh2fH6HgUqBgXiPY8dahGFzjEmMhEFre2dxhoBzc5SGfleGe6alc7aUeYBlhKqUdlp+cH5za4OEczxza0Gcc4J2jHZ5iXuXjH2Jh5yRjH2JcFx+hImBjH+MpddCl3dreZeJjIt8ZW18bm1zjoSEeIOBlF9oh3N7hlqBY4+UeYFwhLJjeYFwaGd+gUqBYxiEYot2fqZ2ondzhL6EYyiEY02Ea0VjgZB8doaGjHxoc66cjEGEiXuXiXWMiZhreHx8frGMe75rY02Ec5pzfnhzlEp4a3VzjM+EhFFza3mUY7Zza1V5e2iMfGyRcziEhDyEkXZ2Y4OBnCx7g5t2eyBjgV6EhEFrcIh2dod+c4Z+nJ5zjm15jEmUeYxijJp7nL6clIpjhoR5WrZraGd+fnuRa6pzlIiMg6ZzfHx5foh+eX1ufnB5eX1ufnB5aJt7UqKMjIh+e3aBfm5lbYSBhGFze6J4c39oc0mUc4Z+e0V7fKFVe0WEdoaGY02Ec4Z+Y02EZYWBfH6HgU1+gY5+hIWUgW+XjJ57ebWRhFVScHuBfJ6PhBx7WqJzlM+Ujpd4gHZziX6HjHmEgZN+lJt5boiPe2GJgX+GjIGJgHZzeaxufnB5hF2JtdN7jJ57hp57hK6ElFVzg6ZzbmiEbndzhIWHe3uJfoFue3qRhJd2j3xoc65zlE1jc3p8lE1jhniEgXJ7e657vZaUc3qBh52BhIF4aHKDa9drgY5+c52GWqZzbpqJe8tjnM+UhIeMfo2BfGl+hG1zSmmMjKJjZVaGgX15c1lze0mEp4OHa3mUhIWHhDyclJ6MeYOJkXiPc0VzhFiMlKaEboSJa5Jze41re3qRhn+HZYWBe0mEc4p5fnORbox5lEp4hGFjhGGEjJuEc1WEhLZjeHeGa7KlfHx2hLaMeX1ugY5+hIWHhKGPjMN7c1WEho1zhoBzZYx7fnhzlJt5exyUhFFziXtzfmmMa6qMYyiEiXxweV12kZSMeWqXSl17fnhzxmmMrVGEe1mcc4p5eHeGjK6MgY5+doaGa6pzlGV7g1qBh4KHkXiPeW6OaKqafqZ2eXZ5e1V7jGd7boSJc3BzhJd2e0mcYot2h1RoY8dahK6EQmWEWjx7e1l2lL6UgXyBdnR4eU9zc0VreX1umqaBhld7fo2Bc6KEc5Z+hDyEcIeBWtNrfHyGe5qMhMuMe5qMhEGEbVVupcNzg3aHhIF4boeBe0mEdlptc39ofFl5Y8uUlJOGiYt2UmGEcyxjjGx4jFF7a657ZYWBnElzhp57iXtrgZN+tfOEhIOBjE2HgU1+e8tjjKNbiWCDhE15gUqBgYN7fnqGc66ce9d7iYSBj0qPcG6DnGGcT3eGa6qMZY+JlIiMl4hwc3aRdnqBlGV7eHJ2hLZjfnuRhDyEeX6MSk17g6Z+c6aUjHmEhIF4gXyBc76EZW18fGl+fkl+jCxrhoVwhDyUhIqGlL2DlI6EhJd2tdN7eYORhEGMa2Faa6pzc3Bzc4R5lIRznM+UY9eMhDycc5Z+c4p5c4iGY117pb6MgXuPrbJafnx2eYOJeXZ5e657hDyEcziElKZjfoB5eHeGj4WRhGGEe6KGeX1utTStc76EhFGJnCyMa5hzfH6HnNeceYB7hmN8gYuMhIVrczSMgYF8h3N7c5pza5hzjJqEYIRdgYuMlL2DeYRzhGGEeX1uhLaEc4iGeZ1zdl6JhrVteX6Me2iMfm5lWqJzSpqEa6pzdnmchHx2c6OMhNdrhoR5g3aHczxzeW52gV6Ejm15frGMc0Vzc4Z+l3drfniJe+9rWq5rlF1rhGGEhoVwe9OEfoh+e7pac09+c3qBY0lrhDycdnp2lJ6MiYOGhGCDc3aRlL2DlJt5doaGdnp2gYF8gWeOjF2Uc4R5c5Z+jEmMe7KEc4mEeYJ4dmyBe0mcgXiPbqJ7eYB7fmGGiYSJjICGlF1reZ2PnElzbpqJfH6Hc39oe4WEc5eJhK6EhqyJc3qBgZB8c09+hEmEaHKDhFGJc5SGiXWMUpaEa89zc6OMnCyMiXtrho+Be5qMc7KEjJ57dmN+hKGPjICGbmiEe7prdod+hGCDdnmchBx7eX6MkXZ2hGGEa657hm98jFFjY5JreYOJgY2EjHZ2a295Y3FajJ6Mc1J+YzB7e4WBjF2Uc4R5eV12gYxzg1qBeId+c9OUc5pzjFFjgY5+hFiMlIaPhoR5lIpjjIKBlNdSe7KEeX2BfrGMhIqGc65zjE2UhK6EklZ+QmWEeziMWqZza3VzdnR4foh+gYF8n3iJiZhrnKp7gYF8eId+lJ6Me1lrcIuGjKJjhmN8c66MjFF7a6prjJ6UnJ5zezyUfruRWlF7nI5zfHyGe657h4SEe8tjhBx7jFFjc09+c39ojICMeZeJeXt+YzRzjHZ2c0WEcIeBeXZ5onSXkVR+gYJ+eYFwdldzgYF7eX2BjJ6UiXuXlE1jh4SEe1mchLJjc4Z+hqZ7eXZ5bm1zlL6Ue5p7iWeGhKqUY5pzjKJjcIeBe8t7gXyBYIRdlEp4a3mGnK6EfmmMZpqEfFl5gYxzjKZuhGFjhoKGhHx2fnx2eXuMe3aBiWeGvbKMe6KGa5hzYzB7gZOBlGV7hmN8hqZlYot2Y117a6pzc6KEfId8foB5rctrfneJfJ6PcHN2hFiMc5pzjH92c0VzgY2EcElzdmCBlFVzg1GBc65zY4OBboeBcHiBeYJ4ewxzfHx5lIRzlEmEnLKEbk1zfJ6PhmN8eYBljBiEnMOEiXxwezyUcIeBe76EdsKEeX2BdnR4jGWUrXWMjGd7fkl+j4WRlEGMa5Jzho+BhDyEfnqMeXt+g3aHlE1jczClhNN7ZW18eHx8hGFjZW18iXWMjKJjhH57gYuMcIuGWjyMe4ZtjJuExmmMj4WRdntzi4GDhFFzYIRdnGGcjJp7Y0F7e4WEkbCGiX57fnSHa657a6prhBCMe3Z+SmmMjH92eHJ2hK6EY1FzexhrvbKMnI5za4OEfnd+eXuMhImBe897hLaMjN+EfG+BeIOBhF1+eZeJi4GDkXZ2eXKEgZ6Ejpd4c2GHa1V5e5KUfqZuhCx7jKp7lLZrg11+hHx2hFWUoot2nI5zgbh5mo9zvZaUe3qRbqKMfqZ2kbCGhFiM"),e=>e.charCodeAt(0)),t=new z.R(32);t.wrapMode=33071,t.pixelFormat=6407,t.wrapMode=10497,t.hasMipmap=!0,this._passParameters.noiseTexture=new P.A(this.renderingContext,t,e),this.addHandles((0,l.wB)(()=>this.view.stage.renderer.hasAmbientIllumination,()=>this._enableTime=(0,c.l5)(0)))}destroy(){this._passParameters.noiseTexture=(0,s.WD)(this._passParameters.noiseTexture)}precompile(){this.techniques.precompile(I),this.techniques.precompile(b)}render(e){const t=e.find(({name:e})=>"normals"===e),r=t?.getTexture(),o=t?.getTexture(_.nI);if(!r||!o)return;const a=this.techniques.getCompiled(I),n=this.techniques.getCompiled(b);if(!a||!n)return this._enableTime=(0,c.l5)(performance.now()),void this.requestRender(1);0===this._enableTime&&(this._enableTime=(0,c.l5)(performance.now()));const s=this.renderingContext,l=this.view.qualitySettings.fadeDuration,u=this.bindParameters,m=u.camera,p=m.relativeElevation,v=(0,i.qE)((5e5-p)/2e5,0,1),g=l>0?Math.min(l,performance.now()-this._enableTime)/l:1,x=g*v;this._passParameters.normalTexture=r,this._passParameters.depthTexture=o,this._passParameters.projScale=1/m.computeScreenPixelSizeAtDist(1),this._passParameters.intensity=4*F/(0,f.g)(m)**6*x;const w=m.fullViewport[2],y=m.fullViewport[3],M=this.fboCache.acquire(w,y,"ssao input",2);s.bindFramebuffer(M.fbo),s.setViewport(0,0,w,y),s.bindTechnique(a,u,this._passParameters,this._drawParameters),s.screen.draw();const S=Math.round(w/2),T=Math.round(y/2),C=this.fboCache.acquire(S,T,"ssao blur",0);s.bindFramebuffer(C.fbo),this._drawParameters.colorTexture=M.getTexture(),(0,d.hZ)(this._drawParameters.blurSize,0,2/y),s.bindTechnique(n,u,this._passParameters,this._drawParameters),s.setViewport(0,0,S,T),s.screen.draw(),M.release();const P=this.fboCache.acquire(S,T,h.OG.AMBIENT_ILLUMINATION,0);return s.bindFramebuffer(P.fbo),s.setViewport(0,0,w,y),s.setClearColor(1,1,1,0),s.clear(16384),this._drawParameters.colorTexture=C.getTexture(),(0,d.hZ)(this._drawParameters.blurSize,2/w,0),s.bindTechnique(n,u,this._passParameters,this._drawParameters),s.setViewport(0,0,S,T),s.screen.draw(),s.setViewport4fv(m.fullViewport),C.release(),g<1&&this.requestRender(2),P}};(0,n.Cg)([(0,u.MZ)()],E.prototype,"consumes",void 0),(0,n.Cg)([(0,u.MZ)()],E.prototype,"produces",void 0),E=(0,n.Cg)([(0,u.$K)("esri.views.3d.webgl-engine.effects.ssao.SSAO")],E);const F=.5;function O(e,t){t.receiveAmbientOcclusion?(e.uniforms.add(new a.x("ssaoTex",e=>e.ssao?.getTexture())),e.constants.add("blurSizePixelsInverse","float",.5),e.code.add(o.H`float evaluateAmbientOcclusionInverse() {
|
|
774
|
+
vec2 ssaoTextureSizeInverse = 1.0 / vec2(textureSize(ssaoTex, 0));
|
|
775
|
+
return texture(ssaoTex, gl_FragCoord.xy * blurSizePixelsInverse * ssaoTextureSizeInverse).r;
|
|
776
|
+
}
|
|
777
|
+
float evaluateAmbientOcclusion() {
|
|
778
|
+
return 1.0 - evaluateAmbientOcclusionInverse();
|
|
779
|
+
}`)):e.code.add(o.H`float evaluateAmbientOcclusionInverse() { return 1.0; }
|
|
780
|
+
float evaluateAmbientOcclusion() { return 0.0; }`)}},32971(e,t,r){r.d(t,{kA:()=>q,a8:()=>k,eU:()=>U});var o=r(74333);class a extends o.n{constructor(e,t,r,o){super(e,"float",0,(t,a)=>t.setUniform1fv(e,r(a),o),t)}}var n=r(31821);function i(e,t){e.uniforms.add(new a("shR",9,({lighting:e})=>e.sh.r),new a("shG",9,({lighting:e})=>e.sh.g),new a("shB",9,({lighting:e})=>e.sh.b)),e.code.add(n.H`vec3 calculateAmbientIrradiance(vec3 normal) {
|
|
781
|
+
vec3 ambientLight = 0.282095 * vec3(shR[0], shG[0], shB[0]);
|
|
782
|
+
vec4 sh1 = vec4(
|
|
783
|
+
0.488603 * normal.x,
|
|
784
|
+
0.488603 * normal.z,
|
|
785
|
+
0.488603 * normal.y,
|
|
786
|
+
1.092548 * normal.x * normal.y
|
|
787
|
+
);
|
|
788
|
+
vec4 sh2 = vec4(
|
|
789
|
+
1.092548 * normal.y * normal.z,
|
|
790
|
+
0.315392 * (3.0 * normal.z * normal.z - 1.0),
|
|
791
|
+
1.092548 * normal.x * normal.z,
|
|
792
|
+
0.546274 * (normal.x * normal.x - normal.y * normal.y)
|
|
793
|
+
);
|
|
794
|
+
vec4 lightingAmbientSH_R1 = vec4(shR[1], shR[2], shR[3], shR[4]);
|
|
795
|
+
vec4 lightingAmbientSH_G1 = vec4(shG[1], shG[2], shG[3], shG[4]);
|
|
796
|
+
vec4 lightingAmbientSH_B1 = vec4(shB[1], shB[2], shB[3], shB[4]);
|
|
797
|
+
ambientLight += vec3(
|
|
798
|
+
dot(lightingAmbientSH_R1, sh1),
|
|
799
|
+
dot(lightingAmbientSH_G1, sh1),
|
|
800
|
+
dot(lightingAmbientSH_B1, sh1)
|
|
801
|
+
);
|
|
802
|
+
vec4 lightingAmbientSH_R2 = vec4(shR[5], shR[6], shR[7], shR[8]);
|
|
803
|
+
vec4 lightingAmbientSH_G2 = vec4(shG[5], shG[6], shG[7], shG[8]);
|
|
804
|
+
vec4 lightingAmbientSH_B2 = vec4(shB[5], shB[6], shB[7], shB[8]);
|
|
805
|
+
ambientLight += vec3(
|
|
806
|
+
dot(lightingAmbientSH_R2, sh2),
|
|
807
|
+
dot(lightingAmbientSH_G2, sh2),
|
|
808
|
+
dot(lightingAmbientSH_B2, sh2)
|
|
809
|
+
);
|
|
810
|
+
return ambientLight;
|
|
811
|
+
}`),1!==t.pbrMode&&2!==t.pbrMode||e.code.add(n.H`const vec3 skyTransmittance = vec3(0.9, 0.9, 1.0);
|
|
812
|
+
vec3 calculateAmbientRadiance()
|
|
813
|
+
{
|
|
814
|
+
vec3 ambientLight = 1.2 * (0.282095 * vec3(shR[0], shG[0], shB[0])) - 0.2;
|
|
815
|
+
return ambientLight *= skyTransmittance;
|
|
816
|
+
}`)}var s=r(71651),l=r(65261),c=r(98619),u=r(22393),d=r(89786),h=r(32976),m=r(12791),f=r(5482),p=(r(44208),r(53966)),v=r(97768),g=r(17676),x=r(36708),b=r(91429),w=r(37585),y=r(31217),M=r(2016),S=r(48375),T=r(587),C=r(52516),I=r(13840),_=r(98958),P=r(90644);let z=class extends _.w{constructor(){super(...arguments),this.shader=new I.r(C.a,()=>r.e(2013).then(r.bind(r,42013)))}initializePipeline(){return(0,P.Ey)({colorWrite:P.kn})}};z=(0,f.Cg)([(0,b.$K)("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIlluminationBlurTechnique")],z);let E=class extends _.w{constructor(){super(...arguments),this.shader=new I.r(T.a,()=>r.e(9794).then(r.bind(r,89794)))}initializePipeline(){return(0,P.Ey)({colorWrite:P.kn})}};E=(0,f.Cg)([(0,b.$K)("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIlluminationTechnique")],E);var F=r(51976);class O extends F.K{constructor(){super(...arguments),this.hasEmission=!1}}(0,f.Cg)([(0,F.W)()],O.prototype,"hasEmission",void 0);var D=r(50704);let H=class extends _.w{constructor(){super(...arguments),this.shader=new I.r(D.a,()=>r.e(7891).then(r.bind(r,37891)))}initializePipeline(){return(0,P.Ey)({colorWrite:P.kn})}};H=(0,f.Cg)([(0,b.$K)("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIlluminationUpscaleTechnique")],H);var B=r(63907),j=r(76284),R=r(67171);let N=class extends S.A{constructor(e){super(e),this.consumes={required:["normals"]},this.produces=M.OG.AMBIENT_ILLUMINATION,this._passParameters=new T.G,this._drawParameters=new C.G,this._drawParametersUpscale=new D.G,this._maxFrames=255,this._configuration=new O,this._resetBuffer=!1}async initialize(){this._abortController=new AbortController;const e=this._abortController.signal;try{const t=(await r.e(5354).then(r.bind(r,45354))).data;(0,g.Te)(e),await this._loadBlueNoiseTexture(t,e),(0,g.Te)(e)}catch(e){(0,g.zf)(e)||p.A.getLogger(this).errorOnce("Failed to load blue noise texture:",e)}this.addHandles((0,x.wB)(()=>this.view.stage.renderer.hasGlobalIllumination,()=>{this.resetAccumulation(),this.requestRender(1)},x.pc))}precompile(){this._canRender&&(this._configuration.hasEmission=this.bindParameters.hasEmission,this.techniques.precompile(E,this._configuration),this.techniques.precompile(z),this._needsUpscalePass(this._mode)&&this.techniques.precompile(H))}destroy(){this._abortController=(0,v.DC)(this._abortController),this._passParameters.noiseTexture=(0,v.WD)(this._passParameters.noiseTexture)}render(e){const t=e.find(({name:e})=>"normals"===e),r=t?.getTexture(),o=t?.getTexture(B.nI),a=this._mode;if(!r||!o)return this._emptyOutput;if(2!==a&&this.resetAccumulation(),0===a)return this._resetBuffer=!1,this._emptyOutput;if(!this._canRender)return this._resetBuffer=!1,this.requestRender(1),this._emptyOutput;const n=this.bindParameters;this._configuration.hasEmission=n.hasEmission;const i=this.techniques.getCompiled(E,this._configuration),s=this.techniques.getCompiled(z),l=this._needsUpscalePass(a),c=l?.25:1,u=l?this.techniques.getCompiled(H):null;if(!i||!s||l&&!u)return this.requestRender(1),this._emptyOutput;const d=this.renderingContext,{camera:h}=n;this._passParameters.normalTexture=r,this._passParameters.depthTexture=o,this._passParameters.projScale=1/h.computeScreenPixelSizeAtDist(1),this._passParameters.scaleGlobalIllumination=c;const{fullWidth:m,fullHeight:f}=h,p=Math.max(1,Math.floor(m*c)),v=Math.max(1,Math.floor(f*c)),g=this.fboCache.acquire(p,v,"global illumination input").acquireColor(B.yI,0);d.bindFramebuffer(g.fbo),d.setViewport(0,0,p,v),d.bindTechnique(i,n,this._passParameters,this._drawParameters),d.screen.draw();const x=g.obtainAttachment(B.yI),b=Math.max(1,Math.round(p/1)),y=Math.max(1,Math.round(v/1)),S=this.fboCache.acquire(b,y,"global illumination blur horizontal");d.bindFramebuffer(S.fbo),this._drawParameters.texture=g.getTexture(),this._drawParameters.weightTexture=x.attachment,(0,w.hZ)(this._drawParameters.blurSize,0,1/v),d.bindTechnique(s,n,this._passParameters,this._drawParameters),d.setViewport(0,0,b,y),d.screen.draw(),g.release();const T=l?"global illumination blur vertical":M.OG.AMBIENT_ILLUMINATION,C=this.fboCache.acquire(b,y,T);d.bindFramebuffer(C.fbo),d.setViewport(0,0,b,y),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParameters.texture=S.getTexture(),this._drawParameters.weightTexture=x.attachment,(0,w.hZ)(this._drawParameters.blurSize,1/b,0),d.bindTechnique(s,n,this._passParameters,this._drawParameters),d.setViewport(0,0,b,y),d.screen.draw(),S.release(),C.attachColor(x,B.yI),x.release();let I=C;return u&&(I=this.fboCache.acquire(m,f,M.OG.AMBIENT_ILLUMINATION).acquireColor(B.yI,0),d.bindFramebuffer(I.fbo),d.setViewport(0,0,m,f),d.setClearColor(1,1,1,0),d.clear(16384),this._drawParametersUpscale.colorTexture=C.getTexture(),this._drawParametersUpscale.weightTexture=C.getTexture(B.yI),d.bindTechnique(u,n,this._passParameters,this._drawParametersUpscale),d.screen.draw(),C.release()),d.setViewport4fv(h.fullViewport),this._passParameters.frameCount=(this._passParameters.frameCount+1)%64,++this._passParameters.accumulatedFrames,this._passParameters.accumulatedFrames<this._maxFrames&&this.requestRender(1),I}get _emptyOutput(){const e=this.renderingContext,{fullWidth:t,fullHeight:r}=this.bindParameters.camera,o=this.fboCache.acquire(t,r,M.OG.AMBIENT_ILLUMINATION).acquireColor(B.yI,0);return e.bindFramebuffer(o.fbo),e.setViewport(0,0,t,r),e.clearBuffer(0,[0,0,0,1]),e.clearBuffer(1,[0,0,0,0]),o}async _loadBlueNoiseTexture(e,t){(0,g.Te)(t);const r=await(0,y.D)(e,{signal:t});if((0,g.Te)(t),!r)return;const o=new R.R;o.internalFormat=B.H0.RGBA8,o.wrapMode=10497,o.isImmutable=!0,this._passParameters.noiseTexture=new j.A(this.renderingContext,o,r)}get _canRender(){const e=this.bindParameters;return!(!this._passParameters.noiseTexture||e.hasEmission&&!e.reprojection.lastFrameEmission||!e.reprojection.lastFrameDepth||!e.globalIllumination||this._resetBuffer)}get _mode(){const{hasGlobalIlluminationHighQuality:e,hasGlobalIllumination:t}=this.view.stage.renderer;return e?2:t?1:0}resetAccumulation(){this._passParameters.accumulatedFrames=0}_needsUpscalePass(e){return 1===e}get test(){}};function G(e,t){t.receiveGlobalIllumination?(e.uniforms.add(new h.o("hasGlobalIlluminationTexture",e=>null!=e.globalIllumination),new m.x("globalIlluminationTexture",e=>e.globalIllumination?.getTexture())),e.constants.add("blurSizePixelsInverse","float",1),e.code.add(n.H`vec3 readGlobalIlluminationOcclusionInverse() {
|
|
817
|
+
if (!hasGlobalIlluminationTexture) {
|
|
818
|
+
return vec3(1.0);
|
|
819
|
+
}
|
|
820
|
+
ivec2 texel = ivec2(gl_FragCoord.xy * blurSizePixelsInverse);
|
|
821
|
+
return vec3(texelFetch(globalIlluminationTexture, texel, 0).a);
|
|
822
|
+
}
|
|
823
|
+
vec3 readGlobalIlluminationOcclusion() {
|
|
824
|
+
return 1.0 - readGlobalIlluminationOcclusionInverse();
|
|
825
|
+
}
|
|
826
|
+
vec4 readGlobalIlluminationEmissionInverse() {
|
|
827
|
+
if (!hasGlobalIlluminationTexture) {
|
|
828
|
+
return vec4(1.0);
|
|
829
|
+
}
|
|
830
|
+
ivec2 texel = ivec2(gl_FragCoord.xy * blurSizePixelsInverse);
|
|
831
|
+
return 1.0 - vec4(texelFetch(globalIlluminationTexture, texel, 0).rgb, 0.0);
|
|
832
|
+
}
|
|
833
|
+
vec4 readGlobalIlluminationEmission() {
|
|
834
|
+
return max((1.0 - readGlobalIlluminationEmissionInverse() - 0.01) / 0.99, 0.0);
|
|
835
|
+
}`)):e.code.add(n.H`vec3 readGlobalIlluminationOcclusionInverse() { return vec3(1.0); }
|
|
836
|
+
vec3 readGlobalIlluminationOcclusion() { return vec3(0.0); }
|
|
837
|
+
vec4 readGlobalIlluminationEmissionInverse() { return vec4(1.0); }
|
|
838
|
+
vec4 readGlobalIlluminationEmission() { return vec4(0.0); }`)}(0,f.Cg)([(0,b.MZ)()],N.prototype,"consumes",void 0),(0,f.Cg)([(0,b.MZ)()],N.prototype,"produces",void 0),(0,f.Cg)([(0,b.MZ)()],N.prototype,"_abortController",void 0),N=(0,f.Cg)([(0,b.$K)("esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIllumination")],N);var A=r(33094),W=r(57226);function L(e){e.code.add(n.H`float mapChannel(float x, vec2 p) {
|
|
839
|
+
return (x < p.x) ? mix(0.0, p.y, x/p.x) : mix(p.y, 1.0, (x - p.x) / (1.0 - p.x) );
|
|
840
|
+
}`),e.code.add(n.H`vec3 blackLevelSoftCompression(vec3 color, float averageAmbientRadiance) {
|
|
841
|
+
vec2 p = vec2(0.02, 0.0075) * averageAmbientRadiance;
|
|
842
|
+
return vec3(mapChannel(color.x, p), mapChannel(color.y, p), mapChannel(color.z, p));
|
|
843
|
+
}`)}function V(e){e.code.add(n.H`vec3 tonemapACES(vec3 x) {
|
|
844
|
+
return clamp((x * (2.51 * x + 0.03)) / (x * (2.43 * x + 0.59) + 0.14), 0.0, 1.0);
|
|
845
|
+
}`),e.code.add(n.H`vec3 tonemapKhronosNeutral(vec3 color, float exposure) {
|
|
846
|
+
const float startCompression = 0.76;
|
|
847
|
+
const float desaturation = 0.15;
|
|
848
|
+
color *= exposure;
|
|
849
|
+
float x = min( color.r, min( color.g, color.b ) );
|
|
850
|
+
float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
|
|
851
|
+
color -= offset;
|
|
852
|
+
float peak = max( color.r, max( color.g, color.b ) );
|
|
853
|
+
if ( peak < startCompression ) {
|
|
854
|
+
return color;
|
|
855
|
+
}
|
|
856
|
+
float d = 1.0 - startCompression;
|
|
857
|
+
float newPeak = 1.0 - d * d / ( peak + d - startCompression );
|
|
858
|
+
color *= newPeak / peak;
|
|
859
|
+
float g = 1.0 - 1.0 / ( desaturation * ( peak - newPeak ) + 1.0 );
|
|
860
|
+
return mix( color, vec3( newPeak ), g );
|
|
861
|
+
}`)}function k(e){e.constants.add("ambientBoostFactor","float",W.uH)}function U(e){e.uniforms.add(new A.U("lightingGlobalFactor",e=>e.lighting.globalFactor))}function q(e,t){const{pbrMode:r,spherical:o,hasColorTexture:a,receiveGlobalIllumination:m}=t;e.include(l.C),e.include(G,t),e.include(s.n,t),0!==r&&e.include(u.c,t),e.include(i,t),e.include(d.p),e.include(V,t);const f=!(2===r&&!a);f&&e.include(L),k(e),U(e),(0,c.Gc)(e),e.code.add(n.H`
|
|
862
|
+
float additionalDirectedAmbientLight(float lightAlignment) {
|
|
863
|
+
return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
float additionalDirectedAmbientLight(vec3 vPosWorld) {
|
|
867
|
+
float lightAlignment = dot(${o?n.H`normalize(vPosWorld)`:n.H`vec3(0.0, 0.0, 1.0)`}, mainLightDirection);
|
|
868
|
+
return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
|
|
869
|
+
}
|
|
870
|
+
`),(0,c.O4)(e),e.code.add(n.H`vec3 evaluateAdditionalLighting(float ambientOcclusion, vec3 vPosWorld) {
|
|
871
|
+
float additionalAmbientScale = additionalDirectedAmbientLight(vPosWorld);
|
|
872
|
+
return (1.0 - ambientOcclusion) * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor * mainLightIntensity;
|
|
873
|
+
}`);const p=m?"globalIlluminationOcclusion":"ssao",v=m?.75:1,g=m?1.5:1;switch(r){case 0:case 4:case 3:e.include(c.Vt),e.code.add(n.H`vec3 evaluateSceneLighting(vec3 normalWorld, vec3 albedo, float shadow, float ssao, vec3 additionalLight) {
|
|
874
|
+
vec3 mainLighting = applyShading(normalWorld, shadow);
|
|
875
|
+
vec3 ambientLighting = calculateAmbientIrradiance(normalWorld) * (1.0 - ssao);
|
|
876
|
+
vec3 albedoLinear = linearizeGamma(albedo);
|
|
877
|
+
vec3 totalLight = mainLighting + ambientLighting + additionalLight;
|
|
878
|
+
totalLight = min(totalLight, vec3(PI));
|
|
879
|
+
vec3 outColor = vec3((albedoLinear / PI) * totalLight);
|
|
880
|
+
return delinearizeGamma(outColor);
|
|
881
|
+
}`);break;case 1:case 2:{const r=m?.35:.2;e.code.add(n.H`
|
|
882
|
+
const float fillLightIntensity = 0.25;
|
|
883
|
+
const float horizonLightDiffusion = 0.4;
|
|
884
|
+
const float additionalAmbientIrradianceFactor = 0.02;
|
|
885
|
+
const float groundReflectance = ${n.H.float(r)};
|
|
886
|
+
|
|
887
|
+
vec3 evaluateSceneLightingPBR(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight,
|
|
888
|
+
vec3 viewDirection, vec3 upDirection, vec3 mrr, float additionalAmbientIrradiance) {
|
|
889
|
+
PBRShadingInfo inputs;
|
|
890
|
+
calculatePBRInputs(inputs, normal, viewDirection, upDirection, albedo, mrr);
|
|
891
|
+
|
|
892
|
+
${(0,n.If)(m,n.H`vec3 globalIlluminationOcclusion = min(1.2 * readGlobalIlluminationOcclusion(), 1.0);`)}
|
|
893
|
+
`),t.useFillLights?e.uniforms.add(new h.o("hasFillLights",e=>e.enableFillLights)):e.constants.add("hasFillLights","bool",!1),e.code.add(n.H`
|
|
894
|
+
vec3 ambientDir = vec3(5.0 * upDirection[1] - upDirection[0] * upDirection[2], - 5.0 * upDirection[0] - upDirection[2] * upDirection[1], upDirection[1] * upDirection[1] + upDirection[0] * upDirection[0]);
|
|
895
|
+
ambientDir = ambientDir != vec3(0.0) ? normalize(ambientDir) : normalize(vec3(5.0, -1.0, 0.0));
|
|
896
|
+
|
|
897
|
+
inputs.NdotAmbDir = hasFillLights ? abs(dot(normal, ambientDir)) : 1.0;
|
|
898
|
+
|
|
899
|
+
// Calculate the irradiance components: sun, fill lights and the sky.
|
|
900
|
+
vec3 mainLightIrradianceComponent = ${n.H.float(v)} * inputs.NdotL * (1.0 - shadow) * mainLightIntensity;
|
|
901
|
+
vec3 fillLightsIrradianceComponent = inputs.NdotAmbDir * mainLightIntensity * fillLightIntensity;
|
|
902
|
+
// calculate ambient irradiance for localView and additionalLight for globalView
|
|
903
|
+
vec3 ambientLightIrradianceComponent = ${n.H.float(g)} * calculateAmbientIrradiance(normal) * (1.0 - ${p}) + additionalLight;
|
|
904
|
+
|
|
905
|
+
// Assemble the overall irradiance of the sky that illuminates the surface
|
|
906
|
+
inputs.skyIrradianceToSurface = ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;
|
|
907
|
+
// Assemble the overall irradiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky irradiance by the groundReflectance
|
|
908
|
+
inputs.groundIrradianceToSurface = groundReflectance * ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;
|
|
909
|
+
`),e.uniforms.add(new A.U("lightingSpecularStrength",e=>e.lighting.mainLight.specularStrength),new A.U("lightingEnvironmentStrength",e=>e.lighting.mainLight.environmentStrength)).code.add(n.H`
|
|
910
|
+
vec3 horizonRingDir = inputs.RdotUP * upDirection - inputs.reflectedView;
|
|
911
|
+
vec3 horizonRingH = normalize(horizonRingDir - viewDirection);
|
|
912
|
+
inputs.NdotH_Horizon = dot(normal, horizonRingH);
|
|
913
|
+
|
|
914
|
+
vec3 mainLightRadianceComponent = lightingSpecularStrength * normalDistribution(inputs.NdotH, inputs.roughness) * mainLightIntensity * (1.0 - shadow);
|
|
915
|
+
vec3 horizonLightRadianceComponent = lightingEnvironmentStrength * normalDistribution(inputs.NdotH_Horizon, min(inputs.roughness + horizonLightDiffusion, 1.0)) * mainLightIntensity * fillLightIntensity;
|
|
916
|
+
|
|
917
|
+
// calculateAmbientRadiance for localView and additionalLight for global view
|
|
918
|
+
vec3 ambientLightRadianceComponent = lightingEnvironmentStrength * calculateAmbientRadiance() * (1.0 - ${p}) + additionalLight;
|
|
919
|
+
float normalDirectionModifier = mix(1., min(mix(0.1, 2.0, (inputs.NdotUP + 1.) * 0.5), 1.0), clamp(inputs.roughness * 5.0, 0.0 , 1.0));
|
|
920
|
+
|
|
921
|
+
// Assemble the overall radiance of the sky that illuminates the surface
|
|
922
|
+
inputs.skyRadianceToSurface = (ambientLightRadianceComponent + horizonLightRadianceComponent) * normalDirectionModifier + mainLightRadianceComponent;
|
|
923
|
+
|
|
924
|
+
// Assemble the overall radiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky radiance by the groundReflectance
|
|
925
|
+
inputs.groundRadianceToSurface = 0.5 * groundReflectance * (ambientLightRadianceComponent + horizonLightRadianceComponent) * normalDirectionModifier + mainLightRadianceComponent;
|
|
926
|
+
|
|
927
|
+
// Calculate average ambient radiance - This is used in the gamut mapping process to determine the black level for compression
|
|
928
|
+
inputs.averageAmbientRadiance = ambientLightIrradianceComponent[1] * (1.0 + groundReflectance);
|
|
929
|
+
`),e.code.add(n.H`
|
|
930
|
+
vec3 reflectedColorComponent = evaluateEnvironmentIllumination(inputs);
|
|
931
|
+
vec3 additionalMaterialReflectanceComponent = inputs.albedoLinear * additionalAmbientIrradiance;
|
|
932
|
+
vec3 outColorLinear = reflectedColorComponent + additionalMaterialReflectanceComponent;
|
|
933
|
+
|
|
934
|
+
${(0,n.If)(m,n.H`
|
|
935
|
+
vec3 globalIlluminationEmission = 2.25 * (0.75 * inputs.albedoLinear + 0.25) * readGlobalIlluminationEmission().rgb;
|
|
936
|
+
outColorLinear += globalIlluminationEmission;`)}
|
|
937
|
+
|
|
938
|
+
${f?n.H`vec3 adjustedOutColorLinear = blackLevelSoftCompression(outColorLinear, inputs.averageAmbientRadiance);`:n.H`vec3 adjustedOutColorLinear = max(vec3(0.0), outColorLinear - 0.005 * inputs.averageAmbientRadiance);`}
|
|
939
|
+
|
|
940
|
+
return delinearizeGamma(adjustedOutColorLinear);
|
|
941
|
+
}
|
|
942
|
+
`);break}case 5:case 6:{const t=m?.35:.5,r=m?.75:1,o=m?1.5:1;(0,c.Gc)(e),(0,c.O4)(e),e.code.add(n.H`
|
|
943
|
+
const float roughnessTerrain = 0.5;
|
|
944
|
+
const float specularityTerrain = ${n.H.float(t)};
|
|
945
|
+
|
|
946
|
+
vec3 evaluatePBRSimplifiedLighting(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight, vec3 viewDirection, vec3 upDirection) {
|
|
947
|
+
PBRShadingInfo inputs;
|
|
948
|
+
calculateSimplifiedInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
949
|
+
|
|
950
|
+
${(0,n.If)(m,n.H`vec3 globalIlluminationOcclusion = min(1.2 * readGlobalIlluminationOcclusion(), 1.0);`)}
|
|
951
|
+
|
|
952
|
+
vec3 mainLightIrradianceComponent = ${n.H.float(r)} * (1.0 - shadow) * inputs.NdotL * mainLightIntensity;
|
|
953
|
+
vec3 ambientLightIrradianceComponent = ${n.H.float(o)} * calculateAmbientIrradiance(normal) * (1.0 - ${p}) + additionalLight;
|
|
954
|
+
vec3 ambientSky = ambientLightIrradianceComponent + mainLightIrradianceComponent;
|
|
955
|
+
|
|
956
|
+
vec3 indirectDiffuse = ((1.0 - inputs.NdotUP) * mainLightIrradianceComponent + (1.0 + inputs.NdotUP ) * ambientSky) * 0.5;
|
|
957
|
+
vec3 outDiffColor = inputs.albedoLinear * (1.0 - inputs.f0) * indirectDiffuse / PI;
|
|
958
|
+
|
|
959
|
+
vec3 mainLightRadianceComponent = normalDistribution(inputs.NdotH, roughnessTerrain) * mainLightIntensity;
|
|
960
|
+
vec2 dfg = prefilteredDFGAnalytical(roughnessTerrain, inputs.NdotV);
|
|
961
|
+
vec3 specularColor = inputs.f0 * dfg.x + inputs.f90 * dfg.y;
|
|
962
|
+
vec3 specularComponent = specularityTerrain * specularColor * mainLightRadianceComponent;
|
|
963
|
+
|
|
964
|
+
vec3 outColorLinear = outDiffColor + specularComponent;
|
|
965
|
+
|
|
966
|
+
${(0,n.If)(m,n.H`
|
|
967
|
+
vec3 globalIlluminationEmission = 2.25 * (0.75 * inputs.albedoLinear + 0.25) * readGlobalIlluminationEmission().rgb;
|
|
968
|
+
outColorLinear += globalIlluminationEmission;`)}
|
|
969
|
+
|
|
970
|
+
return delinearizeGamma(outColorLinear);
|
|
971
|
+
}
|
|
972
|
+
`);break}}}},65261(e,t,r){r.d(t,{C:()=>n});var o=r(40876),a=r(31821);function n(e){e.constants.add("GAMMA","float",o.Tf).constants.add("INV_GAMMA","float",1/o.Tf).code.add(a.H`vec3 delinearizeGamma(vec3 color) {
|
|
973
|
+
return pow(color, vec3(INV_GAMMA));
|
|
974
|
+
}
|
|
975
|
+
vec4 delinearizeGamma(vec4 color) {
|
|
976
|
+
return vec4(delinearizeGamma(color.rgb), color.a);
|
|
977
|
+
}
|
|
978
|
+
vec3 linearizeGamma(vec3 color) {
|
|
979
|
+
return pow(color, vec3(GAMMA));
|
|
980
|
+
}`)}},72885(e,t,r){r.d(t,{Q:()=>a});var o=r(31821);function a(e){e.fragment.code.add(o.H`
|
|
981
|
+
float globalIlluminationNormalSimilarityWeight(vec3 sampleNormal, vec3 centerNormal) {
|
|
982
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
983
|
+
float normalSimilarityMultiplier = isScaledGlobalIllumination ? ${o.H.float(.4)} : 1.0;
|
|
984
|
+
return clamp(1.0 - ${o.H.float(15.3)} * length(sampleNormal - centerNormal) * normalSimilarityMultiplier, 0.0, 1.0);
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
float globalIlluminationDepthNormalCorrection(vec3 encodedNormal) {
|
|
988
|
+
vec3 decodedNormal = normalize(encodedNormal * 2.0 - 1.0);
|
|
989
|
+
return pow(max((1.0 - abs(decodedNormal.x)) * (1.0 - abs(decodedNormal.y)), 0.01), ${o.H.float(5)});
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
float globalIlluminationDepthSharpness(float projScale, float depth) {
|
|
993
|
+
return ${o.H.float(-.05)} * projScale / depth;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
float globalIlluminationDepthSharpness(float projScale, float depth, vec3 encodedNormal) {
|
|
997
|
+
return globalIlluminationDepthSharpness(projScale, depth) * globalIlluminationDepthNormalCorrection(encodedNormal);
|
|
998
|
+
}
|
|
999
|
+
`)}},98619(e,t,r){r.d(t,{Gc:()=>n,O4:()=>i,Vt:()=>s});var o=r(23205),a=r(31821);function n(e){e.uniforms.add(new o.d("mainLightDirection",e=>e.lighting.mainLight.direction))}function i(e){e.uniforms.add(new o.d("mainLightIntensity",e=>e.lighting.mainLight.intensity))}function s(e){n(e),i(e),e.code.add(a.H`vec3 applyShading(vec3 shadingNormal, float shadow) {
|
|
1000
|
+
float dotVal = clamp(dot(shadingNormal, mainLightDirection), 0.0, 1.0);
|
|
1001
|
+
return mainLightIntensity * ((1.0 - shadow) * dotVal);
|
|
1002
|
+
}`)}},62602(e,t,r){r.d(t,{r:()=>a});var o=r(31821);function a(e,t){const r=e.fragment;switch(r.code.add(o.H`struct ShadingNormalParameters {
|
|
1003
|
+
vec3 normalView;
|
|
1004
|
+
vec3 viewDirection;
|
|
1005
|
+
} shadingParams;`),t.doubleSidedMode){case 0:r.code.add(o.H`vec3 shadingNormal(ShadingNormalParameters params) {
|
|
1006
|
+
return normalize(params.normalView);
|
|
1007
|
+
}`);break;case 1:r.code.add(o.H`vec3 shadingNormal(ShadingNormalParameters params) {
|
|
1008
|
+
return dot(params.normalView, params.viewDirection) > 0.0 ? normalize(-params.normalView) : normalize(params.normalView);
|
|
1009
|
+
}`);break;case 2:r.code.add(o.H`vec3 shadingNormal(ShadingNormalParameters params) {
|
|
1010
|
+
return gl_FrontFacing ? normalize(params.normalView) : normalize(-params.normalView);
|
|
1011
|
+
}`);break;default:t.doubleSidedMode;case 3:}}},22393(e,t,r){r.d(t,{c:()=>s});var o=r(31821);function a(e){e.code.add(o.H`vec3 evaluateDiffuseIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float NdotNG) {
|
|
1012
|
+
return ((1.0 - NdotNG) * ambientGround + (1.0 + NdotNG) * ambientSky) * 0.5;
|
|
1013
|
+
}`),e.code.add(o.H`float integratedRadiance(float cosTheta2, float roughness) {
|
|
1014
|
+
return (cosTheta2 - 1.0) / (cosTheta2 * (1.0 - roughness * roughness) - 1.0);
|
|
1015
|
+
}`),e.code.add(o.H`vec3 evaluateSpecularIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float RdotNG, float roughness) {
|
|
1016
|
+
float cosTheta2 = 1.0 - RdotNG * RdotNG;
|
|
1017
|
+
float intRadTheta = integratedRadiance(cosTheta2, roughness);
|
|
1018
|
+
float ground = RdotNG < 0.0 ? 1.0 - intRadTheta : 1.0 + intRadTheta;
|
|
1019
|
+
float sky = 2.0 - ground;
|
|
1020
|
+
return (ground * ambientGround + sky * ambientSky) * 0.5;
|
|
1021
|
+
}`)}var n=r(65261),i=r(89786);function s(e,t){e.include(n.C),e.include(i.p),1!==t.pbrMode&&2!==t.pbrMode&&5!==t.pbrMode&&6!==t.pbrMode||(e.code.add(o.H`float normalDistribution(float NdotH, float roughness)
|
|
1022
|
+
{
|
|
1023
|
+
float a = NdotH * roughness;
|
|
1024
|
+
float b = roughness / (1.0 - NdotH * NdotH + a * a);
|
|
1025
|
+
return b * b * INV_PI;
|
|
1026
|
+
}`),e.code.add(o.H`const vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022);
|
|
1027
|
+
const vec4 c1 = vec4( 1.0, 0.0425, 1.040, -0.040);
|
|
1028
|
+
const vec2 c2 = vec2(-1.04, 1.04);
|
|
1029
|
+
vec2 prefilteredDFGAnalytical(float roughness, float NdotV) {
|
|
1030
|
+
vec4 r = roughness * c0 + c1;
|
|
1031
|
+
float a004 = min(r.x * r.x, exp2(-9.28 * NdotV)) * r.x + r.y;
|
|
1032
|
+
return c2 * a004 + r.zw;
|
|
1033
|
+
}`),e.code.add(o.H`struct PBRShadingInfo
|
|
1034
|
+
{
|
|
1035
|
+
float NdotV;
|
|
1036
|
+
float NdotL;
|
|
1037
|
+
float LdotH;
|
|
1038
|
+
float NdotUP;
|
|
1039
|
+
float RdotUP;
|
|
1040
|
+
float NdotAmbDir;
|
|
1041
|
+
float NdotH_Horizon;
|
|
1042
|
+
float NdotH;
|
|
1043
|
+
vec3 skyRadianceToSurface;
|
|
1044
|
+
vec3 groundRadianceToSurface;
|
|
1045
|
+
vec3 skyIrradianceToSurface;
|
|
1046
|
+
vec3 groundIrradianceToSurface;
|
|
1047
|
+
vec3 reflectedView;
|
|
1048
|
+
float averageAmbientRadiance;
|
|
1049
|
+
vec3 albedoLinear;
|
|
1050
|
+
vec3 f0;
|
|
1051
|
+
vec3 f90;
|
|
1052
|
+
vec3 diffuseColor;
|
|
1053
|
+
float metalness;
|
|
1054
|
+
float roughness;
|
|
1055
|
+
};`),e.code.add(o.H`void calculateCommonInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
1056
|
+
vec3 h = normalize(mainLightDirection - viewDirection);
|
|
1057
|
+
inputs.NdotV = clamp(abs(dot(normal, -viewDirection)), 0.001, 1.0);
|
|
1058
|
+
inputs.NdotUP = clamp(dot(normal, upDirection), -1.0, 1.0);
|
|
1059
|
+
inputs.reflectedView = normalize(reflect(-viewDirection, normal));
|
|
1060
|
+
inputs.RdotUP = clamp(dot(inputs.reflectedView, upDirection), -1.0, 1.0);
|
|
1061
|
+
inputs.albedoLinear = linearizeGamma(albedo);
|
|
1062
|
+
inputs.NdotH = clamp(dot(normal, h), 0.0, 1.0);
|
|
1063
|
+
inputs.NdotL = clamp(dot(normal, mainLightDirection), 0.001, 1.0);
|
|
1064
|
+
}`)),1!==t.pbrMode&&2!==t.pbrMode||(e.include(a),e.code.add(o.H`vec3 evaluateEnvironmentIllumination(PBRShadingInfo inputs) {
|
|
1065
|
+
vec3 indirectDiffuse = evaluateDiffuseIlluminationHemisphere(inputs.groundIrradianceToSurface, inputs.skyIrradianceToSurface, inputs.NdotUP);
|
|
1066
|
+
vec3 indirectSpecular = evaluateSpecularIlluminationHemisphere(inputs.groundRadianceToSurface, inputs.skyRadianceToSurface, inputs.RdotUP, inputs.roughness);
|
|
1067
|
+
vec3 diffuseComponent = inputs.diffuseColor * indirectDiffuse * INV_PI;
|
|
1068
|
+
vec2 dfg = prefilteredDFGAnalytical(inputs.roughness, inputs.NdotV);
|
|
1069
|
+
vec3 specularColor = inputs.f0 * dfg.x + inputs.f90 * dfg.y;
|
|
1070
|
+
vec3 specularComponent = specularColor * indirectSpecular;
|
|
1071
|
+
return (diffuseComponent + specularComponent);
|
|
1072
|
+
}`),e.code.add(o.H`void calculatePBRInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo, vec3 mrr) {
|
|
1073
|
+
calculateCommonInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
1074
|
+
inputs.metalness = mrr[0];
|
|
1075
|
+
inputs.roughness = clamp(mrr[1] * mrr[1], 0.001, 0.99);
|
|
1076
|
+
inputs.f0 = (0.16 * mrr[2] * mrr[2]) * (1.0 - inputs.metalness) + inputs.albedoLinear * inputs.metalness;
|
|
1077
|
+
inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
1078
|
+
inputs.diffuseColor = inputs.albedoLinear * (vec3(1.0) - inputs.f0) * (1.0 - inputs.metalness);
|
|
1079
|
+
}`)),5!==t.pbrMode&&6!==t.pbrMode||e.code.add(o.H`const vec3 fresnelReflectionSimplified = vec3(0.04);
|
|
1080
|
+
void calculateSimplifiedInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
1081
|
+
calculateCommonInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
1082
|
+
float lightness = 0.3 * inputs.albedoLinear[0] + 0.5 * inputs.albedoLinear[1] + 0.2 * inputs.albedoLinear[2];
|
|
1083
|
+
inputs.f0 = (0.85 * lightness + 0.15) * fresnelReflectionSimplified;
|
|
1084
|
+
inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
1085
|
+
}`)}},59469(e,t,r){r.d(t,{_:()=>c});var o=r(99208),a=r(40710),n=r(33079),i=r(31821),s=r(15976),l=r(63761);function c(e,t){const r=t.pbrMode,c=e.fragment;if(2!==r&&0!==r&&1!==r)return void c.code.add(i.H`void applyPBRFactors() {}`);if(0===r)return void c.code.add(i.H`void applyPBRFactors() {}
|
|
1086
|
+
float getBakedOcclusion() { return 1.0; }`);if(2===r)return void c.code.add(i.H`vec3 mrr = vec3(0.0, 0.6, 0.2);
|
|
1087
|
+
float occlusion = 1.0;
|
|
1088
|
+
void applyPBRFactors() {}
|
|
1089
|
+
float getBakedOcclusion() { return 1.0; }`);const{hasMetallicRoughnessTexture:u,hasMetallicRoughnessTextureTransform:d,hasOcclusionTexture:h,hasOcclusionTextureTransform:m,bindType:f}=t;(u||h)&&e.include(o.r,t),c.code.add(i.H`vec3 mrr;
|
|
1090
|
+
float occlusion;`),u&&c.uniforms.add(1===f?new l.N("texMetallicRoughness",e=>e.textureMetallicRoughness):new s.o("texMetallicRoughness",e=>e.textureMetallicRoughness)),h&&c.uniforms.add(1===f?new l.N("texOcclusion",e=>e.textureOcclusion):new s.o("texOcclusion",e=>e.textureOcclusion)),c.uniforms.add(1===f?new n.t("mrrFactors",e=>e.mrrFactors):new a.W("mrrFactors",e=>e.mrrFactors)),c.code.add(i.H`
|
|
1091
|
+
${(0,i.If)(u,i.H`void applyMetallicRoughness(vec2 uv) {
|
|
1092
|
+
vec3 metallicRoughness = textureLookup(texMetallicRoughness, uv).rgb;
|
|
1093
|
+
mrr[0] *= metallicRoughness.b;
|
|
1094
|
+
mrr[1] *= metallicRoughness.g;
|
|
1095
|
+
}`)}
|
|
1096
|
+
|
|
1097
|
+
${(0,i.If)(h,"void applyOcclusion(vec2 uv) { occlusion *= textureLookup(texOcclusion, uv).r; }")}
|
|
1098
|
+
|
|
1099
|
+
float getBakedOcclusion() {
|
|
1100
|
+
return ${h?"occlusion":"1.0"};
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
void applyPBRFactors() {
|
|
1104
|
+
mrr = mrrFactors;
|
|
1105
|
+
occlusion = 1.0;
|
|
1106
|
+
|
|
1107
|
+
${(0,i.If)(u,`applyMetallicRoughness(${d?"metallicRoughnessUV":"vuv0"});`)}
|
|
1108
|
+
${(0,i.If)(h,`applyOcclusion(${m?"occlusionUV":"vuv0"});`)}
|
|
1109
|
+
}
|
|
1110
|
+
`)}(r(74810),r(65786)).Y},32482(e,t,r){r.d(t,{LA:()=>M,QH:()=>y}),r(51850);var o=r(46686),a=r(49255),n=r(31821);function i(e,t){const r=(0,a._o)(t.output)&&t.receiveShadows;r&&(0,o.o)(e,!0),e.vertex.code.add(n.H`
|
|
1111
|
+
void forwardLinearDepthToReadShadowMap() { ${(0,n.If)(r,"forwardLinearDepth(gl_Position.w);")} }
|
|
1112
|
+
`)}var s=r(14314),l=r(35818),c=r(74333);class u extends c.n{constructor(e,t,r,o){super(e,"mat4",2,(r,a,n,i)=>r.setUniformMatrices4fv(e,t(a,n,i),o),r)}}class d extends c.n{constructor(e,t,r,o){super(e,"mat4",1,(r,a,n)=>r.setUniformMatrices4fv(e,t(a,n),o),r)}}var h=r(65786);function m(e){e.uniforms.add(new d("shadowMapMatrix",(e,t)=>t.shadowMap.getShadowMapMatrices(e.origin),4)),e.include(p)}function f(e){e.uniforms.add(new u("shadowMapMatrix",(e,t)=>t.shadowMap.getShadowMapMatrices(e.origin),4)),e.include(p)}function p(e){e.uniforms.add(new s.I("cascadeDistances",e=>e.shadowMap.cascadeDistances),new l.W("numCascades",e=>e.shadowMap.numCascades)),e.code.add(v)}h.Y;const v=n.H`const vec3 invalidShadowmapUVZ = vec3(0.0, 0.0, -1.0);
|
|
1113
|
+
vec3 lightSpacePosition(vec3 _vpos, mat4 mat) {
|
|
1114
|
+
vec4 lv = mat * vec4(_vpos, 1.0);
|
|
1115
|
+
lv.xy /= lv.w;
|
|
1116
|
+
return 0.5 * lv.xyz + vec3(0.5);
|
|
1117
|
+
}
|
|
1118
|
+
vec2 cascadeCoordinates(int i, ivec2 textureSize, vec3 lvpos) {
|
|
1119
|
+
float xScale = float(textureSize.y) / float(textureSize.x);
|
|
1120
|
+
return vec2((float(i) + lvpos.x) * xScale, lvpos.y);
|
|
1121
|
+
}
|
|
1122
|
+
vec3 calculateUVZShadow(in vec3 _worldPos, in float _linearDepth, in ivec2 shadowMapSize) {
|
|
1123
|
+
int i = _linearDepth < cascadeDistances[1] ? 0 : _linearDepth < cascadeDistances[2] ? 1 : _linearDepth < cascadeDistances[3] ? 2 : 3;
|
|
1124
|
+
if (i >= numCascades) {
|
|
1125
|
+
return invalidShadowmapUVZ;
|
|
1126
|
+
}
|
|
1127
|
+
mat4 shadowMatrix = i == 0 ? shadowMapMatrix[0] : i == 1 ? shadowMapMatrix[1] : i == 2 ? shadowMapMatrix[2] : shadowMapMatrix[3];
|
|
1128
|
+
vec3 lvpos = lightSpacePosition(_worldPos, shadowMatrix);
|
|
1129
|
+
if (lvpos.z >= 1.0 || lvpos.x < 0.0 || lvpos.x > 1.0 || lvpos.y < 0.0 || lvpos.y > 1.0) {
|
|
1130
|
+
return invalidShadowmapUVZ;
|
|
1131
|
+
}
|
|
1132
|
+
vec2 uvShadow = cascadeCoordinates(i, shadowMapSize, lvpos);
|
|
1133
|
+
return vec3(uvShadow, lvpos.z);
|
|
1134
|
+
}`;function g(e){e.code.add(n.H`float readShadowMapUVZ(vec3 uvzShadow, sampler2DShadow _shadowMap) {
|
|
1135
|
+
return texture(_shadowMap, uvzShadow);
|
|
1136
|
+
}`)}r(32976);var x=r(33094),b=r(12791);class w extends c.n{constructor(e,t){super(e,"sampler2DShadow",0,(r,o)=>r.bindTexture(e,t(o)))}}function y(e,t){t.receiveShadows&&e.fragment.include(m),S(e,t)}function M(e,t){t.receiveShadows&&e.fragment.include(f),S(e,t)}function S(e,t){e.fragment.uniforms.add(new x.U("lightingGlobalFactor",e=>e.lighting.globalFactor));const{hasShadowHighlights:r,receiveShadows:o,spherical:a}=t;e.include(i,t),o&&function(e,t){(function(e,t){e.include(g),e.uniforms.add(T()),t&&e.uniforms.add(new b.x("shadowHighlight",({shadowHighlight:e})=>e?.getTexture())),e.code.add(n.H`
|
|
1137
|
+
float readShadowMaps(const in vec3 uvzShadow) {
|
|
1138
|
+
if (uvzShadow.z < 0.0) {
|
|
1139
|
+
return 0.0;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
float shadow1 = readShadowMapUVZ(uvzShadow, shadowMap);
|
|
1143
|
+
${(0,n.If)(t,"float shadow2 = texelFetch(shadowHighlight, ivec2(gl_FragCoord.xy), 0).r;\n return shadow1 > shadow2 ? shadow1 : shadow2;","return shadow1;")}
|
|
1144
|
+
}
|
|
1145
|
+
`)})(e,t),function(e){e.code.add(n.H`float readShadowMap(const in vec3 _worldPos, float _linearDepth) {
|
|
1146
|
+
vec3 uvzShadow = calculateUVZShadow(_worldPos, _linearDepth, textureSize(shadowMap, 0));
|
|
1147
|
+
return readShadowMaps(uvzShadow);
|
|
1148
|
+
}`)}(e)}(e.fragment,r),e.fragment.code.add(n.H`
|
|
1149
|
+
float readShadow(float additionalAmbientScale, vec3 vpos) {
|
|
1150
|
+
return ${o?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":(0,n.If)(a,"lightingGlobalFactor * (1.0 - additionalAmbientScale)","0.0")};
|
|
1151
|
+
}
|
|
1152
|
+
`)}function T(){return new w("shadowMap",({shadowMap:e})=>e.getOutput(5)??e.getOutput(7))}h.Y},96608(e,t,r){r.d(t,{t:()=>c});var o=r(52540),a=r(77108),n=r(33094),i=r(31821),s=r(58029),l=r(12791);function c(e,t){if(!t.screenSpaceReflections)return;const r=e.fragment;r.include(o.E),r.uniforms.add(new a.E("nearFar",e=>e.camera.nearFar),new l.x("depthMap",e=>e.depth?.attachment),new s.F("proj",e=>e.camera.projectionMatrix),new n.U("invResolutionHeight",e=>1/e.camera.height),new s.F("reprojectionMatrix",e=>e.reprojection.matrix)).code.add(i.H`
|
|
1153
|
+
vec2 reprojectionCoordinate(vec3 projectionCoordinate)
|
|
1154
|
+
{
|
|
1155
|
+
vec4 zw = proj * vec4(0.0, 0.0, -projectionCoordinate.z, 1.0);
|
|
1156
|
+
vec4 reprojectedCoord = reprojectionMatrix * vec4(zw.w * (projectionCoordinate.xy * 2.0 - 1.0), zw.z, zw.w);
|
|
1157
|
+
reprojectedCoord.xy /= reprojectedCoord.w;
|
|
1158
|
+
return reprojectedCoord.xy * 0.5 + 0.5;
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
vec4 applyProjectionMat(mat4 projectionMat, vec3 x)
|
|
1162
|
+
{
|
|
1163
|
+
vec4 projectedCoord = projectionMat * vec4(x, 1.0);
|
|
1164
|
+
projectedCoord.xy /= projectedCoord.w;
|
|
1165
|
+
projectedCoord.xy = projectedCoord.xy*0.5 + 0.5;
|
|
1166
|
+
return projectedCoord;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
vec3 screenSpaceIntersection(vec3 dir, vec3 startPosition, vec3 viewDir, vec3 normal, float offset, bool globalIllumination)
|
|
1170
|
+
{
|
|
1171
|
+
vec3 viewPos = startPosition;
|
|
1172
|
+
vec3 viewPosEnd = startPosition;
|
|
1173
|
+
|
|
1174
|
+
// Project the start position to the screen
|
|
1175
|
+
vec4 projectedCoordStart = applyProjectionMat(proj, viewPos);
|
|
1176
|
+
vec3 Q0 = viewPos / projectedCoordStart.w; // homogeneous camera space
|
|
1177
|
+
float k0 = 1.0/ projectedCoordStart.w;
|
|
1178
|
+
|
|
1179
|
+
// advance the position in the direction of the reflection
|
|
1180
|
+
viewPos += dir;
|
|
1181
|
+
|
|
1182
|
+
vec4 projectedCoordVanishingPoint = applyProjectionMat(proj, dir);
|
|
1183
|
+
|
|
1184
|
+
// Project the advanced position to the screen
|
|
1185
|
+
vec4 projectedCoordEnd = applyProjectionMat(proj, viewPos);
|
|
1186
|
+
vec3 Q1 = viewPos / projectedCoordEnd.w; // homogeneous camera space
|
|
1187
|
+
float k1 = 1.0/ projectedCoordEnd.w;
|
|
1188
|
+
|
|
1189
|
+
// calculate the reflection direction in the screen space
|
|
1190
|
+
vec2 projectedCoordDir = (projectedCoordEnd.xy - projectedCoordStart.xy);
|
|
1191
|
+
vec2 projectedCoordDistVanishingPoint = (projectedCoordVanishingPoint.xy - projectedCoordStart.xy);
|
|
1192
|
+
|
|
1193
|
+
float maxReach = globalIllumination ? 0.15 : 1.0;
|
|
1194
|
+
float distMod = min(globalIllumination ? length(projectedCoordDistVanishingPoint.xy) : abs(projectedCoordDistVanishingPoint.y), maxReach);
|
|
1195
|
+
|
|
1196
|
+
float projectedCoordDirLength = length(projectedCoordDir);
|
|
1197
|
+
int maxSteps = globalIllumination ? 16 : ${t.highStepCount?"150":"75"};
|
|
1198
|
+
float maxSt = float(maxSteps);
|
|
1199
|
+
|
|
1200
|
+
// normalize the projection direction depending on maximum steps
|
|
1201
|
+
// this determines how blocky the reflection looks
|
|
1202
|
+
vec2 dP = distMod * (projectedCoordDir)/(maxSt * projectedCoordDirLength);
|
|
1203
|
+
|
|
1204
|
+
// Normalize the homogeneous camera space coordinates
|
|
1205
|
+
vec3 dQ = distMod * (Q1 - Q0)/(maxSt * projectedCoordDirLength);
|
|
1206
|
+
float dk = distMod * (k1 - k0)/(maxSt * projectedCoordDirLength);
|
|
1207
|
+
|
|
1208
|
+
// initialize the variables for ray marching
|
|
1209
|
+
vec2 P = projectedCoordStart.xy;
|
|
1210
|
+
vec3 Q = Q0;
|
|
1211
|
+
float k = k0;
|
|
1212
|
+
float rayStartZ = -startPosition.z; // estimated ray start depth value
|
|
1213
|
+
float rayEndZ = -startPosition.z; // estimated ray end depth value
|
|
1214
|
+
float prevEstimateZ = -startPosition.z;
|
|
1215
|
+
float rayDiffZ = 0.0;
|
|
1216
|
+
float dDepth;
|
|
1217
|
+
float depth;
|
|
1218
|
+
float rayDiffZOld = 0.0;
|
|
1219
|
+
|
|
1220
|
+
// early outs
|
|
1221
|
+
if (dot(normal, dir) < 0.0 || dot(-viewDir, normal) < 0.0)
|
|
1222
|
+
return vec3(P, 0.0);
|
|
1223
|
+
float dDepthBefore = 0.0;
|
|
1224
|
+
|
|
1225
|
+
P = clamp(P + offset * dP, vec2(0.0), vec2(0.999));
|
|
1226
|
+
Q.z += offset * dQ.z;
|
|
1227
|
+
k += offset * dk;
|
|
1228
|
+
|
|
1229
|
+
for(int i = 0; i < maxSteps-1; i++)
|
|
1230
|
+
{
|
|
1231
|
+
depth = -linearDepthFromTexture(depthMap, P); // get linear depth from the depth buffer
|
|
1232
|
+
|
|
1233
|
+
// estimate depth of the marching ray
|
|
1234
|
+
rayStartZ = prevEstimateZ;
|
|
1235
|
+
dDepth = -rayStartZ - depth;
|
|
1236
|
+
rayEndZ = (dQ.z * 0.5 + Q.z)/ ((dk * 0.5 + k));
|
|
1237
|
+
rayDiffZ = rayEndZ- rayStartZ;
|
|
1238
|
+
prevEstimateZ = rayEndZ;
|
|
1239
|
+
|
|
1240
|
+
if(-rayEndZ > nearFar[1] || -rayEndZ < nearFar[0] || P.y < 0.0 || P.y > 1.0 )
|
|
1241
|
+
{
|
|
1242
|
+
return vec3(P, 0.);
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
// If we detect a hit - return the intersection point, two conditions:
|
|
1246
|
+
// - dDepth > 0.0 - sampled point depth is in front of estimated depth
|
|
1247
|
+
// - if difference between dDepth and rayDiffZOld is not too large
|
|
1248
|
+
// - if difference between dDepth and 0.025/abs(k) is not too large
|
|
1249
|
+
// - if the sampled depth is not behind far plane or in front of near plane
|
|
1250
|
+
|
|
1251
|
+
if((dDepth) < 0.025/abs(k) + abs(rayDiffZ) && dDepth > 0.0 && depth > nearFar[0] && depth < nearFar[1] && abs(P.y - projectedCoordStart.y) > invResolutionHeight)
|
|
1252
|
+
{
|
|
1253
|
+
float weight = dDepth / (dDepth - dDepthBefore);
|
|
1254
|
+
vec2 Pf = mix(P - dP, P, 1.0 - weight);
|
|
1255
|
+
if (abs(Pf.y - projectedCoordStart.y) > invResolutionHeight) {
|
|
1256
|
+
return vec3(Pf, depth);
|
|
1257
|
+
}
|
|
1258
|
+
else {
|
|
1259
|
+
return vec3(P, depth);
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
if (globalIllumination && (P.x <= 0.0 || P.x >= 1.0)) {
|
|
1264
|
+
return vec3(P, 0.0);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
// continue with ray marching
|
|
1268
|
+
// Clamp to 0.999 to avoid sampling edge artifacts for water reflections
|
|
1269
|
+
P = P + dP;
|
|
1270
|
+
Q.z += dQ.z;
|
|
1271
|
+
k += dk;
|
|
1272
|
+
rayDiffZOld = rayDiffZ;
|
|
1273
|
+
dDepthBefore = dDepth;
|
|
1274
|
+
|
|
1275
|
+
// Clamp to 0.999 to avoid sampling edge artifacts for water reflections
|
|
1276
|
+
if (!globalIllumination) {
|
|
1277
|
+
P = clamp(P, vec2(0.0), vec2(0.999));
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
return vec3(P, 0.0);
|
|
1281
|
+
}
|
|
1282
|
+
`)}},51406(e,t,r){r.d(t,{MU:()=>l,O1:()=>c,QM:()=>u,Sx:()=>s,q2:()=>i});var o=r(29242),a=r(31821),n=r(35644);function i(e,t){t.hasColorTextureTransform?(e.varyings.add("colorUV","vec2"),e.vertex.uniforms.add(new n.k("colorTextureTransformMatrix",e=>e.colorTextureTransformMatrix??o.zK)).code.add(a.H`void forwardColorUV(){
|
|
1283
|
+
colorUV = (colorTextureTransformMatrix * vec3(vuv0, 1.0)).xy;
|
|
1284
|
+
}`)):e.vertex.code.add(a.H`void forwardColorUV(){}`)}function s(e,t){t.hasNormalTextureTransform&&0!==t.textureCoordinateType?(e.varyings.add("normalUV","vec2"),e.vertex.uniforms.add(new n.k("normalTextureTransformMatrix",e=>e.normalTextureTransformMatrix??o.zK)).code.add(a.H`void forwardNormalUV(){
|
|
1285
|
+
normalUV = (normalTextureTransformMatrix * vec3(vuv0, 1.0)).xy;
|
|
1286
|
+
}`)):e.vertex.code.add(a.H`void forwardNormalUV(){}`)}function l(e,t){t.hasEmissionTextureTransform&&0!==t.textureCoordinateType?(e.varyings.add("emissiveUV","vec2"),e.vertex.uniforms.add(new n.k("emissiveTextureTransformMatrix",e=>e.emissiveTextureTransformMatrix??o.zK)).code.add(a.H`void forwardEmissiveUV(){
|
|
1287
|
+
emissiveUV = (emissiveTextureTransformMatrix * vec3(vuv0, 1.0)).xy;
|
|
1288
|
+
}`)):e.vertex.code.add(a.H`void forwardEmissiveUV(){}`)}function c(e,t){t.hasOcclusionTextureTransform&&0!==t.textureCoordinateType?(e.varyings.add("occlusionUV","vec2"),e.vertex.uniforms.add(new n.k("occlusionTextureTransformMatrix",e=>e.occlusionTextureTransformMatrix??o.zK)).code.add(a.H`void forwardOcclusionUV(){
|
|
1289
|
+
occlusionUV = (occlusionTextureTransformMatrix * vec3(vuv0, 1.0)).xy;
|
|
1290
|
+
}`)):e.vertex.code.add(a.H`void forwardOcclusionUV(){}`)}function u(e,t){t.hasMetallicRoughnessTextureTransform&&0!==t.textureCoordinateType?(e.varyings.add("metallicRoughnessUV","vec2"),e.vertex.uniforms.add(new n.k("metallicRoughnessTextureTransformMatrix",e=>e.metallicRoughnessTextureTransformMatrix??o.zK)).code.add(a.H`void forwardMetallicRoughnessUV(){
|
|
1291
|
+
metallicRoughnessUV = (metallicRoughnessTextureTransformMatrix * vec3(vuv0, 1.0)).xy;
|
|
1292
|
+
}`)):e.vertex.code.add(a.H`void forwardMetallicRoughnessUV(){}`)}},34845(e,t,r){r.d(t,{Ir:()=>u});var o=r(37585),a=r(48163),n=r(78955),i=r(91829),s=r(77108),l=r(14314),c=r(31821);function u(e){e.fragment.uniforms.add(new l.I("projInfo",e=>function(e){const t=e.projectionMatrix;return 0===t[11]?(0,n.hZ)(d,2/(e.fullWidth*t[0]),2/(e.fullHeight*t[5]),(1+t[12])/t[0],(1+t[13])/t[5]):(0,n.hZ)(d,-2/(e.fullWidth*t[0]),-2/(e.fullHeight*t[5]),(1-t[8])/t[0],(1-t[9])/t[5])}(e.camera))),e.fragment.uniforms.add(new s.E("zScale",e=>0===e.camera.projectionMatrix[11]?(0,o.hZ)(h,0,1):(0,o.hZ)(h,1,0))),e.fragment.code.add(c.H`vec3 reconstructPosition(vec2 fragCoord, float depth) {
|
|
1293
|
+
return vec3((fragCoord * projInfo.xy + projInfo.zw) * (zScale.x * depth + zScale.y), depth);
|
|
1294
|
+
}`)}const d=(0,i.vt)(),h=(0,a.vt)()},58614(e,t,r){r.d(t,{S:()=>i}),r(28421);var o=r(20304),a=r(31821),n=r(49788);function i(e,t){!function(e,t,r){const o=e.fragment,i=t.alphaDiscardMode,s=0===i;2!==i&&3!==i||o.uniforms.add(r),o.code.add(a.H`
|
|
1295
|
+
void discardOrAdjustAlpha(inout vec4 color) {
|
|
1296
|
+
${1===i?"color.a = 1.0;":`if (color.a < ${s?a.H.float(n.Q):"textureAlphaCutoff"}) {\n discard;\n } ${(0,a.If)(2===i,"else { color.a = 1.0; }")}`}
|
|
1297
|
+
}
|
|
1298
|
+
`)}(e,t,new o.m("textureAlphaCutoff",e=>e.textureAlphaCutoff))}},26425(e,t,r){r.d(t,{u:()=>n});var o=r(33094),a=r(31821);function n(e){e.uniforms.add(new o.U("dpDummy",()=>1)).code.add(a.H`vec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {
|
|
1299
|
+
vec3 hiD = hiA + hiB;
|
|
1300
|
+
vec3 loD = loA + loB;
|
|
1301
|
+
return dpDummy * hiD + loD;
|
|
1302
|
+
}`)}},32976(e,t,r){r.d(t,{o:()=>a});var o=r(74333);class a extends o.n{constructor(e,t){super(e,"bool",0,(r,o)=>r.setUniform1b(e,t(o)))}}},40710(e,t,r){r.d(t,{W:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"vec3",2,(o,a,n,i)=>o.setUniform3fv(e,t(a,n,i),r))}}},33079(e,t,r){r.d(t,{t:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"vec3",1,(o,a,n)=>o.setUniform3fv(e,t(a,n),r))}}},28421(e,t,r){r.d(t,{J:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"float",2,(o,a,n)=>o.setUniform1f(e,t(a,n),r))}}},20304(e,t,r){r.d(t,{m:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"float",1,(o,a,n)=>o.setUniform1f(e,t(a,n),r))}}},98353(e,t,r){r.d(t,{h:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"mat3",2,(o,a,n)=>o.setUniformMatrix3fv(e,t(a,n),r))}}},15976(e,t,r){r.d(t,{o:()=>a});var o=r(74333);class a extends o.n{constructor(e,t,r){super(e,"sampler2D",2,(o,a,n)=>o.bindTexture(e,t(a,n),r?.(a,n)))}}},63761(e,t,r){r.d(t,{N:()=>a});var o=r(74333);class a extends o.n{constructor(e,t){super(e,"sampler2D",1,(r,o,a)=>r.bindTexture(e,t(o,a)))}}},31821(e,t,r){r.d(t,{H:()=>o,If:()=>a});const o=(e,...t)=>{let r="";for(let o=0;o<t.length;o++)r+=e[o]+t[o];return r+=e[e.length-1],r};function a(e,t,r=""){return e?t:r}o.int=e=>e.toFixed(),o.uint=e=>`${Math.max(0,e).toFixed()}u`,o.hexuint=e=>`0x${Math.round(Math.max(0,e)).toString(16)}u`,o.float=e=>e.toPrecision(8)},27832(e,t,r){r.d(t,{b:()=>n});var o=r(33094),a=r(31821);function n(e,t){t.snowCover&&(e.uniforms.add(new o.U("snowCover",e=>e.snowCover)).code.add(a.H`float getSnow(vec3 normal, vec3 groundNormal) {
|
|
1303
|
+
return smoothstep(0.5, 0.55, dot(normal, groundNormal)) * snowCover;
|
|
1304
|
+
}
|
|
1305
|
+
float getRealisticTreeSnow(vec3 faceNormal, vec3 shadingNormal, vec3 groundNormal) {
|
|
1306
|
+
float snow = min(1.0, smoothstep(0.5, 0.55, dot(faceNormal, groundNormal)) +
|
|
1307
|
+
smoothstep(0.5, 0.55, dot(-faceNormal, groundNormal)) +
|
|
1308
|
+
smoothstep(0.0, 0.1, dot(shadingNormal, groundNormal)));
|
|
1309
|
+
return snow * snowCover;
|
|
1310
|
+
}`),e.code.add(a.H`vec3 applySnowToMRR(vec3 mrr, float snow) {
|
|
1311
|
+
return mix(mrr, vec3(0.0, 1.0, 0.04), snow);
|
|
1312
|
+
}`))}},74810(e,t,r){r.d(t,{Bt:()=>s,Jr:()=>n,SY:()=>l,mb:()=>i});var o=r(35522),a=r(51850);function n({normalTexture:e,metallicRoughnessTexture:t,metallicFactor:r,roughnessFactor:n,emissiveTexture:i,emissiveFactor:s,occlusionTexture:l}){return null==e&&null==t&&null==i&&(null==s||(0,o.t2)(s,a.uY))&&null==l&&(null==n||1===n)&&(null==r||1===r)}const i=(0,a.CN)(1,1,.5),s=(0,a.CN)(0,.6,.2),l=(0,a.CN)(0,1,.2)},66211(e,t,r){function o(e,t){t.useFloatBlend?(e.constants.add("floatBlendOutputScale","float",1),e.constants.add("floatBlendInputScale","float",1)):(e.constants.add("floatBlendOutputScale","float",1/a),e.constants.add("floatBlendInputScale","float",a))}r.d(t,{H:()=>o,m:()=>a});const a=16},74333(e,t,r){r.d(t,{n:()=>o});class o{constructor(e,t,r,o,a=null){if(this.name=e,this.type=t,this.arraySize=a,this.bind={0:null,1:null,2:null},o)switch(r){case void 0:break;case 0:this.bind[0]=o;break;case 1:this.bind[1]=o;break;case 2:this.bind[2]=o}}equals(e){return this.type===e.type&&this.name===e.name&&this.arraySize===e.arraySize}}}}]);
|