@arcgis/core 5.2.0-next.111 → 5.2.0-next.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/components/assets/icon/alignBottom16.json +1 -0
- package/assets/components/assets/icon/alignBottom24.json +1 -0
- package/assets/components/assets/icon/alignBottom32.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal16.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal24.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal32.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical16.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical24.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical32.json +1 -0
- package/assets/components/assets/icon/alignLeft16.json +1 -0
- package/assets/components/assets/icon/alignLeft24.json +1 -0
- package/assets/components/assets/icon/alignLeft32.json +1 -0
- package/assets/components/assets/icon/alignRight16.json +1 -0
- package/assets/components/assets/icon/alignRight24.json +1 -0
- package/assets/components/assets/icon/alignRight32.json +1 -0
- package/assets/components/assets/icon/alignTop16.json +1 -0
- package/assets/components/assets/icon/alignTop24.json +1 -0
- package/assets/components/assets/icon/alignTop32.json +1 -0
- package/assets/components/assets/icon/columnGroup16.json +1 -0
- package/assets/components/assets/icon/columnGroup24.json +1 -0
- package/assets/components/assets/icon/columnGroup32.json +1 -0
- package/assets/components/assets/icon/columnRemove16.json +1 -0
- package/assets/components/assets/icon/columnRemove24.json +1 -0
- package/assets/components/assets/icon/columnRemove32.json +1 -0
- package/assets/components/assets/icon/columnUngroup16.json +1 -0
- package/assets/components/assets/icon/columnUngroup24.json +1 -0
- package/assets/components/assets/icon/columnUngroup32.json +1 -0
- package/assets/components/assets/icon/envelopeOpen16.json +1 -0
- package/assets/components/assets/icon/envelopeOpen24.json +1 -0
- package/assets/components/assets/icon/envelopeOpen32.json +1 -0
- package/assets/components/assets/icon/handDraw16.json +1 -0
- package/assets/components/assets/icon/handDraw24.json +1 -0
- package/assets/components/assets/icon/handDraw32.json +1 -0
- package/assets/components/assets/icon/monitorShare16.json +1 -0
- package/assets/components/assets/icon/monitorShare24.json +1 -0
- package/assets/components/assets/icon/monitorShare32.json +1 -0
- package/assets/components/assets/icon/pi16.json +1 -0
- package/assets/components/assets/icon/pi24.json +1 -0
- package/assets/components/assets/icon/pi32.json +1 -0
- package/assets/components/assets/icon/rowGroup16.json +1 -0
- package/assets/components/assets/icon/rowGroup24.json +1 -0
- package/assets/components/assets/icon/rowGroup32.json +1 -0
- package/assets/components/assets/icon/rowRemove16.json +1 -0
- package/assets/components/assets/icon/rowRemove24.json +1 -0
- package/assets/components/assets/icon/rowRemove32.json +1 -0
- package/assets/components/assets/icon/rowUngroup16.json +1 -0
- package/assets/components/assets/icon/rowUngroup24.json +1 -0
- package/assets/components/assets/icon/rowUngroup32.json +1 -0
- package/assets/components/assets/icon/sdCard16.json +1 -0
- package/assets/components/assets/icon/sdCard24.json +1 -0
- package/assets/components/assets/icon/sdCard32.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal16.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal24.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal32.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical16.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical24.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical32.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal16.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal24.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal32.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical16.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical24.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical32.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal16.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal24.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal32.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical16.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical24.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical32.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal16.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal24.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal32.json +1 -0
- package/assets/components/assets/icon/stretchVertical16.json +1 -0
- package/assets/components/assets/icon/stretchVertical24.json +1 -0
- package/assets/components/assets/icon/stretchVertical32.json +1 -0
- package/assets/components/assets/icon/swatchPalette16.json +1 -0
- package/assets/components/assets/icon/swatchPalette24.json +1 -0
- package/assets/components/assets/icon/swatchPalette32.json +1 -0
- package/assets/components/assets/icon/thermometer16.json +1 -0
- package/assets/components/assets/icon/thermometer24.json +1 -0
- package/assets/components/assets/icon/thermometer32.json +1 -0
- package/assets/components/assets/icon/webCamera16.json +1 -0
- package/assets/components/assets/icon/webCamera24.json +1 -0
- package/assets/components/assets/icon/webCamera32.json +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/078ed48eb055dd213ee6.js +1 -0
- package/assets/esri/core/workers/chunks/186350d720352bd5ff33.js +1 -0
- package/assets/esri/core/workers/chunks/21c0743b2f612e7e7de3.js +1 -0
- package/assets/esri/core/workers/chunks/25cc6d7178a52f2f46b7.js +1 -0
- package/assets/esri/core/workers/chunks/{6010799e05d239073de0.js → 25ecf94d776c3b6db0f3.js} +1 -1
- package/assets/esri/core/workers/chunks/{10d33b4f248864225f85.js → 2728eda8178e02fbca47.js} +1 -1
- package/assets/esri/core/workers/chunks/{4c9df8ae9238454969b8.js → 2c21f4744e19b925a6ae.js} +1 -1
- package/assets/esri/core/workers/chunks/32fc7d1db4b311f6b880.js +1 -0
- package/assets/esri/core/workers/chunks/3acc1299c1382c3b034d.js +1 -0
- package/assets/esri/core/workers/chunks/{c2684fcde2923c9830e0.js → 42c4d0c1c08bf111e5a4.js} +1 -1
- package/assets/esri/core/workers/chunks/430802108b63194b7ddd.js +2 -0
- package/assets/esri/core/workers/chunks/{f5e8ccbd6b4c0a386903.js → 448f068a14f24f2f8a43.js} +1 -1
- package/assets/esri/core/workers/chunks/49c6dc487714f9cd55c7.js +1 -0
- package/assets/esri/core/workers/chunks/{70e0ead69a722fd964b8.js → 49e8ff5ed079a9e3be4b.js} +1 -1
- package/assets/esri/core/workers/chunks/{69921d068add041b5dcb.js → 5134241be1f1bf25231a.js} +1 -1
- package/assets/esri/core/workers/chunks/{54bb3678570ca032f051.js → 5762746cfb02a4119d82.js} +1 -1
- package/assets/esri/core/workers/chunks/{434c5b54e89ace974cbd.js → 5965a947f68b707eaa6b.js} +2 -2
- package/assets/esri/core/workers/chunks/6c25c929bcde7e3a2af1.js +1 -0
- package/assets/esri/core/workers/chunks/7610dd0b46948b7bd840.js +1 -0
- package/assets/esri/core/workers/chunks/7be56ac60e580c806a5d.js +1 -0
- package/assets/esri/core/workers/chunks/7f2ac03efaa4a4898ba2.js +2 -0
- package/assets/esri/core/workers/chunks/{847781aefed049493444.js → 9f760dc4492a03e0504c.js} +1 -1
- package/assets/esri/core/workers/chunks/{013c9cc198736a72f7f2.js → 9fb46ccd4be4c3b61c31.js} +1 -1
- package/assets/esri/core/workers/chunks/bdcca906fdfb8e179abb.js +2 -0
- package/assets/esri/core/workers/chunks/c5ceceb0683671f92efa.js +1 -0
- package/assets/esri/core/workers/chunks/c5e288d57bacb8451e2d.js +2 -0
- package/assets/esri/core/workers/chunks/{b92b7d6c1e693c97a3eb.js → d1f54b0079fb71a15612.js} +1 -1
- package/assets/esri/core/workers/chunks/{72be81c1394285b51ed3.js → d45483dd0dc2853b18b7.js} +212 -216
- package/assets/esri/core/workers/chunks/d5e3f8e5b8d2576d3cb3.js +2 -0
- package/assets/esri/core/workers/chunks/{21d4219844ae5654618b.js → d926bffc3ff9f87e9081.js} +1 -1
- package/assets/esri/core/workers/chunks/{abcda435bc83ef4240f9.js → e6dae16208f6978b59e0.js} +1 -1
- package/assets/esri/core/workers/chunks/e755075ac2e02e881fad.js +1 -0
- package/assets/esri/core/workers/chunks/{058d4c927486a361e633.js → ea9e770efc85594e4dd2.js} +1 -1
- package/assets/esri/core/workers/chunks/eff99e45d818e58fd443.js +1 -0
- package/assets/esri/core/workers/chunks/{a49147203e55609630cc.js → f453dc4a075d2f900c7d.js} +1 -1
- package/assets/esri/core/workers/chunks/f465fb26541372fdc908.js +2 -0
- package/assets/esri/core/workers/chunks/{b7809ef3e1dabd921339.js → f72f4413fc7461e11a2a.js} +1 -1
- package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +1 -0
- package/assets/esri/themes/base/widgets/_Bookmarks.scss +1 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/ChapmanAtmosphere.glsl.js +1 -1
- package/chunks/Component.glsl.js +57 -56
- package/chunks/DefaultMaterial.glsl.js +19 -23
- package/chunks/GaussianSplat.glsl.js +13 -11
- package/chunks/GlobalIllumination.glsl.js +1 -1
- package/chunks/Haze.glsl.js +1 -1
- package/chunks/Path.glsl.js +21 -24
- package/chunks/RealisticTree.glsl.js +42 -41
- package/chunks/RibbonLine.glsl.js +65 -56
- package/chunks/SimpleAtmosphere.glsl.js +1 -1
- package/chunks/Terrain.glsl.js +25 -25
- package/chunks/Water.glsl.js +4 -4
- package/config.js +1 -1
- package/core/units.js +1 -1
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/GaussianSplatLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/mixins/TiledImagery.d.ts +6 -0
- package/layers/mixins/TiledImagery.js +1 -1
- package/layers/raster/datasets/ImageServerRaster.js +1 -1
- package/layers/raster/datasets/RasterFactory.js +1 -1
- package/layers/support/domainUtils.d.ts +2 -0
- package/layers/support/domainUtils.js +1 -1
- package/layers/support/fieldUtils.d.ts +10 -0
- package/layers/support/fieldUtils.js +1 -1
- package/package.json +6 -6
- package/support/revision.js +1 -1
- package/symbols/LineStyleMarker3D.d.ts +3 -4
- package/symbols/LineSymbol3D.d.ts +19 -2
- package/symbols/LineSymbol3D.js +1 -1
- package/symbols/LineSymbol3DLayer.d.ts +13 -6
- package/symbols/Symbol3DLayer.d.ts +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/clipping.js +2 -0
- package/views/2d/input/MapViewInputManager.js +1 -1
- package/views/2d/input/handlers/KeyPan.js +1 -1
- package/views/2d/layers/support/annodime/DimensionInfo.js +1 -1
- package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentDrawParameters.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +57 -58
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +7 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js +5 -10
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js +10 -48
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +16 -22
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +5 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrGlobals.glsl.js +19 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrShadingInfo.glsl.js +24 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +2 -2
- package/views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js +4 -4
- package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/VisualVariablePassParameters.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +19 -22
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/SlicePlaneMaterialTechniqueConfiguration.js +1 -1
- package/views/MapView.d.ts +1 -0
- package/views/SceneView.d.ts +1 -0
- package/views/View.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
- package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/MultipleChoiceController.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/FeatureForm/featureFormUtils.js +1 -1
- package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
- package/widgets/Search/LocatorSearchSource.d.ts +4 -3
- package/widgets/support/forms/formUtils.d.ts +5 -0
- package/widgets/support/forms/formUtils.js +1 -1
- package/widgets/support/forms/types.d.ts +7 -1
- package/assets/esri/core/workers/chunks/075eb62465edb9cbf907.js +0 -1
- package/assets/esri/core/workers/chunks/0ff13f7a18b0123d253e.js +0 -1
- package/assets/esri/core/workers/chunks/1082bb0858585bd4fa21.js +0 -2
- package/assets/esri/core/workers/chunks/19ac6f4664f97fb3821c.js +0 -1
- package/assets/esri/core/workers/chunks/1ec01fd6330d011c76d6.js +0 -1
- package/assets/esri/core/workers/chunks/2e2349387a2b9903f13c.js +0 -2
- package/assets/esri/core/workers/chunks/349e9f3d3e3267d02988.js +0 -1
- package/assets/esri/core/workers/chunks/3ffc852db1a820ed143b.js +0 -1
- package/assets/esri/core/workers/chunks/411bbdecba340df11d95.js +0 -2
- package/assets/esri/core/workers/chunks/4490dd8bae0dd2769d99.js +0 -1
- package/assets/esri/core/workers/chunks/476535cfb06ced74d611.js +0 -2
- package/assets/esri/core/workers/chunks/5e56a004b4407b8066eb.js +0 -1
- package/assets/esri/core/workers/chunks/6df29716f75696434807.js +0 -1
- package/assets/esri/core/workers/chunks/a322afbb48898ce35851.js +0 -1
- package/assets/esri/core/workers/chunks/b82b523b6837ed1f28d3.js +0 -2
- package/assets/esri/core/workers/chunks/c7b762bae945f383c723.js +0 -1
- package/assets/esri/core/workers/chunks/ef24fd6c0322e5de9fdf.js +0 -2
- package/assets/esri/core/workers/chunks/f9e5740b05de24ba81be.js +0 -1
- package/assets/esri/core/workers/chunks/fc622f9e33e3b48113c8.js +0 -1
- /package/assets/esri/core/workers/chunks/{476535cfb06ced74d611.js.LICENSE.txt → 430802108b63194b7ddd.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{b82b523b6837ed1f28d3.js.LICENSE.txt → 7f2ac03efaa4a4898ba2.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{ef24fd6c0322e5de9fdf.js.LICENSE.txt → bdcca906fdfb8e179abb.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{1082bb0858585bd4fa21.js.LICENSE.txt → c5e288d57bacb8451e2d.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{2e2349387a2b9903f13c.js.LICENSE.txt → d5e3f8e5b8d2576d3cb3.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{411bbdecba340df11d95.js.LICENSE.txt → f465fb26541372fdc908.js.LICENSE.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as o}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as
|
|
2
|
+
import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as o}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VerticalOffset as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as n}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{DefaultMaterialExternalColor as d}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js";import{EvaluateAmbientOcclusion as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as g,addAmbientBoostFactor as m,addLightingGlobalFactor as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightDirection as u,mainLightIntensity as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PhysicallyBasedRendering as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPassFragment as h,ReadShadowMapDrawFragment as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{colorTextureUV as L,emissiveTextureUV as j}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as C}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as O,addCameraPosition as P}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{If as N,glsl as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as M}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{SnowCover as A}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as T}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as V}from"../views/webgl/ShaderBuilder.js";function F(F){const R=new V,{attributes:B,vertex:$,fragment:U,varyings:E}=R,{output:I,offsetBackfaces:_,pbrMode:k,snowCover:z}=F,W=1===k||2===k;if(O($,F),B.add("position","vec3"),$.inputs.add("position",()=>"position"),E.add("vpos","vec3",{invariant:!0}),R.include(x,F),R.include(a,F),R.include(t,F),R.include(L,F),!i(I))return R.include(n,F),R;R.include(j,F),P(R.vertex,F),R.include(l,F),R.include(o),_&&R.include(e),E.add("vNormalWorld","vec3"),E.add("localvpos","vec3",{invariant:!0}),R.include(s,F),R.include(d,F),R.include(F.instancedDoublePrecision?h:y,F),$.main.add(D`
|
|
3
3
|
forwardDefaultMaterialExternalColor();
|
|
4
4
|
|
|
5
5
|
vpos = getVertexInLocalOriginSpace();
|
|
@@ -16,43 +16,44 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
|
|
|
16
16
|
forwardLinearDepthToReadShadowMap();
|
|
17
17
|
|
|
18
18
|
gl_Position = shouldCullByOpacity() ? vec4(1e38, 1e38, 1e38, 1.0) :
|
|
19
|
-
${
|
|
20
|
-
`);const{hasColorTexture:H,hasColorTextureTransform:G}=
|
|
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
|
-
|
|
19
|
+
${N(_,"offsetBackfacingClipPosition(basePosition, vpos, vNormalWorld, cameraPosition);","basePosition;")}
|
|
20
|
+
`);const{hasColorTexture:H,hasColorTextureTransform:G}=F;return U.include(g,F),U.include(c,F),R.include(C,F),U.include(r,F),R.include(T,F),P(U,F),m(U),v(U),U.uniforms.add(u,$.uniforms.get("localOrigin"),$.uniforms.get("view"),new S("ambient",e=>e.ambient),new S("diffuse",e=>e.diffuse)),H&&U.uniforms.add(new M("tex",e=>e.texture)),R.include(p,F),U.include(f,F),U.include(A,F),U.include(b,F),U.uniforms.add(w).main.add(D`
|
|
21
|
+
discardBySlice(vpos);
|
|
22
|
+
vec4 texColor = ${H?`texture(tex, ${G?"colorUV":"vuv0"})`:" vec4(1.0)"};
|
|
23
|
+
${N(H,`${N(F.textureAlphaPremultiplied,"texColor.rgb /= texColor.a;")}\n discardOrAdjustAlpha(texColor);`)}
|
|
24
|
+
applyPBRFactors();
|
|
25
|
+
float ssao = evaluateAmbientOcclusionInverse();
|
|
26
|
+
ssao *= getBakedOcclusion();
|
|
27
|
+
|
|
28
|
+
float additionalAmbientScale = additionalDirectedAmbientLight(vpos + localOrigin);
|
|
29
|
+
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
30
|
+
float shadow = readShadow(additionalAmbientScale, vpos);
|
|
31
|
+
vec3 matColor = max(ambient, diffuse);
|
|
32
|
+
vec3 albedo = mixExternalColor(
|
|
33
|
+
${N(F.hasVertexColors,"vColor.rgb * ")} matColor,
|
|
34
|
+
texColor.rgb,
|
|
35
|
+
vExternalColor.rgb,
|
|
36
|
+
colorMixMode
|
|
37
|
+
);
|
|
38
|
+
float opacity_ = getDefaultMaterialOpacity(texColor.a);
|
|
39
|
+
|
|
40
|
+
vec3 shadingNormal = normalize(vNormalWorld);
|
|
41
|
+
vec3 viewDirection = normalize(vpos - cameraPosition);
|
|
42
|
+
vec3 upNormal = getLocalUp(vpos, localOrigin);
|
|
43
|
+
|
|
44
|
+
${N(z,"vec3 faceNormal = screenDerivativeNormal(vpos);\n float snow = getRealisticTreeSnow(faceNormal, shadingNormal, upNormal);\n albedo = mix(albedo, vec3(1), snow);")}
|
|
45
|
+
|
|
46
|
+
${D`albedo *= 1.2;
|
|
47
|
+
vec3 viewForward = vec3(view[0][2], view[1][2], view[2][2]);
|
|
48
|
+
float alignmentLightView = clamp(dot(viewForward, -mainLightDirection), 0.0, 1.0);
|
|
49
|
+
float transmittance = 1.0 - clamp(dot(viewForward, shadingNormal), 0.0, 1.0);
|
|
50
|
+
float treeRadialFalloff = vColor.r;
|
|
51
|
+
float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);
|
|
52
|
+
additionalLight += backLightFactor * mainLightIntensity;`}
|
|
53
|
+
|
|
54
|
+
${N(W&&z,"applySnowToMRR(snow);")}
|
|
55
|
+
|
|
56
|
+
vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, upNormal);
|
|
57
|
+
vec4 finalColor = vec4(shadedColor, opacity_);
|
|
58
|
+
outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${N(z,", 1.0")});
|
|
59
|
+
`),R}const R=Object.freeze(Object.defineProperty({__proto__:null,build:F},Symbol.toStringTag,{value:"Module"}));export{R,F as b};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateSceneLighting as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.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{NormalUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as m,addPixelRatio as v}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{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateSceneLighting as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.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{NormalUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as m,addPixelRatio as v,addCameraPosition as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as D,If as b}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as L}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as w}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as y}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as C}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as P}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as F}from"../views/webgl/ShaderBuilder.js";const j=1;function z(j){const z=new F,{attributes:A,varyings:W,vertex:T,fragment:R}=z,{applyMarkerOffset:I,draped:V,shadingEnabled:E,output:N,capType:O,stippleEnabled:$,falloffEnabled:J,wireframe:U,innerColorEnabled:_,hasAnimation:M,hasScreenSizePerspective:H,worldSized:B,imagePattern:k}=j,G=2===O,X=$&&G,Y=J||X,Z=$||G,q=P(j).createBuilder(z,j);T.inputs.add("position",()=>q.getTextureAttribute("position")),j.hasVVSize?T.inputs.add("sizeFeatureAttribute",()=>q.getTextureAttribute("sizeFeatureAttribute")):T.inputs.add("size",()=>q.getTextureAttribute("size")),j.hasVVOpacity&&T.inputs.add("opacityFeatureAttribute",()=>q.getTextureAttribute("opacityFeatureAttribute")),j.hasVVColor?T.inputs.add("colorFeatureAttribute",()=>q.getTextureAttribute("colorFeatureAttribute")):T.inputs.add("color",()=>q.getTextureAttribute("color")),R.include(s),z.include(t,j),z.include(n,j);const K={animation:j.animation,hasAnimation:j.hasAnimation,timeStampsExpr:q.getTextureAttribute("timeStamps")};z.include(y,K),11===N?(z.varyings.add("objectAndLayerIdColorVarying","vec4"),T.code.add(D`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
|
-
return ${
|
|
4
|
+
return ${q.getTextureAttribute("olidColor")};
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),
|
|
10
|
+
`),R.code.add(D`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(
|
|
12
|
+
}`)):(T.code.add(D`void forwardObjectAndLayerIdColor() {}`),R.code.add(D`void outputObjectAndLayerIdColor() {}`));const Q=I&&!V;return Q&&(T.uniforms.add(new x("markerScale",e=>e.markerScale)),z.include(o,{space:2,hasScreenSizePerspective:H,worldSized:B})),m(T,j),V&&(B||$)&&T.uniforms.add(new S("worldToScreenRatio",e=>1/e.screenToPCSRatio)),T.uniforms.add(new L("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new f("nearFar",e=>e.camera.nearFar),new x("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new h("viewport",e=>e.camera.fullViewport)),T.constants.add("LARGE_HALF_FLOAT","float",65500),T.constants.add("EPS","float",.001),T.constants.add("NUM_JOIN_SUBDIVISIONS","float",j.numJoinSubdivisions),A.add("textureElementIndex","uint"),A.add("lineParameters","vec2"),W.add("vColor","vec4"),W.add("vpos","vec3",{invariant:!0}),W.add("vLineDistance","float"),W.add("vLineWidth","float"),$||(W.add("vIsInsideJoin","int"),W.add("vStretchFactor","float"),W.add("vJoinCenterLineSDFs","vec2"),W.add("vSubdivisionFactor","float")),$&&W.add("vLineSizeInv","float"),Y&&W.add("vLineDistanceNorm","float"),G&&(W.add("vSegmentSDF","float"),W.add("vReverseSegmentSDF","float")),T.code.add(D`vec3 perpendicular(vec3 v) {
|
|
13
13
|
return vec3(v.y, -v.x, 0.0);
|
|
14
14
|
}
|
|
15
15
|
float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
|
|
@@ -20,12 +20,12 @@ float s = sin(a);
|
|
|
20
20
|
float c = cos(a);
|
|
21
21
|
mat2 m = mat2(c, -s, s, c);
|
|
22
22
|
return vec3(m * v.xy, v.z);
|
|
23
|
-
}`),
|
|
23
|
+
}`),T.code.add(D`vec4 projectAndScale(vec4 pos) {
|
|
24
24
|
vec4 posNdc = proj * pos;
|
|
25
25
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
26
26
|
posNdc.z /= posNdc.w;
|
|
27
27
|
return posNdc;
|
|
28
|
-
}`),
|
|
28
|
+
}`),T.code.add(D`void clip(
|
|
29
29
|
inout vec4 pos,
|
|
30
30
|
inout vec4 prev,
|
|
31
31
|
inout vec4 next,
|
|
@@ -56,16 +56,20 @@ if (next.z > -nearFar[0]) {
|
|
|
56
56
|
next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos));
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
}`),v(
|
|
60
|
-
vec3 position = ${
|
|
61
|
-
float u0 = ${
|
|
59
|
+
}`),v(T),T.constants.add("aaWidth","float",$?0:1),T.main.add(D`
|
|
60
|
+
vec3 position = ${q.getTextureAttribute("position")};
|
|
61
|
+
float u0 = ${q.getTextureAttribute("u0")};
|
|
62
|
+
${b(B,D`
|
|
63
|
+
float prevU0 = ${q.getTextureAttribute("u0",-1)};
|
|
64
|
+
float nextU0 = ${q.getTextureAttribute("u0",1)};
|
|
65
|
+
`)}
|
|
62
66
|
|
|
63
67
|
// unpack values from vertex type
|
|
64
68
|
float vertexType = abs(lineParameters.y);
|
|
65
69
|
float lineSide = sign(lineParameters.y);
|
|
66
70
|
bool isStartVertex = vertexType == 2.0 || vertexType == 4.0;
|
|
67
|
-
vec3 prevPosition = ${
|
|
68
|
-
vec3 nextPosition = ${
|
|
71
|
+
vec3 prevPosition = ${q.getTextureAttribute("position",-1)};
|
|
72
|
+
vec3 nextPosition = ${q.getTextureAttribute("position",1)};
|
|
69
73
|
|
|
70
74
|
float coverage = 1.0;
|
|
71
75
|
|
|
@@ -80,11 +84,11 @@ next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, ne
|
|
|
80
84
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
81
85
|
|
|
82
86
|
bool isJoin = vertexType < 3.0;
|
|
83
|
-
`),
|
|
87
|
+
`),Q&&T.main.add(D`vec4 other = isStartVertex ? next : prev;
|
|
84
88
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
85
89
|
if (!isJoin && !markersHidden) {
|
|
86
90
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
87
|
-
}`),
|
|
91
|
+
}`),z.include(c),T.code.add(D`
|
|
88
92
|
vec2 computeJoinAndCapDisplacement(
|
|
89
93
|
bool isJoin,
|
|
90
94
|
bool isStartVertex,
|
|
@@ -129,7 +133,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
129
133
|
}
|
|
130
134
|
}
|
|
131
135
|
|
|
132
|
-
${D
|
|
136
|
+
${b(!$,D`
|
|
133
137
|
// Compute stretch compensation for feathering.
|
|
134
138
|
if (subdivisionFactor > 0.0) {
|
|
135
139
|
vIsInsideJoin = 1;
|
|
@@ -164,14 +168,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
164
168
|
`)}
|
|
165
169
|
|
|
166
170
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
167
|
-
${
|
|
171
|
+
${b(j.roundJoins,D`
|
|
168
172
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
169
173
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
170
|
-
float factor = ${
|
|
174
|
+
float factor = ${$?D`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:D`subdivisionFactor`};
|
|
171
175
|
|
|
172
176
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
173
177
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
174
|
-
`,
|
|
178
|
+
`,D`
|
|
175
179
|
/**
|
|
176
180
|
* Convert to bevel join if miterLimit is exceeded.
|
|
177
181
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -183,18 +187,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
183
187
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
184
188
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
185
189
|
|
|
186
|
-
${D
|
|
190
|
+
${b($,D`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,D`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
187
191
|
`)}
|
|
188
192
|
displacementLen = lineWidth;
|
|
189
193
|
}
|
|
190
194
|
} else {
|
|
191
195
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
192
|
-
${0!==
|
|
196
|
+
${0!==O?D`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
|
|
193
197
|
}
|
|
194
198
|
|
|
195
199
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
196
200
|
}
|
|
197
|
-
`),
|
|
201
|
+
`),T.main.add(D`
|
|
198
202
|
clip(pos, prev, next, isStartVertex);
|
|
199
203
|
|
|
200
204
|
vec3 clippedPos = pos.xyz;
|
|
@@ -207,18 +211,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
207
211
|
vec3 left = (pos.xyz - prev.xyz);
|
|
208
212
|
vec3 right = (next.xyz - pos.xyz);
|
|
209
213
|
|
|
210
|
-
float lineSize = getSize(${
|
|
211
|
-
${
|
|
212
|
-
${
|
|
214
|
+
float lineSize = getSize(${b(H,"clippedPos")});
|
|
215
|
+
${b($&&H,"float patternLineSize = getSize(clippedCenter);")}
|
|
216
|
+
${b($&&!H,"float patternLineSize = lineSize;")}
|
|
213
217
|
|
|
214
|
-
${
|
|
218
|
+
${b(B,D`
|
|
215
219
|
lineSize += aaWidth;
|
|
216
220
|
float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
|
|
217
221
|
if (lineWidth < 1.0) {
|
|
218
222
|
coverage = lineWidth;
|
|
219
223
|
lineWidth = 1.0;
|
|
220
224
|
}
|
|
221
|
-
`,
|
|
225
|
+
`,D`
|
|
222
226
|
if (lineSize < 1.0) {
|
|
223
227
|
coverage = lineSize; // convert sub-pixel coverage to alpha
|
|
224
228
|
lineSize = 1.0;
|
|
@@ -229,14 +233,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
229
233
|
`)}
|
|
230
234
|
|
|
231
235
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
232
|
-
${
|
|
233
|
-
`),
|
|
236
|
+
${$?D`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
237
|
+
`),Z&&T.main.add(D`
|
|
234
238
|
float isEndVertex = float(!isStartVertex);
|
|
235
239
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
236
240
|
vec3 segment = mix(right, left, isEndVertex);
|
|
237
|
-
${
|
|
238
|
-
`),
|
|
239
|
-
${D
|
|
241
|
+
${G?D`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
|
|
242
|
+
`),T.main.add(D`
|
|
243
|
+
${b(!$,D`
|
|
240
244
|
vIsInsideJoin = 0;
|
|
241
245
|
vStretchFactor = 1.0;
|
|
242
246
|
vSubdivisionFactor = 0.0;
|
|
@@ -267,10 +271,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
267
271
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
268
272
|
|
|
269
273
|
vLineDistance = lineWidth * lineDistNorm;
|
|
270
|
-
${
|
|
274
|
+
${Y?D`vLineDistanceNorm = lineDistNorm;`:""}
|
|
271
275
|
|
|
272
276
|
pos.xyz += displacement;
|
|
273
|
-
`)
|
|
277
|
+
`),$||T.main.add(D`if (isJoin) {
|
|
274
278
|
vec2 joinCenterToVertex = displacementXY;
|
|
275
279
|
vec2 leftCenterlineDir = left.xy;
|
|
276
280
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -285,30 +289,35 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
285
289
|
),
|
|
286
290
|
pos.w
|
|
287
291
|
);
|
|
288
|
-
}`),
|
|
292
|
+
}`),G&&T.main.add(D`vec2 segmentDir = normalize(segment.xy);
|
|
289
293
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
290
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`)
|
|
291
|
-
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
294
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),$&&(V||T.main.add(D`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
295
|
+
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),T.main.add(D`
|
|
292
296
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
293
297
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
294
298
|
float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
|
|
295
|
-
float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
|
|
296
|
-
|
|
299
|
+
float segmentLengthRender = ${b(B,D`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,D`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
300
|
+
|
|
301
|
+
${b(!V||B,D`
|
|
302
|
+
float segmentStartRender = ${b(B,D`mix(u0, prevU0, isEndVertex)`,D`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
303
|
+
`)}
|
|
297
304
|
|
|
298
305
|
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;
|
|
299
|
-
`),
|
|
300
|
-
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
301
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),
|
|
306
|
+
`),V?T.main.add(D`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
|
|
307
|
+
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):T.main.add(D`float startPseudoScreen = segmentStartRender * discreteWorldToScreenRatio;
|
|
308
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),T.uniforms.add(new x("stipplePatternPixelSize",e=>r(e))),T.main.add(D`
|
|
302
309
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
303
310
|
|
|
304
|
-
${
|
|
311
|
+
${b(B,D`
|
|
305
312
|
vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
306
313
|
vStipplePatternStretch = 1.0;
|
|
307
314
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
315
|
+
${b(k,D`
|
|
316
|
+
// The v-coordinate used in case of an image pattern.
|
|
317
|
+
bool isLeft = lineSide < 0.0;
|
|
318
|
+
vStippleV = isLeft ? 0.0 : 1.0;
|
|
319
|
+
`)}
|
|
320
|
+
`,D`
|
|
312
321
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
313
322
|
// fragment shader
|
|
314
323
|
vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -329,7 +338,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
329
338
|
}
|
|
330
339
|
|
|
331
340
|
// Cancel out perspective correct interpolation because we want this length to really represent the screen
|
|
332
|
-
// distance
|
|
341
|
+
// distance.
|
|
333
342
|
vStippleDistanceLimits = noPerspectiveWrite(vStippleDistanceLimits, pos.w);
|
|
334
343
|
vStippleDistance = noPerspectiveWrite(vStippleDistance, pos.w);
|
|
335
344
|
|
|
@@ -339,7 +348,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
339
348
|
isStartVertex ?
|
|
340
349
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
341
350
|
vec2(vStippleDistanceLimits.x, 1e34);
|
|
342
|
-
`)),
|
|
351
|
+
`)),T.main.add(D`
|
|
343
352
|
// Convert back into NDC
|
|
344
353
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
345
354
|
pos.z = pos.z * pos.w;
|
|
@@ -347,13 +356,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
347
356
|
vColor = getColor();
|
|
348
357
|
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
349
358
|
|
|
350
|
-
${
|
|
359
|
+
${U&&!V?"pos.z -= EPS * pos.w;":""}
|
|
351
360
|
|
|
352
361
|
// transform final position to camera space for slicing
|
|
353
362
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
354
363
|
gl_Position = pos;
|
|
355
364
|
forwardObjectAndLayerIdColor();
|
|
356
|
-
}`),
|
|
365
|
+
}`),z.fragment.include(e,j),z.include(C,j),R.include(d),R.main.add(D`discardBySlice(vpos);`),z.include(p),R.include(w),$||R.code.add(D`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
357
366
|
float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
358
367
|
float featherWidth = 2.0;
|
|
359
368
|
float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
|
|
@@ -365,26 +374,26 @@ float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joi
|
|
|
365
374
|
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
366
375
|
feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
|
|
367
376
|
return 1.0 - clamp(feather, 0.0, 1.0);
|
|
368
|
-
}`),
|
|
377
|
+
}`),R.main.add(D`
|
|
369
378
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
370
379
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
371
|
-
${
|
|
372
|
-
`),
|
|
380
|
+
${b(Y,D`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
381
|
+
`),U?R.main.add(D`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(G&&R.main.add(D`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
373
382
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
374
383
|
float fragmentRadius = length(fragmentPosition);
|
|
375
384
|
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
|
|
376
385
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
377
386
|
if (capCoverage < alphaCutoff) {
|
|
378
387
|
discard;
|
|
379
|
-
}`),
|
|
388
|
+
}`),X?R.main.add(D`vec2 stipplePosition = vec2(
|
|
380
389
|
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
381
390
|
lineDistanceNorm
|
|
382
391
|
);
|
|
383
392
|
float stippleRadius = length(stipplePosition * lineWidth);
|
|
384
393
|
float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
|
|
385
394
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
386
|
-
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):
|
|
387
|
-
color.a = noPerspectiveRead(color.a);`)
|
|
395
|
+
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):R.main.add(D`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==N&&R.main.add(D`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),R.uniforms.add(new u("intrinsicColor",e=>e.color)).main.add(D`vec4 color = intrinsicColor * vColor;
|
|
396
|
+
color.a = noPerspectiveRead(color.a);`),_&&R.uniforms.add(new u("innerColor",e=>e.innerColor??e.color),new x("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(D`float distToInner = abs(lineDistance) - innerWidth;
|
|
388
397
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
389
398
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
390
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),
|
|
399
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),R.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),J&&(R.uniforms.add(new x("falloff",e=>e.falloff)),R.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),$||R.main.add(D`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),E&&(W.add("vnormal","vec3"),T.include(a,j),T.main.add("vnormal = getLocalUp(vpos, localOrigin);"),R.include(i,j),g(R,j),R.main.add("\n vec3 viewDirection = normalize(vpos - cameraPosition);\n finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, 0.0, 0.0, vec3(0.0), viewDirection, vnormal), finalColor.a);")),M&&R.main.add("finalColor = animate(finalColor);")),R.main.add(D`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),z}const A=Object.freeze(Object.defineProperty({__proto__:null,build:z,numRoundJoinSubdivisions:j},Symbol.toStringTag,{value:"Module"}));export{A as R,z as b,j as n};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as o}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{
|
|
2
|
+
import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as o}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{mainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Float2PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as m}from"../views/webgl/NoParameters.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";class g extends m{constructor(){super(...arguments),this.texV=e(),this.altitudeFade=0,this.innerScale=0,this.undergroundFadeAlpha=0,this.silhouette=new p}}class p{constructor(){this.center=o(),this.v1=o(),this.v2=o()}}function h(e){const o=new f,{vertex:m,fragment:g}=o;if(m.uniforms.add(r),2===e.geometry)o.attributes.add("position","vec2"),o.varyings.add("color","vec4"),m.uniforms.add(new s("cameraPosition",e=>e.camera.eye),new a("undergroundFadeAlpha",e=>e.undergroundFadeAlpha)),m.main.add(l`float ndotl = dot(normalize(cameraPosition), mainLightDirection);
|
|
3
3
|
float lighting = max(0.0, smoothstep(-1.0, 0.8, 2.0 * ndotl));
|
|
4
4
|
color = vec4(vec3(lighting), undergroundFadeAlpha);
|
|
5
5
|
gl_Position = vec4(position.xy, 1.0, 1.0);`),g.main.add(l`fragColor = color;`);else{o.include(i),o.attributes.add("position","vec3"),o.varyings.add("vtc","vec2"),o.varyings.add("falloff","float");const r=1===e.geometry;m.uniforms.add(new d("proj",e=>e.camera.projectionMatrix),new d("view",e=>e.camera.viewMatrix)),r||(o.varyings.add("innerFactor","float"),m.uniforms.add(new n("silCircleCenter",e=>e.silhouette.center),new n("silCircleV1",e=>e.silhouette.v1),new n("silCircleV2",e=>e.silhouette.v2),new t("texV",e=>e.texV),new a("innerScale",e=>e.innerScale)));const s=6.2831853,f=1/128;m.main.add(l`
|
package/chunks/Terrain.glsl.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as r,set as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as u}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{
|
|
2
|
+
import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as r,set as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as u}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightDirection as b,mainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDrawFragment as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{OverlayTerrain as j}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as L,TerrainTexture as x}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{addProjViewLocalOrigin as T,addViewNormal as P,addCameraPosition as M}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3BindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as D,If as $}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as z}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{Texture2DBindUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{alphaCutoff as F}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as N}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as _}from"../views/webgl/ShaderBuilder.js";class V extends L{constructor(){super(...arguments),this.useStencil=!1}}function W(o){const a=new _,{attributes:L,vertex:V,fragment:W,varyings:H}=a;L.add("position","vec3"),a.include(d,o),a.include(c,o);const U=()=>{V.include(C,o),V.code.add(D`vec3 getNormal() {
|
|
3
3
|
float z = 1.0 - abs(normalCompressed.x) - abs(normalCompressed.y);
|
|
4
4
|
vec3 n = vec3(normalCompressed + vec2(normalCompressed.x >= 0.0 ? 1.0 : -1.0,
|
|
5
5
|
normalCompressed.y >= 0.0 ? 1.0 : -1.0) * min(z, 0.0), z);
|
|
6
6
|
return normalize(n);
|
|
7
|
-
}`)};T(
|
|
7
|
+
}`)};T(V,o),a.include(s),W.include(F);const{output:E,overlayMode:I,tileBorders:q,transparencyMode:G,overlayEnabled:R,renderOccluded:J}=o,K=2===G||3===G,Q=R&&K;switch(E){case 0:case 1:case 2:{const l=0!==E||J?"discard":"";a.include(x,o),W.include(w,o),R&&a.include(j,o);const t=2===I;t&&a.include(m,o),H.add("vnormal","vec3"),H.add("vpos","vec3",{invariant:!0}),H.add("upNormal","vec3"),U(),V.main.add(D`
|
|
8
8
|
vpos = position;
|
|
9
9
|
vec3 positionWorld = position + localOrigin;
|
|
10
10
|
gl_Position = transformPosition(proj, view, vpos);
|
|
11
11
|
vnormal = getNormal();
|
|
12
|
-
|
|
13
|
-
${
|
|
12
|
+
upNormal = getLocalUp(position, localOrigin);
|
|
13
|
+
${$(t,D`forwardVertexTangent(vnormal);`)}
|
|
14
14
|
|
|
15
15
|
forwardTextureCoordinatesWithTransform(uv0);
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
forwardLinearDepthToReadShadowMap();`),a.include(O,o),W.include(n,o),W.include(w,o),W.include(p,o),a.include(
|
|
16
|
+
${$(R,"setOverlayVTC(uv0);")}
|
|
17
|
+
${$(q,"forwardTextureCoordinates();")}
|
|
18
|
+
forwardLinearDepthToReadShadowMap();`),a.include(O,o),W.include(n,o),W.include(w,o),W.include(p,o),a.include(N,o),M(W,o),f(W),h(W),W.uniforms.add(V.uniforms.get("localOrigin"),new S("viewDirection",({camera:e})=>r(B,i(B,e.viewMatrix[12],e.viewMatrix[13],e.viewMatrix[14])))),t&&W.uniforms.add(new A("ovWaterTex",e=>e.overlay?.getTexture(3)),new z("view",({origin:o},{camera:r})=>e(k,r.viewMatrix,o))),W.uniforms.add(b,y).main.add(D`
|
|
19
19
|
vec3 normal = normalize(vnormal);
|
|
20
20
|
float lightAlignment = dot(normal, mainLightDirection);
|
|
21
21
|
|
|
@@ -24,9 +24,9 @@ return normalize(n);
|
|
|
24
24
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
25
25
|
vec4 tileColor = getTileColor();
|
|
26
26
|
|
|
27
|
-
${
|
|
27
|
+
${$(R,D`vec4 overlayColorOpaque = getOverlayColor(ovColorTex, vtcOverlay);
|
|
28
28
|
vec4 overlayColor = overlayOpacity * overlayColorOpaque;
|
|
29
|
-
${
|
|
29
|
+
${$(K,`if (overlayColor.a < alphaCutoff) ${l};`)}
|
|
30
30
|
vec4 groundColor = tileColor;
|
|
31
31
|
tileColor = blendColorsPremultiplied(overlayColor, tileColor);`)}
|
|
32
32
|
|
|
@@ -37,13 +37,13 @@ return normalize(n);
|
|
|
37
37
|
tileColor *= groundSliceOpacity;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
vec3 viewDirection = normalize(vpos - cameraPosition);
|
|
40
41
|
vec3 albedo = tileColor.rgb;
|
|
41
42
|
|
|
42
43
|
// heuristic shading function used in the old terrain, now used to add ambient lighting
|
|
43
44
|
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
44
|
-
|
|
45
|
-
${
|
|
46
|
-
${z(t,$`vec4 overlayWaterMask = getOverlayColor(ovWaterTex, vtcOverlay);
|
|
45
|
+
vec4 finalColor = vec4(evaluateSceneLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, upNormal), tileColor.a);
|
|
46
|
+
${$(t,D`vec4 overlayWaterMask = getOverlayColor(ovWaterTex, vtcOverlay);
|
|
47
47
|
float waterNormalLength = length(overlayWaterMask);
|
|
48
48
|
if (waterNormalLength > 0.95) {
|
|
49
49
|
mat3 tbnMatrix = mat3(tbnTangent, tbnBiTangent, vnormal);
|
|
@@ -55,26 +55,26 @@ return normalize(n);
|
|
|
55
55
|
// un-gamma the ground color to mix in linear space
|
|
56
56
|
finalColor = mix(groundColor, waterColorNonLinear, waterColorLinear.w) * opacity;
|
|
57
57
|
}`)}
|
|
58
|
-
${
|
|
58
|
+
${$(q,D`vec2 dVuv = fwidth(vuv0);
|
|
59
59
|
vec2 edgeFactors = smoothstep(vec2(0.0), 1.5 * dVuv, min(vuv0, 1.0 - vuv0));
|
|
60
60
|
float edgeFactor = 1.0 - min(edgeFactors.x, edgeFactors.y);
|
|
61
61
|
finalColor = mix(finalColor, vec4(1.0, 0.0, 0.0, 1.0), edgeFactor);`)}
|
|
62
|
-
outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`)}break;case 3:
|
|
63
|
-
${
|
|
64
|
-
gl_Position = transformPosition(proj, view, position);`),W.main.add(`${
|
|
65
|
-
${
|
|
62
|
+
outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`)}break;case 3:Q&&a.include(j,o),V.main.add(D`
|
|
63
|
+
${$(Q,"setOverlayVTC(uv0);")}
|
|
64
|
+
gl_Position = transformPosition(proj, view, position);`),W.main.add(`${$(Q,"if (getCombinedOverlayColor().a < alphaCutoff) discard;")}`);break;case 5:case 6:case 7:case 8:a.include(g,o),W.main.add("outputDepth(linearDepth);");case 9:l(a),t(a),V.main.add("gl_Position = transformPositionWithDepth(proj, view, position, nearFar, linearDepth);"),W.main.add("");break;case 4:Q&&a.include(j,o),H.add("vnormal","vec3"),P(V),U(),V.main.add(D`
|
|
65
|
+
${$(Q,"setOverlayVTC(uv0);")}
|
|
66
66
|
gl_Position = transformPosition(proj, view, position);
|
|
67
|
-
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),W.main.add(
|
|
67
|
+
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),W.main.add(D`
|
|
68
68
|
float opacity = 1.0;
|
|
69
|
-
${
|
|
69
|
+
${$(Q,"\n opacity = getCombinedOverlayColor().a;\n if (opacity < alphaCutoff) discard;")}
|
|
70
70
|
vec3 normal = normalize(vnormal);
|
|
71
71
|
if (gl_FrontFacing == false) {
|
|
72
72
|
normal = -normal;
|
|
73
73
|
}
|
|
74
|
-
fragColor = vec4(vec3(0.5) + 0.5 * normal, opacity);`);break;case 10:
|
|
75
|
-
${
|
|
76
|
-
gl_Position = transformPosition(proj, view, position);`),a.include(v,o),W.main.add(
|
|
77
|
-
${
|
|
74
|
+
fragColor = vec4(vec3(0.5) + 0.5 * normal, opacity);`);break;case 10:R&&(a.include(j,o),a.include(u,o)),V.main.add(D`
|
|
75
|
+
${$(R,"setOverlayVTC(uv0);")}
|
|
76
|
+
gl_Position = transformPosition(proj, view, position);`),a.include(v,o),W.main.add(D`
|
|
77
|
+
${$(R,D`
|
|
78
78
|
calculateOcclusionAndOutputHighlight(getAllOverlayHighlightValuesEncoded());`,"calculateOcclusionAndOutputHighlight();")}
|
|
79
|
-
`);break;case 11:if(
|
|
80
|
-
setOverlayVTC(uv0);`),W.main.add(
|
|
79
|
+
`);break;case 11:if(R)a.include(j,o),V.main.add(D`gl_Position = transformPosition(proj, view, position);
|
|
80
|
+
setOverlayVTC(uv0);`),W.main.add(D`fragColor = getOverlayColorTexel();`);else{const e=0===G;V.main.add(D`${$(e,"gl_Position = transformPosition(proj, view, position);")}`),W.main.add(D`fragColor = vec4(0.0);`)}}return a}const k=o(),B=a(),H=Object.freeze(Object.defineProperty({__proto__:null,TerrainPassParameters:V,build:W},Symbol.toStringTag,{value:"Module"}));export{V as T,H as a,W as b};
|