@arcgis/core 5.1.0-next.94 → 5.1.0-next.95
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/Graphic.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/02aaeaa988e9e7d65a7f.js +1 -0
- package/assets/esri/core/workers/chunks/03a4543b94f9adeb1852.js +1 -0
- package/assets/esri/core/workers/chunks/05c52e8f187740da9b36.js +1 -0
- package/assets/esri/core/workers/chunks/0630ce1975c91ae362d9.js +1 -0
- package/assets/esri/core/workers/chunks/{7f0f10946f05a09b5654.js → 07ddf1b1f7602063ceb0.js} +1 -1
- package/assets/esri/core/workers/chunks/{f04b49d80f422708d98c.js → 0e6b24e8864940ed9877.js} +1 -1
- package/assets/esri/core/workers/chunks/{0981fe06796060e50d40.js → 0f527961805cd45c14e2.js} +1 -1
- package/assets/esri/core/workers/chunks/11a99ee68409a641810e.js +1 -0
- package/assets/esri/core/workers/chunks/11b0d3a825fe50dd1e84.js +1 -0
- package/assets/esri/core/workers/chunks/130abc6a353e4d79a1b1.js +1 -0
- package/assets/esri/core/workers/chunks/16006dc0cb95f7c291a5.js +1 -0
- package/assets/esri/core/workers/chunks/177472a6a9beb1590934.js +1 -0
- package/assets/esri/core/workers/chunks/19a9a555365a8363d34b.js +1 -0
- package/assets/esri/core/workers/chunks/1a68a249540fda9083a9.js +1 -0
- package/assets/esri/core/workers/chunks/1ae016e4f5e39c34a941.js +1 -0
- package/assets/esri/core/workers/chunks/{43f58604ba4a94a9167c.js → 1f3a676e7a4eae5ad566.js} +1 -1
- package/assets/esri/core/workers/chunks/23241e6093e245f9c774.js +1 -0
- package/assets/esri/core/workers/chunks/{8875e53097b25655ef67.js → 246253fbbb2ecea48f91.js} +1 -1
- package/assets/esri/core/workers/chunks/25d795a1697803d77e56.js +1 -0
- package/assets/esri/core/workers/chunks/268ed861c882740c805b.js +1 -0
- package/assets/esri/core/workers/chunks/{da008d6a3afb30d18392.js → 299b4eecd0288348c971.js} +1 -1
- package/assets/esri/core/workers/chunks/{df8a3d3cac454d42e14d.js → 29aba121db7f00e0cf81.js} +1 -1
- package/assets/esri/core/workers/chunks/2b52c1c01cf568ba01fb.js +1 -0
- package/assets/esri/core/workers/chunks/2f6ba01ea8b8f193bea5.js +1 -0
- package/assets/esri/core/workers/chunks/3116a1c2b67a296ba86e.js +1 -0
- package/assets/esri/core/workers/chunks/31837f2f8859e2cf2efd.js +1 -0
- package/assets/esri/core/workers/chunks/3241e0ed26aff61ec213.js +1 -0
- package/assets/esri/core/workers/chunks/330da3828eefd8d72d3f.js +1 -0
- package/assets/esri/core/workers/chunks/359465b9726edcc70c83.js +1 -0
- package/assets/esri/core/workers/chunks/36ecb0082b8804b10fbf.js +1 -0
- package/assets/esri/core/workers/chunks/389e57aab12d52d72695.js +1 -0
- package/assets/esri/core/workers/chunks/38b1d2ffcc318ac0119d.js +1 -0
- package/assets/esri/core/workers/chunks/390717f079def83a0d9c.js +1 -0
- package/assets/esri/core/workers/chunks/{3397eae416622c64e628.js → 3f0483cbcd893acf240c.js} +1 -1
- package/assets/esri/core/workers/chunks/{4378e544687fec4b06fb.js → 40afdb74517a7df59e0d.js} +1 -1
- package/assets/esri/core/workers/chunks/41e811138c96d85fd3e8.js +1 -0
- package/assets/esri/core/workers/chunks/43b5cfb34b11c4124b51.js +1 -0
- package/assets/esri/core/workers/chunks/{747e258f57f0543c836e.js → 43cc82373be791b7cb4c.js} +1 -1
- package/assets/esri/core/workers/chunks/{1f141a007b1ef9b069c6.js → 4456bbb4b7dfe80c7477.js} +1 -1
- package/assets/esri/core/workers/chunks/44b30dfce12824ee1f33.js +1 -0
- package/assets/esri/core/workers/chunks/453c3b265481c80fc625.js +1 -0
- package/assets/esri/core/workers/chunks/4644e1b00fd4e628219d.js +1 -0
- package/assets/esri/core/workers/chunks/47dd2bfecc5c4b5f10f0.js +1 -0
- package/assets/esri/core/workers/chunks/4b19acf8bde5b2e80692.js +1 -0
- package/assets/esri/core/workers/chunks/4faaf61d20e20fcf6c18.js +1 -0
- package/assets/esri/core/workers/chunks/{82215d7a64b8be02eff1.js → 509beae195c900a85e0b.js} +1 -1
- package/assets/esri/core/workers/chunks/5217d676749bca59d90f.js +1 -0
- package/assets/esri/core/workers/chunks/{53750e85f3128993a43a.js → 545c38789267e3487dbd.js} +1 -1
- package/assets/esri/core/workers/chunks/54dad475dc806a38c287.js +1 -0
- package/assets/esri/core/workers/chunks/5648379d1ed4ca02eedd.js +1 -0
- package/assets/esri/core/workers/chunks/{fb75d4bce1e86eed017a.js → 5853925d2f7fb550bd2e.js} +5 -5
- package/assets/esri/core/workers/chunks/58579c53be1a44bd08d2.js +1 -0
- package/assets/esri/core/workers/chunks/5ea0096a282e87a269bd.js +1 -0
- package/assets/esri/core/workers/chunks/63378b0b4265a547656b.js +1 -0
- package/assets/esri/core/workers/chunks/{3a691f848152e3818a48.js → 642be1619c0e76355cb6.js} +1 -1
- package/assets/esri/core/workers/chunks/65b0b4e808479187da00.js +1 -0
- package/assets/esri/core/workers/chunks/6666cd3bf1a3d175dc8c.js +1 -0
- package/assets/esri/core/workers/chunks/69a1cbf0af059548f96a.js +1 -0
- package/assets/esri/core/workers/chunks/6ae2408ac075b974e887.js +1 -0
- package/assets/esri/core/workers/chunks/{9b869a8bda9384f25464.js → 6b4c99c7648f37feec00.js} +1 -1
- package/assets/esri/core/workers/chunks/6b79c254897ece95b7a3.js +1 -0
- package/assets/esri/core/workers/chunks/6d66dc77af8d112c33c6.js +1 -0
- package/assets/esri/core/workers/chunks/71119398ec91f1b209d7.js +1 -0
- package/assets/esri/core/workers/chunks/71e12db99589c98a4357.js +1 -0
- package/assets/esri/core/workers/chunks/7536f0683e488159d8bd.js +1 -0
- package/assets/esri/core/workers/chunks/76589434d573111a8fb4.js +1 -0
- package/assets/esri/core/workers/chunks/7c2d2f22df057ba8cb50.js +1 -0
- package/assets/esri/core/workers/chunks/7d6299ab7b0db23ab961.js +1 -0
- package/assets/esri/core/workers/chunks/82b2acc6f181927de89c.js +1 -0
- package/assets/esri/core/workers/chunks/85a200aecc7a844c9566.js +1 -0
- package/assets/esri/core/workers/chunks/89250d268dc2554a9ece.js +1 -0
- package/assets/esri/core/workers/chunks/8a23a62cbf1c5b4019c5.js +1 -0
- package/assets/esri/core/workers/chunks/8ac8ef856ed9592c433b.js +1 -0
- package/assets/esri/core/workers/chunks/8bfe4841c83eb3abfbe8.js +1 -0
- package/assets/esri/core/workers/chunks/{c7b9df9a204f6206364a.js → 8de61993e114f453579b.js} +1 -1
- package/assets/esri/core/workers/chunks/{01af2a0611386df64cb1.js → 8f992ff87173a3ca1621.js} +28 -24
- package/assets/esri/core/workers/chunks/9bb2251ba58932f85d13.js +1 -0
- package/assets/esri/core/workers/chunks/{d8ccc713c5ad93e7a0c3.js → 9bd713d96502ddc2ce25.js} +1 -1
- package/assets/esri/core/workers/chunks/{8351012ceb466f01b8fd.js → 9d8e7839772029d83c93.js} +1 -1
- package/assets/esri/core/workers/chunks/a12fd6a445f42326642f.js +1 -0
- package/assets/esri/core/workers/chunks/a50fd0e66b01fe205033.js +1 -0
- package/assets/esri/core/workers/chunks/{51716e411fad624ac21c.js → a567d001fcfa1f1cdeea.js} +1 -1
- package/assets/esri/core/workers/chunks/{3a6b8879702fb247328b.js → a68b5cb66c2c5e6b46e0.js} +1 -1
- package/assets/esri/core/workers/chunks/a8e2fbbfbdf1c3203d5e.js +1 -0
- package/assets/esri/core/workers/chunks/a94674826e5893c9d197.js +1 -0
- package/assets/esri/core/workers/chunks/aad02c7417648d881129.js +1 -0
- package/assets/esri/core/workers/chunks/ad329226c8b579d0964c.js +1 -0
- package/assets/esri/core/workers/chunks/afdc6fc453157528cf9b.js +1 -0
- package/assets/esri/core/workers/chunks/b2504657d3ef8769005e.js +1 -0
- package/assets/esri/core/workers/chunks/b7f5d51ac26f37837b3b.js +1 -0
- package/assets/esri/core/workers/chunks/b90db0829da3f96e4a19.js +1 -0
- package/assets/esri/core/workers/chunks/{359d3acb3953e64e5a78.js → ba7fe21a78ea37a02b7c.js} +1 -1
- package/assets/esri/core/workers/chunks/bd17ac2e6f1eb8cf7abf.js +1 -0
- package/assets/esri/core/workers/chunks/bd721bbc7afc75d3bddb.js +1 -0
- package/assets/esri/core/workers/chunks/bd9dae2d5ec199f8e9ba.js +1 -0
- package/assets/esri/core/workers/chunks/be19d4a6fb9b1c923127.js +1 -0
- package/assets/esri/core/workers/chunks/beba9f2213d8a850ddb6.js +1 -0
- package/assets/esri/core/workers/chunks/{d6f03f628ebfc28fdd23.js → bf6c6bc15b0d2d82d1a4.js} +2 -2
- package/assets/esri/core/workers/chunks/bf706a5d065a357de51b.js +1 -0
- package/assets/esri/core/workers/chunks/{baea6f86b2dbe067940e.js → bf73232057ebc1ecc0ad.js} +1 -1
- package/assets/esri/core/workers/chunks/c2589e5e0e0f81a378c2.js +1 -0
- package/assets/esri/core/workers/chunks/c321bcda8e8893577948.js +1 -0
- package/assets/esri/core/workers/chunks/c33f1f722499a5c6fc11.js +1 -0
- package/assets/esri/core/workers/chunks/c452c74ba9de218c3e57.js +1 -0
- package/assets/esri/core/workers/chunks/{700f7aa9cf7b13acaf5d.js → c514135bf7703ba69a47.js} +1 -1
- package/assets/esri/core/workers/chunks/c798a40418e7ff38042a.js +1 -0
- package/assets/esri/core/workers/chunks/ca6c128940ddbebcaaab.js +1 -0
- package/assets/esri/core/workers/chunks/{268f203d2492a03165ac.js → ce2ed9405ff1b704d35c.js} +1 -1
- package/assets/esri/core/workers/chunks/ce3e51c799a80648e46d.js +1 -0
- package/assets/esri/core/workers/chunks/{e81afc8a058a8ecc9b24.js → ce4e09b623ebb640c46c.js} +1 -1
- package/assets/esri/core/workers/chunks/cf7acf5acb6d322fd996.js +1 -0
- package/assets/esri/core/workers/chunks/{e0b27bceb397482bd0e8.js → d122431f3b0b88dcb488.js} +1 -1
- package/assets/esri/core/workers/chunks/d8c4fb66c733ab2f66d3.js +1 -0
- package/assets/esri/core/workers/chunks/d8d338665fe00494c826.js +1 -0
- package/assets/esri/core/workers/chunks/d93a4ccf8f0208dc6ad7.js +1 -0
- package/assets/esri/core/workers/chunks/de11ebcea2b8f9dfe65d.js +1 -0
- package/assets/esri/core/workers/chunks/e03713dee3205c96d53f.js +1 -0
- package/assets/esri/core/workers/chunks/e133840540abf20262a4.js +1 -0
- package/assets/esri/core/workers/chunks/{3092184350d66c79f610.js → e5d969214d9eda5c0b4c.js} +1 -1
- package/assets/esri/core/workers/chunks/e63e24101e7e92c62d98.js +1 -0
- package/assets/esri/core/workers/chunks/ead6e4d0a515c0913bee.js +1 -0
- package/assets/esri/core/workers/chunks/ee635172be7fdea69367.js +1 -0
- package/assets/esri/core/workers/chunks/f196ad0c7dbcbf632776.js +1 -0
- package/assets/esri/core/workers/chunks/f31deeedb2508e81293b.js +2 -0
- package/assets/esri/core/workers/chunks/f618ee43581e8de6ad0c.js +1 -0
- package/assets/esri/core/workers/chunks/f66262f8582909157f01.js +1 -0
- package/assets/esri/core/workers/chunks/{ea97619a4470f1540b99.js → f6ebec8d2248c719b89f.js} +1 -1
- package/assets/esri/core/workers/chunks/f948e4a80a7dbda70f2e.js +1 -0
- package/assets/esri/core/workers/chunks/f95e3333a65a0c09fd1e.js +1 -0
- package/assets/esri/core/workers/chunks/fa9ab152ea785b5e97e0.js +1 -0
- package/assets/esri/core/workers/chunks/fae147d03ed723ab234d.js +1 -0
- package/assets/esri/core/workers/chunks/fae79769df54eb4c4154.js +1 -0
- package/assets/esri/core/workers/chunks/{5a8fd2fd8a24f9290b7f.js → fd2afff07aaac8203c18.js} +1 -1
- package/assets/esri/core/workers/chunks/fdb7851e98e8d2ba48d3.js +1 -0
- package/assets/esri/core/workers/chunks/ff7708aaa2de720e3a47.js +1 -0
- package/assets/esri/core/workers/chunks/ffb8fa77297578afef7c.js +1 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
- package/chunks/GaussianSplat.glsl.js +8 -8
- package/chunks/GlobalIllumination.glsl.js +31 -31
- package/chunks/OITBlend.glsl.js +3 -7
- package/chunks/OITBlendEmission.glsl.js +22 -0
- package/chunks/{OITDim.glsl.js → OITDimOpaque.glsl.js} +2 -2
- package/chunks/RibbonLine.glsl.js +57 -53
- package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
- package/chunks/arcgis-knowledge-client-core.js +1 -1
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/DimensionFeatureLayer.d.ts +7 -0
- package/layers/DimensionFeatureLayer.js +2 -0
- package/layers/catalog/CatalogFootprintLayer.js +1 -1
- package/layers/graphics/OptimizedFeature.js +1 -1
- package/layers/graphics/data/QueryEngineCapabilities.js +1 -1
- package/layers/graphics/data/optimizedFeatureQueryEngineAdapter.js +1 -1
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/layers/graphics/sources/OGCFeatureSource.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/FeatureReductionLayer.js +1 -1
- package/layers/support/capabilities.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/support/serviceCapabilitiesUtils.js +1 -1
- package/layers/types.d.ts +1 -1
- package/networks/support/CircuitPathConnectivityElement.js +1 -1
- package/networks/support/networkFieldUtils.js +1 -1
- package/package.json +2 -2
- package/popup/Features.js +1 -1
- package/portal/schemas/definitions.js +1 -1
- package/rest/knowledgeGraph/ReplicaDefinition.d.ts +0 -3
- package/rest/knowledgeGraph/types.d.ts +1 -1
- package/rest/knowledgeGraph/wasmInterface/queryToWasmEncodedFactories.js +1 -1
- package/rest/knowledgeGraph/wasmInterface/replicaToWasmEncodedFactories.js +1 -1
- package/rest/support/Query.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMEffects.js +1 -1
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/defaultCIMValues.js +1 -1
- package/symbols/cim/effects/EffectAddControlPoints.js +1 -1
- package/symbols/cim/effects/EffectArrow.js +1 -1
- package/symbols/cim/effects/EffectBuffer.js +1 -1
- package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
- package/symbols/cim/effects/EffectCut.js +1 -1
- package/symbols/cim/effects/EffectDashes.js +1 -1
- package/symbols/cim/effects/EffectDonut.js +1 -1
- package/symbols/cim/effects/EffectEnclosingPolygon.js +1 -1
- package/symbols/cim/effects/EffectHelper.js +1 -1
- package/symbols/cim/effects/EffectJog.js +1 -1
- package/symbols/cim/effects/EffectMove.js +1 -1
- package/symbols/cim/effects/EffectOffset.js +1 -1
- package/symbols/cim/effects/EffectRadial.js +1 -1
- package/symbols/cim/effects/EffectTaperedPolygon.js +1 -1
- package/symbols/cim/effects/EffectWave.js +1 -1
- package/symbols/cim/placements/PlacementAtRatioPositions.js +1 -1
- package/symbols/cim/types.d.ts +7 -1
- package/symbols/cim/utils.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionArrowEffect.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionExtensionLineEffect.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionLeaderLineEffect.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionLineEffect.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionPointEffect.js +1 -1
- package/symbols/dimensions/effects/LinearDimensionTextEffect.js +1 -1
- package/symbols/types.d.ts +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolDeclutterer.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
- package/views/2d/engine/webgl/alignmentUtils.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/TestTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/AFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/ComplexOutlineFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/GradientFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/OutlineFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/PatternFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/fill/PatternOutlineFillMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/heatmap/HeatmapMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/line/GradientStrokeMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/line/TexturedLineMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/pieChart/PieChartMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layerViewModuleImportUtils.js +1 -1
- package/views/2d/layers/DimensionLayerView2D.js +2 -0
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +2 -0
- package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
- package/views/2d/layers/features/schema/SourceSchema.js +1 -1
- package/views/2d/layers/features/sources/FeatureSource.js +1 -1
- package/views/2d/layers/features/sources/strategies/AFeatureTileLoadStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/FeatureHybridTileLoadStrategy.js +2 -0
- package/views/2d/layers/features/sources/strategies/chunks/ByReferenceTileSourceChunk.js +2 -0
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/features/support/DisplayIdGenerator.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
- package/views/2d/layers/features/support/RefCounted.js +2 -0
- package/views/2d/types.d.ts +2 -0
- package/views/3d/layerViewModuleImportUtils.js +1 -1
- package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
- package/views/3d/terrain/isTerrainSurfaceLayer.js +1 -1
- package/views/3d/types.d.ts +2 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/{ComputeCovariance.glsl.js → GaussianSplatCovariance.glsl.js} +15 -9
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +43 -0
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js +36 -0
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/transparency/OITBlend.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
- package/views/3d/webgl-engine/effects/transparency/OITBlendEmission.glsl.js +2 -0
- package/views/3d/webgl-engine/effects/transparency/OITBlendEmissionTechnique.js +2 -0
- package/views/3d/webgl-engine/effects/transparency/OITBlendEmissionTechniqueConfiguration.js +2 -0
- package/views/3d/webgl-engine/effects/transparency/OITBlendTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/effects/transparency/{OITDim.glsl.js → OITDimOpaque.glsl.js} +1 -1
- package/views/3d/webgl-engine/effects/transparency/OITDimOpaqueTechnique.js +2 -0
- package/views/3d/webgl-engine/effects/transparency/{OITDimTechniqueConfiguration.js → OITDimOpaqueTechniqueConfiguration.js} +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/PopupView.js +1 -1
- package/views/layers/FeatureLikeLayerView.d.ts +2 -1
- package/widgets/FeatureTable/FeatureTableViewModel.d.ts +12 -12
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable.d.ts +18 -3
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/015fc0a17b17d69cc3bb.js +0 -1
- package/assets/esri/core/workers/chunks/02e8fc598ee09cf1b678.js +0 -1
- package/assets/esri/core/workers/chunks/075a1e91a075efe59cd3.js +0 -1
- package/assets/esri/core/workers/chunks/146424b5717d0a645ee1.js +0 -1
- package/assets/esri/core/workers/chunks/15a070d4ac2087b79e8b.js +0 -1
- package/assets/esri/core/workers/chunks/169ca3724053fc046d1b.js +0 -1
- package/assets/esri/core/workers/chunks/17445fd8048966617d49.js +0 -1
- package/assets/esri/core/workers/chunks/1765dfeac20e34ce25b7.js +0 -1
- package/assets/esri/core/workers/chunks/1768f1a7e3caa6074d91.js +0 -1
- package/assets/esri/core/workers/chunks/1906416c84bab369bbd6.js +0 -1
- package/assets/esri/core/workers/chunks/198864c107fa2b24518c.js +0 -1
- package/assets/esri/core/workers/chunks/1a35121a0c2595a41fdb.js +0 -1
- package/assets/esri/core/workers/chunks/1f85646936200a399c15.js +0 -1
- package/assets/esri/core/workers/chunks/1ff3c15a51c4dc991806.js +0 -1
- package/assets/esri/core/workers/chunks/206bdfd868a9ef88f3a8.js +0 -1
- package/assets/esri/core/workers/chunks/2343b1105bc4c1b4a086.js +0 -1
- package/assets/esri/core/workers/chunks/2387613b855771a3e537.js +0 -1
- package/assets/esri/core/workers/chunks/2b0b398180ed98c2c84c.js +0 -1
- package/assets/esri/core/workers/chunks/3469df5c4846b0cee012.js +0 -1
- package/assets/esri/core/workers/chunks/34b6b5dd415c68f0b0d1.js +0 -1
- package/assets/esri/core/workers/chunks/36f6673b23579b88d8f7.js +0 -1
- package/assets/esri/core/workers/chunks/384c235d36f32769e32b.js +0 -1
- package/assets/esri/core/workers/chunks/38c28189f273636e4017.js +0 -1
- package/assets/esri/core/workers/chunks/3a183259805638c25363.js +0 -1
- package/assets/esri/core/workers/chunks/3efbb684c0409955186d.js +0 -1
- package/assets/esri/core/workers/chunks/3feec3d08424b94e1bcf.js +0 -1
- package/assets/esri/core/workers/chunks/460e693ad19fa77ffdc2.js +0 -1
- package/assets/esri/core/workers/chunks/47b3a5213539548ff3a6.js +0 -1
- package/assets/esri/core/workers/chunks/48549d3d7bf0154c0afa.js +0 -1
- package/assets/esri/core/workers/chunks/52b3a11c962810bc6dbe.js +0 -1
- package/assets/esri/core/workers/chunks/54c6e870262469d0d702.js +0 -1
- package/assets/esri/core/workers/chunks/55fd201ca5e10c6e4761.js +0 -1
- package/assets/esri/core/workers/chunks/561d45dc9421f80feca5.js +0 -1
- package/assets/esri/core/workers/chunks/566f6319ded0634769e0.js +0 -1
- package/assets/esri/core/workers/chunks/56717ff315c6ec874142.js +0 -1
- package/assets/esri/core/workers/chunks/56941e8bbd2d49bf2656.js +0 -1
- package/assets/esri/core/workers/chunks/5fccb372b4d5ee2f64cc.js +0 -1
- package/assets/esri/core/workers/chunks/60cee9a44929decd2474.js +0 -1
- package/assets/esri/core/workers/chunks/6124141ac642e4ce1454.js +0 -1
- package/assets/esri/core/workers/chunks/61fada8942b65fa0b5e1.js +0 -1
- package/assets/esri/core/workers/chunks/64cf18ba2869171a5a7a.js +0 -1
- package/assets/esri/core/workers/chunks/65c61171e6c6be5c5c2f.js +0 -1
- package/assets/esri/core/workers/chunks/6a3d207308b29651f397.js +0 -1
- package/assets/esri/core/workers/chunks/6d696beddcc5fbed5875.js +0 -1
- package/assets/esri/core/workers/chunks/71cfab6305f275cfb04e.js +0 -1
- package/assets/esri/core/workers/chunks/728ad5bbbcbf88d6249f.js +0 -1
- package/assets/esri/core/workers/chunks/7531bbcb6613c87a344e.js +0 -1
- package/assets/esri/core/workers/chunks/7b505112c7e6d9b7a239.js +0 -1
- package/assets/esri/core/workers/chunks/7b6c8be59ed87e386aa4.js +0 -1
- package/assets/esri/core/workers/chunks/7c820c5f6f05480d5050.js +0 -1
- package/assets/esri/core/workers/chunks/7ef51b0ebd560113ae7e.js +0 -1
- package/assets/esri/core/workers/chunks/80f4f686ce403cb2693f.js +0 -1
- package/assets/esri/core/workers/chunks/81d761c837b7456ec99f.js +0 -1
- package/assets/esri/core/workers/chunks/83f1871d04c979fa23b7.js +0 -1
- package/assets/esri/core/workers/chunks/85da2987e17b6755a94e.js +0 -1
- package/assets/esri/core/workers/chunks/87f7a674957f734b1b42.js +0 -1
- package/assets/esri/core/workers/chunks/8a3bff0f58483c1665f9.js +0 -1
- package/assets/esri/core/workers/chunks/8a5a827ee557d9f9a66e.js +0 -1
- package/assets/esri/core/workers/chunks/8b046e28f879079caada.js +0 -1
- package/assets/esri/core/workers/chunks/8d738e9acc2f222235ea.js +0 -1
- package/assets/esri/core/workers/chunks/8e1140725a72038627c2.js +0 -1
- package/assets/esri/core/workers/chunks/915e2711d3a2cfa402b2.js +0 -1
- package/assets/esri/core/workers/chunks/928dac64e6ba401d391a.js +0 -1
- package/assets/esri/core/workers/chunks/992525afdf11b2fb16d4.js +0 -1
- package/assets/esri/core/workers/chunks/9a5ef33d99a8f89956ff.js +0 -1
- package/assets/esri/core/workers/chunks/9c402657f63a4d5668d0.js +0 -1
- package/assets/esri/core/workers/chunks/9f51a69b8f1937a8794a.js +0 -1
- package/assets/esri/core/workers/chunks/a015c2f54eb91e43a1f4.js +0 -1
- package/assets/esri/core/workers/chunks/a232d05c0a055f398c6e.js +0 -1
- package/assets/esri/core/workers/chunks/a242ec19a7508de436da.js +0 -1
- package/assets/esri/core/workers/chunks/a25acccda8febac71a3d.js +0 -1
- package/assets/esri/core/workers/chunks/a432219de6a873f88776.js +0 -1
- package/assets/esri/core/workers/chunks/a76e14fe5e8b2f7ef9de.js +0 -2
- package/assets/esri/core/workers/chunks/a7f9f478bd1493fc3c76.js +0 -1
- package/assets/esri/core/workers/chunks/aac6a57edd7494125204.js +0 -1
- package/assets/esri/core/workers/chunks/af074b5b4e1d6baf5219.js +0 -1
- package/assets/esri/core/workers/chunks/afc0baf86ece710ef867.js +0 -1
- package/assets/esri/core/workers/chunks/b2662bfdbd1e3623ceb9.js +0 -1
- package/assets/esri/core/workers/chunks/b73c146d3e550eaf07eb.js +0 -1
- package/assets/esri/core/workers/chunks/b7af0e6b9aadbcaf6a0b.js +0 -1
- package/assets/esri/core/workers/chunks/bc78937986854e500b8e.js +0 -1
- package/assets/esri/core/workers/chunks/bd10d21545bca9a49de0.js +0 -1
- package/assets/esri/core/workers/chunks/bea170f08f5261e22d29.js +0 -1
- package/assets/esri/core/workers/chunks/bec3ee5ea945e1e07a35.js +0 -1
- package/assets/esri/core/workers/chunks/bf4dd8e50704e4040966.js +0 -1
- package/assets/esri/core/workers/chunks/c31ee5617c61a933cb0e.js +0 -1
- package/assets/esri/core/workers/chunks/c3e89c7c7b677bd18557.js +0 -1
- package/assets/esri/core/workers/chunks/cb81d524f12edcadb9bb.js +0 -1
- package/assets/esri/core/workers/chunks/cc0f3b9b153a0c232afe.js +0 -1
- package/assets/esri/core/workers/chunks/cd0c232f4e3868d91a05.js +0 -1
- package/assets/esri/core/workers/chunks/ce7ef7c4ca14d66d96f6.js +0 -1
- package/assets/esri/core/workers/chunks/d55cef8199b8246fea3f.js +0 -1
- package/assets/esri/core/workers/chunks/d8decaee2c780e1b5e35.js +0 -1
- package/assets/esri/core/workers/chunks/dc54d4a9fe1691862356.js +0 -1
- package/assets/esri/core/workers/chunks/de99500b0fcedf2c8a5c.js +0 -1
- package/assets/esri/core/workers/chunks/e18badd11f360cc2912b.js +0 -1
- package/assets/esri/core/workers/chunks/e6f1ed5e56f1d9862821.js +0 -1
- package/assets/esri/core/workers/chunks/e6fe8b5fbe95de01453b.js +0 -1
- package/assets/esri/core/workers/chunks/eaab5ac049622986e3bc.js +0 -1
- package/assets/esri/core/workers/chunks/ee7e9bca57160694b3c4.js +0 -1
- package/assets/esri/core/workers/chunks/ef0085aa743b33cb549f.js +0 -1
- package/assets/esri/core/workers/chunks/f0250cecb243b32cdba7.js +0 -1
- package/assets/esri/core/workers/chunks/f2beb4267b8d4cddfa3e.js +0 -1
- package/assets/esri/core/workers/chunks/f468c6ea2818a1f97e19.js +0 -1
- package/assets/esri/core/workers/chunks/f6c8e93ca2987e83f925.js +0 -1
- package/assets/esri/core/workers/chunks/fa4265db06e2721754a0.js +0 -1
- package/views/3d/webgl-engine/effects/transparency/OITDimTechnique.js +0 -2
- /package/assets/esri/core/workers/chunks/{d6f03f628ebfc28fdd23.js.LICENSE.txt → bf6c6bc15b0d2d82d1a4.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{a76e14fe5e8b2f7ef9de.js.LICENSE.txt → f31deeedb2508e81293b.js.LICENSE.txt} +0 -0
|
@@ -1,28 +1,28 @@
|
|
|
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 o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{addMainLightDirection as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{addMainLightDirection as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as l,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 h}from"../views/webgl/ShaderBuilder.js";const p=.01,f=.008,g=.002,v=.5,x=.02,b=.1,w=.008,y=.012,S=.008,C=40,M=.095,F=.008,D=60,W=2,j=.0039,I=.25,z=1/3,B=2/3,G=2,P=.05,T=.15,$=.75,R=.15,L=16;class O extends d{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.frameCount=0,this.rayMarchMaxReach=R,this.rayMarchMaxSteps=L,this.emissionWeight=1}}function E(d){const R=new h,L=R.fragment;return R.include(e),R.include(r),t(L),L.include(o),R.include(a,d),L.uniforms.add(new m("normalMap",e=>e.normalTexture),new m("depthMap",e=>e.depthTexture),new m("lastFrameColorTexture",(e,o)=>o.reprojection.lastFrameColor?.getTexture()),new m("lastFrameDepthTexture",(e,o)=>o.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 i("accumulatedFramesGI",e=>e.accumulatedFrames),new i("frameCount",e=>e.frameCount),new i("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new m("blueNoiseTex",e=>e.noiseTexture)),L.uniforms.add(new i("rayMarchMaxReach",e=>e.rayMarchMaxReach),new i("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new i("emissionWeight",e=>e.emissionWeight)),d.hasEmission&&L.uniforms.add(new m("lastFrameEmissionTexture",(e,o)=>o.reprojection.lastFrameEmission?.attachment)),L.constants.add("timeSamplesSize","float",64),L.constants.add("blueNoiseGridSize","float",8),L.code.add(l`
|
|
3
3
|
float computeIdleColorBlendWeight(float accumulatedFrames) {
|
|
4
4
|
float idleColorBlendProgress = clamp(
|
|
5
|
-
accumulatedFrames / ${
|
|
5
|
+
accumulatedFrames / ${l.float(C)},
|
|
6
6
|
0.0,
|
|
7
7
|
1.0
|
|
8
8
|
);
|
|
9
9
|
return mix(
|
|
10
|
-
${
|
|
11
|
-
${
|
|
10
|
+
${l.float(y)},
|
|
11
|
+
${l.float(S)},
|
|
12
12
|
idleColorBlendProgress
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
float computeIdleOcclusionBlendWeight(float accumulatedFrames) {
|
|
17
17
|
float idleOcclusionBlendProgress = clamp(
|
|
18
|
-
accumulatedFrames / ${
|
|
18
|
+
accumulatedFrames / ${l.float(D)},
|
|
19
19
|
0.0,
|
|
20
20
|
1.0
|
|
21
21
|
);
|
|
22
22
|
return mix(
|
|
23
|
-
${
|
|
24
|
-
${
|
|
25
|
-
pow(idleOcclusionBlendProgress, ${
|
|
23
|
+
${l.float(M)},
|
|
24
|
+
${l.float(F)},
|
|
25
|
+
pow(idleOcclusionBlendProgress, ${l.float(W)})
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -69,28 +69,28 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
float computeChromaWeight(vec3 color) {
|
|
72
|
-
float gray = dot(color, vec3(${
|
|
72
|
+
float gray = dot(color, vec3(${l.float(z)}));
|
|
73
73
|
vec3 deviationFromGray = color - gray;
|
|
74
74
|
float chromaDistanceSquared = dot(deviationFromGray, deviationFromGray);
|
|
75
|
-
float normalizedChroma = chromaDistanceSquared / ${
|
|
75
|
+
float normalizedChroma = chromaDistanceSquared / ${l.float(B)};
|
|
76
76
|
|
|
77
|
-
return clamp(normalizedChroma * ${
|
|
77
|
+
return clamp(normalizedChroma * ${l.float(G)}, 0.0, 1.0);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
float computeColorBleedWeight(vec3 receiverColor, vec3 sourceColor) {
|
|
81
81
|
float receiverChromaWeight = computeChromaWeight(receiverColor);
|
|
82
82
|
float sourceChromaWeight = computeChromaWeight(sourceColor);
|
|
83
|
-
float receiverAverageIntensity = dot(receiverColor, vec3(${
|
|
83
|
+
float receiverAverageIntensity = dot(receiverColor, vec3(${l.float(z)}));
|
|
84
84
|
|
|
85
85
|
// Favor bright, neutral receivers lit by more saturated hit surfaces
|
|
86
86
|
float bleedFactor =
|
|
87
|
-
pow(receiverAverageIntensity, ${
|
|
87
|
+
pow(receiverAverageIntensity, ${l.float(P)}) *
|
|
88
88
|
(1.0 - receiverChromaWeight) *
|
|
89
|
-
pow(sourceChromaWeight, ${
|
|
89
|
+
pow(sourceChromaWeight, ${l.float(T)});
|
|
90
90
|
|
|
91
|
-
return ${
|
|
91
|
+
return ${l.float($)} * clamp(bleedFactor, 0.0, 1.0);
|
|
92
92
|
}
|
|
93
|
-
`),R.outputs.add("fragGlobalIllumination","vec4",0),R.outputs.add("fragWeight","float",1),L.main.add(
|
|
93
|
+
`),R.outputs.add("fragGlobalIllumination","vec4",0),R.outputs.add("fragWeight","float",1),L.main.add(l`
|
|
94
94
|
float depth = depthFromTexture(depthMap, uv);
|
|
95
95
|
|
|
96
96
|
// Early out if depth is out of range, such as in the sky
|
|
@@ -130,7 +130,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
130
130
|
float idleColorBlendWeight = computeIdleColorBlendWeight(accumulatedFramesGI);
|
|
131
131
|
float idleOcclusionBlendWeight = computeIdleOcclusionBlendWeight(accumulatedFramesGI);
|
|
132
132
|
float reprojectionDepthMismatch = abs((lastFrameDepthViewPos + reprojectedViewPos.z) / max(lastFrameDepthViewPos, reprojectedViewPos.z));
|
|
133
|
-
bool hasReprojectionMismatch = reprojectionDepthMismatch > ${
|
|
133
|
+
bool hasReprojectionMismatch = reprojectionDepthMismatch > ${l.float(p)};
|
|
134
134
|
bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
|
|
135
135
|
bool isLowQualityEdgePixel = isScaledGlobalIllumination && isEdgeDepth(currentPixelDepth, uv);
|
|
136
136
|
bool resetColorHistory = false;
|
|
@@ -139,7 +139,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
139
139
|
if (hasReprojectionMismatch) {
|
|
140
140
|
if (isLowQualityEdgePixel) {
|
|
141
141
|
steps = 1;
|
|
142
|
-
occlusionBlendWeight = ${
|
|
142
|
+
occlusionBlendWeight = ${l.float(f)};
|
|
143
143
|
resetColorHistory = true;
|
|
144
144
|
} else {
|
|
145
145
|
steps = 6;
|
|
@@ -148,15 +148,15 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
148
148
|
}
|
|
149
149
|
} else {
|
|
150
150
|
steps = 1;
|
|
151
|
-
if (historyOcclusionBlendWeight > ${
|
|
152
|
-
occlusionBlendWeight = ${
|
|
153
|
-
colorBlendWeight = ${
|
|
154
|
-
} else if (historyOcclusionBlendWeight > ${
|
|
151
|
+
if (historyOcclusionBlendWeight > ${l.float(v)}) {
|
|
152
|
+
occlusionBlendWeight = ${l.float(b)};
|
|
153
|
+
colorBlendWeight = ${l.float(w)};
|
|
154
|
+
} else if (historyOcclusionBlendWeight > ${l.float(x)}) {
|
|
155
155
|
occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
|
|
156
|
-
colorBlendWeight = ${
|
|
156
|
+
colorBlendWeight = ${l.float(w)};
|
|
157
157
|
} else {
|
|
158
|
-
occlusionBlendWeight = isScaledGlobalIllumination ? ${
|
|
159
|
-
colorBlendWeight = isScaledGlobalIllumination ? ${
|
|
158
|
+
occlusionBlendWeight = isScaledGlobalIllumination ? ${l.float(f)} : idleOcclusionBlendWeight;
|
|
159
|
+
colorBlendWeight = isScaledGlobalIllumination ? ${l.float(g)} : idleColorBlendWeight;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
@@ -184,7 +184,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
184
184
|
);
|
|
185
185
|
|
|
186
186
|
if (hit.z > 0.0) {
|
|
187
|
-
${n(d.hasColor,
|
|
187
|
+
${n(d.hasColor,l`
|
|
188
188
|
// Emission and color bleed - Reproject the current receiver and sampled hit to estimate bounced color
|
|
189
189
|
vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
|
|
190
190
|
|
|
@@ -193,7 +193,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
193
193
|
vec3 sourceEmission = ${n(d.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
|
|
194
194
|
|
|
195
195
|
float colorBleedWeight = computeColorBleedWeight(receiverColor, sourceColor);
|
|
196
|
-
fragGlobalIllumination.rgb += (sourceColor * colorBleedWeight + sourceEmission) * stepSize;
|
|
196
|
+
fragGlobalIllumination.rgb += (sourceColor * colorBleedWeight + sourceEmission * emissionWeight) * stepSize;
|
|
197
197
|
`)}
|
|
198
198
|
} else {
|
|
199
199
|
// Occlusion - heuristic modulating sky intensity based on angle to main light
|
|
@@ -207,17 +207,17 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
207
207
|
|
|
208
208
|
// Rendering trick add noise to reduce accumulation artifacts
|
|
209
209
|
float accumulationDither = occlusionBlendWeight < 1.0
|
|
210
|
-
? randomDirectionSample.b * ${
|
|
210
|
+
? randomDirectionSample.b * ${l.float(j)}
|
|
211
211
|
: 0.0;
|
|
212
212
|
|
|
213
|
-
${n(d.hasColor,
|
|
213
|
+
${n(d.hasColor,l`
|
|
214
214
|
// Accumulate color
|
|
215
215
|
vec3 lastFrameColor = lastFrameGlobalIllumination.rgb;
|
|
216
|
-
float colorDitherScale = isScaledGlobalIllumination ? ${
|
|
216
|
+
float colorDitherScale = isScaledGlobalIllumination ? ${l.float(I)} : 1.0;
|
|
217
217
|
fragGlobalIllumination.rgb = resetColorHistory
|
|
218
218
|
? vec3(0.0)
|
|
219
219
|
: mix(lastFrameColor + accumulationDither * colorDitherScale, fragGlobalIllumination.rgb, colorBlendWeight);
|
|
220
|
-
`,
|
|
220
|
+
`,l`
|
|
221
221
|
fragGlobalIllumination.rgb = vec3(0.0);
|
|
222
222
|
`)}
|
|
223
223
|
|
package/chunks/OITBlend.glsl.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
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{If as r,glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{If as r,glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{O as t}from"./OITDimOpaque.glsl.js";import{oitResolution as l}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ShaderBuilder as n}from"../views/webgl/ShaderBuilder.js";class c extends t{}function s(t){const c=new n;c.include(e);const{frontFaceMask:s,computeHudOcclusion:u,useFloatBlend:f}=t,{fragment:i,outputs:d}=c;i.include(l,t),i.uniforms.add(new a("colorTexture",e=>e.colorTexture),new a("alphaTexture",e=>e.alphaTexture),new a("frontFaceTexture",e=>e.frontFaceTexture));let g=0;return d.add("fragColor","vec4",g++),u&&d.add("fragOcclusion","vec4",g++),i.main.add(o`
|
|
3
3
|
float srcAlpha = texture(alphaTexture, uv).r * floatBlendInputScale;
|
|
4
4
|
${r(u,"fragOcclusion = vec4(1.0, 0.0, 0.0, 1.0);")}
|
|
5
5
|
|
|
6
6
|
if(srcAlpha == 0.0) {
|
|
7
7
|
fragColor = vec4(0.0);
|
|
8
|
-
${r(c,"fragEmission = vec4(0.0);")}
|
|
9
8
|
return;
|
|
10
9
|
}
|
|
11
10
|
vec4 frontFace = texture(frontFaceTexture, uv);
|
|
12
11
|
|
|
13
|
-
${r(
|
|
12
|
+
${r(s,o`
|
|
14
13
|
if (frontFace.a == 0.0) {
|
|
15
14
|
fragColor = vec4(0.0);
|
|
16
|
-
${r(c,"fragEmission = vec4(0.0);")}
|
|
17
15
|
return;
|
|
18
16
|
}
|
|
19
17
|
`)}
|
|
@@ -23,7 +21,5 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
|
|
|
23
21
|
vec3 backColor = srcColor.rgb * floatBlendInputScale / srcAlpha;
|
|
24
22
|
fragColor = vec4(mix(backColor, frontFace.rgb, frontFace.a), 1.0 - srcColor.a);
|
|
25
23
|
|
|
26
|
-
${r(c,"vec4 emission = texture(emissionTexture, uv);\n emission.rgb *= floatBlendInputScale;\n vec4 emissionFrontFace = texture(emissionFrontFaceTexture, uv);\n emissionFrontFace.rgb *= floatBlendInputScale;\n\n // Modulate transparent emitter by front faces. This case is important for surfaces which contain emitter and\n // non-emitter at the same time. Non-emitter surface parts need to modulate emissions as well.\n emission.rgb = emission.rgb * (1.0 - frontFace.a);\n\n fragEmission = vec4(mix(emission.rgb / srcAlpha, emissionFrontFace.rgb, emissionFrontFace.a) * floatBlendOutputScale, 1.0 - srcColor.a);\n ")}
|
|
27
|
-
|
|
28
24
|
${r(u,"fragOcclusion.r = pow(srcColor.a, 0.5);")}
|
|
29
|
-
`),
|
|
25
|
+
`),c}const u=Object.freeze(Object.defineProperty({__proto__:null,OITBlendPassParameters:c,build:s},Symbol.toStringTag,{value:"Module"}));export{c as O,u as a,s as b};
|
|
@@ -0,0 +1,22 @@
|
|
|
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{If as t,glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{O as s}from"./OITDimOpaque.glsl.js";import{oitResolution as n}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";class i extends s{}function l(s){const i=new a;i.include(e);const{fragment:l,outputs:c}=i,{useFloatBlend:u}=s;return l.include(n,s),l.uniforms.add(new o("colorTexture",e=>e.colorTexture),new o("alphaTexture",e=>e.alphaTexture),new o("frontFaceTexture",e=>e.frontFaceTexture),new o("emissionTexture",e=>e.emissionTexture),new o("emissionFrontFaceTexture",e=>e.emissionFrontFaceTexture)),c.add("fragEmission","vec4",1),l.main.add(r`
|
|
3
|
+
float srcAlpha = texture(alphaTexture, uv).r * floatBlendInputScale;
|
|
4
|
+
if(srcAlpha == 0.0) {
|
|
5
|
+
fragEmission = vec4(0.0);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
vec4 frontFace = texture(frontFaceTexture, uv);
|
|
9
|
+
vec4 srcColor = texture(colorTexture, uv);
|
|
10
|
+
${t(!u,"float frontWeight = srcAlpha * floatBlendOutputScale;\n frontWeight = clamp((frontWeight - 0.9) * 10.0, 0.0, 1.0);\n\n float toAlpha = (1.0 + frontFace.a) * 0.5;\n frontFace.a = mix(frontFace.a, toAlpha, frontWeight);")}
|
|
11
|
+
|
|
12
|
+
vec4 emission = texture(emissionTexture, uv);
|
|
13
|
+
emission.rgb *= floatBlendInputScale;
|
|
14
|
+
vec4 emissionFrontFace = texture(emissionFrontFaceTexture, uv);
|
|
15
|
+
emissionFrontFace.rgb *= floatBlendInputScale;
|
|
16
|
+
|
|
17
|
+
// Modulate transparent emitter by front faces. This case is important for surfaces which contain emitter and
|
|
18
|
+
// non-emitter at the same time. Non-emitter surface parts need to modulate emissions as well.
|
|
19
|
+
emission.rgb = emission.rgb * (1.0 - frontFace.a);
|
|
20
|
+
|
|
21
|
+
fragEmission = vec4(mix(emission.rgb / srcAlpha, emissionFrontFace.rgb, emissionFrontFace.a) * floatBlendOutputScale, 1.0 - srcColor.a);
|
|
22
|
+
`),i}const c=Object.freeze(Object.defineProperty({__proto__:null,OITBlendEmissionPassParameters:i,build:l},Symbol.toStringTag,{value:"Module"}));export{c as O,i as a,l as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
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{EmissionDimming as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/EmissionDimming.glsl.js";import{glsl as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{oitResolution as i}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{NoParameters as n}from"../views/webgl/NoParameters.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class t extends n{}function
|
|
2
|
+
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{EmissionDimming as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/EmissionDimming.glsl.js";import{glsl as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{oitResolution as i}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{NoParameters as n}from"../views/webgl/NoParameters.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class t extends n{}function a(n){const t=new l;t.include(e),t.fragment.include(r),t.fragment.include(i,n);const{fragment:a,outputs:m}=t;return a.uniforms.add(new o("colorTexture",e=>e.colorTexture)),m.add("fragEmission","vec4",1),a.main.add(s`vec4 srcColor = texture(colorTexture, uv);
|
|
3
3
|
srcColor.rgb *= floatBlendInputScale;
|
|
4
4
|
vec3 dimming = emissionDimming(srcColor.rgb, 1.0 - srcColor.a);
|
|
5
|
-
fragEmission = vec4(dimming, 0.0);`),t}const
|
|
5
|
+
fragEmission = vec4(dimming, 0.0);`),t}const m=Object.freeze(Object.defineProperty({__proto__:null,OITDimOpaquePassParameters:t,build:a},Symbol.toStringTag,{value:"Module"}));export{t as O,m as a,a as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as p,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as
|
|
2
|
+
import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as p,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as D,If as u}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as L}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as w}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as b}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as y}from"../views/webgl/ShaderBuilder.js";const P=1;function C(P){const C=new y,{attributes:z,varyings:F,vertex:j,fragment:W}=C,{applyMarkerOffset:R,draped:I,output:V,capType:A,stippleEnabled:E,falloffEnabled:N,roundJoins:T,wireframe:O,innerColorEnabled:J,hasAnimation:_,hasScreenSizePerspective:M,worldSizedImagePattern:U}=P;j.inputs.add("position",()=>"position"),W.include(a),C.include(t,P),C.include(n,P),C.include(i,P),C.include(w,P);const H=R&&!I;H&&(j.uniforms.add(new S("markerScale",e=>e.markerScale)),C.include(o,{space:2,hasScreenSizePerspective:M})),p(j,P),j.uniforms.add(new x("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new v("nearFar",e=>e.camera.nearFar),new S("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new f("viewport",e=>e.camera.fullViewport)),j.constants.add("LARGE_HALF_FLOAT","float",65500),j.constants.add("EPS","float",.001),j.constants.add("NUM_JOIN_SUBDIVISIONS","float",P.numJoinSubdivisions),z.add("position","vec3"),z.add("previousDelta","vec4"),z.add("nextDelta","vec4"),z.add("lineParameters","vec2"),z.add("u0","float"),F.add("vColor","vec4"),F.add("vpos","vec3",{invariant:!0}),F.add("vLineDistance","float"),F.add("vLineWidth","float"),E||(F.add("vIsInsideJoin","int"),F.add("vStretchFactor","float"),F.add("vJoinCenterLineSDFs","vec2"),F.add("vSubdivisionFactor","float"));const $=E;$&&F.add("vLineSizeInv","float");const B=2===A,k=E&&B,G=N||k;G&&F.add("vLineDistanceNorm","float"),B&&(F.add("vSegmentSDF","float"),F.add("vReverseSegmentSDF","float")),j.code.add(D`vec3 perpendicular(vec3 v) {
|
|
3
3
|
return vec3(v.y, -v.x, 0.0);
|
|
4
4
|
}
|
|
5
5
|
float interp(float ncp, vec4 a, vec4 b) {
|
|
@@ -10,12 +10,12 @@ float s = sin(a);
|
|
|
10
10
|
float c = cos(a);
|
|
11
11
|
mat2 m = mat2(c, -s, s, c);
|
|
12
12
|
return vec3(m * v.xy, v.z);
|
|
13
|
-
}`),
|
|
13
|
+
}`),j.code.add(D`vec4 projectAndScale(vec4 pos) {
|
|
14
14
|
vec4 posNdc = proj * pos;
|
|
15
15
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
16
16
|
posNdc.z /= posNdc.w;
|
|
17
17
|
return posNdc;
|
|
18
|
-
}`),
|
|
18
|
+
}`),j.code.add(D`void clip(
|
|
19
19
|
inout vec4 pos,
|
|
20
20
|
inout vec4 prev,
|
|
21
21
|
inout vec4 next,
|
|
@@ -46,7 +46,7 @@ if (next.z > -nearFar[0]) {
|
|
|
46
46
|
next = mix(next, pos, interp(vnp, next, pos));
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
}`),m(
|
|
49
|
+
}`),m(j),j.constants.add("aaWidth","float",E?0:1).main.add(D`
|
|
50
50
|
// unpack values from vertex type
|
|
51
51
|
bool isStartVertex = abs(abs(lineParameters.y) - 3.0) == 1.0;
|
|
52
52
|
vec3 prevPosition = position + previousDelta.xyz * previousDelta.w;
|
|
@@ -65,11 +65,11 @@ next = mix(next, pos, interp(vnp, next, pos));
|
|
|
65
65
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
66
66
|
|
|
67
67
|
bool isJoin = abs(lineParameters.y) < 3.0;
|
|
68
|
-
`)
|
|
68
|
+
`),H&&j.main.add(D`vec4 other = isStartVertex ? next : prev;
|
|
69
69
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
70
70
|
if (!isJoin && !markersHidden) {
|
|
71
71
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
72
|
-
}`),C.include(d),
|
|
72
|
+
}`),C.include(d),j.main.add(D`
|
|
73
73
|
clip(pos, prev, next, isStartVertex);
|
|
74
74
|
|
|
75
75
|
vec3 clippedPos = pos.xyz;
|
|
@@ -85,11 +85,11 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
85
85
|
float leftLen = length(left);
|
|
86
86
|
float rightLen = length(right);
|
|
87
87
|
|
|
88
|
-
float lineSize = getSize(${
|
|
89
|
-
${
|
|
90
|
-
${
|
|
88
|
+
float lineSize = getSize(${u(M,"clippedPos")});
|
|
89
|
+
${u(E&&M,"float patternLineSize = getSize(clippedCenter);")}
|
|
90
|
+
${u(E&&!M,"float patternLineSize = lineSize;")}
|
|
91
91
|
|
|
92
|
-
${
|
|
92
|
+
${u(U,D`
|
|
93
93
|
lineSize += aaWidth;
|
|
94
94
|
float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
|
|
95
95
|
if (lineWidth < 1.0) {
|
|
@@ -107,22 +107,23 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
107
107
|
`)}
|
|
108
108
|
|
|
109
109
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
110
|
-
${
|
|
111
|
-
`);(E||
|
|
110
|
+
${$?D`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
111
|
+
`);(E||B)&&j.main.add(D`
|
|
112
112
|
float isEndVertex = float(!isStartVertex);
|
|
113
113
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
114
114
|
vec3 segment = mix(right, left, isEndVertex);
|
|
115
|
-
${
|
|
116
|
-
`),
|
|
115
|
+
${B?D`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
|
|
116
|
+
`),j.main.add(D`left = (leftLen > EPS) ? left/leftLen : vec3(0.0, 0.0, 0.0);
|
|
117
117
|
right = (rightLen > EPS) ? right/rightLen : vec3(0.0, 0.0, 0.0);
|
|
118
118
|
vec3 segmentDirection = isStartVertex ? right : left;
|
|
119
119
|
vec3 capDisplacementDir = vec3(0.0, 0.0, 0.0);
|
|
120
120
|
vec3 joinDisplacementDir = vec3(0.0, 0.0, 0.0);
|
|
121
121
|
float displacementLen = lineWidth;
|
|
122
122
|
float miterDisplacementLen = lineWidth;
|
|
123
|
-
float innerDisplacementLen = lineWidth;`),E||
|
|
123
|
+
float innerDisplacementLen = lineWidth;`),E||j.main.add(D`vIsInsideJoin = 0;
|
|
124
124
|
vStretchFactor = 1.0;
|
|
125
|
-
|
|
125
|
+
vSubdivisionFactor = 0.0;
|
|
126
|
+
vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);`),j.main.add(D`float subdivisionFactor = 0.0;
|
|
126
127
|
bool isOutside = false;
|
|
127
128
|
if (isJoin) {
|
|
128
129
|
isOutside = (left.x * right.y - left.y * right.x) * lineParameters.y > 0.0;
|
|
@@ -137,7 +138,10 @@ if (!isOutside) {
|
|
|
137
138
|
displacementLen = innerDisplacementLen;
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
|
-
subdivisionFactor = lineParameters.x;`),E||
|
|
141
|
+
subdivisionFactor = lineParameters.x;`),E||j.main.add(D`if(subdivisionFactor > 0.0) {
|
|
142
|
+
vIsInsideJoin = 1;
|
|
143
|
+
}
|
|
144
|
+
vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
|
|
141
145
|
if (miterDisplacementLen > miterLimit * lineWidth) {
|
|
142
146
|
vec2 leftScreenDir = left.xy;
|
|
143
147
|
vec2 rightScreenDir = right.xy;
|
|
@@ -146,11 +150,13 @@ float rightScreenLen = length(rightScreenDir);
|
|
|
146
150
|
if (leftScreenLen > EPS && rightScreenLen > EPS) {
|
|
147
151
|
leftScreenDir /= leftScreenLen;
|
|
148
152
|
rightScreenDir /= rightScreenLen;
|
|
149
|
-
float
|
|
150
|
-
float
|
|
153
|
+
float theta = acos(clamp(dot(leftScreenDir, rightScreenDir), -1.0, 1.0));
|
|
154
|
+
float subdividedTriangleHeight = (innerDisplacementLen + lineWidth) * cos(theta / (2.0 + 2.0 * NUM_JOIN_SUBDIVISIONS));
|
|
155
|
+
float bevelTriangleHeight = innerDisplacementLen + lineWidth * cos(theta * 0.5);
|
|
156
|
+
float triangleHeight = NUM_JOIN_SUBDIVISIONS > 0.0 ? subdividedTriangleHeight : bevelTriangleHeight;
|
|
151
157
|
vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0), pos.w);
|
|
152
158
|
}
|
|
153
|
-
}`),
|
|
159
|
+
}`),j.main.add(D`if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),T?j.main.add(D`
|
|
154
160
|
vec3 startDir = leftLen < EPS ? right : left;
|
|
155
161
|
startDir = perpendicular(startDir);
|
|
156
162
|
|
|
@@ -161,16 +167,12 @@ vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0)
|
|
|
161
167
|
|
|
162
168
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
163
169
|
joinDisplacementDir = rotateZ(startDir, -sign(lineParameters.y) * factor * rotationAngle);
|
|
164
|
-
`):
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
joinDisplacementDir =
|
|
169
|
-
|
|
170
|
-
else {
|
|
171
|
-
joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
|
|
172
|
-
}
|
|
173
|
-
joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==I;return F.main.add(D`
|
|
170
|
+
`):j.main.add(D`
|
|
171
|
+
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
172
|
+
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
173
|
+
|
|
174
|
+
${u(E,D`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,D`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
175
|
+
`);const X=0!==A;return j.main.add(D`
|
|
174
176
|
displacementLen = lineWidth;
|
|
175
177
|
}
|
|
176
178
|
} else {
|
|
@@ -180,7 +182,7 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==I;return
|
|
|
180
182
|
|
|
181
183
|
${X?D`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
|
|
182
184
|
}
|
|
183
|
-
`),
|
|
185
|
+
`),j.main.add(D`
|
|
184
186
|
// Displacement (in pixels) caused by join/or cap
|
|
185
187
|
vec2 dposXY = (joinDisplacementDir.xy * sign(lineParameters.y) + capDisplacementDir.xy) * displacementLen;
|
|
186
188
|
|
|
@@ -199,7 +201,7 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==I;return
|
|
|
199
201
|
${G?D`vLineDistanceNorm = lineDistNorm;`:""}
|
|
200
202
|
|
|
201
203
|
pos.xyz += dpos;
|
|
202
|
-
`),E||
|
|
204
|
+
`),E||j.main.add(D`if (isJoin) {
|
|
203
205
|
vec2 joinCenterToVertex = dposXY;
|
|
204
206
|
vec2 leftCenterlineDir = left.xy;
|
|
205
207
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -207,25 +209,26 @@ float leftCenterlineLen = length(leftCenterlineDir);
|
|
|
207
209
|
float rightCenterlineLen = length(rightCenterlineDir);
|
|
208
210
|
leftCenterlineDir = leftCenterlineLen > EPS ? leftCenterlineDir / leftCenterlineLen : vec2(1.0, 0.0);
|
|
209
211
|
rightCenterlineDir = rightCenterlineLen > EPS ? rightCenterlineDir / rightCenterlineLen : leftCenterlineDir;
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
vJoinCenterLineSDFs = noPerspectiveWrite(
|
|
213
|
+
vec2(
|
|
214
|
+
dot(vec2(rightCenterlineDir.y, -rightCenterlineDir.x), joinCenterToVertex),
|
|
215
|
+
dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
216
|
+
),
|
|
214
217
|
pos.w
|
|
215
218
|
);
|
|
216
|
-
}`),
|
|
219
|
+
}`),B&&j.main.add(D`vec2 segmentDir = normalize(segment.xy);
|
|
217
220
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
218
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),E&&(
|
|
219
|
-
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
221
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),E&&(I?j.uniforms.add(new h("worldToScreenRatio",e=>1/e.screenToPCSRatio)):j.main.add(D`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
222
|
+
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),j.main.add(D`float segmentLengthScreenDouble = length(segment.xy);
|
|
220
223
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
221
224
|
float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
|
|
222
225
|
float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
|
|
223
|
-
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),
|
|
224
|
-
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
225
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),
|
|
226
|
+
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),I?j.main.add(D`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
|
|
227
|
+
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):j.main.add(D`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
|
|
228
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),j.uniforms.add(new S("stipplePatternPixelSize",e=>r(e))),j.main.add(D`
|
|
226
229
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
227
230
|
|
|
228
|
-
${
|
|
231
|
+
${u(U,D`
|
|
229
232
|
float uu = mix(u0, u0 - segmentLengthRender, isEndVertex);
|
|
230
233
|
vStippleDistanceLimits = vec2(uu, uu + segmentLengthRender);
|
|
231
234
|
vStipplePatternStretch = 1.0;
|
|
@@ -264,7 +267,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
264
267
|
isStartVertex ?
|
|
265
268
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
266
269
|
vec2(vStippleDistanceLimits.x, 1e34);
|
|
267
|
-
`)),
|
|
270
|
+
`)),j.main.add(D`
|
|
268
271
|
// Convert back into NDC
|
|
269
272
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
270
273
|
pos.z = pos.z * pos.w;
|
|
@@ -272,7 +275,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
272
275
|
vColor = getColor();
|
|
273
276
|
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
274
277
|
|
|
275
|
-
${
|
|
278
|
+
${O&&!I?"pos.z -= EPS * pos.w;":""}
|
|
276
279
|
|
|
277
280
|
// transform final position to camera space for slicing
|
|
278
281
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
@@ -281,15 +284,15 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
281
284
|
}`),C.fragment.include(e,P),C.include(b,P),W.include(l),W.main.add(D`discardBySlice(vpos);`),C.include(c),W.include(L),W.main.add(D`
|
|
282
285
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
283
286
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
284
|
-
${
|
|
285
|
-
`),
|
|
287
|
+
${u(G,D`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
288
|
+
`),O?W.main.add(D`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(B&&W.main.add(D`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
286
289
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
287
290
|
float fragmentRadius = length(fragmentPosition);
|
|
288
291
|
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
|
|
289
292
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
290
293
|
if (capCoverage < alphaCutoff) {
|
|
291
294
|
discard;
|
|
292
|
-
}`),
|
|
295
|
+
}`),k?W.main.add(D`vec2 stipplePosition = vec2(
|
|
293
296
|
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
294
297
|
lineDistanceNorm
|
|
295
298
|
);
|
|
@@ -300,19 +303,20 @@ float stippleAlpha = step(alphaCutoff, stippleCoverage);`):W.main.add(D`float st
|
|
|
300
303
|
color.a = noPerspectiveRead(color.a);`),J&&W.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new S("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(D`float distToInner = abs(lineDistance) - innerWidth;
|
|
301
304
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
302
305
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
303
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),W.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),N&&(W.uniforms.add(new S("falloff",e=>e.falloff)),W.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),E||W.main.add(D`float stretchFactor = vIsInsideJoin
|
|
306
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),W.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),N&&(W.uniforms.add(new S("falloff",e=>e.falloff)),W.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),E||W.main.add(D`float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
304
307
|
float featherWidth = 2.0;
|
|
305
308
|
float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
|
|
306
309
|
float straightFeatherStartDistance = max(lineWidth - featherWidth, 0.0);
|
|
307
310
|
float value = abs(lineDistance);
|
|
308
311
|
float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
|
|
309
|
-
|
|
310
|
-
float
|
|
311
|
-
|
|
312
|
+
vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
|
|
313
|
+
float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
|
|
314
|
+
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
315
|
+
feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
|
|
312
316
|
finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),_&&W.main.add(D`
|
|
313
317
|
finalColor = animate(finalColor);
|
|
314
318
|
|
|
315
|
-
${
|
|
319
|
+
${u(11!==V,D`
|
|
316
320
|
if (finalColor.a <= alphaCutoff) {
|
|
317
321
|
discard;
|
|
318
322
|
}`)}
|