@arcgis/core 5.1.0-next.91 → 5.1.0-next.93

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.
Files changed (81) hide show
  1. package/analysis/ShadowCast/DiscreteOptions.d.ts +12 -6
  2. package/analysis/ShadowCast/MinDurationOptions.d.ts +17 -9
  3. package/analysis/ShadowCast/TotalDurationOptions.d.ts +10 -6
  4. package/analysis/ShadowCastAnalysis.d.ts +23 -17
  5. package/assets/components/assets/combobox/t9n/messages.fr.json +1 -1
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/{adfa5c136c72c1e65770.js → 12f41c1c66fb446b6286.js} +22 -16
  8. package/assets/esri/core/workers/chunks/1523883460874c352e36.js +1 -0
  9. package/assets/esri/core/workers/chunks/{5409369d0d637cb30257.js → 172228d1a392ca7a5b21.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{f2c11f54255fd506655e.js → 19a0cb2d335d97ad9488.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{577cbc131b21c351fae5.js → 2647c739cda29361a463.js} +2 -2
  12. package/assets/esri/core/workers/chunks/34f7450769826e8b7069.js +636 -0
  13. package/assets/esri/core/workers/chunks/{4b9b9e6136c11d5d7901.js → 412745bfacef23e3b702.js} +1 -1
  14. package/assets/esri/core/workers/chunks/4df19e670b6ed76c1dea.js +2 -0
  15. package/assets/esri/core/workers/chunks/{ceff78c9e31e3572a082.js → 5eff240a0e41a4f80e61.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{2dcfc4d7e76c922bcbf9.js → 6aed2e42e65ac80f1fab.js} +1 -1
  17. package/assets/esri/core/workers/chunks/77c2d8d0ce1c1ab469e9.js +1 -0
  18. package/assets/esri/core/workers/chunks/8a370cc1a99ddc7ce70b.js +1 -0
  19. package/assets/esri/core/workers/chunks/8a7a99533d02eb9cb058.js +2 -0
  20. package/assets/esri/core/workers/chunks/{90a8dfb03a437fe8a6e7.js → be47e42c6c8c0820efd8.js} +1 -1
  21. package/assets/esri/core/workers/chunks/c7ee05f46b26b17f9414.js +1 -0
  22. package/assets/esri/core/workers/chunks/{ee057c85cdf6beb5b012.js → d1ba118ddd0390c07f35.js} +2 -2
  23. package/assets/esri/core/workers/chunks/e6f1ed5e56f1d9862821.js +1 -0
  24. package/assets/esri/core/workers/chunks/{27f67a3828b78d4c1413.js → e81afc8a058a8ecc9b24.js} +1 -1
  25. package/assets/esri/core/workers/chunks/f49c7bb5d134bcb22155.js +1 -0
  26. package/assets/esri/core/workers/chunks/{aa6808146c76b2d49b64.js → f68c12e0c1eda7f73a17.js} +1 -1
  27. package/assets/esri/core/workers/chunks/f706bfea34d22539b46a.js +2 -0
  28. package/assets/esri/core/workers/chunks/{bb8d596f15fd3a0d783a.js → f8072a4cf1b25d8b93f9.js} +1 -1
  29. package/chunks/GlobalIllumination.glsl.js +24 -18
  30. package/chunks/GlowBlur.glsl.js +11 -11
  31. package/chunks/RibbonLine.glsl.js +91 -51
  32. package/chunks/ShadowCastVisualize.glsl.js +18 -15
  33. package/config.js +1 -1
  34. package/kernel.js +1 -1
  35. package/layers/graphics/sources/MemorySource.js +1 -1
  36. package/networks/support/UNTraceConfiguration.d.ts +19 -2
  37. package/networks/support/UNTraceConfiguration.js +1 -1
  38. package/networks/support/jsonTypes.d.ts +9 -1
  39. package/package.json +4 -4
  40. package/popup/Feature.d.ts +4 -4
  41. package/popup/Feature.js +1 -1
  42. package/rest/knowledgeGraph/GraphApplyEditsResult.d.ts +13 -1
  43. package/rest/knowledgeGraph/GraphApplyEditsResult.js +1 -1
  44. package/rest/knowledgeGraph/GraphDeleteNamedTypeResult.d.ts +9 -1
  45. package/rest/knowledgeGraph/GraphDeleteNamedTypeResult.js +1 -1
  46. package/rest/knowledgeGraph/wasmInterface/wasmToDataModelChangeResponseFactories.js +1 -1
  47. package/rest/knowledgeGraph/wasmInterface/wasmToUpdateResponseFactories.js +1 -1
  48. package/rest/networks/support/NetworkElement.d.ts +13 -1
  49. package/rest/networks/support/NetworkElement.js +1 -1
  50. package/support/revision.js +1 -1
  51. package/views/2d/engine/webgl/shaderGraph/graph/GlslGraphWriter.js +1 -1
  52. package/views/2d/engine/webgl/shaderGraph/graph/ShaderGraphContext.js +1 -1
  53. package/views/2d/engine/webgl/shaderGraph/graph/glsl.js +1 -1
  54. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  55. package/views/3d/analysis/ShadowCastAnalysisView3D.d.ts +6 -5
  56. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  57. package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +1 -1
  58. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  59. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  60. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationTechniqueConfiguration.js +1 -1
  61. package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
  62. package/views/3d/webgl-engine/effects/glow/GlowBlur.glsl.js +1 -1
  63. package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
  64. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  65. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  66. package/views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration.js +1 -1
  67. package/assets/esri/core/workers/chunks/0840e7dd62643c56ae9e.js +0 -1
  68. package/assets/esri/core/workers/chunks/0cc4b3100a7a453bd058.js +0 -1
  69. package/assets/esri/core/workers/chunks/1e4e7111d43f01c149b3.js +0 -1
  70. package/assets/esri/core/workers/chunks/73af4c947e8151d411c1.js +0 -2
  71. package/assets/esri/core/workers/chunks/752f4e0e2961fc315dca.js +0 -1
  72. package/assets/esri/core/workers/chunks/a508104179e08f0f268c.js +0 -2
  73. package/assets/esri/core/workers/chunks/bb5f909a2f26fc6a21b0.js +0 -2
  74. package/assets/esri/core/workers/chunks/bea2fd831d7a864e5995.js +0 -596
  75. package/assets/esri/core/workers/chunks/c8ef80a7c46d7d2c5172.js +0 -1
  76. package/assets/esri/core/workers/chunks/f971dcfd04af1fd652b4.js +0 -1
  77. /package/assets/esri/core/workers/chunks/{577cbc131b21c351fae5.js.LICENSE.txt → 2647c739cda29361a463.js.LICENSE.txt} +0 -0
  78. /package/assets/esri/core/workers/chunks/{bb5f909a2f26fc6a21b0.js.LICENSE.txt → 4df19e670b6ed76c1dea.js.LICENSE.txt} +0 -0
  79. /package/assets/esri/core/workers/chunks/{a508104179e08f0f268c.js.LICENSE.txt → 8a7a99533d02eb9cb058.js.LICENSE.txt} +0 -0
  80. /package/assets/esri/core/workers/chunks/{73af4c947e8151d411c1.js.LICENSE.txt → d1ba118ddd0390c07f35.js.LICENSE.txt} +0 -0
  81. /package/assets/esri/core/workers/chunks/{ee057c85cdf6beb5b012.js.LICENSE.txt → f706bfea34d22539b46a.js.LICENSE.txt} +0 -0
@@ -1,8 +1,8 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{addMainLightDirection as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i,If as n}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ColorAttachment1 as u}from"../views/webgl/enums.js";import{NoParameters as d}from"../views/webgl/NoParameters.js";import{ShaderBuilder as h}from"../views/webgl/ShaderBuilder.js";const p=.01,f=.008,g=.002,v=.5,x=.02,b=.1,w=.008,y=.012,S=.008,M=40,C=.095,F=.008,D=60,W=2,j=.0039,z=.25,I=1/3,B=2/3,G=2,P=.05,T=.15,$=.75,R=.15,L=16;class O extends d{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.rayMarchMaxReach=R,this.rayMarchMaxSteps=L,this.accumulatedFrames=0,this.frameCount=0}}function E(d){const R=new h,L=R.fragment;return R.include(e),R.include(r),o(L),L.include(t),R.include(a,d),L.uniforms.add(new m("normalMap",e=>e.normalTexture),new m("depthMap",e=>e.depthTexture),new m("lastFrameColorTexture",(e,t)=>t.reprojection.lastFrameColor?.getTexture()),new m("lastFrameDepthTexture",(e,t)=>t.reprojection.lastFrameDepth?.attachment),new c("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new c("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(u)),new s("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new s("view",e=>e.camera.viewMatrix),new l("accumulatedFramesGI",e=>e.accumulatedFrames),new l("frameCount",e=>e.frameCount),new l("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new l("rayMarchMaxReach",e=>e.rayMarchMaxReach),new l("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new m("blueNoiseTex",e=>e.noiseTexture)),d.hasEmission&&L.uniforms.add(new m("lastFrameEmissionTexture",(e,t)=>t.reprojection.lastFrameEmission?.attachment)),L.constants.add("timeSamplesSize","float",64),L.constants.add("blueNoiseGridSize","float",8),L.code.add(i`
2
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{addMainLightDirection as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i,If as n}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ColorAttachment1 as u}from"../views/webgl/enums.js";import{NoParameters as d}from"../views/webgl/NoParameters.js";import{ShaderBuilder as h}from"../views/webgl/ShaderBuilder.js";const p=.01,f=.008,g=.002,v=.5,x=.02,b=.1,w=.008,y=.012,S=.008,C=40,M=.095,F=.008,D=60,W=2,j=.0039,I=.25,z=1/3,B=2/3,G=2,P=.05,T=.15,$=.75,R=.15,L=16;class O extends d{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.frameCount=0,this.rayMarchMaxReach=R,this.rayMarchMaxSteps=L}}function E(d){const R=new h,L=R.fragment;return R.include(e),R.include(r),t(L),L.include(o),R.include(a,d),L.uniforms.add(new m("normalMap",e=>e.normalTexture),new m("depthMap",e=>e.depthTexture),new m("lastFrameColorTexture",(e,o)=>o.reprojection.lastFrameColor?.getTexture()),new m("lastFrameDepthTexture",(e,o)=>o.reprojection.lastFrameDepth?.attachment),new c("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new c("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(u)),new s("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new s("view",e=>e.camera.viewMatrix),new l("accumulatedFramesGI",e=>e.accumulatedFrames),new l("frameCount",e=>e.frameCount),new l("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new m("blueNoiseTex",e=>e.noiseTexture)),L.uniforms.add(new l("rayMarchMaxReach",e=>e.rayMarchMaxReach),new l("rayMarchMaxSteps",e=>e.rayMarchMaxSteps)),d.hasEmission&&L.uniforms.add(new m("lastFrameEmissionTexture",(e,o)=>o.reprojection.lastFrameEmission?.attachment)),L.constants.add("timeSamplesSize","float",64),L.constants.add("blueNoiseGridSize","float",8),L.code.add(i`
3
3
  float computeIdleColorBlendWeight(float accumulatedFrames) {
4
4
  float idleColorBlendProgress = clamp(
5
- accumulatedFrames / ${i.float(M)},
5
+ accumulatedFrames / ${i.float(C)},
6
6
  0.0,
7
7
  1.0
8
8
  );
@@ -20,7 +20,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
20
20
  1.0
21
21
  );
22
22
  return mix(
23
- ${i.float(C)},
23
+ ${i.float(M)},
24
24
  ${i.float(F)},
25
25
  pow(idleOcclusionBlendProgress, ${i.float(W)})
26
26
  );
@@ -69,7 +69,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
69
69
  }
70
70
 
71
71
  float computeChromaWeight(vec3 color) {
72
- float gray = dot(color, vec3(${i.float(I)}));
72
+ float gray = dot(color, vec3(${i.float(z)}));
73
73
  vec3 deviationFromGray = color - gray;
74
74
  float chromaDistanceSquared = dot(deviationFromGray, deviationFromGray);
75
75
  float normalizedChroma = chromaDistanceSquared / ${i.float(B)};
@@ -80,7 +80,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
80
80
  float computeColorBleedWeight(vec3 receiverColor, vec3 sourceColor) {
81
81
  float receiverChromaWeight = computeChromaWeight(receiverColor);
82
82
  float sourceChromaWeight = computeChromaWeight(sourceColor);
83
- float receiverAverageIntensity = dot(receiverColor, vec3(${i.float(I)}));
83
+ float receiverAverageIntensity = dot(receiverColor, vec3(${i.float(z)}));
84
84
 
85
85
  // Favor bright, neutral receivers lit by more saturated hit surfaces
86
86
  float bleedFactor =
@@ -184,15 +184,17 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
184
184
  );
185
185
 
186
186
  if (hit.z > 0.0) {
187
- // Emission and color bleed - reproject the current receiver and sampled hit to estimate bounced color
188
- vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
187
+ ${n(d.hasColor,i`
188
+ // Emission and color bleed - Reproject the current receiver and sampled hit to estimate bounced color
189
+ vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
189
190
 
190
- vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
191
- vec3 sourceColor = texture(lastFrameColorTexture, hitReprojectedCoordinate).rgb;
192
- vec3 sourceEmission = ${n(d.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
191
+ vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
192
+ vec3 sourceColor = texture(lastFrameColorTexture, hitReprojectedCoordinate).rgb;
193
+ vec3 sourceEmission = ${n(d.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
193
194
 
194
- float colorBleedWeight = computeColorBleedWeight(receiverColor, sourceColor);
195
- fragGlobalIllumination.rgb += (sourceColor * colorBleedWeight + sourceEmission) * stepSize;
195
+ float colorBleedWeight = computeColorBleedWeight(receiverColor, sourceColor);
196
+ fragGlobalIllumination.rgb += (sourceColor * colorBleedWeight + sourceEmission) * stepSize;
197
+ `)}
196
198
  } else {
197
199
  // Occlusion - heuristic modulating sky intensity based on angle to main light
198
200
  vec4 viewMainLightDirection = view * vec4(mainLightDirection, 0.0);
@@ -208,12 +210,16 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
208
210
  ? randomDirectionSample.b * ${i.float(j)}
209
211
  : 0.0;
210
212
 
211
- // Accumulate color
212
- vec3 lastFrameColor = lastFrameGlobalIllumination.rgb;
213
- float colorDitherScale = isScaledGlobalIllumination ? ${i.float(z)} : 1.0;
214
- fragGlobalIllumination.rgb = resetColorHistory
215
- ? vec3(0.0)
216
- : mix(lastFrameColor + accumulationDither * colorDitherScale, fragGlobalIllumination.rgb, colorBlendWeight);
213
+ ${n(d.hasColor,i`
214
+ // Accumulate color
215
+ vec3 lastFrameColor = lastFrameGlobalIllumination.rgb;
216
+ float colorDitherScale = isScaledGlobalIllumination ? ${i.float(I)} : 1.0;
217
+ fragGlobalIllumination.rgb = resetColorHistory
218
+ ? vec3(0.0)
219
+ : mix(lastFrameColor + accumulationDither * colorDitherScale, fragGlobalIllumination.rgb, colorBlendWeight);
220
+ `,i`
221
+ fragGlobalIllumination.rgb = vec3(0.0);
222
+ `)}
217
223
 
218
224
  // Accumulate occlusion
219
225
  fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
@@ -1,24 +1,24 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{normalize as e}from"../core/arrayUtils.js";import{gauss as r}from"../core/mathUtils.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Gamma as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{FloatPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as l,glsl as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as n}from"../views/webgl/NoParameters.js";import{ShaderBuilder as c}from"../views/webgl/ShaderBuilder.js";class u extends n{constructor(){super(...arguments),this.blurRadius=0,this.level=0,this.inputScale=1}}function v({glowStage:n,useFloatBlend:u}){const v=new c,d=v.fragment;v.include(t),d.include(o);const f=0===n;d.uniforms.add(new a("colorTexture",e=>e.input),new i("blurRadius",({blurRadius:e})=>e),new i("level",({level:e})=>e),new i("inputScale",e=>u?1:e.inputScale));const m=7;let p="float locations1D["+m+"] = float["+m+"](";for(let e=0;e<m;e++){p+=`${0===e?"":","} ${(e/(m-1)*2-1).toFixed(15)}`}p+=");";const w=2,g=new Array(m).fill(0).map((e,t)=>r(t-Math.floor(m/2),w));e(g);const b=g.reduce((e,r,t)=>`${e}${0===t?"":","} ${r.toFixed(15)}`,"float locations1DWeights["+m+"] = float["+m+"](")+");";return d.code.add(s`
3
- ${p}
4
- ${b}
2
+ import{normalize as e}from"../core/arrayUtils.js";import{gauss as r}from"../core/mathUtils.js";import{create as o}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Gamma as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{Float2PassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as a,glsl as n}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as u}from"../views/webgl/NoParameters.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";class d extends u{constructor(){super(...arguments),this.blurRadius=0,this.level=0,this.inputScale=1,this.size=o()}}function f({glowStage:o,useFloatBlend:u}){const d=new v,f=d.fragment;d.include(t),f.include(i);const m=0===o;f.uniforms.add(new c("colorTexture",e=>e.input),new l("blurRadius",({blurRadius:e})=>e),new l("level",({level:e})=>e),new l("inputScale",({inputScale:e})=>u?1:e),new s("size",({size:e})=>e));const p=7;let w="float locations1D["+p+"] = float["+p+"](";for(let e=0;e<p;e++){w+=`${0===e?"":","} ${(e/(p-1)*2-1).toFixed(15)}`}w+=");";const g=2,b=new Array(p).fill(0).map((e,o)=>r(o-Math.floor(p/2),g));e(b);const h=b.reduce((e,r,o)=>`${e}${0===o?"":","} ${r.toFixed(15)}`,"float locations1DWeights["+p+"] = float["+p+"](")+");";return f.code.add(n`
3
+ ${w}
4
+ ${h}
5
5
 
6
6
  vec3 blurUniformSamples() {
7
- vec3 res = vec3(0.0);
8
- int textureLevel = int(${f?"level":"0.0"});
9
- vec2 size = vec2(textureSize(colorTexture, int(textureLevel)));
7
+ int textureLevel = int(${m?"level":"0.0"});
10
8
  vec2 aspectCorrection = vec2(1.0, size.x / size.y);
11
- ${l(!f,"float viewportScale = 1.0 / pow(2.0, level);\n vec2 uv = uv * viewportScale;\n ")}
12
9
 
10
+ ${a(m,"float viewportScale = 1.0;","float viewportScale = 1.0 / pow(2.0, level);")}
11
+ vec2 uv = uv * viewportScale;
13
12
  vec2 pixelCenterShift = 0.5 / size;
14
13
 
15
- for(int i=0;i < ${s.int(m)}; i++) {
16
- float uv1D = locations1D[i] + ${f?"pixelCenterShift.x":"pixelCenterShift.y"};
17
- vec2 uvOffset = ${f?"vec2(uv1D, 0.0)":"vec2(0.0, uv1D * viewportScale)"};
14
+ vec3 res = vec3(0.0);
15
+ for(int i = 0; i < ${n.int(p)}; ++i) {
16
+ float uv1D = locations1D[i] * viewportScale + ${m?"pixelCenterShift.x":"pixelCenterShift.y"};
17
+ vec2 uvOffset = ${m?"vec2(uv1D, 0.0)":"vec2(0.0, uv1D)"};
18
18
  vec2 uvDistorted = uv + uvOffset * blurRadius * aspectCorrection;
19
19
  vec3 sampleColor = texture(colorTexture, uvDistorted, -1.0).rgb * inputScale;
20
20
  res += sampleColor * locations1DWeights[i];
21
21
  }
22
22
  return res;
23
23
  }
24
- `).main.add(s`fragColor = vec4(blurUniformSamples(), 0.0);`),v}const d=Object.freeze(Object.defineProperty({__proto__:null,GlowBlurPassParameters:u,build:v},Symbol.toStringTag,{value:"Module"}));export{u as G,d as a,v as b};
24
+ `).main.add(n`fragColor = vec4(blurUniformSamples(), 0.0);`),d}const m=Object.freeze(Object.defineProperty({__proto__:null,GlowBlurPassParameters:d,build:f},Symbol.toStringTag,{value:"Module"}));export{d as G,m as a,f as b};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as c,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as x,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as D}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 L}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as b}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as y}from"../views/webgl/ShaderBuilder.js";const z=1;function P(P){const j=new y,{attributes:C,varyings:W,vertex:R,fragment:F}=j,{applyMarkerOffset:A,draped:V,output:T,capType:E,stippleEnabled:N,falloffEnabled:O,roundJoins:M,wireframe:$,innerColorEnabled:_,hasAnimation:k,hasScreenSizePerspective:I,worldSizedImagePattern:B}=P;R.inputs.add("position",()=>"position"),F.include(a),j.include(t,P),j.include(n,P),j.include(i,P),j.include(L,P);const H=A&&!V;H&&(R.uniforms.add(new u("markerScale",e=>e.markerScale)),j.include(r,{space:2,hasScreenSizePerspective:I})),c(R,P),R.uniforms.add(new D("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new v("nearFar",e=>e.camera.nearFar),new u("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new f("viewport",e=>e.camera.fullViewport)),R.constants.add("LARGE_HALF_FLOAT","float",65500),C.add("position","vec3"),C.add("previousDelta","vec4"),C.add("nextDelta","vec4"),C.add("lineParameters","vec2"),C.add("u0","float"),W.add("vColor","vec4"),W.add("vpos","vec3",{invariant:!0}),W.add("vLineDistance","float"),W.add("vLineWidth","float");const J=N;J&&W.add("vLineSizeInv","float");const U=2===E,Z=N&&U,G=O||Z;G&&W.add("vLineDistanceNorm","float"),U&&(W.add("vSegmentSDF","float"),W.add("vReverseSegmentSDF","float")),R.code.add(x`vec3 perpendicular(vec3 v) {
2
+ import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as p,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as D,If as x}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as L}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as w}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as b}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as y}from"../views/webgl/ShaderBuilder.js";const P=1;function C(P){const C=new y,{attributes:z,varyings:j,vertex:F,fragment:W}=C,{applyMarkerOffset:R,draped:A,output:V,capType:I,stippleEnabled:E,falloffEnabled:N,roundJoins:O,wireframe:T,innerColorEnabled:J,hasAnimation:_,hasScreenSizePerspective:M,worldSizedImagePattern:U}=P;F.inputs.add("position",()=>"position"),W.include(a),C.include(t,P),C.include(n,P),C.include(i,P),C.include(w,P);const $=R&&!A;$&&(F.uniforms.add(new S("markerScale",e=>e.markerScale)),C.include(o,{space:2,hasScreenSizePerspective:M})),p(F,P),F.uniforms.add(new u("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new f("nearFar",e=>e.camera.nearFar),new S("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new v("viewport",e=>e.camera.fullViewport)),F.constants.add("LARGE_HALF_FLOAT","float",65500),F.constants.add("EPS","float",.001),F.constants.add("NUM_JOIN_SUBDIVISIONS","float",P.numJoinSubdivisions),z.add("position","vec3"),z.add("previousDelta","vec4"),z.add("nextDelta","vec4"),z.add("lineParameters","vec2"),z.add("u0","float"),j.add("vColor","vec4"),j.add("vpos","vec3",{invariant:!0}),j.add("vLineDistance","float"),j.add("vLineWidth","float"),E||(j.add("vIsInsideJoin","float"),j.add("vStretchFactor","float"),j.add("vJoinCenterLineSDF","float"));const B=E;B&&j.add("vLineSizeInv","float");const k=2===I,H=E&&k,G=N||H;G&&j.add("vLineDistanceNorm","float"),k&&(j.add("vSegmentSDF","float"),j.add("vReverseSegmentSDF","float")),F.code.add(D`vec3 perpendicular(vec3 v) {
3
3
  return vec3(v.y, -v.x, 0.0);
4
4
  }
5
5
  float interp(float ncp, vec4 a, vec4 b) {
@@ -10,12 +10,12 @@ float s = sin(a);
10
10
  float c = cos(a);
11
11
  mat2 m = mat2(c, -s, s, c);
12
12
  return vec3(m * v.xy, v.z);
13
- }`),R.code.add(x`vec4 projectAndScale(vec4 pos) {
13
+ }`),F.code.add(D`vec4 projectAndScale(vec4 pos) {
14
14
  vec4 posNdc = proj * pos;
15
15
  posNdc.xy *= viewport.zw / posNdc.w;
16
16
  posNdc.z /= posNdc.w;
17
17
  return posNdc;
18
- }`),R.code.add(x`void clip(
18
+ }`),F.code.add(D`void clip(
19
19
  inout vec4 pos,
20
20
  inout vec4 prev,
21
21
  inout vec4 next,
@@ -46,7 +46,7 @@ if (next.z > -nearFar[0]) {
46
46
  next = mix(next, pos, interp(vnp, next, pos));
47
47
  }
48
48
  }
49
- }`),m(R),R.constants.add("aaWidth","float",N?0:1).main.add(x`
49
+ }`),m(F),F.constants.add("aaWidth","float",E?0:1).main.add(D`
50
50
  // unpack values from vertex type
51
51
  bool isStartVertex = abs(abs(lineParameters.y) - 3.0) == 1.0;
52
52
  vec3 prevPosition = position + previousDelta.xyz * previousDelta.w;
@@ -65,11 +65,11 @@ next = mix(next, pos, interp(vnp, next, pos));
65
65
  vec4 next = view * vec4(nextPosition, 1.0);
66
66
 
67
67
  bool isJoin = abs(lineParameters.y) < 3.0;
68
- `),H&&R.main.add(x`vec4 other = isStartVertex ? next : prev;
68
+ `),$&&F.main.add(D`vec4 other = isStartVertex ? next : prev;
69
69
  bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
70
70
  if (!isJoin && !markersHidden) {
71
71
  pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
72
- }`),j.include(d),R.main.add(x`
72
+ }`),C.include(d),F.main.add(D`
73
73
  clip(pos, prev, next, isStartVertex);
74
74
 
75
75
  vec3 clippedPos = pos.xyz;
@@ -85,18 +85,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
85
85
  float leftLen = length(left);
86
86
  float rightLen = length(right);
87
87
 
88
- float lineSize = getSize(${S(I,"clippedPos")});
89
- ${S(N&&I,"float patternLineSize = getSize(clippedCenter);")}
90
- ${S(N&&!I,"float patternLineSize = lineSize;")}
88
+ float lineSize = getSize(${x(M,"clippedPos")});
89
+ ${x(E&&M,"float patternLineSize = getSize(clippedCenter);")}
90
+ ${x(E&&!M,"float patternLineSize = lineSize;")}
91
91
 
92
- ${S(B,x`
92
+ ${x(U,D`
93
93
  lineSize += aaWidth;
94
94
  float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
95
95
  if (lineWidth < 1.0) {
96
96
  coverage = lineWidth;
97
97
  lineWidth = 1.0;
98
98
  }
99
- `,x`
99
+ `,D`
100
100
  if (lineSize < 1.0) {
101
101
  coverage = lineSize; // convert sub-pixel coverage to alpha
102
102
  lineSize = 1.0;
@@ -107,51 +107,70 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
107
107
  `)}
108
108
 
109
109
  vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
110
- ${J?x`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
111
- `);(N||U)&&R.main.add(x`
110
+ ${B?D`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
111
+ `);(E||k)&&F.main.add(D`
112
112
  float isEndVertex = float(!isStartVertex);
113
113
  vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
114
114
  vec3 segment = mix(right, left, isEndVertex);
115
- ${U?x`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
116
- `),R.main.add(x`left = (leftLen > 0.001) ? left/leftLen : vec3(0.0, 0.0, 0.0);
117
- right = (rightLen > 0.001) ? right/rightLen : vec3(0.0, 0.0, 0.0);
115
+ ${k?D`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
116
+ `),F.main.add(D`left = (leftLen > EPS) ? left/leftLen : vec3(0.0, 0.0, 0.0);
117
+ right = (rightLen > EPS) ? right/rightLen : vec3(0.0, 0.0, 0.0);
118
118
  vec3 segmentDirection = isStartVertex ? right : left;
119
119
  vec3 capDisplacementDir = vec3(0.0, 0.0, 0.0);
120
120
  vec3 joinDisplacementDir = vec3(0.0, 0.0, 0.0);
121
121
  float displacementLen = lineWidth;
122
+ float miterDisplacementLen = lineWidth;
123
+ float innerDisplacementLen = lineWidth;`),E||F.main.add(D`vIsInsideJoin = 0.0;
124
+ vStretchFactor = 1.0;
125
+ vJoinCenterLineSDF = LARGE_HALF_FLOAT;`),F.main.add(D`float subdivisionFactor = 0.0;
126
+ bool isOutside = false;
122
127
  if (isJoin) {
123
- bool isOutside = (left.x * right.y - left.y * right.x) * lineParameters.y > 0.0;
128
+ isOutside = (left.x * right.y - left.y * right.x) * lineParameters.y > 0.0;
124
129
  vec3 joinDirection = normalize(left + right);
125
130
  joinDisplacementDir = perpendicular(joinDirection);
126
- if (leftLen > 0.001 && rightLen > 0.001) {
131
+ if (leftLen > EPS && rightLen > EPS) {
127
132
  float nDotSeg = dot(joinDisplacementDir, left);
128
133
  displacementLen /= length(nDotSeg * left - joinDisplacementDir);
134
+ miterDisplacementLen = displacementLen;
135
+ innerDisplacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
129
136
  if (!isOutside) {
130
- displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
137
+ displacementLen = innerDisplacementLen;
131
138
  }
132
139
  }
133
- float subdivisionFactor = lineParameters.x;
134
- if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),M?R.main.add(x`
135
- vec3 startDir = leftLen < 0.001 ? right : left;
140
+ subdivisionFactor = lineParameters.x;`),E||F.main.add(D`vIsInsideJoin = subdivisionFactor > 0.0 && subdivisionFactor < 1.0 ? 1.0: 0.0;
141
+ if (miterDisplacementLen > miterLimit * lineWidth) {
142
+ vec2 leftScreenDir = left.xy;
143
+ vec2 rightScreenDir = right.xy;
144
+ float leftScreenLen = length(leftScreenDir);
145
+ float rightScreenLen = length(rightScreenDir);
146
+ if (leftScreenLen > EPS && rightScreenLen > EPS) {
147
+ leftScreenDir /= leftScreenLen;
148
+ rightScreenDir /= rightScreenLen;
149
+ float roundJoinAngle = acos(clamp(dot(leftScreenDir, rightScreenDir), -1.0, 1.0));
150
+ float triangleHeight = (innerDisplacementLen + lineWidth) * cos(roundJoinAngle / (2.0 + 2.0 * NUM_JOIN_SUBDIVISIONS));
151
+ vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0), pos.w);
152
+ }
153
+ }`),F.main.add(D`if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),O?F.main.add(D`
154
+ vec3 startDir = leftLen < EPS ? right : left;
136
155
  startDir = perpendicular(startDir);
137
156
 
138
- vec3 endDir = rightLen < 0.001 ? left : right;
157
+ vec3 endDir = rightLen < EPS ? left : right;
139
158
  endDir = perpendicular(endDir);
140
159
 
141
- float factor = ${N?x`min(1.0, subdivisionFactor * ${x.float((z+2)/(z+1))})`:x`subdivisionFactor`};
160
+ float factor = ${E?D`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:D`subdivisionFactor`};
142
161
 
143
162
  float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
144
163
  joinDisplacementDir = rotateZ(startDir, -sign(lineParameters.y) * factor * rotationAngle);
145
- `):R.main.add(x`if (leftLen < 0.001) {
164
+ `):F.main.add(D`if (leftLen < EPS) {
146
165
  joinDisplacementDir = right;
147
166
  }
148
- else if (rightLen < 0.001) {
167
+ else if (rightLen < EPS) {
149
168
  joinDisplacementDir = left;
150
169
  }
151
170
  else {
152
171
  joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
153
172
  }
154
- joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==E;return R.main.add(x`
173
+ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==I;return F.main.add(D`
155
174
  displacementLen = lineWidth;
156
175
  }
157
176
  } else {
@@ -159,9 +178,9 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==E;return
159
178
  joinDisplacementDir = isStartVertex ? right : left;
160
179
  joinDisplacementDir = perpendicular(joinDisplacementDir);
161
180
 
162
- ${X?x`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
181
+ ${X?D`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
163
182
  }
164
- `),R.main.add(x`
183
+ `),F.main.add(D`
165
184
  // Displacement (in pixels) caused by join/or cap
166
185
  vec2 dposXY = (joinDisplacementDir.xy * sign(lineParameters.y) + capDisplacementDir.xy) * displacementLen;
167
186
 
@@ -173,25 +192,40 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const X=0!==E;return
173
192
  */
174
193
  float dposZ = dot(dposXY, segmentDirection.xy) / dot(segmentDirection.xy, segmentDirection.xy) * segmentDirection.z;
175
194
  vec3 dpos = vec3(dposXY, dposZ);
195
+
176
196
  float lineDistNorm = noPerspectiveWrite(sign(lineParameters.y), pos.w);
177
197
 
178
198
  vLineDistance = lineWidth * lineDistNorm;
179
- ${G?x`vLineDistanceNorm = lineDistNorm;`:""}
199
+ ${G?D`vLineDistanceNorm = lineDistNorm;`:""}
180
200
 
181
201
  pos.xyz += dpos;
182
- `),U&&R.main.add(x`vec2 segmentDir = normalize(segment.xy);
202
+ `),E||F.main.add(D`if (isJoin) {
203
+ vec2 joinCenterToVertex = dposXY;
204
+ vec2 leftCenterlineDir = left.xy;
205
+ vec2 rightCenterlineDir = right.xy;
206
+ float leftCenterlineLen = length(leftCenterlineDir);
207
+ float rightCenterlineLen = length(rightCenterlineDir);
208
+ leftCenterlineDir = leftCenterlineLen > EPS ? leftCenterlineDir / leftCenterlineLen : vec2(1.0, 0.0);
209
+ rightCenterlineDir = rightCenterlineLen > EPS ? rightCenterlineDir / rightCenterlineLen : leftCenterlineDir;
210
+ float leftCenterLineSDF = dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex);
211
+ float rightCenterLineSDF = dot(vec2(rightCenterlineDir.y, -rightCenterlineDir.x), joinCenterToVertex);
212
+ vJoinCenterLineSDF = noPerspectiveWrite(
213
+ mix(leftCenterLineSDF, rightCenterLineSDF, step(0.5, subdivisionFactor)),
214
+ pos.w
215
+ );
216
+ }`),k&&F.main.add(D`vec2 segmentDir = normalize(segment.xy);
183
217
  vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
184
- vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),N&&(V?R.uniforms.add(new h("worldToScreenRatio",e=>1/e.screenToPCSRatio)):R.main.add(x`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
185
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),R.main.add(x`float segmentLengthScreenDouble = length(segment.xy);
218
+ vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),E&&(A?F.uniforms.add(new h("worldToScreenRatio",e=>1/e.screenToPCSRatio)):F.main.add(D`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
219
+ float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),F.main.add(D`float segmentLengthScreenDouble = length(segment.xy);
186
220
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
187
221
  float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
188
222
  float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
189
- vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),V?R.main.add(x`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
190
- float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):R.main.add(x`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
191
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),R.uniforms.add(new u("stipplePatternPixelSize",e=>o(e))),R.main.add(x`
223
+ vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),A?F.main.add(D`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
224
+ float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):F.main.add(D`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
225
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),F.uniforms.add(new S("stipplePatternPixelSize",e=>r(e))),F.main.add(D`
192
226
  float patternLength = patternLineSize * stipplePatternPixelSize;
193
227
 
194
- ${S(B,x`
228
+ ${x(U,D`
195
229
  float uu = mix(u0, u0 - segmentLengthRender, isEndVertex);
196
230
  vStippleDistanceLimits = vec2(uu, uu + segmentLengthRender);
197
231
  vStipplePatternStretch = 1.0;
@@ -199,7 +233,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
199
233
  // The v-coordinate used in case of an image pattern.
200
234
  bool isLeft = sign(lineParameters.y) < 0.0;
201
235
  vStippleV = isLeft ? 0.0 : 1.0;
202
- `,x`
236
+ `,D`
203
237
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
204
238
  // fragment shader
205
239
  vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
@@ -209,7 +243,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
209
243
 
210
244
  // Adjust the coordinate to the displaced position (the pattern is shortened/overextended on the in/outside of
211
245
  // joins)
212
- if (segmentLengthScreenDouble >= 0.001) {
246
+ if (segmentLengthScreenDouble >= EPS) {
213
247
  // Project the actual vertex position onto the line segment. Note that the resulting factor is within [0..1]
214
248
  // at the original vertex positions, and slightly outside of that range at the displaced positions
215
249
  vec3 stippleDisplacement = pos.xyz - segmentOrigin;
@@ -230,7 +264,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
230
264
  isStartVertex ?
231
265
  vec2(-1e34, vStippleDistanceLimits.y) :
232
266
  vec2(vStippleDistanceLimits.x, 1e34);
233
- `)),R.main.add(x`
267
+ `)),F.main.add(D`
234
268
  // Convert back into NDC
235
269
  pos.xy = (pos.xy / viewport.zw) * pos.w;
236
270
  pos.z = pos.z * pos.w;
@@ -238,42 +272,48 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
238
272
  vColor = getColor();
239
273
  vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
240
274
 
241
- ${$&&!V?"pos.z -= 0.001 * pos.w;":""}
275
+ ${T&&!A?"pos.z -= EPS * pos.w;":""}
242
276
 
243
277
  // transform final position to camera space for slicing
244
278
  vpos = (inverseProjectionMatrix * pos).xyz;
245
279
  gl_Position = pos;
246
280
  forwardObjectAndLayerIdColor();
247
- }`),j.fragment.include(e,P),j.include(b,P),F.include(l),F.main.add(x`discardBySlice(vpos);`),j.include(p),F.include(w),F.main.add(x`
281
+ }`),C.fragment.include(e,P),C.include(b,P),W.include(l),W.main.add(D`discardBySlice(vpos);`),C.include(c),W.include(L),W.main.add(D`
248
282
  float lineWidth = noPerspectiveRead(vLineWidth);
249
283
  float lineDistance = noPerspectiveRead(vLineDistance);
250
- ${S(G,x`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
251
- `),$?F.main.add(x`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(U&&F.main.add(x`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
284
+ ${x(G,D`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
285
+ `),T?W.main.add(D`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(k&&W.main.add(D`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
252
286
  vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
253
287
  float fragmentRadius = length(fragmentPosition);
254
288
  float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
255
289
  float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
256
290
  if (capCoverage < alphaCutoff) {
257
291
  discard;
258
- }`),Z?F.main.add(x`vec2 stipplePosition = vec2(
292
+ }`),H?W.main.add(D`vec2 stipplePosition = vec2(
259
293
  min(getStippleSDF() * 2.0 - 1.0, 0.0),
260
294
  lineDistanceNorm
261
295
  );
262
296
  float stippleRadius = length(stipplePosition * lineWidth);
263
297
  float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
264
298
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
265
- float stippleAlpha = step(alphaCutoff, stippleCoverage);`):F.main.add(x`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==T&&F.main.add(x`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),j.include(p),F.uniforms.add(new g("intrinsicColor",e=>e.color)).main.add(x`vec4 color = intrinsicColor * vColor;
266
- color.a = noPerspectiveRead(color.a);`),_&&F.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new u("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(x`float distToInner = abs(lineDistance) - innerWidth;
299
+ float stippleAlpha = step(alphaCutoff, stippleCoverage);`):W.main.add(D`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==V&&W.main.add(D`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),C.include(c),W.uniforms.add(new g("intrinsicColor",e=>e.color)).main.add(D`vec4 color = intrinsicColor * vColor;
300
+ color.a = noPerspectiveRead(color.a);`),J&&W.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new S("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(D`float distToInner = abs(lineDistance) - innerWidth;
267
301
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
268
302
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
269
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),F.main.add(x`vec4 finalColor = blendStipple(color, stippleAlpha);`),O&&(F.uniforms.add(new u("falloff",e=>e.falloff)),F.main.add(x`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),N||F.main.add(x`float featherStartDistance = max(lineWidth - 2.0, 0.0);
303
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),W.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),N&&(W.uniforms.add(new S("falloff",e=>e.falloff)),W.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),E||W.main.add(D`float stretchFactor = vIsInsideJoin > 0.0 ? noPerspectiveRead(vStretchFactor) : 1.0;
304
+ float featherWidth = 2.0;
305
+ float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
306
+ float straightFeatherStartDistance = max(lineWidth - featherWidth, 0.0);
270
307
  float value = abs(lineDistance);
271
308
  float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
272
- finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),k&&F.main.add(x`
309
+ float joinCenterLineDistance = abs(noPerspectiveRead(vJoinCenterLineSDF));
310
+ float straightFeather = (joinCenterLineDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
311
+ feather = vIsInsideJoin > 0.0 ? max(feather, straightFeather) : feather;
312
+ finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),_&&W.main.add(D`
273
313
  finalColor = animate(finalColor);
274
314
 
275
- ${S(11!==T,x`
315
+ ${x(11!==V,D`
276
316
  if (finalColor.a <= alphaCutoff) {
277
317
  discard;
278
318
  }`)}
279
- `)),F.main.add(x`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),j}const j=Object.freeze(Object.defineProperty({__proto__:null,build:P,ribbonlineNumRoundJoinSubdivisions:z},Symbol.toStringTag,{value:"Module"}));export{j as R,P as b,z as r};
319
+ `)),W.main.add(D`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),C}const z=Object.freeze(Object.defineProperty({__proto__:null,build:C,ribbonlineNumRoundJoinSubdivisions:P},Symbol.toStringTag,{value:"Module"}));export{z as R,C as b,P as r};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{clone as o,fromValues as r,create as a}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{BlendColorsPremultiplied as t,premultiplyAlpha as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/BlendColorsPremultiplied.glsl.js";import{CameraSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{Float2PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float4PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{Float4sPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float4sPassUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as c,If as u}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{maxColorRampSize as w}from"../views/3d/webgl-engine/shaders/colorRampParameters.js";import{S as C}from"./ShadowCastAccumulate.glsl.js";import{NoParameters as f}from"../views/webgl/NoParameters.js";import{ShaderBuilder as b}from"../views/webgl/ShaderBuilder.js";class S extends f{constructor(r){super(),this._data=r,this.sampleScale=e(),this.opacityFromElevation=1,this.gradientColorRamp=y,this.thresholdColor=o(M),this.bandedGradientColorRamp=P,this.bandSize=.1,this.threshold=.5}get shadowCastMap(){return this._data.shadowCastTexture}}const R=.7,j=50/255,y=[[0,r(0,0,1,0)],[1,r(0,0,1,R)]],M=r(1,0,0,R),P=[[0,r(j,j,j,0)],[1,r(j,j,j,R)]];function $(e){const o=new b,r=o.fragment;o.include(n),o.include(l);const{visualization:a}=e;r.constants.add("inverseSampleValue","float",C),r.uniforms.add(new g("shadowCastMap",e=>e.shadowCastMap),new i("sampleScale",e=>e.sampleScale),new h("opacityFromElevation",e=>e.opacityFromElevation));const f=2===a,S=3===a,R=1===a;S&&r.include(t);const j=!f;switch(j&&r.code.add(c`vec4 evaluateColorRamp(float value) {
2
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{clone as o,fromValues as r,create as a}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{BlendColorsPremultiplied as l,premultiplyAlpha as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/BlendColorsPremultiplied.glsl.js";import{CameraSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{Float2PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float4PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{Float4sPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float4sPassUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as u,If as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{maxColorRampSize as C}from"../views/3d/webgl-engine/shaders/colorRampParameters.js";import{S as w}from"./ShadowCastAccumulate.glsl.js";import{NoParameters as f}from"../views/webgl/NoParameters.js";import{ShaderBuilder as b}from"../views/webgl/ShaderBuilder.js";class S extends f{constructor(r){super(),this._data=r,this.sampleScale=e(),this.opacityFromElevation=1,this.gradientColorRamp=y,this.thresholdColor=o($),this.bandedGradientColorRamp=M,this.bandSize=.1,this.threshold=.5}get shadowCastMap(){return this._data.shadowCastTexture}}const R=.7,j=50/255,y=[[0,r(0,0,1,0)],[1,r(0,0,1,R)]],$=r(1,0,0,R),M=[[0,r(j,j,j,0)],[1,r(j,j,j,R)]];function P(e){const o=new b,r=o.fragment;o.include(n),o.include(t);const{thresholdRendersSunlight:a,visualization:f}=e;r.constants.add("inverseSampleValue","float",w),r.uniforms.add(new v("shadowCastMap",e=>e.shadowCastMap),new i("sampleScale",e=>e.sampleScale),new h("opacityFromElevation",e=>e.opacityFromElevation));const S=2===f,R=3===f,j=1===f;R&&r.include(l);const y=!S;switch(y&&r.code.add(u`vec4 evaluateColorRamp(float value) {
3
3
  if (value <= vvColorValues[0]) {
4
4
  return vvColorColors[0];
5
5
  }
@@ -10,39 +10,42 @@ return mix(vvColorColors[i-1], vvColorColors[i], f);
10
10
  }
11
11
  }
12
12
  return vvColorColors[colorRampSize - 1];
13
- }`),a){case 0:r.uniforms.add(new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>s(z,o))),new v("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 1:r.uniforms.add(new m("vvColorColors",w,e=>e.bandedGradientColorRamp.flatMap(([e,o])=>s(z,o))),new v("colorRampSize",e=>e.bandedGradientColorRamp.length),new p("vvColorValues",w,e=>e.bandedGradientColorRamp.map(([e,o])=>e)),new h("bandSize",e=>e.bandSize));break;case 3:r.uniforms.add(new d("uColor",e=>s(z,e.thresholdColor)),new h("threshold",e=>e.threshold),new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>s(z,o))),new v("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 2:r.uniforms.add(new d("uColor",e=>s(z,e.thresholdColor)),new h("threshold",e=>e.threshold))}const{type:y,selector:M,thresholdStrengthSelector:P}=S?{type:"vec2",selector:"rg",thresholdStrengthSelector:"strength.x"}:{type:"float",selector:"r",thresholdStrengthSelector:"strength"};return r.main.add(c`
14
- ${y} numSamples = texture(shadowCastMap, uv).${M} * inverseSampleValue;
13
+ }`),f){case 0:r.uniforms.add(new m("vvColorColors",C,e=>e.gradientColorRamp.flatMap(([e,o])=>s(z,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",C,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 1:r.uniforms.add(new m("vvColorColors",C,e=>e.bandedGradientColorRamp.flatMap(([e,o])=>s(z,o))),new g("colorRampSize",e=>e.bandedGradientColorRamp.length),new p("vvColorValues",C,e=>e.bandedGradientColorRamp.map(([e,o])=>e)),new h("bandSize",e=>e.bandSize));break;case 3:r.uniforms.add(new d("uColor",e=>s(z,e.thresholdColor)),new h("threshold",e=>e.threshold),new m("vvColorColors",C,e=>e.gradientColorRamp.flatMap(([e,o])=>s(z,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",C,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 2:r.uniforms.add(new d("uColor",e=>s(z,e.thresholdColor)),new h("threshold",e=>e.threshold))}const{type:$,selector:M,thresholdStrengthSelector:P}=R?{type:"vec2",selector:"rg",thresholdStrengthSelector:"strength.x"}:{type:"float",selector:"r",thresholdStrengthSelector:"strength"},V=!(S||R)||!a;return r.main.add(u`
14
+ ${$} numSamples = texture(shadowCastMap, uv).${M} * inverseSampleValue;
15
15
 
16
16
  fragColor = vec4(0.0);
17
17
 
18
18
  // early out if we do not have any samples in one or more channels and 0 samples would be fully transparent
19
- if (${u(j,c`vvColorColors[0].a == 0.0 && `,"")}dot(numSamples, ${y}(1)) < 1.0) {
19
+ ${c(V,u`
20
+ if (${c(y,u`vvColorColors[0].a == 0.0 && `,"")}dot(numSamples, ${$}(1)) < 1.0) {
20
21
  return;
21
22
  }
23
+ `)}
22
24
 
23
25
  // sampleScale is the number of total samples taken, so this brings strength to a 0-1 range.
24
26
  // note that sampleScale is always a vec2 even if we have only the primary channel.
25
- ${y} strength = numSamples * sampleScale.${M};
27
+ ${$} strength = numSamples * sampleScale.${M};
26
28
 
27
29
  // in threshold mode, step the strength to 0 if we are at or below the threshold, 1 otherwise.
28
- ${u(f||S,c`
29
- ${P} = 1.0 - step(${P}, threshold);
30
+ ${c(S||R,u`
31
+ float thresholdStrength = ${a?u`1.0 - ${P}`:P};
32
+ ${P} = 1.0 - step(thresholdStrength, threshold);
30
33
  `)}
31
34
 
32
35
  // bail out if we are below the threshold
33
- ${u(f,c`if (${P} == 0.0) { return; }`)}
36
+ ${c(S,u`if (${P} == 0.0) { return; }`)}
34
37
 
35
- ${u(R,c`strength = ceil(strength / bandSize) * bandSize;`)}
38
+ ${c(j,u`strength = ceil(strength / bandSize) * bandSize;`)}
36
39
 
37
- ${y} attenuation = opacityFromElevation * strength;
40
+ ${$} attenuation = opacityFromElevation * strength;
38
41
 
39
- ${u(S,c`
42
+ ${c(R,u`
40
43
  vec4 thresholdColor = uColor * attenuation.r;
41
44
  vec4 gradientColor = evaluateColorRamp(attenuation.g);
42
- fragColor = blendColorsPremultiplied(thresholdColor, gradientColor);
43
- `,u(f,c`
45
+ fragColor = blendColorsPremultiplied(${c(a,u`gradientColor, thresholdColor`,u`thresholdColor, gradientColor`)});
46
+ `,c(S,u`
44
47
  fragColor = uColor * attenuation;
45
- `,c`
48
+ `,u`
46
49
  fragColor = evaluateColorRamp(attenuation);
47
50
  `))}
48
- `),o}const z=a(),V=Object.freeze(Object.defineProperty({__proto__:null,ShadowCastVisualizePassParameters:S,build:$},Symbol.toStringTag,{value:"Module"}));export{S,V as a,$ as b};
51
+ `),o}const z=a(),V=Object.freeze(Object.defineProperty({__proto__:null,ShadowCastVisualizePassParameters:S,build:P},Symbol.toStringTag,{value:"Module"}));export{S,V as a,P as b};
package/config.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.91";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.1.0-next.93";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.91",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};
2
+ import has from"./core/has.js";import{addQueryParameter as o}from"./core/urlUtils.js";export{buildDate,commitHash as revision}from"./support/revision.js";Symbol.dispose??=Symbol("Symbol.dispose"),Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");const e="5.1";let s,r=e;function i(o){s=o}function t(e){const r=s?.findCredential(e);return r?.token?o(e,"token",r.token):e}r="5.1.0-next.93",has("host-webworker")||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has("host-webworker");export{t as addTokenParameter,r as fullVersion,s as id,i as setId,e as version};