@arcgis/core 5.1.0-next.72 → 5.1.0-next.74
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/featureset/sources/FeatureLayerDynamic.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{91a0227a64a944af3286.js → 003476e950bd27a2f884.js} +2 -2
- package/assets/esri/core/workers/chunks/{8a664451845a47048859.js → 0539b5d015157c1d34a0.js} +1 -1
- package/assets/esri/core/workers/chunks/{5a4d7ba6dc1d4b41d80d.js → 07eff82916681fcff069.js} +1 -1
- package/assets/esri/core/workers/chunks/{b801631b58e6fc6cec8a.js → 0ae360bf253adee46737.js} +1 -1
- 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/{b495f14d90abe8d1a558.js → 12e575a6d2b008b8fc2b.js} +1 -1
- package/assets/esri/core/workers/chunks/{61ef14e42bc09b787d89.js → 13e60f19f436b8d683ae.js} +1 -1
- package/assets/esri/core/workers/chunks/18f77ee3552d92962f15.js +1 -0
- package/assets/esri/core/workers/chunks/1a87e9bbd85ba29b1514.js +1 -0
- package/assets/esri/core/workers/chunks/{aa1a3a849aba84cf585b.js → 1db1656a033f3992f0d6.js} +1 -1
- package/assets/esri/core/workers/chunks/{b54b7cc6b23a70fed700.js → 1f8ccf96069ac3a40c3d.js} +1 -1
- package/assets/esri/core/workers/chunks/{cdf6ad970dc1893dac58.js → 24646a1176ce34039155.js} +1 -1
- package/assets/esri/core/workers/chunks/{93ceb74ac88ef460fe5f.js → 359d3acb3953e64e5a78.js} +1 -1
- package/assets/esri/core/workers/chunks/{b79058f5bda6fcac22f8.js → 37091cf498a16ccad7ff.js} +1 -1
- package/assets/esri/core/workers/chunks/{0839da55707f7c4cf780.js → 3b9100c59a8050f4834e.js} +1 -1
- 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/{260d4571722cb1ff1366.js → 484d6c1b0fe1633515b7.js} +1 -1
- package/assets/esri/core/workers/chunks/{0d96e39380fd84cea9ba.js → 4bbe684050b3b04681d0.js} +1 -1
- package/assets/esri/core/workers/chunks/{7e6ccf9f3e756186e93e.js → 4c13869d260a902d3014.js} +1 -1
- package/assets/esri/core/workers/chunks/4c97cc922eece3a91b6b.js +1 -0
- package/assets/esri/core/workers/chunks/{656d6963e8f837fbf28f.js → 54023458195549f66215.js} +1 -1
- package/assets/esri/core/workers/chunks/{02876e434dc91c42b2f4.js → 5476c2f7b83f4ccd0335.js} +1 -1
- package/assets/esri/core/workers/chunks/5511e640e171c294f52a.js +2 -0
- package/assets/esri/core/workers/chunks/{faad127dc07e54e7f6d1.js → 5abe34bb0110694f7b42.js} +1 -1
- package/assets/esri/core/workers/chunks/{c1838822b096d5f36a8b.js → 5b324e572737a308500d.js} +1 -1
- package/assets/esri/core/workers/chunks/6124141ac642e4ce1454.js +1 -0
- package/assets/esri/core/workers/chunks/{ae0a572cbbdd9815ee2e.js → 62b3e933f548ce354b99.js} +1 -1
- package/assets/esri/core/workers/chunks/6b66fc32451433129a88.js +1 -0
- package/assets/esri/core/workers/chunks/{6ea8b0d68881d16a2432.js → 6d25230dd85a4ba54c4f.js} +1 -1
- package/assets/esri/core/workers/chunks/6f7aaba26773fe416ac2.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/{1661684357912726a72a.js → 77dd719516138afb1a2a.js} +1 -1
- package/assets/esri/core/workers/chunks/{6f9ea461c268c421f9c9.js → 7951d93f5f15aa76f49c.js} +1 -1
- package/assets/esri/core/workers/chunks/{ce2aa75e084ee56f5e29.js → 7f55eef696e9ed717bfc.js} +1 -1
- 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/{b92794def31592a6a25f.js → 8d75f6f27c1c17c33992.js} +1 -1
- package/assets/esri/core/workers/chunks/{3cd9bd20e75ba4d5b294.js → 8f4cd30ce23e41c1a42c.js} +1 -1
- package/assets/esri/core/workers/chunks/95d82c619dcbec2e1050.js +1 -0
- package/assets/esri/core/workers/chunks/983f6c8727fd9484718e.js +1 -0
- package/assets/esri/core/workers/chunks/{5a83ea967ecde01d5622.js → 9be9ccce6369f67202bc.js} +1 -1
- package/assets/esri/core/workers/chunks/{628f56c09838eb9c573b.js → a270960d80d8344dd75f.js} +1 -1
- package/assets/esri/core/workers/chunks/{b475f5492c6e3fd4cca8.js → a36761e3122f70fbb3c9.js} +1 -1
- package/assets/esri/core/workers/chunks/{1edd39c7c4acdc591d10.js → a809b811121099a87a98.js} +1 -1
- package/assets/esri/core/workers/chunks/{47f2113357b2aa4f4f37.js → a9d2c83bb10b5ade0ca0.js} +1 -1
- package/assets/esri/core/workers/chunks/abdf146b35e179b5b245.js +1 -0
- package/assets/esri/core/workers/chunks/ad064583f8a836005098.js +1 -0
- package/assets/esri/core/workers/chunks/{d2aa75816e84b1e7fd25.js → afc0baf86ece710ef867.js} +1 -1
- package/assets/esri/core/workers/chunks/b858adff7043683fe41c.js +1 -0
- package/assets/esri/core/workers/chunks/{68b47a5a50e0b5fffca2.js → b905e637a67fbb7af4ae.js} +1 -1
- package/assets/esri/core/workers/chunks/{03894992558d063d0d5e.js → bab23b905678e42815e5.js} +1 -1
- package/assets/esri/core/workers/chunks/{6ef3b8d67b498d655a99.js → bcb021a167580bb1619f.js} +1 -1
- package/assets/esri/core/workers/chunks/be0341567bb19e101a4f.js +1 -0
- package/assets/esri/core/workers/chunks/bec3ee5ea945e1e07a35.js +1 -0
- package/assets/esri/core/workers/chunks/{a65d576e90179a2b5400.js → c5507480344176fad241.js} +1 -1
- package/assets/esri/core/workers/chunks/{d4a9eb4470cc6a1f67fc.js → c5f155fe114a2a05aaf2.js} +2 -2
- package/assets/esri/core/workers/chunks/{84772b023d04e415f17f.js → c61002a117dc2218d6af.js} +1 -1
- package/assets/esri/core/workers/chunks/c70df6ed190f9ebcf6aa.js +1 -0
- package/assets/esri/core/workers/chunks/{0dad0bca8d58b2c63d22.js → c804a66ef7615aa8de89.js} +1 -1
- package/assets/esri/core/workers/chunks/cd7159600ce132e32d04.js +1 -0
- package/assets/esri/core/workers/chunks/{dec6d41d614105e6fd93.js → d00dafad202450e6ee2e.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/d82da31dc702b8fd6a07.js +1 -0
- package/assets/esri/core/workers/chunks/dd4f431511edd975a53b.js +1 -0
- package/assets/esri/core/workers/chunks/{99101789035f1787c630.js → e785f76c1a75cb1d1e1f.js} +1 -1
- package/assets/esri/core/workers/chunks/f53805c7a84203305b2c.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/fb5a2205f05afc396119.js +1 -0
- package/assets/esri/widgets/Directions/t9n/Directions_ja.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +1 -1
- package/chunks/GlobalIllumination.glsl.js +186 -116
- package/chunks/GlobalIlluminationBlur.glsl.js +81 -61
- package/chunks/GlobalIlluminationUpscale.glsl.js +66 -0
- package/chunks/geometryEngineBase.js +1 -1
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/form/elements/FieldElement.d.ts +3 -2
- package/form/elements/FieldElement.js +1 -1
- package/form/elements/inputs/Input.d.ts +1 -1
- package/form/elements/inputs/MultipleChoiceInput.d.ts +65 -0
- package/form/elements/inputs/MultipleChoiceInput.js +2 -0
- package/form/elements/inputs/inputUtils.js +1 -1
- package/form/elements/inputs/multipleChoice/Choice.d.ts +30 -0
- package/form/elements/inputs/multipleChoice/Choice.js +2 -0
- package/form/elements/inputs/multipleChoice/OtherChoice.d.ts +28 -0
- package/form/elements/inputs/multipleChoice/OtherChoice.js +2 -0
- package/form/elements/inputs.d.ts +11 -2
- package/form/elements/inputs.js +1 -1
- package/form/support/formUtils.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/support/curves/densifyCurvedGeometry.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/geometry/support/normalizeUtilsCommon.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/interfaces.d.ts +28 -0
- package/kernel.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/IntegratedMeshLayer.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/support/SymbolLayerDrawing.d.ts +18 -4
- package/package.json +2 -2
- 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/third-party-notices.txt +7 -29
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/3d/camera/intersectionUtils.js +1 -1
- package/views/3d/environment/EnvironmentManager.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
- package/views/3d/layers/I3SMeshView3D.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/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/orientedBoundingBox.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/terrain/TerrainRenderer.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/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js +21 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadGlobalIllumination.glsl.js +11 -7
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +2 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlur.glsl.js +2 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlurTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationUpscale.glsl.js +2 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationUpscaleTechnique.js +2 -0
- package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl.js +1 -1
- package/views/SceneView.d.ts +1 -0
- package/views/draw/support/editingSessionUtils.js +2 -0
- package/views/interactive/sketch/SketchOptions.d.ts +3 -1
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +15 -1
- package/views/support/Scheduler.js +1 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/SingleFeatureInputAdapter.js +2 -0
- package/widgets/BatchAttributeForm/inputs/TextElementInput.d.ts +28 -4
- package/widgets/BatchAttributeForm/inputs/TextElementInput.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
- package/widgets/BatchAttributeForm/templates/AttachmentElementTemplate.js +2 -0
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/templateUtils.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/Search/support/layerSearchUtils.js +1 -1
- package/widgets/support/widgetUtils.js +1 -1
- package/assets/esri/core/workers/chunks/027c3ea756db68e51f0a.js +0 -1
- package/assets/esri/core/workers/chunks/0c00e5e4bd18467bcecd.js +0 -1
- package/assets/esri/core/workers/chunks/0ef93722524620023f69.js +0 -1
- package/assets/esri/core/workers/chunks/266ba61b72a278d93a26.js +0 -1
- package/assets/esri/core/workers/chunks/2abf124e2956e4f76688.js +0 -1
- package/assets/esri/core/workers/chunks/43678e08a3d9d51c2a6d.js +0 -1
- package/assets/esri/core/workers/chunks/5b278b9980752ef495a2.js +0 -1
- package/assets/esri/core/workers/chunks/5e59ff96aecdf2adcb3b.js +0 -1
- package/assets/esri/core/workers/chunks/74be994d789c57031631.js +0 -1
- package/assets/esri/core/workers/chunks/770880ad43f252962017.js +0 -1
- package/assets/esri/core/workers/chunks/81750c5177d8d52a3e05.js +0 -1
- package/assets/esri/core/workers/chunks/85edbb072a2ce6c1bb30.js +0 -2
- package/assets/esri/core/workers/chunks/943cf0653a2b7de16a4f.js +0 -1
- package/assets/esri/core/workers/chunks/a11f05ddd8314b648f76.js +0 -1
- package/assets/esri/core/workers/chunks/a37fc886227365f7ecd5.js +0 -1
- package/assets/esri/core/workers/chunks/af5db0372d526e592fcc.js +0 -1
- package/assets/esri/core/workers/chunks/bc53ce9a643f82d516c2.js +0 -1
- package/assets/esri/core/workers/chunks/bea70be8e38b8c83ccd2.js +0 -1
- package/assets/esri/core/workers/chunks/c3381b9a36299210ee47.js +0 -1
- package/assets/esri/core/workers/chunks/d0c3ab70f390cd579fed.js +0 -1
- package/assets/esri/core/workers/chunks/d8d7331600d93bbca2b4.js +0 -1
- package/assets/esri/core/workers/chunks/dca595fdd5e1a571e441.js +0 -1
- package/assets/esri/core/workers/chunks/de583214195eff13cb00.js +0 -1140
- package/assets/esri/core/workers/chunks/df8143b72ef94806c992.js +0 -1
- package/assets/esri/core/workers/chunks/ef013a77950c1902de11.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/3d/webgl-engine/core/shaderLibrary/shading/EncodingColor.glsl.js +0 -7
- package/views/3d/webgl-engine/shaders/GlobalIllumination.glsl.js +0 -2
- package/views/3d/webgl-engine/shaders/GlobalIlluminationBlur.glsl.js +0 -2
- /package/assets/esri/core/workers/chunks/{85edbb072a2ce6c1bb30.js.LICENSE.txt → 5511e640e171c294f52a.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{d4a9eb4470cc6a1f67fc.js.LICENSE.txt → c5f155fe114a2a05aaf2.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"widgetLabel":"Geoobjekttabell","header":"{title} (Totalt: {count} | Utvalg: {selected})","headerNoSelection":"{title} (Totalt: {count})","untitled":"Uten tittel","relatedRecords":"Relaterte poster","attachments":"Vedlegg","loading":"Laster inn...","syncing":"Synkroniserer...","errorData":"Datafeil.","errorLayer":"Lagfeil.","errorUpdateFailed":"Oppdateringen mislyktes.","errorDomainType":"Domenetypen støttes ikke.","show":"Vis","hide":"Skjul","menu":"Meny","options":"Alternativer","allColums":"Alle kolonner","sortAsc":"Sorter stigende","sortDesc":"Sorter synkende","toggleColumns":"Vis/skjul kolonner","clearSelection":"Tøm utvalg","centerOnSelection":"Sentrer på utvalg","showSelected":"Vis utvalg","filter":"Filter","addField":"Legg til felt","refreshData":"Oppdater data","date":"Dato","number":"Tall","string":"Streng","showAllRecords":"Vis alle","zoomToSelection":"Zoom til utvalg","deleteSelection":"Slett utvalg","deleteSelectionCount":"Slett utvalg: {count}","deleteRecordsRemoved":"Postene fjernes for godt.","keepRecords":"Behold poster","recordsCount":"Poster ({count})","noLayer":"Ikke noe lag","exitRelatedRecords":"Avslutt relaterte poster","showAllTables":"Vis alle tabeller","selectALayer":"Velg et lag","exportSelectionCSV":"Eksporter utvalg til CSV","noValue":"Ingen verdi","editingPreventedColumn":"Redigering er forhindret for celler i denne kolonnen.","subtypes":{"changeWarning":"Undertypen {newType} kan ha forskjellige standardverier enn {originalType}. Hvis du beholder de nåværende verdiene, kan det føre til uventede resultater.","changeWarningTitle":"Undertype endret","useDefaultValuesOption":"Bruk standardverdier","keepCurrentValuesOption":"Behold gjeldende verdier","unsupportedDomainGroupTitle":"Ikke støttet","fieldOutOfSubtypeDomainWarning":"Feltets verdi er utenfor området for dets domene."},"addAttachment":"Legg til vedlegg","attachmentsCount":"Vedlegg ({count})","attachmentThumbnail":"Miniatyrbilde for vedlegg","attachmentType":"Vedleggstype","deleteAttachment":"Slett vedlegg","deleteAttachmentConfirmation":"Er du sikker på at du vil slette vedleggene?","deleteAttachmentCount":"Slett vedlegg ({count})","download":"Last ned","downloadAttachment":"Last ned vedlegg","dragAndDropToUpload":"Dra og slipp filen for å laste opp et vedlegg.","editingDisabled":"Redigering er deaktivert","editingRestricted":"Redigering er begrenset","errorFileName":"Opplastingen mislyktes. Filnavnet er for langt.","errorFileSize":"Opplastingen mislyktes. Filen er for stor","errorFileUnsupported":"Opplastingen mislyktes. Filtypen støttes ikke","errorOccured":"Det oppstod en feil","exitAttachments":"Gå ut av vedleggsvisning","fileName":"Filnavn","keyword":"Nøkkelord","maximize":"Maksimer","noAttachments":"Det er ingen vedlegg","noDataFound":"Finner ingen data","noFeature":"Ingen geoobjekt oppgitt","noPreviewAvailable":"Forhåndsvisning er ikke tilgjengelig","replace":"Erstatt","replaceFile":"Erstatt fil","scrollToFeature":"Rull til geoobjekt","selectedCount":"Valgte: {count}","selectFile":"Velg fil","size":"Størrelse","updateAttachment":"Oppdater vedlegg","viewAttachment":"Vis vedlegg","viewAttachments":"Vis vedlegg","viewDetails":"Vis detaljer","attachmentTypes":{"application":"Applikasjon","audio":"Lyd","document":"Dokument","image":"Bilde","model":"Modell","text":"Tekst","unknown":"Ukjent","video":"Video"},"menuText":{"columnVisibility":"å_Column visibility__________________ø","default":"Standard","deselectAll":"Fjern merkingen på alle","displayName":"Visningsnavn","fieldName":"
|
|
1
|
+
{"widgetLabel":"Geoobjekttabell","header":"{title} (Totalt: {count} | Utvalg: {selected})","headerNoSelection":"{title} (Totalt: {count})","untitled":"Uten tittel","relatedRecords":"Relaterte poster","attachments":"Vedlegg","loading":"Laster inn...","syncing":"Synkroniserer...","errorData":"Datafeil.","errorLayer":"Lagfeil.","errorUpdateFailed":"Oppdateringen mislyktes.","errorDomainType":"Domenetypen støttes ikke.","show":"Vis","hide":"Skjul","menu":"Meny","options":"Alternativer","allColums":"Alle kolonner","sortAsc":"Sorter stigende","sortDesc":"Sorter synkende","toggleColumns":"Vis/skjul kolonner","clearSelection":"Tøm utvalg","centerOnSelection":"Sentrer på utvalg","showSelected":"Vis utvalg","filter":"Filter","addField":"Legg til felt","refreshData":"Oppdater data","date":"Dato","number":"Tall","string":"Streng","showAllRecords":"Vis alle","zoomToSelection":"Zoom til utvalg","deleteSelection":"Slett utvalg","deleteSelectionCount":"Slett utvalg: {count}","deleteRecordsRemoved":"Postene fjernes for godt.","keepRecords":"Behold poster","recordsCount":"Poster ({count})","noLayer":"Ikke noe lag","exitRelatedRecords":"Avslutt relaterte poster","showAllTables":"Vis alle tabeller","selectALayer":"Velg et lag","exportSelectionCSV":"Eksporter utvalg til CSV","noValue":"Ingen verdi","editingPreventedColumn":"Redigering er forhindret for celler i denne kolonnen.","subtypes":{"changeWarning":"Undertypen {newType} kan ha forskjellige standardverier enn {originalType}. Hvis du beholder de nåværende verdiene, kan det føre til uventede resultater.","changeWarningTitle":"Undertype endret","useDefaultValuesOption":"Bruk standardverdier","keepCurrentValuesOption":"Behold gjeldende verdier","unsupportedDomainGroupTitle":"Ikke støttet","fieldOutOfSubtypeDomainWarning":"Feltets verdi er utenfor området for dets domene."},"addAttachment":"Legg til vedlegg","attachmentsCount":"Vedlegg ({count})","attachmentThumbnail":"Miniatyrbilde for vedlegg","attachmentType":"Vedleggstype","deleteAttachment":"Slett vedlegg","deleteAttachmentConfirmation":"Er du sikker på at du vil slette vedleggene?","deleteAttachmentCount":"Slett vedlegg ({count})","download":"Last ned","downloadAttachment":"Last ned vedlegg","dragAndDropToUpload":"Dra og slipp filen for å laste opp et vedlegg.","editingDisabled":"Redigering er deaktivert","editingRestricted":"Redigering er begrenset","errorFileName":"Opplastingen mislyktes. Filnavnet er for langt.","errorFileSize":"Opplastingen mislyktes. Filen er for stor","errorFileUnsupported":"Opplastingen mislyktes. Filtypen støttes ikke","errorOccured":"Det oppstod en feil","exitAttachments":"Gå ut av vedleggsvisning","fileName":"Filnavn","keyword":"Nøkkelord","maximize":"Maksimer","noAttachments":"Det er ingen vedlegg","noDataFound":"Finner ingen data","noFeature":"Ingen geoobjekt oppgitt","noPreviewAvailable":"Forhåndsvisning er ikke tilgjengelig","replace":"Erstatt","replaceFile":"Erstatt fil","scrollToFeature":"Rull til geoobjekt","selectedCount":"Valgte: {count}","selectFile":"Velg fil","size":"Størrelse","updateAttachment":"Oppdater vedlegg","viewAttachment":"Vis vedlegg","viewAttachments":"Vis vedlegg","viewDetails":"Vis detaljer","attachmentTypes":{"application":"Applikasjon","audio":"Lyd","document":"Dokument","image":"Bilde","model":"Modell","text":"Tekst","unknown":"Ukjent","video":"Video"},"menuText":{"columnVisibility":"å_Column visibility__________________ø","default":"Standard","deselectAll":"Fjern merkingen på alle","displayName":"Visningsnavn","fieldName":"Feltnavn","fieldVisibility":"Feltsynlighet","filterFields":"Filtrer felter","orderBy":"Sorter etter","searchFields":"å_Search fields______________ø","selectAll":"Velg alle","type":"Type"},"contingentValues":{"hasInvalidValues":"Velg en gyldig verdikombinasjon for å aktivere lagring.","hasValidValues":"Verdikombinasjonen er gyldig. Lagring er aktivert.","other":"Annet","recommended":"Anbefalt"}}
|
|
@@ -1,117 +1,187 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
float
|
|
11
|
-
float
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{addMainLightDirection as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceReflections as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceReflections.glsl.js";import{CameraSpace as a}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r,If as n}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ColorAttachment1 as u}from"../views/webgl/enums.js";import{NoParameters as d}from"../views/webgl/NoParameters.js";import{ShaderBuilder as p}from"../views/webgl/ShaderBuilder.js";const h=.01,f=.008,g=.002,v=.5,x=.02,b=.1,w=.008,D=.012,S=.008,y=40,F=.095,j=.008,z=60,I=2,B=.0039,G=.25;class M extends d{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.frameCount=0}}function W(d){const M=new p,W=M.fragment;return M.include(e),M.include(a),i(W),W.include(t),M.include(o,{highStepCount:!1,screenSpaceReflections:!0}),W.uniforms.add(new m("normalMap",e=>e.normalTexture),new m("depthMap",e=>e.depthTexture),new m("lastFrameDepthTexture",(e,t)=>t.reprojection.lastFrameDepth?.attachment),new c("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new c("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(u)),new s("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new s("view",e=>e.camera.viewMatrix),new l("accumulatedFramesGI",e=>e.accumulatedFrames),new l("frameCount",e=>e.frameCount),new l("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new m("blueNoiseTex",e=>e.noiseTexture)),d.hasEmission&&W.uniforms.add(new m("lastFrameEmissionTexture",(e,t)=>t.reprojection.lastFrameEmission?.attachment)),W.constants.add("timeSamplesSize","float",64),W.constants.add("blueNoiseGridSize","float",8),W.code.add(r`
|
|
3
|
+
float computeIdleEmissionBlendWeight(float accumulatedFrames) {
|
|
4
|
+
float idleEmissionBlendProgress = clamp(
|
|
5
|
+
accumulatedFrames / ${r.float(y)},
|
|
6
|
+
0.0,
|
|
7
|
+
1.0
|
|
8
|
+
);
|
|
9
|
+
return mix(
|
|
10
|
+
${r.float(D)},
|
|
11
|
+
${r.float(S)},
|
|
12
|
+
idleEmissionBlendProgress
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
float computeIdleOcclusionBlendWeight(float accumulatedFrames) {
|
|
17
|
+
float idleOcclusionBlendProgress = clamp(
|
|
18
|
+
accumulatedFrames / ${r.float(z)},
|
|
19
|
+
0.0,
|
|
20
|
+
1.0
|
|
21
|
+
);
|
|
22
|
+
return mix(
|
|
23
|
+
${r.float(F)},
|
|
24
|
+
${r.float(j)},
|
|
25
|
+
pow(idleOcclusionBlendProgress, ${r.float(I)})
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Blue noise value based on a texture lookup
|
|
30
|
+
vec4 randomDirection(float index) {
|
|
31
|
+
vec2 textureOffset = vec2(mod(index, blueNoiseGridSize), floor(index / blueNoiseGridSize)) * timeSamplesSize;
|
|
32
|
+
vec2 noiseCoord = textureOffset + mod(
|
|
33
|
+
floor(uv * vec2(textureSize(normalMap, 0)) * scaleGlobalIllumination),
|
|
34
|
+
vec2(timeSamplesSize)
|
|
35
|
+
);
|
|
36
|
+
vec4 blueNoiseValue = texelFetch(blueNoiseTex, ivec2(noiseCoord), 0);
|
|
37
|
+
|
|
38
|
+
return 2.0 * blueNoiseValue - 1.0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
bool isEdgeDepth(float centerDepth, vec2 sampleUv) {
|
|
42
|
+
vec2 texelSize = 1.0 / vec2(textureSize(depthMap, 0));
|
|
43
|
+
float depthLeft = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(-texelSize.x, 0.0)));
|
|
44
|
+
float depthRight = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(texelSize.x, 0.0)));
|
|
45
|
+
float depthUp = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(0.0, texelSize.y)));
|
|
46
|
+
float depthDown = linearizeDepth(depthFromTexture(depthMap, sampleUv + vec2(0.0, -texelSize.y)));
|
|
47
|
+
|
|
48
|
+
float maxDifference = max(max(abs(centerDepth - depthLeft), abs(centerDepth - depthRight)), max(abs(centerDepth - depthUp), abs(centerDepth - depthDown)));
|
|
49
|
+
|
|
50
|
+
return abs(maxDifference / centerDepth) > 0.01;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
vec3 sampleCosineHemisphere(vec2 u) {
|
|
54
|
+
float phi = 6.28318530718 * u.x;
|
|
55
|
+
float radius = sqrt(u.y);
|
|
56
|
+
float x = radius * cos(phi);
|
|
57
|
+
float y = radius * sin(phi);
|
|
58
|
+
float z = sqrt(max(0.0, 1.0 - u.y));
|
|
59
|
+
|
|
60
|
+
return vec3(x, y, z);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mat3 basisFromNormal(vec3 n) {
|
|
64
|
+
vec3 up = abs(n.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
|
|
65
|
+
vec3 tangent = normalize(cross(up, n));
|
|
66
|
+
vec3 bitangent = cross(n, tangent);
|
|
67
|
+
|
|
68
|
+
return mat3(tangent, bitangent, n);
|
|
69
|
+
}
|
|
70
|
+
`),M.outputs.add("fragGlobalIllumination","vec4",0),M.outputs.add("fragWeight","float",1),W.main.add(r`
|
|
71
|
+
float depth = depthFromTexture(depthMap, uv);
|
|
72
|
+
|
|
73
|
+
// Early out if depth is out of range, such as in the sky
|
|
74
|
+
if (depth >= 1.0 || depth <= 0.0) {
|
|
75
|
+
fragGlobalIllumination = vec4(0.0, 0.0, 0.0, 1.0);
|
|
76
|
+
fragWeight = 0.0;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Get the normal of current fragment
|
|
81
|
+
ivec2 iuv = ivec2(uv * vec2(textureSize(normalMap, 0)));
|
|
82
|
+
vec4 normal4 = texelFetch(normalMap, iuv, 0);
|
|
83
|
+
if (normal4.a != 1.0) {
|
|
84
|
+
fragGlobalIllumination = vec4(0.0, 0.0, 0.0, 1.0);
|
|
85
|
+
fragWeight = 0.0;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
vec3 normal = normalize(normal4.xyz * 2.0 - 1.0);
|
|
89
|
+
|
|
90
|
+
// Reconstruct view space position of current fragment
|
|
91
|
+
float currentPixelDepth = linearizeDepth(depth);
|
|
92
|
+
vec3 currentPixelPos = reconstructPosition(uv * vec2(textureSize(normalMap, 0)), currentPixelDepth);
|
|
93
|
+
vec4 viewPos = vec4(currentPixelPos, 1.0);
|
|
94
|
+
|
|
95
|
+
// Reproject current view position to last frame
|
|
96
|
+
vec4 reprojectedViewPos = reprojectionViewMatrix * viewPos;
|
|
97
|
+
vec4 reprojectedCoordinate = applyProjectionMat(proj, reprojectedViewPos.xyz);
|
|
98
|
+
|
|
99
|
+
// Read last frame reprojected depth and GI value.
|
|
100
|
+
float lastFrameDepthViewPos = -linearDepthFromTextureLastFrame(lastFrameDepthTexture, reprojectedCoordinate.xy);
|
|
101
|
+
vec4 lastFrameGlobalIllumination = texture(lastFrameGlobalIlluminationTexture, reprojectedCoordinate.xy);
|
|
102
|
+
float historyOcclusionBlendWeight = texture(lastFrameGlobalIlluminationWeightTexture, reprojectedCoordinate.xy).r;
|
|
103
|
+
|
|
104
|
+
int steps;
|
|
105
|
+
float occlusionBlendWeight = 1.0;
|
|
106
|
+
float emissionBlendWeight = 1.0;
|
|
107
|
+
float idleEmissionBlendWeight = computeIdleEmissionBlendWeight(accumulatedFramesGI);
|
|
108
|
+
float idleOcclusionBlendWeight = computeIdleOcclusionBlendWeight(accumulatedFramesGI);
|
|
109
|
+
float reprojectionDepthMismatch = abs((lastFrameDepthViewPos + reprojectedViewPos.z) / max(lastFrameDepthViewPos, reprojectedViewPos.z));
|
|
110
|
+
bool hasReprojectionMismatch = reprojectionDepthMismatch > ${r.float(h)};
|
|
111
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
112
|
+
bool isLowQualityEdgePixel = isScaledGlobalIllumination && isEdgeDepth(currentPixelDepth, uv);
|
|
113
|
+
bool resetEmissionHistory = false;
|
|
114
|
+
|
|
115
|
+
// Heuristic to determine blending weights and number of steps for occlusion and emission
|
|
116
|
+
if (hasReprojectionMismatch) {
|
|
117
|
+
if (isLowQualityEdgePixel) {
|
|
118
|
+
steps = 1;
|
|
119
|
+
occlusionBlendWeight = ${r.float(f)};
|
|
120
|
+
resetEmissionHistory = true;
|
|
121
|
+
} else {
|
|
122
|
+
steps = 6;
|
|
123
|
+
occlusionBlendWeight = 1.0;
|
|
124
|
+
resetEmissionHistory = true;
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
steps = 1;
|
|
128
|
+
if (historyOcclusionBlendWeight > ${r.float(v)}) {
|
|
129
|
+
occlusionBlendWeight = ${r.float(b)};
|
|
130
|
+
emissionBlendWeight = ${r.float(w)};
|
|
131
|
+
} else if (historyOcclusionBlendWeight > ${r.float(x)}) {
|
|
132
|
+
occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
|
|
133
|
+
emissionBlendWeight = ${r.float(w)};
|
|
134
|
+
} else {
|
|
135
|
+
occlusionBlendWeight = isScaledGlobalIllumination ? ${r.float(f)} : idleOcclusionBlendWeight;
|
|
136
|
+
emissionBlendWeight = isScaledGlobalIllumination ? ${r.float(g)} : idleEmissionBlendWeight;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
vec4 randomDirectionSample;
|
|
141
|
+
mat3 normalBasis = basisFromNormal(normal);
|
|
142
|
+
int temporalSampleStride = min(64 / steps, 6);
|
|
143
|
+
float temporalFrameOffset = mod(frameCount, float(64 / steps));
|
|
144
|
+
|
|
145
|
+
// For each ray determine if it hits geometry and calculate occlusion and emission values
|
|
146
|
+
float stepSize = 1.0 / float(steps);
|
|
147
|
+
for (int i = 0; i < steps; ++i) {
|
|
148
|
+
float sampleIndex = float(i * temporalSampleStride + int(temporalFrameOffset));
|
|
149
|
+
randomDirectionSample = randomDirection(sampleIndex);
|
|
150
|
+
vec2 hemisphereSample = randomDirectionSample.rg * 0.5 + 0.5;
|
|
151
|
+
vec3 rayDirection = normalBasis * sampleCosineHemisphere(hemisphereSample);
|
|
152
|
+
vec3 hit = screenSpaceIntersection(rayDirection, viewPos.xyz, normalize(viewPos.xyz), normal, randomDirectionSample.a * 0.5 + 0.5, true);
|
|
153
|
+
|
|
154
|
+
if (hit.z > 0.0) {
|
|
155
|
+
// Emission - reproject to get and accumulate emission from last frame
|
|
156
|
+
vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
|
|
157
|
+
vec3 emissionColor = ${n(d.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
|
|
158
|
+
|
|
159
|
+
fragGlobalIllumination.rgb += emissionColor * stepSize;
|
|
160
|
+
} else {
|
|
161
|
+
// Occlusion - heuristic modulating sky intensity based on angle to main light
|
|
162
|
+
vec4 viewMainLightDirection = view * vec4(mainLightDirection, 0.0);
|
|
163
|
+
float skyModulation = pow(max(dot(rayDirection, viewMainLightDirection.xyz), 0.0), 3.0) * 5.5;
|
|
164
|
+
float skyFacingWeight = clamp(3.5 * dot(viewMainLightDirection.xyz, normal), 0.0, 1.0);
|
|
165
|
+
skyModulation = mix(1.0, skyModulation * 0.2 + 0.8, skyFacingWeight);
|
|
166
|
+
fragGlobalIllumination.a += skyModulation * stepSize;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Rendering trick add noise to reduce accumulation artifacts
|
|
171
|
+
float accumulationDither = occlusionBlendWeight < 1.0
|
|
172
|
+
? randomDirectionSample.b * ${r.float(B)}
|
|
173
|
+
: 0.0;
|
|
174
|
+
|
|
175
|
+
// Accumulate occlusion
|
|
176
|
+
// Accumulate emission
|
|
177
|
+
vec3 lastFrameEmission = lastFrameGlobalIllumination.rgb;
|
|
178
|
+
float emissionDitherScale = isScaledGlobalIllumination ? ${r.float(G)} : 1.0;
|
|
179
|
+
fragGlobalIllumination.rgb = resetEmissionHistory
|
|
180
|
+
? vec3(0.0)
|
|
181
|
+
: mix(lastFrameEmission + accumulationDither * emissionDitherScale, fragGlobalIllumination.rgb, emissionBlendWeight);
|
|
182
|
+
|
|
183
|
+
// Accumulate occlusion
|
|
184
|
+
fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
|
|
185
|
+
|
|
186
|
+
fragWeight = occlusionBlendWeight;
|
|
187
|
+
`),M}const P=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:M,build:W},Symbol.toStringTag,{value:"Module"}));export{M as G,P as a,W as b};
|
|
@@ -1,68 +1,88 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{BooleanBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/BooleanBindUniform.js";import{Float2DrawUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as c}from"../views/webgl/NoParameters.js";import{ShaderBuilder as p}from"../views/webgl/ShaderBuilder.js";const h=4;class f extends c{constructor(){super(...arguments),this.blurSize=e()}}function d(){const e=new p,c=e.fragment;e.include(l),e.include(t),e.include(i);const f=(h+3)/2,d=1/(2*f*f);c.include(o);const g=5e4;c.uniforms.add(new a("hasEmission",e=>e.hasEmission),new u("depthMap",e=>e.depthTexture),new u("normalMap",e=>e.normalTexture),new m("globalIlluminationTexture",e=>e.texture),new m("globalIlluminationWeightTexture",e=>e.weightTexture),new s("blurSize",e=>e.blurSize),new n("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new n("projScale",(e,l)=>{const o=l.camera.distance;return o>g?Math.max(0,e.projScale-(o-g)):e.projScale}));const b=.1,S=400,v=.03,w=.08,W=1.5;return c.code.add(r`
|
|
3
|
+
void accumulateBlurSample(
|
|
4
|
+
vec2 sampleUv,
|
|
5
|
+
float sampleOffset,
|
|
6
|
+
float centerDepth,
|
|
7
|
+
vec3 centerNormal,
|
|
8
|
+
float depthSharpness,
|
|
9
|
+
bool skipOcclusionBlur,
|
|
10
|
+
inout float emissionWeightSum,
|
|
11
|
+
inout vec3 emissionSum,
|
|
12
|
+
inout float occlusionWeightSum,
|
|
13
|
+
inout float occlusionSum,
|
|
14
|
+
float centerOcclusionBlendWeight
|
|
15
|
+
) {
|
|
16
|
+
vec4 sampleGlobalIllumination = texture(globalIlluminationTexture, sampleUv);
|
|
17
|
+
vec3 sampleNormal = texture(normalMap, sampleUv).rgb;
|
|
18
|
+
float sampleDepth = linearDepthFromTexture(depthMap, sampleUv);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
float depthDelta = sampleDepth - centerDepth;
|
|
21
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
22
|
+
float normalSimilarityWeight = globalIlluminationNormalSimilarityWeight(sampleNormal, centerNormal);
|
|
23
|
+
float depthNormalCorrection = globalIlluminationDepthNormalCorrection(sampleNormal);
|
|
24
|
+
vec3 emission = sampleGlobalIllumination.rgb;
|
|
25
|
+
float emissionSpatialWeightMultiplier = isScaledGlobalIllumination ? ${r.float(S)} : 1.0;
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
float emissionWeight = exp(
|
|
28
|
+
-sampleOffset * sampleOffset * ${r.float(d)} * ${r.float(b)} * emissionSpatialWeightMultiplier
|
|
29
|
+
- depthDelta * depthDelta * depthSharpness * depthNormalCorrection
|
|
30
|
+
);
|
|
31
|
+
emissionWeight *= normalSimilarityWeight;
|
|
32
|
+
emissionWeightSum += emissionWeight;
|
|
33
|
+
emissionSum += emissionWeight * emission;
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
float occlusionWeight = exp(-sampleOffset * sampleOffset * occlusionKernelScale - depthDelta * depthDelta * depthSharpness);
|
|
32
|
-
occlusionWeight *= normalWeight;
|
|
33
|
-
occlusionWeightSum += occlusionWeight;
|
|
34
|
-
occlusionSum += occlusionWeight * globalIllumination.a;
|
|
35
|
-
}
|
|
36
|
-
`);const W=-.05;return m.main.add(r`
|
|
37
|
-
vec3 emissionSum = vec3(0.0);
|
|
38
|
-
float emissionWeightSum = 0.0;
|
|
35
|
+
if (skipOcclusionBlur) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
float occlusionSpatialKernelScale = centerOcclusionBlendWeight > ${r.float(v)}
|
|
40
|
+
? ${r.float(w)}
|
|
41
|
+
: ${r.float(W)};
|
|
42
|
+
float occlusionWeight = exp(-sampleOffset * sampleOffset * occlusionSpatialKernelScale - depthDelta * depthDelta * depthSharpness);
|
|
43
|
+
occlusionWeight *= normalSimilarityWeight;
|
|
44
|
+
occlusionWeightSum += occlusionWeight;
|
|
45
|
+
occlusionSum += occlusionWeight * sampleGlobalIllumination.a;
|
|
46
|
+
}
|
|
47
|
+
`),c.main.add(r`
|
|
48
|
+
vec3 emissionSum = vec3(0.0);
|
|
49
|
+
float emissionWeightSum = 0.0;
|
|
45
50
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
depthSharpness,
|
|
56
|
-
emissionWeightSum,
|
|
57
|
-
emissionSum,
|
|
58
|
-
occlusionWeightSum,
|
|
59
|
-
occlusionSum,
|
|
60
|
-
centerOcclusionWeight
|
|
61
|
-
);
|
|
62
|
-
}
|
|
51
|
+
vec4 centerGlobalIllumination = texture(globalIlluminationTexture, uv);
|
|
52
|
+
float centerOcclusionBlendWeight = texture(globalIlluminationWeightTexture, uv).r;
|
|
53
|
+
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
54
|
+
bool shouldReuseCenterOcclusion = isScaledGlobalIllumination && centerOcclusionBlendWeight <= ${r.float(v)};
|
|
55
|
+
bool shouldSkipLowQualityBlur = !hasEmission && shouldReuseCenterOcclusion;
|
|
56
|
+
if (shouldSkipLowQualityBlur) {
|
|
57
|
+
fragColor = centerGlobalIllumination;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
float centerDepth = linearDepthFromTexture(depthMap, uv);
|
|
62
|
+
vec3 centerNormal = texture(normalMap, uv).rgb;
|
|
63
|
+
float occlusionSum = 0.0;
|
|
64
|
+
float occlusionWeightSum = 0.0;
|
|
65
|
+
|
|
66
|
+
float depthSharpness = globalIlluminationDepthSharpness(projScale, centerDepth);
|
|
67
|
+
for (int sampleOffset = -${r.int(h)}; sampleOffset <= ${r.int(h)}; ++sampleOffset) {
|
|
68
|
+
float sampleOffsetFloat = float(sampleOffset);
|
|
69
|
+
vec2 sampleUv = uv + sampleOffsetFloat * blurSize;
|
|
70
|
+
accumulateBlurSample(
|
|
71
|
+
sampleUv,
|
|
72
|
+
sampleOffsetFloat,
|
|
73
|
+
centerDepth,
|
|
74
|
+
centerNormal,
|
|
75
|
+
depthSharpness,
|
|
76
|
+
shouldReuseCenterOcclusion,
|
|
77
|
+
emissionWeightSum,
|
|
78
|
+
emissionSum,
|
|
79
|
+
occlusionWeightSum,
|
|
80
|
+
occlusionSum,
|
|
81
|
+
centerOcclusionBlendWeight
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
vec3 blurredEmission = (emissionSum / emissionWeightSum).rgb;
|
|
86
|
+
float occlusion = shouldReuseCenterOcclusion ? centerGlobalIllumination.a : occlusionSum / occlusionWeightSum;
|
|
87
|
+
fragColor = vec4(blurredEmission, occlusion);
|
|
88
|
+
`),e}const g=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationBlurDrawParameters:f,build:d},Symbol.toStringTag,{value:"Module"}));export{f as G,g as a,d as b};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as h}from"../views/webgl/NoParameters.js";import{ShaderBuilder as u}from"../views/webgl/ShaderBuilder.js";const s=5e4;class m extends h{}function c(){const h=new u,m=h.fragment;return h.include(e),h.include(r),h.include(l),m.include(t),m.uniforms.add(new n("depthMap",e=>e.depthTexture),new n("normalMap",e=>e.normalTexture),new o("tex",e=>e.colorTexture),new o("globalIlluminationWeightTexture",e=>e.weightTexture),new a("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new a("projScale",(e,t)=>{const l=t.camera.distance;return l>s?Math.max(0,e.projScale-(l-s)):e.projScale})),m.code.add(i`float computeDepthWeight(float sampleDepth, float centerDepth, float depthSharpness) {
|
|
3
|
+
float depthDelta = abs(sampleDepth - centerDepth);
|
|
4
|
+
return exp(-0.08 - depthDelta * depthDelta * depthSharpness);
|
|
5
|
+
}
|
|
6
|
+
vec3 normalFromTexture(sampler2D normalTexture, vec2 uv) {
|
|
7
|
+
ivec2 normalTextureSize = textureSize(normalTexture, 0);
|
|
8
|
+
ivec2 normalTexel = clamp(ivec2(uv * vec2(normalTextureSize)), ivec2(0), normalTextureSize - ivec2(1));
|
|
9
|
+
return texelFetch(normalTexture, normalTexel, 0).xyz;
|
|
10
|
+
}
|
|
11
|
+
void sampleJointBilateralUpscale(vec2 sampleUv, out vec4 upscaledColor, out float upscaledWeight) {
|
|
12
|
+
float centerDepth = linearDepthFromTexture(depthMap, sampleUv);
|
|
13
|
+
vec3 centerNormal = normalFromTexture(normalMap, sampleUv);
|
|
14
|
+
float depthSharpness = globalIlluminationDepthSharpness(projScale, centerDepth, centerNormal);
|
|
15
|
+
vec2 lowResTextureSize = vec2(textureSize(tex, 0));
|
|
16
|
+
vec2 texelPosition = sampleUv * lowResTextureSize - 0.5;
|
|
17
|
+
vec2 texelBase = floor(texelPosition);
|
|
18
|
+
vec2 bilinearWeightsFraction = fract(texelPosition);
|
|
19
|
+
vec2 uv00 = (texelBase + vec2(0.5, 0.5)) / lowResTextureSize;
|
|
20
|
+
vec2 uv10 = (texelBase + vec2(1.5, 0.5)) / lowResTextureSize;
|
|
21
|
+
vec2 uv01 = (texelBase + vec2(0.5, 1.5)) / lowResTextureSize;
|
|
22
|
+
vec2 uv11 = (texelBase + vec2(1.5, 1.5)) / lowResTextureSize;
|
|
23
|
+
vec4 color00 = texture(tex, uv00);
|
|
24
|
+
vec4 color10 = texture(tex, uv10);
|
|
25
|
+
vec4 color01 = texture(tex, uv01);
|
|
26
|
+
vec4 color11 = texture(tex, uv11);
|
|
27
|
+
float weight00 = texture(globalIlluminationWeightTexture, uv00).r;
|
|
28
|
+
float weight10 = texture(globalIlluminationWeightTexture, uv10).r;
|
|
29
|
+
float weight01 = texture(globalIlluminationWeightTexture, uv01).r;
|
|
30
|
+
float weight11 = texture(globalIlluminationWeightTexture, uv11).r;
|
|
31
|
+
float depth00 = linearDepthFromTexture(depthMap, uv00);
|
|
32
|
+
float depth10 = linearDepthFromTexture(depthMap, uv10);
|
|
33
|
+
float depth01 = linearDepthFromTexture(depthMap, uv01);
|
|
34
|
+
float depth11 = linearDepthFromTexture(depthMap, uv11);
|
|
35
|
+
vec3 normal00 = normalFromTexture(normalMap, uv00);
|
|
36
|
+
vec3 normal10 = normalFromTexture(normalMap, uv10);
|
|
37
|
+
vec3 normal01 = normalFromTexture(normalMap, uv01);
|
|
38
|
+
vec3 normal11 = normalFromTexture(normalMap, uv11);
|
|
39
|
+
float bilinearWeight00 = (1.0 - bilinearWeightsFraction.x) * (1.0 - bilinearWeightsFraction.y);
|
|
40
|
+
float bilinearWeight10 = bilinearWeightsFraction.x * (1.0 - bilinearWeightsFraction.y);
|
|
41
|
+
float bilinearWeight01 = (1.0 - bilinearWeightsFraction.x) * bilinearWeightsFraction.y;
|
|
42
|
+
float bilinearWeight11 = bilinearWeightsFraction.x * bilinearWeightsFraction.y;
|
|
43
|
+
float jointBilateralWeight00 = bilinearWeight00 * computeDepthWeight(depth00, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal00, centerNormal);
|
|
44
|
+
float jointBilateralWeight10 = bilinearWeight10 * computeDepthWeight(depth10, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal10, centerNormal);
|
|
45
|
+
float jointBilateralWeight01 = bilinearWeight01 * computeDepthWeight(depth01, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal01, centerNormal);
|
|
46
|
+
float jointBilateralWeight11 = bilinearWeight11 * computeDepthWeight(depth11, centerDepth, depthSharpness) * globalIlluminationNormalSimilarityWeight(normal11, centerNormal);
|
|
47
|
+
float jointBilateralWeightSum = jointBilateralWeight00 + jointBilateralWeight10 + jointBilateralWeight01 + jointBilateralWeight11;
|
|
48
|
+
if (jointBilateralWeightSum < 0.0001) {
|
|
49
|
+
vec2 nearestUv = (floor(texelPosition + 0.5) + vec2(0.5)) / lowResTextureSize;
|
|
50
|
+
upscaledColor = texture(tex, nearestUv);
|
|
51
|
+
upscaledWeight = texture(globalIlluminationWeightTexture, nearestUv).r;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
upscaledColor = (
|
|
55
|
+
color00 * jointBilateralWeight00 +
|
|
56
|
+
color10 * jointBilateralWeight10 +
|
|
57
|
+
color01 * jointBilateralWeight01 +
|
|
58
|
+
color11 * jointBilateralWeight11
|
|
59
|
+
) / jointBilateralWeightSum;
|
|
60
|
+
upscaledWeight = (
|
|
61
|
+
weight00 * jointBilateralWeight00 +
|
|
62
|
+
weight10 * jointBilateralWeight10 +
|
|
63
|
+
weight01 * jointBilateralWeight01 +
|
|
64
|
+
weight11 * jointBilateralWeight11
|
|
65
|
+
) / jointBilateralWeightSum;
|
|
66
|
+
}`),h.outputs.add("fragColor","vec4",0),h.outputs.add("fragWeight","float",1),m.main.add(i`sampleJointBilateralUpscale(uv, fragColor, fragWeight);`),h}const p=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationUpscaleDrawParameters:m,build:c},Symbol.toStringTag,{value:"Module"}));export{m as G,p as a,c as b};
|