@arcgis/core 5.2.0-next.63 → 5.2.0-next.64

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 (382) hide show
  1. package/arcade/Feature.js +1 -1
  2. package/arcade/ImmutableArray.js +1 -1
  3. package/arcade/ImmutablePathArray.js +1 -1
  4. package/arcade/ImmutablePointArray.js +1 -1
  5. package/arcade/Pixel.js +1 -1
  6. package/arcade/Voxel.js +1 -1
  7. package/arcade/arcadeAsyncRuntime.js +1 -1
  8. package/arcade/arcadeCompiler.js +1 -1
  9. package/arcade/arcadeRuntime.js +1 -1
  10. package/arcade/containerUtils.js +1 -1
  11. package/arcade/debug.js +1 -1
  12. package/arcade/deepClone.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/functions/date.js +1 -1
  15. package/arcade/functions/feature.js +1 -1
  16. package/arcade/functions/featuresetbase.js +1 -1
  17. package/arcade/functions/featuresetgeom.js +1 -1
  18. package/arcade/functions/featuresetstats.js +1 -1
  19. package/arcade/functions/featuresetstring.js +1 -1
  20. package/arcade/functions/fieldStats.js +1 -1
  21. package/arcade/functions/geomasync.js +1 -1
  22. package/arcade/functions/geometry.js +1 -1
  23. package/arcade/functions/geomsync.js +1 -1
  24. package/arcade/functions/knowledgegraph.js +1 -1
  25. package/arcade/functions/maths.js +1 -1
  26. package/arcade/functions/stats.js +1 -1
  27. package/arcade/functions/string.js +1 -1
  28. package/arcade/functions/track.js +1 -1
  29. package/arcade/geometry/functions.js +1 -1
  30. package/arcade/languageUtils.js +1 -1
  31. package/arcade.js +1 -1
  32. package/arcgisGlobal.d.ts +9 -0
  33. package/assets/esri/core/workers/RemoteClient.js +1 -1
  34. package/assets/esri/core/workers/chunks/{44e64186318728d1be51.js → 067b00498ae85f635f60.js} +1 -1
  35. package/assets/esri/core/workers/chunks/0977f4d77c36175c2895.js +1 -0
  36. package/assets/esri/core/workers/chunks/{62f3ca0719ac6bc76512.js → 09c43bcb09aad02e83a9.js} +1 -1
  37. package/assets/esri/core/workers/chunks/0b20f92bae2b4c40d299.js +1 -0
  38. package/assets/esri/core/workers/chunks/0c3c311400ee352187ea.js +1 -0
  39. package/assets/esri/core/workers/chunks/0c582abc8d25249eb530.js +1 -0
  40. package/assets/esri/core/workers/chunks/0d6776055e9b34c14151.js +1 -0
  41. package/assets/esri/core/workers/chunks/0d7d54e74b5639a0be6e.js +1 -0
  42. package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +1 -0
  43. package/assets/esri/core/workers/chunks/0e6b6fcc55cc43ede1fc.js +1 -0
  44. package/assets/esri/core/workers/chunks/{bcb5017500d144b73908.js → 126f1f6b355723db6c4f.js} +1 -1
  45. package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +1 -0
  46. package/assets/esri/core/workers/chunks/{b2c0262c4a76b8a86200.js → 149284464115981694ff.js} +1 -1
  47. package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +1 -0
  48. package/assets/esri/core/workers/chunks/1840d74ebae777a0200b.js +1 -0
  49. package/assets/esri/core/workers/chunks/19bf6826e7d9a4d52035.js +1 -0
  50. package/assets/esri/core/workers/chunks/1bfbdec791e19f5a2534.js +1 -0
  51. package/assets/esri/core/workers/chunks/1d8280f63a6698e74f20.js +1 -0
  52. package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js → 242cad472fbc38b24dbc.js} +2 -2
  53. package/assets/esri/core/workers/chunks/25197ecb324d6f08e03e.js +1 -0
  54. package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +1 -0
  55. package/assets/esri/core/workers/chunks/25999b6f96ec305a7679.js +1 -0
  56. package/assets/esri/core/workers/chunks/259bdacfb7b0f866a8d0.js +1 -0
  57. package/assets/esri/core/workers/chunks/28565756f884d0851003.js +1 -0
  58. package/assets/esri/core/workers/chunks/2a5a165848413764381b.js +1 -0
  59. package/assets/esri/core/workers/chunks/2e7a5bb740281ef59199.js +1 -0
  60. package/assets/esri/core/workers/chunks/{285a5bd708f0fe1c620c.js → 2ea3ca68cfa4d34e8f3b.js} +1 -1
  61. package/assets/esri/core/workers/chunks/2f87a49bdd00f899d81d.js +1 -0
  62. package/assets/esri/core/workers/chunks/{37a95f097533bad1b338.js → 302d91b7c480c6c9304b.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{3d6d2b42ba2ad7086d5d.js → 3b493e8043ec1a2a5d96.js} +1 -1
  64. package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +1 -0
  65. package/assets/esri/core/workers/chunks/{a833fc9250635eb4152f.js → 41f7f3615d3ecb87c59a.js} +1 -1
  66. package/assets/esri/core/workers/chunks/{95b3b8fe45ef4ac6b277.js → 450bc48a7389607bce1e.js} +1 -1
  67. package/assets/esri/core/workers/chunks/465a050fd838ee8eddf3.js +1 -0
  68. package/assets/esri/core/workers/chunks/{0d61c8d348b09179777a.js → 46d8a1d6f7341ad20749.js} +1 -1
  69. package/assets/esri/core/workers/chunks/4710f21b138a2c9a0345.js +1 -0
  70. package/assets/esri/core/workers/chunks/48a0dfaabb9b4bce4191.js +1 -0
  71. package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +1 -0
  72. package/assets/esri/core/workers/chunks/{4ee900e5dbb130fa0c7b.js → 4a40b894ec89b0a4f9bf.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{d847c3cb2043a983145b.js → 4addea2e35b0c845743e.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{e0a4d0288abd334b0673.js → 4ae626868e14bedd7fc5.js} +1 -1
  75. package/assets/esri/core/workers/chunks/529ee4670940720e888b.js +1 -0
  76. package/assets/esri/core/workers/chunks/{a3c882fe7599dc0f4f27.js → 59d1708ae13c6e7e6e55.js} +1 -1
  77. package/assets/esri/core/workers/chunks/59dd83e5aee2908c7eca.js +1 -0
  78. package/assets/esri/core/workers/chunks/{b8bdacebd4d24ba90f3f.js → 5fde1234c5cccaee6763.js} +1 -1
  79. package/assets/esri/core/workers/chunks/60f9b37dd738d884c48d.js +1 -0
  80. package/assets/esri/core/workers/chunks/6123894e2ae9233cdf89.js +1 -0
  81. package/assets/esri/core/workers/chunks/62c8413f3bbc1378273d.js +1 -0
  82. package/assets/esri/core/workers/chunks/6501ee40bf25f9f75d02.js +1 -0
  83. package/assets/esri/core/workers/chunks/663cf8bff17c894cd5f8.js +1 -0
  84. package/assets/esri/core/workers/chunks/6b536d03b4bef408035b.js +1 -0
  85. package/assets/esri/core/workers/chunks/6d1371b521c7f94fd77e.js +1 -0
  86. package/assets/esri/core/workers/chunks/6d5038d4351fe29e2718.js +1 -0
  87. package/assets/esri/core/workers/chunks/6f102c90908c9900cdaa.js +1 -0
  88. package/assets/esri/core/workers/chunks/6f39545710d1b35d922c.js +1 -0
  89. package/assets/esri/core/workers/chunks/7278fdf6bfcdffa10a7f.js +1 -0
  90. package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +1 -0
  91. package/assets/esri/core/workers/chunks/73cb499d7d68c59ba34e.js +1 -0
  92. package/assets/esri/core/workers/chunks/{b8d788e110c212a879ab.js → 73f228d966b89c73c9e9.js} +1 -1
  93. package/assets/esri/core/workers/chunks/76bccc318d7cc33829a7.js +1 -0
  94. package/assets/esri/core/workers/chunks/{23a3d8f91caf3136b2aa.js → 771ead806efbe9c91fdc.js} +1 -1
  95. package/assets/esri/core/workers/chunks/777eafdb86b26b35c803.js +1 -0
  96. package/assets/esri/core/workers/chunks/7821aeba3e414b318a75.js +1 -0
  97. package/assets/esri/core/workers/chunks/78b80da3bbc1b608fe83.js +1 -0
  98. package/assets/esri/core/workers/chunks/7b531feba4fd662575f9.js +1 -0
  99. package/assets/esri/core/workers/chunks/7c57354d026e27e056d4.js +1 -0
  100. package/assets/esri/core/workers/chunks/7d163d9d90393e491ee5.js +1 -0
  101. package/assets/esri/core/workers/chunks/7d4c65311064a5c2e0b1.js +1 -0
  102. package/assets/esri/core/workers/chunks/{0474af7687466d8befd2.js → 7e2794705b4e679fcb3f.js} +1 -1
  103. package/assets/esri/core/workers/chunks/7ebbb90d80600d9ba889.js +1 -0
  104. package/assets/esri/core/workers/chunks/7f125963555dc1ce63ad.js +1 -0
  105. package/assets/esri/core/workers/chunks/{763cbb6716e398436a6d.js → 7f6eee102871769fdf8f.js} +1 -1
  106. package/assets/esri/core/workers/chunks/805c97b875d3066fb8df.js +1 -0
  107. package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +1 -0
  108. package/assets/esri/core/workers/chunks/86ed75b7169b8ee43025.js +1 -0
  109. package/assets/esri/core/workers/chunks/{9482a6d7baa24bbf5693.js → 89132395eca329b9ab92.js} +1 -1
  110. package/assets/esri/core/workers/chunks/{28bc5e8e82f188b30eb9.js → 894343e415639df88243.js} +1 -1
  111. package/assets/esri/core/workers/chunks/8b4759cef5ae5e43253b.js +1 -0
  112. package/assets/esri/core/workers/chunks/8ba4175f5e9a24ffecf7.js +1 -0
  113. package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +1 -0
  114. package/assets/esri/core/workers/chunks/{bd862382f72ebd446b46.js → 8d2cac1952e817daaf1f.js} +1 -1
  115. package/assets/esri/core/workers/chunks/8e38c5e63aae42bdf5a4.js +29 -0
  116. package/assets/esri/core/workers/chunks/{02ab09285a5c4ca98066.js → 8f785b722b1a131bf370.js} +1 -1
  117. package/assets/esri/core/workers/chunks/8f9874f42f21a4cb3acd.js +1 -0
  118. package/assets/esri/core/workers/chunks/90f4b81c6034253b70d7.js +1 -0
  119. package/assets/esri/core/workers/chunks/917c11cb40a7742d7f98.js +1 -0
  120. package/assets/esri/core/workers/chunks/93ab247ff34694ac60eb.js +1 -0
  121. package/assets/esri/core/workers/chunks/{6e45d0db97ffa4509177.js → 94bf7f0da6ad3f7ea277.js} +1 -1
  122. package/assets/esri/core/workers/chunks/9c57161ad48d8d546dc7.js +1 -0
  123. package/assets/esri/core/workers/chunks/{b2cf1d3f0d48eac23a84.js → 9c5dff4f13102871786e.js} +1 -1
  124. package/assets/esri/core/workers/chunks/9d0bda096cdbd7e22f4b.js +1 -0
  125. package/assets/esri/core/workers/chunks/9dfb7d120195991e9672.js +1 -0
  126. package/assets/esri/core/workers/chunks/9ed5e6b06afea6c85330.js +1 -0
  127. package/assets/esri/core/workers/chunks/{79b857bb301f9c4169d6.js → 9fee8441fbac9f723f77.js} +1 -1
  128. package/assets/esri/core/workers/chunks/a108f276659d5f25352c.js +1 -0
  129. package/assets/esri/core/workers/chunks/a2d8bc0efddd2e13b1ad.js +1 -0
  130. package/assets/esri/core/workers/chunks/{b32ede7805c7c6644e4c.js → a3bf8aa81ee398da5b52.js} +1 -1
  131. package/assets/esri/core/workers/chunks/{5b30231ae0a8f4b8435f.js → a504fa17d83facf1c01f.js} +1 -1
  132. package/assets/esri/core/workers/chunks/{538fe46dfd685a490e23.js → a7f42ada0aa69873a938.js} +1 -1
  133. package/assets/esri/core/workers/chunks/a97e0b9b057664911c14.js +1 -0
  134. package/assets/esri/core/workers/chunks/{cb58aff1ff186fa18345.js → a9f616f22042b0dce8b9.js} +1 -1
  135. package/assets/esri/core/workers/chunks/afd63c18ce4656271c8e.js +1 -0
  136. package/assets/esri/core/workers/chunks/{f04cb48fc73635d0572f.js → b059dabb1c732829487c.js} +1 -1
  137. package/assets/esri/core/workers/chunks/b313464b987db8a3987a.js +1 -0
  138. package/assets/esri/core/workers/chunks/b318823aefcefad6fad5.js +1 -0
  139. package/assets/esri/core/workers/chunks/b378e504a5b1afc8d0ce.js +1 -0
  140. package/assets/esri/core/workers/chunks/{9fb87a7dba62b527c0ba.js → b3a1a93c6dc9247cb048.js} +1 -1
  141. package/assets/esri/core/workers/chunks/b5397dc03fa0bd654ba6.js +1 -0
  142. package/assets/esri/core/workers/chunks/b5b698008b8f3f4d5d61.js +1 -0
  143. package/assets/esri/core/workers/chunks/b7bcb31737b01d7736d0.js +1 -0
  144. package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +1 -0
  145. package/assets/esri/core/workers/chunks/{cda04571d7623c17ada2.js → b9c7aa04861f545a559c.js} +1 -1
  146. package/assets/esri/core/workers/chunks/{7df795bc4fa1d433463b.js → ba030767cf935f967454.js} +1 -1
  147. package/assets/esri/core/workers/chunks/{53d165b4f30fd64e5d8a.js → bd311c85437743cf7d2f.js} +1 -1
  148. package/assets/esri/core/workers/chunks/bd88228f781a0399d8bd.js +1 -0
  149. package/assets/esri/core/workers/chunks/bfb626805405646a0419.js +1 -0
  150. package/assets/esri/core/workers/chunks/{e65ee26feca0564aeb9b.js → c1e45e24f5ef719a714c.js} +18 -18
  151. package/assets/esri/core/workers/chunks/c203df41f9d2e4b80889.js +1 -0
  152. package/assets/esri/core/workers/chunks/{278409028bc5af45b507.js → c4c83b5129c279c3615b.js} +1 -1
  153. package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +1 -0
  154. package/assets/esri/core/workers/chunks/c7e391df714839484cd1.js +1 -0
  155. package/assets/esri/core/workers/chunks/cded485ad893a7dd2948.js +1 -0
  156. package/assets/esri/core/workers/chunks/{1cf8fb704c48ac3d3b15.js → cf360767310fb45660a8.js} +1 -1
  157. package/assets/esri/core/workers/chunks/{8f2fecd8a0a972d68590.js → cf8ce63711488f2e677c.js} +1 -1
  158. package/assets/esri/core/workers/chunks/d214ac457ac970479536.js +1 -0
  159. package/assets/esri/core/workers/chunks/d4058352db1e8255b52e.js +1 -0
  160. package/assets/esri/core/workers/chunks/d4d385d19e62ef1c286f.js +1 -0
  161. package/assets/esri/core/workers/chunks/d4f005dadba75422b401.js +1 -0
  162. package/assets/esri/core/workers/chunks/{52c4b4dabcb0d162be72.js → d5e15021928e95c11463.js} +1 -1
  163. package/assets/esri/core/workers/chunks/{fc639c730115e07a4a1a.js → d6500f6b2ff115d9eb09.js} +1 -1
  164. package/assets/esri/core/workers/chunks/e1492d2404c3ed82931e.js +1 -0
  165. package/assets/esri/core/workers/chunks/e34ed3b818b2eb4116c5.js +1 -0
  166. package/assets/esri/core/workers/chunks/e7149d23615fee31ab7e.js +1 -0
  167. package/assets/esri/core/workers/chunks/ec774f5d6ea5c29536e5.js +1 -0
  168. package/assets/esri/core/workers/chunks/ed71a4e353715db0a6e9.js +1 -0
  169. package/assets/esri/core/workers/chunks/{3f775deea48e268411f1.js → ef27bf1d7941ae265ca4.js} +1 -1
  170. package/assets/esri/core/workers/chunks/{1e342d532925569daadb.js → f475672ff4c2ec9367c2.js} +1 -1
  171. package/assets/esri/core/workers/chunks/{cc414fd2e313d89d524d.js → f54eba484f40d5eeb590.js} +1 -1
  172. package/assets/esri/core/workers/chunks/{04ffe788d2efc0a076dd.js → f5c9659fc5d571d501c9.js} +1 -1
  173. package/assets/esri/core/workers/chunks/f622b27ebdf1c918fd6d.js +1 -0
  174. package/assets/esri/core/workers/chunks/{dd95f50dac3f33cdb6d2.js → f6a13f07a5f7b781a9a8.js} +1 -1
  175. package/assets/esri/core/workers/chunks/{d849bdaf5bdfdc37531a.js → f6f7d885b4d6080e3f58.js} +1 -1
  176. package/assets/esri/core/workers/chunks/f8b8d3d2710c83acccf3.js +1 -0
  177. package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +1 -0
  178. package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +1 -0
  179. package/assets/esri/core/workers/chunks/faa55265020591fd2224.js +1 -0
  180. package/assets/esri/core/workers/chunks/fc827f58db3194922056.js +1 -0
  181. package/chunks/_commonjsHelpers.js +1 -1
  182. package/chunks/aiServices.js +1 -1
  183. package/chunks/array.js +1 -1
  184. package/chunks/languageUtils.js +1 -1
  185. package/config.js +1 -1
  186. package/form/ExpressionInfo.d.ts +1 -1
  187. package/form/ExpressionInfo.js +1 -1
  188. package/form/elements/FieldElement.d.ts +3 -2
  189. package/form/elements/inputs/ComboBoxInput.d.ts +4 -15
  190. package/form/elements/inputs/ComboBoxInput.js +1 -1
  191. package/form/elements/inputs/DynamicChoiceInput.d.ts +31 -0
  192. package/form/elements/inputs/DynamicChoiceInput.js +2 -0
  193. package/form/elements/inputs/Input.d.ts +1 -1
  194. package/form/elements/inputs/RadioButtonsInput.d.ts +4 -15
  195. package/form/elements/inputs/RadioButtonsInput.js +1 -1
  196. package/form/elements/inputs/SingleChoiceInput.d.ts +18 -0
  197. package/form/elements/inputs/SingleChoiceInput.js +2 -0
  198. package/form/elements/inputs.d.ts +11 -2
  199. package/form/elements/inputs.js +1 -1
  200. package/geometry/support/normalizeUtils.d.ts +1 -1
  201. package/kernel.js +1 -1
  202. package/layers/ImageryTileLayer.d.ts +1 -1
  203. package/layers/RouteLayer.d.ts +1 -1
  204. package/layers/mixins/ArcGISImageService.d.ts +24 -24
  205. package/layers/mixins/TiledImagery.d.ts +1 -1
  206. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  207. package/layers/video/VideoController.js +1 -1
  208. package/networks/support/CircuitExportJobInfo.d.ts +1 -1
  209. package/networks/support/CircuitVerifyJobInfo.d.ts +1 -1
  210. package/networks/support/TopologyValidationJobInfo.d.ts +1 -1
  211. package/networks/support/TraceJobInfo.d.ts +1 -1
  212. package/package.json +2 -2
  213. package/portal/jsonTypes.d.ts +1 -1
  214. package/rest/closestFacility.d.ts +1 -1
  215. package/rest/find.d.ts +1 -1
  216. package/rest/geometryService.d.ts +21 -21
  217. package/rest/geoprocessor.d.ts +2 -2
  218. package/rest/identify.d.ts +1 -1
  219. package/rest/imageService.d.ts +19 -19
  220. package/rest/lastMileDelivery.d.ts +8 -8
  221. package/rest/locator.d.ts +4 -4
  222. package/rest/networkService.d.ts +1 -1
  223. package/rest/networks/queryAssociations.d.ts +1 -1
  224. package/rest/networks/synthesizeAssociationGeometries.d.ts +1 -1
  225. package/rest/networks/trace.d.ts +1 -1
  226. package/rest/networks/traverseAssociations.d.ts +1 -1
  227. package/rest/places.d.ts +3 -3
  228. package/rest/print.d.ts +1 -1
  229. package/rest/query.d.ts +11 -11
  230. package/rest/route.d.ts +1 -1
  231. package/rest/serviceArea.d.ts +1 -1
  232. package/rest/support/JobInfo.d.ts +5 -5
  233. package/rest/symbolService.d.ts +1 -1
  234. package/support/revision.js +1 -1
  235. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
  236. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  237. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  238. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  239. package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
  240. package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
  241. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathEvaluate.glsl.js +49 -32
  242. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +5 -5
  243. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +23 -23
  244. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  245. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  246. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  247. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  248. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  249. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  250. package/views/draw/support/InteractiveHandle.js +1 -1
  251. package/views/draw/support/managers/SurfaceManager.js +1 -1
  252. package/views/interactive/Tooltip.d.ts +3 -3
  253. package/views/interactive/Tooltip.js +1 -1
  254. package/views/interactive/options/ElevationOptions.d.ts +20 -0
  255. package/views/interactive/options/ElevationOptions.js +2 -0
  256. package/views/interactive/options/LabelOptions.d.ts +74 -0
  257. package/views/interactive/options/LabelOptions.js +2 -0
  258. package/views/interactive/options/SnappingOptions.d.ts +157 -0
  259. package/views/interactive/options/SnappingOptions.js +2 -0
  260. package/views/interactive/options/TooltipOptions.d.ts +152 -0
  261. package/views/interactive/options/TooltipOptions.js +2 -0
  262. package/views/interactive/options/TooltipVisibleElements.d.ts +105 -0
  263. package/views/interactive/options/TooltipVisibleElements.js +2 -0
  264. package/views/interactive/options/ValueOptions.d.ts +63 -0
  265. package/views/interactive/options/ValueOptions.js +2 -0
  266. package/views/interactive/sketch/SketchLabelOptions.d.ts +7 -9
  267. package/views/interactive/sketch/SketchLabelOptions.js +1 -1
  268. package/views/interactive/sketch/SketchTooltipElevationOptions.js +1 -1
  269. package/views/interactive/sketch/SketchTooltipOptions.d.ts +8 -50
  270. package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
  271. package/views/interactive/sketch/SketchTooltipVisibleElements.d.ts +10 -95
  272. package/views/interactive/sketch/SketchTooltipVisibleElements.js +1 -1
  273. package/views/interactive/sketch/SketchValueOptions.d.ts +7 -45
  274. package/views/interactive/sketch/SketchValueOptions.js +1 -1
  275. package/views/interactive/sketch/Units.d.ts +10 -29
  276. package/views/interactive/sketch/Units.js +1 -1
  277. package/views/interactive/snapping/SnappingOptions.d.ts +7 -78
  278. package/views/interactive/snapping/SnappingOptions.js +1 -1
  279. package/views/interactive/support/Units.d.ts +33 -0
  280. package/views/interactive/support/Units.js +2 -0
  281. package/views/interactive/support/types.d.ts +33 -0
  282. package/views/interactive/tooltip/types.d.ts +6 -2
  283. package/assets/esri/core/workers/chunks/02dd79beb13eff6be85e.js +0 -1
  284. package/assets/esri/core/workers/chunks/0623acb2bd14a61b65c9.js +0 -29
  285. package/assets/esri/core/workers/chunks/069b6d8bdb34ee88d437.js +0 -1
  286. package/assets/esri/core/workers/chunks/0790bf0eb276cd9166f6.js +0 -1
  287. package/assets/esri/core/workers/chunks/08c2bf9defcece9e049a.js +0 -1
  288. package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +0 -1
  289. package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +0 -1
  290. package/assets/esri/core/workers/chunks/10b367563f894ceb9864.js +0 -1
  291. package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +0 -1
  292. package/assets/esri/core/workers/chunks/13033178de9f637a2356.js +0 -1
  293. package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +0 -1
  294. package/assets/esri/core/workers/chunks/14cd8bb1ad4da8d1d2ca.js +0 -1
  295. package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +0 -1
  296. package/assets/esri/core/workers/chunks/246cd372d4184233f48e.js +0 -1
  297. package/assets/esri/core/workers/chunks/268ab65afc3fce775ad2.js +0 -1
  298. package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +0 -1
  299. package/assets/esri/core/workers/chunks/2a1c6df073e6ca6a6365.js +0 -1
  300. package/assets/esri/core/workers/chunks/3406a01dad6338e3c548.js +0 -1
  301. package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +0 -1
  302. package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +0 -1
  303. package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +0 -1
  304. package/assets/esri/core/workers/chunks/3f1a7f8a9ead64bf0b7b.js +0 -1
  305. package/assets/esri/core/workers/chunks/41e821ce229bc56dc1a1.js +0 -1
  306. package/assets/esri/core/workers/chunks/456e616f32e7de696d38.js +0 -1
  307. package/assets/esri/core/workers/chunks/478540265c86436da05e.js +0 -1
  308. package/assets/esri/core/workers/chunks/479f486ec1797629ec70.js +0 -1
  309. package/assets/esri/core/workers/chunks/484b3e2a220c440ccbb4.js +0 -1
  310. package/assets/esri/core/workers/chunks/4a340836ddbc856993f2.js +0 -1
  311. package/assets/esri/core/workers/chunks/54b9667450d066c6f6ce.js +0 -1
  312. package/assets/esri/core/workers/chunks/57b07448da06d0302a46.js +0 -1
  313. package/assets/esri/core/workers/chunks/5a9ff50fdcc99ae28cce.js +0 -1
  314. package/assets/esri/core/workers/chunks/5dc17b76c6ecc24e7b9a.js +0 -1
  315. package/assets/esri/core/workers/chunks/5e3d5347223f0111f40f.js +0 -1
  316. package/assets/esri/core/workers/chunks/5eb6f37c74a217772eca.js +0 -1
  317. package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +0 -1
  318. package/assets/esri/core/workers/chunks/638ed1297efdb24f4711.js +0 -1
  319. package/assets/esri/core/workers/chunks/63ede7295938f7010808.js +0 -1
  320. package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +0 -1
  321. package/assets/esri/core/workers/chunks/687cf21e027f49b44d22.js +0 -1
  322. package/assets/esri/core/workers/chunks/6c2b5087a9df65267f4e.js +0 -1
  323. package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +0 -1
  324. package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +0 -1
  325. package/assets/esri/core/workers/chunks/70452f6d63e9be8d03dd.js +0 -1
  326. package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +0 -1
  327. package/assets/esri/core/workers/chunks/7659391f952d134164cf.js +0 -1
  328. package/assets/esri/core/workers/chunks/7889f4a17cf249f2acc5.js +0 -1
  329. package/assets/esri/core/workers/chunks/7a2dcd57849048c6e00d.js +0 -1
  330. package/assets/esri/core/workers/chunks/7a2dfa42610fe8414ed7.js +0 -1
  331. package/assets/esri/core/workers/chunks/7ce52b850dd785bfa33f.js +0 -1
  332. package/assets/esri/core/workers/chunks/7fdd6a5fa062778be55d.js +0 -1
  333. package/assets/esri/core/workers/chunks/81accb1820e2735fa376.js +0 -1
  334. package/assets/esri/core/workers/chunks/8210fc9e072209e26fa9.js +0 -1
  335. package/assets/esri/core/workers/chunks/8369edafab7bdc59b95a.js +0 -1
  336. package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +0 -1
  337. package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +0 -1
  338. package/assets/esri/core/workers/chunks/8722e2790272e90a1897.js +0 -1
  339. package/assets/esri/core/workers/chunks/8a1970e68bc1e833cb7f.js +0 -1
  340. package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +0 -1
  341. package/assets/esri/core/workers/chunks/8c535c6a39d2be2ed655.js +0 -1
  342. package/assets/esri/core/workers/chunks/92696cce2b980373f9ad.js +0 -1
  343. package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +0 -1
  344. package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +0 -1
  345. package/assets/esri/core/workers/chunks/a09ce34fc7c8abe64ed5.js +0 -1
  346. package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +0 -1
  347. package/assets/esri/core/workers/chunks/a5f058567419ea70dff6.js +0 -1
  348. package/assets/esri/core/workers/chunks/a965d151515b76dd7566.js +0 -1
  349. package/assets/esri/core/workers/chunks/afeeb11b39e140303b5a.js +0 -1
  350. package/assets/esri/core/workers/chunks/b5c7813495657f844171.js +0 -1
  351. package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +0 -1
  352. package/assets/esri/core/workers/chunks/b8e5d7aefddddbd0a10c.js +0 -1
  353. package/assets/esri/core/workers/chunks/b958f87f23f984131d09.js +0 -1
  354. package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +0 -1
  355. package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +0 -1
  356. package/assets/esri/core/workers/chunks/c85ba0700eafdc8d6f9e.js +0 -1
  357. package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +0 -1
  358. package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +0 -1
  359. package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +0 -1
  360. package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +0 -1
  361. package/assets/esri/core/workers/chunks/d37a72111dffc4c4db70.js +0 -1
  362. package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +0 -1
  363. package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +0 -1
  364. package/assets/esri/core/workers/chunks/d51c41c1944df0cbab3e.js +0 -1
  365. package/assets/esri/core/workers/chunks/d83ea3e4e9ab45334068.js +0 -1
  366. package/assets/esri/core/workers/chunks/d9b83d7dd7d1f7729a91.js +0 -1
  367. package/assets/esri/core/workers/chunks/dbcec48c4ba104a6d0b5.js +0 -1
  368. package/assets/esri/core/workers/chunks/dc24e80d061f7b063608.js +0 -1
  369. package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +0 -1
  370. package/assets/esri/core/workers/chunks/e5bb7ee670a3ba5ba3fe.js +0 -1
  371. package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +0 -1
  372. package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +0 -1
  373. package/assets/esri/core/workers/chunks/f1299b4fc760ccca1518.js +0 -1
  374. package/assets/esri/core/workers/chunks/f65adaaa33d9f3b131f6.js +0 -1
  375. package/assets/esri/core/workers/chunks/f6715b8765cd36d81ec8.js +0 -1
  376. package/assets/esri/core/workers/chunks/f7fa932ade85cb2847b6.js +0 -1
  377. package/assets/esri/core/workers/chunks/f9a4f4efd63b8189a4eb.js +0 -1
  378. package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +0 -1
  379. package/assets/esri/core/workers/chunks/fa1c58e5b582d61a03ab.js +0 -1
  380. package/assets/esri/core/workers/chunks/fdec3a2e100688c42e41.js +0 -1
  381. package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +0 -1
  382. /package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js.LICENSE.txt → 242cad472fbc38b24dbc.js.LICENSE.txt} +0 -0
@@ -1,8 +1,8 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{freeze as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{pathNumRoundCapExtrusionSubdivisions as t}from"../../../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{PathVertexInfo as r}from"./PathVertexInfo.glsl.js";import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{Float2sPassUniform as a}from"../../shaderModules/Float2sPassUniform.js";import{Float4sPassUniform as i}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as l}from"../../shaderModules/FloatPassUniform.js";import{glsl as n,If as s}from"../../shaderModules/glsl.js";import{IntegerPassUniform as f}from"../../shaderModules/IntegerPassUniform.js";import{IntegersPassUniform as p}from"../../shaderModules/IntegersPassUniform.js";import{pathProfileUniformLayout as c}from"../../../lib/PathProfile.js";function d(e,d){const{vertex:m}=e;e.include(r,d);const u=1===d.upVectorAlignment;m.uniforms.add(new l("angleCutoff",e=>e.cutoffAngle)),m.code.add(n`float reciprocalClamped(float value) {
2
+ import{freeze as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{pathNumJoinSubdivisions as t,pathNumRoundCapExtrusionSubdivisions as r}from"../../../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{PathVertexInfo as o}from"./PathVertexInfo.glsl.js";import{PiUtils as a}from"../shading/PiUtils.glsl.js";import{Float2sPassUniform as i}from"../../shaderModules/Float2sPassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as n}from"../../shaderModules/FloatPassUniform.js";import{glsl as l,If as p}from"../../shaderModules/glsl.js";import{IntegersPassUniform as f}from"../../shaderModules/IntegersPassUniform.js";import{pathProfileUniformLayout as c}from"../../../lib/PathProfile.js";function d(e,d){const{vertex:x}=e;e.include(o,d);const u=1===d.upVectorAlignment;x.uniforms.add(new n("angleCutoff",e=>e.cutoffAngle)),x.code.add(l`float reciprocalClamped(float value) {
3
3
  float signValue = value < 0.0 ? -1.0 : 1.0;
4
4
  return signValue / max(abs(value), 1e-6);
5
- }`),u?m.code.add(n`vec2 applyMiterStretch(vec2 vertex, float rotationAngle, vec2 rotationRight) {
5
+ }`),u?x.code.add(l`vec2 applyMiterStretch(vec2 vertex, float rotationAngle, vec2 rotationRight) {
6
6
  if (rotationAngle == 0.0) {
7
7
  return vertex;
8
8
  }
@@ -14,13 +14,13 @@ mat2 miterStretch = mat2(
14
14
  1. + (k - 1.) * rotationRight.y * rotationRight.y
15
15
  );
16
16
  return miterStretch * vertex;
17
- }`):m.code.add(n`vec2 applyMiterStretch(vec2 vertex, float rotationAngle) {
17
+ }`):x.code.add(l`vec2 applyMiterStretch(vec2 vertex, float rotationAngle) {
18
18
  if (rotationAngle == 0.0) {
19
19
  return vertex;
20
20
  }
21
21
  float k = reciprocalClamped(cos(0.5 * rotationAngle));
22
22
  return vec2(k, 1.) * vertex;
23
- }`);const{vertexCount:v,indexCount:h,poleCount:g}=c[d.pathProfileType];switch(m.uniforms.add(new a("pathProfileVertices",v,e=>e.profile.vertices.flat()),new a("pathProfileNormals",v,e=>e.profile.normals.flat())),m.code.add(n`mat3 mat3FromRotation(float angle, vec3 axis) {
23
+ }`);const{vertexCount:v,indexCount:h,poleCount:g}=c[d.pathProfileType];switch(x.uniforms.add(new i("pathProfileVertices",v,e=>e.profile.vertices.flat()),new i("pathProfileNormals",v,e=>e.profile.normals.flat())),x.code.add(l`mat3 mat3FromRotation(float angle, vec3 axis) {
24
24
  float x = axis.x;
25
25
  float y = axis.y;
26
26
  float z = axis.z;
@@ -32,12 +32,13 @@ x * x * t + c, y * x * t + z * s, z * x * t - y * s,
32
32
  x * y * t - z * s, y * y * t + c, z * y * t + x * s,
33
33
  x * z * t + y * s, y * z * t - x * s, z * z * t + c
34
34
  );
35
- }`),m.code.add(n`struct ExtrusionFrame {
35
+ }`),x.code.add(l`struct ExtrusionFrame {
36
36
  vec3 up;
37
37
  vec3 right;
38
38
  };
39
39
  struct ExtrudedVertex {
40
- ExtrusionFrame frame;
40
+ ExtrusionFrame positionFrame;
41
+ ExtrusionFrame normalFrame;
41
42
  vec2 profileVertex;
42
43
  vec2 profileNormal;
43
44
  vec2 rotationRight;
@@ -45,20 +46,22 @@ float maxDistance;
45
46
  float capPositionOffset;
46
47
  float capNormalOffset;
47
48
  bool isCap;
48
- };`),u?m.code.add(n`vec2 getPathRotationRight(ExtrusionFrame frame) {
49
+ };`),u?x.code.add(l`vec2 getPathRotationRight(ExtrusionFrame frame) {
49
50
  vec3 rotationUp = getFrameRotationUp();
50
51
  float a = dot(rotationUp, frame.up);
51
52
  float b = dot(rotationUp, frame.right);
52
53
  vec3 vertex = normalize(frame.up * -b + frame.right * a);
53
54
  return vec2(dot(vertex, frame.right), dot(vertex, frame.up));
54
- }`):m.code.add(n`vec2 getPathRotationRight() {
55
+ }`):x.code.add(l`vec2 getPathRotationRight() {
55
56
  return vec2(1., 0.);
56
- }`),m.uniforms.add(new f("numJoinSubdivisions",e=>e.numJoinSubdivisions)),m.code.add(n`
57
+ }`),2===d.pathJoinType&&x.constants.add("numJoinSubdivisions","float",t),x.code.add(l`
57
58
  ExtrudedVertex evaluateJoinVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
59
+ ExtrusionFrame positionFrame = frame;
60
+ ExtrusionFrame subdivisionFrame = frame;
58
61
  vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
59
62
  vec2 profileNormal = pathProfileNormals[vertexDescriptor.sourceIndex];
60
63
  float profileRotation = getProfileRotation();
61
- vec2 rotationRight = getPathRotationRight(${s(u,n`frame`)});
64
+ vec2 rotationRight = getPathRotationRight(${p(u,l`frame`)});
62
65
  bool isBevel = abs(profileRotation) >= angleCutoff;
63
66
 
64
67
  // determine if the current profile vertex is on the inside or outside of the rotationAxis
@@ -68,32 +71,41 @@ return vec2(1., 0.);
68
71
 
69
72
  bool isBevelBend = isBevel && isBend;
70
73
 
74
+ float subdivisionRotation = ${p(2===d.pathJoinType,l`(-0.5 + float(vertexDescriptor.subdivision) / numJoinSubdivisions) * profileRotation`,l`(-0.5 + float(vertexDescriptor.subdivision / 2u)) * profileRotation`)};
75
+ if (subdivisionRotation != 0.) {
76
+ mat3 subdivisionTransform = mat3FromRotation(subdivisionRotation, getFrameRotationUp());
77
+ ${p(u,l`subdivisionFrame.up = normalize(subdivisionTransform * subdivisionFrame.up);`)}
78
+ subdivisionFrame.right = normalize(subdivisionTransform * subdivisionFrame.right);
79
+ }
80
+
71
81
  if (isBevelBend) {
72
- float k = vertexDescriptor.subdivision;
73
- // rotate half rotation angle backwards to where the rotation starts
74
- // and then rotate a couple of times depending on the current subdivision segment
75
- float bendRotation = -profileRotation * 0.5 + (k * profileRotation) / float(numJoinSubdivisions);
76
- if (bendRotation != 0.) {
77
- vec3 rotationUp = getFrameRotationUp();
78
- mat3 transform = mat3FromRotation(bendRotation, rotationUp);
79
- ${s(u,n`frame.up = normalize(transform * frame.up);`)}
80
- frame.right = normalize(transform * frame.right);
81
- }
82
+ positionFrame = subdivisionFrame;
82
83
  } else {
83
84
  profileVertex = applyMiterStretch(
84
85
  profileVertex,
85
- profileRotation${s(u,n`,
86
+ profileRotation${p(u,l`,
86
87
  rotationRight`)}
87
88
  );
88
89
  }
89
90
 
91
+ ${p(2===d.pathJoinType,l`
92
+ ExtrusionFrame normalFrame = subdivisionFrame;
93
+ `,l`
94
+ ExtrusionFrame normalFrame;
95
+ if (isBevelBend && (vertexDescriptor.subdivision == 1u || vertexDescriptor.subdivision == 2u)) {
96
+ normalFrame = frame;
97
+ } else {
98
+ normalFrame = subdivisionFrame;
99
+ }`)};
100
+
90
101
  rotationRight = isBend ? vec2(0.) : rotationRight;
91
102
  float maxDistance = isBend
92
103
  ? 0.
93
104
  : getMaxStretchDistance();
94
105
 
95
106
  return ExtrudedVertex(
96
- frame,
107
+ positionFrame,
108
+ normalFrame,
97
109
  profileVertex,
98
110
  profileNormal,
99
111
  rotationRight,
@@ -103,14 +115,15 @@ return vec2(1., 0.);
103
115
  false
104
116
  );
105
117
  }
106
- `),m.code.add(n`
118
+ `),x.code.add(l`
107
119
  ExtrudedVertex evaluateConnectingVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
108
120
  vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
109
121
  vec2 profileNormal = pathProfileNormals[vertexDescriptor.sourceIndex];
110
122
 
111
- float profilePlaneVertexOffset = ${s(2===d.pathCapType,n`vertexDescriptor.isEnd ? 0.5 : -0.5`,n`0.`)};
123
+ float profilePlaneVertexOffset = ${p(2===d.pathCapType,l`vertexDescriptor.isEnd ? 0.5 : -0.5`,l`0.`)};
112
124
 
113
125
  return ExtrudedVertex(
126
+ frame,
114
127
  frame,
115
128
  profileVertex,
116
129
  profileNormal,
@@ -121,15 +134,16 @@ return vec2(1., 0.);
121
134
  true
122
135
  );
123
136
  }
124
- `),d.pathCapType){case 1:case 2:m.code.add(n`
137
+ `),d.pathCapType){case 1:case 2:x.code.add(l`
125
138
  ExtrudedVertex evaluateFlatCapVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
126
139
  vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
127
140
  bool isEnd = vertexDescriptor.isEnd;
128
141
  float normalOffset = isEnd ? 1. : -1.;
129
- float profilePlaneOffset = ${s(2===d.pathCapType,n`isEnd ? 0.5 : -0.5`,n`0.0`)};
142
+ float profilePlaneOffset = ${p(2===d.pathCapType,l`isEnd ? 0.5 : -0.5`,l`0.0`)};
130
143
  vec2 normal = vec2(0.);
131
144
 
132
145
  return ExtrudedVertex(
146
+ frame,
133
147
  frame,
134
148
  profileVertex,
135
149
  normal,
@@ -140,7 +154,7 @@ return vec2(1., 0.);
140
154
  true
141
155
  );
142
156
  }
143
- `);break;case 3:m.uniforms.add(new i("pathProfilePoles",g,e=>e.profile.poles.flatMap(({position:e,normal:t})=>[...e,...t??x]),{supportsNaN:!0}),new p("pathProfilePoleIndices",h,e=>e.profile.poleIndices)),m.include(o),m.constants.add("pathNumRoundCapExtrusionSubdivisions","float",t),m.code.add(n`ExtrudedVertex evaluateRoundCapPoleVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
157
+ `);break;case 3:x.uniforms.add(new s("pathProfilePoles",g,e=>e.profile.poles.flatMap(({position:e,normal:t})=>[...e,...t??m]),{supportsNaN:!0}),new f("pathProfilePoleIndices",h,e=>e.profile.poleIndices)),x.include(a),x.constants.add("pathNumRoundCapExtrusionSubdivisions","float",r),x.code.add(l`ExtrudedVertex evaluateRoundCapPoleVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
144
158
  bool isEnd = vertexDescriptor.isEnd;
145
159
  float capSign = isEnd ? 1. : -1.;
146
160
  float offsetScale = capSign * 0.5;
@@ -151,6 +165,7 @@ vec2 poleNormal = hasPoleNormal ? pole.zw : vec2(0.);
151
165
  float normalOffset = hasPoleNormal ? 0. : capSign;
152
166
  return ExtrudedVertex(
153
167
  frame,
168
+ frame,
154
169
  polePosition,
155
170
  poleNormal,
156
171
  vec2(0.),
@@ -164,7 +179,7 @@ ExtrudedVertex evaluateRoundCapInnerVertex(PathVertexDescriptor vertexDescriptor
164
179
  bool isEnd = vertexDescriptor.isEnd;
165
180
  float capSign = isEnd ? 1. : -1.;
166
181
  float offsetScale = capSign * 0.5;
167
- float subdivision = vertexDescriptor.subdivision;
182
+ float subdivision = float(vertexDescriptor.subdivision);
168
183
  float t = 1. - (subdivision + 1.) / pathNumRoundCapExtrusionSubdivisions;
169
184
  float theta = t * HALF_PI;
170
185
  float t1 = sin(theta);
@@ -182,6 +197,7 @@ vec2 profileNormal = hasPoleNormal
182
197
  float normalOffset = hasPoleNormal ? 0. : capSign * t2;
183
198
  return ExtrudedVertex(
184
199
  frame,
200
+ frame,
185
201
  poleVertex,
186
202
  profileNormal,
187
203
  vec2(0.),
@@ -190,7 +206,7 @@ offsetScale * t2,
190
206
  normalOffset,
191
207
  true
192
208
  );
193
- }`)}m.code.add(n`
209
+ }`)}x.code.add(l`
194
210
  ExtrudedVertex evaluateVertex() {
195
211
  PathVertexDescriptor vertexDescriptor = getDescriptor();
196
212
  ExtrusionFrame frame = ExtrusionFrame(
@@ -205,12 +221,12 @@ true
205
221
  case pathVertexTypeCapConnectingProfile:
206
222
  return evaluateConnectingVertex(vertexDescriptor, frame);
207
223
 
208
- ${s(1===d.pathCapType||2===d.pathCapType,n`
224
+ ${p(1===d.pathCapType||2===d.pathCapType,l`
209
225
  case pathVertexTypeCapProfile:
210
226
  return evaluateFlatCapVertex(vertexDescriptor, frame);
211
227
  `)}
212
228
 
213
- ${s(3===d.pathCapType,n`
229
+ ${p(3===d.pathCapType,l`
214
230
  case pathVertexTypeCapProfile:
215
231
  return evaluateRoundCapPoleVertex(vertexDescriptor, frame);
216
232
  case pathVertexTypeRoundCapInnerProfile:
@@ -219,6 +235,7 @@ true
219
235
 
220
236
  default:
221
237
  return ExtrudedVertex(
238
+ frame,
222
239
  frame,
223
240
  vec2(0.),
224
241
  vec2(0.),
@@ -230,4 +247,4 @@ true
230
247
  );
231
248
  }
232
249
  }
233
- `)}const x=e(NaN,NaN);export{d as PathEvaluate};
250
+ `)}const m=e(NaN,NaN);export{d as PathEvaluate};
@@ -1,8 +1,8 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMask as a,descriptorDataShift as r,descriptorDataMask as i,descriptorTypeShift as n,descriptorCapSideShift as p,descriptorCapSubdivisionMask as s,descriptorShift as o,frameIndexMask as d}from"../../../lib/PathVertexInfo.js";function c(c,h){const{attributes:x,vertex:u}=c;x.add("pathVertexInfo","uint"),u.constants.add("pathVertexDescriptorSourceIndexMask","uint",a),u.constants.add("pathVertexDescriptorDataShift","uint",r),u.constants.add("pathVertexDescriptorDataMask","uint",i),u.constants.add("pathVertexDescriptorTypeShift","uint",n),u.constants.add("pathVertexDescriptorCapSideShift","uint",p),u.constants.add("pathVertexDescriptorCapSubdivisionMask","uint",s),u.constants.add("pathVertexInfoDescriptorShift","uint",o),u.constants.add("pathVertexInfoFrameIndexMask","uint",d),u.constants.add("pathVertexCapSideEnd","uint",1),u.constants.add("pathVertexTypeJoin","uint",0),u.constants.add("pathVertexTypeCapConnectingProfile","uint",1),u.constants.add("pathVertexTypeCapProfile","uint",2),3===h.pathCapType&&u.constants.add("pathVertexTypeRoundCapInnerProfile","uint",3),u.code.add(e`
2
+ import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMask as r,descriptorDataShift as a,descriptorDataMask as i,descriptorTypeShift as n,descriptorCapSideShift as p,descriptorCapSubdivisionMask as s,descriptorShift as o,frameIndexMask as d}from"../../../lib/PathVertexInfo.js";function c(c,h){const{attributes:u,vertex:x}=c;u.add("pathVertexInfo","uint"),x.constants.add("pathVertexDescriptorSourceIndexMask","uint",r),x.constants.add("pathVertexDescriptorDataShift","uint",a),x.constants.add("pathVertexDescriptorDataMask","uint",i),x.constants.add("pathVertexDescriptorTypeShift","uint",n),x.constants.add("pathVertexDescriptorCapSideShift","uint",p),x.constants.add("pathVertexDescriptorCapSubdivisionMask","uint",s),x.constants.add("pathVertexInfoDescriptorShift","uint",o),x.constants.add("pathVertexInfoFrameIndexMask","uint",d),x.constants.add("pathVertexCapSideEnd","uint",1),x.constants.add("pathVertexTypeJoin","uint",0),x.constants.add("pathVertexTypeCapConnectingProfile","uint",1),x.constants.add("pathVertexTypeCapProfile","uint",2),3===h.pathCapType&&x.constants.add("pathVertexTypeRoundCapInnerProfile","uint",3),x.code.add(e`
3
3
  struct PathVertexDescriptor {
4
4
  uint sourceIndex;
5
- float subdivision;
5
+ uint subdivision;
6
6
  uint type;
7
7
  bool isEnd;
8
8
  };
@@ -16,17 +16,17 @@ import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMas
16
16
  uint sourceIndex = descriptor & pathVertexDescriptorSourceIndexMask;
17
17
  uint descriptorData = (descriptor >> pathVertexDescriptorDataShift) & pathVertexDescriptorDataMask;
18
18
  uint type = descriptor >> pathVertexDescriptorTypeShift;
19
- float subdivision = 0.;
19
+ uint subdivision = 0u;
20
20
  bool isEnd = false;
21
21
 
22
22
  switch (type) {
23
23
  case pathVertexTypeJoin:
24
- subdivision = float(descriptorData);
24
+ subdivision = descriptorData;
25
25
  break;
26
26
 
27
27
  ${t(3===h.pathCapType,e`
28
28
  case pathVertexTypeRoundCapInnerProfile:
29
- subdivision = float(descriptorData & pathVertexDescriptorCapSubdivisionMask);
29
+ subdivision = descriptorData & pathVertexDescriptorCapSubdivisionMask;
30
30
  `)}
31
31
  case pathVertexTypeCapConnectingProfile:
32
32
  ${t(0!==h.pathCapType,e`
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{TextureBackedBufferModule as t}from"../TextureBackedBuffer.glsl.js";import{PathEvaluate as r}from"./PathEvaluate.glsl.js";import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{Float2PassUniform as i}from"../../shaderModules/Float2PassUniform.js";import{Float3PassUniform as a}from"../../shaderModules/Float3PassUniform.js";import{Float4PassUniform as l}from"../../shaderModules/Float4PassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as v}from"../../shaderModules/FloatsPassUniform.js";import{glsl as u,If as n}from"../../shaderModules/glsl.js";import{Texture2DUintDrawUniform as d}from"../../shaderModules/Texture2DUintDrawUniform.js";import{circleProfiles as f}from"../../../lib/PathProfile.js";import{getTextureLayout as p}from"../../../materials/PathLayouts.js";import{VisualVariablePassParameters as x,vvColorNumber as m}from"../../../materials/VisualVariablePassParameters.js";const g=8;function h(e,f){const{vertex:x}=e,h=new d("componentTextureBuffer",e=>e.textureBuffer),y=new t({layout:p(f),itemIndexExpression:"getFrameIndex()",bufferUniform:h}).createBuilder(e,f);x.uniforms.add(new i("size",e=>e.size));const{hasVVSize:b,hasVVColor:V,hasVVOpacity:z,hasPathSize:O,hasPathColor:C,hasPathOpacity:S}=f;b?(x.uniforms.add(new a("vvSizeMinSize",e=>e.vvSize.minSize),new a("vvSizeMaxSize",e=>e.vvSize.maxSize),new a("vvSizeOffset",e=>e.vvSize.offset),new a("vvSizeFactor",e=>e.vvSize.factor),new a("vvSizeFallback",e=>e.vvSize.fallback)),x.code.add(u`
2
+ import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{TextureBackedBufferModule as t}from"../TextureBackedBuffer.glsl.js";import{PathEvaluate as r}from"./PathEvaluate.glsl.js";import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{Float2PassUniform as i}from"../../shaderModules/Float2PassUniform.js";import{Float3PassUniform as a}from"../../shaderModules/Float3PassUniform.js";import{Float4PassUniform as l}from"../../shaderModules/Float4PassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as v}from"../../shaderModules/FloatsPassUniform.js";import{glsl as u,If as n}from"../../shaderModules/glsl.js";import{Texture2DUintDrawUniform as d}from"../../shaderModules/Texture2DUintDrawUniform.js";import{circleProfiles as p}from"../../../lib/PathProfile.js";import{getTextureLayout as f}from"../../../materials/PathLayouts.js";import{VisualVariablePassParameters as m,vvColorNumber as x}from"../../../materials/VisualVariablePassParameters.js";const g=8;function h(e,p){const{vertex:m}=e,h=new d("componentTextureBuffer",e=>e.textureBuffer),y=new t({layout:f(p),itemIndexExpression:"getFrameIndex()",bufferUniform:h}).createBuilder(e,p);m.uniforms.add(new i("size",e=>e.size));const{hasVVSize:V,hasVVColor:b,hasVVOpacity:z,hasPathSize:O,hasPathColor:C,hasPathOpacity:S}=p;V?(m.uniforms.add(new a("vvSizeMinSize",e=>e.vvSize.minSize),new a("vvSizeMaxSize",e=>e.vvSize.maxSize),new a("vvSizeOffset",e=>e.vvSize.offset),new a("vvSizeFactor",e=>e.vvSize.factor),new a("vvSizeFallback",e=>e.vvSize.fallback)),m.code.add(u`
3
3
  vec2 getSize() {
4
4
  float value = ${y.getTextureAttribute("sizeFeatureAttribute")};
5
5
  if (isnan(value)) {
@@ -7,13 +7,13 @@ import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/ve
7
7
  }
8
8
  return size * clamp(vvSizeOffset + value * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).xz;
9
9
  }
10
- `)):O?x.code.add(u`
10
+ `)):O?m.code.add(u`
11
11
  vec2 getSize(){
12
12
  return ${y.getTextureAttribute("size")};
13
13
  }
14
- `):x.code.add(u`vec2 getSize(){
14
+ `):m.code.add(u`vec2 getSize(){
15
15
  return size;
16
- }`),z?(x.constants.add("vvOpacityNumber","int",g),x.uniforms.add(new v("vvOpacityValues",g,e=>e.vvOpacity.values),new v("vvOpacityOpacities",g,e=>e.vvOpacity.opacityValues),new c("vvOpacityFallback",e=>e.vvOpacity.fallback,{supportsNaN:!0})),x.code.add(u`
16
+ }`),z?(m.constants.add("vvOpacityNumber","int",g),m.uniforms.add(new v("vvOpacityValues",g,e=>e.vvOpacity.values),new v("vvOpacityOpacities",g,e=>e.vvOpacity.opacityValues),new c("vvOpacityFallback",e=>e.vvOpacity.fallback,{supportsNaN:!0})),m.code.add(u`
17
17
  vec4 applyOpacity(vec4 color) {
18
18
  // if we encounter NaN in the color it means the color is in the fallback case where the symbol color
19
19
  // is not defined and there is no valid color visual variable override. In this case just return a fully
@@ -26,7 +26,7 @@ return size;
26
26
 
27
27
  if (isnan(value)) {
28
28
  // If there is a color vv then it will already have taken care of applying the fallback
29
- return ${n(V,"color","vec4(color.rgb, vvOpacityFallback)")};
29
+ return ${n(b,"color","vec4(color.rgb, vvOpacityFallback)")};
30
30
  }
31
31
 
32
32
  if (value <= vvOpacityValues[0]) {
@@ -42,13 +42,13 @@ return size;
42
42
 
43
43
  return vec4(color.rgb, vvOpacityOpacities[vvOpacityNumber - 1]);
44
44
  }
45
- `)):S?x.code.add(u`
45
+ `)):S?m.code.add(u`
46
46
  vec4 applyOpacity(vec4 color){
47
47
  return vec4(color.rgb, ${y.getTextureAttribute("opacity")});
48
48
  }
49
- `):x.code.add(u`vec4 applyOpacity(vec4 color){
49
+ `):m.code.add(u`vec4 applyOpacity(vec4 color){
50
50
  return color;
51
- }`),V?(x.constants.add("vvColorNumber","int",m),x.uniforms.add(new v("vvColorValues",m,e=>e.vvColor.values),new s("vvColorColors",m,e=>e.vvColor.colors),new l("vvColorFallback",e=>e.vvColor.fallback)),x.code.add(u`
51
+ }`),b?(m.constants.add("vvColorNumber","int",x),m.uniforms.add(new v("vvColorValues",x,e=>e.vvColor.values),new s("vvColorColors",x,e=>e.vvColor.colors),new l("vvColorFallback",e=>e.vvColor.fallback)),m.code.add(u`
52
52
  vec4 getColor() {
53
53
  float value = ${y.getTextureAttribute("colorFeatureAttribute")};
54
54
  if (isnan(value)) {
@@ -68,13 +68,13 @@ return color;
68
68
 
69
69
  return applyOpacity(vvColorColors[vvColorNumber - 1]);
70
70
  }
71
- `)):C?x.code.add(u`
71
+ `)):C?m.code.add(u`
72
72
  vec4 getColor(){
73
73
  return applyOpacity(${y.getTextureAttribute("color")});
74
74
  }
75
- `):x.code.add(u`vec4 getColor(){
75
+ `):m.code.add(u`vec4 getColor(){
76
76
  return applyOpacity(vec4(1, 1, 1, 1));
77
- }`),x.include(o),x.code.add(u`
77
+ }`),m.include(o),m.code.add(u`
78
78
  vec3 decompressAxis(vec2 axis) {
79
79
  float z = 1.0 - abs(axis.x) - abs(axis.y);
80
80
  return normalize(vec3(axis + sign(axis) * min(z, 0.0), z));
@@ -95,29 +95,29 @@ return applyOpacity(vec4(1, 1, 1, 1));
95
95
  vec3 getFrameRight() {
96
96
  return decompressAxis(${y.getTextureAttribute("profileRight")});
97
97
  }
98
- `),11===f.output&&x.code.add(u`
98
+ `),11===p.output&&m.code.add(u`
99
99
  vec4 getOlidColor() {
100
100
  return ${y.getTextureAttribute("olidColor")};
101
101
  }
102
- `),x.code.add(u`
102
+ `),m.code.add(u`
103
103
  vec3 getFrameRotationUp() {
104
- return ${1===f.upVectorAlignment?u`decompressAxis(${y.getTextureAttribute("pathRotationUp")})`:u`getFrameUp()`};
104
+ return ${1===p.upVectorAlignment?u`decompressAxis(${y.getTextureAttribute("pathRotationUp")})`:u`getFrameUp()`};
105
105
  }
106
- `),e.include(r,f),x.code.add(u`
106
+ `),e.include(r,p),m.code.add(u`
107
107
  vec3 calculateVPos(ExtrudedVertex extrudedVertex) {
108
108
  vec2 size = getSize();
109
109
  vec3 origin = ${y.getTextureAttribute("position")};
110
- vec3 right = extrudedVertex.frame.right;
111
- vec3 up = extrudedVertex.frame.up;
110
+ vec3 right = extrudedVertex.positionFrame.right;
111
+ vec3 up = extrudedVertex.positionFrame.up;
112
112
  vec2 profileVertex = extrudedVertex.profileVertex * size;
113
- `),x.code.add(u`if(extrudedVertex.isCap) {
113
+ `),m.code.add(u`if(extrudedVertex.isCap) {
114
114
  float positionOffsetAlongProfilePlaneNormal = extrudedVertex.capPositionOffset * size[0];
115
115
  vec3 forward = cross(up, right);
116
116
  vec3 offset = right * profileVertex.x + up * profileVertex.y + forward * positionOffsetAlongProfilePlaneNormal;
117
117
  return origin + offset;
118
118
  }
119
119
  vec2 rotationRight = extrudedVertex.rotationRight;
120
- float maxDistance = extrudedVertex.maxDistance;`),x.code.add(u`rotationRight *= size;
120
+ float maxDistance = extrudedVertex.maxDistance;`),m.code.add(u`rotationRight *= size;
121
121
  rotationRight = length(rotationRight) > 0.0 ? normalize(rotationRight) : vec2(0, 0);
122
122
  float rx = dot(profileVertex, rotationRight);
123
123
  if (abs(rx) > maxDistance) {
@@ -127,9 +127,9 @@ profileVertex = rotationRight * maxDistance * sign(rx) + rotationUp * ry;
127
127
  }
128
128
  vec3 offset = right * profileVertex.x + up * profileVertex.y;
129
129
  return origin + offset;
130
- }`),x.code.add(u`vec3 localNormal(ExtrudedVertex extrudedVertex) {
131
- vec3 right = extrudedVertex.frame.right;
132
- vec3 up = extrudedVertex.frame.up;
130
+ }`),m.code.add(u`vec3 localNormal(ExtrudedVertex extrudedVertex) {
131
+ vec3 right = extrudedVertex.normalFrame.right;
132
+ vec3 up = extrudedVertex.normalFrame.up;
133
133
  vec2 profileNormal = extrudedVertex.profileNormal;
134
134
  vec3 normal = right * profileNormal.x + up * profileNormal.y;
135
135
  if(extrudedVertex.isCap) {
@@ -137,4 +137,4 @@ vec3 forward = cross(up, right);
137
137
  normal += forward * extrudedVertex.capNormalOffset;
138
138
  }
139
139
  return normal;
140
- }`)}class y extends x{constructor(){super(...arguments),this.numJoinSubdivisions=1,this.size=e(1,1),this.cutoffAngle=0,this.profile=f.center,this.hasPathSize=!1,this.hasPathColor=!1,this.hasPathOpacity=!1}}export{h as PathVertexPosition,y as PathVertexPositionPassParameters};
140
+ }`)}class y extends m{constructor(){super(...arguments),this.size=e(1,1),this.cutoffAngle=0,this.profile=p.center,this.hasPathSize=!1,this.hasPathColor=!1,this.hasPathOpacity=!1}}export{h as PathVertexPosition,y as PathVertexPositionPassParameters};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as i,subclass as s}from"../../../../core/accessorSupport/decorators.js";import{set as a}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as r,set as n,scale as o,floor as h,subtract as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as p,set as m,positiveInfinity as c,equals as d}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as _}from"../../webgl.js";import{addWraparound as g}from"../../layers/i3s/I3SUtil.js";import C from"../../webgl/RenderNode.js";import{G as P}from"../../../../chunks/GaussianSplat.glsl.js";import{G as f}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as b}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as v}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as S}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as x}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatTechnique as q}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as R}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as w,DepthStencilAttachment as E,PrimitiveType as T}from"../../../webgl/enums.js";var D;let y=class extends C{static{D=this}constructor(e){super(e),this.consumes={required:[_.GAUSSIAN_SPLAT]},this.produces=_.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new P,this._compositionPassParameters=new f,this._depthCompositionPassParameters=new S,this._compositionConfiguration=new v,this._clipBox=p(),this._previousCameraDirection=u(),this._previousSortRequestCameraDirection=u(),this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._directionChangeEpsilon=.001,this._configuration=new R(e.view.state.isGlobal),m(this._clipBox,c)}async initialize(){this.addHandles([t(()=>this.view.state.camera,()=>this._onCameraChange()),t(()=>2===this.view.state.mode,()=>this.requestRender(1))])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(q,this._configuration),this.techniques.precompile(b,this._compositionConfiguration),this.techniques.precompile(x))}render(){const e=this.input;if(this._updateConfigurations(),this._handleFading(),!this._canRender)return e;const t=e.getAttachment(w);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=null!=t;const{fullWidth:i,fullHeight:s}=this.bindParameters.camera;this._prepareParameters(s,i);const a=this.renderingContext,r=this.fboCache,n=r.acquire(i,s,"gaussian color output"),o=e.getAttachment(E);n.attachDepth(o);const h=this.techniques.get(q,this._configuration);this._renderGaussianColorAndDepth(n,h);const l=r.acquire(i,s,this.produces);this._depthCompositionPassParameters.splatDepth=n.getTexture(w),l.attachDepth(e.getAttachment(E)),a.bindFramebuffer(l.fbo);const u=this.techniques.get(x);a.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),a.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=n.getTexture(),t?(l.acquireColor(w,8,"emissive"),this._compositionPassParameters.emission=e.getTexture(w)):this._compositionPassParameters.emission=null,a.bindFramebuffer(l.fbo);const p=this.techniques.get(b,this._compositionConfiguration);return a.bindTechnique(p,this.bindParameters,this._compositionPassParameters),a.screen.draw(),n.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const t=e||c;this._hasSameClipBox(t)||(m(this._clipBox,t),this._tileCullingRevision=g(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!d(this._clipBox,c,(e,t)=>e===t)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return this._data.visibleGaussians>0&&null!=this._data.orderTexture.texture&&null!=this._data.textureAtlas.texture&&null!=this._data.headerTexture.texture}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){const{idleMinimumOpacity:e,nonIdleMinimumOpacity:t}=this.view.qualitySettings.gaussianSplat;this._configuration.alphaCutoff=this._isIdle?e:t,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane}_onCameraChange(){this._tileCullingRevision=g(this._tileCullingRevision,1);const e=this.view.state.camera.ray.direction;if(!this._directionChanged(e))return;if(r(this._previousCameraDirection,e),!this._shouldRequestSort(e))return;this._data.requestSort()&&r(this._previousSortRequestCameraDirection,e)}_directionChanged(e){return Math.abs(e[0]-this._previousCameraDirection[0])>this._directionChangeEpsilon||Math.abs(e[1]-this._previousCameraDirection[1])>this._directionChangeEpsilon||Math.abs(e[2]-this._previousCameraDirection[2])>this._directionChangeEpsilon}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_prepareParameters(e,t){this._passParameters.splatOrder=this._data.orderTexture.texture,this._passParameters.splatFading=this._data.fadingTexture.texture,this._passParameters.splatAtlas=this._data.textureAtlas.texture,this._passParameters.splatHeader=this._data.headerTexture.texture;const i=Math.tan(.5*this.camera.fovY),s=i/e*t;a(this._passParameters.tanFov,s,i),this._passParameters.focalLength=e/(2*i);const n=this.view.qualitySettings.gaussianSplat,o=this._isIdle?n.idleMinimumSplatPixelRadius:n.nonIdleMinimumSplatPixelRadius;this._passParameters.minSplatRadius=o*Math.sqrt(t*e)/Math.sqrt(2073600),r(this._passParameters.origin,this.bindParameters.camera.eye),this._prepareHighPrecisionCameraPosition(),this._updateSlicePlaneLocalOrigin(),this._updateClipUniforms()}_updateClipUniforms(){const e=this.clippingBox||c,[t,i,s,a,r,o]=e,[h,l,u]=this.camera.eye,{clipMinCameraRelative:p,clipMaxCameraRelative:m}=this._passParameters;n(p,t-h,i-l,s-u),n(m,a-h,r-l,o-u)}_updateSlicePlaneLocalOrigin(){this._passParameters.slicePlaneLocalOrigin=this.camera.eye}_hasSameClipBox(e){return d(this._clipBox,e,(e,t)=>e===t)}_renderGaussianColorAndDepth(e,t){const i=this.renderingContext;e.acquireColor(w,5,"gaussian depth output"),i.bindFramebuffer(e.fbo),i.setClearColor(0,0,0,0),i.clear(16384),this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(T.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_prepareHighPrecisionCameraPosition(){o(this._passParameters.tileCameraPosition,this.camera.eye,1/D.tileSize),h(this._passParameters.tileCameraPosition,this._passParameters.tileCameraPosition),o(this._passParameters.cameraDelta,this._passParameters.tileCameraPosition,D.tileSize),l(this._passParameters.cameraDelta,this.camera.eye,this._passParameters.cameraDelta)}_handleFading(){if(0===this._fadeHelper.numFadingTiles)return void(this._previousFrameStart=null);this._previousFrameStart??=this.view.stage.renderer.renderContext.time;const e=this.view.stage?.renderer.renderContext.time-this._previousFrameStart;this._fadeHelper.updateAllTileFading(e),this._previousFrameStart=this.view.stage.renderer.renderContext.time,this._data.fadingTexture.updateTexture(this._data.textureAtlas.pageAllocator.pageCount)}static{this.tileSize=2.048}};e([i()],y.prototype,"consumes",void 0),e([i()],y.prototype,"produces",void 0),e([i({constructOnly:!0})],y.prototype,"layerView",void 0),y=D=e([s("esri.views.3d.webgl-engine.lib.GaussianSplatRenderer")],y);export{y as GaussianSplatRenderer};
2
+ import{__decorate as e}from"tslib";import{watch as t}from"../../../../core/reactiveUtils.js";import{Milliseconds as i}from"../../../../core/time.js";import{property as s,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{set as r}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as o,set as n,scale as h,floor as l,subtract as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as m,set as c,positiveInfinity as d,equals as _}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as g}from"../../webgl.js";import{addWraparound as f}from"../../layers/i3s/I3SUtil.js";import P from"../../webgl/RenderNode.js";import{G as C}from"../../../../chunks/GaussianSplat.glsl.js";import{G as b}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as S}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as v}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as x}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as q}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatTechnique as R}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as w}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as E,DepthStencilAttachment as T,PrimitiveType as D}from"../../../webgl/enums.js";var y;let G=class extends P{static{y=this}constructor(e){super(e),this.consumes={required:[g.GAUSSIAN_SPLAT]},this.produces=g.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new C,this._compositionPassParameters=new b,this._depthCompositionPassParameters=new x,this._compositionConfiguration=new v,this._clipBox=m(),this._previousCameraDirection=p(),this._previousSortRequestCameraDirection=p(),this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._directionChangeEpsilon=.001,this._configuration=new w(e.view.state.isGlobal),c(this._clipBox,d)}async initialize(){this.addHandles([t(()=>this.view.state.camera,()=>this._onCameraChange()),t(()=>2===this.view.state.mode,()=>this.requestRender(1))])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(R,this._configuration),this.techniques.precompile(S,this._compositionConfiguration),this.techniques.precompile(q))}render(){const e=this.input;if(this._updateConfigurations(),this._handleFading(),!this._canRender)return e;const t=e.getAttachment(E);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=null!=t;const{fullWidth:i,fullHeight:s}=this.bindParameters.camera;this._prepareParameters(s,i);const a=this.renderingContext,r=this.fboCache,o=r.acquire(i,s,"gaussian color output"),n=e.getAttachment(T);o.attachDepth(n);const h=this.techniques.get(R,this._configuration);this._renderGaussianColorAndDepth(o,h);const l=r.acquire(i,s,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(E),l.attachDepth(e.getAttachment(T)),a.bindFramebuffer(l.fbo);const u=this.techniques.get(q);a.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),a.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),t?(l.acquireColor(E,8,"emissive"),this._compositionPassParameters.emission=e.getTexture(E)):this._compositionPassParameters.emission=null,a.bindFramebuffer(l.fbo);const p=this.techniques.get(S,this._compositionConfiguration);return a.bindTechnique(p,this.bindParameters,this._compositionPassParameters),a.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const t=e||d;this._hasSameClipBox(t)||(c(this._clipBox,t),this._tileCullingRevision=f(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!_(this._clipBox,d,(e,t)=>e===t)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return this._data.visibleGaussians>0&&null!=this._data.orderTexture.texture&&null!=this._data.textureAtlas.texture&&null!=this._data.headerTexture.texture}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){const{idleMinimumOpacity:e,nonIdleMinimumOpacity:t}=this.view.qualitySettings.gaussianSplat;this._configuration.alphaCutoff=this._isIdle?e:t,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane}_onCameraChange(){this._tileCullingRevision=f(this._tileCullingRevision,1);const e=this.view.state.camera.ray.direction;if(!this._directionChanged(e))return;if(o(this._previousCameraDirection,e),!this._shouldRequestSort(e))return;this._data.requestSort()&&o(this._previousSortRequestCameraDirection,e)}_directionChanged(e){return Math.abs(e[0]-this._previousCameraDirection[0])>this._directionChangeEpsilon||Math.abs(e[1]-this._previousCameraDirection[1])>this._directionChangeEpsilon||Math.abs(e[2]-this._previousCameraDirection[2])>this._directionChangeEpsilon}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_prepareParameters(e,t){this._passParameters.splatOrder=this._data.orderTexture.texture,this._passParameters.splatFading=this._data.fadingTexture.texture,this._passParameters.splatAtlas=this._data.textureAtlas.texture,this._passParameters.splatHeader=this._data.headerTexture.texture;const i=Math.tan(.5*this.camera.fovY),s=i/e*t;r(this._passParameters.tanFov,s,i),this._passParameters.focalLength=e/(2*i);const a=this.view.qualitySettings.gaussianSplat,n=this._isIdle?a.idleMinimumSplatPixelRadius:a.nonIdleMinimumSplatPixelRadius;this._passParameters.minSplatRadius=n*Math.sqrt(t*e)/Math.sqrt(2073600),o(this._passParameters.origin,this.bindParameters.camera.eye),this._prepareHighPrecisionCameraPosition(),this._updateSlicePlaneLocalOrigin(),this._updateClipUniforms()}_updateClipUniforms(){const e=this.clippingBox||d,[t,i,s,a,r,o]=e,[h,l,u]=this.camera.eye,{clipMinCameraRelative:p,clipMaxCameraRelative:m}=this._passParameters;n(p,t-h,i-l,s-u),n(m,a-h,r-l,o-u)}_updateSlicePlaneLocalOrigin(){this._passParameters.slicePlaneLocalOrigin=this.camera.eye}_hasSameClipBox(e){return _(this._clipBox,e,(e,t)=>e===t)}_renderGaussianColorAndDepth(e,t){const i=this.renderingContext;e.acquireColor(E,5,"gaussian depth output"),i.bindFramebuffer(e.fbo),i.setClearColor(0,0,0,0),i.clear(16384),this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(D.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}_prepareHighPrecisionCameraPosition(){h(this._passParameters.tileCameraPosition,this.camera.eye,1/y.tileSize),l(this._passParameters.tileCameraPosition,this._passParameters.tileCameraPosition),h(this._passParameters.cameraDelta,this._passParameters.tileCameraPosition,y.tileSize),u(this._passParameters.cameraDelta,this.camera.eye,this._passParameters.cameraDelta)}_handleFading(){if(0===this._fadeHelper.numFadingTiles)this._previousFrameStart=null;else{const e=this.view.stage?.renderer.renderContext.time,t=i(null==e||null==this._previousFrameStart?0:e-this._previousFrameStart);this._fadeHelper.updateAllTileFading(t),this._previousFrameStart=e}this._data.fadingTexture.updateTexture(this._data.textureAtlas.pageAllocator.pageCount)}static{this.tileSize=2.048}};e([s()],G.prototype,"consumes",void 0),e([s()],G.prototype,"produces",void 0),e([s({constructOnly:!0})],G.prototype,"layerView",void 0),G=y=e([a("esri.views.3d.webgl-engine.lib.GaussianSplatRenderer")],G);export{G as GaussianSplatRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{floatSubArray as t}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as e}from"../../../../geometry/support/HalfFloatArray.js";import{newIndexArray as i,compactIndices as s}from"../../../../geometry/support/Indices.js";import{newShortArray as r}from"../../../../geometry/support/ShortArray.js";import{compressNormal as o,encodeInt16 as n}from"./Normals.js";import{PathEvaluator as h}from"./PathEvaluator.js";import{encodePathVertexInfo as a}from"./PathVertexInfo.js";class u{constructor(s,o,n,a,u){this.path=s,this.profile=o,this.extruder=n,this.cap=a,this._extrusionVertexCount=0,this._extrusionFrameCount=0;const p=this.path.vertices.length-2;this.numExtrusionProfiles=n.numProfilesPerJoin()*p+2,this.numVerticesTotal=o.vertices.length*this.numExtrusionProfiles,this.numExtrusionFrames=this.path.vertices.length;const m=this.cap.numVertices;this.startCapVertexBufferStart=this.numVerticesTotal,this.numVerticesTotal+=m,this.endCapVertexBufferStart=this.numVerticesTotal,this.numVerticesTotal+=m,this.profileRightAxes=r(2*this.numExtrusionFrames),this.profileUpAxes=r(2*this.numExtrusionFrames);const l=1===u;this.profileRotationFrameUpAxes=l?r(2*this.numExtrusionFrames):null,this.pathMaxStretchDistances=e(this.numExtrusionFrames),this.profileRotations=r(this.numExtrusionFrames),this.framePositionIndices=i(this.numExtrusionFrames),this.pathVertexInfos=new Uint32Array(this.numVerticesTotal),this.positions=t(s.positions,s.offset,3*s.vertices.length),this._rebuildGeometry(),this._buildTopology(),this.evaluator=new h(this,o,this.extruder.numBendSubdivisions,a.type,n.cutoffAngle,u)}emitVertexDescriptor(t){const e=this._extrusionVertexCount;this.pathVertexInfos[e]=a(t),++this._extrusionVertexCount}emitExtrusionFrame(t,e){const{frame:i,rotationFrameUp:s,rotationAngle:r,maxStretchDistance:h}=t,a=this._extrusionFrameCount;return o(this.profileRightAxes,a,i.right[0],i.right[1],i.right[2]),o(this.profileUpAxes,a,i.up[0],i.up[1],i.up[2]),this.profileRotations[a]=n(r/Math.PI),this.profileRotationFrameUpAxes&&o(this.profileRotationFrameUpAxes,a,s[0],s[1],s[2]),this.pathMaxStretchDistances[a]=h,this.framePositionIndices[a]=e,this._extrusionFrameCount++}_rebuildGeometry(){this._extrusionVertexCount=0,this._extrusionFrameCount=0;const{vertices:t}=this.path,{profile:e}=this;this._updatePositions();for(let r=0;r<t.length;++r)this.emitExtrusionFrame(t[r],r);for(let r=0;r<e.vertices.length;++r)this.emitVertexDescriptor({frameIndex:0,sourceIndex:r,subdivision:0,type:1,capSide:0});const i=(t,e,i)=>{this.emitVertexDescriptor({frameIndex:t,sourceIndex:e,subdivision:i,type:0,capSide:0})};for(let r=1;r<t.length-1;++r)this.extruder.extrude(r,this.profile,i);const s=t.length-1;for(let r=0;r<e.vertices.length;++r)this.emitVertexDescriptor({frameIndex:s,sourceIndex:r,subdivision:0,type:1,capSide:1});this.cap.rebuildCapGeometry((t,e,i)=>this.emitVertexDescriptor({frameIndex:0,sourceIndex:t,subdivision:e,type:i,capSide:0})),this.cap.rebuildCapGeometry((t,e,i)=>this.emitVertexDescriptor({frameIndex:s,sourceIndex:t,subdivision:e,type:i,capSide:1}))}_updatePositions(){const{positions:t,offset:e,vertices:i}=this.path;if(!Array.isArray(t))return;const s=3*i.length,r=this.positions;for(let o=0;o<s;++o)r[o]=t[e+o]}_buildTopology(){const t=this.profile.vertices.length,e=this.profile.numSegments,i=this.numExtrusionProfiles-1,r=0,o=t*(this.numExtrusionProfiles-1),n=new Array,h=(t,e,i)=>{n.push(t),n.push(e),n.push(i)};for(let s=0;s<e;++s){const e=this.profile.indices[2*s],r=this.profile.indices[2*s+1];for(let s=0;s<i;++s){const i=s*t+e,o=(s+1)*t+r,n=s*t+r;h(i,(s+1)*t+e,o),h(i,o,n)}}this.cap.buildTopology(h,0,this.startCapVertexBufferStart,r),this.cap.buildTopology(h,1,this.endCapVertexBufferStart,o),this.vertexIndices=s(n)}onPathChanged(){this._rebuildGeometry()}}export{u as PathBuilder};
2
+ import{floatSubArray as t}from"../../../../geometry/support/FloatArray.js";import{newHalfFloatArray as e}from"../../../../geometry/support/HalfFloatArray.js";import{newIndexArray as i,compactIndices as s}from"../../../../geometry/support/Indices.js";import{newShortArray as r}from"../../../../geometry/support/ShortArray.js";import{pathNumProfilesPerJoin as o}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{compressNormal as n,encodeInt16 as h}from"./Normals.js";import{PathEvaluator as a}from"./PathEvaluator.js";import{encodePathVertexInfo as p}from"./PathVertexInfo.js";class u{constructor(s,n,h,p,u){this.path=s,this.profile=n,this.extruder=h,this.cap=p,this._extrusionVertexCount=0,this._extrusionFrameCount=0;const m=this.path.vertices.length-2;this.numExtrusionProfiles=o*m+2,this.numVerticesTotal=n.vertices.length*this.numExtrusionProfiles,this.numExtrusionFrames=this.path.vertices.length;const l=this.cap.numVertices;this.startCapVertexBufferStart=this.numVerticesTotal,this.numVerticesTotal+=l,this.endCapVertexBufferStart=this.numVerticesTotal,this.numVerticesTotal+=l,this.profileRightAxes=r(2*this.numExtrusionFrames),this.profileUpAxes=r(2*this.numExtrusionFrames);const c=1===u;this.profileRotationFrameUpAxes=c?r(2*this.numExtrusionFrames):null,this.pathMaxStretchDistances=e(this.numExtrusionFrames),this.profileRotations=r(this.numExtrusionFrames),this.framePositionIndices=i(this.numExtrusionFrames),this.pathVertexInfos=new Uint32Array(this.numVerticesTotal),this.positions=t(s.positions,s.offset,3*s.vertices.length),this._rebuildGeometry(),this._buildTopology(),this.evaluator=new a(this,n,h,p.type,u)}emitVertexDescriptor(t){const e=this._extrusionVertexCount;this.pathVertexInfos[e]=p(t),++this._extrusionVertexCount}emitExtrusionFrame(t,e){const{frame:i,rotationFrameUp:s,rotationAngle:r,maxStretchDistance:o}=t,a=this._extrusionFrameCount;return n(this.profileRightAxes,a,i.right[0],i.right[1],i.right[2]),n(this.profileUpAxes,a,i.up[0],i.up[1],i.up[2]),this.profileRotations[a]=h(r/Math.PI),this.profileRotationFrameUpAxes&&n(this.profileRotationFrameUpAxes,a,s[0],s[1],s[2]),this.pathMaxStretchDistances[a]=o,this.framePositionIndices[a]=e,this._extrusionFrameCount++}_rebuildGeometry(){this._extrusionVertexCount=0,this._extrusionFrameCount=0;const{vertices:t}=this.path,{profile:e}=this;this._updatePositions();for(let r=0;r<t.length;++r)this.emitExtrusionFrame(t[r],r);for(let r=0;r<e.vertices.length;++r)this.emitVertexDescriptor({frameIndex:0,sourceIndex:r,subdivision:0,type:1,capSide:0});const i=(t,e,i)=>{this.emitVertexDescriptor({frameIndex:t,sourceIndex:e,subdivision:i,type:0,capSide:0})};for(let r=1;r<t.length-1;++r)this.extruder.extrude(r,this.profile,i);const s=t.length-1;for(let r=0;r<e.vertices.length;++r)this.emitVertexDescriptor({frameIndex:s,sourceIndex:r,subdivision:0,type:1,capSide:1});this.cap.rebuildCapGeometry((t,e,i)=>this.emitVertexDescriptor({frameIndex:0,sourceIndex:t,subdivision:e,type:i,capSide:0})),this.cap.rebuildCapGeometry((t,e,i)=>this.emitVertexDescriptor({frameIndex:s,sourceIndex:t,subdivision:e,type:i,capSide:1}))}_updatePositions(){const{positions:t,offset:e,vertices:i}=this.path;if(!Array.isArray(t))return;const s=3*i.length,r=this.positions;for(let o=0;o<s;++o)r[o]=t[e+o]}_buildTopology(){const t=this.profile.vertices.length,e=this.profile.numSegments,i=this.numExtrusionProfiles-1,r=0,o=t*(this.numExtrusionProfiles-1),n=new Array,h=(t,e,i)=>{n.push(t),n.push(e),n.push(i)};for(let s=0;s<e;++s){const e=this.profile.indices[2*s],r=this.profile.indices[2*s+1];for(let s=0;s<i;++s){const i=s*t+e,o=(s+1)*t+r,n=s*t+r;h(i,(s+1)*t+e,o),h(i,o,n)}}this.cap.buildTopology(h,0,this.startCapVertexBufferStart,r),this.cap.buildTopology(h,1,this.endCapVertexBufferStart,o),this.vertexIndices=s(n)}onPathChanged(){this._rebuildGeometry()}}export{u as PathBuilder};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{reciprocalClamped as t}from"../../../../core/mathUtils.js";import{set as e}from"../../../../core/libs/gl-matrix-2/math/mat2.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/mat2f64.js";import{setAxisAngle as i}from"../../../../core/libs/gl-matrix-2/math/quat.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/quatf64.js";import{multiply as o,copy as a,length as c,scale as n,set as f,dot as p,add as m,subtract as l,normalize as h,transformMat2 as u}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_X as x,ZEROS as d,create as b}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{cross as g,set as V,transformQuat as I,dot as v,scale as P,add as j,normalize as M}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{pathNumRoundCapExtrusionSubdivisions as C}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{decodeInt16 as A,decompressNormal as O}from"./Normals.js";import{PathFrame2D as k}from"./PathFrame2D.js";import{decodePathVertexInfo as D}from"./PathVertexInfo.js";class R{constructor(t,e,s,i,r,o){this.builder=t,this.profile=e,this.numJoinSubdivisions=s,this.capType=i,this.miterCutoffAngle=r,this.upVectorAlignment=o}evaluateVertexPosition(t,e,s,i){const{framePositionIndices:r,positions:l}=this.builder,h=Q;this._evaluateExtrudedVertex(h,s);const u=G;let x=0;const d=h.frameIndex,b=h.frame.right,I=h.frame.up,v=3*r[d],P=o(L,h.profileVertex,e);if(h.isCap)g(u,I,b),x=h.capPositionOffset*e[0];else{const t=N,s=B;a(t,h.rotationRight);const i=h.maxDistance;o(t,t,e);const r=c(t);r>0?n(t,t,1/r):f(t,0,0);const l=p(P,t);if(Math.abs(l)>i){f(s,-t[1],t[0]);const e=p(P,s);n(t,t,i*Math.sign(l)),n(s,s,e),m(P,t,s)}V(u,0,0,0)}const j=b[0]*P[0]+I[0]*P[1],M=b[1]*P[0]+I[1]*P[1],y=b[2]*P[0]+I[2]*P[1],C=3*i;t[C]=l[v]+j+u[0]*x,t[C+1]=l[v+1]+M+u[1]*x,t[C+2]=l[v+2]+y+u[2]*x}_evaluateExtrudedVertex(t,e){const{profileRotations:s,profileUpAxes:r,profileRightAxes:o,profileRotationFrameUpAxes:c,pathMaxStretchDistances:f,pathVertexInfos:u}=this.builder,{miterCutoffAngle:b,profile:g,upVectorAlignment:V}=this,v=S[V],P=1===this.upVectorAlignment,j=D(u[e]),M=j.frameIndex;t.frameIndex=M;const y=A(s[M])*Math.PI,k=f[M];switch(O(t.frame.right,o,M),O(t.frame.up,r,M),t.maxDistance=0,j.type){case 0:{t.isCap=!1;const e=g.vertices[j.sourceIndex],s=Math.abs(y)>=b,r=P?O(H,c,M):t.frame.up,o=null!=c?T(J,t.frame,r):x,n=p(e,o)*y>=0;if(s&&n){a(t.profileVertex,e);const s=.5*-y+j.subdivision*y/this.numJoinSubdivisions;0!==s&&(i(K,r,s),P&&I(t.frame.up,t.frame.up,K),I(t.frame.right,t.frame.right,K))}else{const s=v(E,e,y,o);a(t.profileVertex,s)}a(t.rotationRight,n?d:o),t.maxDistance=n?0:k;break}case 1:{t.isCap=!0;const e=g.vertices[j.sourceIndex];switch(a(t.profileVertex,e),this.capType){case 0:case 1:case 3:t.capPositionOffset=0;break;case 2:t.capPositionOffset=w(j)?.5:-.5}break}case 2:{t.isCap=!0;const e=w(j)?1:-1;switch(this.capType){case 1:case 2:{const s=g.vertices[j.sourceIndex],i=2===this.capType?.5*e:0;a(t.profileVertex,s),t.capPositionOffset=i;break}case 3:{const s=.5*e,i=g.poles[j.sourceIndex],r=i.position;i.normal;a(t.profileVertex,r),t.capPositionOffset=s;break}}break}case 3:{t.isCap=!0;const e=.5*(w(j)?1:-1),s=(1-(j.subdivision+1)/C)*Math.PI*.5,i=Math.sin(s),r=Math.cos(s),o=g.poleIndices[j.sourceIndex],c=g.poles[o],f=c.position,p=c.normal,u=g.vertices[j.sourceIndex];l(E,u,f),n(E,E,i),p?(m(E,E,f),a(t.profileVertex,E),t.capPositionOffset=e*r):(h(q,E),n(q,q,i),m(E,E,f),a(t.profileVertex,E),t.capPositionOffset=e*r);break}default:j.type}}}const S={0:(e,s,i)=>{if(Math.abs(i)<=0)return s;const r=t(Math.cos(.5*i));return f(e,(r-1+1)*s[0],s[1])},1:(s,i,r,o)=>{if(0===Math.abs(r))return i;const a=t(Math.cos(.5*r)),c=e(F,1+(a-1)*o[0]*o[0],(a-1)*o[0]*o[1],(a-1)*o[0]*o[1],1+(a-1)*o[1]*o[1]);return u(s,i,c)}};function w(t){return 1===t.capSide}function T(t,e,s){const i=v(s,e.up),r=v(s,e.right);return P(_,e.up,-r),P(z,e.right,i),j(_,_,z),M(_,_),U(t,e,_),t}function U(t,e,s){f(t,v(s,e.right),v(s,e.up))}const q=b(),E=b(),F=s(),J=b(),_=y(),z=y(),G=y(),L=b(),N=b(),B=b(),H=y(),K=r(),Q={profileVertex:b(),rotationRight:b(),maxDistance:0,capPositionOffset:0,isCap:!1,frame:new k,frameIndex:0};export{R as PathEvaluator};
2
+ import{reciprocalClamped as e}from"../../../../core/mathUtils.js";import{set as t}from"../../../../core/libs/gl-matrix-2/math/mat2.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/mat2f64.js";import{setAxisAngle as r}from"../../../../core/libs/gl-matrix-2/math/quat.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/quatf64.js";import{multiply as o,copy as a,length as c,scale as n,set as f,dot as p,add as m,subtract as l,normalize as h,transformMat2 as u}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_X as x,ZEROS as d,create as b}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{cross as g,set as V,transformQuat as I,dot as P,scale as j,add as v,normalize as M}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{pathNumJoinSubdivisions as O,pathNumRoundCapExtrusionSubdivisions as k}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{decodeInt16 as A,decompressNormal as C}from"./Normals.js";import{PathFrame2D as D}from"./PathFrame2D.js";import{decodePathVertexInfo as R}from"./PathVertexInfo.js";class w{constructor(e,t,s,r,i){this.builder=e,this.profile=t,this.extruder=s,this.capType=r,this.upVectorAlignment=i}evaluateVertexPosition(e,t,s,r){const{framePositionIndices:i,positions:l}=this.builder,h=W;this._evaluateExtrudedVertex(h,s);const u=N;let x=0;const d=h.frameIndex,b=h.frame.right,I=h.frame.up,P=3*i[d],j=o(B,h.profileVertex,t);if(h.isCap)g(u,I,b),x=h.capPositionOffset*t[0];else{const e=H,s=J;a(e,h.rotationRight);const r=h.maxDistance;o(e,e,t);const i=c(e);i>0?n(e,e,1/i):f(e,0,0);const l=p(j,e);if(Math.abs(l)>r){f(s,-e[1],e[0]);const t=p(j,s);n(e,e,r*Math.sign(l)),n(s,s,t),m(j,e,s)}V(u,0,0,0)}const v=b[0]*j[0]+I[0]*j[1],M=b[1]*j[0]+I[1]*j[1],y=b[2]*j[0]+I[2]*j[1],O=3*r;e[O]=l[P]+v+u[0]*x,e[O+1]=l[P+1]+M+u[1]*x,e[O+2]=l[P+2]+y+u[2]*x}_evaluateExtrudedVertex(e,t){const{profileRotations:s,profileUpAxes:i,profileRightAxes:o,profileRotationFrameUpAxes:c,pathMaxStretchDistances:f,pathVertexInfos:u}=this.builder,{extruder:b,profile:g,upVectorAlignment:V}=this,{cutoffAngle:P,join:j}=b,v=T[V],M=1===this.upVectorAlignment,y=R(u[t]),D=y.frameIndex;e.frameIndex=D;const w=A(s[D])*Math.PI,q=f[D];switch(C(e.frame.right,o,D),C(e.frame.up,i,D),e.maxDistance=0,y.type){case 0:{e.isCap=!1;const t=g.vertices[y.sourceIndex],s=Math.abs(w)>=P,i=M?C(K,c,D):e.frame.up,o=null!=c?U(z,e.frame,i):x,n=p(t,o)*w>=0;if(s&&n){a(e.profileVertex,t);const s=2===j?(y.subdivision/O-.5)*w:(-.5+Math.floor(y.subdivision/2))*w;0!==s&&(r(Q,i,s),M&&I(e.frame.up,e.frame.up,Q),I(e.frame.right,e.frame.right,Q))}else{const s=v(F,t,w,o);a(e.profileVertex,s)}a(e.rotationRight,n?d:o),e.maxDistance=n?0:q;break}case 1:{e.isCap=!0;const t=g.vertices[y.sourceIndex];switch(a(e.profileVertex,t),this.capType){case 0:case 1:case 3:e.capPositionOffset=0;break;case 2:e.capPositionOffset=S(y)?.5:-.5}break}case 2:{e.isCap=!0;const t=S(y)?1:-1;switch(this.capType){case 1:case 2:{const s=g.vertices[y.sourceIndex],r=2===this.capType?.5*t:0;a(e.profileVertex,s),e.capPositionOffset=r;break}case 3:{const s=.5*t,r=g.poles[y.sourceIndex],i=r.position;r.normal;a(e.profileVertex,i),e.capPositionOffset=s;break}}break}case 3:{e.isCap=!0;const t=.5*(S(y)?1:-1),s=(1-(y.subdivision+1)/k)*Math.PI*.5,r=Math.sin(s),i=Math.cos(s),o=g.poleIndices[y.sourceIndex],c=g.poles[o],f=c.position,p=c.normal,u=g.vertices[y.sourceIndex];l(F,u,f),n(F,F,r),p?(m(F,F,f),a(e.profileVertex,F),e.capPositionOffset=t*i):(h(E,F),n(E,E,r),m(F,F,f),a(e.profileVertex,F),e.capPositionOffset=t*i);break}default:y.type}}}const T={0:(t,s,r)=>{if(Math.abs(r)<=0)return s;const i=e(Math.cos(.5*r));return f(t,(i-1+1)*s[0],s[1])},1:(s,r,i,o)=>{if(0===Math.abs(i))return r;const a=e(Math.cos(.5*i)),c=t(_,1+(a-1)*o[0]*o[0],(a-1)*o[0]*o[1],(a-1)*o[0]*o[1],1+(a-1)*o[1]*o[1]);return u(s,r,c)}};function S(e){return 1===e.capSide}function U(e,t,s){const r=P(s,t.up),i=P(s,t.right);return j(G,t.up,-i),j(L,t.right,r),v(G,G,L),M(G,G),q(e,t,G),e}function q(e,t,s){f(e,P(s,t.right),P(s,t.up))}const E=b(),F=b(),_=s(),z=b(),G=y(),L=y(),N=y(),B=b(),H=b(),J=b(),K=y(),Q=i(),W={profileVertex:b(),rotationRight:b(),maxDistance:0,capPositionOffset:0,isCap:!1,frame:new D,frameIndex:0};export{w as PathEvaluator};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- class i{constructor(i,e){this.cutoffAngle=i,this.numBendSubdivisions=e}numProfilesPerJoin(){return this.numBendSubdivisions+1}extrude(i,e,n){for(let s=0;s<this.numBendSubdivisions+1;++s)for(let t=0;t<e.vertices.length;++t)n(i,t,s)}}export{i as MiterExtruder};
2
+ import{pathNumProfilesPerJoin as t}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";class r{constructor(t){this.join=t,this.cutoffAngle=0===this.join?.8*Math.PI:0}extrude(r,s,o){for(let e=0;e<t;++e)for(let t=0;t<s.vertices.length;++t)o(r,t,e)}}export{r as PathExtruder};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{BufferViewUint32 as t,BufferViewVec3f as e,BufferViewVec2Snorm16 as i,BufferViewSnorm16 as r,BufferViewFloat16 as s,BufferViewFloat as o,BufferViewVec2f as a,BufferViewVec4Unorm8 as n,BufferViewUnorm8 as h}from"../../../../geometry/support/buffer/BufferView.js";import{maxPathFrameIndex as c}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{isShadowLike as u,is3DGeometry as f,isColor as p}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as l}from"../effects/geometry/olidUtils.js";import g from"../lib/GLMaterial.js";import{offsetPathVertexInfoFrameIndex as m}from"../lib/PathVertexInfo.js";import{intersectTriangleGeometry as d}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as b}from"../lib/screenPolygonTriangleIntersections.js";import{assert as y}from"../lib/Util.js";import{applyPolygonOffsetToHit as _}from"./intersectWithPolygonOffset.js";import{getLayout as S,getTextureLayout as F}from"./PathLayouts.js";import{PathPassParameters as w,PathTechnique as P}from"./PathTechnique.js";import{PathTechniqueConfiguration as V}from"./PathTechniqueConfiguration.js";import{TriangleMaterial as x}from"./TriangleMaterial.js";import{writeAttributes as C,writePosition as j,writeBufferVec2 as z,writeBufferInt16 as O,writeBufferFloat16 as B,writeBufferFloat as R,writeColor as T,writeBufferUint8 as A,writeOlidColor as v}from"./internal/bufferWriterUtils.js";import{hasShadowHighlights as I}from"../shaders/ReceiveShadowsConfiguration.js";import{alphaCutoff as M}from"../../../../webscene/support/AlphaCutoff.js";class U extends x{constructor(t,e){super(t,D),this.supportsEdges=!0,this.produces=new Map([[2,t=>(this.parameters.castShadows&&u(t)||f(t))&&!this.transparent],[4,t=>(this.parameters.castShadows&&u(t)||f(t))&&this.transparent]]),this._configuration=new V(e.spherical)}get emissions(){return this.parameters.emissiveStrength>0?this.transparent?2:1:0}updateConfiguration(t){super.updateConfiguration(t),this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.transparent=this.transparent,this._configuration.hasOccludees=t.hasOccludees,this._configuration.cullFace=this.parameters.hasSlicePlane?0:this.parameters.cullFace,this._configuration.offsetBackfaces=this.transparent,p(t.output)?(this._configuration.receiveShadows=t.shadowMap.enabled,this._configuration.hasShadowHighlights=I(this._configuration,t),this._configuration.receiveAmbientOcclusion=null!=t.ssao):this._configuration.receiveShadows=this._configuration.hasShadowHighlights=this._configuration.receiveAmbientOcclusion=!1,this._configuration.pbrMode=this.parameters.usePBR?2:0,this._configuration.emissionSource=this.parameters.usePBR?1:0,this._configuration.snowCover=t.snowCover>0,this._configuration.upVectorAlignment=this.parameters.upVectorAlignment,this._configuration.pathCapType=this.parameters.pathCapType,this._configuration.pathProfileType=this.parameters.profile.type,this._configuration.hasPathSize=this.parameters.hasPathSize,this._configuration.hasPathColor=this.parameters.hasPathColor,this._configuration.hasPathOpacity=this.parameters.hasPathOpacity}isVisibleForOutput(t){return 5!==t&&7!==t&&6!==t||this.parameters.castShadows}get visible(){return this.parameters.opacity>=M}intersectRay(t,e,i,r,s,o){d(t,i,r,s,null,o)}intersectRayDraped(){}intersectScreenPolygonDraped(){return null}intersectScreenPolygon(t,e,i,r){return _(b(t,i,e,r,null),this._configuration,i.camera.eye)}createBufferWriter(){return new q(S(),F(this.parameters))}createGLMaterial(t){return new L(t)}get transparent(){const{parameters:t}=this;return t.drivenOpacity||t.opacity<1}}class L extends g{beginSlot(t){return this.getTechnique(P,t)}}class D extends w{constructor(){super(...arguments),this.polygonOffset=0,this.castShadows=!0,this.hasSlicePlane=!1,this.drivenOpacity=!1,this.usePBR=!1,this.upVectorAlignment=0,this.pathCapType=1,this.cullFace=2}}class q{constructor(t,e){this.layout=t,this.textureBufferLayout=e,this.maxTextureBufferItemIndex=c}elementCount(t){return t.get("pathVertexInfo")?.indices.length??0}elementCountTextureBuffer(t){return t.get("position")?.indices.length??0}write(t,e,i,r,s,o,a){null!=s&&this._writeVertexBuffer(t,e,i,s,o),null!=a&&this._writeTextureBuffer(t,i,r,a)}_writeVertexBuffer(e,i,r,s,o){C(r,null,this.layout,e,i,s);const a=o?.from??0,n=s.buffer.getField("pathVertexInfo",t),h=r.get("pathVertexInfo");if(n&&h){y(1===h.size);const{data:t,stride:e,indices:i}=h;for(let r=0;r<i.length;++r){const o=t[e*i[r]];n.set(s.offset+r,m(o,a))}}}_writeTextureBuffer(t,c,u,f){const p=f.offset,g=f.buffer.getField("position",e),m=c.get("position");g&&m&&(y(3===m.size),j(m,t,g,p));const d=f.buffer.getField("profileRight",i),b=c.get("profileRight");d&&b&&(y(2===b.size),z(b,d,p));const _=f.buffer.getField("profileUp",i),S=c.get("profileUp");_&&S&&(y(2===S.size),z(S,_,p));const F=f.buffer.getField("profileRotation",r),w=c.get("profileRotation");F&&w&&(y(1===w.size),O(w,F,p));const P=f.buffer.getField("pathRotationUp",i),V=c.get("pathRotationUp");P&&V&&(y(2===V.size),z(V,P,p));const x=f.buffer.getField("pathMaxStretchDistance",s),C=c.get("pathMaxStretchDistance");x&&C&&(y(1===C.size),B(C,x,p));const I=f.buffer.getField("sizeFeatureAttribute",o),M=c.get("sizeFeatureAttribute");I&&M&&R(M,I,p);const U=f.buffer.getField("size",a),L=c.get("size");U&&L&&(y(2===L.size),z(L,U,p));const D=f.buffer.getField("colorFeatureAttribute",o),q=c.get("colorFeatureAttribute");D&&q&&R(q,D,p);const G=f.buffer.getField("color",n),W=c.get("color");G&&W&&T(W,4,G,p);const H=f.buffer.getField("opacityFeatureAttribute",o),k=c.get("opacityFeatureAttribute");H&&k&&R(k,H,p);const E=f.buffer.getField("opacity",h),J=c.get("opacity");if(E&&J&&(y(1===J.size),A(J,E,p)),l()){const t=f.buffer.getField("olidColor",n),e=m?.indices.length??0;u&&t&&e&&v(u,t,e,p)}}}export{D as Parameters,q as PathBufferWriter,U as PathMaterial};
2
+ import{BufferViewUint32 as t,BufferViewVec3f as e,BufferViewVec2Snorm16 as i,BufferViewSnorm16 as r,BufferViewFloat16 as s,BufferViewFloat as o,BufferViewVec2f as a,BufferViewVec4Unorm8 as n,BufferViewUnorm8 as h}from"../../../../geometry/support/buffer/BufferView.js";import{maxPathFrameIndex as c}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{isShadowLike as u,is3DGeometry as f,isColor as p}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as l}from"../effects/geometry/olidUtils.js";import g from"../lib/GLMaterial.js";import{offsetPathVertexInfoFrameIndex as m}from"../lib/PathVertexInfo.js";import{intersectTriangleGeometry as d}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as y}from"../lib/screenPolygonTriangleIntersections.js";import{assert as b}from"../lib/Util.js";import{applyPolygonOffsetToHit as _}from"./intersectWithPolygonOffset.js";import{getLayout as S,getTextureLayout as F}from"./PathLayouts.js";import{PathPassParameters as w,PathTechnique as P}from"./PathTechnique.js";import{PathTechniqueConfiguration as V}from"./PathTechniqueConfiguration.js";import{TriangleMaterial as x}from"./TriangleMaterial.js";import{writeAttributes as C,writePosition as j,writeBufferVec2 as z,writeBufferInt16 as T,writeBufferFloat16 as O,writeBufferFloat as B,writeColor as R,writeBufferUint8 as A,writeOlidColor as v}from"./internal/bufferWriterUtils.js";import{hasShadowHighlights as I}from"../shaders/ReceiveShadowsConfiguration.js";import{alphaCutoff as M}from"../../../../webscene/support/AlphaCutoff.js";class U extends x{constructor(t,e){super(t,D),this.supportsEdges=!0,this.produces=new Map([[2,t=>(this.parameters.castShadows&&u(t)||f(t))&&!this.transparent],[4,t=>(this.parameters.castShadows&&u(t)||f(t))&&this.transparent]]),this._configuration=new V(e.spherical)}get emissions(){return this.parameters.emissiveStrength>0?this.transparent?2:1:0}updateConfiguration(t){super.updateConfiguration(t),this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.transparent=this.transparent,this._configuration.hasOccludees=t.hasOccludees,this._configuration.cullFace=this.parameters.hasSlicePlane?0:this.parameters.cullFace,this._configuration.pathJoinType=this.parameters.pathJoinType,this._configuration.offsetBackfaces=this.transparent,p(t.output)?(this._configuration.receiveShadows=t.shadowMap.enabled,this._configuration.hasShadowHighlights=I(this._configuration,t),this._configuration.receiveAmbientOcclusion=null!=t.ssao):this._configuration.receiveShadows=this._configuration.hasShadowHighlights=this._configuration.receiveAmbientOcclusion=!1,this._configuration.pbrMode=this.parameters.usePBR?2:0,this._configuration.emissionSource=this.parameters.usePBR?1:0,this._configuration.snowCover=t.snowCover>0,this._configuration.upVectorAlignment=this.parameters.upVectorAlignment,this._configuration.pathCapType=this.parameters.pathCapType,this._configuration.pathProfileType=this.parameters.profile.type,this._configuration.hasPathSize=this.parameters.hasPathSize,this._configuration.hasPathColor=this.parameters.hasPathColor,this._configuration.hasPathOpacity=this.parameters.hasPathOpacity}isVisibleForOutput(t){return 5!==t&&7!==t&&6!==t||this.parameters.castShadows}get visible(){return this.parameters.opacity>=M}intersectRay(t,e,i,r,s,o){d(t,i,r,s,null,o)}intersectRayDraped(){}intersectScreenPolygonDraped(){return null}intersectScreenPolygon(t,e,i,r){return _(y(t,i,e,r,null),this._configuration,i.camera.eye)}createBufferWriter(){return new q(S(),F(this.parameters))}createGLMaterial(t){return new L(t)}get transparent(){const{parameters:t}=this;return t.drivenOpacity||t.opacity<1}}class L extends g{beginSlot(t){return this.getTechnique(P,t)}}class D extends w{constructor(){super(...arguments),this.polygonOffset=0,this.castShadows=!0,this.hasSlicePlane=!1,this.drivenOpacity=!1,this.usePBR=!1,this.upVectorAlignment=0,this.pathCapType=1,this.cullFace=2,this.pathJoinType=1}}class q{constructor(t,e){this.layout=t,this.textureBufferLayout=e,this.maxTextureBufferItemIndex=c}elementCount(t){return t.get("pathVertexInfo")?.indices.length??0}elementCountTextureBuffer(t){return t.get("position")?.indices.length??0}write(t,e,i,r,s,o,a){null!=s&&this._writeVertexBuffer(t,e,i,s,o),null!=a&&this._writeTextureBuffer(t,i,r,a)}_writeVertexBuffer(e,i,r,s,o){C(r,null,this.layout,e,i,s);const a=o?.from??0,n=s.buffer.getField("pathVertexInfo",t),h=r.get("pathVertexInfo");if(n&&h){b(1===h.size);const{data:t,stride:e,indices:i}=h;for(let r=0;r<i.length;++r){const o=t[e*i[r]];n.set(s.offset+r,m(o,a))}}}_writeTextureBuffer(t,c,u,f){const p=f.offset,g=f.buffer.getField("position",e),m=c.get("position");g&&m&&(b(3===m.size),j(m,t,g,p));const d=f.buffer.getField("profileRight",i),y=c.get("profileRight");d&&y&&(b(2===y.size),z(y,d,p));const _=f.buffer.getField("profileUp",i),S=c.get("profileUp");_&&S&&(b(2===S.size),z(S,_,p));const F=f.buffer.getField("profileRotation",r),w=c.get("profileRotation");F&&w&&(b(1===w.size),T(w,F,p));const P=f.buffer.getField("pathRotationUp",i),V=c.get("pathRotationUp");P&&V&&(b(2===V.size),z(V,P,p));const x=f.buffer.getField("pathMaxStretchDistance",s),C=c.get("pathMaxStretchDistance");x&&C&&(b(1===C.size),O(C,x,p));const I=f.buffer.getField("sizeFeatureAttribute",o),M=c.get("sizeFeatureAttribute");I&&M&&B(M,I,p);const U=f.buffer.getField("size",a),L=c.get("size");U&&L&&(b(2===L.size),z(L,U,p));const D=f.buffer.getField("colorFeatureAttribute",o),q=c.get("colorFeatureAttribute");D&&q&&B(q,D,p);const G=f.buffer.getField("color",n),J=c.get("color");G&&J&&R(J,4,G,p);const W=f.buffer.getField("opacityFeatureAttribute",o),H=c.get("opacityFeatureAttribute");W&&H&&B(H,W,p);const k=f.buffer.getField("opacity",h),E=c.get("opacity");if(k&&E&&(b(1===E.size),A(E,k,p)),l()){const t=f.buffer.getField("olidColor",n),e=m?.indices.length??0;u&&t&&e&&v(u,t,e,p)}}}export{D as Parameters,q as PathBufferWriter,U as PathMaterial};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{parameter as o}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TriangleTechniqueConfiguration as e}from"./TriangleTechniqueConfiguration.js";class i extends e{constructor(t){super(),this.spherical=t,this.offsetBackfaces=!1,this.cullFace=0,this.pbrMode=0,this.emissionSource=0,this.upVectorAlignment=0,this.pathCapType=3,this.pathProfileType=0,this.receiveShadows=!1,this.hasShadowHighlights=!1,this.receiveAmbientOcclusion=!1,this.hasVVSize=!1,this.hasVVColor=!1,this.hasVVOpacity=!1,this.hasPathSize=!1,this.hasPathColor=!1,this.hasPathOpacity=!1,this.hasOccludees=!1,this.snowCover=!1,this.receiveGlobalIllumination=!1,this.supportNaN=!0,this.textureCoordinateType=0,this.hasVVInstancing=!1,this.useCustomDTRExponentForWater=!1,this.useFillLights=!0,this.hasColorTexture=!1,this.hasMetallicRoughnessTexture=!1,this.hasOcclusionTexture=!1,this.hasNormalTexture=!1,this.draped=!1,this.overlayEnabled=!1,this.doubleSidedMode=0,this.renderOccluded=!1}}t([o()],i.prototype,"offsetBackfaces",void 0),t([o({count:3})],i.prototype,"cullFace",void 0),t([o({count:8})],i.prototype,"pbrMode",void 0),t([o({count:8})],i.prototype,"emissionSource",void 0),t([o({count:2})],i.prototype,"upVectorAlignment",void 0),t([o({count:4})],i.prototype,"pathCapType",void 0),t([o({count:2})],i.prototype,"pathProfileType",void 0),t([o()],i.prototype,"receiveShadows",void 0),t([o()],i.prototype,"hasShadowHighlights",void 0),t([o()],i.prototype,"receiveAmbientOcclusion",void 0),t([o()],i.prototype,"hasVVSize",void 0),t([o()],i.prototype,"hasVVColor",void 0),t([o()],i.prototype,"hasVVOpacity",void 0),t([o()],i.prototype,"hasPathSize",void 0),t([o()],i.prototype,"hasPathColor",void 0),t([o()],i.prototype,"hasPathOpacity",void 0),t([o()],i.prototype,"hasOccludees",void 0),t([o()],i.prototype,"snowCover",void 0),t([o()],i.prototype,"receiveGlobalIllumination",void 0);export{i as PathTechniqueConfiguration};
2
+ import{__decorate as t}from"tslib";import{parameter as o}from"../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{TriangleTechniqueConfiguration as e}from"./TriangleTechniqueConfiguration.js";class i extends e{constructor(t){super(),this.spherical=t,this.offsetBackfaces=!1,this.cullFace=0,this.pbrMode=0,this.emissionSource=0,this.upVectorAlignment=0,this.pathCapType=3,this.pathProfileType=0,this.pathJoinType=1,this.receiveShadows=!1,this.hasShadowHighlights=!1,this.receiveAmbientOcclusion=!1,this.hasVVSize=!1,this.hasVVColor=!1,this.hasVVOpacity=!1,this.hasPathSize=!1,this.hasPathColor=!1,this.hasPathOpacity=!1,this.hasOccludees=!1,this.snowCover=!1,this.receiveGlobalIllumination=!1,this.supportNaN=!0,this.textureCoordinateType=0,this.hasVVInstancing=!1,this.useCustomDTRExponentForWater=!1,this.useFillLights=!0,this.hasColorTexture=!1,this.hasMetallicRoughnessTexture=!1,this.hasOcclusionTexture=!1,this.hasNormalTexture=!1,this.draped=!1,this.overlayEnabled=!1,this.doubleSidedMode=0,this.renderOccluded=!1}}t([o()],i.prototype,"offsetBackfaces",void 0),t([o({count:3})],i.prototype,"cullFace",void 0),t([o({count:8})],i.prototype,"pbrMode",void 0),t([o({count:8})],i.prototype,"emissionSource",void 0),t([o({count:2})],i.prototype,"upVectorAlignment",void 0),t([o({count:4})],i.prototype,"pathCapType",void 0),t([o({count:2})],i.prototype,"pathProfileType",void 0),t([o({count:3})],i.prototype,"pathJoinType",void 0),t([o()],i.prototype,"receiveShadows",void 0),t([o()],i.prototype,"hasShadowHighlights",void 0),t([o()],i.prototype,"receiveAmbientOcclusion",void 0),t([o()],i.prototype,"hasVVSize",void 0),t([o()],i.prototype,"hasVVColor",void 0),t([o()],i.prototype,"hasVVOpacity",void 0),t([o()],i.prototype,"hasPathSize",void 0),t([o()],i.prototype,"hasPathColor",void 0),t([o()],i.prototype,"hasPathOpacity",void 0),t([o()],i.prototype,"hasOccludees",void 0),t([o()],i.prototype,"snowCover",void 0),t([o()],i.prototype,"receiveGlobalIllumination",void 0);export{i as PathTechniqueConfiguration};