@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
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[563],{15142(t,e,s){s.d(e,{A:()=>a});var r=s(4576),i=s(21818);const n=(t,e,s,r)=>{let i=e,n=e;const h=s>>>1,o=t[i-1];for(;n<=h;){n=i<<1,n<s&&r(t[n-1],t[n])<0&&++n;const e=t[n-1];if(r(e,o)<=0)break;t[i-1]=e,i=n}t[i-1]=o},h=(t,e)=>t<e?-1:t>e?1:0;function o(t,e,s,r){void 0===e&&(e=0),void 0===s&&(s=t.length),void 0===r&&(r=h);for(let i=s>>>1;i>e;i--)n(t,i,s,r);const i=e+1;for(let h=s-1;h>e;h--){const s=t[e];t[e]=t[h],t[h]=s,n(t,i,h,r)}}function*l(t,e,s,r){void 0===e&&(e=0),void 0===s&&(s=t.length),void 0===r&&(r=h);for(let i=s>>>1;i>e;i--)n(t,i,s,r),yield;const i=e+1;for(let h=s-1;h>e;h--){const s=t[e];t[e]=t[h],t[h]=s,n(t,i,h,r),yield}}class a{constructor(t){this.data=[],this._length=0,this._allocator=void 0,this._deallocator=()=>null,this._shrink=()=>{},this._hint=new r.vW,t&&(t.initialSize&&(this.data=new Array(t.initialSize)),t.allocator&&(this._allocator=t.allocator),void 0!==t.deallocator&&(this._deallocator=t.deallocator),t.shrink&&(this._shrink=()=>c(this)))}toArray(){return this.data.slice(0,this.length)}filter(t){const e=new Array;for(let s=0;s<this._length;s++){const r=this.data[s];t(r)&&e.push(r)}return e}at(t){if((t=Math.trunc(t)||0)<0&&(t+=this._length),!(t<0||t>=this._length))return this.data[t]}includes(t,e){const s=this.data.indexOf(t,e);return-1!==s&&s<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 e=t;e<this._length;++e)this.data[e]=this._deallocator(this.data[e]);this._length=t,this._shrink()}}clear(){this.length=0}prune(){this.clear(),this.data=[]}push(t){this.data[this._length++]=t}pushArray(t,e=t.length){for(let s=0;s<e;s++)this.data[this._length++]=t[s]}pushAll(t){for(const e of t)this.data[this._length++]=e}fill(t,e){for(let s=0;s<e;s++)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++,c(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 e=(0,r.qh)(this.data,(0,i.z)(t),this.length,this._hint);if(-1!==e)return this.data.splice(e,1),this.length=this.length-1,t}removeUnordered(t){return this.removeUnorderedIndex((0,r.qh)(this.data,(0,i.z)(t),this.length,this._hint))}removeUnorderedIndex(t){if(!(t>=this.length||t<0))return this.swapElements(t,this.length-1),this.pop()}removeUnorderedMany(t,e=t.length,s){this.length=(0,r.mW)(this.data,t,this.length,e,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,e){if(t>=this.length||e>=this.length||t===e)return;const s=this.data[t];this.data[t]=this.data[e],this.data[e]=s}sort(t){o(this.data,0,this.length,t)}iterableSort(t){return l(this.data,0,this.length,t)}some(t,e){for(let s=0;s<this.length;++s)if(t.call(e,this.data[s],s,this.data))return!0;return!1}find(t,e){const{data:s,length:r}=this;for(let i=0;i<r;++i)if(t.call(e,s[i]))return s[i]}filterInPlace(t,e){let s=0;for(let r=0;r<this._length;++r){const i=this.data[r];t.call(e,i,r,this.data)&&(this.data[r]=this.data[s],this.data[s]=i,s++)}if(this._deallocator)for(let t=s;t<this._length;t++)this.data[t]=this._deallocator(this.data[t]);return this._length=s,this._shrink(),this}forAll(t,e){const{data:s,length:r}=this;for(let i=0;i<r;++i)t.call(e,s[i],i,s)}forEach(t,e){this.data.slice(0,this.length).forEach(t,e)}map(t,e){const s=new Array(this.length);for(let r=0;r<this.length;++r)s[r]=t.call(e,this.data[r],r,this.data);return s}reduce(t,e){let s=e;for(let e=0;e<this.length;++e)s=t(s,this.data[e],e,this.data);return s}has(t){const e=this.length,s=this.data;for(let r=0;r<e;++r)if(s[r]===t)return!0;return!1}*[Symbol.iterator](){for(let t=0;t<this.length;++t)yield this.data[t]}}function c(t){t.data.length>1.5*t.length&&(t.data.length=Math.floor(1.1*t.length))}},9775(t,e,s){s.d(e,{A:()=>n});var r=s(62788),i=s(95488);class n{constructor(t=t=>t.values().next().value){this._peeker=t,this._observable=new i.I,this._items=new Set}get length(){return(0,r.gc)(this._observable),this._items.size}clear(){0!==this.length&&(this._items.clear(),this._observable.notify())}last(){if(0===this.length)return;let t;for(t of this._items);return t}peek(){if(0!==this.length)return this._peeker(this._items)}push(t){this.contains(t)||(this._items.add(t),this._observable.notify())}contains(t){return(0,r.gc)(this._observable),this._items.has(t)}pop(){if(0===this.length)return;const t=this.peek();return this._items.delete(t),this._observable.notify(),t}popLast(){if(0===this.length)return;const t=this.last();return this._items.delete(t),this._observable.notify(),t}remove(t){this.contains(t)&&(this._items.delete(t),this._observable.notify())}filter(t){const e=this.length;return this._items.forEach(e=>{t(e)||this._items.delete(e)}),e!==this._items.size&&this._observable.notify(),this}*[Symbol.iterator](){(0,r.gc)(this._observable),yield*this._items}}},563(t,e,s){s.d(e,{QueueProcessor:()=>a,SharedConcurrency:()=>u});var r=s(97768),i=s(17676),n=s(9775),h=s(32587),o=s(76030),l=s(44794);class a{constructor(t){this._schedule=null,this._deferreds=new h.A,this._controllers=new h.A,this._processingItems=new h.A,this._pausedSignal=(0,l.v)(!1),this.process=t.process,this.concurrency=t.concurrency,this.sharedConcurrency=t.sharedConcurrency??d,this._queue=new n.A(t.peeker)}destroy(){this.clear(),this._schedule=(0,r.xt)(this._schedule)}get updating(){return this.running}get length(){return this._processingItems.size+this._queue.length}get running(){return!this._pausedSignal.value&&this._queue.length>0&&!this.full}get full(){return this._processingItems.size>=this.concurrency||this.sharedConcurrency.full}abort(t){const e=this._controllers.get(t);e?.abort()}clear(){this._queue.clear();const t=Array.from(this._controllers.values());this._controllers.clear(),t.forEach(t=>t.abort()),this.sharedConcurrency.current.value-=this._processingItems.size,this._processingItems.clear(),this._cancelNext()}forEach(t){this._deferreds.forEach((e,s)=>t(s))}_get(t){const e=this._deferreds.get(t);return e?.promise}pause(){this._pausedSignal.value||(this._pausedSignal.value=!0,this._cancelNext())}push(t,e){const s=this._get(t);if(s)return s;const r=new AbortController,n=Promise.withResolvers(),h=e?(0,i.u7)(e,()=>r.abort()):null,o=(0,i.NY)(r.signal,()=>{const e=this._processingItems.get(t);e&&e.controller.abort(),l(),n.reject((0,i.NK)())}),l=()=>{o.remove(),h?.remove(),this._removeItem(t),this._queue.remove(t),this._scheduleNext()};return this._deferreds.set(t,n),this._controllers.set(t,r),n.promise.then(l,l),this._queue.push(t),this._scheduleNext(),n.promise}last(){return this._queue.last()}reset(){const t=Array.from(this._processingItems.values());this.sharedConcurrency.current.value-=this._processingItems.size,this._processingItems.clear();for(const e of t)this._queue.push(e.item),e.controller.abort();this._scheduleNext()}resume(){this._pausedSignal.value&&(this._pausedSignal.value=!1,this._scheduleNext())}takeAll(){const t=[];for(;this._queue.length;)t.push(this._queue.pop());return this.clear(),t}_removeItem(t){this._deferreds.delete(t),this._controllers.delete(t),this._processingItems.has(t)&&(this._processingItems.delete(t),this.sharedConcurrency.current.value-=1)}_scheduleNext(){this._pausedSignal.value||this._schedule||(this._schedule=(0,o._)(()=>{this._schedule=null,this._next()}))}_next(){for(;this._queue.length>0&&this._processingItems.size<this.concurrency&&!this.sharedConcurrency.full;)this._process(this._queue.pop())}_cancelNext(){this._schedule&&(this._schedule.remove(),this._schedule=null)}_processResult(t,e){this._canProcessFulfillment(t)&&(this._scheduleNext(),this._deferreds.get(t.item).resolve(e))}_processError(t,e){this._canProcessFulfillment(t)&&(this._scheduleNext(),this._deferreds.get(t.item).reject(e))}_canProcessFulfillment(t){return!!this._deferreds.get(t.item)&&this._processingItems.get(t.item)===t}_process(t){if(null==t)return;let e;const s=new AbortController,r=new c(t,s);this._processingItems.set(t,r),this.sharedConcurrency.current.value+=1;try{e=this.process(t,s.signal)}catch(t){this._processError(r,t)}(0,i.$X)(e)?(r.promise=e,e.then(t=>this._processResult(r,t),t=>this._processError(r,t))):this._processResult(r,e)}}class c{constructor(t,e){this.item=t,this.controller=e,this.promise=null}}class u{constructor(t){this.limit=t,this.current=(0,l.v)(0)}get full(){return this.current.value>=this.limit}}const d=new u(1/0)},32587(t,e,s){s.d(e,{A:()=>n});var r=s(62788),i=s(95488);class n{constructor(t){this._observable=new i.I,this._notifyPending=!1,this._batchDepth=0,this._map=new Map(t)}get size(){return(0,r.gc)(this._observable),this._map.size}batch(t){try{this._batchDepth++,t()}finally{this._batchDepth--,this._notifyPending&&0===this._batchDepth&&(this._notifyPending=!1,this._notify())}}clear(){this._map.size>0&&(this._map.clear(),this._notify())}delete(t){const e=this._map.delete(t);return e&&this._notify(),e}entries(){return(0,r.gc)(this._observable),this._map.entries()}forEach(t,e){(0,r.gc)(this._observable),this._map.forEach((s,r)=>t.call(e,s,r,this),e)}get(t){return(0,r.gc)(this._observable),this._map.get(t)}has(t){return(0,r.gc)(this._observable),this._map.has(t)}keys(){return(0,r.gc)(this._observable),this._map.keys()}set(t,e){return this._map.set(t,e),this._notify(),this}transformValues(t,e=this._map.keys()){this.batch(()=>{for(const s of e){if(!this._map.has(s))continue;const e=this._map.get(s),r=t(e,s);r!==e&&this.set(s,r)}})}values(){return(0,r.gc)(this._observable),this._map.values()}[Symbol.iterator](){return(0,r.gc)(this._observable),this._map[Symbol.iterator]()}[Symbol.dispose](){this._observable.destroy()}get[Symbol.toStringTag](){return this._map[Symbol.toStringTag]}_notify(){this._batchDepth>0?this._notifyPending=!0:this._observable.notify()}}},11406(t,e,s){s.d(e,{T:()=>n});var r=s(36563);class i{constructor(t,e){this._observers=t,this._observer=e}remove(){const{_observers:t,_observer:e}=this;if(t[t.length-1]===e)return void t.pop();const s=t.indexOf(this._observer);-1!==s&&t.splice(s,1)}}class n{constructor(){this._observers=null,this.destroyed=!1}observe(t){if(this.destroyed||t.destroyed)return h;null==this._observers&&(this._observers=[]);const e=this._observers;let s=!1,r=!1;for(const i of e)if(i.destroyed)r=!0;else if(i===t){s=!0;break}return s||(e.push(t),r&&this._removeDestroyedObservers()),new i(e,t)}_removeDestroyedObservers(){const t=this._observers;if(!t)return;const e=t.length;if(0===e)return;let s=0;for(let r=0;r<e;++r){for(;r+s<e&&t[r+s].destroyed;)++s;if(s>0){if(!(r+s<e))break;t[r]=t[r+s]}}t.length=e-s}destroy(){if(this.destroyed)return;this.destroyed=!0;const t=this._observers;if(null!=t){for(const e of t)e.onCommitted();this._observers=null}}}const h=(0,r.hA)()},62788(t,e,s){s.d(e,{F_:()=>_,Xr:()=>v,a:()=>d,fE:()=>p,gc:()=>a}),s(44208);var r=s(53966),i=s(88620),n=s(47328);const h=new(s(67867).R),o=[];let l=h;function a(t){l.onAccessed(t)}let c=!1,u=!1;function d(t,e,s){if(c)return f(t,e,s);let i;if(u){l=t,o.push(t);try{i=e.call(s)}catch(t){throw r.A.getLogger("esri.core.accessorSupport.tracking").error(t),t}finally{g()}}else{l=t,o.push(t);try{i=e.call(s)}finally{g()}}return i}function _(t,e){return d(h,t,e)}function f(t,e,s){const i=c;let n;c=!0,l=t,o.push(t);try{n=e.call(s)}catch(t){u&&r.A.getLogger("esri.core.accessorSupport.tracking").error(t)}return g(),c=i,n}function g(){const t=o.length;if(t>1){const e=o.pop();l=o[t-2],e.onTrackingEnd()}else if(1===t){const t=o.pop();l=h,t.onTrackingEnd()}else l=h}function p(t,e){if(e.flags&n.i.DepTrackingInitialized)return;e.flags|=n.i.DepTrackingInitialized;const s=u;u=!1,e.flags&n.i.AutoTracked?f(e.trackingTarget,e.metadata.get,t):v(t,e),u=s}const m=[];function v(t,e){e.flags&n.i.ExplicitlyTracking||(e.flags|=n.i.ExplicitlyTracking,f(e.trackingTarget,()=>{const s=e.metadata.dependsOn||m;for(const e of s)if("string"!=typeof e||e.includes(".")){const s=(0,i.AH)(e);for(let e=0,r=t;e<s.length&&null!=r&&"object"==typeof r;++e)r=y(r,s[e],e!==s.length-1)}else y(t,e,!1)}),e.flags&=~n.i.ExplicitlyTracking)}function y(t,e,s){const r=e.endsWith("?")?e.slice(0,-1):e;if(null!=t.getItemAt||Array.isArray(t)){const e=parseInt(r,10);if(!isNaN(e))return Array.isArray(t)?t[e]:t.at(e)}const n=(0,i.oY)(t);if(n){const e=n.propertiesByName.get(r);e&&(a(e),p(t,e))}return s?t[r]:void 0}},47328(t,e,s){s.d(e,["i",0,{Dirty:1,Overridden:2,Computing:4,NonNullable:8,HasDefaultValue:16,DepTrackingInitialized:32,AutoTracked:64,ExplicitlyTracking:128}])},95488(t,e,s){s.d(e,{I:()=>i});var r=s(11406);class i extends r.T{notify(){const t=this._observers;if(t&&t.length>0){const e=t.slice();for(const t of e)t.onInvalidated(),t.onCommitted()}}}},67867(t,e,s){s.d(e,{R:()=>r});class r{constructor(t){this.accessed=void 0,this._handles=void 0,this._observer=t}destroy(){this.clear(),this.accessed=void 0,this._observer=void 0}onAccessed(t){null!=this._observer&&t!==this._observer&&(null==this.accessed&&(this.accessed=new Set),this.accessed.add(t))}onTrackingEnd(){null!=this._observer&&(this.clear(),null!=this.accessed&&(null==this._handles&&(this._handles=[]),this.accessed.forEach(t=>{this._handles.push(t.observe(this._observer))}),this.accessed.clear()))}clear(){if(null!=this._handles)for(;this._handles.length;)this._handles.pop().remove()}}},88620(t,e,s){s.d(e,{AH:()=>a,h1:()=>o,oY:()=>n,qg:()=>u,yh:()=>h});var r=s(36563),i=s(4718);function n(t){return t.__accessor__??null}function h(t,e){return null!=t?.metadata?.[e]}function o(t,e,s){return l(t,e,s?{policy:s,path:""}:null)}function l(t,e,s){return e?Object.keys(e).reduce((t,r)=>{const n=r;if("__proto__"===n)return t;let h=null,o="merge";if(s&&(h=s.path?`${s.path}.${r}`:r,o=s.policy(h)),"replace"===o)return t[n]=e[n],t;if("replace-arrays"===o&&Array.isArray(t[n]))return t[n]=e[n],t;if(void 0===t[n])return t[n]=(0,i.o8)(e[n]),t;let a=t[n],c=e[n];if(a===c)return t;if(Array.isArray(c)||Array.isArray(t))a=a?Array.isArray(a)?t[n]=a.slice():t[n]=[a]:t[n]=[],c&&(Array.isArray(c)||(c=[c]),c.forEach(t=>{a.includes(t)||a.push(t)}));else if(c&&"object"==typeof c)if(s){const e=s.path;s.path=h,t[n]=l(a,c,s),s.path=e}else t[n]=l(a,c,null);else t.hasOwnProperty(r)&&!e.hasOwnProperty(r)||(t[n]=c);return t},t||{}):t}function a(t){return Array.isArray(t)?t:t.split(".")}function c(t){return t.includes(",")?t.split(",").map(t=>t.trim()):[t.trim()]}function u(t,e,s,i){const n=function(t){if(Array.isArray(t)){const e=[];for(const s of t)e.push(...c(s));return e}return c(t)}(e);if(1!==n.length){const e=n.map(e=>i(t,e,s));return(0,r.vE)(e)}return i(t,n[0],s)}},26390(t,e,s){s.d(e,{d:()=>i});const r=[];function i(t){r.push(t),1===r.length&&queueMicrotask(()=>{const t=r.slice();r.length=0;for(const e of t)e()})}},76030(t,e,s){s.d(e,{_:()=>y,$m:()=>T,gh:()=>x,md:()=>S});var r=s(26390);function i(t,e,s,r,i){console.timeStamp(t,e,s,i,r)}class n{constructor(t,e=30){this.name=t,this._counter=0,this._samples=new Array(e)}push(t){null!=t&&(this._samples[++this._counter%this._samples.length]=t)}set(t){null!=t&&(this._samples[this._counter%this._samples.length]=t)}get median(){return this._samples.slice().sort((t,e)=>t-e)[Math.floor(this._samples.length/2)]}get average(){return this._samples.reduce((t,e)=>t+e,0)/this._samples.length}get last(){return this._samples[this._counter%this._samples.length]}}var h=s(15142),o=s(17676),l=s(78659);class a{constructor(t){this.phases=t,this.paused=!1,this.ticks=-1,this.removed=!1}}class c{constructor(t){this.callback=t,this.isActive=!0}remove(){this.isActive=!1}}let u=0;const d={time:(0,l.l5)(0),deltaTime:(0,l.l5)(0),elapsedFrameTime:(0,l.l5)(0),frameDuration:(0,l.l5)(0)},_=["prepare","preRender","render","postRender","update","finish"],f=[],g=new h.A;class p{constructor(t){this._task=t}remove(){this._task.removed=!0}pause(){this._task.paused=!0}resume(){this._task.paused=!1,m()}}function m(){null==b&&(u=performance.now(),b=requestAnimationFrame(A))}const v={frameTasks:g,willDispatch:!1,clearFrameTasks:function(t=!1){g.forAll(t=>{t.removed=!0}),t&&w()},dispatch:I,executeFrameTasks:function(t){const e=(0,l.l5)(t-u);u=t;const s=1e3/60,r=Math.max(0,e-s);d.time=t,d.frameDuration=(0,l.l5)(s-r);for(let s=0;s<_.length;s++){const r=performance.now(),n=_[s];g.forAll(r=>{r.paused||r.removed||(0===s&&r.ticks++,r.phases[n]&&(d.elapsedFrameTime=(0,l.l5)(performance.now()-t),d.deltaTime=0===r.ticks?(0,l.l5)(0):e,r.phases[n]?.call(r,d)))});const h=performance.now();E[s].push(h-r),i(n,r,h,"Maps SDK","Scheduling")}w();const n=performance.now();q.push(n-t),i("Animation Frame",t,n,"Maps SDK","Scheduling")},reschedule:function(){null!=b&&(cancelAnimationFrame(b),b=requestAnimationFrame(A))}};function y(t){const e=new c(t);return f.push(e),v.willDispatch||(v.willDispatch=!0,(0,r.d)(I)),e}let b=null;function A(){const t=performance.now();b=null;const e=g.some(t=>!t.paused&&!t.removed);b=e?requestAnimationFrame(A):null,v.executeFrameTasks(t)}const k=new h.A;function w(){g.forAll(t=>{t.removed&&k.push(t)}),g.removeUnorderedMany(k.data,k.length),k.clear()}function I(){for(;f.length;){const t=f.shift();t.isActive&&t.callback()}v.willDispatch=!1}function S(t=1,e){const s=Promise.withResolvers(),i=()=>{(0,o.G4)(e)?s.reject((0,o.NK)()):0===t?s.resolve():(--t,(0,r.d)(()=>i()))};return i(),s.promise}function x(){const t=Promise.withResolvers(),e=function(t){const e=new a(t);return g.push(e),m(),new p(e)}({postRender:()=>{e.remove(),y(()=>t.resolve())}});return t.promise}async function T(t){await function(t){return S(1,t)}(t),await new Promise(e=>requestAnimationFrame(()=>{t?.aborted||e()}))}const E=_.map(t=>new n(t)),q=new n("total")},44794(t,e,s){s.d(e,{v:()=>o});var r=s(4718),i=s(62788),n=s(95488);class h{constructor(t,e){this._observable=new n.I,this._value=t,this._equalityFunction=e}get value(){return(0,i.gc)(this._observable),this._value}set value(t){this._equalityFunction(t,this._value)||(this._value=t,this._observable.notify())}mutate(t){t(this._value),this._observable.notify()}}function o(t,e=r.gh){return new h(t,e)}},78659(t,e,s){function r(t){return t}function i(t){return 1e3*t}function n(t){return t}s.d(e,{Kp:()=>n,gr:()=>i,l5:()=>r})}}]);
File without changes
@@ -1,22 +1,37 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{EvaluateSceneLighting as e,addAmbientBoostFactor as a,addLightingGlobalFactor as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{NormalUtils as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{readShadowPass as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js";import{RgbNormalizedDepthEncoding as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbNormalizedDepthEncoding.glsl.js";import{Float3BindUniform as r}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as s,If as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{gaussianSplatFirstHitAlpha as d}from"../views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js";import{GaussianSplatPerspectivePass as c,GaussianSplatFading as h,gaussianSplatPerspectiveVertex as g}from"../views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js";import{getGaussianSplatAlphaCutoffValue as p}from"../views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";import{ShaderBuilder as m}from"../views/webgl/ShaderBuilder.js";function u(u){const{receiveShadows:v,spherical:f}=u,w=v&&u.preciseDepth,b=new m,{varyings:y,vertex:C,fragment:D,outputs:S}=b;y.add("vColor","vec4"),w&&y.add("shadowReceiverRay","vec3"),b.include(c,u),u.fadingEnabled&&C.include(h),C.uniforms.add(new r("cameraPosition",e=>e.camera.eye)),v?(D.uniforms.add(new r("cameraPosition",e=>e.camera.eye)),D.include(e,u)):C.include(e,u),C.include(n,u),a(v?D:C),i(v?D:C),v&&b.include(o,u),S.add("fragColor","vec4",0),S.add("fragDepthColor","vec4",1);const L=p(u.alphaCutoff),P=s`float groundLightAlignment = dot(upNormal, mainLightDirection);
2
+ import{calculateUVZShadowPass as e}from"../views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js";import{EvaluateSceneLighting as a,addAmbientBoostFactor as i,addLightingGlobalFactor as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{NormalUtils as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{readShadowPass as t,readShadowMaps as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js";import{RgbNormalizedDepthEncoding as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbNormalizedDepthEncoding.glsl.js";import{Float3BindUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as d,If as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{gaussianSplatFirstHitAlpha as h}from"../views/3d/webgl-engine/shaders/GaussianSplatDepthPolicy.js";import{GaussianSplatPerspectivePass as g,GaussianSplatFading as p,gaussianSplatPerspectiveVertex as v}from"../views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js";import{getGaussianSplatAlphaCutoffValue as m}from"../views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";import{ShaderBuilder as u}from"../views/webgl/ShaderBuilder.js";function w(w){const{receiveShadows:f,spherical:b}=w,S=f&&w.fragmentShading,y=S&&w.preciseDepth,D=new u,{varyings:C,vertex:P,fragment:L,outputs:x}=D;C.add("vColor","vec4"),y&&C.add("shadowReceiverRay","vec3"),D.include(g,w),w.fadingEnabled&&P.include(p),P.uniforms.add(new l("cameraPosition",e=>e.camera.eye));const R=S?L:P;R.uniforms.add(new l("cameraPosition",e=>e.camera.eye)),R.include(a,w),R.include(n,w),i(R),o(R),S?D.include(t,w):f&&(P.include(e),w.hasShadowHighlights&&P.code.add(d`ivec2 getShadowHighlightCoordinates() {
3
+ vec2 screenUV = gl_Position.xy / gl_Position.w * 0.5 + 0.5;
4
+ ivec2 screenPixel = ivec2(screenUV / inverseScreenSize);
5
+ return clamp(screenPixel, ivec2(0), textureSize(shadowHighlight, 0) - 1);
6
+ }`),r(P,w.hasShadowHighlights,"getShadowHighlightCoordinates()")),x.add("fragColor","vec4",0),x.add("fragDepthColor","vec4",1);const j=m(w.alphaCutoff),G=d`float groundLightAlignment = dot(upNormal, mainLightDirection);
3
7
  float additionalAmbientScale = additionalDirectedAmbientLight(groundLightAlignment);
4
- vec3 additionalLight = mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;`,G=s`
8
+ vec3 additionalLight = mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;`,$=d`
5
9
  vec3 viewDirection = normalize(fragmentPositionCameraRelative - cameraPosition);
6
10
  vec3 upNormal = getLocalUp(fragmentPositionCameraRelative, cameraPosition);
7
- ${P}
8
- float shadow = ${f?s`lightingGlobalFactor * (1.0 - additionalAmbientScale)`:s`0.0`};
11
+ ${G}
12
+ float shadow = ${b?d`lightingGlobalFactor * (1.0 - additionalAmbientScale)`:d`0.0`};
13
+ ${c(f,d`
14
+ ${w.preciseDepth?d`
15
+ float receiverDepth = gaussianSplatRayDepth();
16
+ vec3 receiverPosition = transpose(mat3(view)) * rayView * receiverDepth;
17
+ `:d`
18
+ float receiverDepth = -viewPos.z;
19
+ vec3 receiverPosition = fragmentPositionCameraRelative;
20
+ `}
21
+ vec3 uvzShadow = calculateUVZShadow(receiverPosition, receiverDepth, textureSize(shadowMap, 0));
22
+ shadow = max(shadow, readShadowMaps(uvzShadow));
23
+ `)}
9
24
  vColor.rgb = evaluateSceneLighting(upNormal, vColor.rgb, shadow, 0.0, additionalLight, viewDirection, upNormal);
10
- `,R=s`
25
+ `,z=d`
11
26
  vec3 viewDirection = normalize(fragmentPositionCameraRelative - cameraPosition);
12
27
  vec3 upNormal = getLocalUp(fragmentPositionCameraRelative, cameraPosition);
13
- ${P}
14
- ${w?s`
28
+ ${G}
29
+ ${y?d`
15
30
  float shadow = max(
16
31
  lightingGlobalFactor * (1.0 - additionalAmbientScale),
17
32
  readShadowMap(shadowReceiverRay * receiverDepth, receiverDepth)
18
33
  );
19
34
  `:"float shadow = readShadow(additionalAmbientScale, fragmentPositionCameraRelative);"}
20
35
  shadedColor = evaluateSceneLighting(upNormal, vColor.rgb, shadow, 0.0, additionalLight, viewDirection, upNormal);
21
- `;return C.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n\n // Unpack color first so very transparent splats can discard before fetching the page header.\n vColor = unpackColor(packedGaussian);\n float opacity = vColor.a;\n\n // Apply per-page fading before the early alpha rejection.\n ${l(u.fadingEnabled,s`opacity = applyGaussianSplatFading(opacity, gaussianIndex);
22
- vColor.a = opacity;`)}\n\n ${g(u,L)}\n vColor.a = opacity;\n ${l(w,s`shadowReceiverRay = transpose(mat3(view)) * rayView;`)}\n\n // Handle environment lighting per vertex when no shadow map is active.\n // When shadows are received, defer lighting to the fragment shader for crisp shadow borders.\n ${l(v,"forwardLinearDepth(-viewPos.z);",G)}\n `),D.include(t),D.include(n,u),D.main.add(`\n float gaussianFalloff = exp(gaussianExponent);\n\n // Cap at 0.99 to avoid blending issues, such as seams between overlapping Gaussians.\n float alpha = min(.99f, vColor.a * gaussianFalloff);\n\n ${l(w,s`float receiverDepth = gaussianSplatRayDepth();`)}\n vec3 shadedColor = vColor.rgb;\n ${l(v,R)}\n fragColor = vec4(shadedColor * alpha, alpha);\n\n // We simulate first hit based depth using the shared opacity threshold.\n // This works because we render in front-to-back order,\n // i.e. the first hit that counts completely saturates the alpha channel\n // and further splats do not contribute.\n float depthHit = step(${s.float(d)}, alpha);\n vec3 encodedDepth = vec3(0.0);\n if (depthHit > 0.0) {\n encodedDepth = encodeNormalizedDepthToRGB(${w?"delinearizeDepth(-receiverDepth)":"gaussianSplatDepth()"});\n }\n fragDepthColor = vec4(encodedDepth, depthHit);\n `),b}const v=Object.freeze(Object.defineProperty({__proto__:null,build:u},Symbol.toStringTag,{value:"Module"}));export{v as G,u as b};
36
+ `;return P.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n\n // Unpack color first so very transparent splats can discard before fetching the page header.\n vColor = unpackColor(packedGaussian);\n float opacity = vColor.a;\n\n // Apply per-page fading before the early alpha rejection.\n ${c(w.fadingEnabled,d`opacity = applyGaussianSplatFading(opacity, gaussianIndex);
37
+ vColor.a = opacity;`)}\n\n ${v(w,j)}\n vColor.a = opacity;\n ${c(y,d`shadowReceiverRay = transpose(mat3(view)) * rayView;`)}\n\n // Per-fragment lighting preserves crisp shadow borders; vertex lighting reduces overdraw cost.\n ${c(S,"forwardLinearDepth(-viewPos.z);",$)}\n `),L.include(s),L.main.add(`\n float gaussianFalloff = exp(gaussianExponent);\n\n // Cap at 0.99 to avoid blending issues, such as seams between overlapping Gaussians.\n float alpha = min(.99f, vColor.a * gaussianFalloff);\n\n ${c(y,d`float receiverDepth = gaussianSplatRayDepth();`)}\n vec3 shadedColor = vColor.rgb;\n ${c(S,z)}\n fragColor = vec4(shadedColor * alpha, alpha);\n\n // We simulate first hit based depth using the shared opacity threshold.\n // This works because we render in front-to-back order,\n // i.e. the first hit that counts completely saturates the alpha channel\n // and further splats do not contribute.\n float depthHit = step(${d.float(h)}, alpha);\n vec3 encodedDepth = vec3(0.0);\n if (depthHit > 0.0) {\n encodedDepth = encodeNormalizedDepthToRGB(${y?"delinearizeDepth(-receiverDepth)":"gaussianSplatDepth()"});\n }\n fragDepthColor = vec4(encodedDepth, depthHit);\n `),D}const f=Object.freeze(Object.defineProperty({__proto__:null,build:w},Symbol.toStringTag,{value:"Module"}));export{f as G,w as b};
@@ -1,50 +1,50 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{markerTextureSize as e,markerSymbolSize as i,markerTipThicknessFactor as r}from"../views/3d/support/engineContent/marker.js";import{sliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightIntensity as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{MarkerSizing as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{positionOutsideClipSpace as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{nearFar as m,viewport as h,viewNormal as g,inverseProjectionMatrix as u}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as f}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as w,NoPerspectiveRead as b}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as y,addPixelRatio as S,addCameraPosition as x}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as z}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as P}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as L,If as j}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as C}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{alphaCutoff as D}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as k}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as V}from"../views/webgl/ShaderBuilder.js";function A(A){const O=new V,{draped:W,worldSpace:$,anchor:F,hasTip:M,hasScreenSizePerspective:U,shadingEnabled:N}=A,R=!W&&!$;O.attributes.add("position","vec3"),O.attributes.add(A.hasVVSize?"sizeFeatureAttribute":"size","float"),A.hasVVOpacity&&O.attributes.add("opacityFeatureAttribute","float"),O.attributes.add(A.hasVVColor?"colorFeatureAttribute":"color",A.hasVVColor?"float":"vec4"),O.vertex.inputs.add("position",()=>"position"),A.hasVVSize?O.vertex.inputs.add("sizeFeatureAttribute",()=>"sizeFeatureAttribute"):O.vertex.inputs.add("size",()=>"size"),A.hasVVOpacity&&O.vertex.inputs.add("opacityFeatureAttribute",()=>"opacityFeatureAttribute"),A.hasVVColor?O.vertex.inputs.add("colorFeatureAttribute",()=>"colorFeatureAttribute"):O.vertex.inputs.add("color",()=>"color"),O.include(a,A),O.include(c,A);const{vertex:T,fragment:I,varyings:_}=O;y(T,A),O.attributes.add("previousDelta","vec4"),O.attributes.add("uv0","vec2"),_.add("vColor","vec4"),_.add("vpos","vec3",{invariant:!0}),_.add("vUV","vec2"),_.add("vSize","float"),M&&_.add("vLineWidth","float"),T.uniforms.add(m,h).code.add(L`vec4 projectAndScale(vec4 pos) {
2
+ import{markerTextureSize as e,markerSymbolSize as i,markerTipThicknessFactor as r}from"../views/3d/support/engineContent/marker.js";import{sliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputHighlight as t}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightIntensity as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{MarkerSizing as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as d}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{positionOutsideClipSpace as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{nearFar as m,viewport as h,viewNormal as g,inverseProjectionMatrix as u,perScreenPixelRatio as f}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as w}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as b,NoPerspectiveRead as y}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as S,addPixelRatio as z,addCameraPosition as x}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as P}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{glsl as L,If as j}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as C}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{alphaCutoff as D}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as k}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as V}from"../views/webgl/ShaderBuilder.js";function A(A){const W=new V,{draped:O,worldSpace:$,anchor:F,hasTip:M,shadingEnabled:U}=A,N=!O&&!$;W.attributes.add("position","vec3"),W.attributes.add(A.hasVVSize?"sizeFeatureAttribute":"size","float"),A.hasVVOpacity&&W.attributes.add("opacityFeatureAttribute","float"),W.attributes.add(A.hasVVColor?"colorFeatureAttribute":"color",A.hasVVColor?"float":"vec4"),W.vertex.inputs.add("position",()=>"position"),A.hasVVSize?W.vertex.inputs.add("sizeFeatureAttribute",()=>"sizeFeatureAttribute"):W.vertex.inputs.add("size",()=>"size"),A.hasVVOpacity&&W.vertex.inputs.add("opacityFeatureAttribute",()=>"opacityFeatureAttribute"),A.hasVVColor?W.vertex.inputs.add("colorFeatureAttribute",()=>"colorFeatureAttribute"):W.vertex.inputs.add("color",()=>"color"),W.include(a,A),W.include(c,A);const{vertex:R,fragment:T,varyings:I}=W;S(R,A),W.attributes.add("previousDelta","vec4"),W.attributes.add("uv0","vec2"),I.add("vColor","vec4"),I.add("vpos","vec3",{invariant:!0}),I.add("vUV","vec2"),I.add("vSize","float"),M&&I.add("vLineWidth","float"),R.uniforms.add(m,h).code.add(L`vec4 projectAndScale(vec4 pos) {
3
3
  vec4 posNdc = proj * pos;
4
4
  posNdc.xy *= viewport.zw / posNdc.w;
5
5
  return posNdc;
6
- }`),T.code.add(L`void clip(vec4 pos, inout vec4 prev) {
6
+ }`),R.code.add(L`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
- }`),$?(O.attributes.add("normal","vec3"),T.constants.add("tiltThreshold","float",.7).uniforms.add(g).code.add(L`vec3 perpendicular(vec3 v) {
12
+ }`),$?(W.attributes.add("normal","vec3"),R.constants.add("tiltThreshold","float",.7).uniforms.add(g).code.add(L`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
- }`)):T.code.add(L`vec2 perpendicular(vec2 v) {
18
+ }`)):R.code.add(L`vec2 perpendicular(vec2 v) {
19
19
  return vec2(v.y, -v.x);
20
- }`);const B=$?"vec3":"vec2";return T.code.add(L`
21
- ${B} normalizedSegment(${B} pos, ${B} prev) {
22
- ${B} segment = pos - prev;
20
+ }`);const _=$?"vec3":"vec2";return R.code.add(L`
21
+ ${_} normalizedSegment(${_} pos, ${_} prev) {
22
+ ${_} segment = pos - prev;
23
23
  float segmentLen = length(segment);
24
24
 
25
25
  // normalize or zero if too short
26
26
  return (segmentLen > 0.001) ? segment / segmentLen : ${$?"vec3(0.0, 0.0, 0.0)":"vec2(0.0, 0.0)"};
27
27
  }
28
28
 
29
- ${B} displace(${B} pos, ${B} prev, float displacementLen) {
30
- ${B} segment = normalizedSegment(pos, prev);
29
+ ${_} displace(${_} pos, ${_} prev, float displacementLen) {
30
+ ${_} segment = normalizedSegment(pos, prev);
31
31
 
32
- ${B} displacementDirU = perpendicular(segment);
33
- ${B} displacementDirV = segment;
32
+ ${_} displacementDirU = perpendicular(segment);
33
+ ${_} displacementDirV = segment;
34
34
 
35
35
  ${1===F?"pos -= 0.5 * displacementLen * displacementDirV;":""}
36
36
 
37
37
  return pos + displacementLen * (uv0.x * displacementDirU + uv0.y * displacementDirV);
38
38
  }
39
- `),R&&(T.uniforms.add(u),T.code.add(L`vec3 inverseProject(vec4 posScreen) {
39
+ `),N&&(R.uniforms.add(u),R.code.add(L`vec3 inverseProject(vec4 posScreen) {
40
40
  posScreen.xy = (posScreen.xy / viewport.zw) * posScreen.w;
41
41
  return (inverseProjectionMatrix * posScreen).xyz;
42
- }`),T.code.add(L`bool rayIntersectPlane(vec3 rayDir, vec3 planeOrigin, vec3 planeNormal, out vec3 intersection) {
42
+ }`),R.code.add(L`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
- }`),T.uniforms.add(new P("perScreenPixelRatio",({camera:e})=>e.perScreenPixelRatio)),T.code.add(L`
47
+ }`),R.uniforms.add(f),R.code.add(L`
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);
@@ -73,7 +73,7 @@ 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
- `)),S(T),O.include(w),T.main.add(L`
76
+ `)),z(R),W.include(b),R.main.add(L`
77
77
  // Check for special value of uv0.y which is used by the Renderer when graphics are removed before the VBO is
78
78
  // recompacted. If this is the case, then we just project outside of clip space.
79
79
  if (uv0.y == 0.0) {
@@ -85,7 +85,7 @@ return abs(cos) > 0.001 && t > 0.0;
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(${j(U,"pos.xyz")});
88
+ float lineWidth = getLineWidth(${j(A.lineWidthRequiresPosition,"pos.xyz")});
89
89
  float screenMarkerSize = getScreenMarkerSize(lineWidth);
90
90
 
91
91
  clip(pos, prev);
@@ -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
- ${j(R,L`
105
+ ${j(N,L`
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
@@ -128,13 +128,13 @@ return abs(cos) > 0.001 && t > 0.0;
128
128
  vpos = pos.xyz;
129
129
 
130
130
  gl_Position = displacedPosScreen;
131
- `),I.include(o,A),O.include(k,A),I.include(f),I.include(D),I.uniforms.add(new z("intrinsicColor",({color:e})=>e),new C("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(L`float markerAlpha(vec2 samplePos) {
131
+ `),T.include(o,A),W.include(k,A),T.include(w),T.include(D),T.uniforms.add(new P("intrinsicColor",({color:e})=>e),new C("tex",({markerTexture:e})=>e)).constants.add("texelSize","float",1/e).code.add(L`float markerAlpha(vec2 samplePos) {
132
132
  samplePos += vec2(0.5, -0.5) * texelSize;
133
133
  float sdf = texture(tex, samplePos).r;
134
134
  float pixelDistance = sdf * vSize;
135
135
  pixelDistance -= 0.5;
136
136
  return clamp(0.5 - pixelDistance, 0.0, 1.0);
137
- }`),M&&(O.include(b),I.constants.add("relativeMarkerSize","float",i/e).constants.add("relativeTipLineWidth","float",r).code.add(L`
137
+ }`),M&&(W.include(y),T.constants.add("relativeMarkerSize","float",i/e).constants.add("relativeTipLineWidth","float",r).code.add(L`
138
138
  float tipAlpha(vec2 samplePos) {
139
139
  // Convert coordinates s.t. they are in pixels and relative to the tip of an arrow marker
140
140
  samplePos -= vec2(0.5, 0.5 + 0.5 * relativeMarkerSize);
@@ -148,7 +148,7 @@ return clamp(0.5 - pixelDistance, 0.0, 1.0);
148
148
  float distance = max(abs(samplePos.x) - halfMarkerSize, abs(samplePos.y) - halfTipLineWidth);
149
149
  return clamp(0.5 - distance, 0.0, 1.0);
150
150
  }
151
- `)),O.include(t,A),O.include(b),I.main.add(L`
151
+ `)),W.include(t,A),W.include(y),T.main.add(L`
152
152
  discardBySlice(vpos);
153
153
 
154
154
  vec4 finalColor = intrinsicColor * vColor;
@@ -157,11 +157,11 @@ return clamp(0.5 - pixelDistance, 0.0, 1.0);
157
157
  vec2 samplePos = ${j($,"vUV","noPerspectiveRead(vUV)")};
158
158
  finalColor.a *= ${M?"max(markerAlpha(samplePos), tipAlpha(samplePos))":"markerAlpha(samplePos)"};
159
159
  if(finalColor.a < alphaCutoff) discard; // We also want to discard in the opaque color pass
160
- `),N&&(_.add("vnormal","vec3"),T.include(d,A),T.main.add(L`vnormal = getLocalUp(vpos, localOrigin);
161
- forwardLinearDepthToReadShadow();`),x(I,A),O.include(v,A),I.include(s,A),I.include(n,A),I.uniforms.add(l,T.uniforms.get("localOrigin")).main.add(L`vec3 posWorld = vpos + localOrigin;
160
+ `),U&&(I.add("vnormal","vec3"),R.include(d,A),R.main.add(L`vnormal = getLocalUp(vpos, localOrigin);
161
+ forwardLinearDepthToReadShadow();`),x(T,A),W.include(v,A),T.include(s,A),T.include(n,A),T.uniforms.add(l,R.uniforms.get("localOrigin")).main.add(L`vec3 posWorld = vpos + localOrigin;
162
162
  float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
163
163
  float shadow = readFragmentShadow(additionalAmbientScale);
164
164
  float ssao = evaluateAmbientOcclusionInverse();
165
165
  vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
166
166
  vec3 viewDirection = normalize(vpos - cameraPosition);
167
- finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, shadow, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),I.main.add("outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);"),O}const O=Object.freeze(Object.defineProperty({__proto__:null,build:A},Symbol.toStringTag,{value:"Module"}));export{O as L,A as b};
167
+ finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, shadow, 1.0 - ssao, additionalLight, viewDirection, vnormal), finalColor.a);`)),T.main.add("outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);"),W}const W=Object.freeze(Object.defineProperty({__proto__:null,build:A},Symbol.toStringTag,{value:"Module"}));export{W as L,A as b};