@arcgis/core 5.2.0-next.48 → 5.2.0-next.49

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 (190) hide show
  1. package/applications/Components/OrientedImageryViewer/PanoramicViewer/utils.d.ts +33 -0
  2. package/applications/Components/OrientedImageryViewer/PanoramicViewer/utils.js +2 -0
  3. package/arcgisGlobal.d.ts +2 -0
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/031ccf2e1583beebdf24.js +1 -0
  6. package/assets/esri/core/workers/chunks/0474af7687466d8befd2.js +1 -0
  7. package/assets/esri/core/workers/chunks/{f9b2727b41943d83d4ca.js → 0a413d917f3d19440fc1.js} +1 -1
  8. package/assets/esri/core/workers/chunks/0b2ca406761c63529a6a.js +1 -0
  9. package/assets/esri/core/workers/chunks/{c369d4266f38e9ea6592.js → 1119a33245138e7b3914.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{6fbcf1b85461c6c6c127.js → 172571397c66f992d08c.js} +1 -1
  11. package/assets/esri/core/workers/chunks/18edf2846d7546285e5e.js +1 -0
  12. package/assets/esri/core/workers/chunks/{7759a489205a874e13bb.js → 1b0557fcb058fc450230.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{7d0ff52748fd4eb0334d.js → 1bc45872d22d61dbd7d1.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{835643f716f7058a2722.js → 1cf8fb704c48ac3d3b15.js} +1 -1
  15. package/assets/esri/core/workers/chunks/25cb56c3b538d00e7693.js +1 -0
  16. package/assets/esri/core/workers/chunks/{2c0d92c0e3511775401a.js → 35cbf00f0c37a86517af.js} +1 -1
  17. package/assets/esri/core/workers/chunks/382d9491c2a56c1925fe.js +1 -0
  18. package/assets/esri/core/workers/chunks/3af2b9d6d5466cb2b957.js +256 -0
  19. package/assets/esri/core/workers/chunks/{c3766d98f0a70897647f.js → 3bc2943035391b44d4cf.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{bd8b180c61a80e60568c.js → 40f7bb0ebd918d76f078.js} +1 -1
  21. package/assets/esri/core/workers/chunks/43b39abd49c4a8ce891f.js +1 -0
  22. package/assets/esri/core/workers/chunks/{821176ee3be724621bb0.js → 461c2de938bf4c9b1442.js} +1 -1
  23. package/assets/esri/core/workers/chunks/4ee7232ea41fa41c5ed4.js +29 -0
  24. package/assets/esri/core/workers/chunks/50674ba5f24129d61d89.js +1 -0
  25. package/assets/esri/core/workers/chunks/547a2fe53139f705f95e.js +1 -0
  26. package/assets/esri/core/workers/chunks/5ce09c4d06e98b1e9251.js +1 -0
  27. package/assets/esri/core/workers/chunks/{4d9433f127aef76f3449.js → 5dbd28fce73751d2d1aa.js} +1 -1
  28. package/assets/esri/core/workers/chunks/5ec8b02e097cf6718462.js +1 -0
  29. package/assets/esri/core/workers/chunks/5f54d927dc77e92cf145.js +1 -0
  30. package/assets/esri/core/workers/chunks/63e3d338751240479335.js +1 -0
  31. package/assets/esri/core/workers/chunks/6ccd5fa5e35dc70fcd5d.js +1 -0
  32. package/assets/esri/core/workers/chunks/6e520ef645c5edcd499a.js +1 -0
  33. package/assets/esri/core/workers/chunks/{68d898037feb0aee3138.js → 78add8e6b54b51eaa299.js} +1 -1
  34. package/assets/esri/core/workers/chunks/7b61f56d0f766421eaef.js +1 -0
  35. package/assets/esri/core/workers/chunks/7f2f2a92dce3f68e579b.js +1 -0
  36. package/assets/esri/core/workers/chunks/{e7e3ea7af928b49b226c.js → 801a664f21e0218bc705.js} +1 -1
  37. package/assets/esri/core/workers/chunks/8d21e2dabc5165f1c8ca.js +1 -0
  38. package/assets/esri/core/workers/chunks/9008090a5d8431ddfa22.js +1 -0
  39. package/assets/esri/core/workers/chunks/{71ce1009dadcae8f8094.js → 95b3b8fe45ef4ac6b277.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{78918035144c3c76df71.js → 96cec8a02ca96175d602.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{bab71e1b8b93d09d4809.js → 99eccf9ce53582cfa5b5.js} +1 -1
  42. package/assets/esri/core/workers/chunks/9b7cb96acea388d86fa4.js +1 -0
  43. package/assets/esri/core/workers/chunks/{ff2c4f648f77850922d5.js → 9e474465d069cb9e94f5.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{ae9f9e975d7a9d442fa5.js → ab5aa4280ed0cb7fcbe9.js} +1 -1
  45. package/assets/esri/core/workers/chunks/b49952541d189b4b9f7e.js +1 -0
  46. package/assets/esri/core/workers/chunks/{fed6c75485601cd3afa1.js → baac90da0703891d59c4.js} +1 -1
  47. package/assets/esri/core/workers/chunks/bb552089b34d6811fb03.js +1 -0
  48. package/assets/esri/core/workers/chunks/{b30237361d87cf982e41.js → d1af0bd611a3dc549858.js} +64 -59
  49. package/assets/esri/core/workers/chunks/d2cb3d5ef0a9285afb78.js +1 -0
  50. package/assets/esri/core/workers/chunks/d560ed96dde5ca3a5583.js +1 -0
  51. package/assets/esri/core/workers/chunks/dc1787d88b11ed985159.js +1 -0
  52. package/assets/esri/core/workers/chunks/{399e23d777a043efa9f1.js → dd95f50dac3f33cdb6d2.js} +1 -1
  53. package/assets/esri/core/workers/chunks/ddb92c815d17c67a45e6.js +1 -0
  54. package/assets/esri/core/workers/chunks/{52efa4ded11c1e71f04f.js → e2e2162adbfb9b46bede.js} +1 -1
  55. package/assets/esri/core/workers/chunks/e4353f0792f45aa6a62f.js +1 -0
  56. package/assets/esri/core/workers/chunks/eac8cae89da9ce2f4946.js +1 -0
  57. package/assets/esri/core/workers/chunks/edf87407dd20685c82ab.js +1 -0
  58. package/assets/esri/core/workers/chunks/{be6caade351e89f84251.js → ee7c8a7f384ea6393487.js} +107 -82
  59. package/assets/esri/core/workers/chunks/f1299b4fc760ccca1518.js +1 -0
  60. package/assets/esri/core/workers/chunks/f244632f7934a4b72c91.js +1 -0
  61. package/assets/esri/core/workers/chunks/fc639c730115e07a4a1a.js +1 -0
  62. package/assets/esri/libs/dxtEncoder/dxt_encoder.wasm +0 -0
  63. package/chunks/Component.glsl.js +104 -67
  64. package/chunks/LineMarker.glsl.js +31 -31
  65. package/chunks/RibbonLine.glsl.js +60 -49
  66. package/chunks/dxt_encoder.js +1 -1
  67. package/chunks/vec3.js +1 -1
  68. package/config.js +1 -1
  69. package/core/has.js +1 -1
  70. package/geometry/support/aaBoundingBox.js +1 -1
  71. package/geometry/support/buffer/math/vec3.js +1 -1
  72. package/geometry/support/frustum.js +1 -1
  73. package/geometry/support/meshUtils/extent.js +1 -1
  74. package/geometry/support/meshUtils/vertexSpaceConversion.js +1 -1
  75. package/kernel.js +1 -1
  76. package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
  77. package/layers/orientedImagery/transformations/utils.js +1 -1
  78. package/package.json +1 -1
  79. package/support/revision.js +1 -1
  80. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  81. package/symbols/cim/CIMSymbolHelper.js +1 -1
  82. package/symbols/cim/TextRasterizer.js +1 -1
  83. package/symbols/cim/cimAnalyzer.js +1 -1
  84. package/symbols/cim/richTextUtils.js +2 -0
  85. package/views/2d/engine/webgl/TextureManager.js +1 -1
  86. package/views/2d/engine/webgl/definitions.js +1 -1
  87. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  88. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  89. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  90. package/views/2d/engine/webgl/util/DimensionMatcher.js +1 -1
  91. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  92. package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
  93. package/views/2d/layers/support/annodime/DimensionInfo.js +1 -1
  94. package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
  95. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
  96. package/views/3d/analysis/Viewshed/ViewshedConfiguration.js +1 -1
  97. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  98. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  99. package/views/3d/analysis/Viewshed/ViewshedSubVisualization.js +1 -1
  100. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  101. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  102. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
  103. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillVisualization.js +1 -1
  104. package/views/3d/focusAreaUtils.js +1 -1
  105. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  106. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  107. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  108. package/views/3d/layers/graphics/wosrLoader.js +1 -1
  109. package/views/3d/layers/i3s/meshUtils.js +1 -1
  110. package/views/3d/webgl/RenderCamera.js +1 -1
  111. package/views/3d/webgl/RenderNode.js +1 -1
  112. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  113. package/views/3d/webgl-engine/core/shaderLibrary/TextureBackedBuffer.glsl.js +2 -2
  114. package/views/3d/webgl-engine/core/shaderLibrary/TextureBackedBufferFields.glsl.js +2 -2
  115. package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +36 -25
  116. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +17 -10
  117. package/views/3d/webgl-engine/lib/BoundingInfo.js +1 -1
  118. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  119. package/views/3d/webgl-engine/lib/PolygonIntersections2D.js +1 -1
  120. package/views/3d/webgl-engine/lib/RayIntersections.js +1 -1
  121. package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
  122. package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
  123. package/views/3d/webgl-engine/lib/lodRendering/LodLevel.js +1 -1
  124. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  125. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  126. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  127. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  128. package/views/3d/webgl-engine/shaders/AnimatedLine.glsl.js +8 -5
  129. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  130. package/views/3d/webgl-engine/shaders/RibbonLineLayouts.js +1 -1
  131. package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
  132. package/views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js +1 -1
  133. package/views/SceneView.js +1 -1
  134. package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
  135. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorkerHandle.js +1 -1
  136. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
  137. package/views/selection/SelectionOperation.js +1 -1
  138. package/views/support/DefaultsFromMap.js +1 -1
  139. package/views/support/LayerViewManager.js +1 -1
  140. package/views/support/TextureCompressionWorker.js +1 -1
  141. package/views/webgl/RenderingContext.js +1 -1
  142. package/widgets/Editor.js +1 -1
  143. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  144. package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
  145. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  146. package/widgets/PanoramicViewer/support/PanoramicTileNode.d.ts +63 -0
  147. package/widgets/PanoramicViewer/support/PanoramicTileNode.js +1 -1
  148. package/widgets/PanoramicViewer/support/PanoramicTilePyramid.d.ts +66 -0
  149. package/widgets/PanoramicViewer/support/PanoramicTilePyramid.js +1 -1
  150. package/widgets/PanoramicViewer/utils.js +1 -1
  151. package/widgets/Sketch/VisibleElements.d.ts +0 -10
  152. package/widgets/Sketch.js +1 -1
  153. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
  154. package/widgets/support/SelectionToolbar.js +1 -1
  155. package/widgets/support/Selector3D/selectorUtils.js +2 -0
  156. package/assets/esri/core/workers/chunks/0e64e20fedfe01a1985f.js +0 -1
  157. package/assets/esri/core/workers/chunks/0f674c625f24ac73e25a.js +0 -1
  158. package/assets/esri/core/workers/chunks/15351354afcbf840a23d.js +0 -29
  159. package/assets/esri/core/workers/chunks/1843a762f7051f61af43.js +0 -1
  160. package/assets/esri/core/workers/chunks/1d1f5578c7d8619f7a46.js +0 -1
  161. package/assets/esri/core/workers/chunks/2015f4def2ef201bdab8.js +0 -1
  162. package/assets/esri/core/workers/chunks/20c363a113dc068de9e0.js +0 -1
  163. package/assets/esri/core/workers/chunks/24d936d459c538187af6.js +0 -1
  164. package/assets/esri/core/workers/chunks/272c8ab189217240d05f.js +0 -1
  165. package/assets/esri/core/workers/chunks/2e121eac97ae72a8b49a.js +0 -1
  166. package/assets/esri/core/workers/chunks/327899182a4dace428eb.js +0 -1
  167. package/assets/esri/core/workers/chunks/32ca15d928d51b380068.js +0 -1
  168. package/assets/esri/core/workers/chunks/3e1a7e4c674057807e3a.js +0 -1
  169. package/assets/esri/core/workers/chunks/4e2baa60c5d5197b2271.js +0 -1
  170. package/assets/esri/core/workers/chunks/519c0b51b1ba42fb71d7.js +0 -1
  171. package/assets/esri/core/workers/chunks/57fa3c0e7892c2eef3ee.js +0 -261
  172. package/assets/esri/core/workers/chunks/68b615bbd27fadcfcb66.js +0 -1
  173. package/assets/esri/core/workers/chunks/69d740ab18510156f5d6.js +0 -1
  174. package/assets/esri/core/workers/chunks/8d21f3d6edbcd7b335d0.js +0 -1
  175. package/assets/esri/core/workers/chunks/9a97f6cda2f36941efae.js +0 -1
  176. package/assets/esri/core/workers/chunks/9ceeae787dc7c194d60e.js +0 -1
  177. package/assets/esri/core/workers/chunks/a90f7b1c6c69b6033b4c.js +0 -1
  178. package/assets/esri/core/workers/chunks/b32bdf5730953c2fb16b.js +0 -1
  179. package/assets/esri/core/workers/chunks/b5d23efa584c74955d5b.js +0 -1
  180. package/assets/esri/core/workers/chunks/b83f2bbd634f57a5e8f9.js +0 -1
  181. package/assets/esri/core/workers/chunks/bb8e9b8343b83dd1ba3c.js +0 -1
  182. package/assets/esri/core/workers/chunks/bef1990159c0e49e7d27.js +0 -1
  183. package/assets/esri/core/workers/chunks/bf287f0e2ecb4532dc00.js +0 -1
  184. package/assets/esri/core/workers/chunks/c5e36544b2d1792e4c5f.js +0 -1
  185. package/assets/esri/core/workers/chunks/cba3316910ff088f4d77.js +0 -1
  186. package/assets/esri/core/workers/chunks/de9573871f64c01e9f01.js +0 -1
  187. package/assets/esri/core/workers/chunks/e232459f0b00110e07ac.js +0 -1
  188. package/assets/esri/core/workers/chunks/ee6bb6cd16f99421c76b.js +0 -1
  189. package/assets/esri/core/workers/chunks/fd2ba6f76645ba503cbb.js +0 -1
  190. package/views/3d/analysis/Viewshed/ViewshedTool2.js +0 -2
@@ -1,50 +1,50 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{markerTextureSize as e,markerSymbolSize as r,markerTipThicknessFactor as i}from"../views/3d/support/engineContent/marker.js";import{SliceDraw as o}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{OutputHighlight as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{MarkerSizing as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as d,addViewNormal as v,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as w,If as S}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as y}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{alphaCutoff as b}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as P}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as z}from"../views/webgl/ShaderBuilder.js";function j(j){const L=new z,{space:C,anchor:k,hasTip:D,hasScreenSizePerspective:M}=j,$=2===C,W=1===C;L.attributes.add("position","vec3"),L.vertex.inputs.add("position",()=>"position"),L.include(t,j),L.include(n,j);const{vertex:O,fragment:U,varyings:N}=L;d(O,j),L.attributes.add("previousDelta","vec4"),L.attributes.add("uv0","vec2"),N.add("vColor","vec4"),N.add("vpos","vec3",{invariant:!0}),N.add("vUV","vec2"),N.add("vSize","float"),D&&N.add("vLineWidth","float"),O.uniforms.add(new h("nearFar",({camera:e})=>e.nearFar),new f("viewport",({camera:e})=>e.fullViewport)).code.add(w`vec4 projectAndScale(vec4 pos) {
2
+ import{markerTextureSize as e,markerSymbolSize as r,markerTipThicknessFactor as i}from"../views/3d/support/engineContent/marker.js";import{SliceDraw as t}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as o}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{MarkerSizing as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{positionOutsideClipSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as d,addViewNormal as v,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as w,If as y}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{alphaCutoff as S}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as P}from"../views/webgl/ShaderBuilder.js";function j(j){const L=new P,{space:C,anchor:V,hasTip:k,hasScreenSizePerspective:D}=j,M=2===C,$=1===C;L.attributes.add("position","vec3"),L.attributes.add(j.hasVVSize?"sizeFeatureAttribute":"size","float"),j.hasVVOpacity&&L.attributes.add("opacityFeatureAttribute","float"),L.attributes.add(j.hasVVColor?"colorFeatureAttribute":"color",j.hasVVColor?"float":"vec4"),L.vertex.inputs.add("position",()=>"position"),j.hasVVSize?L.vertex.inputs.add("sizeFeatureAttribute",()=>"sizeFeatureAttribute"):L.vertex.inputs.add("size",()=>"size"),j.hasVVOpacity&&L.vertex.inputs.add("opacityFeatureAttribute",()=>"opacityFeatureAttribute"),j.hasVVColor?L.vertex.inputs.add("colorFeatureAttribute",()=>"colorFeatureAttribute"):L.vertex.inputs.add("color",()=>"color"),L.include(o,j),L.include(s,j);const{vertex:F,fragment:W,varyings:A}=L;d(F,j),L.attributes.add("previousDelta","vec4"),L.attributes.add("uv0","vec2"),A.add("vColor","vec4"),A.add("vpos","vec3",{invariant:!0}),A.add("vUV","vec2"),A.add("vSize","float"),k&&A.add("vLineWidth","float"),F.uniforms.add(new h("nearFar",({camera:e})=>e.nearFar),new u("viewport",({camera:e})=>e.fullViewport)).code.add(w`vec4 projectAndScale(vec4 pos) {
3
3
  vec4 posNdc = proj * pos;
4
4
  posNdc.xy *= viewport.zw / posNdc.w;
5
5
  return posNdc;
6
- }`),O.code.add(w`void clip(vec4 pos, inout vec4 prev) {
6
+ }`),F.code.add(w`void clip(vec4 pos, inout vec4 prev) {
7
7
  float vnp = nearFar[0] * 0.99;
8
8
  if (prev.z > -nearFar[0]) {
9
9
  float interpolation = (-vnp - pos.z) / (prev.z - pos.z);
10
10
  prev = mix(pos, prev, interpolation);
11
11
  }
12
- }`),$?(L.attributes.add("normal","vec3"),v(O),O.constants.add("tiltThreshold","float",.7),O.code.add(w`vec3 perpendicular(vec3 v) {
12
+ }`),M?(L.attributes.add("normal","vec3"),v(F),F.constants.add("tiltThreshold","float",.7),F.code.add(w`vec3 perpendicular(vec3 v) {
13
13
  vec3 n = (viewNormal * vec4(normal.xyz, 1.0)).xyz;
14
14
  vec3 n2 = cross(v, n);
15
15
  vec3 forward = vec3(0.0, 0.0, 1.0);
16
16
  float tiltDot = dot(forward, n);
17
17
  return abs(tiltDot) < tiltThreshold ? n : n2;
18
- }`)):O.code.add(w`vec2 perpendicular(vec2 v) {
18
+ }`)):F.code.add(w`vec2 perpendicular(vec2 v) {
19
19
  return vec2(v.y, -v.x);
20
- }`);const F=$?"vec3":"vec2";return O.code.add(w`
21
- ${F} normalizedSegment(${F} pos, ${F} prev) {
22
- ${F} segment = pos - prev;
20
+ }`);const O=M?"vec3":"vec2";return F.code.add(w`
21
+ ${O} normalizedSegment(${O} pos, ${O} prev) {
22
+ ${O} segment = pos - prev;
23
23
  float segmentLen = length(segment);
24
24
 
25
25
  // normalize or zero if too short
26
- return (segmentLen > 0.001) ? segment / segmentLen : ${$?"vec3(0.0, 0.0, 0.0)":"vec2(0.0, 0.0)"};
26
+ return (segmentLen > 0.001) ? segment / segmentLen : ${M?"vec3(0.0, 0.0, 0.0)":"vec2(0.0, 0.0)"};
27
27
  }
28
28
 
29
- ${F} displace(${F} pos, ${F} prev, float displacementLen) {
30
- ${F} segment = normalizedSegment(pos, prev);
29
+ ${O} displace(${O} pos, ${O} prev, float displacementLen) {
30
+ ${O} segment = normalizedSegment(pos, prev);
31
31
 
32
- ${F} displacementDirU = perpendicular(segment);
33
- ${F} displacementDirV = segment;
32
+ ${O} displacementDirU = perpendicular(segment);
33
+ ${O} displacementDirV = segment;
34
34
 
35
- ${1===k?"pos -= 0.5 * displacementLen * displacementDirV;":""}
35
+ ${1===V?"pos -= 0.5 * displacementLen * displacementDirV;":""}
36
36
 
37
37
  return pos + displacementLen * (uv0.x * displacementDirU + uv0.y * displacementDirV);
38
38
  }
39
- `),W&&(O.uniforms.add(new y("inverseProjectionMatrix",({camera:e})=>e.inverseProjectionMatrix)),O.code.add(w`vec3 inverseProject(vec4 posScreen) {
39
+ `),$&&(F.uniforms.add(new b("inverseProjectionMatrix",({camera:e})=>e.inverseProjectionMatrix)),F.code.add(w`vec3 inverseProject(vec4 posScreen) {
40
40
  posScreen.xy = (posScreen.xy / viewport.zw) * posScreen.w;
41
41
  return (inverseProjectionMatrix * posScreen).xyz;
42
- }`),O.code.add(w`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
42
+ }`),F.code.add(w`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
43
43
  float cos = dot(rayDir, planeNormal);
44
44
  float t = dot(planeOrigin, planeNormal) / cos;
45
45
  intersection = t * rayDir;
46
46
  return abs(cos) > 0.001 && t > 0.0;
47
- }`),O.uniforms.add(new u("perScreenPixelRatio",({camera:e})=>e.perScreenPixelRatio)),O.code.add(w`
47
+ }`),F.uniforms.add(new g("perScreenPixelRatio",({camera:e})=>e.perScreenPixelRatio)),F.code.add(w`
48
48
  vec4 toFront(vec4 displacedPosScreen, vec3 posLeft, vec3 posRight, vec3 prev, float lineWidth) {
49
49
  // Project displaced position back to camera space
50
50
  vec3 displacedPos = inverseProject(displacedPosScreen);
@@ -54,7 +54,7 @@ return abs(cos) > 0.001 && t > 0.0;
54
54
  vec3 planeNormal = normalize(cross(posLeft - posRight, posLeft - prev));
55
55
  vec3 planeOrigin = posLeft;
56
56
 
57
- ${S(j.hasCap,"if(prev.z > posLeft.z) {\n vec2 diff = posLeft.xy - posRight.xy;\n planeOrigin.xy += perpendicular(diff) / 2.0;\n }")};
57
+ ${y(j.hasCap,"if(prev.z > posLeft.z) {\n vec2 diff = posLeft.xy - posRight.xy;\n planeOrigin.xy += perpendicular(diff) / 2.0;\n }")};
58
58
 
59
59
  // Move the plane towards the camera by a margin dependent on the line width (approximated in world space). This tolerance corrects for the
60
60
  // non-planarity in most cases, but sharp joins can place the prev vertices at arbitrary positions so markers can still clip.
@@ -73,26 +73,26 @@ return abs(cos) > 0.001 && t > 0.0;
73
73
  displacedPos *= minDepth / length(displacedPos);
74
74
  return vec4(displacedPos.xyz, 1.0);
75
75
  }
76
- `)),m(O),L.include(c),O.main.add(w`
76
+ `)),m(F),L.include(c),F.main.add(w`
77
77
  // Check for special value of uv0.y which is used by the Renderer when graphics
78
78
  // are removed before the VBO is recompacted. If this is the case, then we just
79
79
  // project outside of clip space.
80
80
  if (uv0.y == 0.0) {
81
81
  // Project out of clip space
82
- gl_Position = ${s};
82
+ gl_Position = ${n};
83
83
  }
84
84
  else {
85
85
  vec4 pos = view * vec4(position, 1.0);
86
86
  vec4 prev = view * vec4(position + previousDelta.xyz * previousDelta.w, 1.0);
87
87
 
88
- float lineWidth = getLineWidth(${S(M,"pos.xyz")});
88
+ float lineWidth = getLineWidth(${y(D,"pos.xyz")});
89
89
  float screenMarkerSize = getScreenMarkerSize(lineWidth);
90
90
 
91
91
  clip(pos, prev);
92
92
 
93
- ${$?w`${S(j.hideOnShortSegments,w`
93
+ ${M?w`${y(j.hideOnShortSegments,w`
94
94
  if (areWorldMarkersHidden(pos.xyz, prev.xyz)) {
95
- gl_Position = ${s};
95
+ gl_Position = ${n};
96
96
  return;
97
97
  }`)}
98
98
  pos.xyz = displace(pos.xyz, prev.xyz, getWorldMarkerSize(pos.xyz));
@@ -102,7 +102,7 @@ return abs(cos) > 0.001 && t > 0.0;
102
102
  vec4 displacedPosScreen = posScreen;
103
103
 
104
104
  displacedPosScreen.xy = displace(posScreen.xy, prevScreen.xy, screenMarkerSize);
105
- ${S(W,w`
105
+ ${y($,w`
106
106
  vec2 displacementDirU = perpendicular(normalizedSegment(posScreen.xy, prevScreen.xy));
107
107
 
108
108
  // We need three points of the ribbon line in camera space to calculate the plane it lies in
@@ -117,8 +117,8 @@ return abs(cos) > 0.001 && t > 0.0;
117
117
 
118
118
  // Convert texture coordinate into [0,1]
119
119
  vUV = (uv0 + 1.0) / 2.0;
120
- ${S(!$,"vUV = noPerspectiveWrite(vUV, displacedPosScreen.w);")}
121
- ${S(D,"vLineWidth = noPerspectiveWrite(lineWidth, displacedPosScreen.w);")}
120
+ ${y(!M,"vUV = noPerspectiveWrite(vUV, displacedPosScreen.w);")}
121
+ ${y(k,"vLineWidth = noPerspectiveWrite(lineWidth, displacedPosScreen.w);")}
122
122
 
123
123
  vSize = screenMarkerSize;
124
124
  vColor = getColor();
@@ -127,13 +127,13 @@ return abs(cos) > 0.001 && t > 0.0;
127
127
  vpos = pos.xyz;
128
128
 
129
129
  gl_Position = displacedPosScreen;
130
- }`),U.include(o,j),L.include(P,j),U.include(l),U.include(b),U.uniforms.add(new g("intrinsicColor",({color:e})=>e),new x("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(w`float markerAlpha(vec2 samplePos) {
130
+ }`),W.include(t,j),L.include(z,j),W.include(l),W.include(S),W.uniforms.add(new f("intrinsicColor",({color:e})=>e),new x("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(w`float markerAlpha(vec2 samplePos) {
131
131
  samplePos += vec2(0.5, -0.5) * texelSize;
132
132
  float sdf = texture(tex, samplePos).r;
133
133
  float pixelDistance = sdf * vSize;
134
134
  pixelDistance -= 0.5;
135
135
  return clamp(0.5 - pixelDistance, 0.0, 1.0);
136
- }`),D&&(L.include(p),U.constants.add("relativeMarkerSize","float",r/e).constants.add("relativeTipLineWidth","float",i).code.add(w`
136
+ }`),k&&(L.include(p),W.constants.add("relativeMarkerSize","float",r/e).constants.add("relativeTipLineWidth","float",i).code.add(w`
137
137
  float tipAlpha(vec2 samplePos) {
138
138
  // Convert coordinates s.t. they are in pixels and relative to the tip of an arrow marker
139
139
  samplePos -= vec2(0.5, 0.5 + 0.5 * relativeMarkerSize);
@@ -142,18 +142,18 @@ return clamp(0.5 - pixelDistance, 0.0, 1.0);
142
142
  float halfMarkerSize = 0.5 * relativeMarkerSize * vSize;
143
143
  float halfTipLineWidth = 0.5 * max(1.0, relativeTipLineWidth * noPerspectiveRead(vLineWidth));
144
144
 
145
- ${S($,"halfTipLineWidth *= fwidth(samplePos.y);")}
145
+ ${y(M,"halfTipLineWidth *= fwidth(samplePos.y);")}
146
146
 
147
147
  float distance = max(abs(samplePos.x) - halfMarkerSize, abs(samplePos.y) - halfTipLineWidth);
148
148
  return clamp(0.5 - distance, 0.0, 1.0);
149
149
  }
150
- `)),L.include(a,j),L.include(p),U.main.add(w`
150
+ `)),L.include(a,j),L.include(p),W.main.add(w`
151
151
  discardBySlice(vpos);
152
152
 
153
153
  vec4 finalColor = intrinsicColor * vColor;
154
154
 
155
155
  // Cancel out perspective correct interpolation if in screen space or draped
156
- vec2 samplePos = ${S(!$,"noPerspectiveRead(vUV)","vUV")};
157
- finalColor.a *= ${D?"max(markerAlpha(samplePos), tipAlpha(samplePos))":"markerAlpha(samplePos)"};
156
+ vec2 samplePos = ${y(!M,"noPerspectiveRead(vUV)","vUV")};
157
+ finalColor.a *= ${k?"max(markerAlpha(samplePos), tipAlpha(samplePos))":"markerAlpha(samplePos)"};
158
158
  if(finalColor.a < alphaCutoff) discard; // We also want to discard in the opaque color pass
159
159
  outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),L}const L=Object.freeze(Object.defineProperty({__proto__:null,build:j},Symbol.toStringTag,{value:"Module"}));export{L,j as b};
@@ -1,5 +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{ObjectAndLayerIdColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as d,NoPerspectiveRead as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as p,addPixelRatio as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as D,If as u}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as L}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as b}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as w}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as y}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as P}from"../views/webgl/ShaderBuilder.js";const C=1;function z(C){const z=new P,{attributes:j,varyings:F,vertex:W,fragment:R}=z,{applyMarkerOffset:A,draped:I,output:T,capType:V,stippleEnabled:E,falloffEnabled:N,roundJoins:O,wireframe:J,innerColorEnabled:_,hasAnimation:M,hasScreenSizePerspective:U,worldSizedImagePattern:$}=C,B=y().createBuilder(z,C);W.inputs.add("position",()=>B.getTextureAttribute("position")),R.include(a),z.include(t,C),z.include(n,C),z.include(i,C),z.include(b,C);const H=A&&!I;H&&(W.uniforms.add(new S("markerScale",e=>e.markerScale)),z.include(o,{space:2,hasScreenSizePerspective:U})),p(W,C),W.uniforms.add(new x("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new v("nearFar",e=>e.camera.nearFar),new S("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new f("viewport",e=>e.camera.fullViewport)),W.constants.add("LARGE_HALF_FLOAT","float",65500),W.constants.add("EPS","float",.001),W.constants.add("NUM_JOIN_SUBDIVISIONS","float",C.numJoinSubdivisions),j.add("textureElementIndex","uint"),j.add("lineParameters","vec2"),j.add("u0","float"),F.add("vColor","vec4"),F.add("vpos","vec3",{invariant:!0}),F.add("vLineDistance","float"),F.add("vLineWidth","float"),E||(F.add("vIsInsideJoin","int"),F.add("vStretchFactor","float"),F.add("vJoinCenterLineSDFs","vec2"),F.add("vSubdivisionFactor","float"));const k=E;k&&F.add("vLineSizeInv","float");const G=2===V,X=E&&G,Y=N||X;Y&&F.add("vLineDistanceNorm","float"),G&&(F.add("vSegmentSDF","float"),F.add("vReverseSegmentSDF","float")),W.code.add(D`vec3 perpendicular(vec3 v) {
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{LineStipple as i,computePixelSize as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as l,NoPerspectiveRead as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as c,addPixelRatio as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as S,If as u}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as x}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as L}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as b}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as w}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as y}from"../views/webgl/ShaderBuilder.js";const C=1;function P(C){const P=new y,{attributes:z,varyings:F,vertex:j,fragment:A}=P,{applyMarkerOffset:W,draped:I,output:R,capType:V,stippleEnabled:T,falloffEnabled:O,roundJoins:E,wireframe:N,innerColorEnabled:J,hasAnimation:_,hasScreenSizePerspective:M,worldSizedImagePattern:$}=C,U=w(C).createBuilder(P,C);j.inputs.add("position",()=>U.getTextureAttribute("position")),C.hasVVSize?j.inputs.add("sizeFeatureAttribute",()=>U.getTextureAttribute("sizeFeatureAttribute")):j.inputs.add("size",()=>U.getTextureAttribute("size")),C.hasVVOpacity&&j.inputs.add("opacityFeatureAttribute",()=>U.getTextureAttribute("opacityFeatureAttribute")),C.hasVVColor?j.inputs.add("colorFeatureAttribute",()=>U.getTextureAttribute("colorFeatureAttribute")):j.inputs.add("color",()=>U.getTextureAttribute("color")),A.include(o),P.include(t,C),P.include(i,C);const B={animation:C.animation,hasAnimation:C.hasAnimation,timeStampsExpr:U.getTextureAttribute("timeStamps")};P.include(L,B),11===R?(P.varyings.add("objectAndLayerIdColorVarying","vec4"),j.code.add(S`
3
+ vec4 getOlidColor() {
4
+ return ${U.getTextureAttribute("olidColor")};
5
+ }
6
+
7
+ void forwardObjectAndLayerIdColor() {
8
+ objectAndLayerIdColorVarying = getOlidColor();
9
+ }
10
+ `),A.code.add(S`void outputObjectAndLayerIdColor() {
11
+ fragColor = objectAndLayerIdColorVarying;
12
+ }`)):(j.code.add(S`void forwardObjectAndLayerIdColor() {}`),A.code.add(S`void outputObjectAndLayerIdColor() {}`));const H=W&&!I;H&&(j.uniforms.add(new h("markerScale",e=>e.markerScale)),P.include(r,{space:2,hasScreenSizePerspective:M})),c(j,C),j.uniforms.add(new D("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new m("nearFar",e=>e.camera.nearFar),new h("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new v("viewport",e=>e.camera.fullViewport)),j.constants.add("LARGE_HALF_FLOAT","float",65500),j.constants.add("EPS","float",.001),j.constants.add("NUM_JOIN_SUBDIVISIONS","float",C.numJoinSubdivisions),z.add("textureElementIndex","uint"),z.add("lineParameters","vec2"),F.add("vColor","vec4"),F.add("vpos","vec3",{invariant:!0}),F.add("vLineDistance","float"),F.add("vLineWidth","float"),T||(F.add("vIsInsideJoin","int"),F.add("vStretchFactor","float"),F.add("vJoinCenterLineSDFs","vec2"),F.add("vSubdivisionFactor","float"));const k=T;k&&F.add("vLineSizeInv","float");const G=2===V,X=T&&G,Y=O||X;Y&&F.add("vLineDistanceNorm","float"),G&&(F.add("vSegmentSDF","float"),F.add("vReverseSegmentSDF","float")),j.code.add(S`vec3 perpendicular(vec3 v) {
3
13
  return vec3(v.y, -v.x, 0.0);
4
14
  }
5
15
  float interp(float ncp, vec4 a, vec4 b) {
@@ -10,12 +20,12 @@ float s = sin(a);
10
20
  float c = cos(a);
11
21
  mat2 m = mat2(c, -s, s, c);
12
22
  return vec3(m * v.xy, v.z);
13
- }`),W.code.add(D`vec4 projectAndScale(vec4 pos) {
23
+ }`),j.code.add(S`vec4 projectAndScale(vec4 pos) {
14
24
  vec4 posNdc = proj * pos;
15
25
  posNdc.xy *= viewport.zw / posNdc.w;
16
26
  posNdc.z /= posNdc.w;
17
27
  return posNdc;
18
- }`),W.code.add(D`void clip(
28
+ }`),j.code.add(S`void clip(
19
29
  inout vec4 pos,
20
30
  inout vec4 prev,
21
31
  inout vec4 next,
@@ -46,20 +56,21 @@ if (next.z > -nearFar[0]) {
46
56
  next = mix(next, pos, interp(vnp, next, pos));
47
57
  }
48
58
  }
49
- }`),m(W),W.constants.add("aaWidth","float",E?0:1),W.main.add(D`
50
- vec3 position = ${B.getTextureAttribute("position")};
59
+ }`),p(j),j.constants.add("aaWidth","float",T?0:1),j.main.add(S`
60
+ vec3 position = ${U.getTextureAttribute("position")};
61
+ float u0 = ${U.getTextureAttribute("u0")};
51
62
 
52
63
  // unpack values from vertex type
53
64
  bool isStartVertex = abs(abs(lineParameters.y) - 3.0) == 1.0;
54
- vec3 prevPosition = ${B.getTextureAttribute("position",-1)};
55
- vec3 nextPosition = ${B.getTextureAttribute("position",1)};
65
+ vec3 prevPosition = ${U.getTextureAttribute("position",-1)};
66
+ vec3 nextPosition = ${U.getTextureAttribute("position",1)};
56
67
 
57
68
  float coverage = 1.0;
58
69
 
59
70
  // Check for special value of lineParameters.y which is used by the Renderer when graphics are removed before the
60
71
  // VBO is recompacted. If this is the case, then we just project outside of clip space.
61
72
  if (lineParameters.y == 0.0) {
62
- gl_Position = ${s};
73
+ gl_Position = ${a};
63
74
  }
64
75
  else {
65
76
  vec4 pos = view * vec4(position, 1.0);
@@ -67,11 +78,11 @@ next = mix(next, pos, interp(vnp, next, pos));
67
78
  vec4 next = view * vec4(nextPosition, 1.0);
68
79
 
69
80
  bool isJoin = abs(lineParameters.y) < 3.0;
70
- `),H&&W.main.add(D`vec4 other = isStartVertex ? next : prev;
81
+ `),H&&j.main.add(S`vec4 other = isStartVertex ? next : prev;
71
82
  bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
72
83
  if (!isJoin && !markersHidden) {
73
84
  pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
74
- }`),z.include(d),W.main.add(D`
85
+ }`),P.include(l),j.main.add(S`
75
86
  clip(pos, prev, next, isStartVertex);
76
87
 
77
88
  vec3 clippedPos = pos.xyz;
@@ -87,18 +98,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
87
98
  float leftLen = length(left);
88
99
  float rightLen = length(right);
89
100
 
90
- float lineSize = getSize(${u(U,"clippedPos")});
91
- ${u(E&&U,"float patternLineSize = getSize(clippedCenter);")}
92
- ${u(E&&!U,"float patternLineSize = lineSize;")}
101
+ float lineSize = getSize(${u(M,"clippedPos")});
102
+ ${u(T&&M,"float patternLineSize = getSize(clippedCenter);")}
103
+ ${u(T&&!M,"float patternLineSize = lineSize;")}
93
104
 
94
- ${u($,D`
105
+ ${u($,S`
95
106
  lineSize += aaWidth;
96
107
  float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
97
108
  if (lineWidth < 1.0) {
98
109
  coverage = lineWidth;
99
110
  lineWidth = 1.0;
100
111
  }
101
- `,D`
112
+ `,S`
102
113
  if (lineSize < 1.0) {
103
114
  coverage = lineSize; // convert sub-pixel coverage to alpha
104
115
  lineSize = 1.0;
@@ -109,23 +120,23 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
109
120
  `)}
110
121
 
111
122
  vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
112
- ${k?D`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
113
- `);(E||G)&&W.main.add(D`
123
+ ${k?S`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
124
+ `);(T||G)&&j.main.add(S`
114
125
  float isEndVertex = float(!isStartVertex);
115
126
  vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
116
127
  vec3 segment = mix(right, left, isEndVertex);
117
- ${G?D`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
118
- `),W.main.add(D`left = (leftLen > EPS) ? left/leftLen : vec3(0.0, 0.0, 0.0);
128
+ ${G?S`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
129
+ `),j.main.add(S`left = (leftLen > EPS) ? left/leftLen : vec3(0.0, 0.0, 0.0);
119
130
  right = (rightLen > EPS) ? right/rightLen : vec3(0.0, 0.0, 0.0);
120
131
  vec3 segmentDirection = isStartVertex ? right : left;
121
132
  vec3 capDisplacementDir = vec3(0.0, 0.0, 0.0);
122
133
  vec3 joinDisplacementDir = vec3(0.0, 0.0, 0.0);
123
134
  float displacementLen = lineWidth;
124
135
  float miterDisplacementLen = lineWidth;
125
- float innerDisplacementLen = lineWidth;`),E||W.main.add(D`vIsInsideJoin = 0;
136
+ float innerDisplacementLen = lineWidth;`),T||j.main.add(S`vIsInsideJoin = 0;
126
137
  vStretchFactor = 1.0;
127
138
  vSubdivisionFactor = 0.0;
128
- vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);`),W.main.add(D`float subdivisionFactor = 0.0;
139
+ vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);`),j.main.add(S`float subdivisionFactor = 0.0;
129
140
  bool isOutside = false;
130
141
  if (isJoin) {
131
142
  isOutside = (left.x * right.y - left.y * right.x) * lineParameters.y > 0.0;
@@ -140,7 +151,7 @@ if (!isOutside) {
140
151
  displacementLen = innerDisplacementLen;
141
152
  }
142
153
  }
143
- subdivisionFactor = lineParameters.x;`),E||W.main.add(D`if(subdivisionFactor > 0.0) {
154
+ subdivisionFactor = lineParameters.x;`),T||j.main.add(S`if(subdivisionFactor > 0.0) {
144
155
  vIsInsideJoin = 1;
145
156
  }
146
157
  vSubdivisionFactor = isOutside ? subdivisionFactor : 0.5;
@@ -158,23 +169,23 @@ float bevelTriangleHeight = innerDisplacementLen + lineWidth * cos(theta * 0.5);
158
169
  float triangleHeight = NUM_JOIN_SUBDIVISIONS > 0.0 ? subdividedTriangleHeight : bevelTriangleHeight;
159
170
  vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0), pos.w);
160
171
  }
161
- }`),W.main.add(D`if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),O?W.main.add(D`
172
+ }`),j.main.add(S`if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),E?j.main.add(S`
162
173
  vec3 startDir = leftLen < EPS ? right : left;
163
174
  startDir = perpendicular(startDir);
164
175
 
165
176
  vec3 endDir = rightLen < EPS ? left : right;
166
177
  endDir = perpendicular(endDir);
167
178
 
168
- float factor = ${E?D`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:D`subdivisionFactor`};
179
+ float factor = ${T?S`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:S`subdivisionFactor`};
169
180
 
170
181
  float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
171
182
  joinDisplacementDir = rotateZ(startDir, -sign(lineParameters.y) * factor * rotationAngle);
172
- `):W.main.add(D`
183
+ `):j.main.add(S`
173
184
  vec3 startDir = perpendicular(leftLen < EPS ? right : left);
174
185
  vec3 endDir = perpendicular(rightLen < EPS ? left : right);
175
186
 
176
- ${u(E,D`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,D`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
177
- `);const Z=0!==V;return W.main.add(D`
187
+ ${u(T,S`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,S`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
188
+ `);const Z=0!==V;return j.main.add(S`
178
189
  displacementLen = lineWidth;
179
190
  }
180
191
  } else {
@@ -182,9 +193,9 @@ vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0)
182
193
  joinDisplacementDir = isStartVertex ? right : left;
183
194
  joinDisplacementDir = perpendicular(joinDisplacementDir);
184
195
 
185
- ${Z?D`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
196
+ ${Z?S`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
186
197
  }
187
- `),W.main.add(D`
198
+ `),j.main.add(S`
188
199
  // Displacement (in pixels) caused by join/or cap
189
200
  vec2 dposXY = (joinDisplacementDir.xy * sign(lineParameters.y) + capDisplacementDir.xy) * displacementLen;
190
201
 
@@ -200,10 +211,10 @@ vStretchFactor = noPerspectiveWrite(max(triangleHeight / (2.0 * lineWidth), 1.0)
200
211
  float lineDistNorm = noPerspectiveWrite(sign(lineParameters.y), pos.w);
201
212
 
202
213
  vLineDistance = lineWidth * lineDistNorm;
203
- ${Y?D`vLineDistanceNorm = lineDistNorm;`:""}
214
+ ${Y?S`vLineDistanceNorm = lineDistNorm;`:""}
204
215
 
205
216
  pos.xyz += dpos;
206
- `),E||W.main.add(D`if (isJoin) {
217
+ `),T||j.main.add(S`if (isJoin) {
207
218
  vec2 joinCenterToVertex = dposXY;
208
219
  vec2 leftCenterlineDir = left.xy;
209
220
  vec2 rightCenterlineDir = right.xy;
@@ -218,19 +229,19 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
218
229
  ),
219
230
  pos.w
220
231
  );
221
- }`),G&&W.main.add(D`vec2 segmentDir = normalize(segment.xy);
232
+ }`),G&&j.main.add(S`vec2 segmentDir = normalize(segment.xy);
222
233
  vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
223
- vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),E&&(I?W.uniforms.add(new h("worldToScreenRatio",e=>1/e.screenToPCSRatio)):W.main.add(D`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
224
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),W.main.add(D`float segmentLengthScreenDouble = length(segment.xy);
234
+ vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),T&&(I?j.uniforms.add(new f("worldToScreenRatio",e=>1/e.screenToPCSRatio)):j.main.add(S`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
235
+ float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),j.main.add(S`float segmentLengthScreenDouble = length(segment.xy);
225
236
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
226
237
  float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
227
238
  float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
228
- vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),I?W.main.add(D`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
229
- float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):W.main.add(D`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
230
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),W.uniforms.add(new S("stipplePatternPixelSize",e=>r(e))),W.main.add(D`
239
+ vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;`),I?j.main.add(S`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
240
+ float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):j.main.add(S`float startPseudoScreen = mix(u0, u0 - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
241
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),j.uniforms.add(new h("stipplePatternPixelSize",e=>n(e))),j.main.add(S`
231
242
  float patternLength = patternLineSize * stipplePatternPixelSize;
232
243
 
233
- ${u($,D`
244
+ ${u($,S`
234
245
  float uu = mix(u0, u0 - segmentLengthRender, isEndVertex);
235
246
  vStippleDistanceLimits = vec2(uu, uu + segmentLengthRender);
236
247
  vStipplePatternStretch = 1.0;
@@ -238,7 +249,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
238
249
  // The v-coordinate used in case of an image pattern.
239
250
  bool isLeft = sign(lineParameters.y) < 0.0;
240
251
  vStippleV = isLeft ? 0.0 : 1.0;
241
- `,D`
252
+ `,S`
242
253
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
243
254
  // fragment shader
244
255
  vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
@@ -269,7 +280,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
269
280
  isStartVertex ?
270
281
  vec2(-1e34, vStippleDistanceLimits.y) :
271
282
  vec2(vStippleDistanceLimits.x, 1e34);
272
- `)),W.main.add(D`
283
+ `)),j.main.add(S`
273
284
  // Convert back into NDC
274
285
  pos.xy = (pos.xy / viewport.zw) * pos.w;
275
286
  pos.z = pos.z * pos.w;
@@ -277,35 +288,35 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
277
288
  vColor = getColor();
278
289
  vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
279
290
 
280
- ${J&&!I?"pos.z -= EPS * pos.w;":""}
291
+ ${N&&!I?"pos.z -= EPS * pos.w;":""}
281
292
 
282
293
  // transform final position to camera space for slicing
283
294
  vpos = (inverseProjectionMatrix * pos).xyz;
284
295
  gl_Position = pos;
285
296
  forwardObjectAndLayerIdColor();
286
- }`),z.fragment.include(e,C),z.include(w,C),R.include(l),R.main.add(D`discardBySlice(vpos);`),z.include(c),R.include(L),R.main.add(D`
297
+ }`),P.fragment.include(e,C),P.include(b,C),A.include(s),A.main.add(S`discardBySlice(vpos);`),P.include(d),A.include(x),A.main.add(S`
287
298
  float lineWidth = noPerspectiveRead(vLineWidth);
288
299
  float lineDistance = noPerspectiveRead(vLineDistance);
289
- ${u(Y,D`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
290
- `),J?R.main.add(D`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(G&&R.main.add(D`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
300
+ ${u(Y,S`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
301
+ `),N?A.main.add(S`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(G&&A.main.add(S`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
291
302
  vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
292
303
  float fragmentRadius = length(fragmentPosition);
293
304
  float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
294
305
  float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
295
306
  if (capCoverage < alphaCutoff) {
296
307
  discard;
297
- }`),X?R.main.add(D`vec2 stipplePosition = vec2(
308
+ }`),X?A.main.add(S`vec2 stipplePosition = vec2(
298
309
  min(getStippleSDF() * 2.0 - 1.0, 0.0),
299
310
  lineDistanceNorm
300
311
  );
301
312
  float stippleRadius = length(stipplePosition * lineWidth);
302
313
  float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
303
314
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
304
- float stippleAlpha = step(alphaCutoff, stippleCoverage);`):R.main.add(D`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==T&&R.main.add(D`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),z.include(c),R.uniforms.add(new g("intrinsicColor",e=>e.color)).main.add(D`vec4 color = intrinsicColor * vColor;
305
- color.a = noPerspectiveRead(color.a);`),_&&R.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new S("innerWidth",(e,i)=>e.innerWidth*i.camera.pixelRatio)).main.add(D`float distToInner = abs(lineDistance) - innerWidth;
315
+ float stippleAlpha = step(alphaCutoff, stippleCoverage);`):A.main.add(S`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==R&&A.main.add(S`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),P.include(d),A.uniforms.add(new g("intrinsicColor",e=>e.color)).main.add(S`vec4 color = intrinsicColor * vColor;
316
+ color.a = noPerspectiveRead(color.a);`),J&&A.uniforms.add(new g("innerColor",e=>e.innerColor??e.color),new h("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(S`float distToInner = abs(lineDistance) - innerWidth;
306
317
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
307
318
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
308
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),R.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),N&&(R.uniforms.add(new S("falloff",e=>e.falloff)),R.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),E||R.main.add(D`float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
319
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),A.main.add(S`vec4 finalColor = blendStipple(color, stippleAlpha);`),O&&(A.uniforms.add(new h("falloff",e=>e.falloff)),A.main.add(S`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),T||A.main.add(S`float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
309
320
  float featherWidth = 2.0;
310
321
  float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
311
322
  float straightFeatherStartDistance = max(lineWidth - featherWidth, 0.0);
@@ -315,4 +326,4 @@ vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
315
326
  float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
316
327
  float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
317
328
  feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
318
- finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),M&&R.main.add("finalColor = animate(finalColor);")),R.main.add(D`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),z}const j=Object.freeze(Object.defineProperty({__proto__:null,build:z,ribbonlineNumRoundJoinSubdivisions:C},Symbol.toStringTag,{value:"Module"}));export{j as R,z as b,C as r};
329
+ finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);`),_&&A.main.add("finalColor = animate(finalColor);")),A.main.add(S`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),P}const z=Object.freeze(Object.defineProperty({__proto__:null,build:P,ribbonlineNumRoundJoinSubdivisions:C},Symbol.toStringTag,{value:"Module"}));export{z as R,P as b,C as r};