@arcgis/core 5.1.0-next.54 → 5.1.0-next.56
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/VolumeMeasurement/volumeMeasurementConfiguration.js +1 -1
- package/applications/Components/navigationDuration.d.ts +15 -0
- package/applications/Components/navigationDuration.js +2 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/05bc675c029ed311427f.js +1 -0
- package/assets/esri/core/workers/chunks/{123e15c9e068a053d54e.js → 05d25a98c54679233902.js} +1 -1
- package/assets/esri/core/workers/chunks/{16a46688df5fad5cf8d5.js → 0b4a2361b9f9a6c0b8a7.js} +1 -1
- package/assets/esri/core/workers/chunks/{1fdd736c4932655ff1d9.js → 0e88e61d89f89994c4bf.js} +1 -1
- package/assets/esri/core/workers/chunks/0f2ab57e4eb722b3b0c0.js +1 -0
- package/assets/esri/core/workers/chunks/{ce59ec4f0cfbdf780bcb.js → 1f91280032aa42b1585b.js} +1 -1
- package/assets/esri/core/workers/chunks/254898b41cabe313b6ce.js +1 -0
- package/assets/esri/core/workers/chunks/26cafd20c8d03c274389.js +1 -0
- package/assets/esri/core/workers/chunks/{a69f1879735a031f62e9.js → 2a2d5f9ea42cb2eee9c6.js} +1 -1
- package/assets/esri/core/workers/chunks/{c03190faca955bffc8c1.js → 2bc6edeb3156d241677b.js} +1 -1
- package/assets/esri/core/workers/chunks/{d587b7842091affdaac3.js → 3158a3487d3e8a61b680.js} +1 -1
- package/assets/esri/core/workers/chunks/{07e791530677f7e70f32.js → 3a2ecb883fdb5c598544.js} +2 -2
- package/assets/esri/core/workers/chunks/{d7456829e404874a9e2f.js → 3e0752a81a7247c567ab.js} +1 -1
- package/assets/esri/core/workers/chunks/{fcda652fb5262696d59c.js → 3ef740d25dc17bef11b2.js} +1 -1
- package/assets/esri/core/workers/chunks/{2304f7b8173cf86dd805.js → 457bbf27e9bc18132464.js} +1 -1
- package/assets/esri/core/workers/chunks/45eddf3918973fa8d751.js +1 -0
- package/assets/esri/core/workers/chunks/4a6186001323b47c23a4.js +1 -0
- package/assets/esri/core/workers/chunks/{0b79630ad435a7734104.js → 4b3622fc355fd2fd8678.js} +1 -1
- package/assets/esri/core/workers/chunks/{193775b3b7de8f5dc578.js → 4fb718174c6e07d752e0.js} +1 -1
- package/assets/esri/core/workers/chunks/{cd14b6157862f33ab116.js → 5143f74f1fe7533a6069.js} +1 -1
- package/assets/esri/core/workers/chunks/{36425d29aaa5852cb41d.js → 522bc1d79dbe957301e4.js} +1 -1
- package/assets/esri/core/workers/chunks/{f80f04657762666b9165.js → 52dbfd7519555028a8af.js} +1 -1
- package/assets/esri/core/workers/chunks/{f4472e3486fdc33abb9a.js → 56bce3a6701f8549606b.js} +1 -1
- package/assets/esri/core/workers/chunks/572fcd33ae3648ed4f9c.js +1 -0
- package/assets/esri/core/workers/chunks/{d6f1ed8d8f76a32bc81d.js → 576a1784e93c5406e657.js} +1 -1
- package/assets/esri/core/workers/chunks/{ddc7956d80498518551e.js → 5a1d975b3e9e6b7eff67.js} +1 -1
- package/assets/esri/core/workers/chunks/5a83ea967ecde01d5622.js +1 -0
- package/assets/esri/core/workers/chunks/{4c38af9ae023fde2b5cd.js → 5aff2d6ae0d2a2d92ecc.js} +1 -1
- package/assets/esri/core/workers/chunks/5eb9fdb076488de9cd83.js +1 -0
- package/assets/esri/core/workers/chunks/{b59f03c64e4965d87291.js → 66fc3c4d6c54eee231b9.js} +1 -1
- package/assets/esri/core/workers/chunks/{de359f89e03da18999fc.js → 691d0a60354b6458b9de.js} +1 -1
- package/assets/esri/core/workers/chunks/{d44217de4c73475f9c66.js → 73a045061e69a22b6869.js} +1 -1
- package/assets/esri/core/workers/chunks/76064c2c801da55cd844.js +1 -0
- package/assets/esri/core/workers/chunks/770880ad43f252962017.js +1 -0
- package/assets/esri/core/workers/chunks/{52c90975cf22add7ee2b.js → 78cb6b9ab32abdd1d530.js} +1 -1
- package/assets/esri/core/workers/chunks/{11fed97adc9bca0f95e9.js → 7b6e3cc086d13da770fa.js} +1 -1
- package/assets/esri/core/workers/chunks/{d69cdee402ba4fc3735f.js → 7ed2aa1092c0a2c839c0.js} +1 -1
- package/assets/esri/core/workers/chunks/{097c037705ab485372ee.js → 83113a9e284701d053b5.js} +1 -1
- package/assets/esri/core/workers/chunks/8418ad9ad7b6481ebe82.js +1 -0
- package/assets/esri/core/workers/chunks/{173d94e162b210dee0a2.js → 85c72d9fa533552a6e8a.js} +1 -1
- package/assets/esri/core/workers/chunks/{5d202f60891fcae7174d.js → 861a7d0e665add901e11.js} +1 -1
- package/assets/esri/core/workers/chunks/{16ed8c0af8bb8b400163.js → 87077f4cbca13e030411.js} +1 -1
- package/assets/esri/core/workers/chunks/{199f70c0373f6008a545.js → 8df0c154bb0d79a905c0.js} +1 -1
- package/assets/esri/core/workers/chunks/{0f4759efc0982fb0ea03.js → 9066f095f16448c0a04e.js} +1 -1
- package/assets/esri/core/workers/chunks/91718795fc4ca6516ac7.js +1 -0
- package/assets/esri/core/workers/chunks/{796d27d1bbb2eed53cbd.js → 9321f5ec514805307219.js} +1 -1
- package/assets/esri/core/workers/chunks/{57dc80942e51dedd8335.js → 93d1118f7a909d123b40.js} +1 -1
- package/assets/esri/core/workers/chunks/{e6220c1fa887e21ffbbd.js → 9a235c92f21df2c17aa8.js} +1 -1
- package/assets/esri/core/workers/chunks/{6666ef3fd6ce877a4509.js → 9d11e7972bc298cb94ce.js} +1 -1
- package/assets/esri/core/workers/chunks/a11f05ddd8314b648f76.js +1 -0
- package/assets/esri/core/workers/chunks/{d4961d307651431328a8.js → a256edc8337e462f80f0.js} +1 -1
- package/assets/esri/core/workers/chunks/{2714ec856c2b3223425b.js → a41fabf8b2cf15b7d0c9.js} +1 -1
- package/assets/esri/core/workers/chunks/{e2d1d9929ed7744785a1.js → a7a553e245ba011d259f.js} +1 -1
- package/assets/esri/core/workers/chunks/{7ef1c1f765b6d423e474.js → a9eb90b901e64e67b7a3.js} +1 -1
- package/assets/esri/core/workers/chunks/{21decfc1e477fb769204.js → aa7aaeae31ddb259e55e.js} +1 -1
- package/assets/esri/core/workers/chunks/{a7b315a660f0f4e1d197.js → ad1946c084219bb678a0.js} +1 -1
- package/assets/esri/core/workers/chunks/b056b4c79bcd542dd1d2.js +1 -0
- package/assets/esri/core/workers/chunks/{bae1d6dd2376dff271e8.js → b1a0a7cdaf50f98adb3e.js} +1 -1
- package/assets/esri/core/workers/chunks/{c1ad062ccc1817cbee4c.js → b20f4c82d0b44fdb4670.js} +1 -1
- package/assets/esri/core/workers/chunks/{1a1e57267306c07e5bdb.js → b3f0600729227b458a75.js} +1 -1
- package/assets/esri/core/workers/chunks/{16f5cd740321a3539bf1.js → bacc343a79828e456de7.js} +1 -1
- package/assets/esri/core/workers/chunks/{e23fc5853e2f4016936b.js → c250799c131aa4ed2c35.js} +1 -1
- package/assets/esri/core/workers/chunks/{a495e60996a36ce19a32.js → c4da2ca1dee0c44051d0.js} +1 -1
- package/assets/esri/core/workers/chunks/{be60a6e210186ff09ae2.js → c6149e0ac1c103e03baf.js} +1 -1
- package/assets/esri/core/workers/chunks/c69fefe9d51ac7c2b0a6.js +1 -0
- package/assets/esri/core/workers/chunks/{bbb9659f79511c2c4690.js → c91d39e8e14be3d8bdf5.js} +1 -1
- package/assets/esri/core/workers/chunks/{c93454e37ae0f124bcb0.js → c9c5e6996f36ec4b1558.js} +1 -1
- package/assets/esri/core/workers/chunks/{4c8c69d081ed37bf5bc5.js → cd391415b8b8320e12e4.js} +1 -1
- package/assets/esri/core/workers/chunks/d3b3e8c6d7096bc59489.js +1 -0
- package/assets/esri/core/workers/chunks/{bad82ce3f84f7efb7ab7.js → da2a10e72a315c3c1f82.js} +1 -1
- package/assets/esri/core/workers/chunks/de79645e559a2d1ffa67.js +1 -0
- package/assets/esri/core/workers/chunks/{8569ae372fc64641b6b1.js → e2e3c39876bbe019c57a.js} +1 -1
- package/assets/esri/core/workers/chunks/{d31e68e73527c88b8276.js → e7e565e7c0ce1464c6b0.js} +1 -1
- package/assets/esri/core/workers/chunks/{f3f26f6116ab9126c2e7.js → e8a23ae30d586e3a973c.js} +1 -1
- package/assets/esri/core/workers/chunks/{d1aa1d51662f4a01e793.js → ea068f75397c3b3337ec.js} +3 -3
- package/assets/esri/core/workers/chunks/{c09bc36347e8eb9fff00.js → f09446b9ff937a84d6d3.js} +1 -1
- package/assets/esri/core/workers/chunks/{354b309c8225336bc1e5.js → f6d047358d14328f3622.js} +1 -1
- package/assets/esri/core/workers/chunks/{b43889ed9737c27e89f1.js → fb9a889ec9fd23739a14.js} +1 -1
- package/assets/esri/core/workers/chunks/{b2a67fe89f6505498bc3.js → fe1b67ab7748a3aef231.js} +1 -1
- package/assets/esri/themes/base/_Ui.scss +3 -3
- package/assets/esri/themes/base/_mixins.scss +2 -2
- package/assets/esri/themes/base/widgets/_Attachments.scss +3 -3
- package/assets/esri/themes/base/widgets/_BasemapGallery.scss +8 -8
- package/assets/esri/themes/base/widgets/_BasemapToggle.scss +1 -1
- package/assets/esri/themes/base/widgets/_BuildingExplorer.scss +1 -1
- package/assets/esri/themes/base/widgets/_BuildingLevelPicker.scss +4 -4
- package/assets/esri/themes/base/widgets/_BuildingPhasePicker.scss +1 -1
- package/assets/esri/themes/base/widgets/_CoordinateConversion.scss +2 -2
- package/assets/esri/themes/base/widgets/_DatePicker.scss +4 -4
- package/assets/esri/themes/base/widgets/_Daylight.scss +1 -1
- package/assets/esri/themes/base/widgets/_Editor.scss +2 -2
- package/assets/esri/themes/base/widgets/_ElevationProfile.scss +2 -2
- package/assets/esri/themes/base/widgets/_FeatureMedia.scss +1 -1
- package/assets/esri/themes/base/widgets/_FeatureTable.scss +1 -1
- package/assets/esri/themes/base/widgets/_FloorFilter.scss +2 -2
- package/assets/esri/themes/base/widgets/_Grid.scss +1 -1
- package/assets/esri/themes/base/widgets/_GridControls.scss +1 -1
- package/assets/esri/themes/base/widgets/_ItemList.scss +1 -1
- package/assets/esri/themes/base/widgets/_Legend.scss +1 -1
- package/assets/esri/themes/base/widgets/_LineOfSight.scss +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewerNavigationUI.scss +3 -3
- package/assets/esri/themes/base/widgets/_Popup.scss +1 -1
- package/assets/esri/themes/base/widgets/_Print.scss +3 -3
- package/assets/esri/themes/base/widgets/_Sketch.scss +1 -1
- package/assets/esri/themes/base/widgets/_Slice.scss +1 -1
- package/assets/esri/themes/base/widgets/_Slider.scss +3 -3
- package/assets/esri/themes/base/widgets/_SnappingControls.scss +2 -2
- package/assets/esri/themes/base/widgets/_Spinner.scss +2 -2
- package/assets/esri/themes/base/widgets/_Swipe.scss +2 -2
- package/assets/esri/themes/base/widgets/_Tooltip.scss +2 -2
- package/assets/esri/themes/base/widgets/_UtilityNetworkTrace.scss +1 -1
- package/assets/esri/themes/base/widgets/_VideoPlayer.scss +2 -2
- package/assets/esri/themes/base/widgets/_Widget.scss +8 -8
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/CutFillComposition.glsl.js +10 -4
- package/chunks/RibbonLine.glsl.js +75 -63
- package/chunks/Water.glsl.js +24 -16
- package/config.js +1 -1
- package/geometry/operators/offsetOperator.d.ts +1 -1
- package/geometry/operators/proximityOperator.d.ts +1 -1
- package/geometry/support/curves/bezierCurveUtils.js +1 -1
- package/geometry/support/curves/circularArcUtils.js +1 -1
- package/geometry/support/curves/ellipticArc4Utils.js +1 -1
- package/geometry/support/curves/ellipticArc7Utils.js +1 -1
- package/geometry/support/zscale.js +1 -1
- package/interfaces.d.ts +7 -0
- package/kernel.js +1 -1
- package/layers/LinkChartLayer.js +1 -1
- package/layers/OrientedImageryLayer.d.ts +0 -152
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/package.json +1 -1
- package/portal/schemas/definitions.js +1 -1
- package/support/revision.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillVisualization.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
- package/views/3d/interactive/manipulators/ShiftManipulator.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/lineUtils.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js +1 -1
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillComputationRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillVisualizationRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.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/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl.js +1 -1
- package/views/draw/plugins/TangentArcSegmentPlugin.js +2 -0
- package/views/webgl/checkWebGLError.js +1 -1
- package/widgets/Histogram.js +1 -1
- package/widgets/Sketch/support/PluginManager.js +1 -1
- package/assets/esri/core/workers/chunks/0ab19ad980fda1cf402a.js +0 -1
- package/assets/esri/core/workers/chunks/1cce2f8837ad765acf44.js +0 -1
- package/assets/esri/core/workers/chunks/20f9f3470cad47d01803.js +0 -1
- package/assets/esri/core/workers/chunks/23a9070e9362b8439770.js +0 -1
- package/assets/esri/core/workers/chunks/28ac3a75130fe2b57ac7.js +0 -1
- package/assets/esri/core/workers/chunks/36a0e48113ab59a4f21d.js +0 -1
- package/assets/esri/core/workers/chunks/440a650ed0867a16f559.js +0 -1
- package/assets/esri/core/workers/chunks/440f76c397a813b0dcf9.js +0 -1
- package/assets/esri/core/workers/chunks/5344919fc6e8050450f1.js +0 -1
- package/assets/esri/core/workers/chunks/5e9bd5ed6ecee5b15127.js +0 -1
- package/assets/esri/core/workers/chunks/64845b1f53eca9db1229.js +0 -1
- package/assets/esri/core/workers/chunks/7278cc37e85f0242f19b.js +0 -1
- package/assets/esri/core/workers/chunks/7d56b2ac5030dd8b748e.js +0 -1
- package/assets/esri/core/workers/chunks/96e799ca97989a6ed448.js +0 -1
- package/assets/esri/core/workers/chunks/9db2ff1d4cbb5d1b623e.js +0 -1
- package/assets/esri/core/workers/chunks/ab414a60808ea05a63e6.js +0 -1
- package/assets/esri/core/workers/chunks/ec65c9c72507ef9a9cf9.js +0 -1
- package/assets/esri/core/workers/chunks/f1767b8ba82fdd9bd947.js +0 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{create as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Float4PassUniform as
|
|
3
|
-
vec4
|
|
2
|
+
import{create as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Float4PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as i}from"../views/webgl/NoParameters.js";import{ShaderBuilder as c}from"../views/webgl/ShaderBuilder.js";class a extends i{constructor(){super(...arguments),this.borderColor=e()}}function u(){const e=new c;return e.include(r),e.outputs.add("fragColor","vec4",0),e.fragment.uniforms.add(new s("colorTexture",e=>e.color),new s("cutVolume",e=>e.cutVolume),new s("fillVolume",e=>e.fillVolume),new s("cutFillMask",e=>e.cutFillMask),new s("depthTexture",e=>e.sceneDepth),new s("cutFillReferenceDepthTexture",e=>e.referenceDepth),new l("pixelRatio",(e,r)=>r.camera.pixelRatio),new t("borderColor",e=>e.borderColor)).main.add(o`vec4 color = texture(colorTexture, uv, 0.0);
|
|
3
|
+
vec4 cutVolume = texture(cutVolume, uv, 0.0);
|
|
4
|
+
vec4 fillVolume = texture(fillVolume, uv, 0.0);
|
|
5
|
+
float sceneDepth = texture(depthTexture, uv, 0.0).r;
|
|
6
|
+
float referenceDepth = texture(cutFillReferenceDepthTexture, uv, 0.0).r;
|
|
4
7
|
ivec2 iuv = ivec2(uv * vec2(textureSize(cutFillMask, 0)));
|
|
5
8
|
vec2 m0 = texelFetch(cutFillMask, iuv, 0).rg;
|
|
6
9
|
vec2 m1 = texelFetch(cutFillMask, iuv + ivec2(-1, 0), 0).rg;
|
|
@@ -13,5 +16,8 @@ step(1.5, abs(m0.r - m1.r) + abs(m0.g - m1.g))
|
|
|
13
16
|
+ step(1.5, abs(m0.r - m3.r) + abs(m0.g - m3.g))
|
|
14
17
|
+ step(1.5, abs(m0.r - m4.r) + abs(m0.g - m4.g))
|
|
15
18
|
) * 0.25 * pixelRatio;
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
float visibleAgainstScene = step(referenceDepth, sceneDepth);
|
|
20
|
+
vec4 base = mix(color, cutVolume, m0.r * cutVolume.a * visibleAgainstScene);
|
|
21
|
+
base = mix(base, fillVolume, m0.g * fillVolume.a);
|
|
22
|
+
float borderFade = mix(0.5, 1.0, visibleAgainstScene);
|
|
23
|
+
fragColor = mix(base, borderColor, d * borderFade);`),e}const m=Object.freeze(Object.defineProperty({__proto__:null,CutFillCompositionPassParameters:a,build:u},Symbol.toStringTag,{value:"Module"}));export{a as C,m as a,u as b};
|
|
@@ -1,20 +1,21 @@
|
|
|
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
|
|
3
|
-
return
|
|
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{terrainDepthTest as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as p,NoPerspectiveRead as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as m,addPixelRatio as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as x}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 S,If as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as w}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 b}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as y}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as z}from"../views/webgl/ShaderBuilder.js";const P=1;function j(j){const C=new z,{attributes:W,varyings:R,vertex:F,fragment:A}=C,{applyMarkerOffset:V,draped:T,output:E,capType:N,stippleEnabled:O,falloffEnabled:M,roundJoins:$,wireframe:_,innerColorEnabled:k,hasAnimation:I,hasScreenSizePerspective:B,worldSizedImagePattern:H}=j;A.include(a),C.include(t,j),C.include(n,j),C.include(i,j),C.include(l,j),C.include(b,j);const J=V&&!T;J&&(F.uniforms.add(new u("markerScale",e=>e.markerScale)),C.include(r,{space:2,hasScreenSizePerspective:B})),m(F,j),F.uniforms.add(new w("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new f("nearFar",e=>e.camera.nearFar),new u("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new g("viewport",e=>e.camera.fullViewport)),F.constants.add("LARGE_HALF_FLOAT","float",65500),W.add("position","vec3"),W.add("previousDelta","vec4"),W.add("nextDelta","vec4"),W.add("lineParameters","vec2"),W.add("u0","float"),R.add("vColor","vec4"),R.add("vpos","vec3",{invariant:!0}),R.add("vLineDistance","float"),R.add("vLineWidth","float");const U=O;U&&R.add("vLineSizeInv","float");const Z=2===N,G=O&&Z,X=M||G;X&&R.add("vLineDistanceNorm","float"),Z&&(R.add("vSegmentSDF","float"),R.add("vReverseSegmentSDF","float")),F.code.add(S`vec3 perpendicular(vec3 v) {
|
|
3
|
+
return vec3(v.y, -v.x, 0.0);
|
|
4
4
|
}
|
|
5
5
|
float interp(float ncp, vec4 a, vec4 b) {
|
|
6
6
|
return (-ncp - a.z) / (b.z - a.z);
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
vec3 rotateZ(vec3 v, float a) {
|
|
9
9
|
float s = sin(a);
|
|
10
10
|
float c = cos(a);
|
|
11
11
|
mat2 m = mat2(c, -s, s, c);
|
|
12
|
-
return m * v;
|
|
13
|
-
}`),F.code.add(
|
|
12
|
+
return vec3(m * v.xy, v.z);
|
|
13
|
+
}`),F.code.add(S`vec4 projectAndScale(vec4 pos) {
|
|
14
14
|
vec4 posNdc = proj * pos;
|
|
15
15
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
16
|
+
posNdc.z /= posNdc.w;
|
|
16
17
|
return posNdc;
|
|
17
|
-
}`),F.code.add(
|
|
18
|
+
}`),F.code.add(S`void clip(
|
|
18
19
|
inout vec4 pos,
|
|
19
20
|
inout vec4 prev,
|
|
20
21
|
inout vec4 next,
|
|
@@ -45,7 +46,7 @@ if (next.z > -nearFar[0]) {
|
|
|
45
46
|
next = mix(next, pos, interp(vnp, next, pos));
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
}`),v(F),F.constants.add("aaWidth","float",
|
|
49
|
+
}`),v(F),F.constants.add("aaWidth","float",O?0:1).main.add(S`
|
|
49
50
|
// unpack values from vertex type
|
|
50
51
|
bool isStartVertex = abs(abs(lineParameters.y) - 3.0) == 1.0;
|
|
51
52
|
vec3 prevPosition = position + previousDelta.xyz * previousDelta.w;
|
|
@@ -64,11 +65,11 @@ next = mix(next, pos, interp(vnp, next, pos));
|
|
|
64
65
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
65
66
|
|
|
66
67
|
bool isJoin = abs(lineParameters.y) < 3.0;
|
|
67
|
-
`),J&&F.main.add(
|
|
68
|
+
`),J&&F.main.add(S`vec4 other = isStartVertex ? next : prev;
|
|
68
69
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
69
70
|
if (!isJoin && !markersHidden) {
|
|
70
71
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
71
|
-
}`),C.include(
|
|
72
|
+
}`),C.include(p),F.main.add(S`
|
|
72
73
|
clip(pos, prev, next, isStartVertex);
|
|
73
74
|
|
|
74
75
|
vec3 clippedPos = pos.xyz;
|
|
@@ -80,24 +81,24 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
80
81
|
next = projectAndScale(next);
|
|
81
82
|
prev = projectAndScale(prev);
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
vec3 left = (pos.xyz - prev.xyz);
|
|
85
|
+
vec3 right = (next.xyz - pos.xyz);
|
|
85
86
|
|
|
86
87
|
float leftLen = length(left);
|
|
87
88
|
float rightLen = length(right);
|
|
88
89
|
|
|
89
|
-
float lineSize = getSize(${
|
|
90
|
-
${
|
|
91
|
-
${
|
|
90
|
+
float lineSize = getSize(${D(B,"clippedPos")});
|
|
91
|
+
${D(O&&B,"float patternLineSize = getSize(clippedCenter);")}
|
|
92
|
+
${D(O&&!B,"float patternLineSize = lineSize;")}
|
|
92
93
|
|
|
93
|
-
${
|
|
94
|
+
${D(H,S`
|
|
94
95
|
lineSize += aaWidth;
|
|
95
96
|
float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
|
|
96
97
|
if (lineWidth < 1.0) {
|
|
97
98
|
coverage = lineWidth;
|
|
98
99
|
lineWidth = 1.0;
|
|
99
100
|
}
|
|
100
|
-
`,
|
|
101
|
+
`,S`
|
|
101
102
|
if (lineSize < 1.0) {
|
|
102
103
|
coverage = lineSize; // convert sub-pixel coverage to alpha
|
|
103
104
|
lineSize = 1.0;
|
|
@@ -108,21 +109,22 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
108
109
|
`)}
|
|
109
110
|
|
|
110
111
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
111
|
-
${U?
|
|
112
|
-
`);(
|
|
112
|
+
${U?S`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
113
|
+
`);(O||Z)&&F.main.add(S`
|
|
113
114
|
float isEndVertex = float(!isStartVertex);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
${
|
|
117
|
-
`),F.main.add(
|
|
118
|
-
right = (rightLen > 0.001) ? right/rightLen :
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
116
|
+
vec3 segment = mix(right, left, isEndVertex);
|
|
117
|
+
${Z?S`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
|
|
118
|
+
`),F.main.add(S`left = (leftLen > 0.001) ? left/leftLen : vec3(0.0, 0.0, 0.0);
|
|
119
|
+
right = (rightLen > 0.001) ? right/rightLen : vec3(0.0, 0.0, 0.0);
|
|
120
|
+
vec3 segmentDirection = isStartVertex ? right : left;
|
|
121
|
+
vec3 capDisplacementDir = vec3(0.0, 0.0, 0.0);
|
|
122
|
+
vec3 joinDisplacementDir = vec3(0.0, 0.0, 0.0);
|
|
121
123
|
float displacementLen = lineWidth;
|
|
122
124
|
if (isJoin) {
|
|
123
125
|
bool isOutside = (left.x * right.y - left.y * right.x) * lineParameters.y > 0.0;
|
|
124
|
-
|
|
125
|
-
joinDisplacementDir = perpendicular(
|
|
126
|
+
vec3 joinDirection = normalize(left + right);
|
|
127
|
+
joinDisplacementDir = perpendicular(joinDirection);
|
|
126
128
|
if (leftLen > 0.001 && rightLen > 0.001) {
|
|
127
129
|
float nDotSeg = dot(joinDisplacementDir, left);
|
|
128
130
|
displacementLen /= length(nDotSeg * left - joinDisplacementDir);
|
|
@@ -131,18 +133,18 @@ displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
|
|
|
131
133
|
}
|
|
132
134
|
}
|
|
133
135
|
float subdivisionFactor = lineParameters.x;
|
|
134
|
-
if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),$?F.main.add(
|
|
135
|
-
|
|
136
|
+
if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),$?F.main.add(S`
|
|
137
|
+
vec3 startDir = leftLen < 0.001 ? right : left;
|
|
136
138
|
startDir = perpendicular(startDir);
|
|
137
139
|
|
|
138
|
-
|
|
140
|
+
vec3 endDir = rightLen < 0.001 ? left : right;
|
|
139
141
|
endDir = perpendicular(endDir);
|
|
140
142
|
|
|
141
|
-
float factor = ${
|
|
143
|
+
float factor = ${O?S`min(1.0, subdivisionFactor * ${S.float((P+2)/(P+1))})`:S`subdivisionFactor`};
|
|
142
144
|
|
|
143
|
-
float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));
|
|
144
|
-
joinDisplacementDir =
|
|
145
|
-
`):F.main.add(
|
|
145
|
+
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
146
|
+
joinDisplacementDir = rotateZ(startDir, -sign(lineParameters.y) * factor * rotationAngle);
|
|
147
|
+
`):F.main.add(S`if (leftLen < 0.001) {
|
|
146
148
|
joinDisplacementDir = right;
|
|
147
149
|
}
|
|
148
150
|
else if (rightLen < 0.001) {
|
|
@@ -151,7 +153,7 @@ joinDisplacementDir = left;
|
|
|
151
153
|
else {
|
|
152
154
|
joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
|
|
153
155
|
}
|
|
154
|
-
joinDisplacementDir = perpendicular(joinDisplacementDir);`);const
|
|
156
|
+
joinDisplacementDir = perpendicular(joinDisplacementDir);`);const Y=0!==N;return F.main.add(S`
|
|
155
157
|
displacementLen = lineWidth;
|
|
156
158
|
}
|
|
157
159
|
} else {
|
|
@@ -159,30 +161,39 @@ joinDisplacementDir = perpendicular(joinDisplacementDir);`);const Q=0!==O;return
|
|
|
159
161
|
joinDisplacementDir = isStartVertex ? right : left;
|
|
160
162
|
joinDisplacementDir = perpendicular(joinDisplacementDir);
|
|
161
163
|
|
|
162
|
-
${
|
|
164
|
+
${Y?S`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
|
|
163
165
|
}
|
|
164
|
-
`),F.main.add(
|
|
166
|
+
`),F.main.add(S`
|
|
165
167
|
// Displacement (in pixels) caused by join/or cap
|
|
166
|
-
vec2
|
|
168
|
+
vec2 dposXY = (joinDisplacementDir.xy * sign(lineParameters.y) + capDisplacementDir.xy) * displacementLen;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* To prevent z-fighting between layers, we also adjust the z value.
|
|
172
|
+
* We want to ensure that the orientation of the final triangles is the same, regardless of the line width.
|
|
173
|
+
* To do so, the below formula projects the xy displacement onto the original segment direction
|
|
174
|
+
* to find the z-offset necessary so the triangle orientation is independent of the width.
|
|
175
|
+
*/
|
|
176
|
+
float dposZ = dot(dposXY, segmentDirection.xy) / dot(segmentDirection.xy, segmentDirection.xy) * segmentDirection.z;
|
|
177
|
+
vec3 dpos = vec3(dposXY, dposZ);
|
|
167
178
|
float lineDistNorm = noPerspectiveWrite(sign(lineParameters.y), pos.w);
|
|
168
179
|
|
|
169
180
|
vLineDistance = lineWidth * lineDistNorm;
|
|
170
|
-
${
|
|
181
|
+
${X?S`vLineDistanceNorm = lineDistNorm;`:""}
|
|
171
182
|
|
|
172
|
-
pos.
|
|
173
|
-
`),
|
|
174
|
-
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin, segmentDir)), pos.w);
|
|
175
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd, -segmentDir)), pos.w);`),
|
|
176
|
-
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),F.main.add(
|
|
183
|
+
pos.xyz += dpos;
|
|
184
|
+
`),Z&&F.main.add(S`vec2 segmentDir = normalize(segment.xy);
|
|
185
|
+
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
186
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),O&&(T?F.uniforms.add(new x("worldToScreenRatio",e=>1/e.screenToPCSRatio)):F.main.add(S`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
187
|
+
float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),F.main.add(S`float segmentLengthScreenDouble = length(segment.xy);
|
|
177
188
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
178
189
|
float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
|
|
179
190
|
float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
|
|
180
|
-
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),T?F.main.add(
|
|
181
|
-
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):F.main.add(
|
|
182
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),F.uniforms.add(new
|
|
191
|
+
vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),T?F.main.add(S`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
|
|
192
|
+
float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):F.main.add(S`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
|
|
193
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),F.uniforms.add(new u("stipplePatternPixelSize",e=>o(e))),F.main.add(S`
|
|
183
194
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
184
195
|
|
|
185
|
-
${
|
|
196
|
+
${D(H,S`
|
|
186
197
|
float uu = mix(u0, u0 - segmentLengthRender, isEndVertex);
|
|
187
198
|
vStippleDistanceLimits = vec2(uu, uu + segmentLengthRender);
|
|
188
199
|
vStipplePatternStretch = 1.0;
|
|
@@ -190,7 +201,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
190
201
|
// The v-coordinate used in case of an image pattern.
|
|
191
202
|
bool isLeft = sign(lineParameters.y) < 0.0;
|
|
192
203
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
193
|
-
`,
|
|
204
|
+
`,S`
|
|
194
205
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
195
206
|
// fragment shader
|
|
196
207
|
vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -203,8 +214,8 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
203
214
|
if (segmentLengthScreenDouble >= 0.001) {
|
|
204
215
|
// Project the actual vertex position onto the line segment. Note that the resulting factor is within [0..1]
|
|
205
216
|
// at the original vertex positions, and slightly outside of that range at the displaced positions
|
|
206
|
-
|
|
207
|
-
float stippleDisplacementFactor = dot(segment, stippleDisplacement) / (segmentLengthScreenDouble * segmentLengthScreenDouble);
|
|
217
|
+
vec3 stippleDisplacement = pos.xyz - segmentOrigin;
|
|
218
|
+
float stippleDisplacementFactor = dot(segment.xy, stippleDisplacement.xy) / (segmentLengthScreenDouble * segmentLengthScreenDouble);
|
|
208
219
|
|
|
209
220
|
// Apply this offset to the actual vertex coordinate (can be screen or pseudo-screen space)
|
|
210
221
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (vStippleDistanceLimits.y - vStippleDistanceLimits.x);
|
|
@@ -221,9 +232,10 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
221
232
|
isStartVertex ?
|
|
222
233
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
223
234
|
vec2(vStippleDistanceLimits.x, 1e34);
|
|
224
|
-
`)),F.main.add(
|
|
235
|
+
`)),F.main.add(S`
|
|
225
236
|
// Convert back into NDC
|
|
226
237
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
238
|
+
pos.z = pos.z * pos.w;
|
|
227
239
|
|
|
228
240
|
vColor = getColor();
|
|
229
241
|
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
@@ -234,37 +246,37 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
|
|
|
234
246
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
235
247
|
gl_Position = pos;
|
|
236
248
|
forwardObjectAndLayerIdColor();
|
|
237
|
-
}`),C.fragment.include(e,
|
|
238
|
-
discardByTerrainDepth();`),C.include(c),A.include(
|
|
249
|
+
}`),C.fragment.include(e,j),C.include(y,j),A.include(d),A.main.add(S`discardBySlice(vpos);
|
|
250
|
+
discardByTerrainDepth();`),C.include(c),A.include(L),A.main.add(S`
|
|
239
251
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
240
252
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
241
|
-
${
|
|
242
|
-
`),_?A.main.add(
|
|
253
|
+
${D(X,S`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
254
|
+
`),_?A.main.add(S`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(Z&&A.main.add(S`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
243
255
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
244
256
|
float fragmentRadius = length(fragmentPosition);
|
|
245
257
|
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
|
|
246
258
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
247
259
|
if (capCoverage < alphaCutoff) {
|
|
248
260
|
discard;
|
|
249
|
-
}`),
|
|
261
|
+
}`),G?A.main.add(S`vec2 stipplePosition = vec2(
|
|
250
262
|
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
251
263
|
lineDistanceNorm
|
|
252
264
|
);
|
|
253
265
|
float stippleRadius = length(stipplePosition * lineWidth);
|
|
254
266
|
float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
|
|
255
267
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
256
|
-
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):A.main.add(
|
|
257
|
-
color.a = noPerspectiveRead(color.a);`),k&&A.uniforms.add(new h("innerColor",e=>e.innerColor??e.color),new
|
|
268
|
+
float stippleAlpha = step(alphaCutoff, stippleCoverage);`):A.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==E&&A.main.add(S`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),C.include(c),A.uniforms.add(new h("intrinsicColor",e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
|
|
269
|
+
color.a = noPerspectiveRead(color.a);`),k&&A.uniforms.add(new h("innerColor",e=>e.innerColor??e.color),new u("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(S`float distToInner = abs(lineDistance) - innerWidth;
|
|
258
270
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
259
271
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
260
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),A.main.add(
|
|
272
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),A.main.add(S`vec4 finalColor = blendStipple(color, stippleAlpha);`),M&&(A.uniforms.add(new u("falloff",e=>e.falloff)),A.main.add(S`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),O||A.main.add(S`float featherStartDistance = max(lineWidth - 2.0, 0.0);
|
|
261
273
|
float value = abs(lineDistance);
|
|
262
274
|
float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
|
|
263
|
-
finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),I&&A.main.add(
|
|
275
|
+
finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),I&&A.main.add(S`
|
|
264
276
|
finalColor = animate(finalColor);
|
|
265
277
|
|
|
266
|
-
${
|
|
278
|
+
${D(11!==E,S`
|
|
267
279
|
if (finalColor.a <= alphaCutoff) {
|
|
268
280
|
discard;
|
|
269
281
|
}`)}
|
|
270
|
-
`)),A.main.add(
|
|
282
|
+
`)),A.main.add(S`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),C}const C=Object.freeze(Object.defineProperty({__proto__:null,build:j,ribbonlineNumRoundJoinSubdivisions:P},Symbol.toStringTag,{value:"Module"}));export{C as R,j as b,P as r};
|
package/chunks/Water.glsl.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{isColor as
|
|
3
|
-
if (waterColor.a < ${
|
|
2
|
+
import e from"../core/Error.js";import{isColor as r}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{ObjectAndLayerIdColor as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{OutputHighlight as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{EvaluateAmbientLighting as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js";import{addMainLightDirection as s,addMainLightIntensity as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDraw as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{terrainDepthTest as g}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{WaterColor as m}from"../views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js";import{WaterDistortion as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js";import{ColorConversion as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as u,addCameraPosition as w}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as b}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{outputColorHighlightOLID as y}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as j}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as L}from"../webscene/support/AlphaCutoff.js";function P(P){const C=new j,{vertex:x,fragment:S,varyings:_}=C,{output:D,draped:O,receiveShadows:M}=P;u(x,P),C.include(i),C.attributes.add("position","vec3"),C.attributes.add("uv0","vec2");const F=new f("waterColor",e=>e.color);if(_.add("vpos","vec3",{invariant:!0}),x.uniforms.add(F),r(D)){if(O)return x.main.add(b`
|
|
3
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
4
4
|
// Discard this vertex
|
|
5
5
|
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
vpos = position;
|
|
10
|
-
gl_Position = transformPosition(proj, view, vpos);`),
|
|
11
|
-
if (waterColor.a < ${
|
|
10
|
+
gl_Position = transformPosition(proj, view, vpos);`),S.uniforms.add(F),S.main.add(b`fragColor = waterColor;`),C;C.include(d,P),_.add("vuv","vec2"),_.add("vnormal","vec3"),_.add("vtbnMatrix","mat3"),x.main.add(b`
|
|
11
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
12
12
|
// Discard this vertex
|
|
13
13
|
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
14
14
|
return;
|
|
@@ -22,7 +22,7 @@ import{isColor as e}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutpu
|
|
|
22
22
|
forwardViewPosDepth((view * vec4(vpos, 1.0)).xyz);
|
|
23
23
|
|
|
24
24
|
gl_Position = transformPosition(proj, view, vpos);
|
|
25
|
-
forwardLinearDepthToReadShadowMap();`)}switch(C.include(
|
|
25
|
+
forwardLinearDepthToReadShadowMap();`)}switch(C.include(c,P),C.include(g,P),D){case 0:case 1:case 2:S.include(n,{pbrMode:0}),C.include(v),C.include(m,P),S.include(o,P),C.include(y,P),S.include(p),w(S,P),s(S),l(S),S.uniforms.add(F,new h("timeElapsed",({timeElapsed:e})=>e),x.uniforms.get("view"),x.uniforms.get("localOrigin")).main.add(b`
|
|
26
26
|
discardBySlice(vpos);
|
|
27
27
|
discardByTerrainDepth();
|
|
28
28
|
vec3 localUp = vnormal;
|
|
@@ -32,13 +32,13 @@ import{isColor as e}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutpu
|
|
|
32
32
|
// we rotate the normal according to the tangent-bitangent-normal-Matrix
|
|
33
33
|
vec3 n = normalize(vtbnMatrix * tangentNormalFoam.xyz);
|
|
34
34
|
vec3 v = -normalize(vpos - cameraPosition);
|
|
35
|
-
float shadow = ${M?
|
|
35
|
+
float shadow = ${M?b`1.0 - readShadowMap(vpos, linearDepth)`:"1.0"};
|
|
36
36
|
vec4 vPosView = view * vec4(vpos, 1.0);
|
|
37
37
|
vec4 final = vec4(getWaterColor(n, v, mainLightDirection, waterColor.rgb, mainLightIntensity, localUp, shadow, tangentNormalFoam.w, vPosView.xyz, vpos + localOrigin), waterColor.w);
|
|
38
38
|
|
|
39
39
|
fragColor = delinearizeGamma(final);
|
|
40
|
-
outputColorHighlightOLID(applySlice(fragColor, vpos), final.rgb);`);break;case 4:C.include(
|
|
41
|
-
if (waterColor.a < ${
|
|
40
|
+
outputColorHighlightOLID(applySlice(fragColor, vpos), final.rgb);`);break;case 4:C.include(d,P),C.include(v,P),S.include(o,P),_.add("vuv","vec2"),x.main.add(b`
|
|
41
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
42
42
|
// Discard this vertex
|
|
43
43
|
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
44
44
|
return;
|
|
@@ -47,20 +47,28 @@ import{isColor as e}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutpu
|
|
|
47
47
|
vuv = uv0;
|
|
48
48
|
vpos = position;
|
|
49
49
|
|
|
50
|
-
gl_Position = transformPosition(proj, view, vpos);`),
|
|
50
|
+
gl_Position = transformPosition(proj, view, vpos);`),S.uniforms.add(new h("timeElapsed",({timeElapsed:e})=>e)).main.add(b`discardBySlice(vpos);
|
|
51
51
|
vec4 tangentNormalFoam = getSurfaceNormalAndFoam(vuv, timeElapsed);
|
|
52
52
|
tangentNormalFoam.xyz = normalize(tangentNormalFoam.xyz);
|
|
53
|
-
fragColor = vec4((tangentNormalFoam.xyz + vec3(1.0)) * 0.5, tangentNormalFoam.w);`);break;case
|
|
54
|
-
if (waterColor.a < ${
|
|
53
|
+
fragColor = vec4((tangentNormalFoam.xyz + vec3(1.0)) * 0.5, tangentNormalFoam.w);`);break;case 3:x.main.add(b`
|
|
54
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
55
55
|
// Discard this vertex
|
|
56
56
|
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
vpos = position;
|
|
61
|
-
gl_Position = transformPosition(proj, view, vpos);`),
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
gl_Position = transformPosition(proj, view, vpos);`),S.include(o,P),S.main.add("discardBySlice(vpos);");break;case 10:C.include(t,P),x.main.add(b`
|
|
62
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
63
|
+
// Discard this vertex
|
|
64
|
+
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
vpos = position;
|
|
69
|
+
gl_Position = transformPosition(proj, view, vpos);`),S.include(o,P),S.main.add(b`discardBySlice(vpos);
|
|
70
|
+
calculateOcclusionAndOutputHighlight();`);break;case 11:C.include(a,P),x.main.add(b`
|
|
71
|
+
if (waterColor.a < ${b.float(L)}) {
|
|
64
72
|
// Discard this vertex
|
|
65
73
|
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
66
74
|
return;
|
|
@@ -68,5 +76,5 @@ calculateOcclusionAndOutputHighlight();`);break;case 11:C.include(i,L),P.main.ad
|
|
|
68
76
|
|
|
69
77
|
vpos = position;
|
|
70
78
|
gl_Position = transformPosition(proj, view, vpos);
|
|
71
|
-
forwardObjectAndLayerIdColor();`),
|
|
72
|
-
outputObjectAndLayerIdColor();`)}return C}const C=Object.freeze(Object.defineProperty({__proto__:null,build:
|
|
79
|
+
forwardObjectAndLayerIdColor();`),S.include(o,P),S.main.add(b`discardBySlice(vpos);
|
|
80
|
+
outputObjectAndLayerIdColor();`);break;default:throw new e("shaderbuilder:missing-output",`Unimplemented shader output ${D} for WaterTechnique`)}return C}const C=Object.freeze(Object.defineProperty({__proto__:null,build:P},Symbol.toStringTag,{value:"Module"}));export{C as W,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.
|
|
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.56";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* 
|
|
41
41
|
*
|
|
42
42
|
* @since 4.31
|
|
43
|
-
* @see
|
|
43
|
+
* @see [Sample - Geometry operator - offset analysis](https://developers.arcgis.com/javascript/latest/sample-code/geometry-operator-offset-visualizer/)
|
|
44
44
|
*/
|
|
45
45
|
import type { LengthUnit } from "../../core/units.js";
|
|
46
46
|
import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 
|
|
5
5
|
*
|
|
6
6
|
* @since 4.31
|
|
7
|
-
* @see
|
|
7
|
+
* @see [Sample - Geometry operator - proximity analysis](https://developers.arcgis.com/javascript/latest/sample-code/geometry-operator-proximity/)
|
|
8
8
|
*/
|
|
9
9
|
import type Point from "../Point.js";
|
|
10
10
|
import type { LengthUnit } from "../../core/units.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{floatEqualRelative as t,floatEqualAbsolute as n}from"../../../core/mathUtils.js";import{expandPointInPlace as o,containsXY as r,expandXInPlace as s,expandYInPlace as c}from"../aaBoundingRect.js";import{distance2 as u,interpolateSegment as e,findClosestAndFurthestCurveParametersToPoint as f}from"./mathUtils.js";const i=[0,0];function a(t){const n=1-t,o=n*n,r=t*t;return[o*n,3*t*o,3*r*n,r*t]}function h(t,n,o,r,s){const[c,u,e,f]=a(s);return[t[0]*c+n[0]*u+o[0]*e+r[0]*f,t[1]*c+n[1]*u+o[1]*e+r[1]*f]}function m(t,n,o,r,s){const[c,u,e,f]=a(s);return t*c+n*u+o*e+r*f}function
|
|
2
|
+
import{floatEqualRelative as t,floatEqualAbsolute as n}from"../../../core/mathUtils.js";import{expandPointInPlace as o,containsXY as r,expandXInPlace as s,expandYInPlace as c}from"../aaBoundingRect.js";import{distance2 as u,interpolateSegment as e,findClosestAndFurthestCurveParametersToPoint as f}from"./mathUtils.js";const i=[0,0];function a(t){const n=1-t,o=n*n,r=t*t;return[o*n,3*t*o,3*r*n,r*t]}function h(t,n,o,r,s){const[c,u,e,f]=a(s);return[t[0]*c+n[0]*u+o[0]*e+r[0]*f,t[1]*c+n[1]*u+o[1]*e+r[1]*f]}function m(t,n,o,r,s){const[c,u,e,f]=a(s);return t*c+n*u+o*e+r*f}function b(t,n,o){const r=t,[s,c,u]=n.b;return h(r,c,u,s,o)}function p(t,n){const[o,r,s]=n.b;return o[0]!==s[0]||o[1]!==s[1]?[o[0]-s[0],o[1]-s[1]]:o[0]!==r[0]||o[1]!==r[1]?[o[0]-r[0],o[1]-r[1]]:[o[0]-t[0],o[1]-t[1]]}function M(t,n,o){const r=t,[s,c,u]=n.b,f=e([0,0],r,c,o),a=e(i,c,u,o),h=e([0,0],u,s,o),m=e([0,0],f,a,o),b=e([0,0],a,h,o);return[{b:[e([],m,b,o),f,m]},{b:[[...s],b,h]}]}function l(o,r,s){const c=o,[u,e,i]=r.b,a=f(s,[.1,.5,.9],t=>{const n=1-t,[o,r]=h(c,e,i,u,t);return[o,r,3*n*n*(e[0]-c[0])+6*n*t*(i[0]-e[0])+3*t*t*(u[0]-i[0]),3*n*n*(e[1]-c[1])+6*n*t*(i[1]-e[1])+3*t*t*(u[1]-i[1]),6*n*(i[0]-2*e[0]+c[0])+6*t*(u[0]-2*i[0]+e[0]),6*n*(i[1]-2*e[1]+c[1])+6*t*(u[1]-2*i[1]+e[1])]}).map(t=>Math.min(1,Math.max(0,t)));a.push(0,1);let m=1/0;const b=a.map(t=>{const n=h(c,e,i,u,t),[o,r]=n,f=s[0]-o,a=s[1]-r,b=Math.sqrt(f*f+a*a);return m=Math.min(b,m),{t,curvePoint:n,distance:b}}),p=[];for(const f of b){const{t:o,distance:r}=f;t(r,m)&&!p.some(({t})=>n(t,o))&&p.push(f)}return p}function q(t,n,u){const e=n,[f,i,a]=u.b;if(o(t,e),o(t,f),r(t,i[0],i[1])&&r(t,a[0],a[1]))return t;for(const o of d(e[0],i[0],a[0],f[0]))o>0&&o<1&&s(t,m(e[0],i[0],a[0],f[0],o));for(const o of d(e[1],i[1],a[1],f[1]))o>0&&o<1&&c(t,m(e[1],i[1],a[1],f[1],o));return t}function d(t,n,o,r){const s=3*(3*(n-o)-t+r),c=6*(t-2*n+o),u=3*(n-t);if(0===s)return 0!==c?[-u/c]:[];const e=Math.sqrt(c*c-4*s*u);return[(-c+e)/(2*s),(-c-e)/(2*s)]}function j(t,n,o){const r=16;let s=0,c=[n];for(let e=0;e<r;e++){let n=t;const r=[];for(const t of c)r.push(...M(n,t,.5)),n=t.b[0];c=r,n=t,s=0;let e=0;for(const t of c){const[o,r,c]=t.b,f=Math.sqrt(u(n,o));s+=(f+(Math.sqrt(u(n,r))+Math.sqrt(u(r,c))+Math.sqrt(u(c,o))))/2,e+=f,n=o}if(s-e<o)return s}return s}export{q as bezierCurveExtent,j as bezierCurveLength,p as calculateBezierCurveTangent,l as closestPointsOnBezierCurve,b as interpolateBezierCurve,h as interpolateCubicBezier,m as interpolateCubicBezier1D,M as splitBezierCurve};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{set as t,determinant as n}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{DerivedCircle as c,interpolateCircle as
|
|
2
|
+
import{set as t,determinant as n}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{DerivedCircle as c,interpolateCircle as o}from"./circleUtils.js";import{interpolateSegment as i,distance2 as s,wrapAtan2 as a}from"./mathUtils.js";const e=r();function m(r,c,o){const[i,a]=r,[m,u]=c,[l,f]=o;t(e,i,m,l,a,u,f,1,1,1);const h=n(e),M=4*h/(s(r,c)+s(c,o)+s(o,r));if(!isFinite(M)||Math.abs(M)<1e-8)return null;const p=i**2+a**2,x=m**2+u**2,b=l**2+f**2;t(e,p,x,b,a,u,f,1,1,1);const d=n(e);t(e,p,x,b,i,m,l,1,1,1);return[d/h*.5,n(e)/h*-.5]}function u(t,n){const[r,o]=n.c,s=m(t,o,r),e=null==s,u=s??i([],t,r,.5),[l,f]=t,[h,M]=o,[p,x]=r,[b,d]=u,j=l-b,g=f-d,I=Math.sqrt(j*j+g*g),y=a(f-d,l-b),E=a(M-d,h-b);let P=a(x-d,p-b);return(E-y)*(P-E)<0&&(P+=2*Math.sign(y-P)*Math.PI),new c(b,d,I,y,P,e)}function l(t,n,r){const c=o(t,r/2),i=o(t,r),s=o(t,(r+1)/2);return[{c:[i,c]},{c:[[...n.c[0]],s]}]}function f(t,n){const[r,c]=n.c[0],{cx:o,cy:i,thetaEnd:s,thetaStart:a}=u(t,n),e=r-o,m=c-i;return s>a?[-m,e]:[m,-e]}function h(t,n){const[r]=n.c,{cx:c,cy:o,thetaStart:i,thetaEnd:s,radius:a,isInvalid:e}=u(t,n);return{a:[r,[c,o],Math.abs(s-i)<Math.PI?1:0,i>s?1:0,e?i:0,a,e?0:1]}}export{f as calculateCircularArcTangent,u as deriveCircleFromCircularArc,l as splitCircularArc,h as toEllipticArc7};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{floatEqualRelative as t}from"../../../core/mathUtils.js";import{DerivedCircle as a,interpolateCircle as r}from"./circleUtils.js";import{angularRangeOriented as
|
|
2
|
+
import{floatEqualRelative as t}from"../../../core/mathUtils.js";import{DerivedCircle as a,interpolateCircle as r}from"./circleUtils.js";import{angularRangeOriented as n,wrapAtan2 as o}from"./mathUtils.js";function c(r,c){const[h,s,e,i]=c.a,[m,M]=r,[f,u]=h,[l,p]=s,j=m-l,x=M-p,U=Math.sqrt(j*j+x*x),b=f-l,d=u-p,q=Math.sqrt(b*b+d*d),y=0===U||0===q||!t(U,q),E=U,[I,P]=n(o(M-p,m-l),Math.atan2(u-p,f-l),e,i);return new a(l,p,E,I,P,y)}function h(t,a,n){const{cx:o,cy:c,thetaStart:h,thetaEnd:s}=t,[e,i,m,M]=a.a,f=h*(1-n)+s*n;return[{a:[r(t,n),[o,c],Math.abs(f-h)<Math.PI?1:0,M]},{a:[[...e],[o,c],Math.abs(s-f)<Math.PI?1:0,M]}]}function s(t,a){const[r,n]=a.a[0],{cx:o,cy:h,thetaEnd:s,thetaStart:e}=c(t,a),i=r-o,m=n-h;return s>e?[-m,i]:[m,-i]}export{s as calculateEllipticArc4Tangent,c as deriveCircleFromEllipticArc4,h as splitEllipticArc4};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{set as t,invert as
|
|
2
|
+
import{set as t,invert as n,transpose as s,multiply as a}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{transformMat3 as o,length as i}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{expandPointInPlace as c}from"../aaBoundingRect.js";import{cloneCurve as u}from"./curveUtils.js";import{angularRangeWrap as h,angularRangeOriented as e,wrapAtan2 as f,angularRange as M,distance2 as l,intersectLineLine as m,findClosestAndFurthestCurveParametersToPoint as b}from"./mathUtils.js";class R{constructor(t,n,s,a,r,o,i,c,u){this.cx=t,this.cy=n,this.a=s,this.b=a,this.cosR=r,this.sinR=o,this.u1=i,this.u2=c,this.isInvalid=u}}function p(t,n){const[s,a,r,o,i,c,u]=n.a,[h,M]=t,[l,m]=s,[b,p]=a,d=c*u,x=Math.cos(i),q=Math.sin(i),[I,g]=e(f(1/d*(M-p)*x-1/d*(h-b)*q,1/c*(M-p)*q+1/c*(h-b)*x),Math.atan2(1/d*(m-p)*x-1/d*(l-b)*q,1/c*(m-p)*q+1/c*(l-b)*x),r,o);return new R(b,p,c,d,x,q,I,g,0===c||0===d)}function d(t,n){const{a:s,b:a,cosR:r,sinR:o,cx:i,cy:c}=t,u=Math.cos(n),h=Math.sin(n);return[s*u*r-a*h*o+i,s*u*o+a*h*r+c]}function x(t,n){const{u1:s,u2:a}=t;return d(t,s*(1-n)+a*n)}function q(t,n){const[s,a]=n.a[0],{a:r,b:o,cx:c,cy:u,cosR:h,sinR:e,isInvalid:f,u1:M,u2:l}=p(t,n);if(f)return[s-t[0],a-t[1]];const m=Math.sqrt(r*r-o*o),b=[c+m*h,u+m*e],R=[c-m*h,u-m*e],d=[s-b[0],a-b[1]],x=[s-R[0],a-R[1]],q=i(d),I=i(x),[g,v]=[d[0]/q+x[0]/I,d[1]/q+x[1]/I];return l>M?[-v,g]:[v,g]}function I(t,n,s){if(s<0||s>1)return[];if(0===s||1===s)return[u(n)];const[a,[r,o],i,c,h,e,f]=n.a,{u1:M,u2:l}=t,m=M*(1-s)+l*s;return[{a:[[...x(t,s)],[r,o],Math.abs(m-M)<Math.PI?1:0,c,h,e,f]},{a:[[...a],[r,o],Math.abs(l-m)<Math.PI?1:0,c,h,e,f]}]}function g(t,n){const{a:s,b:a,cosR:r,sinR:o,u1:i,u2:c}=t,u=Math.PI/6,e=b(n,[1*u,2*u,4*u,5*u,7*u,8*u,10*u,11*u],n=>{const i=Math.cos(n),c=Math.sin(n),[u,h]=d(t,n);return[u,h,-s*r*c-a*o*i,-s*o*c+a*r*i,-s*r*i+a*o*c,-s*o*i-a*r*c]}),f=M(i,c),l=new Set(e.map(t=>h(f,t)).filter(t=>t>f.min&&t<f.max));l.add(i),l.add(c);let m,R,p=1/0;for(const h of l){const s=d(t,h),[a,r]=s,o=n[0]-a,u=n[1]-r,e=o*o+u*u;e<p&&(m=(h-i)/(c-i),R=s,p=e)}return{t:m,curvePoint:R,distance:Math.sqrt(p)}}function v(t,n,s){const a=p(n,s),{a:r,b:o,u1:i,u2:u,cosR:e,sinR:f,isInvalid:l}=a,m=s.a[0];if(c(t,n),c(t,m),l)return t;const b=Math.atan2(-o*f,r*e),R=b+Math.PI,x=Math.atan2(o*e,r*f),q=x+Math.PI,I=M(i,u);for(const M of[b,R,x,q].map(t=>h(I,t)))M>I.min&&M<I.max&&c(t,d(a,M));return t}function j(t,n,s){const[a,r,o,i,c,u,h]=n.a,e=p(t,n),{u1:f,u2:M,isInvalid:b}=e,R=M-f;if(b)return Math.sqrt(l(t,a));const q=14,I=[0,0];let g=0,v=[x(e,0),x(e,.25),x(e,.5),x(e,.75),x(e,1)];for(let p=0;p<q;p++){const t=v.length-1,n=R/(2*t),a=[];for(let s=0;s<t;s++)a.push(v[s]),a.push(d(e,f+(2*s+1)*n));a.push(v[v.length-1]),v=a,g=0;let o=0;for(let s=1;s<v.length;s++){const t=v[s-1],n=v[s];if(g+=Math.sqrt(l(t,n)),s>1){const a=v[s-2],i=m(I,a,t,r,n);o+=i?Math.sqrt(l(t,i)):Math.abs(n[0]-t[0])+Math.abs(n[1]-t[1])}else o+=g}if(o-g<s)return g}return g}const P=r(),y=r(),w=r(),U=r();function B(r,i,c){const[u,h,e,M,m,b,R]=i.a,d=p(r,i),{cosR:x,sinR:q,a:I,b:g,cx:v,cy:j}=d,B=o([0,0],u,c),S=o([0,0],h,c),k=c[0]*c[4]<0?1-M:M;{const n=I*I*q*q+g*g*x*x,s=2*(g*g-I*I)*q*x,a=I*I*x*x+g*g*q*q,r=-2*n*v-s*j,o=-s*v-2*a*j;t(P,n,s/2,r/2,s/2,a,o/2,r/2,o/2,n*v*v+s*v*j+a*j*j-I*I*g*g)}if(n(y,c),null==y){const t=o([0,0],r,c);return{a:[B,S,e,M,f(B[1],B[0]),Math.sqrt(l(B,t))/2,0]}}s(w,y),a(U,a(U,w,P),y);{const t=U[0],n=2*U[1],s=U[4],a=2*U[2],r=2*U[5],o=n*n-4*t*s,i=2*(t*r*r+s*a*a-n*a*r+o*U[8]),c=Math.sqrt((t-s)**2+n*n),u=-Math.sqrt(i*(t+s+c))/o,h=-Math.sqrt(i*(t+s-c))/o;return{a:[B,S,e,k,.5*f(-n,s-t),u,h/u]}}}export{R as DerivedEllipse,q as calculateEllipticArc7Tangent,g as closestPointOnEllipse,p as deriveEllipse,v as ellipticArcExtent,j as ellipticArcLength,x as interpolateEllipse,I as splitEllipticArc7,B as transformEllipticArc};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{getMetersPerVerticalUnitForSR as
|
|
2
|
+
import{getMetersPerVerticalUnitForSR as o}from"../../core/units.js";import{isSphericalPCPF as n}from"../ellipsoidUtils.js";import{equals as t}from"./spatialReferenceUtils.js";import{getEndpoint as e}from"./curves/curveUtils.js";function r(o,n,t){const e=i(n,t);if(1!==e)switch(o){case"point":case"esriGeometryPoint":return o=>s(o,e);case"polyline":case"esriGeometryPolyline":return o=>c(o,e);case"polygon":case"esriGeometryPolygon":return o=>f(o,e);case"multipoint":case"esriGeometryMultipoint":return o=>l(o,e);case"extent":case"esriGeometryEnvelope":return o=>u(o,e);default:return}}function i(e,r){if(null==e||null==r||r.vcsWkid||t(e,r)||n(e)||n(r))return 1;return o(e)/o(r)}function s(o,n){null!=o?.z&&(o.z*=n)}function f(o,n){if(o){if(o.curveRings)for(const t of o.curveRings)for(const o of t){const t=e(o);t.length>2&&(t[2]*=n)}if(o.rings)for(const t of o.rings)for(const o of t)o.length>2&&(o[2]*=n)}}function c(o,n){if(o){if(o.curvePaths)for(const t of o.curvePaths)for(const o of t){const t=e(o);t.length>2&&(t[2]*=n)}if(o.paths)for(const t of o.paths)for(const o of t)o.length>2&&(o[2]*=n)}}function l(o,n){if(o)for(const t of o.points)t.length>2&&(t[2]*=n)}function u(o,n){o&&null!=o.zmin&&null!=o.zmax&&(o.zmin*=n,o.zmax*=n)}export{r as getGeometryZScaler,i as zScale};
|
package/interfaces.d.ts
CHANGED
|
@@ -781,6 +781,13 @@ declare namespace __esri {
|
|
|
781
781
|
|
|
782
782
|
export const layersEffectsJsonUtils: layersEffectsJsonUtils;
|
|
783
783
|
|
|
784
|
+
/** @deprecated since 5.0. Refactor using \@arcgis/codemod */
|
|
785
|
+
interface navigationDuration {
|
|
786
|
+
getGoToDuration: typeof import("./applications/Components/navigationDuration.js").getGoToDuration;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
export const navigationDuration: navigationDuration;
|
|
790
|
+
|
|
784
791
|
/** @deprecated since 5.0. Refactor using \@arcgis/codemod */
|
|
785
792
|
interface previewSymbol2D {
|
|
786
793
|
getContrastingBackgroundTheme: typeof import("./applications/Components/previewSymbol2D.js").getContrastingBackgroundTheme;
|
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.
|
|
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.56",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};
|