@arcgis/core 5.2.0-next.117 → 5.2.0-next.118
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/analysis/ElevationProfile/ElevationProfileLineQuery.d.ts +1 -1
- package/analysis/featureReferenceUtils.js +1 -1
- package/arcade.d.ts +1 -1
- package/arcade.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/03918a862455191a8910.js +1 -0
- package/assets/esri/core/workers/chunks/{9b9a60f1e0c48aa701f0.js → 066b7f6866d602f963e0.js} +1 -1
- package/assets/esri/core/workers/chunks/{4bfd63f3cf9208eb839b.js → 0dc317d022807af92e3f.js} +41 -41
- package/assets/esri/core/workers/chunks/{564fdf0d663b773806cc.js → 114bc14c49176f64a2c5.js} +1 -1
- package/assets/esri/core/workers/chunks/1630913399384030d0b9.js +1 -0
- package/assets/esri/core/workers/chunks/{db141122060d8d9b38da.js → 1742dbc6a827cfda471b.js} +1 -1
- package/assets/esri/core/workers/chunks/{045ff98313b06a2188b7.js → 1a39335aa2dce6d564d9.js} +1 -1
- package/assets/esri/core/workers/chunks/{caf38cf4d8542fb11c46.js → 20e4277a4a6c57957202.js} +1 -1
- package/assets/esri/core/workers/chunks/{729d458e9e28641227cd.js → 21c0743b2f612e7e7de3.js} +1 -1
- package/assets/esri/core/workers/chunks/{f42243c62dd0b6993816.js → 24014f3701c31ee74bc2.js} +1 -1
- package/assets/esri/core/workers/chunks/37cf4ca2083cd3b6002e.js +1 -0
- package/assets/esri/core/workers/chunks/{44d3fe10cb35d16f0b33.js → 4396ef5ab3eb9e9a7df2.js} +1 -1
- package/assets/esri/core/workers/chunks/{3b499cfc89c8f87cdb20.js → 4925d0b29a166cc8fee1.js} +1 -1
- package/assets/esri/core/workers/chunks/{56989b48c0a5d7fe85e6.js → 4c4ba466e23159991322.js} +1 -1
- package/assets/esri/core/workers/chunks/{b9023cc3298ee4fddea7.js → 54f3bc940cea15fce2c7.js} +1 -1
- package/assets/esri/core/workers/chunks/{7e42be27ead91a4cc0f1.js → 581285e4d7bbe1b7c27a.js} +1 -1
- package/assets/esri/core/workers/chunks/{05584d8828ae7bca0fc5.js → 64ee22134fda2f09c094.js} +1 -1
- package/assets/esri/core/workers/chunks/6efc5873747b9cd44fb9.js +1 -0
- package/assets/esri/core/workers/chunks/{0463c807b37f01bbc35c.js → 70347d25968975126fa7.js} +1 -1
- package/assets/esri/core/workers/chunks/{1eafb214519d8fc63ccb.js → 8465e2c7221125fd3cc4.js} +1 -1
- package/assets/esri/core/workers/chunks/862e1acd80c4e43831dc.js +1 -0
- package/assets/esri/core/workers/chunks/{fd808d38ae2d475ac442.js → 8675ab3c4dec2f13b9c6.js} +1 -1
- package/assets/esri/core/workers/chunks/{925a0b29d3ed7165b8dd.js → 8984d02c0ce828fd223a.js} +1 -1
- package/assets/esri/core/workers/chunks/{57328c206f1e699ac06f.js → 89edaa1ffa566908ebca.js} +1 -1
- package/assets/esri/core/workers/chunks/{bb4cbf6b7c35e8c78cc7.js → a917a1df8270860dc514.js} +1 -1
- package/assets/esri/core/workers/chunks/{996438b3afec92c5c68e.js → b0058619e0363002ad86.js} +1 -1
- package/assets/esri/core/workers/chunks/{9fb46ccd4be4c3b61c31.js → b5a102cf9f4377fb9842.js} +1 -1
- package/assets/esri/core/workers/chunks/b6409d89914030d5854a.js +1 -0
- package/assets/esri/core/workers/chunks/{2e0fd0536408053ac6f5.js → b961e0aaa6b3ea75315c.js} +1 -1
- package/assets/esri/core/workers/chunks/{fa869977ac2abb063925.js → b9c834e3c0701e9b14a2.js} +1 -1
- package/assets/esri/core/workers/chunks/{32dd990a3bd93cbad309.js → c0ec87800faf99cbd8bd.js} +1 -1
- package/assets/esri/core/workers/chunks/{20de0ea9fa08a6545978.js → cf1106eda10f3cccb1bd.js} +1 -1
- package/assets/esri/core/workers/chunks/{ed988360264574cd8f6b.js → cf7c06702babd6fa88b4.js} +1 -1
- package/assets/esri/core/workers/chunks/cfd8317ecd2e63af7c40.js +1 -0
- package/assets/esri/core/workers/chunks/d090baaa974e1e83fa44.js +1 -0
- package/assets/esri/core/workers/chunks/{c5ceceb0683671f92efa.js → da6583e8d88441a1c02a.js} +1 -1
- package/assets/esri/core/workers/chunks/{e1f2b07be33e33117313.js → dd02cc18ebebb90778c6.js} +1 -1
- package/assets/esri/core/workers/chunks/de8a3a0796bd115426c0.js +1 -0
- package/assets/esri/core/workers/chunks/{05b373a663cb5d4d722f.js → deb5b1d772ca407654d4.js} +1 -1
- package/assets/esri/core/workers/chunks/{10fa8fbade8ae084c307.js → e22a013ec38989caf9de.js} +1 -1
- package/assets/esri/core/workers/chunks/{c7e6b5594fed5bb16691.js → e4016ae9cb8f16e3efc3.js} +1 -1
- package/assets/esri/core/workers/chunks/e5f0c47957a4e9663720.js +1 -0
- package/assets/esri/core/workers/chunks/{a3f4818f4190fa92331d.js → edd36e98355f1655e5c8.js} +1 -1
- package/assets/esri/core/workers/chunks/ef6e52f9b656751eebaf.js +1 -0
- package/assets/esri/core/workers/chunks/f0709c48daca93e759c8.js +1 -0
- package/assets/esri/core/workers/chunks/f5423006fb07db7dd6ee.js +1 -0
- package/assets/esri/core/workers/chunks/{d926bffc3ff9f87e9081.js → f890359d972cce54459e.js} +1 -1
- package/assets/esri/core/workers/chunks/fb11ff3f2eae5f072560.js +1 -0
- package/assets/esri/core/workers/chunks/fdad31bbe8aee68a6eaf.js +1 -0
- package/assets/esri/core/workers/chunks/fe1787a8d499832996b3.js +1 -0
- package/chunks/CloudsComposition.glsl.js +2 -2
- package/chunks/ColorMaterial.glsl.js +3 -3
- package/chunks/Compositing.glsl.js +4 -4
- package/chunks/DeepSky.glsl.js +3 -3
- package/chunks/EdgeShader.glsl.js +6 -6
- package/chunks/FocusArea.glsl.js +1 -1
- package/chunks/GlobalIllumination.glsl.js +7 -7
- package/chunks/HUDMaterial.glsl.js +5 -5
- package/chunks/LaserlinePath.glsl.js +5 -5
- package/chunks/LineCallout.glsl.js +2 -2
- package/chunks/LineMarker.glsl.js +30 -30
- package/chunks/NavigationDepth.glsl.js +1 -1
- package/chunks/OccludedGeometryDepth.glsl.js +2 -2
- package/chunks/Path.glsl.js +12 -12
- package/chunks/PointRenderer.glsl.js +5 -5
- package/chunks/Precipitation.glsl.js +7 -7
- package/chunks/RibbonLine.glsl.js +50 -50
- package/chunks/SimpleAtmosphere.glsl.js +9 -9
- package/chunks/Stars.glsl.js +5 -5
- package/chunks/Terrain.glsl.js +18 -16
- package/chunks/Viewshed.glsl.js +3 -3
- package/chunks/VolumeMask.glsl.js +2 -2
- package/chunks/Water.glsl.js +20 -19
- package/config.js +1 -1
- package/core/NestedMap.js +1 -1
- package/kernel.js +1 -1
- package/layers/AnnotationFeatureLayer.d.ts +2 -1
- package/layers/AnnotationFeatureLayer.js +1 -1
- package/layers/CatalogLayer.d.ts +2 -1
- package/layers/CatalogLayer.js +1 -1
- package/layers/DimensionFeatureLayer.d.ts +2 -1
- package/layers/DimensionFeatureLayer.js +1 -1
- package/layers/FeatureLayer.d.ts +2 -30
- package/layers/FeatureLayer.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/SubtypeGroupLayer.d.ts +2 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/mixins/FeatureLayerBase.js +1 -1
- package/layers/mixins/FeatureLayerReload.d.ts +26 -0
- package/layers/mixins/FeatureLayerReload.js +2 -0
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/support/TimeInfo.d.ts +2 -2
- package/layers/support/TimeInfo.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/package.json +2 -2
- package/support/revision.js +1 -1
- package/time/timeZoneUtils.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
- package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementArrowVisualElement.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +9 -9
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +15 -15
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +23 -23
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +8 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js +7 -7
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +7 -7
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +2 -0
- package/views/3d/webgl-engine/effects/AmbientIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/atmosphere/SimpleAtmosphere.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/precipitation/Precipitation.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/effects/stars/DeepSky.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/stars/Stars.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/Program.js +1 -1
- package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/AdjustProjectedPosition.glsl.js +4 -4
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
- package/views/3d/webgl-engine/materials/PolygonOffset.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ViewingModeConfiguration.js +1 -1
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Compositing.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +26 -26
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCalloutTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +2 -0
- package/views/3d/webgl-engine/shaders/MeasurementArrowTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/NavigationDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/OccludedGeometryDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/PointRenderer.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Viewshed.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/VolumeMask.glsl.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileLineQuery.d.ts +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/ValuePicker.d.ts +1 -1
- package/widgets/ValuePicker.js +1 -1
- package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +4 -2
- package/widgets/VideoPlayer/VideoPlayerViewModel.js +1 -1
- package/widgets/VideoPlayer.js +1 -1
- package/assets/esri/core/workers/chunks/0630e650abdfea1792e4.js +0 -1
- package/assets/esri/core/workers/chunks/0edebc6c516f0b9dac7b.js +0 -1
- package/assets/esri/core/workers/chunks/25c5e1b14b184b1228a3.js +0 -1
- package/assets/esri/core/workers/chunks/573e8fa0af8711ffec45.js +0 -1
- package/assets/esri/core/workers/chunks/5b9925f23d4b10a7087e.js +0 -1
- package/assets/esri/core/workers/chunks/66c46c5a7147550ea3ed.js +0 -1
- package/assets/esri/core/workers/chunks/6c7cb7974969e3167f2b.js +0 -1
- package/assets/esri/core/workers/chunks/7bbc3d22383388d11345.js +0 -1
- package/assets/esri/core/workers/chunks/7edf57e31ff07af9032b.js +0 -1
- package/assets/esri/core/workers/chunks/8bd187b48a4e4296e3d8.js +0 -1
- package/assets/esri/core/workers/chunks/9acaabe950319d031f2e.js +0 -1
- package/assets/esri/core/workers/chunks/ac02df176f9ea94278bb.js +0 -1
- package/assets/esri/core/workers/chunks/b4222152efaf73b37b53.js +0 -1
- package/assets/esri/core/workers/chunks/c0855be20ffcd52c7026.js +0 -1
- package/assets/esri/core/workers/chunks/e606be4ece4eac1e9bbe.js +0 -1
- package/assets/esri/core/workers/chunks/f05622413cadfd14553e.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
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{EvaluateAmbientOcclusion as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as r,computePixelSize as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{mainLightIntensity as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{MarkerSizing as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{
|
|
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{EvaluateAmbientOcclusion as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as r,computePixelSize as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{mainLightIntensity as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{MarkerSizing as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{inverseProjMatrix as p,nearFar as m,viewport as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as f,NoPerspectiveRead as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as u,addPixelRatio as S,addCameraPosition as x}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as b}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as L}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as y,If as w}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as C}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as P}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as F}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as j}from"../views/webgl/ShaderBuilder.js";const A=1;function W(A){const W=new j,{attributes:T,varyings:I,vertex:R,fragment:V}=W,{applyMarkerOffset:E,draped:O,shadingEnabled:N,output:$,capType:J,stippleEnabled:_,falloffEnabled:U,wireframe:H,innerColorEnabled:M,hasAnimation:B,hasScreenSizePerspective:k,worldSized:G,imagePattern:X}=A,Y=2===J,Z=_&&Y,q=U||Z,K=_||Y,Q=F(A).createBuilder(W,A);R.inputs.add("position",()=>Q.getTextureAttribute("position")),A.hasVVSize?R.inputs.add("sizeFeatureAttribute",()=>Q.getTextureAttribute("sizeFeatureAttribute")):R.inputs.add("size",()=>Q.getTextureAttribute("size")),A.hasVVOpacity&&R.inputs.add("opacityFeatureAttribute",()=>Q.getTextureAttribute("opacityFeatureAttribute")),A.hasVVColor?R.inputs.add("colorFeatureAttribute",()=>Q.getTextureAttribute("colorFeatureAttribute")):R.inputs.add("color",()=>Q.getTextureAttribute("color")),V.include(d),W.include(t,A),W.include(r,A);const ee={animation:A.animation,hasAnimation:A.hasAnimation,timeStampsExpr:Q.getTextureAttribute("timeStamps")};W.include(P,ee),11===$?(W.varyings.add("objectAndLayerIdColorVarying","vec4"),R.code.add(y`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
4
|
return ${Q.getTextureAttribute("olidColor")};
|
|
5
5
|
}
|
|
@@ -7,9 +7,9 @@ import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),V.code.add(
|
|
10
|
+
`),V.code.add(y`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(R.code.add(
|
|
12
|
+
}`)):(R.code.add(y`void forwardObjectAndLayerIdColor() {}`),V.code.add(y`void outputObjectAndLayerIdColor() {}`));const te=E&&!O;return te&&W.include(s,A),u(R,A),O&&(G||_)&&R.uniforms.add(new b("worldToScreenRatio",e=>1/e.screenToPCSRatio)),R.uniforms.add(p,m,g,new L("miterLimit",e=>"miter"!==e.join?0:e.miterLimit)),R.constants.add("LARGE_HALF_FLOAT","float",65500),R.constants.add("EPS","float",.001),R.constants.add("NUM_JOIN_SUBDIVISIONS","float",A.numJoinSubdivisions),T.add("textureElementIndex","uint"),T.add("lineParameters","vec2"),I.add("vColor","vec4"),I.add("vpos","vec3",{invariant:!0}),I.add("vLineDistance","float"),I.add("vLineWidth","float"),_||(I.add("vIsInsideJoin","int"),I.add("vStretchFactor","float"),I.add("vJoinCenterLineSDFs","vec2"),I.add("vSubdivisionFactor","float")),_&&I.add("vLineSizeInv","float"),q&&I.add("vLineDistanceNorm","float"),Y&&(I.add("vSegmentSDF","float"),I.add("vReverseSegmentSDF","float")),R.code.add(y`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
|
-
}`),R.code.add(
|
|
23
|
+
}`),R.code.add(y`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
|
-
}`),R.code.add(
|
|
28
|
+
}`),R.code.add(y`void clip(
|
|
29
29
|
inout vec4 pos,
|
|
30
30
|
inout vec4 prev,
|
|
31
31
|
inout vec4 next,
|
|
@@ -56,10 +56,10 @@ if (next.z > -nearFar[0]) {
|
|
|
56
56
|
next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos));
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
}`),
|
|
59
|
+
}`),S(R),R.constants.add("aaWidth","float",_?0:1),R.main.add(y`
|
|
60
60
|
vec3 position = ${Q.getTextureAttribute("position")};
|
|
61
61
|
float u0 = ${Q.getTextureAttribute("u0")};
|
|
62
|
-
${w(G,
|
|
62
|
+
${w(G,y`
|
|
63
63
|
float prevU0 = ${Q.getTextureAttribute("u0",-1)};
|
|
64
64
|
float nextU0 = ${Q.getTextureAttribute("u0",1)};
|
|
65
65
|
`)}
|
|
@@ -84,11 +84,11 @@ next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, ne
|
|
|
84
84
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
85
85
|
|
|
86
86
|
bool isJoin = vertexType < 3.0;
|
|
87
|
-
`),te&&R.main.add(
|
|
87
|
+
`),te&&R.main.add(y`vec4 other = isStartVertex ? next : prev;
|
|
88
88
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
89
89
|
if (!isJoin && !markersHidden) {
|
|
90
90
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
91
|
-
}`),W.include(
|
|
91
|
+
}`),W.include(f),R.code.add(y`
|
|
92
92
|
vec2 computeJoinAndCapDisplacement(
|
|
93
93
|
bool isJoin,
|
|
94
94
|
bool isStartVertex,
|
|
@@ -133,7 +133,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
${w(!
|
|
136
|
+
${w(!_,y`
|
|
137
137
|
// Compute stretch compensation for feathering.
|
|
138
138
|
if (subdivisionFactor > 0.0) {
|
|
139
139
|
vIsInsideJoin = 1;
|
|
@@ -168,14 +168,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
168
168
|
`)}
|
|
169
169
|
|
|
170
170
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
171
|
-
${w(A.roundJoins,
|
|
171
|
+
${w(A.roundJoins,y`
|
|
172
172
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
173
173
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
174
|
-
float factor = ${
|
|
174
|
+
float factor = ${_?y`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:y`subdivisionFactor`};
|
|
175
175
|
|
|
176
176
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
177
177
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
178
|
-
`,
|
|
178
|
+
`,y`
|
|
179
179
|
/**
|
|
180
180
|
* Convert to bevel join if miterLimit is exceeded.
|
|
181
181
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -187,18 +187,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
187
187
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
188
188
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
189
189
|
|
|
190
|
-
${w(
|
|
190
|
+
${w(_,y`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,y`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
191
191
|
`)}
|
|
192
192
|
displacementLen = lineWidth;
|
|
193
193
|
}
|
|
194
194
|
} else {
|
|
195
195
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
196
|
-
${0!==J?
|
|
196
|
+
${0!==J?y`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
200
200
|
}
|
|
201
|
-
`),R.main.add(
|
|
201
|
+
`),R.main.add(y`
|
|
202
202
|
clip(pos, prev, next, isStartVertex);
|
|
203
203
|
|
|
204
204
|
vec3 clippedPos = pos.xyz;
|
|
@@ -212,10 +212,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
212
212
|
vec3 right = (next.xyz - pos.xyz);
|
|
213
213
|
|
|
214
214
|
float lineSize = getSize(${w(k,"clippedPos")});
|
|
215
|
-
${w(
|
|
216
|
-
${w(
|
|
215
|
+
${w(_&&k,"float patternLineSize = getSize(clippedCenter);")}
|
|
216
|
+
${w(_&&!k,"float patternLineSize = lineSize;")}
|
|
217
217
|
|
|
218
|
-
${w(G,
|
|
218
|
+
${w(G,y`
|
|
219
219
|
float lineSizeScreen = lineSize * worldToScreenRatio;
|
|
220
220
|
if (lineSizeScreen < 1.0) {
|
|
221
221
|
coverage = lineSizeScreen;
|
|
@@ -224,7 +224,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
224
224
|
|
|
225
225
|
lineSizeScreen += aaWidth;
|
|
226
226
|
float lineWidth = lineSizeScreen * pixelRatio;
|
|
227
|
-
`,
|
|
227
|
+
`,y`
|
|
228
228
|
if (lineSize < 1.0) {
|
|
229
229
|
coverage = lineSize; // convert sub-pixel coverage to alpha
|
|
230
230
|
lineSize = 1.0;
|
|
@@ -235,14 +235,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
235
235
|
`)}
|
|
236
236
|
|
|
237
237
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
238
|
-
${
|
|
239
|
-
`),K&&R.main.add(
|
|
238
|
+
${_?y`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
239
|
+
`),K&&R.main.add(y`
|
|
240
240
|
float isEndVertex = float(!isStartVertex);
|
|
241
241
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
242
242
|
vec3 segment = mix(right, left, isEndVertex);
|
|
243
|
-
${Y?
|
|
244
|
-
`),R.main.add(
|
|
245
|
-
${w(!
|
|
243
|
+
${Y?y`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
|
|
244
|
+
`),R.main.add(y`
|
|
245
|
+
${w(!_,y`
|
|
246
246
|
vIsInsideJoin = 0;
|
|
247
247
|
vStretchFactor = 1.0;
|
|
248
248
|
vSubdivisionFactor = 0.0;
|
|
@@ -273,10 +273,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
273
273
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
274
274
|
|
|
275
275
|
vLineDistance = lineWidth * lineDistNorm;
|
|
276
|
-
${q?
|
|
276
|
+
${q?y`vLineDistanceNorm = lineDistNorm;`:""}
|
|
277
277
|
|
|
278
278
|
pos.xyz += displacement;
|
|
279
|
-
`),
|
|
279
|
+
`),_||R.main.add(y`if (isJoin) {
|
|
280
280
|
vec2 joinCenterToVertex = displacementXY;
|
|
281
281
|
vec2 leftCenterlineDir = left.xy;
|
|
282
282
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -291,35 +291,35 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
291
291
|
),
|
|
292
292
|
pos.w
|
|
293
293
|
);
|
|
294
|
-
}`),Y&&R.main.add(
|
|
294
|
+
}`),Y&&R.main.add(y`vec2 segmentDir = normalize(segment.xy);
|
|
295
295
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
296
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),
|
|
297
|
-
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),R.main.add(
|
|
296
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),_&&(O||R.main.add(y`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
297
|
+
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),R.main.add(y`
|
|
298
298
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
299
299
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
300
300
|
float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
|
|
301
|
-
float segmentLengthRender = ${w(G,
|
|
301
|
+
float segmentLengthRender = ${w(G,y`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,y`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
302
302
|
|
|
303
|
-
${w(!O||G,
|
|
304
|
-
float segmentStartRender = ${w(G,
|
|
303
|
+
${w(!O||G,y`
|
|
304
|
+
float segmentStartRender = ${w(G,y`mix(u0, prevU0, isEndVertex)`,y`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
305
305
|
`)}
|
|
306
306
|
|
|
307
307
|
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;
|
|
308
|
-
`),O?R.main.add(
|
|
309
|
-
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):R.main.add(
|
|
310
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),R.uniforms.add(new
|
|
308
|
+
`),O?R.main.add(y`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
|
|
309
|
+
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):R.main.add(y`float startPseudoScreen = segmentStartRender * discreteWorldToScreenRatio;
|
|
310
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),R.uniforms.add(new L("stipplePatternPixelSize",e=>o(e))),R.main.add(y`
|
|
311
311
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
312
312
|
|
|
313
|
-
${w(G,
|
|
313
|
+
${w(G,y`
|
|
314
314
|
vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
315
315
|
vStipplePatternStretch = 1.0;
|
|
316
316
|
|
|
317
|
-
${w(X,
|
|
317
|
+
${w(X,y`
|
|
318
318
|
// The v-coordinate used in case of an image pattern.
|
|
319
319
|
bool isLeft = lineSide < 0.0;
|
|
320
320
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
321
321
|
`)}
|
|
322
|
-
`,
|
|
322
|
+
`,y`
|
|
323
323
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
324
324
|
// fragment shader
|
|
325
325
|
vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -350,7 +350,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
350
350
|
isStartVertex ?
|
|
351
351
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
352
352
|
vec2(vStippleDistanceLimits.x, 1e34);
|
|
353
|
-
`)),R.main.add(
|
|
353
|
+
`)),R.main.add(y`
|
|
354
354
|
// Convert back into NDC
|
|
355
355
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
356
356
|
pos.z = pos.z * pos.w;
|
|
@@ -358,13 +358,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
358
358
|
vColor = getColor();
|
|
359
359
|
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
360
360
|
|
|
361
|
-
${
|
|
361
|
+
${H&&!O?"pos.z -= EPS * pos.w;":""}
|
|
362
362
|
|
|
363
363
|
// transform final position to camera space for slicing
|
|
364
364
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
365
365
|
gl_Position = pos;
|
|
366
366
|
forwardObjectAndLayerIdColor();
|
|
367
|
-
}`),W.fragment.include(e,A),W.include(
|
|
367
|
+
}`),W.fragment.include(e,A),W.include(z,A),V.include(v),V.main.add(y`discardBySlice(vpos);`),W.include(h),V.include(C),_||V.code.add(y`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
368
368
|
float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
369
369
|
float featherWidth = 2.0;
|
|
370
370
|
float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
|
|
@@ -376,31 +376,31 @@ float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joi
|
|
|
376
376
|
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
377
377
|
feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
|
|
378
378
|
return 1.0 - clamp(feather, 0.0, 1.0);
|
|
379
|
-
}`),V.main.add(
|
|
379
|
+
}`),V.main.add(y`
|
|
380
380
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
381
381
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
382
|
-
${w(q,
|
|
383
|
-
`),
|
|
382
|
+
${w(q,y`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
383
|
+
`),H?V.main.add(y`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(Y&&V.main.add(y`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
384
384
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
385
385
|
float fragmentRadius = length(fragmentPosition);
|
|
386
386
|
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
|
|
387
387
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
388
388
|
if (capCoverage < alphaCutoff) {
|
|
389
389
|
discard;
|
|
390
|
-
}`),Z?V.main.add(
|
|
390
|
+
}`),Z?V.main.add(y`vec2 stipplePosition = vec2(
|
|
391
391
|
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
392
392
|
lineDistanceNorm
|
|
393
393
|
);
|
|
394
394
|
float stippleRadius = length(stipplePosition * lineWidth);
|
|
395
395
|
float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
|
|
396
396
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
397
|
-
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):V.main.add(
|
|
398
|
-
color.a = noPerspectiveRead(color.a);`),
|
|
397
|
+
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):V.main.add(y`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==$&&V.main.add(y`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),V.uniforms.add(new D("intrinsicColor",e=>e.color)).main.add(y`vec4 color = intrinsicColor * vColor;
|
|
398
|
+
color.a = noPerspectiveRead(color.a);`),M&&V.uniforms.add(new D("innerColor",e=>e.innerColor??e.color),new L("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(y`float distToInner = abs(lineDistance) - innerWidth;
|
|
399
399
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
400
400
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
401
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),V.main.add(
|
|
401
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),V.main.add(y`vec4 finalColor = blendStipple(color, stippleAlpha);`),U&&(V.uniforms.add(new L("falloff",e=>e.falloff)),V.main.add(y`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),_||V.main.add(y`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),N&&(I.add("vnormal","vec3"),R.include(l,A),R.main.add("vnormal = getLocalUp(vpos, localOrigin);"),V.include(n,A),x(V,A),V.include(n,A),V.include(i,A),V.uniforms.add(a,R.uniforms.get("localOrigin")).main.add(y`vec3 posWorld = vpos + localOrigin;
|
|
402
402
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
403
403
|
float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
|
|
404
404
|
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
405
405
|
vec3 viewDirection = normalize(vpos - cameraPosition);
|
|
406
|
-
finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, 0.0, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),B&&V.main.add("finalColor = animate(finalColor);")),V.main.add(
|
|
406
|
+
finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, 0.0, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),B&&V.main.add("finalColor = animate(finalColor);")),V.main.add(y`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),W}const T=Object.freeze(Object.defineProperty({__proto__:null,build:W,numRoundJoinSubdivisions:A},Symbol.toStringTag,{value:"Module"}));export{T as R,W as b,A as n};
|
|
@@ -1,28 +1,28 @@
|
|
|
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{mainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.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{projMatrix as t,viewMatrix as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{Float2PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as f}from"../views/webgl/NoParameters.js";import{ShaderBuilder as g}from"../views/webgl/ShaderBuilder.js";class p extends f{constructor(){super(...arguments),this.texV=e(),this.altitudeFade=0,this.innerScale=0,this.undergroundFadeAlpha=0,this.silhouette=new h}}class h{constructor(){this.center=o(),this.v1=o(),this.v2=o()}}function u(e){const o=new g,{vertex:f,fragment:p}=o;if(f.uniforms.add(r),2===e.geometry)o.attributes.add("position","vec2"),o.varyings.add("color","vec4"),f.uniforms.add(new a("cameraPosition",e=>e.camera.eye),new d("undergroundFadeAlpha",e=>e.undergroundFadeAlpha)),f.main.add(c`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
|
-
gl_Position = vec4(position.xy, 1.0, 1.0);`),
|
|
6
|
-
${r?
|
|
5
|
+
gl_Position = vec4(position.xy, 1.0, 1.0);`),p.main.add(c`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;f.uniforms.add(t,s),r||(o.varyings.add("innerFactor","float"),f.uniforms.add(new l("silCircleCenter",e=>e.silhouette.center),new l("silCircleV1",e=>e.silhouette.v1),new l("silCircleV2",e=>e.silhouette.v2),new n("texV",e=>e.texV),new d("innerScale",e=>e.innerScale)));const a=6.2831853,g=1/128;f.main.add(c`
|
|
6
|
+
${r?c`
|
|
7
7
|
vec3 pos = position;
|
|
8
8
|
float ndotl = mainLightDirection.z;
|
|
9
|
-
vtc = vec2(0.0, position.z + 0.05);`:
|
|
9
|
+
vtc = vec2(0.0, position.z + 0.05);`:c`
|
|
10
10
|
innerFactor = clamp(-position.z, 0.0, 1.0);
|
|
11
11
|
float scale = position.y * (1.0 + innerFactor * innerScale);
|
|
12
|
-
float phi = position.x * ${
|
|
12
|
+
float phi = position.x * ${c.float(a*g)} + 1.0;
|
|
13
13
|
vec3 pos = (silCircleCenter + sin(phi) * silCircleV1 + cos(phi) * silCircleV2) * scale;
|
|
14
14
|
float ndotl = dot(normalize(position.y > 0.0 ? pos: silCircleCenter), mainLightDirection);
|
|
15
|
-
vtc.x = position.x * ${
|
|
15
|
+
vtc.x = position.x * ${c.float(g)};
|
|
16
16
|
vtc.y = texV.x * (1.0 - position.z) + texV.y * position.z;
|
|
17
17
|
`}
|
|
18
18
|
falloff = max(0.0, smoothstep(-1.0, 0.8, 2.0 * ndotl));
|
|
19
19
|
|
|
20
20
|
gl_Position = transformPosition(proj, view, pos);
|
|
21
21
|
gl_Position.z = gl_Position.w; // project atmosphere onto the far plane
|
|
22
|
-
`),
|
|
22
|
+
`),p.uniforms.add(new m("tex",e=>e.texture)),r||p.uniforms.add(new d("altitudeFade",e=>e.altitudeFade)),p.main.add(c`
|
|
23
23
|
vec4 atmosphereColor = texture(tex, vtc) * falloff;
|
|
24
|
-
${r?
|
|
24
|
+
${r?c`fragColor = atmosphereColor;`:c`
|
|
25
25
|
vec4 innerColor = vec4(atmosphereColor.rgb, 1.0 - altitudeFade);
|
|
26
26
|
fragColor = mix(atmosphereColor, innerColor, smoothstep(0.0, 1.0, innerFactor));
|
|
27
27
|
`}
|
|
28
|
-
`)}return o}const
|
|
28
|
+
`)}return o}const v=Object.freeze(Object.defineProperty({__proto__:null,SilhouetteCircle:h,SimpleAtmospherePassParameters:p,build:u},Symbol.toStringTag,{value:"Module"}));export{p as S,v as a,h as b,u as c};
|
package/chunks/Stars.glsl.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{copy as e,multiply as a}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as
|
|
3
|
-
vcolor = color;`),a.main.add(t`vsize = size * 5.0;`),a.main.add(t`gl_PointSize = max(vsize * pixelRatio, 1.0);`),
|
|
4
|
-
vec2 pointOffsetScreen = (gl_PointCoord - vec2(0.5)) * rasterizedPointSizeScreen;`),
|
|
2
|
+
import{copy as e,multiply as a}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as r}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{viewport as i,pixelRatio as o}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{ShaderBuilder as s}from"../views/webgl/ShaderBuilder.js";function d(){const e=new s,{vertex:a,fragment:r,attributes:d,varyings:c}=e;return d.add("position","vec3"),d.add("color","vec4"),d.add("size","float"),c.add("vcolor","vec4"),c.add("vsize","float"),a.uniforms.add(new n("transform",(e,a)=>l(e,a)),i,o),r.uniforms.add(o),r.constants.add("starFootprintRadiusScale","float",.7),a.main.add(t`gl_Position = transform * vec4(position, 0);
|
|
3
|
+
vcolor = color;`),a.main.add(t`vsize = size * 5.0;`),a.main.add(t`gl_PointSize = max(vsize * pixelRatio, 1.0);`),r.main.add(t`float rasterizedPointSizeScreen = max(vsize, 1.0 / pixelRatio);
|
|
4
|
+
vec2 pointOffsetScreen = (gl_PointCoord - vec2(0.5)) * rasterizedPointSizeScreen;`),r.main.add(t`float radiusScreen = max(starFootprintRadiusScale * vsize, 1e-4);
|
|
5
5
|
float distanceFromCenterScreen = clamp(length(pointOffsetScreen), 0.0, radiusScreen);
|
|
6
|
-
float alpha = clamp((radiusScreen - distanceFromCenterScreen) / radiusScreen, 0.0, 1.0);`),
|
|
6
|
+
float alpha = clamp((radiusScreen - distanceFromCenterScreen) / radiusScreen, 0.0, 1.0);`),r.main.add(t`float subpixelCoverage = min(vsize * vsize, 1.0);
|
|
7
7
|
float intensity = alpha * alpha * alpha * subpixelCoverage;
|
|
8
|
-
fragColor = vec4(vcolor.xyz, intensity);`),e}function
|
|
8
|
+
fragColor = vec4(vcolor.xyz, intensity);`),e}function l(r,i){const o=24e-8;return e(c,i.camera.projectionMatrix),c[10]=o-1,c[11]=-1,c[14]=(o-2)*i.camera.near,a(c,c,i.camera.viewMatrix),a(c,c,r.modelMatrix)}const c=r(),m=Object.freeze(Object.defineProperty({__proto__:null,build:d},Symbol.toStringTag,{value:"Module"}));export{m as S,d as b};
|
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{
|
|
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{SliceDraw as t}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as n}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as m}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as p,addAmbientBoostFactor as w,addLightingGlobalFactor as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightDirection as h,mainLightIntensity as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDrawFragment as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{OverlayTerrain as O}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as j,TerrainTexture as L}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{viewNormal as x,nearFar as T}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{addProjViewLocalOrigin 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 N}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as F}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as _}from"../views/webgl/ShaderBuilder.js";class V extends j{constructor(){super(...arguments),this.useStencil=!1}}function W(o){const a=new _,{attributes:j,vertex:V,fragment:W,varyings:H}=a;j.add("position","vec3"),a.include(s,o),a.include(d,o);const U=()=>{V.include(y,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
|
-
}`)};
|
|
7
|
+
}`)};P(V,o),a.include(n),W.include(N);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(L,o),W.include(p,o),R&&a.include(O,o);const n=2===I;n&&a.include(c,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
12
|
upNormal = getLocalUp(position, localOrigin);
|
|
13
|
-
${$(
|
|
13
|
+
${$(n,D`forwardVertexTangent(vnormal);`)}
|
|
14
14
|
|
|
15
15
|
forwardTextureCoordinatesWithTransform(uv0);
|
|
16
16
|
${$(R,"setOverlayVTC(uv0);")}
|
|
17
17
|
${$(q,"forwardTextureCoordinates();")}
|
|
18
|
-
forwardLinearDepthToReadShadowMap();`),a.include(
|
|
18
|
+
forwardLinearDepthToReadShadowMap();`),a.include(C,o),W.include(t,o),W.include(p,o),W.include(u,o),a.include(F,o),M(W,o),w(W),f(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])))),n&&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(h,b).main.add(D`
|
|
19
19
|
vec3 normal = normalize(vnormal);
|
|
20
20
|
float lightAlignment = dot(normal, mainLightDirection);
|
|
21
21
|
|
|
@@ -43,7 +43,7 @@ return normalize(n);
|
|
|
43
43
|
// heuristic shading function used in the old terrain, now used to add ambient lighting
|
|
44
44
|
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
45
45
|
vec4 finalColor = vec4(evaluateSceneLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, upNormal), tileColor.a);
|
|
46
|
-
${$(
|
|
46
|
+
${$(n,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);
|
|
@@ -59,22 +59,24 @@ return normalize(n);
|
|
|
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:Q&&a.include(
|
|
62
|
+
outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`)}break;case 3:Q&&a.include(O,o),V.main.add(D`
|
|
63
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(
|
|
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(m,o),W.main.add("outputDepth(linearDepth);");case 9:l(a),V.uniforms.add(T).main.add("gl_Position = transformPositionWithDepth(proj, view, position, nearFar, linearDepth);"),W.main.add("");break;case 4:Q&&a.include(O,o),H.add("vnormal","vec3"),U(),V.uniforms.add(x).main.add(D`
|
|
65
65
|
${$(Q,"setOverlayVTC(uv0);")}
|
|
66
66
|
gl_Position = transformPosition(proj, view, position);
|
|
67
|
-
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz)
|
|
67
|
+
vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);
|
|
68
|
+
`),W.main.add(D`
|
|
68
69
|
float opacity = 1.0;
|
|
69
|
-
${$(Q,"\n
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
${$(Q,"\n opacity = getCombinedOverlayColor().a;\n if (opacity < alphaCutoff) discard;")}
|
|
71
|
+
vec3 normal = normalize(vnormal);
|
|
72
|
+
if (gl_FrontFacing == false) {
|
|
73
|
+
normal = -normal;
|
|
74
|
+
}
|
|
75
|
+
fragColor = vec4(vec3(0.5) + 0.5 * normal, opacity);
|
|
76
|
+
`);break;case 10:R&&(a.include(O,o),a.include(v,o)),V.main.add(D`
|
|
75
77
|
${$(R,"setOverlayVTC(uv0);")}
|
|
76
|
-
gl_Position = transformPosition(proj, view, position);`),a.include(
|
|
78
|
+
gl_Position = transformPosition(proj, view, position);`),a.include(g,o),W.main.add(D`
|
|
77
79
|
${$(R,D`
|
|
78
80
|
calculateOcclusionAndOutputHighlight(getAllOverlayHighlightValuesEncoded());`,"calculateOcclusionAndOutputHighlight();")}
|
|
79
|
-
`);break;case 11:if(R)a.include(
|
|
81
|
+
`);break;case 11:if(R)a.include(O,o),V.main.add(D`gl_Position = transformPosition(proj, view, position);
|
|
80
82
|
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};
|
package/chunks/Viewshed.glsl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{invertOrIdentity as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as i,create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as t}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as s,UNIT_Z as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{PiUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{LocalFromScreenSpaceDrawParameters as
|
|
2
|
+
import{invertOrIdentity as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as i,create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{create as t}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as s,UNIT_Z as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{PiUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{inverseProjMatrix as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{LocalFromScreenSpaceDrawParameters as h,localFromScreenSpace as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/LocalFromScreenSpace.glsl.js";import{Float2DrawUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{Float3DrawUniform as w}from"../views/3d/webgl-engine/core/shaderModules/Float3DrawUniform.js";import{FloatDrawUniform as f}from"../views/3d/webgl-engine/core/shaderModules/FloatDrawUniform.js";import{FloatsDrawUniform as m}from"../views/3d/webgl-engine/core/shaderModules/FloatsDrawUniform.js";import{glsl as p}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerDrawUniform as g}from"../views/3d/webgl-engine/core/shaderModules/IntegerDrawUniform.js";import{Matrix4BindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Matrix4sDrawUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Matrix4sDrawUniform.js";import{Texture2DBindUniform as V}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DDrawUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as M}from"../views/webgl/NoParameters.js";import{ShaderBuilder as P}from"../views/webgl/ShaderBuilder.js";class F extends M{}class T extends h{constructor(){super(...arguments),this.observerOffset=s(),this.fovs=t(),this.headingAndTilt=t(),this.upVector=a,this.targetVector=s(),this.projectionMatrices=i.flat(),this.viewMatrices=i.flat(),this.volumeOffset=0}}function S(i){const o=new P,t=o.fragment;o.include(r),o.include(v),o.outputs.add("fragColor","vec4",0),t.include(n),t.include(d),t.uniforms.add(l,new u("inverseViewNormalMatrix",({camera:i})=>e(U,i.viewInverseTransposeMatrix)),new V("depthTexture",e=>e.mainDepth),new D("normalMap",e=>e.normals),new w("viewshedObserverOffset",e=>e.observerOffset),new w("viewshedTargetVector",e=>e.targetVector),new w("viewshedUpVector",e=>e.upVector),new c("viewshedFOVs",e=>e.fovs),new c("viewshedHeadingAndTilt",e=>e.headingAndTilt),new c("viewshedNearFar",e=>e.shadowMap?.nearFar??[1,100]),new f("viewshedVolumeOffset",e=>e.volumeOffset),new b("viewshedShadowMap",e=>e.shadowMap?.depthTexture),new x("viewshedProjectionMatrices",e=>e.projectionMatrices,6),new x("viewshedViewMatrices",e=>e.viewMatrices,6),new g("viewshedNumFaces",e=>e.shadowMap?.numActiveFaces??0),new m("viewshedAtlasRegions",24,e=>e.shadowMap?.atlasRegions.flat()??y));const s=.5;return t.constants.add("viewshedAlpha","float",s),t.constants.add("visibleColor","vec4",[0,s,0,s]),t.constants.add("occludedColor","vec4",[s,0,0,s]),t.code.add(p`vec2 getViewshedUv(vec4 worldPosition, int face) {
|
|
3
3
|
mat4 viewshedMatrix = viewshedProjectionMatrices[face];
|
|
4
4
|
vec4 viewshedUv4 = viewshedMatrix * worldPosition;
|
|
5
5
|
vec3 viewshedUv = viewshedUv4.xyz / viewshedUv4.w;
|
|
@@ -125,7 +125,7 @@ vec3 normalN = normalize(normalTexel.xyz * 2.0 - 1.0);
|
|
|
125
125
|
vec3 normal = normalize((inverseViewNormalMatrix * vec4(normalN, 1.0)).xyz);
|
|
126
126
|
vec3 viewingDir = normalize(localPosition);
|
|
127
127
|
return dot(normal, viewingDir);
|
|
128
|
-
}`),t.main.add(
|
|
128
|
+
}`),t.main.add(p`float depth = depthFromTexture(depthTexture, uv);
|
|
129
129
|
if (depth >= 1.0 || depth <= 0.0) {
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
@@ -144,4 +144,4 @@ float cosAngle = normalCosAngle(linearDepth, localPosition.xyz);
|
|
|
144
144
|
float threshold = -0.01;
|
|
145
145
|
if (cosAngle > threshold) {
|
|
146
146
|
fragColor = occludedColor;
|
|
147
|
-
}`),i.hasEmissive&&(o.outputs.add("fragEmission","vec4",1),t.constants.add("viewshedEmissiveAlpha","float",s**.1),t.main.add("fragEmission = vec4(vec3(0.0), viewshedEmissiveAlpha);")),o}const
|
|
147
|
+
}`),i.hasEmissive&&(o.outputs.add("fragEmission","vec4",1),t.constants.add("viewshedEmissiveAlpha","float",s**.1),t.main.add("fragEmission = vec4(vec3(0.0), viewshedEmissiveAlpha);")),o}const U=o(),y=new Array(24).fill(0),j=Object.freeze(Object.defineProperty({__proto__:null,ViewshedDrawParameters:T,ViewshedPassParameters:F,build:S},Symbol.toStringTag,{value:"Module"}));export{F as V,T as a,j as b,S as c};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{translate as
|
|
3
|
-
gl_Position.z = min(gl_Position.z, gl_Position.w);`),
|
|
2
|
+
import{translate as r}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as e}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{ZEROS as o}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{projMatrix as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{NoParameters as a}from"../views/webgl/NoParameters.js";import{ShaderBuilder as m}from"../views/webgl/ShaderBuilder.js";class n extends a{constructor(){super(...arguments),this.origin=o}}function l(){const e=new m;return e.attributes.add("position","vec3"),e.outputs.add("fragColor","vec4",0),e.vertex.uniforms.add(i,new s("view",(e,o)=>r(d,o.camera.viewMatrix,e.origin))).main.add(t`gl_Position = proj * view * vec4(position, 1.0);
|
|
3
|
+
gl_Position.z = min(gl_Position.z, gl_Position.w);`),e.fragment.main.add(t`fragColor = vec4(1);`),e}const d=e(),c=Object.freeze(Object.defineProperty({__proto__:null,VolumeMaskDrawParameters:n,build:l},Symbol.toStringTag,{value:"Module"}));export{n as V,c as a,l as b};
|