@arcgis/core 5.2.0-next.131 → 5.2.0-next.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/107f4bcf8e6c91a67010.js +1 -0
- package/assets/esri/core/workers/chunks/{081c9ccaa5884c730a91.js → 1688c4dcd36db992a9dc.js} +1 -1
- package/assets/esri/core/workers/chunks/3a6b8f9aabde7e138834.js +1 -0
- package/assets/esri/core/workers/chunks/{18d5bad86ea3ef3ec747.js → eba9e03c1c9aa55044a3.js} +120 -120
- package/assets/esri/core/workers/chunks/f6c8e5abe1d55ab5c7dd.js +1 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-arabic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-cyrillic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-ext.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-georgian.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-greek.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-hebrew.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-math.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-thai.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-vietnamese.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-arabic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-cyrillic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-ext.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-georgian.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-greek.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-hebrew.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-math.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-thai.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-vietnamese.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-arabic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-cyrillic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-ext.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-georgian.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-greek.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-hebrew.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-math.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-thai.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-vietnamese.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/3ae1e25e-3aa6-4061-a016-a079159f9d65.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/41331c3c-3759-4462-8695-33c9a21b6a5b.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/94aa531e-7746-4df0-bb6e-349891f2eda5.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-arabic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-cyrillic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-ext.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-georgian.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-greek.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-hebrew.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-math.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-thai.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-vietnamese.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-cyrillic.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-ext.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-greek.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-hebrew.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-math.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-vietnamese.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d.woff2 +0 -0
- package/assets/esri/themes/base/fonts/fonts.scss +0 -0
- package/chunks/GaussianSplat.glsl.js +24 -9
- package/chunks/LineMarker.glsl.js +23 -23
- package/chunks/RibbonLine.glsl.js +136 -99
- package/config.js +1 -1
- package/core/PooledArray.js +1 -1
- package/geometry/operators/affineTransformOperator.d.ts +4 -0
- package/geometry/operators/alphaShapeOperator.d.ts +10 -1
- package/geometry/operators/areaOperator.d.ts +3 -0
- package/geometry/operators/autoCompleteOperator.d.ts +3 -0
- package/geometry/operators/boundaryOperator.d.ts +4 -0
- package/geometry/operators/bufferOperator.d.ts +6 -0
- package/geometry/operators/centroidOperator.d.ts +3 -0
- package/geometry/operators/clipOperator.d.ts +4 -0
- package/geometry/operators/containsOperator.d.ts +4 -0
- package/geometry/operators/convexHullOperator.d.ts +6 -0
- package/geometry/operators/crossesOperator.d.ts +4 -0
- package/geometry/operators/cutOperator.d.ts +3 -0
- package/geometry/operators/densifyOperator.d.ts +5 -0
- package/geometry/operators/differenceOperator.d.ts +4 -0
- package/geometry/operators/disjointOperator.d.ts +4 -0
- package/geometry/operators/distanceOperator.d.ts +4 -0
- package/geometry/operators/equalsOperator.d.ts +4 -0
- package/geometry/operators/extendOperator.d.ts +4 -0
- package/geometry/operators/generalizeOperator.d.ts +5 -0
- package/geometry/operators/geodesicBufferOperator.d.ts +8 -0
- package/geometry/operators/geodesicProximityOperator.d.ts +9 -0
- package/geometry/operators/geodeticAreaOperator.d.ts +6 -0
- package/geometry/operators/geodeticDensifyOperator.d.ts +7 -0
- package/geometry/operators/geodeticDistanceOperator.d.ts +6 -0
- package/geometry/operators/geodeticLengthOperator.d.ts +6 -0
- package/geometry/operators/geodeticUtilsOperator.d.ts +7 -0
- package/geometry/operators/graphicBufferOperator.d.ts +4 -0
- package/geometry/operators/integrateOperator.d.ts +3 -0
- package/geometry/operators/intersectionOperator.d.ts +5 -0
- package/geometry/operators/intersectsOperator.d.ts +4 -0
- package/geometry/operators/isNearOperator.d.ts +4 -0
- package/geometry/operators/labelPointOperator.d.ts +4 -0
- package/geometry/operators/lengthOperator.d.ts +3 -0
- package/geometry/operators/linesToPolygonsOperator.d.ts +3 -0
- package/geometry/operators/locateBetweenOperator.d.ts +3 -0
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +5 -0
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +4 -0
- package/geometry/operators/offsetOperator.d.ts +5 -0
- package/geometry/operators/overlapsOperator.d.ts +4 -0
- package/geometry/operators/polygonOverlayOperator.d.ts +9 -1
- package/geometry/operators/polygonSlicerOperator.d.ts +7 -0
- package/geometry/operators/projectOperator.d.ts +6 -0
- package/geometry/operators/proximityOperator.d.ts +7 -0
- package/geometry/operators/relateOperator.d.ts +5 -0
- package/geometry/operators/reshapeOperator.d.ts +3 -0
- package/geometry/operators/shapePreservingProjectOperator.d.ts +7 -0
- package/geometry/operators/simplifyOGCOperator.d.ts +5 -0
- package/geometry/operators/simplifyOperator.d.ts +5 -0
- package/geometry/operators/support/GeographicTransformation.d.ts +2 -0
- package/geometry/operators/support/GeographicTransformationStep.d.ts +2 -0
- package/geometry/operators/support/Transformation.d.ts +6 -1
- package/geometry/operators/support/geographicTransformationUtils.d.ts +4 -0
- package/geometry/operators/symmetricDifferenceOperator.d.ts +4 -0
- package/geometry/operators/touchesOperator.d.ts +4 -0
- package/geometry/operators/types.d.ts +1 -0
- package/geometry/operators/unionOperator.d.ts +4 -0
- package/geometry/operators/withinOperator.d.ts +4 -0
- package/kernel.js +1 -1
- package/layers/GaussianSplatLayer.d.ts +0 -1
- package/layers/GeospatialPDFLayer.js +1 -1
- package/package.json +2 -2
- package/support/revision.js +1 -1
- package/symbols/LineSymbol3D.d.ts +0 -7
- package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
- package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
- package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
- package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +1 -1
- package/views/3d/layers/GeospatialPDFLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
- package/views/3d/navigation/modes/GroundNavigationMode3D.js +1 -1
- package/views/3d/state/Constraints.js +1 -1
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectElevationAgnosticBVH.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +23 -12
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +35 -25
- package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/IntersectorResult.js +1 -1
- package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/PolygonIntersectionResults.js +1 -1
- package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodResources.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/intersectWithPolygonOffset.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +4 -4
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/support/PromiseQueue.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/widgets/BatchAttributeForm/ValueChangeTransaction.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
- package/widgets/BatchAttributeForm/inputs/InputBase.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.d.ts +148 -1
- package/assets/esri/core/workers/chunks/540f60e31b19d85e9371.js +0 -1
- package/assets/esri/core/workers/chunks/55a560fd872f7463b33d.js +0 -1
- package/assets/esri/core/workers/chunks/cf6f671823fa6c2a9a5e.js +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as r,computePixelSize as
|
|
2
|
+
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as r,computePixelSize as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{mainLightIntensity as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{MarkerSizing as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{metersPerRenderUnit as m,perScreenPixelRatio as v,inverseProjectionMatrix as g,nearFar as f,viewport as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as u}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as S,NoPerspectiveRead as x}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as D,addPixelRatio as b,addCameraPosition as L}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as w}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as y}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as P}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as C,If as F}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as z}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as j}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{outputColorHighlightOLID as A}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as T}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as R}from"../views/webgl/ShaderBuilder.js";const W=1;function I(W){const I=new R,{attributes:V,varyings:E,vertex:N,fragment:O}=I,{applyMarkerOffset:$,draped:U,shadingEnabled:J,output:_,capType:M,stippleEnabled:H,falloffEnabled:B,wireframe:k,innerColorEnabled:G,hasAnimation:X,hasScreenSizePerspective:Y,worldSized:Z,imagePattern:q}=W,K=2===M,Q=H&&K,ee=B||Q,te=H||K,ie=W.usePerspectiveCorrectStipple,ne=T(W).createBuilder(I,W);N.inputs.add("position",()=>ne.getTextureAttribute("position")),W.hasVVSize?N.inputs.add("sizeFeatureAttribute",()=>ne.getTextureAttribute("sizeFeatureAttribute")):N.inputs.add("size",()=>ne.getTextureAttribute("size")),W.hasVVOpacity&&N.inputs.add("opacityFeatureAttribute",()=>ne.getTextureAttribute("opacityFeatureAttribute")),W.hasVVColor?N.inputs.add("colorFeatureAttribute",()=>ne.getTextureAttribute("colorFeatureAttribute")):N.inputs.add("color",()=>ne.getTextureAttribute("color")),O.include(d),I.include(t,W),I.include(r,W),11===_?(I.varyings.add("objectAndLayerIdColorVarying","vec4"),N.code.add(C`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
|
-
return ${
|
|
4
|
+
return ${ne.getTextureAttribute("olidColor")};
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),O.code.add(
|
|
10
|
+
`),O.code.add(C`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(
|
|
12
|
+
}`)):(N.code.add(C`void forwardObjectAndLayerIdColor() {}`),O.code.add(C`void outputObjectAndLayerIdColor() {}`));const re=$&&!U;if(re&&I.include(s,W),D(N,W),U&&(Z||H)){const e=Z?"groundMetersToScreenRatio":"planarDistanceToScreenRatio";N.uniforms.add(new y(e,e=>1/(e.screenToPlanarDistanceRatio*(Z?e.planarDistanceToGroundRatio:1))))}return Z&&!U&&N.uniforms.add(m,v),N.uniforms.add(g,f,h,new P("miterLimit",e=>"miter"!==e.join?0:e.miterLimit)),N.constants.add("LARGE_HALF_FLOAT","float",65500),N.constants.add("EPS","float",.001),N.constants.add("NUM_JOIN_SUBDIVISIONS","float",W.numJoinSubdivisions),V.add("textureElementIndex","uint"),V.add("lineParameters","vec2"),E.add("vColor","vec4"),E.add("vpos","vec3",{invariant:!0}),E.add("vLineDistance","float"),E.add("vLineWidth","float"),H||(E.add("vIsInsideJoin","int"),E.add("vStretchFactor","float"),E.add("vJoinCenterLineSDFs","vec2"),E.add("vSubdivisionFactor","float")),H&&E.add("vLineSizeInv","float"),ee&&E.add("vLineDistanceNorm","float"),K&&(E.add("vSegmentSDF","float"),E.add("vReverseSegmentSDF","float")),N.code.add(C`vec3 perpendicular(vec3 v) {
|
|
13
13
|
return vec3(v.y, -v.x, 0.0);
|
|
14
14
|
}
|
|
15
15
|
float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
|
|
@@ -20,56 +20,80 @@ float s = sin(a);
|
|
|
20
20
|
float c = cos(a);
|
|
21
21
|
mat2 m = mat2(c, -s, s, c);
|
|
22
22
|
return vec3(m * v.xy, v.z);
|
|
23
|
-
}`),
|
|
23
|
+
}`),N.code.add(C`vec4 projectAndScale(vec4 pos) {
|
|
24
24
|
vec4 posNdc = proj * pos;
|
|
25
25
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
26
26
|
posNdc.z /= posNdc.w;
|
|
27
27
|
return posNdc;
|
|
28
|
-
}`),
|
|
29
|
-
|
|
30
|
-
inout vec4
|
|
31
|
-
inout vec4
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
pos = mix(
|
|
46
|
-
|
|
47
|
-
} else {
|
|
48
|
-
pos = vec4(0.0, 0.0, 0.0, 1.0);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
28
|
+
}`),N.code.add(C`
|
|
29
|
+
void clip(
|
|
30
|
+
inout vec4 pos,
|
|
31
|
+
inout vec4 prev,
|
|
32
|
+
inout vec4 next,
|
|
33
|
+
${F(ie,C`inout float u0, inout float prevU0, inout float nextU0,`)}
|
|
34
|
+
bool isStartVertex
|
|
35
|
+
) {
|
|
36
|
+
float adjustedNearPlaneDistance = nearFar[0] * 0.99;
|
|
37
|
+
|
|
38
|
+
if (pos.z > -nearFar[0]) {
|
|
39
|
+
// Current position behind near plane, so we need to clip
|
|
40
|
+
if (!isStartVertex) {
|
|
41
|
+
if (prev.z < -nearFar[0]) {
|
|
42
|
+
// Previous position in front of near plane
|
|
43
|
+
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, prev, pos);
|
|
44
|
+
${F(ie,C`u0 = mix(prevU0, u0, clipFactor); nextU0 = u0;`)}
|
|
45
|
+
pos = mix(prev, pos, clipFactor);
|
|
46
|
+
next = pos;
|
|
47
|
+
} else {
|
|
48
|
+
pos = vec4(0.0, 0.0, 0.0, 1.0);
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
if (next.z < -nearFar[0]) {
|
|
52
|
+
// Next position in front of near plane
|
|
53
|
+
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, next);
|
|
54
|
+
${F(ie,C`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
|
|
55
|
+
pos = mix(pos, next, clipFactor);
|
|
56
|
+
prev = pos;
|
|
57
|
+
} else {
|
|
58
|
+
pos = vec4(0.0, 0.0, 0.0, 1.0);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
// Current position visible
|
|
63
|
+
if (prev.z > -nearFar[0]) {
|
|
64
|
+
// Previous position behind near plane
|
|
65
|
+
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, prev);
|
|
66
|
+
${F(ie,C`prevU0 = mix(u0, prevU0, clipFactor);`)}
|
|
67
|
+
prev = mix(pos, prev, clipFactor);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (next.z > -nearFar[0]) {
|
|
71
|
+
// Next position behind near plane
|
|
72
|
+
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos);
|
|
73
|
+
${F(ie,C`nextU0 = mix(nextU0, u0, clipFactor);`)}
|
|
74
|
+
next = mix(next, pos, clipFactor);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
`),b(N),N.constants.add("aaWidth","float",H?0:1),N.main.add(C`
|
|
79
|
+
vec3 position = ${ne.getTextureAttribute("position")};
|
|
80
|
+
float u0 = ${ne.getTextureAttribute("u0")};
|
|
81
|
+
${F(Z,C`
|
|
82
|
+
float prevU0 = ${ne.getTextureAttribute("u0",-1)};
|
|
83
|
+
float nextU0 = ${ne.getTextureAttribute("u0",1)};
|
|
84
|
+
${F(!U,C`
|
|
85
|
+
u0 *= metersPerRenderUnit;
|
|
86
|
+
prevU0 *= metersPerRenderUnit;
|
|
87
|
+
nextU0 *= metersPerRenderUnit;
|
|
88
|
+
`)}
|
|
65
89
|
`)}
|
|
66
90
|
|
|
67
91
|
// unpack values from vertex type
|
|
68
92
|
float vertexType = abs(lineParameters.y);
|
|
69
93
|
float lineSide = sign(lineParameters.y);
|
|
70
94
|
bool isStartVertex = vertexType == 2.0 || vertexType == 4.0;
|
|
71
|
-
vec3 prevPosition = ${
|
|
72
|
-
vec3 nextPosition = ${
|
|
95
|
+
vec3 prevPosition = ${ne.getTextureAttribute("position",-1)};
|
|
96
|
+
vec3 nextPosition = ${ne.getTextureAttribute("position",1)};
|
|
73
97
|
|
|
74
98
|
float coverage = 1.0;
|
|
75
99
|
|
|
@@ -84,11 +108,11 @@ next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, ne
|
|
|
84
108
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
85
109
|
|
|
86
110
|
bool isJoin = vertexType < 3.0;
|
|
87
|
-
`),
|
|
111
|
+
`),re&&N.main.add(C`vec4 other = isStartVertex ? next : prev;
|
|
88
112
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
89
113
|
if (!isJoin && !markersHidden) {
|
|
90
114
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
91
|
-
}`),
|
|
115
|
+
}`),I.include(S),N.code.add(C`
|
|
92
116
|
vec2 computeJoinAndCapDisplacement(
|
|
93
117
|
bool isJoin,
|
|
94
118
|
bool isStartVertex,
|
|
@@ -133,7 +157,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
133
157
|
}
|
|
134
158
|
}
|
|
135
159
|
|
|
136
|
-
${
|
|
160
|
+
${F(!H,C`
|
|
137
161
|
// Compute stretch compensation for feathering.
|
|
138
162
|
if (subdivisionFactor > 0.0) {
|
|
139
163
|
vIsInsideJoin = 1;
|
|
@@ -168,14 +192,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
168
192
|
`)}
|
|
169
193
|
|
|
170
194
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
171
|
-
${
|
|
195
|
+
${F(W.roundJoins,C`
|
|
172
196
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
173
197
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
174
|
-
float factor = ${
|
|
198
|
+
float factor = ${H?C`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:C`subdivisionFactor`};
|
|
175
199
|
|
|
176
200
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
177
201
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
178
|
-
`,
|
|
202
|
+
`,C`
|
|
179
203
|
/**
|
|
180
204
|
* Convert to bevel join if miterLimit is exceeded.
|
|
181
205
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -187,19 +211,19 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
187
211
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
188
212
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
189
213
|
|
|
190
|
-
${
|
|
214
|
+
${F(H,C`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,C`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
191
215
|
`)}
|
|
192
216
|
displacementLen = lineWidth;
|
|
193
217
|
}
|
|
194
218
|
} else {
|
|
195
219
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
196
|
-
${0!==
|
|
220
|
+
${0!==M?C`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
|
|
197
221
|
}
|
|
198
222
|
|
|
199
223
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
200
224
|
}
|
|
201
|
-
`),
|
|
202
|
-
clip(pos, prev, next, isStartVertex);
|
|
225
|
+
`),N.main.add(C`
|
|
226
|
+
clip(pos, prev, next, ${F(ie,C`u0, prevU0, nextU0,`)} isStartVertex);
|
|
203
227
|
|
|
204
228
|
vec3 clippedPos = pos.xyz;
|
|
205
229
|
vec3 clippedCenter = mix(pos.xyz, isStartVertex ? next.xyz : prev.xyz, 0.5);
|
|
@@ -211,12 +235,15 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
211
235
|
vec3 left = (pos.xyz - prev.xyz);
|
|
212
236
|
vec3 right = (next.xyz - pos.xyz);
|
|
213
237
|
|
|
214
|
-
float lineSize = getSize(${
|
|
215
|
-
${
|
|
216
|
-
${
|
|
238
|
+
float lineSize = getSize(${F(Y,"clippedPos")});
|
|
239
|
+
${F(H&&Y,"float patternLineSize = getSize(clippedCenter);")}
|
|
240
|
+
${F(H&&!Y,"float patternLineSize = lineSize;")}
|
|
217
241
|
|
|
218
|
-
${
|
|
219
|
-
float lineSizeScreen = lineSize * groundMetersToScreenRatio
|
|
242
|
+
${F(Z,C`
|
|
243
|
+
${F(U,C`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,C`
|
|
244
|
+
float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * perScreenPixelRatio;
|
|
245
|
+
float lineSizeScreen = lineSize / metersPerScreenPixel;
|
|
246
|
+
`)}
|
|
220
247
|
if (lineSizeScreen < 1.0) {
|
|
221
248
|
coverage = lineSizeScreen;
|
|
222
249
|
lineSizeScreen = 1.0;
|
|
@@ -224,7 +251,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
224
251
|
|
|
225
252
|
lineSizeScreen += aaWidth;
|
|
226
253
|
float lineWidth = lineSizeScreen * pixelRatio;
|
|
227
|
-
`,
|
|
254
|
+
`,C`
|
|
228
255
|
if (lineSize < 1.0) {
|
|
229
256
|
coverage = lineSize; // convert sub-pixel coverage to alpha
|
|
230
257
|
lineSize = 1.0;
|
|
@@ -235,14 +262,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
235
262
|
`)}
|
|
236
263
|
|
|
237
264
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
238
|
-
${
|
|
239
|
-
`),
|
|
265
|
+
${H?C`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
|
|
266
|
+
`),te&&N.main.add(C`
|
|
240
267
|
float isEndVertex = float(!isStartVertex);
|
|
241
268
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
242
269
|
vec3 segment = mix(right, left, isEndVertex);
|
|
243
|
-
${
|
|
244
|
-
`),
|
|
245
|
-
${
|
|
270
|
+
${K?C`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
|
|
271
|
+
`),N.main.add(C`
|
|
272
|
+
${F(!H,C`
|
|
246
273
|
vIsInsideJoin = 0;
|
|
247
274
|
vStretchFactor = 1.0;
|
|
248
275
|
vSubdivisionFactor = 0.0;
|
|
@@ -273,10 +300,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
273
300
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
274
301
|
|
|
275
302
|
vLineDistance = lineWidth * lineDistNorm;
|
|
276
|
-
${
|
|
303
|
+
${ee?C`vLineDistanceNorm = lineDistNorm;`:""}
|
|
277
304
|
|
|
278
305
|
pos.xyz += displacement;
|
|
279
|
-
`),
|
|
306
|
+
`),H||N.main.add(C`if (isJoin) {
|
|
280
307
|
vec2 joinCenterToVertex = displacementXY;
|
|
281
308
|
vec2 leftCenterlineDir = left.xy;
|
|
282
309
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -291,35 +318,35 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
291
318
|
),
|
|
292
319
|
pos.w
|
|
293
320
|
);
|
|
294
|
-
}`),
|
|
321
|
+
}`),K&&N.main.add(C`vec2 segmentDir = normalize(segment.xy);
|
|
295
322
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
296
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),
|
|
297
|
-
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),
|
|
323
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),H&&(U?N.main.add(C`float stippleDistanceToScreenRatio = ${Z?"groundMetersToScreenRatio":"planarDistanceToScreenRatio"};`):N.main.add(C`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
324
|
+
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),N.main.add(C`
|
|
298
325
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
299
326
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
300
327
|
float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
|
|
301
|
-
float segmentLengthRender = ${
|
|
328
|
+
float segmentLengthRender = ${F(Z,C`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,C`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
302
329
|
|
|
303
|
-
${
|
|
304
|
-
float segmentStartRender = ${
|
|
330
|
+
${F(!U||Z,C`
|
|
331
|
+
float segmentStartRender = ${F(Z,C`mix(u0, prevU0, isEndVertex)`,C`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
305
332
|
`)}
|
|
306
333
|
|
|
307
334
|
vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
|
|
308
|
-
`),N
|
|
309
|
-
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):
|
|
310
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),
|
|
335
|
+
`),U?N.main.add(C`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
|
|
336
|
+
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):N.main.add(C`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
|
|
337
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),N.uniforms.add(new P("stipplePatternPixelSize",e=>o(e))),N.main.add(C`
|
|
311
338
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
312
339
|
|
|
313
|
-
${
|
|
340
|
+
${F(Z,C`
|
|
314
341
|
vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
315
342
|
vStipplePatternStretch = 1.0;
|
|
316
343
|
|
|
317
|
-
${
|
|
344
|
+
${F(q,C`
|
|
318
345
|
// The v-coordinate used in case of an image pattern.
|
|
319
346
|
bool isLeft = lineSide < 0.0;
|
|
320
347
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
321
348
|
`)}
|
|
322
|
-
`,
|
|
349
|
+
`,C`
|
|
323
350
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
324
351
|
// fragment shader
|
|
325
352
|
vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -339,8 +366,16 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
339
366
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (vStippleDistanceLimits.y - vStippleDistanceLimits.x);
|
|
340
367
|
}
|
|
341
368
|
|
|
342
|
-
|
|
343
|
-
|
|
369
|
+
${F(ie,C`
|
|
370
|
+
float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
|
|
371
|
+
float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
|
|
372
|
+
vStipplePerspective = noPerspectiveWrite(
|
|
373
|
+
vec4(vStippleDistanceLimits, segmentStartInverseW, segmentEndInverseW),
|
|
374
|
+
pos.w
|
|
375
|
+
);
|
|
376
|
+
`)}
|
|
377
|
+
|
|
378
|
+
// Cancel out perspective-correct interpolation for screen-space stipple distances.
|
|
344
379
|
vStippleDistanceLimits = noPerspectiveWrite(vStippleDistanceLimits, pos.w);
|
|
345
380
|
vStippleDistance = noPerspectiveWrite(vStippleDistance, pos.w);
|
|
346
381
|
|
|
@@ -350,7 +385,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
350
385
|
isStartVertex ?
|
|
351
386
|
vec2(-1e34, vStippleDistanceLimits.y) :
|
|
352
387
|
vec2(vStippleDistanceLimits.x, 1e34);
|
|
353
|
-
`)),
|
|
388
|
+
`)),N.main.add(C`
|
|
354
389
|
// Convert back into NDC
|
|
355
390
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
356
391
|
pos.z = pos.z * pos.w;
|
|
@@ -358,13 +393,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
358
393
|
vColor = getColor();
|
|
359
394
|
vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
|
|
360
395
|
|
|
361
|
-
${
|
|
396
|
+
${k&&!U?"pos.z -= EPS * pos.w;":""}
|
|
362
397
|
|
|
363
398
|
// transform final position to camera space for slicing
|
|
364
399
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
365
400
|
gl_Position = pos;
|
|
366
401
|
forwardObjectAndLayerIdColor();
|
|
367
|
-
}`),
|
|
402
|
+
}`),I.include(A,W),I.include(x),O.include(u),O.include(z),O.include(e,W),O.main.add("discardBySlice(vpos);"),H||O.code.add(C`float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
368
403
|
float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
369
404
|
float featherWidth = 2.0;
|
|
370
405
|
float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
|
|
@@ -376,33 +411,35 @@ float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joi
|
|
|
376
411
|
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
377
412
|
feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
|
|
378
413
|
return 1.0 - clamp(feather, 0.0, 1.0);
|
|
379
|
-
}`),O.main.add(
|
|
414
|
+
}`),O.main.add(C`
|
|
380
415
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
381
416
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
382
|
-
${
|
|
383
|
-
`),
|
|
417
|
+
${F(ee,C`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
418
|
+
`),k?O.main.add(C`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(K&&O.main.add(C`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
384
419
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
385
420
|
float fragmentRadius = length(fragmentPosition);
|
|
386
421
|
float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
|
|
387
422
|
float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
|
|
388
423
|
if (capCoverage < alphaCutoff) {
|
|
389
424
|
discard;
|
|
390
|
-
}`),
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
float
|
|
396
|
-
float
|
|
397
|
-
float
|
|
398
|
-
|
|
425
|
+
}`),Q?O.main.add(C`
|
|
426
|
+
vec2 stipplePosition = vec2(
|
|
427
|
+
min(getStippleSDF() * 2.0 - 1.0, 0.0),
|
|
428
|
+
${ie?C`lineDistance / lineWidth`:C`lineDistanceNorm`}
|
|
429
|
+
);
|
|
430
|
+
float stippleRadius = length(stipplePosition * lineWidth);
|
|
431
|
+
float stippleCapSDF = (stippleRadius - lineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
|
|
432
|
+
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
433
|
+
float stippleAlpha = step(alphaCutoff, stippleCoverage);
|
|
434
|
+
`):O.main.add(C`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==_&&O.main.add(C`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),O.uniforms.add(new w("intrinsicColor",e=>e.color)).main.add(C`vec4 color = intrinsicColor * vColor;
|
|
435
|
+
color.a = noPerspectiveRead(color.a);`),G&&O.uniforms.add(new w("innerColor",e=>e.innerColor??e.color),new P("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(C`float distToInner = abs(lineDistance) - innerWidth;
|
|
399
436
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
400
437
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
401
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),O.main.add(
|
|
402
|
-
forwardLinearDepthToReadShadow();`),
|
|
438
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),O.main.add(C`vec4 finalColor = blendStipple(color, stippleAlpha);`),B&&(O.uniforms.add(new P("falloff",e=>e.falloff)),O.main.add(C`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),H||O.main.add(C`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),J&&(E.add("vnormal","vec3"),N.include(l,W),N.main.add(C`vnormal = getLocalUp(vpos, localOrigin);
|
|
439
|
+
forwardLinearDepthToReadShadow();`),I.include(p,W),L(O,W),O.include(n,W),O.include(i,W),O.uniforms.add(a,N.uniforms.get("localOrigin")).main.add(C`vec3 posWorld = vpos + localOrigin;
|
|
403
440
|
float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
|
|
404
441
|
float shadow = readFragmentShadow(additionalAmbientScale);
|
|
405
442
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
406
443
|
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
|
|
407
444
|
vec3 viewDirection = normalize(vpos - cameraPosition);
|
|
408
|
-
finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, shadow, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),
|
|
445
|
+
finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, shadow, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),X&&(N.main.add(`vec4 animatedAlphaTimeStamps = ${ne.getTextureAttribute("timeStamps")};`),I.include(j,W),O.main.add("finalColor.a *= animatedAlpha();"))),O.main.add(C`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),I}const V=Object.freeze(Object.defineProperty({__proto__:null,build:I,numRoundJoinSubdivisions:W},Symbol.toStringTag,{value:"Module"}));export{V as R,I as b,W as n};
|
package/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/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.2.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.2.0-next.134";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
|
package/core/PooledArray.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{PositionHint as t,indexOf as h,removeUnorderedMany as i}from"./arrayUtils.js";import{toConst as s}from"./compilerUtils.js";import{sort as a,iterableSort as e}from"./heapSort.js";const l=1.5,n=1.1;class r{constructor(h){this.data=[],this._length=0,this._allocator=void 0,this._deallocator=()=>null,this._shrink=()=>{},this._hint=new t,h&&(h.initialSize&&(this.data=new Array(h.initialSize)),h.allocator&&(this._allocator=h.allocator),void 0!==h.deallocator&&(this._deallocator=h.deallocator),h.shrink&&(this._shrink=()=>o(this)))}toArray(){return this.data.slice(0,this.length)}filter(t){const h=new Array;for(let i=0;i<this._length;i++){const s=this.data[i];t(s)&&h.push(s)}return h}at(t){if((t=Math.trunc(t)||0)<0&&(t+=this._length),!(t<0||t>=this._length))return this.data[t]}includes(t,h){const i=this.data.indexOf(t,h);return-1!==i&&i<this.length}get length(){return this._length}set length(t){if(t>this._length){if(this._allocator){for(;this._length<t;)this.data[this._length++]=this._allocator(this.data[this._length]);return}this._length=t}else{if(this._deallocator)for(let h=t;h<this._length;++h)this.data[h]=this._deallocator(this.data[h]);this._length=t,this._shrink()}}clear(){this.length=0}prune(){this.clear(),this.data=[]}push(t){this.data[this._length++]=t}pushArray(t,h=t.length){for(let i=0;i<h;i++)this.data[this._length++]=t[i]}pushAll(t){for(const h of t)this.data[this._length++]=h}fill(t,h){for(let i=0;i<h;i++)this.data[this._length++]=t}pushNew(){this._allocator&&(this.data[this.length]=this._allocator(this.data[this.length]));const t=this.data[this._length];return++this._length,t}unshift(t){this.data.unshift(t),this._length++,o(this)}pop(){if(0===this.length)return;const t=this.data[this.length-1];return this.length=this.length-1,this._shrink(),t}remove(t){const i=h(this.data,s(t),this.length,this._hint);if(-1!==i)return this.data.splice(i,1),this.length=this.length-1,t}removeUnordered(t){return this.removeUnorderedIndex(h(this.data,s(t),this.length,this._hint))}removeUnorderedIndex(t){if(!(t>=this.length||t<0))return this.swapElements(t,this.length-1),this.pop()}removeUnorderedMany(t,h=t.length,s){this.length=i(this.data,t,this.length,h,this._hint,s),this._shrink()}front(){if(0!==this.length)return this.data[0]}back(){if(0!==this.length)return this.data[this.length-1]}swapElements(t,h){if(t>=this.length||h>=this.length||t===h)return;const i=this.data[t];this.data[t]=this.data[h],this.data[h]=i}sort(t){a(this.data,0,this.length,t)}iterableSort(t){return e(this.data,0,this.length,t)}some(t,h){for(let i=0;i<this.length;++i)if(t.call(h,this.data[i],i,this.data))return!0;return!1}find(t,h){const{data:i,length:s}=this;for(let a=0;a<s;++a)if(t.call(h,i[a]))return i[a]}filterInPlace(t,h){let i=0;for(let s=0;s<this._length;++s){const a=this.data[s];t.call(h,a,s,this.data)&&(this.data[s]=this.data[i],this.data[i]=a,i++)}if(this._deallocator)for(let s=i;s<this._length;s++)this.data[s]=this._deallocator(this.data[s]);return this._length=i,this._shrink(),this}forAll(t,h){const{data:i,length:s}=this;for(let a=0;a<s;++a)t.call(h,i[a],a,i)}forEach(t,h){this.data.slice(0,this.length).forEach(t,h)}map(t,h){const i=new Array(this.length);for(let s=0;s<this.length;++s)i[s]=t.call(h,this.data[s],s,this.data);return i}reduce(t,h){let i=h;for(let s=0;s<this.length;++s)i=t(i,this.data[s],s,this.data);return i}has(t){const h=this.length,i=this.data;for(let s=0;s<h;++s)if(i[s]===t)return!0;return!1}*[Symbol.iterator](){
|
|
2
|
+
import{PositionHint as t,indexOf as h,removeUnorderedMany as i}from"./arrayUtils.js";import{toConst as s}from"./compilerUtils.js";import{sort as a,iterableSort as e}from"./heapSort.js";const l=1.5,n=1.1;class r{constructor(h){this.data=[],this._length=0,this._allocator=void 0,this._deallocator=()=>null,this._shrink=()=>{},this._hint=new t,h&&(h.initialSize&&(this.data=new Array(h.initialSize)),h.allocator&&(this._allocator=h.allocator),void 0!==h.deallocator&&(this._deallocator=h.deallocator),h.shrink&&(this._shrink=()=>o(this)))}toArray(){return this.data.slice(0,this.length)}filter(t){const h=new Array;for(let i=0;i<this._length;i++){const s=this.data[i];t(s)&&h.push(s)}return h}at(t){if((t=Math.trunc(t)||0)<0&&(t+=this._length),!(t<0||t>=this._length))return this.data[t]}includes(t,h){const i=this.data.indexOf(t,h);return-1!==i&&i<this.length}get length(){return this._length}set length(t){if(t>this._length){if(this._allocator){for(;this._length<t;)this.data[this._length++]=this._allocator(this.data[this._length]);return}this._length=t}else{if(this._deallocator)for(let h=t;h<this._length;++h)this.data[h]=this._deallocator(this.data[h]);this._length=t,this._shrink()}}clear(){this.length=0}prune(){this.clear(),this.data=[]}push(t){this.data[this._length++]=t}pushArray(t,h=t.length){for(let i=0;i<h;i++)this.data[this._length++]=t[i]}pushAll(t){for(const h of t)this.data[this._length++]=h}fill(t,h){for(let i=0;i<h;i++)this.data[this._length++]=t}pushNew(){this._allocator&&(this.data[this.length]=this._allocator(this.data[this.length]));const t=this.data[this._length];return++this._length,t}unshift(t){this.data.unshift(t),this._length++,o(this)}pop(){if(0===this.length)return;const t=this.data[this.length-1];return this.length=this.length-1,this._shrink(),t}remove(t){const i=h(this.data,s(t),this.length,this._hint);if(-1!==i)return this.data.splice(i,1),this.length=this.length-1,t}removeUnordered(t){return this.removeUnorderedIndex(h(this.data,s(t),this.length,this._hint))}removeUnorderedIndex(t){if(!(t>=this.length||t<0))return this.swapElements(t,this.length-1),this.pop()}removeUnorderedMany(t,h=t.length,s){this.length=i(this.data,t,this.length,h,this._hint,s),this._shrink()}front(){if(0!==this.length)return this.data[0]}back(){if(0!==this.length)return this.data[this.length-1]}swapElements(t,h){if(t>=this.length||h>=this.length||t===h)return;const i=this.data[t];this.data[t]=this.data[h],this.data[h]=i}sort(t){a(this.data,0,this.length,t)}iterableSort(t){return e(this.data,0,this.length,t)}some(t,h){for(let i=0;i<this.length;++i)if(t.call(h,this.data[i],i,this.data))return!0;return!1}find(t,h){const{data:i,length:s}=this;for(let a=0;a<s;++a)if(t.call(h,i[a]))return i[a]}filterInPlace(t,h){let i=0;for(let s=0;s<this._length;++s){const a=this.data[s];t.call(h,a,s,this.data)&&(this.data[s]=this.data[i],this.data[i]=a,i++)}if(this._deallocator)for(let s=i;s<this._length;s++)this.data[s]=this._deallocator(this.data[s]);return this._length=i,this._shrink(),this}forAll(t,h){const{data:i,length:s}=this;for(let a=0;a<s;++a)t.call(h,i[a],a,i)}forEach(t,h){this.data.slice(0,this.length).forEach(t,h)}map(t,h){const i=new Array(this.length);for(let s=0;s<this.length;++s)i[s]=t.call(h,this.data[s],s,this.data);return i}reduce(t,h){let i=h;for(let s=0;s<this.length;++s)i=t(i,this.data[s],s,this.data);return i}has(t){const h=this.length,i=this.data;for(let s=0;s<h;++s)if(i[s]===t)return!0;return!1}*[Symbol.iterator](){for(let t=0;t<this.length;++t)yield this.data[t]}}function o(t){t.data.length>l*t.length&&(t.data.length=Math.floor(t.length*n))}export{r as default};
|
|
@@ -12,6 +12,7 @@ import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";
|
|
|
12
12
|
* @param geometry - The geometry to be transformed.
|
|
13
13
|
* @param transformation - The transformation to apply to the `geometry`.
|
|
14
14
|
* @returns Returns the transformed geometry.
|
|
15
|
+
* @since 5.2
|
|
15
16
|
*/
|
|
16
17
|
export function affineTransformExecute(geometry: GeometryUnion, transformation: Transformation): GeometryWithoutMeshUnion;
|
|
17
18
|
|
|
@@ -34,6 +35,7 @@ export function execute(geometry: GeometryUnion, transformation: Transformation)
|
|
|
34
35
|
* All the geometries must have the same spatial reference.
|
|
35
36
|
* @param transformation - The transformation to apply to the `geometries`.
|
|
36
37
|
* @returns Returns the transformed geometries.
|
|
38
|
+
* @since 5.2
|
|
37
39
|
*/
|
|
38
40
|
export function affineTransformExecuteMany(geometries: GeometryUnion[], transformation: Transformation): GeometryWithoutMeshUnion[];
|
|
39
41
|
|
|
@@ -53,6 +55,8 @@ export function executeMany(geometries: GeometryUnion[], transformation: Transfo
|
|
|
53
55
|
/**
|
|
54
56
|
* Indicates if the operator supports input geometries that contain curves.
|
|
55
57
|
* The value will always be `true`.
|
|
58
|
+
*
|
|
59
|
+
* @since 5.2
|
|
56
60
|
*/
|
|
57
61
|
export const affineTransformSupportsCurves: boolean;
|
|
58
62
|
|
|
@@ -10,7 +10,11 @@
|
|
|
10
10
|
import type Polygon from "../Polygon.js";
|
|
11
11
|
import type { GeometryUnion } from "../types.js";
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Object returned by the [alphaShapeExecuteMany()](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/alphaShapeOperator/#alphaShapeExecuteMany) method.
|
|
15
|
+
*
|
|
16
|
+
* @since 5.2
|
|
17
|
+
*/
|
|
14
18
|
export interface ExecuteResult {
|
|
15
19
|
/** The alpha shape polygon. */
|
|
16
20
|
alphaShape: Polygon;
|
|
@@ -18,6 +22,7 @@ export interface ExecuteResult {
|
|
|
18
22
|
calculatedAlpha: number;
|
|
19
23
|
}
|
|
20
24
|
|
|
25
|
+
/** @since 5.2 */
|
|
21
26
|
export interface AlphaShapeOptions {
|
|
22
27
|
/**
|
|
23
28
|
* Indicates if the alpha shape polygons should be merged.
|
|
@@ -43,6 +48,7 @@ export type Options = AlphaShapeOptions;
|
|
|
43
48
|
* A negative number or NaN will lead to the alpha shape being computed with the minimal alpha value necessary to produce a connected result.
|
|
44
49
|
* @returns Returns an object containing a polygon of the alpha shape and the calculated alpha value.
|
|
45
50
|
* The result polygon is not guaranteed to be simple in the sense that it may contain very short segments.
|
|
51
|
+
* @since 5.2
|
|
46
52
|
* @example
|
|
47
53
|
* // Calculate the alpha shape of a multipoint geometry
|
|
48
54
|
* const result = alphaShapeExecute(geometry, 100);
|
|
@@ -80,6 +86,7 @@ export function execute(geometry: GeometryUnion, alpha: number): ExecuteResult;
|
|
|
80
86
|
* @param options - Additional options.
|
|
81
87
|
* @returns Returns the polygons of the alpha shapes or null.
|
|
82
88
|
* The result polygons are not guaranteed to be simple in the sense that they may contain very short segments.
|
|
89
|
+
* @since 5.2
|
|
83
90
|
*/
|
|
84
91
|
export function alphaShapeExecuteMany(geometries: GeometryUnion[], alpha: number, options?: AlphaShapeOptions): (Polygon | null | undefined)[];
|
|
85
92
|
|
|
@@ -104,6 +111,8 @@ export function executeMany(geometries: GeometryUnion[], alpha: number, options?
|
|
|
104
111
|
/**
|
|
105
112
|
* Indicates if the operator supports input geometries that contain curves.
|
|
106
113
|
* The value will always be `false`.
|
|
114
|
+
*
|
|
115
|
+
* @since 5.2
|
|
107
116
|
*/
|
|
108
117
|
export const alphaShapeSupportsCurves: boolean;
|
|
109
118
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import type { AreaUnit } from "../../core/units.js";
|
|
9
9
|
import type { GeometryUnion } from "../types.js";
|
|
10
10
|
|
|
11
|
+
/** @since 5.2 */
|
|
11
12
|
export interface AreaOptions {
|
|
12
13
|
/**
|
|
13
14
|
* The area unit of the return value.
|
|
@@ -30,6 +31,7 @@ export type Options = AreaOptions;
|
|
|
30
31
|
* @param geometry - The geometry to calculate the area from.
|
|
31
32
|
* @param options - Additional options.
|
|
32
33
|
* @returns Returns the planar area of the geometry.
|
|
34
|
+
* @since 5.2
|
|
33
35
|
* @example
|
|
34
36
|
* // Calculate the area of a polygon
|
|
35
37
|
* const area = areaExecute(polygon);
|
|
@@ -56,6 +58,7 @@ export function execute(geometry: GeometryUnion, options?: AreaOptions): number;
|
|
|
56
58
|
* The value will always be `true`.
|
|
57
59
|
*
|
|
58
60
|
* @default true
|
|
61
|
+
* @since 5.2
|
|
59
62
|
*/
|
|
60
63
|
export const areaSupportsCurves: boolean;
|
|
61
64
|
|
|
@@ -14,6 +14,7 @@ import type Polyline from "../Polyline.js";
|
|
|
14
14
|
* @returns Returns the new polygons that were created in the closed empty areas bounded by some of the edges of `polygons` and `polylines`.
|
|
15
15
|
* The newly created polygons do not overlap any existing `polygons` or `polylines`, and the boundary of a new polygon must contain at least one edge from `polylines`.
|
|
16
16
|
* Since only polygons that intersect polylines will be used, it may be necessary to prefilter the input.
|
|
17
|
+
* @since 5.2
|
|
17
18
|
* @example
|
|
18
19
|
* // Auto complete a set of polygons using polylines as boundaries
|
|
19
20
|
* const result = autoCompleteExecute(polygons, polylines);
|
|
@@ -40,6 +41,8 @@ export function execute(polygons: Polygon[], polylines: Polyline[]): Polygon[];
|
|
|
40
41
|
/**
|
|
41
42
|
* Indicates if the operator supports input geometries that contain curves.
|
|
42
43
|
* The value will always be `true`.
|
|
44
|
+
*
|
|
45
|
+
* @since 5.2
|
|
43
46
|
*/
|
|
44
47
|
export const autoCompleteSupportsCurves: boolean;
|
|
45
48
|
|
|
@@ -14,6 +14,7 @@ import type { GeometryUnion, GeometryWithoutMeshUnion } from "../types.js";
|
|
|
14
14
|
* - Extent returns a polyline that bounds the extent.
|
|
15
15
|
* - Polyline returns a multipoint containing the end points of the polyline's parts.
|
|
16
16
|
* - Polygon returns a polyline describing its outer and inner rings.
|
|
17
|
+
* @since 5.2
|
|
17
18
|
* @example
|
|
18
19
|
* // Calculate the boundary of a polygon
|
|
19
20
|
* const boundaryGeometry = boundaryExecute(polygon);
|
|
@@ -48,6 +49,7 @@ export function execute(geometry: GeometryUnion): GeometryWithoutMeshUnion | nul
|
|
|
48
49
|
* - Extent returns a polyline that bounds the extent.
|
|
49
50
|
* - Polyline returns a multipoint containing the end points of the polyline's parts.
|
|
50
51
|
* - Polygon returns a polyline describing its outer and inner rings.
|
|
52
|
+
* @since 5.2
|
|
51
53
|
*/
|
|
52
54
|
export function boundaryExecuteMany(geometries: GeometryUnion[]): (GeometryWithoutMeshUnion | null | undefined)[];
|
|
53
55
|
|
|
@@ -70,6 +72,8 @@ export function executeMany(geometries: GeometryUnion[]): (GeometryWithoutMeshUn
|
|
|
70
72
|
/**
|
|
71
73
|
* Indicates if the operator supports input geometries that contain curves.
|
|
72
74
|
* The value will always be `true`.
|
|
75
|
+
*
|
|
76
|
+
* @since 5.2
|
|
73
77
|
*/
|
|
74
78
|
export const boundarySupportsCurves: boolean;
|
|
75
79
|
|