@arcgis/core 4.22.0-next.20211205 → 4.22.1

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 (222) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/{44ccee36f8c74f4f134e.js → 025df54bafc05c183182.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{23af0b02208e20d5c07e.js → 04adf8c6c5e8ad67aa06.js} +1 -1
  5. package/assets/esri/core/workers/chunks/0677ed519c51710d7629.js +1 -0
  6. package/assets/esri/core/workers/chunks/2174266668fa6f2df8cc.js +1 -0
  7. package/assets/esri/core/workers/chunks/25017204ffbd1bbac91f.js +1 -0
  8. package/assets/esri/core/workers/chunks/28f9b48b59bf1347facd.js +1 -0
  9. package/assets/esri/core/workers/chunks/2d97adeb48adeecd7607.js +1 -0
  10. package/assets/esri/core/workers/chunks/{52aa3b44bddb10caa343.js → 2f29fb12452d363a1b17.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{96a62dc1e07f3ef20a30.js → 32efb77e3dabd2c11446.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{6a1ce00bcb689ea95bcb.js → 3a4885bf1cfc82cf2b67.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{ff9a9e705237c55f78ff.js → 49bf6ce6b31a0028cee1.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{02ce52ca0084536bc066.js → 4f4cc4ebd68dbd5ee9c3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/5a31dfbac9c7e15a4dc5.js +1 -0
  16. package/assets/esri/core/workers/chunks/60bfe5450b85b0d4605f.js +1 -0
  17. package/assets/esri/core/workers/chunks/{f3da8b797c8e1fcb1c21.js → 63161320a58a0b1702a2.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{d7f77fe32bb2d69b5714.js → 762f45a7ecd40d564be2.js} +1 -1
  19. package/assets/esri/core/workers/chunks/7b12bf4be88ca0e14683.js +1 -0
  20. package/assets/esri/core/workers/chunks/{07bfb7bb4447aeacd87a.js → 7db1818ed9e834402e98.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{8bc4ea821be16a752226.js → 8b98fc7d115469e6ae5d.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{6210b23872c362f51b12.js → a3b7217566347ab595d0.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{bc0b85bc1e5116836ba4.js → ac9b25ce30f2cd569944.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{058955b87ce2aa1b1809.js → c535188091d83fd50d74.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{4417dfcb2ba50ac9f199.js → d431b35c274b76150724.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{5f2718cd77cbd5ba7920.js → da62f8159ec2fdbdeb58.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{b6b46f8e6a7d8d3cef50.js → db00e63a7c4fdf635a8c.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{489147cf21d55f47d0e6.js → e7117121160907a593d4.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{44145763617ea985cce4.js → fa9c5dd90d19d4061b40.js} +1 -1
  30. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  31. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  32. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  33. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  34. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  35. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  36. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  37. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  38. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  39. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  40. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  41. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  42. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  43. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  44. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  45. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  46. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  47. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  48. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  49. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  50. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  51. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  52. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  53. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  54. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  55. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  56. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  57. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  58. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  59. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  60. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  61. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  62. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  63. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  64. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  65. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  66. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  67. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  68. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  69. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  70. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  71. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  72. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  73. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  74. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  75. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  76. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  77. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  78. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  79. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  80. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  81. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  82. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  83. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  84. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  85. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  86. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  87. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  88. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  89. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  90. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  91. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  92. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  93. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  94. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  95. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  96. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  97. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  98. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  99. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  100. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  101. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  102. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  103. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  104. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  105. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  106. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  107. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  108. package/chunks/Clouds.glsl.js +4 -4
  109. package/chunks/RibbonLine.glsl.js +55 -61
  110. package/config.js +1 -1
  111. package/copyright.txt +47 -19
  112. package/interfaces.d.ts +184 -47
  113. package/layers/CSVLayer.js +1 -1
  114. package/layers/GeoJSONLayer.js +1 -1
  115. package/layers/mixins/ArcGISImageService.js +1 -1
  116. package/layers/mixins/operationalLayers.js +1 -1
  117. package/layers/support/layersCreator.js +1 -1
  118. package/package.json +1 -1
  119. package/renderers/VectorFieldRenderer.js +1 -1
  120. package/renderers/support/RasterSymbolizer.js +1 -1
  121. package/renderers/support/rasterRendererHelper.js +1 -1
  122. package/rest/query/operations/query.js +1 -1
  123. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  124. package/support/arcadeUtils.js +1 -1
  125. package/support/revision.js +1 -1
  126. package/views/2d/MapViewConstraints.js +1 -1
  127. package/views/2d/constraints/ZoomConstraint.js +1 -1
  128. package/views/2d/engine/Stage.js +1 -1
  129. package/views/2d/engine/webgl/collisions/CollisionEngine.js +1 -1
  130. package/views/2d/engine/webgl/collisions/CollisionGrid.js +1 -1
  131. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  132. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  133. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  134. package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
  135. package/views/2d/layers/graphics/GraphicStore.js +1 -1
  136. package/views/2d/layers/imagery/ImageryGraphicsView2D.js +1 -1
  137. package/views/3d/environment/Clouds.glsl.js +1 -1
  138. package/views/3d/environment/CloudsGenerator.js +1 -1
  139. package/views/3d/environment/NoiseTextureAtlas.js +1 -1
  140. package/views/MapView.js +1 -1
  141. package/views/MapViewBase.js +1 -1
  142. package/views/webgl/Program.js +1 -1
  143. package/widgets/Histogram.js +1 -1
  144. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  145. package/widgets/Sketch/SketchViewModel.js +1 -1
  146. package/widgets/UtilityNetworkTrace.js +1 -1
  147. package/assets/esri/core/t9n/Units_no.json +0 -1
  148. package/assets/esri/core/workers/chunks/49bb222ee07a768e998d.js +0 -1
  149. package/assets/esri/core/workers/chunks/650f04de72c173beaebc.js +0 -1
  150. package/assets/esri/core/workers/chunks/aa57f2c380132c746730.js +0 -1
  151. package/assets/esri/core/workers/chunks/af6251cc7973b43a1523.js +0 -1
  152. package/assets/esri/core/workers/chunks/b17afdfe4450f69298ad.js +0 -1
  153. package/assets/esri/core/workers/chunks/bad899fd3564ec97f69b.js +0 -1
  154. package/assets/esri/core/workers/chunks/deba37055be7c2d7da26.js +0 -1
  155. package/assets/esri/core/workers/chunks/e02a3d456525e76ddb60.js +0 -1
  156. package/assets/esri/identity/t9n/identity_no.json +0 -1
  157. package/assets/esri/smartMapping/t9n/smartMapping_no.json +0 -1
  158. package/assets/esri/t9n/basemaps_no.json +0 -1
  159. package/assets/esri/t9n/common_no.json +0 -1
  160. package/assets/esri/widgets/AreaMeasurement2D/t9n/AreaMeasurement2D_no.json +0 -1
  161. package/assets/esri/widgets/AreaMeasurement3D/t9n/AreaMeasurement3D_no.json +0 -1
  162. package/assets/esri/widgets/Attachments/t9n/Attachments_no.json +0 -1
  163. package/assets/esri/widgets/Attribution/t9n/Attribution_no.json +0 -1
  164. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_no.json +0 -1
  165. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_no.json +0 -1
  166. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_no.json +0 -1
  167. package/assets/esri/widgets/Bookmarks/t9n/Bookmarks_no.json +0 -1
  168. package/assets/esri/widgets/BuildingExplorer/t9n/BuildingExplorer_no.json +0 -1
  169. package/assets/esri/widgets/Compass/t9n/Compass_no.json +0 -1
  170. package/assets/esri/widgets/CoordinateConversion/t9n/CoordinateConversion_no.json +0 -1
  171. package/assets/esri/widgets/Daylight/t9n/Daylight_no.json +0 -1
  172. package/assets/esri/widgets/DirectLineMeasurement3D/t9n/DirectLineMeasurement3D_no.json +0 -1
  173. package/assets/esri/widgets/Directions/t9n/Directions_no.json +0 -1
  174. package/assets/esri/widgets/Directions/t9n/Printout_no.json +0 -1
  175. package/assets/esri/widgets/DistanceMeasurement2D/t9n/DistanceMeasurement2D_no.json +0 -1
  176. package/assets/esri/widgets/Editor/t9n/Editor_no.json +0 -1
  177. package/assets/esri/widgets/ElevationProfile/t9n/ElevationProfile_no.json +0 -1
  178. package/assets/esri/widgets/Expand/t9n/Expand_no.json +0 -1
  179. package/assets/esri/widgets/Feature/t9n/Feature_no.json +0 -1
  180. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_no.json +0 -1
  181. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +0 -1
  182. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_no.json +0 -1
  183. package/assets/esri/widgets/FloorFilter/t9n/FloorFilter_no.json +0 -1
  184. package/assets/esri/widgets/Fullscreen/t9n/Fullscreen_no.json +0 -1
  185. package/assets/esri/widgets/Histogram/t9n/Histogram_no.json +0 -1
  186. package/assets/esri/widgets/HistogramRangeSlider/t9n/HistogramRangeSlider_no.json +0 -1
  187. package/assets/esri/widgets/Home/t9n/Home_no.json +0 -1
  188. package/assets/esri/widgets/LayerList/t9n/LayerList_no.json +0 -1
  189. package/assets/esri/widgets/Legend/t9n/Legend_no.json +0 -1
  190. package/assets/esri/widgets/LineOfSight/t9n/LineOfSight_no.json +0 -1
  191. package/assets/esri/widgets/Locate/t9n/Locate_no.json +0 -1
  192. package/assets/esri/widgets/Measurement/t9n/Measurement_no.json +0 -1
  193. package/assets/esri/widgets/NavigationToggle/t9n/NavigationToggle_no.json +0 -1
  194. package/assets/esri/widgets/Popup/t9n/Popup_no.json +0 -1
  195. package/assets/esri/widgets/Print/t9n/Print_no.json +0 -1
  196. package/assets/esri/widgets/ScaleBar/t9n/ScaleBar_no.json +0 -1
  197. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_no.json +0 -1
  198. package/assets/esri/widgets/Search/t9n/Search_no.json +0 -1
  199. package/assets/esri/widgets/ShadowCast/t9n/ShadowCast_no.json +0 -1
  200. package/assets/esri/widgets/Sketch/t9n/Sketch_no.json +0 -1
  201. package/assets/esri/widgets/Slice/t9n/Slice_no.json +0 -1
  202. package/assets/esri/widgets/Slider/t9n/Slider_no.json +0 -1
  203. package/assets/esri/widgets/Swipe/t9n/Swipe_no.json +0 -1
  204. package/assets/esri/widgets/TableList/t9n/TableList_no.json +0 -1
  205. package/assets/esri/widgets/TimeSlider/t9n/TimeSlider_no.json +0 -1
  206. package/assets/esri/widgets/Track/t9n/Track_no.json +0 -1
  207. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_no.json +0 -1
  208. package/assets/esri/widgets/Zoom/t9n/Zoom_no.json +0 -1
  209. package/assets/esri/widgets/smartMapping/ClassedColorSlider/t9n/ClassedColorSlider_no.json +0 -1
  210. package/assets/esri/widgets/smartMapping/ClassedSizeSlider/t9n/ClassedSizeSlider_no.json +0 -1
  211. package/assets/esri/widgets/smartMapping/ColorSizeSlider/t9n/ColorSizeSlider_no.json +0 -1
  212. package/assets/esri/widgets/smartMapping/ColorSlider/t9n/ColorSlider_no.json +0 -1
  213. package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/HeatmapSlider_no.json +0 -1
  214. package/assets/esri/widgets/smartMapping/OpacitySlider/t9n/OpacitySlider_no.json +0 -1
  215. package/assets/esri/widgets/smartMapping/SizeSlider/t9n/SizeSlider_no.json +0 -1
  216. package/assets/esri/widgets/support/SelectionToolbar/t9n/SelectionToolbar_no.json +0 -1
  217. package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_no.json +0 -1
  218. package/assets/esri/widgets/support/t9n/ColorPicker_no.json +0 -1
  219. package/assets/esri/widgets/support/t9n/DatePicker_no.json +0 -1
  220. package/assets/esri/widgets/support/t9n/TimePicker_no.json +0 -1
  221. package/assets/esri/widgets/support/t9n/timezone_no.json +0 -1
  222. package/assets/esri/widgets/support/t9n/uriUtils_no.json +0 -1
@@ -1 +1 @@
1
- {"widgetLabel":"Utility Network Trace","widgetDescription":"A widget to perform traces in a Utility Network.","globalStrings":{"selectTerminalPlaceholder":"Select Terminals","remove":"Remove","locateFeature":"Locate","zoomToFeature":"Zoom to","clearResults":"Discard","select":"Select","cancel":"Cancel","ok":"OK"},"inputsStrings":{"headerTabInputs":"Inputs","headerStartingPoint":"Starting points","startingPointHint":"Add starting points for the trace.","headerBarrier":"Barriers","barrierButton":"Barrier","barrierPointHint":"Add barrier points for the trace.","barrierFilter":"Filter barrier","addPointOption":"Add a point","addPointHint":"Click the map to add a point","removeAllPoints":"Remove all","selectTraces":"Select traces"},"tracingStrings":{"traceOperation":"Trace types","runTrace":"Run"},"resultsStrings":{"headerTabResults":"Results","resultsListOptions":"Options","ellipsesOptions":"Options","displayAttribute":"Display attribute","sortBy":"Sort by","startOverButton":"Clear All","startOverValidation":"Are you sure? All the trace Inputs and Results will be lost.","highlightTrace":"Show graphics","noSelectionResults":"Features cannot be selected. Enable to show graphics instead.","viewFeatures":"Features","selectFeatures":"Select features","graphicColor":"Select color","functionHeader":"Functions","noValue":"No value"},"alertsStrings":{"startingPointAlertHeader":"Starting point missing","startingPointAlert":"Add a starting point to run this trace.","selectTraceAlertHeader":"Trace type not selected","selectTraceAlert":"Select a trace type to run.","NoRunAlertHeader":"No results available","noResultsInfo":"Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results.","traceExecuting":"Trace in progress...","genericResultHeader":"Trace result","noAssetsFoundHeader":"Cannot add point","noAssetFound":"The point must intersect with a feature on the map.","clearResultsAlert":"Are you sure? All the results for this trace will be discarded.","noTraceSupported":"This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations."}}
1
+ {"widgetLabel":"Theo dõi Mạng lưới Tiện ích","widgetDescription":"Một tiện ích để thực hiện theo dõi trong Mạng lưới Tiện ích.","globalStrings":{"selectTerminalPlaceholder":"Chọn Đầu cuối","remove":"Gỡ bỏ","locateFeature":"Định vị","zoomToFeature":"Phóng tới","clearResults":"Hủy","select":"Chọn","cancel":"Hủy","ok":"OK"},"inputsStrings":{"headerTabInputs":"Đầu vào","headerStartingPoint":"Điểm bắt đầu","startingPointHint":"Thêm điểm bắt đầu cho hoạt động theo dõi.","headerBarrier":"Rào cản","barrierButton":"Rào cản","barrierPointHint":"Thêm điểm rào cản cho hoạt động theo dõi.","barrierFilter":"Lọc rào cản","addPointOption":"Thêm một điểm","addPointHint":"Nhấp vào bản đồ để thêm điểm","removeAllPoints":"Xóa tất cả","selectTraces":"Chọn theo dõi"},"tracingStrings":{"traceOperation":"Loại theo dõi","runTrace":"Chạy"},"resultsStrings":{"headerTabResults":"Kết quả","resultsListOptions":"Tùy chọn","ellipsesOptions":"Tùy chọn","displayAttribute":"Hiển thị thuộc tính","sortBy":"Sắp xếp theo","startOverButton":"Xóa tất cả","startOverValidation":"Bạn có chắc không? Tất cả Đầu vào và Kết quả theo dõi sẽ bị mất.","highlightTrace":"Hiển thị đồ họa","noSelectionResults":"Không thể chọn đối tượng này. Bật để hiển thị đồ họa.","viewFeatures":"Đối tượng","selectFeatures":"Chọn các đối tượng","graphicColor":"Chọn màu sắc","functionHeader":"Chức năng","noValue":"Không có giá trị"},"alertsStrings":{"startingPointAlertHeader":"Thiếu điểm bắt đầu","startingPointAlert":"Thêm một điểm bắt đầu để chạy hoạt động theo dõi này.","selectTraceAlertHeader":"Chưa chọn loại theo dõi","selectTraceAlert":"Chọn một loại theo dõi để chạy.","NoRunAlertHeader":"Không có kết quả nào","noResultsInfo":"Đi đến tab Đầu vào để chọn loại theo dõi, thêm điểm bắt đầu và nhấp vào Chạy để xem kết quả.","traceExecuting":"Đang tiến hành theo dõi...","genericResultHeader":"Kết quả theo dõi","noAssetsFoundHeader":"Không thể thêm điểm","noAssetFound":"Điểm phải giao cắt với một đối tượng trên bản đồ.","clearResultsAlert":"Bạn có chắc không? Tất cả kết quả cho lần theo dõi này sẽ bị hủy bỏ.","noTraceSupported":"Bản đồ này không hỗ trợ việc theo dõi Mạng lưới Tiện ích. Xuất bản bản đồ web có Mạng lưới Tiện ích và Cấu hình Theo dõi được chia sẻ."}}
@@ -1 +1 @@
1
- {"widgetLabel":"Utility Network Trace","widgetDescription":"A widget to perform traces in a Utility Network.","globalStrings":{"selectTerminalPlaceholder":"Select Terminals","remove":"Remove","locateFeature":"Locate","zoomToFeature":"Zoom to","clearResults":"Discard","select":"Select","cancel":"Cancel","ok":"OK"},"inputsStrings":{"headerTabInputs":"Inputs","headerStartingPoint":"Starting points","startingPointHint":"Add starting points for the trace.","headerBarrier":"Barriers","barrierButton":"Barrier","barrierPointHint":"Add barrier points for the trace.","barrierFilter":"Filter barrier","addPointOption":"Add a point","addPointHint":"Click the map to add a point","removeAllPoints":"Remove all","selectTraces":"Select traces"},"tracingStrings":{"traceOperation":"Trace types","runTrace":"Run"},"resultsStrings":{"headerTabResults":"Results","resultsListOptions":"Options","ellipsesOptions":"Options","displayAttribute":"Display attribute","sortBy":"Sort by","startOverButton":"Clear All","startOverValidation":"Are you sure? All the trace Inputs and Results will be lost.","highlightTrace":"Show graphics","noSelectionResults":"Features cannot be selected. Enable to show graphics instead.","viewFeatures":"Features","selectFeatures":"Select features","graphicColor":"Select color","functionHeader":"Functions","noValue":"No value"},"alertsStrings":{"startingPointAlertHeader":"Starting point missing","startingPointAlert":"Add a starting point to run this trace.","selectTraceAlertHeader":"Trace type not selected","selectTraceAlert":"Select a trace type to run.","NoRunAlertHeader":"No results available","noResultsInfo":"Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results.","traceExecuting":"Trace in progress...","genericResultHeader":"Trace result","noAssetsFoundHeader":"Cannot add point","noAssetFound":"The point must intersect with a feature on the map.","clearResultsAlert":"Are you sure? All the results for this trace will be discarded.","noTraceSupported":"This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations."}}
1
+ {"widgetLabel":"公共设施追踪","widgetDescription":"用于在公共设施网络中执行追踪的微件。","globalStrings":{"selectTerminalPlaceholder":"选择终端","remove":"移除","locateFeature":"定位","zoomToFeature":"缩放至","clearResults":"放弃","select":"选择","cancel":"取消","ok":"确定"},"inputsStrings":{"headerTabInputs":"输入","headerStartingPoint":"起点","startingPointHint":"添加追踪起点。","headerBarrier":"障碍","barrierButton":"障碍","barrierPointHint":"添加追踪障碍点。","barrierFilter":"过滤器障碍","addPointOption":"添加点","addPointHint":"单击地图添加点。","removeAllPoints":"全部移除","selectTraces":"选择轨迹"},"tracingStrings":{"traceOperation":"追踪类型","runTrace":"运行"},"resultsStrings":{"headerTabResults":"结果","resultsListOptions":"选项","ellipsesOptions":"选项","displayAttribute":"显示属性","sortBy":"排序方式","startOverButton":"全部清除","startOverValidation":"是否确定? 所有追踪“输入”和“结果”均将丢失。","highlightTrace":"显示图形","noSelectionResults":"无法选择要素。 启用以显示图形。","viewFeatures":"要素","selectFeatures":"选择要素","graphicColor":"选择颜色","functionHeader":"函数","noValue":"没有值"},"alertsStrings":{"startingPointAlertHeader":"起点缺失","startingPointAlert":"添加一个起点来运行此追踪。","selectTraceAlertHeader":"未选择追踪类型","selectTraceAlert":"选择要运行的追踪类型。","NoRunAlertHeader":"无可用结果","noResultsInfo":"转至“输入”选项卡以选择追踪类型,添加起点,然后单击“运行”来查看结果。","traceExecuting":"追踪进行中...","genericResultHeader":"追踪结果","noAssetsFoundHeader":"无法添加点","noAssetFound":"该点必须与地图上的要素相交。","clearResultsAlert":"是否确定? 将丢弃此追踪的所有结果。","noTraceSupported":"此地图不支持追踪公共设施网络。 发布具有公共设施网络和共享追踪配置的 web 地图。"}}
@@ -1 +1 @@
1
- {"widgetLabel":"Utility Network Trace","widgetDescription":"A widget to perform traces in a Utility Network.","globalStrings":{"selectTerminalPlaceholder":"Select Terminals","remove":"Remove","locateFeature":"Locate","zoomToFeature":"Zoom to","clearResults":"Discard","select":"Select","cancel":"Cancel","ok":"OK"},"inputsStrings":{"headerTabInputs":"Inputs","headerStartingPoint":"Starting points","startingPointHint":"Add starting points for the trace.","headerBarrier":"Barriers","barrierButton":"Barrier","barrierPointHint":"Add barrier points for the trace.","barrierFilter":"Filter barrier","addPointOption":"Add a point","addPointHint":"Click the map to add a point","removeAllPoints":"Remove all","selectTraces":"Select traces"},"tracingStrings":{"traceOperation":"Trace types","runTrace":"Run"},"resultsStrings":{"headerTabResults":"Results","resultsListOptions":"Options","ellipsesOptions":"Options","displayAttribute":"Display attribute","sortBy":"Sort by","startOverButton":"Clear All","startOverValidation":"Are you sure? All the trace Inputs and Results will be lost.","highlightTrace":"Show graphics","noSelectionResults":"Features cannot be selected. Enable to show graphics instead.","viewFeatures":"Features","selectFeatures":"Select features","graphicColor":"Select color","functionHeader":"Functions","noValue":"No value"},"alertsStrings":{"startingPointAlertHeader":"Starting point missing","startingPointAlert":"Add a starting point to run this trace.","selectTraceAlertHeader":"Trace type not selected","selectTraceAlert":"Select a trace type to run.","NoRunAlertHeader":"No results available","noResultsInfo":"Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results.","traceExecuting":"Trace in progress...","genericResultHeader":"Trace result","noAssetsFoundHeader":"Cannot add point","noAssetFound":"The point must intersect with a feature on the map.","clearResultsAlert":"Are you sure? All the results for this trace will be discarded.","noTraceSupported":"This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations."}}
1
+ {"widgetLabel":"公用事業網路追蹤","widgetDescription":"在公用事業網路中執行追蹤的 widget。","globalStrings":{"selectTerminalPlaceholder":"選擇終端","remove":"移除","locateFeature":"定位","zoomToFeature":"縮放至","clearResults":"放棄","select":"選擇","cancel":"取消","ok":"確定"},"inputsStrings":{"headerTabInputs":"輸入","headerStartingPoint":"起點","startingPointHint":"新增追蹤的起點。","headerBarrier":"屏障","barrierButton":"屏障","barrierPointHint":"新增追蹤的屏障點。","barrierFilter":"篩選屏障","addPointOption":"新增一點","addPointHint":"按一下地圖以新增點","removeAllPoints":"全部移除","selectTraces":"選擇軌跡"},"tracingStrings":{"traceOperation":"追蹤類型","runTrace":"執行"},"resultsStrings":{"headerTabResults":"結果","resultsListOptions":"選項","ellipsesOptions":"選項","displayAttribute":"顯示屬性","sortBy":"排序方式","startOverButton":"全部清除","startOverValidation":"是否確定? 將遺失所有追蹤輸入和結果。","highlightTrace":"顯示圖形","noSelectionResults":"無法選擇圖徵。 啟用以改為顯示圖形。","viewFeatures":"圖徽","selectFeatures":"選擇圖徵","graphicColor":"選擇顏色","functionHeader":"函數","noValue":"沒有值"},"alertsStrings":{"startingPointAlertHeader":"起點遺失","startingPointAlert":"新增起點以執行此追蹤。","selectTraceAlertHeader":"未選擇追蹤類型","selectTraceAlert":"選擇要執行的追蹤類型。","NoRunAlertHeader":"無可用結果","noResultsInfo":"移至「輸入」頁籤以選擇追蹤類型,新增起點,再按一下「執行」以檢視結果。","traceExecuting":"追蹤進行中...","genericResultHeader":"追蹤結果","noAssetsFoundHeader":"無法新增點","noAssetFound":"點必須與地圖上的圖徵相交","clearResultsAlert":"是否確定? 將捨棄此追蹤的所有結果。","noTraceSupported":"此地圖不支援追蹤公用事業網路。 使用公用事業網路發佈 Web 地圖,並分享追蹤配置"}}
@@ -1 +1 @@
1
- {"widgetLabel":"Utility Network Trace","widgetDescription":"A widget to perform traces in a Utility Network.","globalStrings":{"selectTerminalPlaceholder":"Select Terminals","remove":"Remove","locateFeature":"Locate","zoomToFeature":"Zoom to","clearResults":"Discard","select":"Select","cancel":"Cancel","ok":"OK"},"inputsStrings":{"headerTabInputs":"Inputs","headerStartingPoint":"Starting points","startingPointHint":"Add starting points for the trace.","headerBarrier":"Barriers","barrierButton":"Barrier","barrierPointHint":"Add barrier points for the trace.","barrierFilter":"Filter barrier","addPointOption":"Add a point","addPointHint":"Click the map to add a point","removeAllPoints":"Remove all","selectTraces":"Select traces"},"tracingStrings":{"traceOperation":"Trace types","runTrace":"Run"},"resultsStrings":{"headerTabResults":"Results","resultsListOptions":"Options","ellipsesOptions":"Options","displayAttribute":"Display attribute","sortBy":"Sort by","startOverButton":"Clear All","startOverValidation":"Are you sure? All the trace Inputs and Results will be lost.","highlightTrace":"Show graphics","noSelectionResults":"Features cannot be selected. Enable to show graphics instead.","viewFeatures":"Features","selectFeatures":"Select features","graphicColor":"Select color","functionHeader":"Functions","noValue":"No value"},"alertsStrings":{"startingPointAlertHeader":"Starting point missing","startingPointAlert":"Add a starting point to run this trace.","selectTraceAlertHeader":"Trace type not selected","selectTraceAlert":"Select a trace type to run.","NoRunAlertHeader":"No results available","noResultsInfo":"Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results.","traceExecuting":"Trace in progress...","genericResultHeader":"Trace result","noAssetsFoundHeader":"Cannot add point","noAssetFound":"The point must intersect with a feature on the map.","clearResultsAlert":"Are you sure? All the results for this trace will be discarded.","noTraceSupported":"This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations."}}
1
+ {"widgetLabel":"公用事業網路追蹤","widgetDescription":"在公用事業網路中執行追蹤的 widget。","globalStrings":{"selectTerminalPlaceholder":"選擇終端","remove":"移除","locateFeature":"定位","zoomToFeature":"縮放至","clearResults":"放棄","select":"選擇","cancel":"取消","ok":"確定"},"inputsStrings":{"headerTabInputs":"輸入","headerStartingPoint":"起點","startingPointHint":"新增追蹤的起點。","headerBarrier":"屏障","barrierButton":"屏障","barrierPointHint":"新增追蹤的屏障點。","barrierFilter":"篩選屏障","addPointOption":"新增一點","addPointHint":"按一下地圖以新增點","removeAllPoints":"全部移除","selectTraces":"選擇軌跡"},"tracingStrings":{"traceOperation":"追蹤類型","runTrace":"執行"},"resultsStrings":{"headerTabResults":"結果","resultsListOptions":"選項","ellipsesOptions":"選項","displayAttribute":"顯示屬性","sortBy":"排序方式","startOverButton":"全部清除","startOverValidation":"是否確定? 將遺失所有追蹤輸入和結果。","highlightTrace":"顯示圖形","noSelectionResults":"無法選擇圖徵。 啟用以改為顯示圖形。","viewFeatures":"圖徽","selectFeatures":"選擇圖徵","graphicColor":"選擇顏色","functionHeader":"函數","noValue":"沒有值"},"alertsStrings":{"startingPointAlertHeader":"起點遺失","startingPointAlert":"新增起點以執行此追蹤。","selectTraceAlertHeader":"未選擇追蹤類型","selectTraceAlert":"選擇要執行的追蹤類型。","NoRunAlertHeader":"無可用結果","noResultsInfo":"移至「輸入」頁籤以選擇追蹤類型,新增起點,再按一下「執行」以檢視結果。","traceExecuting":"追蹤進行中...","genericResultHeader":"追蹤結果","noAssetsFoundHeader":"無法新增點","noAssetFound":"點必須與地圖上的圖徵相交","clearResultsAlert":"是否確定? 將捨棄此追蹤的所有結果。","noTraceSupported":"此地圖不支援追蹤公用事業網路。 使用公用事業網路發佈 Web 地圖,並分享追蹤配置"}}
@@ -2,10 +2,10 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as e}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";function n(n){const a=new e;return a.attributes.add("position","vec3"),a.fragment.uniforms.add("cloudRadius","float").add("halfCubeMapSize","float").add("power","float").add("sigmaE","float").add("density","float").add("cloudSize","float").add("detailSize","float").add("smoothness","float").add("cloudHeight","float").add("coverage","float").add("viewMatrix","mat3").add("cloudShapeTexture","sampler2D"),a.vertex.code.add(t`void main(void) {
5
+ import{ATLAS_SIZE as t,TILE_ROWS as e,TILE_SIZE as n}from"../views/3d/environment/NoiseTextureAtlas.js";import{glsl as a}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as o}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";function i(i){const r=new o;return r.attributes.add("position","vec3"),r.fragment.uniforms.add("cloudRadius","float").add("halfCubeMapSize","float").add("power","float").add("sigmaE","float").add("density","float").add("cloudSize","float").add("detailSize","float").add("smoothness","float").add("cloudHeight","float").add("coverage","float").add("viewMatrix","mat3").add("cloudShapeTexture","sampler2D"),r.vertex.code.add(a`void main(void) {
6
6
  gl_Position = vec4(position, 1.0);
7
- }`),a.fragment.code.add(t`
8
- const int STEPS = ${0===n.steps?t`16`:1===n.steps?t`100`:t`200`};
7
+ }`),r.fragment.code.add(a`
8
+ const int STEPS = ${0===i.steps?a`16`:1===i.steps?a`100`:a`200`};
9
9
  const int STEPS_LIGHT = 6;
10
10
  const float stepL = 300.0 / float(STEPS_LIGHT);
11
11
 
@@ -22,4 +22,4 @@ gl_Position = vec4(position, 1.0);
22
22
 
23
23
  float saturate(float x) {
24
24
  return clamp(x, 0.0, 1.0);
25
- }`),a.fragment.code.add("\n float getCloudShape(vec3 pos, float pOffset) {\n const float textureWidth = 1560.0;\n const float dataWidth = 1560.0;\n const float tileRows = 12.0;\n const vec3 atlasDimensions = vec3(128.0, 128.0, 144.0);\n\n //Change from Y being height to Z being height\n vec3 p = pos.xzy;\n\n //Pixel coordinates of point in the 3D data\n vec3 coord = vec3(mod(p - pOffset * atlasDimensions, atlasDimensions));\n float f = fract(coord.z);\n float level = floor(coord.z);\n float tileY = floor(level / tileRows);\n float tileX = level - tileY * tileRows;\n\n //The data coordinates are offset by the x and y tile, the two boundary cells between each tile pair and the initial boundary cell on the first row/column\n vec2 offset = atlasDimensions.x * vec2(tileX, tileY) + 2.0 * vec2(tileX, tileY) + 1.0;\n vec2 pixel = coord.xy + offset;\n vec2 data = texture2D(cloudShapeTexture, mod(pixel, dataWidth) / textureWidth).xy;\n\n return 1.0 - mix(data.x, data.y, f);\n }"),a.fragment.code.add("\n float clouds(vec3 p) {\n float cloudVariations = getCloudShape(0.002 * p, 0.5);\n\n float cloud = saturate(0.5 * mix(0.0, 1.0, min(2.0 * coverage, 1.0)));\n cloud += (cloudVariations * 0.6 - 0.3) * ( -4.0 * (coverage * coverage - coverage));\n float heightFraction = saturate((length(p) - cloudRadius - cloudStart) / cloudHeight);\n\n //Round the bottom and top of the clouds\n cloud *= saturate(remap(heightFraction, 0.0, 0.25, 0.0, 1.0)) * saturate(remap(heightFraction, 0.75, 1.0, 1.0, 0.0));\n\n float shape = getCloudShape(cloudSize * p, 0.0);\n shape *= mix(0.0, 1.0, min(2.0 * (1.0 - coverage), 1.0));\n cloud = saturate(remap(cloud, shape, 1.0, 0.0, 1.0));\n\n if (cloud <= 0.0) {\n return 0.0;\n }\n\n return density * saturate(remap(cloud, smoothness * getCloudShape(detailSize * p, 0.0), 1.0, 0.0, 1.0));\n }"),a.fragment.code.add("\n vec2 sphereIntersections(vec3 start, vec3 dir, float radius) {\n float a = dot(dir, dir);\n float b = 2.0 * dot(dir, start);\n float c = dot(start, start) - (radius * radius);\n float d = (b * b) - 4.0 * a * c;\n\n if (d < 0.0) {\n return vec2(1e5, -1e5);\n }\n\n return vec2((-b - sqrt(d)) / (2.0 * a), (-b + sqrt(d)) / (2.0 * a));\n }\n \n float HenyeyGreenstein(float g, float costh) {\n return (1.0 / (4.0 * 3.1415)) * ((1.0 - g * g) / pow(1.0 + g * g - 2.0 * g * costh, 1.5));\n }\n "),a.fragment.code.add("\n vec3 multipleOctaves(float extinction, float mu, float stepL) {\n float attenuation = 1.0;\n float contribution = 1.0;\n float phaseAttenuation = 1.0;\n vec3 luminance = vec3(0);\n\n for (int i = 0; i < 4; i++) {\n float phase = mix(HenyeyGreenstein(0.0, mu), HenyeyGreenstein(0.3 * phaseAttenuation, mu), 0.7);\n luminance += contribution * phase * exp(-stepL * extinction * sigmaE * attenuation);\n attenuation *= 0.2;\n contribution *= 0.6;\n phaseAttenuation *= 0.5;\n }\n\n return luminance;\n }"),a.fragment.code.add("\n vec3 lightRay(vec3 org, vec3 p, float phaseFunction, float mu, vec3 sunDirection) {\n float lightRayDensity = clouds(p);\n lightRayDensity += clouds(p + sunDirection * 1.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 2.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 3.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 4.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 5.0 * stepL);\n \n vec3 beersLaw = multipleOctaves(lightRayDensity, mu, stepL);\n\n return mix(beersLaw * 2.0 * (1.0 - (exp(-stepL * lightRayDensity * 2.0 * sigmaE ))), beersLaw, 0.5 + 0.5 * mu);\n }"),a.fragment.code.add('\n vec3 mainRay(vec3 org, vec3 dir, vec3 sunDirection, float distToStart, float totalDistance, out float totalTransmittance) {\n\n // This is never true but having the if statement stops later loop unrolling, texture prefetching and WebGL context crashes\n if (dir.z < 0.0) {\n return vec3(0);\n }\n\n //Variable to track transmittance along view ray. Assume clear sky and attenuate light when encountering clouds.\n totalTransmittance = 1.0;\n\n float stepS = totalDistance / float(STEPS);\n float cameraHeight = length(org);\n\n //Alignment of view and light directions.\n float mu = 0.5 + 0.5 * dot(sunDirection, dir);\n float phaseFunction = mix(HenyeyGreenstein(-0.3, mu), HenyeyGreenstein(0.3, mu), 0.7);\n \n vec3 p = org + distToStart * dir;\n float dist = distToStart;\n vec3 color = vec3(0.0);\n\n for (int i = 0; i < STEPS; i++) {\n\n float sampleDensity = clouds(p);\n float sampleSigmaE = sampleDensity * sigmaE;\n\n if (sampleDensity > 0.0 ) {\n float ambient = mix((1.2), (1.6), saturate((length(p) - cloudRadius - cloudStart) / cloudHeight));\n\n vec3 luminance = sampleDensity * (ambient + power * phaseFunction * lightRay(org, p, phaseFunction, mu, sunDirection));\n float transmittance = exp(-sampleSigmaE * stepS);\n\n //Better energy conserving integration\n //"From Physically based sky, atmosphere and cloud rendering in Frostbite" 5.6\n color += totalTransmittance * (luminance - luminance * transmittance) / sampleSigmaE;\n\n totalTransmittance *= transmittance;\n\n //If ray combined transmittance is close to 0, nothing beyond this sample point is visible, so break early.\n if (totalTransmittance <= 0.001) {\n totalTransmittance = 0.0;\n break;\n }\n\n }\n\n dist += stepS;\n p = org + dir * dist;\n }\n\n return color;\n }'),a.fragment.code.add("\n void main() {\n vec3 rayDir = rayDirection(gl_FragCoord.xy);\n rayDir = normalize(viewMatrix * rayDir);\n\n vec3 viewPos = vec3(0, 0, cloudRadius + 1.0);\n\n bool hitsPlanet = rayDir.z < 0.0;\n\n if (hitsPlanet) {\n gl_FragColor = vec4(vec3(0), 1);\n return;\n }\n\n vec2 rayStartIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart);\n vec2 rayEndIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart + cloudHeight);\n float distToStart = rayStartIntersect.y;\n float totalDistance = rayEndIntersect.y - distToStart;\n\n float totalTransmittance = 1.0;\n vec3 sunDirection = normalize(vec3(0, 0, 1));\n vec3 col = 0.5 * mainRay(viewPos, rayDir, sunDirection, distToStart, totalDistance, totalTransmittance).rgb;\n\n gl_FragColor = vec4(col, totalTransmittance);\n }\n "),a}const a=Object.freeze({__proto__:null,build:n});export{a as C,n as b};
25
+ }`),r.fragment.code.add(`\n float getCloudShape(vec3 pos, float pOffset) {\n const float textureWidth = float(${t});\n const float dataWidth = float(${t});\n const float tileRows = float(${e});\n const vec3 atlasDimensions = vec3(float(${n}), float(${n}), tileRows * tileRows);\n\n //Change from Y being height to Z being height\n vec3 p = pos.xzy;\n\n //Pixel coordinates of point in the 3D data\n vec3 coord = vec3(mod(p - pOffset * atlasDimensions, atlasDimensions));\n float f = fract(coord.z);\n float level = floor(coord.z);\n float tileY = floor(level / tileRows);\n float tileX = level - tileY * tileRows;\n\n //The data coordinates are offset by the x and y tile, the two boundary cells between each tile pair and the initial boundary cell on the first row/column\n vec2 offset = atlasDimensions.x * vec2(tileX, tileY) + 2.0 * vec2(tileX, tileY) + 1.0;\n vec2 pixel = coord.xy + offset;\n vec2 data = texture2D(cloudShapeTexture, mod(pixel, dataWidth) / textureWidth).xy;\n\n return 1.0 - mix(data.x, data.y, f);\n }`),r.fragment.code.add("\n float clouds(vec3 p) {\n float cloudVariations = getCloudShape(0.002 * p, 0.5);\n\n float cloud = saturate(0.5 * mix(0.0, 1.0, min(2.0 * coverage, 1.0)));\n cloud += (cloudVariations * 0.6 - 0.3) * ( -4.0 * (coverage * coverage - coverage));\n float heightFraction = saturate((length(p) - cloudRadius - cloudStart) / cloudHeight);\n\n //Round the bottom and top of the clouds\n cloud *= saturate(remap(heightFraction, 0.0, 0.25, 0.0, 1.0)) * saturate(remap(heightFraction, 0.75, 1.0, 1.0, 0.0));\n\n float shape = getCloudShape(cloudSize * p, 0.0);\n shape *= mix(0.0, 1.0, min(2.0 * (1.0 - coverage), 1.0));\n cloud = saturate(remap(cloud, shape, 1.0, 0.0, 1.0));\n\n if (cloud <= 0.0) {\n return 0.0;\n }\n\n return density * saturate(remap(cloud, smoothness * getCloudShape(detailSize * p, 0.0), 1.0, 0.0, 1.0));\n }"),r.fragment.code.add("\n vec2 sphereIntersections(vec3 start, vec3 dir, float radius) {\n float a = dot(dir, dir);\n float b = 2.0 * dot(dir, start);\n float c = dot(start, start) - (radius * radius);\n float d = (b * b) - 4.0 * a * c;\n\n if (d < 0.0) {\n return vec2(1e5, -1e5);\n }\n\n return vec2((-b - sqrt(d)) / (2.0 * a), (-b + sqrt(d)) / (2.0 * a));\n }\n\n float HenyeyGreenstein(float g, float costh) {\n return (1.0 / (4.0 * 3.1415)) * ((1.0 - g * g) / pow(1.0 + g * g - 2.0 * g * costh, 1.5));\n }\n "),r.fragment.code.add("\n vec3 multipleOctaves(float extinction, float mu, float stepL) {\n float attenuation = 1.0;\n float contribution = 1.0;\n float phaseAttenuation = 1.0;\n vec3 luminance = vec3(0);\n\n for (int i = 0; i < 4; i++) {\n float phase = mix(HenyeyGreenstein(0.0, mu), HenyeyGreenstein(0.3 * phaseAttenuation, mu), 0.7);\n luminance += contribution * phase * exp(-stepL * extinction * sigmaE * attenuation);\n attenuation *= 0.2;\n contribution *= 0.6;\n phaseAttenuation *= 0.5;\n }\n\n return luminance;\n }"),r.fragment.code.add("\n vec3 lightRay(vec3 org, vec3 p, float phaseFunction, float mu, vec3 sunDirection) {\n float lightRayDensity = clouds(p);\n lightRayDensity += clouds(p + sunDirection * 1.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 2.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 3.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 4.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 5.0 * stepL);\n\n vec3 beersLaw = multipleOctaves(lightRayDensity, mu, stepL);\n\n return mix(beersLaw * 2.0 * (1.0 - (exp(-stepL * lightRayDensity * 2.0 * sigmaE ))), beersLaw, 0.5 + 0.5 * mu);\n }"),r.fragment.code.add('\n vec3 mainRay(vec3 org, vec3 dir, vec3 sunDirection, float distToStart, float totalDistance, out float totalTransmittance) {\n\n // This is never true but having the if statement stops later loop unrolling, texture prefetching and WebGL context crashes\n if (dir.z < 0.0) {\n return vec3(0);\n }\n\n //Variable to track transmittance along view ray. Assume clear sky and attenuate light when encountering clouds.\n totalTransmittance = 1.0;\n\n float stepS = totalDistance / float(STEPS);\n float cameraHeight = length(org);\n\n //Alignment of view and light directions.\n float mu = 0.5 + 0.5 * dot(sunDirection, dir);\n float phaseFunction = mix(HenyeyGreenstein(-0.3, mu), HenyeyGreenstein(0.3, mu), 0.7);\n\n vec3 p = org + distToStart * dir;\n float dist = distToStart;\n vec3 color = vec3(0.0);\n\n for (int i = 0; i < STEPS; i++) {\n\n float sampleDensity = clouds(p);\n float sampleSigmaE = sampleDensity * sigmaE;\n\n if (sampleDensity > 0.0 ) {\n float ambient = mix((1.2), (1.6), saturate((length(p) - cloudRadius - cloudStart) / cloudHeight));\n\n vec3 luminance = sampleDensity * (ambient + power * phaseFunction * lightRay(org, p, phaseFunction, mu, sunDirection));\n float transmittance = exp(-sampleSigmaE * stepS);\n\n //Better energy conserving integration\n //"From Physically based sky, atmosphere and cloud rendering in Frostbite" 5.6\n color += totalTransmittance * (luminance - luminance * transmittance) / sampleSigmaE;\n\n totalTransmittance *= transmittance;\n\n //If ray combined transmittance is close to 0, nothing beyond this sample point is visible, so break early.\n if (totalTransmittance <= 0.001) {\n totalTransmittance = 0.0;\n break;\n }\n\n }\n\n dist += stepS;\n p = org + dir * dist;\n }\n\n return color;\n }'),r.fragment.code.add("\n void main() {\n vec3 rayDir = rayDirection(gl_FragCoord.xy);\n rayDir = normalize(viewMatrix * rayDir);\n\n vec3 viewPos = vec3(0, 0, cloudRadius + 1.0);\n\n bool hitsPlanet = rayDir.z < 0.0;\n\n if (hitsPlanet) {\n gl_FragColor = vec4(vec3(0), 1);\n return;\n }\n\n vec2 rayStartIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart);\n vec2 rayEndIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart + cloudHeight);\n float distToStart = rayStartIntersect.y;\n float totalDistance = rayEndIntersect.y - distToStart;\n\n float totalTransmittance = 1.0;\n vec3 sunDirection = normalize(vec3(0, 0, 1));\n vec3 col = 0.5 * mainRay(viewPos, rayDir, sunDirection, distToStart, totalDistance, totalTransmittance).rgb;\n\n gl_FragColor = vec4(col, totalTransmittance);\n }\n "),r}const r=Object.freeze({__proto__:null,build:i});export{r as C,i as b};
@@ -2,7 +2,7 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import{Slice 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{OutputDepth as i}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{ReadLinearDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadLinearDepth.glsl.js";import{LineStipple as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{multipassTerrainTest as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import{PiUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{symbolAlphaCutoff as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/AlphaDiscard.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{glsl as d}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as p}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";const c=1;function f(f){const m=new p,g=!0,h=f.stippleEnabled&&f.roundCaps,u=f.falloffEnabled||h,D=f.innerColorEnabled||g,x=f.stippleEnabled&&f.stippleScaleWithLineWidth||f.roundCaps||g,S=f.stippleEnabled&&f.stippleScaleWithLineWidth;return m.extensions.add("GL_OES_standard_derivatives"),m.include(o),m.include(t,f),m.include(a,{...f,stippleRequiresStretchMeasure:h}),1===f.output&&m.include(i,f),m.vertex.uniforms.add("proj","mat4").add("view","mat4").add("cameraNearFar","vec2").add("pixelRatio","float").add("miterLimit","float").add("screenSize","vec2"),m.attributes.add("position","vec3"),m.attributes.add("subdivisionFactor","float"),m.attributes.add("uv0","vec2"),m.attributes.add("auxpos1","vec3"),m.attributes.add("auxpos2","vec3"),m.varyings.add("vColor","vec4"),m.varyings.add("vpos","vec3"),m.varyings.add("linearDepth","float"),f.multipassTerrainEnabled&&m.varyings.add("depth","float"),x&&m.varyings.add("vLineWidth","float"),S&&m.varyings.add("vLineSizeInv","float"),D&&m.varyings.add("vLineDistance","float"),u&&m.varyings.add("vLineDistanceNorm","float"),f.falloffEnabled&&m.fragment.uniforms.add("falloff","float"),f.innerColorEnabled&&(m.fragment.uniforms.add("innerColor","vec4"),m.fragment.uniforms.add("innerWidth","float")),f.roundCaps&&m.varyings.add("vCapPosition","vec2"),h&&m.varyings.add("vStipplePatternStretch","float"),m.vertex.code.add(d`#define PERPENDICULAR(v) vec2(v.y, -v.x);
5
+ import{Slice 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{OutputDepth as i}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{ReadLinearDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadLinearDepth.glsl.js";import{LineStipple as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{multipassTerrainTest as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{symbolAlphaCutoff as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/AlphaDiscard.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{glsl as p}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as d}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";const c=1;function v(v){const g=new d,m=v.stippleEnabled&&v.roundCaps,f=v.falloffEnabled||m,h=v.innerColorEnabled,u=v.stippleEnabled&&v.stippleScaleWithLineWidth||v.roundCaps,D=v.stippleEnabled&&v.stippleScaleWithLineWidth;return g.extensions.add("GL_OES_standard_derivatives"),g.include(a),g.include(t,v),g.include(r,{...v,stippleRequiresStretchMeasure:m}),1===v.output&&g.include(i,v),g.vertex.uniforms.add("proj","mat4").add("view","mat4").add("cameraNearFar","vec2").add("pixelRatio","float").add("miterLimit","float").add("screenSize","vec2"),g.attributes.add("position","vec3"),g.attributes.add("subdivisionFactor","float"),g.attributes.add("uv0","vec2"),g.attributes.add("auxpos1","vec3"),g.attributes.add("auxpos2","vec3"),g.varyings.add("vColor","vec4"),g.varyings.add("vpos","vec3"),g.varyings.add("linearDepth","float"),v.multipassTerrainEnabled&&g.varyings.add("depth","float"),u&&g.varyings.add("vLineWidth","float"),D&&g.varyings.add("vLineSizeInv","float"),h&&g.varyings.add("vLineDistance","float"),f&&g.varyings.add("vLineDistanceNorm","float"),v.falloffEnabled&&g.fragment.uniforms.add("falloff","float"),v.innerColorEnabled&&(g.fragment.uniforms.add("innerColor","vec4"),g.fragment.uniforms.add("innerWidth","float")),v.roundCaps&&g.varyings.add("vCapPosition","vec2"),m&&g.varyings.add("vStipplePatternStretch","float"),g.vertex.code.add(p`#define PERPENDICULAR(v) vec2(v.y, -v.x);
6
6
  float interp(float ncp, vec4 a, vec4 b) {
7
7
  return (-ncp - a.z) / (b.z - a.z);
8
8
  }
@@ -11,11 +11,11 @@ float s = sin(a);
11
11
  float c = cos(a);
12
12
  mat2 m = mat2(c, -s, s, c);
13
13
  return m * v;
14
- }`),m.vertex.code.add(d`vec4 projectAndScale(vec4 pos) {
14
+ }`),g.vertex.code.add(p`vec4 projectAndScale(vec4 pos) {
15
15
  vec4 posNdc = proj * pos;
16
16
  posNdc.xy *= screenSize / posNdc.w;
17
17
  return posNdc;
18
- }`),m.vertex.code.add(d`
18
+ }`),g.vertex.code.add(p`
19
19
  void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex) {
20
20
  float vnp = cameraNearFar[0] * 0.99;
21
21
 
@@ -51,18 +51,19 @@ return posNdc;
51
51
  }
52
52
  }
53
53
 
54
- ${f.multipassTerrainEnabled?"depth = pos.z;":""}
54
+ ${v.multipassTerrainEnabled?"depth = pos.z;":""}
55
55
  linearDepth = (-pos.z - cameraNearFar[0]) / (cameraNearFar[1] - cameraNearFar[0]);
56
56
 
57
57
  pos = projectAndScale(pos);
58
58
  next = projectAndScale(next);
59
59
  prev = projectAndScale(prev);
60
60
  }
61
- `),m.vertex.code.add(d`
61
+ `),g.vertex.code.add(p`
62
62
  void main(void) {
63
63
  // unpack values from uv0.y
64
64
  bool isStartVertex = abs(abs(uv0.y)-3.0) == 1.0;
65
65
 
66
+ float coverage = 1.0;
66
67
  vpos = position;
67
68
 
68
69
  // Check for special value of uv0.y which is used by the Renderer when graphics
@@ -78,13 +79,19 @@ return posNdc;
78
79
  float lineSize = getSize();
79
80
  float lineWidth = lineSize * pixelRatio;
80
81
 
81
- // adding alpha feathering to reduce aliasing
82
- if( lineWidth > 0.0 ){
83
- lineWidth += ${v}*pixelRatio;
84
- }
82
+ ${u?p`vLineWidth = lineWidth;`:""}
83
+ ${D?p`vLineSizeInv = 1.0 / lineSize;`:""}
85
84
 
86
- ${x?d`vLineWidth = lineWidth;`:""}
87
- ${S?d`vLineSizeInv = 1.0 / lineSize;`:""}
85
+ // convert sub-pixel coverage to alpha
86
+ if (lineWidth < 1.0) {
87
+ coverage = lineWidth;
88
+ lineWidth = 1.0;
89
+ }else{
90
+ // Ribbon lines cannot properly render non-integer sizes. Round width to integer size if
91
+ // larger than one for better quality. Note that we do render < 1 pixels more or less correctly
92
+ // so we only really care to round anything larger than 1.
93
+ lineWidth = floor(lineWidth + 0.5);
94
+ }
88
95
 
89
96
  vec4 pos = view * vec4(position.xyz, 1.0);
90
97
  vec4 prev = view * vec4(auxpos1.xyz, 1.0);
@@ -97,10 +104,10 @@ return posNdc;
97
104
 
98
105
  float leftLen = length(left);
99
106
  float rightLen = length(right);
100
- `),f.stippleEnabled&&m.vertex.code.add(d`float isEndVertex = float(!isStartVertex);
107
+ `),v.stippleEnabled&&g.vertex.code.add(p`float isEndVertex = float(!isStartVertex);
101
108
  vec4 segmentInfo = mix(vec4(pos.xy, right), vec4(prev.xy, left), isEndVertex);
102
109
  vec2 segmentOrigin = segmentInfo.xy;
103
- vec2 segment = segmentInfo.zw;`),m.vertex.code.add(d`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
110
+ vec2 segment = segmentInfo.zw;`),g.vertex.code.add(p`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
104
111
  right = (rightLen > 0.001) ? right/rightLen : vec2(0.0, 0.0);
105
112
  vec2 capDisplacementDir = vec2(0, 0);
106
113
  vec2 joinDisplacementDir = vec2(0, 0);
@@ -116,7 +123,7 @@ if (!isOutside) {
116
123
  displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
117
124
  }
118
125
  }
119
- if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),f.roundJoins?m.vertex.code.add(d`
126
+ if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),v.roundJoins?g.vertex.code.add(p`
120
127
  vec2 startDir;
121
128
  vec2 endDir;
122
129
 
@@ -138,11 +145,11 @@ if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),f.roundJoins?m.
138
145
  endDir = normalize(endDir);
139
146
  endDir = PERPENDICULAR(endDir);
140
147
 
141
- float factor = ${f.stippleEnabled?d`min(1.0, subdivisionFactor * ${d.float((c+2)/(c+1))})`:d`subdivisionFactor`};
148
+ float factor = ${v.stippleEnabled?p`min(1.0, subdivisionFactor * ${p.float((c+2)/(c+1))})`:p`subdivisionFactor`};
142
149
 
143
150
  float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));
144
151
  joinDisplacementDir = rotate(startDir, -sign(uv0.y) * factor * rotationAngle);
145
- `):m.vertex.code.add(d`if (leftLen < 0.001) {
152
+ `):g.vertex.code.add(p`if (leftLen < 0.001) {
146
153
  joinDisplacementDir = right;
147
154
  }
148
155
  else if (rightLen < 0.001) {
@@ -152,7 +159,7 @@ else {
152
159
  joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
153
160
  }
154
161
  joinDisplacementDir = normalize(joinDisplacementDir);
155
- joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);`),m.vertex.code.add(d`displacementLen = lineWidth;
162
+ joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);`),g.vertex.code.add(p`displacementLen = lineWidth;
156
163
  }
157
164
  } else {
158
165
  if (leftLen < 0.001) {
@@ -169,33 +176,33 @@ joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);
169
176
  displacementLen = lineWidth;
170
177
  capDisplacementDir = isStartVertex ? -right : left;
171
178
  capDisplacementDir *= subdivisionFactor;
172
- }`),m.vertex.code.add(d`
179
+ }`),g.vertex.code.add(p`
173
180
  // Displacement (in pixels) caused by join/or cap
174
181
  vec2 dpos = joinDisplacementDir * sign(uv0.y) * displacementLen + capDisplacementDir * displacementLen;
175
182
 
176
- ${u||D?d`float lineDistNorm = sign(uv0.y) * pos.w;`:""}
183
+ ${f||h?p`float lineDistNorm = sign(uv0.y) * pos.w;`:""}
177
184
 
178
- ${D?d`vLineDistance = lineWidth * lineDistNorm;`:""}
179
- ${u?d`vLineDistanceNorm = lineDistNorm;`:""}
185
+ ${h?p`vLineDistance = lineWidth * lineDistNorm;`:""}
186
+ ${f?p`vLineDistanceNorm = lineDistNorm;`:""}
180
187
 
181
- ${f.roundCaps?d`vCapPosition = isJoin ? vec2(0.0) : dpos;`:""}
188
+ ${v.roundCaps?p`vCapPosition = isJoin ? vec2(0.0) : dpos;`:""}
182
189
 
183
190
  pos.xy += dpos;
184
- `),f.stippleEnabled&&(f.draped||m.vertex.code.add(d`vec3 segmentCenter = mix((auxpos2 + position) * 0.5, (position + auxpos1) * 0.5, isEndVertex);
185
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),m.vertex.code.add(d`float segmentLengthScreenDouble = length(segment);
191
+ `),v.stippleEnabled&&(v.draped||g.vertex.code.add(p`vec3 segmentCenter = mix((auxpos2 + position) * 0.5, (position + auxpos1) * 0.5, isEndVertex);
192
+ float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),g.vertex.code.add(p`float segmentLengthScreenDouble = length(segment);
186
193
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
187
194
  float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
188
- float segmentLengthRender = length(mix(auxpos2 - position, position - auxpos1, isEndVertex));`),f.draped?m.vertex.code.add(d`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
189
- float startPseudoScreen = uv0.x * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):m.vertex.code.add(d`float startPseudoScreen = mix(uv0.x, uv0.x - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
190
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),m.vertex.code.add(d`
191
- float patternLength = ${f.stippleScaleWithLineWidth?"lineSize * ":""} stipplePatternPixelSize;
195
+ float segmentLengthRender = length(mix(auxpos2 - position, position - auxpos1, isEndVertex));`),v.draped?g.vertex.code.add(p`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
196
+ float startPseudoScreen = uv0.x * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):g.vertex.code.add(p`float startPseudoScreen = mix(uv0.x, uv0.x - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
197
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),g.vertex.code.add(p`
198
+ float patternLength = ${v.stippleScaleWithLineWidth?"lineSize * ":""} stipplePatternPixelSize;
192
199
 
193
200
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the fragment shader
194
201
  // The 0.5 factor on the screen length is to correct for pixel ratio (it is calculated at double resolution)
195
- ${h?d`
202
+ ${m?p`
196
203
  vec3 stippleSegmentInfo = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
197
204
  vStippleDistanceLimits = stippleSegmentInfo.xy;
198
- vStipplePatternStretch = stippleSegmentInfo.z;`:d`
205
+ vStipplePatternStretch = stippleSegmentInfo.z;`:p`
199
206
  vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);`}
200
207
 
201
208
  vStippleDistance = mix(vStippleDistanceLimits.x, vStippleDistanceLimits.y, isEndVertex);
@@ -214,22 +221,23 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
214
221
  // Cancel out perspective correct interpolation because we want this length the really represent the screen distance
215
222
  vStippleDistanceLimits *= pos.w;
216
223
  vStippleDistance *= pos.w;
217
- `)),m.vertex.code.add(d`pos.xy = pos.xy / screenSize * pos.w;
224
+ `)),g.vertex.code.add(p`pos.xy = pos.xy / screenSize * pos.w;
218
225
  vColor = getColor();
226
+ vColor.a *= coverage;
219
227
  gl_Position = pos;
220
228
  }
221
- }`),f.multipassTerrainEnabled&&(m.fragment.include(n),m.include(r,f)),m.include(e,f),m.fragment.uniforms.add("intrinsicColor","vec4"),m.fragment.include(l),m.fragment.code.add(d`
229
+ }`),v.multipassTerrainEnabled&&(g.fragment.include(n),g.include(o,v)),g.include(e,v),g.fragment.uniforms.add("intrinsicColor","vec4"),g.fragment.include(l),g.fragment.code.add(p`
222
230
  void main() {
223
231
  discardBySlice(vpos);
224
- ${f.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""}
225
- `),f.roundCaps&&m.fragment.code.add(d`
232
+ ${v.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""}
233
+ `),v.roundCaps&&g.fragment.code.add(p`
226
234
  float fragmentRadius = length(vCapPosition);
227
235
  float fragmentSDF = (fragmentRadius - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
228
236
  float capCoverage = clamp(0.5 - fragmentSDF, 0.0, 1.0);
229
- if (capCoverage < ${d.float(s)}) {
237
+ if (capCoverage < ${p.float(s)}) {
230
238
  discard;
231
239
  }
232
- `),h?m.fragment.code.add(d`
240
+ `),m?g.fragment.code.add(p`
233
241
  vec2 stipplePosition = vec2(
234
242
  max(1.0 - getStippleSDF() * 2.0 * vStipplePatternStretch, 0.0),
235
243
  vLineDistanceNorm * gl_FragCoord.w
@@ -237,34 +245,20 @@ gl_Position = pos;
237
245
  float stippleRadius = length(stipplePosition * vLineWidth);
238
246
  float stippleCapSDF = (stippleRadius - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
239
247
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
240
- float stippleAlpha = step(${d.float(s)}, stippleCoverage);
241
- `):m.fragment.code.add(d`float stippleAlpha = getStippleAlpha();`),m.fragment.code.add(d`discardByStippleAlpha(stippleAlpha, stippleAlphaColorDiscard);
242
- vec4 color = intrinsicColor * vColor;`),m.fragment.uniforms.add("pixelRatio","float"),f.innerColorEnabled&&m.fragment.code.add(d`float distToInner = abs(vLineDistance * gl_FragCoord.w) - innerWidth;
248
+ float stippleAlpha = step(${p.float(s)}, stippleCoverage);
249
+ `):g.fragment.code.add(p`float stippleAlpha = getStippleAlpha();`),g.fragment.code.add(p`discardByStippleAlpha(stippleAlpha, stippleAlphaColorDiscard);
250
+ vec4 color = intrinsicColor * vColor;`),g.fragment.uniforms.add("pixelRatio","float"),v.innerColorEnabled&&g.fragment.code.add(p`float distToInner = abs(vLineDistance * gl_FragCoord.w) - innerWidth;
243
251
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
244
252
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
245
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),m.fragment.code.add(d`vec4 finalColor = blendStipple(color, stippleAlpha);`),m.fragment.code.add(d`
246
- float featherStartDistance = clamp(vLineWidth-${v}*pixelRatio, 0.0, vLineWidth);
247
- float value = abs(vLineDistance)*gl_FragCoord.w;
248
- float feather = 1.0;
249
- if( featherStartDistance > 1.5 ){
250
- // if line is larger than a bit more than one pixel (hand tuned threshold),
251
- // we apply a falloff between feather start and line width
252
- feather = (value-featherStartDistance)/(vLineWidth-featherStartDistance);
253
- }else{
254
- // otherwise we do a falloff starting from the line center (this way lines smaller than one pixel
255
- // will be alpha blended according to pixel coverage)
256
- feather = value/vLineWidth;
257
- }
258
- finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);
259
- `),f.falloffEnabled&&m.fragment.code.add(d`finalColor.a *= pow(max(0.0, 1.0 - abs(vLineDistanceNorm * gl_FragCoord.w)), falloff);`),m.fragment.code.add(d`
260
- if (finalColor.a < ${d.float(s)}) {
253
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),g.fragment.code.add(p`vec4 finalColor = blendStipple(color, stippleAlpha);`),v.falloffEnabled&&g.fragment.code.add(p`finalColor.a *= pow(max(0.0, 1.0 - abs(vLineDistanceNorm * gl_FragCoord.w)), falloff);`),g.fragment.code.add(p`
254
+ if (finalColor.a < ${p.float(s)}) {
261
255
  discard;
262
256
  }
263
257
 
264
- ${7===f.output?d`gl_FragColor = vec4(finalColor.a);`:""}
265
- ${0===f.output?d`gl_FragColor = highlightSlice(finalColor, vpos);`:""}
266
- ${0===f.output&&f.OITEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""}
267
- ${4===f.output?d`gl_FragColor = vec4(1.0);`:""}
268
- ${1===f.output?d`outputDepth(linearDepth);`:""}
258
+ ${7===v.output?p`gl_FragColor = vec4(finalColor.a);`:""}
259
+ ${0===v.output?p`gl_FragColor = highlightSlice(finalColor, vpos);`:""}
260
+ ${0===v.output&&v.OITEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""}
261
+ ${4===v.output?p`gl_FragColor = vec4(1.0);`:""}
262
+ ${1===v.output?p`outputDepth(linearDepth);`:""}
269
263
  }
270
- `),m}const v=d`1.0`,m=Object.freeze({__proto__:null,NUM_ROUND_JOIN_SUBDIVISIONS:c,build:f});export{c as N,m as R,f as b};
264
+ `),g}const g=Object.freeze({__proto__:null,NUM_ROUND_JOIN_SUBDIVISIONS:c,build:v});export{c as N,g as R,v as b};
package/config.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";import{buildDate as r}from"./support/revision.js";var s;const t={apiKey:void 0,applicationUrl:null==(s=globalThis.location)?void 0:s.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryService:null,geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",portalUrl:"https://www.arcgis.com",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],maxUrlLength:2e3,proxyRules:[],proxyUrl:null,timeout:6e4,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath){const e="4.22.0";t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}-next.${r}/assets`}t.baseUrl&&console.warn("[esri.config]","baseUrl has been replaced by assetsPath"),Object.defineProperty(t,"baseUrl",{set(){console.warn("[esri.config]","baseUrl has been replaced by assetsPath")}}),t.request.corsEnabledServers=[],t.request.corsEnabledServers.push=function(){return console.warn("[esri.config]","request.corsEnabledServers is not supported and will be removed in a future release. See http://esriurl.com/cors8664"),0};export{t as default};
5
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";var s;const r={apiKey:void 0,applicationUrl:null==(s=globalThis.location)?void 0:s.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryService:null,geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",portalUrl:"https://www.arcgis.com",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],maxUrlLength:2e3,proxyRules:[],proxyUrl:null,timeout:6e4,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(r,globalThis.esriConfig,!0),delete r.has),!r.assetsPath){const e="4.22.1";r.assetsPath=`https://js.arcgis.com/${e.slice(0,-2)}/@arcgis/core/assets`}r.baseUrl&&console.warn("[esri.config]","baseUrl has been replaced by assetsPath"),Object.defineProperty(r,"baseUrl",{set(){console.warn("[esri.config]","baseUrl has been replaced by assetsPath")}}),r.request.corsEnabledServers=[],r.request.corsEnabledServers.push=function(){return console.warn("[esri.config]","request.corsEnabledServers is not supported and will be removed in a future release. See http://esriurl.com/cors8664"),0};export{r as default};
package/copyright.txt CHANGED
@@ -1116,31 +1116,59 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1116
1116
 
1117
1117
  esri/libs/i3s
1118
1118
 
1119
- https://github.com/open-source-parsers/jsoncpp
1119
+ RapidJSON
1120
+ https://github.com/Tencent/rapidjson/
1120
1121
 
1121
- Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
1122
+ Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
1122
1123
 
1123
1124
  MIT License
1124
1125
 
1125
- Permission is hereby granted, free of charge, to any person
1126
- obtaining a copy of this software and associated documentation
1127
- files (the "Software"), to deal in the Software without
1128
- restriction, including without limitation the rights to use, copy,
1129
- modify, merge, publish, distribute, sublicense, and/or sell copies
1130
- of the Software, and to permit persons to whom the Software is
1131
- furnished to do so, subject to the following conditions:
1126
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this
1127
+ software and associated documentation files (the "Software"), to deal in the Software
1128
+ without restriction, including without limitation the rights to use, copy, modify,
1129
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
1130
+ permit persons to whom the Software is furnished to do so, subject to the following
1131
+ conditions:
1132
1132
 
1133
- The above copyright notice and this permission notice shall be
1134
- included in all copies or substantial portions of the Software.
1133
+ The above copyright notice and this permission notice shall be included in all copies
1134
+ or substantial portions of the Software.
1135
1135
 
1136
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1137
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1138
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1139
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1140
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1141
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1142
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1143
- SOFTWARE.
1136
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
1137
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
1138
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
1139
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
1140
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
1141
+ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1142
+
1143
+ -------------------------------------------------------------------------------
1144
+
1145
+ esri/libs/i3s
1146
+
1147
+ The msinttypes r29
1148
+ Copyright (c) 2006-2013 Alexander Chemeris
1149
+ All rights reserved.
1150
+
1151
+ Redistribution and use in source and binary forms, with or without modification, are
1152
+ permitted provided that the following conditions are met:
1153
+
1154
+ * Redistributions of source code must retain the above copyright notice, this list of
1155
+ conditions and the following disclaimer.
1156
+ * Redistributions in binary form must reproduce the above copyright notice, this list
1157
+ of conditions and the following disclaimer in the documentation and/or other materials
1158
+ provided with the distribution.
1159
+ * Neither the name of copyright holder nor the names of its contributors may be used
1160
+ to endorse or promote products derived from this software without specific prior
1161
+ written permission.
1162
+
1163
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
1164
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1165
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
1166
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1167
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1168
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1169
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
1170
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1171
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1144
1172
 
1145
1173
  -------------------------------------------------------------------------------
1146
1174