@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.
Files changed (173) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/107f4bcf8e6c91a67010.js +1 -0
  3. package/assets/esri/core/workers/chunks/{081c9ccaa5884c730a91.js → 1688c4dcd36db992a9dc.js} +1 -1
  4. package/assets/esri/core/workers/chunks/3a6b8f9aabde7e138834.js +1 -0
  5. package/assets/esri/core/workers/chunks/{18d5bad86ea3ef3ec747.js → eba9e03c1c9aa55044a3.js} +120 -120
  6. package/assets/esri/core/workers/chunks/f6c8e5abe1d55ab5c7dd.js +1 -0
  7. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-arabic.woff2 +0 -0
  8. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-cyrillic.woff2 +0 -0
  9. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-ext.woff2 +0 -0
  10. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-georgian.woff2 +0 -0
  11. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-greek.woff2 +0 -0
  12. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-hebrew.woff2 +0 -0
  13. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-math.woff2 +0 -0
  14. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-thai.woff2 +0 -0
  15. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02-vietnamese.woff2 +0 -0
  16. package/assets/esri/themes/base/fonts/fonts/09ab0626-bb45-4650-acc8-0182d693df02.woff2 +0 -0
  17. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-arabic.woff2 +0 -0
  18. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-cyrillic.woff2 +0 -0
  19. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-ext.woff2 +0 -0
  20. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-georgian.woff2 +0 -0
  21. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-greek.woff2 +0 -0
  22. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-hebrew.woff2 +0 -0
  23. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-math.woff2 +0 -0
  24. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-thai.woff2 +0 -0
  25. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7-vietnamese.woff2 +0 -0
  26. package/assets/esri/themes/base/fonts/fonts/0c8a5d21-8a14-4451-8145-695071809cb7.woff2 +0 -0
  27. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-arabic.woff2 +0 -0
  28. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-cyrillic.woff2 +0 -0
  29. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-ext.woff2 +0 -0
  30. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-georgian.woff2 +0 -0
  31. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-greek.woff2 +0 -0
  32. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-hebrew.woff2 +0 -0
  33. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-math.woff2 +0 -0
  34. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-thai.woff2 +0 -0
  35. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688-vietnamese.woff2 +0 -0
  36. package/assets/esri/themes/base/fonts/fonts/12f4c786-0bef-4a48-b7c0-eebaa7591688.woff2 +0 -0
  37. package/assets/esri/themes/base/fonts/fonts/3ae1e25e-3aa6-4061-a016-a079159f9d65.woff2 +0 -0
  38. package/assets/esri/themes/base/fonts/fonts/41331c3c-3759-4462-8695-33c9a21b6a5b.woff2 +0 -0
  39. package/assets/esri/themes/base/fonts/fonts/94aa531e-7746-4df0-bb6e-349891f2eda5.woff2 +0 -0
  40. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-arabic.woff2 +0 -0
  41. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-cyrillic.woff2 +0 -0
  42. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-ext.woff2 +0 -0
  43. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-georgian.woff2 +0 -0
  44. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-greek.woff2 +0 -0
  45. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-hebrew.woff2 +0 -0
  46. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-math.woff2 +0 -0
  47. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-thai.woff2 +0 -0
  48. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939-vietnamese.woff2 +0 -0
  49. package/assets/esri/themes/base/fonts/fonts/b8b15cdf-85d1-4120-8daa-48863d803939.woff2 +0 -0
  50. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-cyrillic.woff2 +0 -0
  51. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-ext.woff2 +0 -0
  52. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-greek.woff2 +0 -0
  53. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-hebrew.woff2 +0 -0
  54. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-math.woff2 +0 -0
  55. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d-vietnamese.woff2 +0 -0
  56. package/assets/esri/themes/base/fonts/fonts/b9c5b839-db56-4419-8fcb-6ab661babb1d.woff2 +0 -0
  57. package/assets/esri/themes/base/fonts/fonts.scss +0 -0
  58. package/chunks/GaussianSplat.glsl.js +24 -9
  59. package/chunks/LineMarker.glsl.js +23 -23
  60. package/chunks/RibbonLine.glsl.js +136 -99
  61. package/config.js +1 -1
  62. package/core/PooledArray.js +1 -1
  63. package/geometry/operators/affineTransformOperator.d.ts +4 -0
  64. package/geometry/operators/alphaShapeOperator.d.ts +10 -1
  65. package/geometry/operators/areaOperator.d.ts +3 -0
  66. package/geometry/operators/autoCompleteOperator.d.ts +3 -0
  67. package/geometry/operators/boundaryOperator.d.ts +4 -0
  68. package/geometry/operators/bufferOperator.d.ts +6 -0
  69. package/geometry/operators/centroidOperator.d.ts +3 -0
  70. package/geometry/operators/clipOperator.d.ts +4 -0
  71. package/geometry/operators/containsOperator.d.ts +4 -0
  72. package/geometry/operators/convexHullOperator.d.ts +6 -0
  73. package/geometry/operators/crossesOperator.d.ts +4 -0
  74. package/geometry/operators/cutOperator.d.ts +3 -0
  75. package/geometry/operators/densifyOperator.d.ts +5 -0
  76. package/geometry/operators/differenceOperator.d.ts +4 -0
  77. package/geometry/operators/disjointOperator.d.ts +4 -0
  78. package/geometry/operators/distanceOperator.d.ts +4 -0
  79. package/geometry/operators/equalsOperator.d.ts +4 -0
  80. package/geometry/operators/extendOperator.d.ts +4 -0
  81. package/geometry/operators/generalizeOperator.d.ts +5 -0
  82. package/geometry/operators/geodesicBufferOperator.d.ts +8 -0
  83. package/geometry/operators/geodesicProximityOperator.d.ts +9 -0
  84. package/geometry/operators/geodeticAreaOperator.d.ts +6 -0
  85. package/geometry/operators/geodeticDensifyOperator.d.ts +7 -0
  86. package/geometry/operators/geodeticDistanceOperator.d.ts +6 -0
  87. package/geometry/operators/geodeticLengthOperator.d.ts +6 -0
  88. package/geometry/operators/geodeticUtilsOperator.d.ts +7 -0
  89. package/geometry/operators/graphicBufferOperator.d.ts +4 -0
  90. package/geometry/operators/integrateOperator.d.ts +3 -0
  91. package/geometry/operators/intersectionOperator.d.ts +5 -0
  92. package/geometry/operators/intersectsOperator.d.ts +4 -0
  93. package/geometry/operators/isNearOperator.d.ts +4 -0
  94. package/geometry/operators/labelPointOperator.d.ts +4 -0
  95. package/geometry/operators/lengthOperator.d.ts +3 -0
  96. package/geometry/operators/linesToPolygonsOperator.d.ts +3 -0
  97. package/geometry/operators/locateBetweenOperator.d.ts +3 -0
  98. package/geometry/operators/minimumBoundingCircleOperator.d.ts +5 -0
  99. package/geometry/operators/multiPartToSinglePartOperator.d.ts +4 -0
  100. package/geometry/operators/offsetOperator.d.ts +5 -0
  101. package/geometry/operators/overlapsOperator.d.ts +4 -0
  102. package/geometry/operators/polygonOverlayOperator.d.ts +9 -1
  103. package/geometry/operators/polygonSlicerOperator.d.ts +7 -0
  104. package/geometry/operators/projectOperator.d.ts +6 -0
  105. package/geometry/operators/proximityOperator.d.ts +7 -0
  106. package/geometry/operators/relateOperator.d.ts +5 -0
  107. package/geometry/operators/reshapeOperator.d.ts +3 -0
  108. package/geometry/operators/shapePreservingProjectOperator.d.ts +7 -0
  109. package/geometry/operators/simplifyOGCOperator.d.ts +5 -0
  110. package/geometry/operators/simplifyOperator.d.ts +5 -0
  111. package/geometry/operators/support/GeographicTransformation.d.ts +2 -0
  112. package/geometry/operators/support/GeographicTransformationStep.d.ts +2 -0
  113. package/geometry/operators/support/Transformation.d.ts +6 -1
  114. package/geometry/operators/support/geographicTransformationUtils.d.ts +4 -0
  115. package/geometry/operators/symmetricDifferenceOperator.d.ts +4 -0
  116. package/geometry/operators/touchesOperator.d.ts +4 -0
  117. package/geometry/operators/types.d.ts +1 -0
  118. package/geometry/operators/unionOperator.d.ts +4 -0
  119. package/geometry/operators/withinOperator.d.ts +4 -0
  120. package/kernel.js +1 -1
  121. package/layers/GaussianSplatLayer.d.ts +0 -1
  122. package/layers/GeospatialPDFLayer.js +1 -1
  123. package/package.json +2 -2
  124. package/support/revision.js +1 -1
  125. package/symbols/LineSymbol3D.d.ts +0 -7
  126. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  127. package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
  128. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  129. package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +1 -1
  130. package/views/3d/layers/GeospatialPDFLayerView3D.js +1 -1
  131. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  132. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  133. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  134. package/views/3d/navigation/modes/GroundNavigationMode3D.js +1 -1
  135. package/views/3d/state/Constraints.js +1 -1
  136. package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
  137. package/views/3d/state/utils/groundNavigationUtils.js +1 -1
  138. package/views/3d/state/utils/navigationUtils.js +1 -1
  139. package/views/3d/terrain/SphericalPatch.js +1 -1
  140. package/views/3d/webgl-engine/collections/Component/ComponentObjectElevationAgnosticBVH.js +1 -1
  141. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +23 -12
  142. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +35 -25
  143. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +2 -2
  144. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
  145. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  146. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  147. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  148. package/views/3d/webgl-engine/lib/IntersectorResult.js +1 -1
  149. package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
  150. package/views/3d/webgl-engine/lib/PolygonIntersectionResults.js +1 -1
  151. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  152. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  153. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  154. package/views/3d/webgl-engine/lib/lodRendering/LodResources.js +1 -1
  155. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  156. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  157. package/views/3d/webgl-engine/materials/intersectWithPolygonOffset.js +1 -1
  158. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  159. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +4 -4
  160. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  161. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  162. package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +1 -1
  163. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  164. package/views/support/PromiseQueue.js +1 -1
  165. package/views/support/Scheduler.js +1 -1
  166. package/widgets/BatchAttributeForm/ValueChangeTransaction.js +1 -1
  167. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  168. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  169. package/widgets/BatchAttributeForm/inputs/InputBase.js +1 -1
  170. package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.d.ts +148 -1
  171. package/assets/esri/core/workers/chunks/540f60e31b19d85e9371.js +0 -1
  172. package/assets/esri/core/workers/chunks/55a560fd872f7463b33d.js +0 -1
  173. 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 a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{mainLightIntensity as o}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{inverseProjectionMatrix as m,nearFar as g,viewport as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as f,NoPerspectiveRead as S}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as u,addPixelRatio as D,addCameraPosition as x}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as L}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as w}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as y,If as C}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{alphaCutoff as P}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as F}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{outputColorHighlightOLID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as j}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as A}from"../views/webgl/ShaderBuilder.js";const T=1;function R(T){const R=new A,{attributes:W,varyings:I,vertex:V,fragment:O}=R,{applyMarkerOffset:E,draped:N,shadingEnabled:$,output:J,capType:_,stippleEnabled:U,falloffEnabled:M,wireframe:H,innerColorEnabled:B,hasAnimation:k,hasScreenSizePerspective:G,worldSized:X,imagePattern:Y}=T,Z=2===_,q=U&&Z,K=M||q,Q=U||Z,ee=j(T).createBuilder(R,T);V.inputs.add("position",()=>ee.getTextureAttribute("position")),T.hasVVSize?V.inputs.add("sizeFeatureAttribute",()=>ee.getTextureAttribute("sizeFeatureAttribute")):V.inputs.add("size",()=>ee.getTextureAttribute("size")),T.hasVVOpacity&&V.inputs.add("opacityFeatureAttribute",()=>ee.getTextureAttribute("opacityFeatureAttribute")),T.hasVVColor?V.inputs.add("colorFeatureAttribute",()=>ee.getTextureAttribute("colorFeatureAttribute")):V.inputs.add("color",()=>ee.getTextureAttribute("color")),O.include(d),R.include(t,T),R.include(r,T),11===J?(R.varyings.add("objectAndLayerIdColorVarying","vec4"),V.code.add(y`
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 ${ee.getTextureAttribute("olidColor")};
4
+ return ${ne.getTextureAttribute("olidColor")};
5
5
  }
6
6
 
7
7
  void forwardObjectAndLayerIdColor() {
8
8
  objectAndLayerIdColorVarying = getOlidColor();
9
9
  }
10
- `),O.code.add(y`void outputObjectAndLayerIdColor() {
10
+ `),O.code.add(C`void outputObjectAndLayerIdColor() {
11
11
  fragColor = objectAndLayerIdColorVarying;
12
- }`)):(V.code.add(y`void forwardObjectAndLayerIdColor() {}`),O.code.add(y`void outputObjectAndLayerIdColor() {}`));const te=E&&!N;if(te&&R.include(s,T),u(V,T),N&&(X||U)){const e=X?"groundMetersToScreenRatio":"planarDistanceToScreenRatio";V.uniforms.add(new L(e,e=>1/(e.screenToPlanarDistanceRatio*(X?e.planarDistanceToGroundRatio:1))))}return V.uniforms.add(m,g,v,new w("miterLimit",e=>"miter"!==e.join?0:e.miterLimit)),V.constants.add("LARGE_HALF_FLOAT","float",65500),V.constants.add("EPS","float",.001),V.constants.add("NUM_JOIN_SUBDIVISIONS","float",T.numJoinSubdivisions),W.add("textureElementIndex","uint"),W.add("lineParameters","vec2"),I.add("vColor","vec4"),I.add("vpos","vec3",{invariant:!0}),I.add("vLineDistance","float"),I.add("vLineWidth","float"),U||(I.add("vIsInsideJoin","int"),I.add("vStretchFactor","float"),I.add("vJoinCenterLineSDFs","vec2"),I.add("vSubdivisionFactor","float")),U&&I.add("vLineSizeInv","float"),K&&I.add("vLineDistanceNorm","float"),Z&&(I.add("vSegmentSDF","float"),I.add("vReverseSegmentSDF","float")),V.code.add(y`vec3 perpendicular(vec3 v) {
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
- }`),V.code.add(y`vec4 projectAndScale(vec4 pos) {
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
- }`),V.code.add(y`void clip(
29
- inout vec4 pos,
30
- inout vec4 prev,
31
- inout vec4 next,
32
- bool isStartVertex
33
- ) {
34
- float adjustedNearPlaneDistance = nearFar[0] * 0.99;
35
- if (pos.z > -nearFar[0]) {
36
- if (!isStartVertex) {
37
- if (prev.z < -nearFar[0]) {
38
- pos = mix(prev, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, prev, pos));
39
- next = pos;
40
- } else {
41
- pos = vec4(0.0, 0.0, 0.0, 1.0);
42
- }
43
- } else {
44
- if (next.z < -nearFar[0]) {
45
- pos = mix(pos, next, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, next));
46
- prev = pos;
47
- } else {
48
- pos = vec4(0.0, 0.0, 0.0, 1.0);
49
- }
50
- }
51
- } else {
52
- if (prev.z > -nearFar[0]) {
53
- prev = mix(pos, prev, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, prev));
54
- }
55
- if (next.z > -nearFar[0]) {
56
- next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos));
57
- }
58
- }
59
- }`),D(V),V.constants.add("aaWidth","float",U?0:1),V.main.add(y`
60
- vec3 position = ${ee.getTextureAttribute("position")};
61
- float u0 = ${ee.getTextureAttribute("u0")};
62
- ${C(X,y`
63
- float prevU0 = ${ee.getTextureAttribute("u0",-1)};
64
- float nextU0 = ${ee.getTextureAttribute("u0",1)};
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 = ${ee.getTextureAttribute("position",-1)};
72
- vec3 nextPosition = ${ee.getTextureAttribute("position",1)};
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
- `),te&&V.main.add(y`vec4 other = isStartVertex ? next : prev;
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
- }`),R.include(f),V.code.add(y`
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
- ${C(!U,y`
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
- ${C(T.roundJoins,y`
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 = ${U?y`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:y`subdivisionFactor`};
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
- `,y`
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
- ${C(U,y`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,y`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
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!==_?y`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.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
- `),V.main.add(y`
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(${C(G,"clippedPos")});
215
- ${C(U&&G,"float patternLineSize = getSize(clippedCenter);")}
216
- ${C(U&&!G,"float patternLineSize = lineSize;")}
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
- ${C(X,y`
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
- `,y`
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
- ${U?y`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
239
- `),Q&&V.main.add(y`
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
- ${Z?y`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
244
- `),V.main.add(y`
245
- ${C(!U,y`
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
- ${K?y`vLineDistanceNorm = lineDistNorm;`:""}
303
+ ${ee?C`vLineDistanceNorm = lineDistNorm;`:""}
277
304
 
278
305
  pos.xyz += displacement;
279
- `),U||V.main.add(y`if (isJoin) {
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
- }`),Z&&V.main.add(y`vec2 segmentDir = normalize(segment.xy);
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);`),U&&(N?V.main.add(y`float stippleDistanceToScreenRatio = ${X?"groundMetersToScreenRatio":"planarDistanceToScreenRatio"};`):V.main.add(y`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
297
- float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),V.main.add(y`
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 = ${C(X,y`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,y`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
328
+ float segmentLengthRender = ${F(Z,C`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,C`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
302
329
 
303
- ${C(!N||X,y`
304
- float segmentStartRender = ${C(X,y`mix(u0, prevU0, isEndVertex)`,y`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
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?V.main.add(y`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
309
- float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):V.main.add(y`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
310
- float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),V.uniforms.add(new w("stipplePatternPixelSize",e=>a(e))),V.main.add(y`
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
- ${C(X,y`
340
+ ${F(Z,C`
314
341
  vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
315
342
  vStipplePatternStretch = 1.0;
316
343
 
317
- ${C(Y,y`
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
- `,y`
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
- // Cancel out perspective correct interpolation because we want this length to really represent the screen
343
- // distance.
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
- `)),V.main.add(y`
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
- ${H&&!N?"pos.z -= EPS * pos.w;":""}
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
- }`),R.include(z,T),R.include(S),O.include(h),O.include(P),O.include(e,T),O.main.add("discardBySlice(vpos);"),U||O.code.add(y`float lineFeatheringFactor(float lineWidth, float lineDistance) {
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(y`
414
+ }`),O.main.add(C`
380
415
  float lineWidth = noPerspectiveRead(vLineWidth);
381
416
  float lineDistance = noPerspectiveRead(vLineDistance);
382
- ${C(K,y`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
383
- `),H?O.main.add(y`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(Z&&O.main.add(y`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
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
- }`),q?O.main.add(y`vec2 stipplePosition = vec2(
391
- min(getStippleSDF() * 2.0 - 1.0, 0.0),
392
- lineDistanceNorm
393
- );
394
- float stippleRadius = length(stipplePosition * lineWidth);
395
- float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
396
- float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
397
- float stippleAlpha = step(alphaCutoff, stippleCoverage);`):O.main.add(y`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==J&&O.main.add(y`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),O.uniforms.add(new b("intrinsicColor",e=>e.color)).main.add(y`vec4 color = intrinsicColor * vColor;
398
- color.a = noPerspectiveRead(color.a);`),B&&O.uniforms.add(new b("innerColor",e=>e.innerColor??e.color),new w("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(y`float distToInner = abs(lineDistance) - innerWidth;
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(y`vec4 finalColor = blendStipple(color, stippleAlpha);`),M&&(O.uniforms.add(new w("falloff",e=>e.falloff)),O.main.add(y`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),U||O.main.add(y`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),$&&(I.add("vnormal","vec3"),V.include(l,T),V.main.add(y`vnormal = getLocalUp(vpos, localOrigin);
402
- forwardLinearDepthToReadShadow();`),R.include(p,T),x(O,T),O.include(n,T),O.include(i,T),O.uniforms.add(o,V.uniforms.get("localOrigin")).main.add(y`vec3 posWorld = vpos + localOrigin;
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);`)),k&&(V.main.add(`vec4 animatedAlphaTimeStamps = ${ee.getTextureAttribute("timeStamps")};`),R.include(F,T),O.main.add("finalColor.a *= animatedAlpha();"))),O.main.add(y`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),R}const W=Object.freeze(Object.defineProperty({__proto__:null,build:R,numRoundJoinSubdivisions:T},Symbol.toStringTag,{value:"Module"}));export{W as R,R as b,T as n};
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.131";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const s={apiKey:void 0,apiKeys:{scopes:[]},applicationName:"",applicationUrl:globalThis.location?.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",userPrivilegesApplied:!0,portalUrl:"https://www.arcgis.com",respectPrefersReducedMotion:!0,routeServiceUrl:"https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:"high",proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(s,globalThis.esriConfig,!0),delete s.has),!s.assetsPath){{const e="5.2.0-next.134";s.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}/assets`}s.defaultAssetsPath=s.assetsPath}export{s as default};
@@ -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](){const{data:t,length:h}=this;for(let i=0;i<h;++i)yield t[i]}}function o(t){t.data.length>l*t.length&&(t.data.length=Math.floor(t.length*n))}export{r as default};
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
- /** Object returned by the [alphaShapeExecuteMany()](https://developers.arcgis.com/javascript/latest/references/core/geometry/operators/alphaShapeOperator/#alphaShapeExecuteMany) method. */
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