@arcgis/core 5.1.0-next.17 → 5.1.0-next.19

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 (686) hide show
  1. package/Camera.d.ts +1 -1
  2. package/Ground.d.ts +7 -7
  3. package/PopupTemplate.d.ts +6 -6
  4. package/WebScene.d.ts +1 -1
  5. package/analysis/AreaMeasurementAnalysis.d.ts +1 -1
  6. package/analysis/DirectLineMeasurementAnalysis.d.ts +1 -1
  7. package/analysis/LengthDimension.d.ts +4 -4
  8. package/analysis/ShadowCastAnalysis.d.ts +3 -3
  9. package/analysis/SliceAnalysis.d.ts +1 -1
  10. package/analysis/SlicePlane.d.ts +1 -1
  11. package/analysis/VolumeMeasurement/VolumeMeasurementCutFillOptions.d.ts +1 -1
  12. package/analysis/VolumeMeasurementAnalysis.d.ts +1 -1
  13. package/applications/Components/applySetUtils.d.ts +1 -1
  14. package/applications/WebEditor/geometryUtils.d.ts +26 -0
  15. package/applications/WebEditor/geometryUtils.js +2 -0
  16. package/assets/esri/core/workers/RemoteClient.js +1 -1
  17. package/assets/esri/core/workers/chunks/045e4e520d6dffe06ba7.js +1 -0
  18. package/assets/esri/core/workers/chunks/05d6cd51ca970705e46a.js +1 -0
  19. package/assets/esri/core/workers/chunks/{da5deed75e1a170a49b3.js → 08d73543c713984f6ecf.js} +13 -13
  20. package/assets/esri/core/workers/chunks/{982e709d2cef971ecd82.js → 0d9d33f29124d464a4cb.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{07317f6b57c1314db442.js → 0e1d559d05229ef92e35.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{2762149a922275136171.js → 112227b862b935123ddf.js} +2 -2
  23. package/assets/esri/core/workers/chunks/128cdb4a02549abc68b5.js +1 -0
  24. package/assets/esri/core/workers/chunks/1336f685bae5f1251558.js +1 -0
  25. package/assets/esri/core/workers/chunks/{b71e4f48377fefe2537d.js → 15d46482ec096e3ce161.js} +1 -1
  26. package/assets/esri/core/workers/chunks/1794db88a2006711eff3.js +1 -0
  27. package/assets/esri/core/workers/chunks/{a327f36561f093dc0fab.js → 19fcc74d34cbbaa56a41.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{d0d1378e714ff0e43e26.js → 1cfa8d404d42b9eccf78.js} +1 -1
  29. package/assets/esri/core/workers/chunks/1e916e552ce7d53692d2.js +1 -0
  30. package/assets/esri/core/workers/chunks/2011da6dfc4bb89829c6.js +1 -0
  31. package/assets/esri/core/workers/chunks/{1e29a114c1cfe21121c4.js → 203ef5459fc5dde12851.js} +1 -1
  32. package/assets/esri/core/workers/chunks/215c54520d0da638fe57.js +1 -0
  33. package/assets/esri/core/workers/chunks/22045f85e503ae0ec8f4.js +1 -0
  34. package/assets/esri/core/workers/chunks/{78fc7ef00cc4931ef47d.js → 2351b713ba3d05de0728.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{0a4ebb5dca630a4ab0dd.js → 236f8137ae505c8f0764.js} +1 -1
  36. package/assets/esri/core/workers/chunks/249630af2fb01257eb75.js +1 -0
  37. package/assets/esri/core/workers/chunks/{1f30558e3ad6ac68bdb8.js → 25d34552bfb255af9467.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{7cd4280d24b24045bd7e.js → 27e14277128446e76b45.js} +1 -1
  39. package/assets/esri/core/workers/chunks/3214763f268622f09986.js +1 -0
  40. package/assets/esri/core/workers/chunks/32a1ccc145c9f6091e13.js +1 -0
  41. package/assets/esri/core/workers/chunks/34691b147318b2cfdd45.js +1 -0
  42. package/assets/esri/core/workers/chunks/{18c05353d6d8950d1491.js → 36215b2c0b1020743458.js} +1 -1
  43. package/assets/esri/core/workers/chunks/3d3b1ce112be6ea31d93.js +1 -0
  44. package/assets/esri/core/workers/chunks/{2badadf8032e166b34ec.js → 3f3c63420644f9522ab1.js} +1 -1
  45. package/assets/esri/core/workers/chunks/41108f58f0f439ebba3f.js +1 -0
  46. package/assets/esri/core/workers/chunks/{bc9997d15ec0a86793c6.js → 415957a42e45eb21aa84.js} +1 -1
  47. package/assets/esri/core/workers/chunks/43c797bfc2191b51875b.js +1 -0
  48. package/assets/esri/core/workers/chunks/460a82f3e4838b13e3b4.js +1 -0
  49. package/assets/esri/core/workers/chunks/4ad6f80488aa218b95e3.js +1 -0
  50. package/assets/esri/core/workers/chunks/4e9863a11d09900baf30.js +1 -0
  51. package/assets/esri/core/workers/chunks/4fe210314813ea1f7a26.js +1 -0
  52. package/assets/esri/core/workers/chunks/5028de543cc1b8e60e65.js +1 -0
  53. package/assets/esri/core/workers/chunks/52705ccbb452a3edb064.js +1 -0
  54. package/assets/esri/core/workers/chunks/{17b39b88547968048113.js → 531c55f3b8e708ccf767.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js → 53e348f5585fa8c53fe8.js} +2 -2
  56. package/assets/esri/core/workers/chunks/54c545f44b7ce21fb604.js +1 -0
  57. package/assets/esri/core/workers/chunks/558e9fed2e58cbbf9947.js +1 -0
  58. package/assets/esri/core/workers/chunks/{b50d2d3379654de1f2f3.js → 58134617fb7530836b81.js} +1 -1
  59. package/assets/esri/core/workers/chunks/58c4be467a922fe37f01.js +1 -0
  60. package/assets/esri/core/workers/chunks/{ec4e2f18453e1cb68fed.js → 5f10f39835cb40179000.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{7b1964255722e756eba3.js → 5f9eeab833a6c08c76c4.js} +1 -1
  62. package/assets/esri/core/workers/chunks/651b46aeabf22ff53a38.js +1 -0
  63. package/assets/esri/core/workers/chunks/65f86594c42ff82095fe.js +1 -0
  64. package/assets/esri/core/workers/chunks/{90316fb569389d48920f.js → 666f201d222c50ab8428.js} +1 -1
  65. package/assets/esri/core/workers/chunks/677f5e444ff588ab670f.js +1 -0
  66. package/assets/esri/core/workers/chunks/{323f6077a659416c4cee.js → 6a9a96aa811c1d3b6edb.js} +1 -1
  67. package/assets/esri/core/workers/chunks/6bf7d8de86b9eb76f920.js +1 -0
  68. package/assets/esri/core/workers/chunks/6c0b7890c8eec7febe28.js +1 -0
  69. package/assets/esri/core/workers/chunks/{25c189e894927099c239.js → 6c85396c90941a042c33.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{18b0776aef1536867ab8.js → 6f337c3ccd84d90a35e5.js} +1 -1
  71. package/assets/esri/core/workers/chunks/711bec78dc00fad0f78d.js +1 -0
  72. package/assets/esri/core/workers/chunks/7382c9882525101eddad.js +1 -0
  73. package/assets/esri/core/workers/chunks/778ab9e4c3928b0d7d74.js +1 -0
  74. package/assets/esri/core/workers/chunks/{a3e8b7185d63a0f85931.js → 79c69ae86a1f4a56f7c7.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{0420fb4b3592f8a26b1f.js → 7d2b1e5402a88b6bee85.js} +1 -1
  76. package/assets/esri/core/workers/chunks/7ec83fc059325e207825.js +1 -0
  77. package/assets/esri/core/workers/chunks/7f385e9c88df3395e678.js +1 -0
  78. package/assets/esri/core/workers/chunks/{66ed527cd8ad11d008be.js → 80d51d58db09b9f96cb5.js} +1 -1
  79. package/assets/esri/core/workers/chunks/81a45d7e9dadf678b584.js +1 -0
  80. package/assets/esri/core/workers/chunks/81c758bdc07ed9d9a132.js +1 -0
  81. package/assets/esri/core/workers/chunks/{8670d9d11950f3c61b79.js → 83711695e16912e9b9c5.js} +1 -1
  82. package/assets/esri/core/workers/chunks/8c3bf66f8543cedc72ef.js +1 -0
  83. package/assets/esri/core/workers/chunks/8cade3af17a8bb6d4e37.js +1 -0
  84. package/assets/esri/core/workers/chunks/920d6330df72e2f01d19.js +1 -0
  85. package/assets/esri/core/workers/chunks/9dc7abca1d1eb9ba5b58.js +1 -0
  86. package/assets/esri/core/workers/chunks/9e054c264b17f04b7efa.js +1 -0
  87. package/assets/esri/core/workers/chunks/a143a6f8e2f21548b244.js +1 -0
  88. package/assets/esri/core/workers/chunks/a48a6232fa33084cb686.js +1 -0
  89. package/assets/esri/core/workers/chunks/a4947d5d2fa6b7bd399b.js +1 -0
  90. package/assets/esri/core/workers/chunks/a49f1172b17c14527acf.js +1 -0
  91. package/assets/esri/core/workers/chunks/{6af14a0217077d9ab47f.js → aaf3ed508d30ed583915.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{ab9156be67332338bbe4.js → aceec85ce64a3e6d8761.js} +1 -1
  93. package/assets/esri/core/workers/chunks/b10b3eb8c2ed9be14ab2.js +1 -0
  94. package/assets/esri/core/workers/chunks/b315b3771d0d19681aa5.js +1 -0
  95. package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js → b397a9f87082705301a4.js} +2 -2
  96. package/assets/esri/core/workers/chunks/b40e4ed067da65c3d7ce.js +1 -0
  97. package/assets/esri/core/workers/chunks/b4b16914950792c46bd3.js +1 -0
  98. package/assets/esri/core/workers/chunks/{360b3499e2a671c309ce.js → b6969a42602517a6ef1c.js} +1 -1
  99. package/assets/esri/core/workers/chunks/baad696d84ab78b3d00e.js +2 -0
  100. package/assets/esri/core/workers/chunks/{2e7d4a437717606bc39c.js → bc2dcbdc414d157ab727.js} +1 -1
  101. package/assets/esri/core/workers/chunks/{1aa2187597f7c4adb67f.js → bcb254cb7297fec88679.js} +1 -1
  102. package/assets/esri/core/workers/chunks/{2d1a772abd730b61854f.js → bd2125e0a68378533641.js} +1 -1
  103. package/assets/esri/core/workers/chunks/{6bd910e0480451a8d6aa.js → bde2c3199f667b63dbe8.js} +1 -1
  104. package/assets/esri/core/workers/chunks/bf595eb10f99b8a96baa.js +1 -0
  105. package/assets/esri/core/workers/chunks/c0b6706f86665cec85f8.js +1 -0
  106. package/assets/esri/core/workers/chunks/{12fd2e26e949d90abfbd.js → c3c6d337ff53e5d921e8.js} +1 -1
  107. package/assets/esri/core/workers/chunks/c461c19e4fdbdd2e94d4.js +1 -0
  108. package/assets/esri/core/workers/chunks/{4214f46bee613dea72f3.js → c66aa57b6360963bd938.js} +1 -1
  109. package/assets/esri/core/workers/chunks/c873ac660e7d5dc88781.js +1 -0
  110. package/assets/esri/core/workers/chunks/c99f36159b5ed6f9267e.js +1 -0
  111. package/assets/esri/core/workers/chunks/cb5f4820277f3fc7ff2f.js +1 -0
  112. package/assets/esri/core/workers/chunks/cbcb3530375e280bfeac.js +1 -0
  113. package/assets/esri/core/workers/chunks/cf4202ad468501ef24cf.js +1 -0
  114. package/assets/esri/core/workers/chunks/d03d50f3247327257d8b.js +1 -0
  115. package/assets/esri/core/workers/chunks/{a5af20f3d484d2d3bafe.js → d2017b0b27b9e4ada922.js} +1 -1
  116. package/assets/esri/core/workers/chunks/d2d9c1f32a75befe168b.js +1 -0
  117. package/assets/esri/core/workers/chunks/{5c12a9b0db317620dce2.js → d39f5d57f7e35c00ca16.js} +1 -1
  118. package/assets/esri/core/workers/chunks/d5b4487a983921572e58.js +1 -0
  119. package/assets/esri/core/workers/chunks/d78b2f85ec9212a973e8.js +1 -0
  120. package/assets/esri/core/workers/chunks/d9dc8d9fc8ab2706f96b.js +1 -0
  121. package/assets/esri/core/workers/chunks/{09cf8aed89a1ea1f8b28.js → da42da04a9df651b06cc.js} +1 -1
  122. package/assets/esri/core/workers/chunks/{a82587f69c4bbcac7e0b.js → dc7df2072c0ebed5602c.js} +1 -1
  123. package/assets/esri/core/workers/chunks/dd24cddc406f610d2483.js +1 -0
  124. package/assets/esri/core/workers/chunks/dd3789e71270a4640551.js +1 -0
  125. package/assets/esri/core/workers/chunks/de5719ef663224860af5.js +1 -0
  126. package/assets/esri/core/workers/chunks/de6438fdbe38d32c4ad5.js +1 -0
  127. package/assets/esri/core/workers/chunks/ded71a656e2626a411f9.js +1 -0
  128. package/assets/esri/core/workers/chunks/df1fa0f7e8f7e2bcc2e6.js +1 -0
  129. package/assets/esri/core/workers/chunks/{b705f837caa76cee81fc.js → e09722903e63f6cc2540.js} +1 -1
  130. package/assets/esri/core/workers/chunks/e2e03622936d2b35afc0.js +1 -0
  131. package/assets/esri/core/workers/chunks/e33f5780fb45ac7ca889.js +1 -0
  132. package/assets/esri/core/workers/chunks/{eb9e913fe0dfcc71cf92.js → e4611ebd7dba7692a914.js} +1 -1
  133. package/assets/esri/core/workers/chunks/e52793690dff1a199647.js +1 -0
  134. package/assets/esri/core/workers/chunks/{c13efb74aa4602f6a1ee.js → e56a10a475ce128b5fce.js} +1 -1
  135. package/assets/esri/core/workers/chunks/{9531f17cecd50431cce2.js → e8ae71e482b8d5f54a72.js} +1 -1
  136. package/assets/esri/core/workers/chunks/ea633a6a3b9ea8ce965d.js +1 -0
  137. package/assets/esri/core/workers/chunks/eae1c098c16e2faaf90d.js +1 -0
  138. package/assets/esri/core/workers/chunks/{f7e25a85a79c4e3c1c9f.js → ec63c0fa21cd3c872633.js} +1 -1
  139. package/assets/esri/core/workers/chunks/ece363681bb09072f379.js +1 -0
  140. package/assets/esri/core/workers/chunks/edaae0fc63d16b0f675d.js +2 -0
  141. package/assets/esri/core/workers/chunks/{8650fbe1db55b7280c00.js → ef4237dc7b67c9039826.js} +1 -1
  142. package/assets/esri/core/workers/chunks/ef9106ee818ec732b670.js +1 -0
  143. package/assets/esri/core/workers/chunks/f121a0bf33c03abfa0b6.js +1 -0
  144. package/assets/esri/core/workers/chunks/{a2f38e86acf45272dbc2.js → f7506c9d57b2ae0c5fd3.js} +1 -1
  145. package/assets/esri/core/workers/chunks/fab7e3e07d700d7bb651.js +1 -0
  146. package/assets/esri/core/workers/chunks/fcc8d0b60f7c2397e550.js +1 -0
  147. package/assets/esri/core/workers/chunks/fe5aec7e2da4465422b4.js +1 -0
  148. package/assets/esri/themes/base/widgets/_BasemapGallery.scss +1 -0
  149. package/assets/esri/themes/base/widgets/_Editor.scss +1 -0
  150. package/assets/esri/themes/dark/main.css +1 -1
  151. package/assets/esri/themes/light/main.css +1 -1
  152. package/assets/esri/themes/light/view.css +1 -1
  153. package/chunks/Envelope.js +1 -1
  154. package/chunks/GeodeticDistanceCalculator-Ce-woMPw.js +1 -1
  155. package/chunks/GeodeticUtils.js +1 -1
  156. package/chunks/Geometry.js +1 -1
  157. package/chunks/HUDMaterial.glsl.js +41 -64
  158. package/chunks/MeasurementArrow.glsl.js +7 -8
  159. package/chunks/MultiPathImpl.js +1 -1
  160. package/chunks/OperatorGeodesicBuffer.js +1 -1
  161. package/chunks/OperatorGeodeticArea.js +1 -1
  162. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  163. package/chunks/OperatorGeodeticLength.js +1 -1
  164. package/chunks/OperatorIntegrate.js +2 -0
  165. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  166. package/chunks/OperatorProximityGeodesic.js +1 -1
  167. package/chunks/OperatorShapePreservingLength.js +1 -1
  168. package/chunks/OperatorShapePreservingProject.js +1 -1
  169. package/chunks/Point2D.js +1 -1
  170. package/chunks/RealisticTree.glsl.js +3 -3
  171. package/chunks/RibbonLine.glsl.js +29 -35
  172. package/chunks/SpatialReference.js +1 -1
  173. package/chunks/Terrain.glsl.js +24 -24
  174. package/chunks/containsOperator.js +1 -1
  175. package/chunks/disjointOperator.js +1 -1
  176. package/chunks/relateOperator.js +1 -1
  177. package/config.js +1 -1
  178. package/core/has.js +1 -1
  179. package/editing/sharedTemplates/SharedTemplateMetadata.d.ts +0 -31
  180. package/{layers/graphics/editingSupport.d.ts → editing/types.d.ts} +8 -8
  181. package/editing/types.js +2 -0
  182. package/effects/FocusAreas.d.ts +1 -1
  183. package/form/elements/FieldElement.d.ts +1 -1
  184. package/form/elements/GroupElement.d.ts +1 -1
  185. package/form/elements/TextElement.d.ts +1 -1
  186. package/form/elements/inputs/ComboBoxInput.d.ts +1 -1
  187. package/form/elements/inputs/RadioButtonsInput.d.ts +1 -1
  188. package/form/elements/inputs/SwitchInput.d.ts +1 -1
  189. package/geometry/Mesh.d.ts +7 -7
  190. package/geometry/operators/alphaShapeOperator.d.ts +1 -1
  191. package/geometry/operators/areaOperator.d.ts +1 -1
  192. package/geometry/operators/bufferOperator.d.ts +1 -1
  193. package/geometry/operators/centroidOperator.d.ts +1 -1
  194. package/geometry/operators/clipOperator.d.ts +1 -1
  195. package/geometry/operators/containsOperator.d.ts +1 -1
  196. package/geometry/operators/convexHullOperator.d.ts +1 -1
  197. package/geometry/operators/crossesOperator.d.ts +1 -1
  198. package/geometry/operators/cutOperator.d.ts +1 -1
  199. package/geometry/operators/densifyOperator.d.ts +1 -1
  200. package/geometry/operators/differenceOperator.d.ts +1 -1
  201. package/geometry/operators/disjointOperator.d.ts +1 -1
  202. package/geometry/operators/distanceOperator.d.ts +1 -1
  203. package/geometry/operators/extendOperator.js +1 -1
  204. package/geometry/operators/generalizeOperator.d.ts +1 -1
  205. package/geometry/operators/geodesicProximityOperator.d.ts +1 -1
  206. package/geometry/operators/geodeticDistanceOperator.d.ts +1 -1
  207. package/geometry/operators/geodeticUtilsOperator.d.ts +2 -2
  208. package/geometry/operators/graphicBufferOperator.d.ts +1 -1
  209. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  210. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  211. package/geometry/operators/gx/operatorConvexHull.js +1 -1
  212. package/geometry/operators/gx/operatorIntegrate.js +1 -1
  213. package/geometry/operators/gx/operatorIntersection.js +1 -1
  214. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  215. package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
  216. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  217. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  218. package/geometry/operators/intersectionOperator.d.ts +1 -1
  219. package/geometry/operators/intersectsOperator.d.ts +1 -1
  220. package/geometry/operators/isNearOperator.d.ts +1 -1
  221. package/geometry/operators/json/containsOperator.js +1 -1
  222. package/geometry/operators/json/disjointOperator.js +1 -1
  223. package/geometry/operators/lengthOperator.d.ts +1 -1
  224. package/geometry/operators/locateBetweenOperator.d.ts +1 -1
  225. package/geometry/operators/multiPartToSinglePartOperator.d.ts +1 -1
  226. package/geometry/operators/offsetOperator.d.ts +5 -5
  227. package/geometry/operators/overlapsOperator.d.ts +1 -1
  228. package/geometry/operators/proximityOperator.d.ts +1 -1
  229. package/geometry/operators/reshapeOperator.js +1 -1
  230. package/geometry/operators/simplifyOGCOperator.d.ts +1 -1
  231. package/geometry/operators/simplifyOperator.d.ts +1 -1
  232. package/geometry/operators/support/GeographicTransformation.d.ts +6 -4
  233. package/geometry/operators/support/GeographicTransformation.js +1 -1
  234. package/geometry/operators/support/GeographicTransformationStep.d.ts +5 -3
  235. package/geometry/operators/support/GeographicTransformationStep.js +1 -1
  236. package/geometry/operators/support/Transformation.d.ts +6 -6
  237. package/geometry/operators/support/jsonConverter.js +1 -1
  238. package/geometry/operators/support/projectionTransformation.js +1 -1
  239. package/geometry/operators/symmetricDifferenceOperator.d.ts +1 -1
  240. package/geometry/operators/touchesOperator.d.ts +1 -1
  241. package/geometry/operators/unionOperator.d.ts +1 -1
  242. package/geometry/operators/withinOperator.d.ts +1 -1
  243. package/geometry/support/MeshMaterialMetallicRoughness.d.ts +1 -1
  244. package/geometry/support/zscale.js +1 -1
  245. package/graphic/KnowledgeGraphGraphicOrigin.d.ts +0 -1
  246. package/graphic/LinkChartGraphicOrigin.js +1 -1
  247. package/interfaces.d.ts +60 -60
  248. package/kernel.js +1 -1
  249. package/layers/BuildingSceneLayer.d.ts +4 -4
  250. package/layers/CSVLayer.d.ts +319 -542
  251. package/layers/CSVLayer.js +1 -1
  252. package/layers/CatalogLayer.d.ts +2 -2
  253. package/layers/ElevationLayer.d.ts +1 -1
  254. package/layers/FeatureLayer.d.ts +15 -15
  255. package/layers/FeatureLayer.js +1 -1
  256. package/layers/GeoJSONLayer.d.ts +6 -6
  257. package/layers/GeoRSSLayer.d.ts +1 -1
  258. package/layers/GraphicsLayer.d.ts +2 -2
  259. package/layers/ImageryLayer.d.ts +3 -3
  260. package/layers/ImageryTileLayer.d.ts +2 -2
  261. package/layers/IntegratedMesh3DTilesLayer.d.ts +6 -6
  262. package/layers/IntegratedMeshLayer.d.ts +7 -7
  263. package/layers/MapImageLayer.d.ts +1 -1
  264. package/layers/MediaLayer.d.ts +1 -1
  265. package/layers/OGCFeatureLayer.d.ts +2 -2
  266. package/layers/OrientedImageryLayer.d.ts +6 -6
  267. package/layers/OrientedImageryLayer.js +1 -1
  268. package/layers/PointCloudLayer.d.ts +1 -1
  269. package/layers/SceneLayer.d.ts +7 -7
  270. package/layers/StreamLayer.d.ts +2 -2
  271. package/layers/SubtypeGroupLayer.d.ts +5 -5
  272. package/layers/VectorTileLayer.d.ts +2 -2
  273. package/layers/VideoLayer.d.ts +1 -1
  274. package/layers/VoxelLayer.d.ts +8 -8
  275. package/layers/WFSLayer.d.ts +6 -6
  276. package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
  277. package/layers/graphics/applyEditsUtils.js +1 -1
  278. package/layers/graphics/data/QueryEngineCapabilities.js +1 -1
  279. package/layers/graphics/data/QueryEngineResult.js +1 -1
  280. package/layers/graphics/editingSupport.js +1 -1
  281. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  282. package/layers/graphics/sources/OGCFeatureSource.js +1 -1
  283. package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
  284. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  285. package/layers/graphics/sources/support/QueryTask.js +1 -1
  286. package/layers/mixins/ArcGISImageService.js +1 -1
  287. package/layers/mixins/BlendLayer.d.ts +6 -6
  288. package/layers/mixins/EditBusLayer.d.ts +1 -1
  289. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  290. package/layers/orientedImagery/transformations/utils.js +1 -1
  291. package/layers/pointCloudFilters/PointCloudReturnFilter.d.ts +1 -1
  292. package/layers/pointCloudFilters/PointCloudValueFilter.d.ts +1 -1
  293. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  294. package/layers/raster/functions/ExtractBandFunction.js +1 -1
  295. package/layers/support/DimensionalDefinition.d.ts +2 -2
  296. package/layers/support/FeatureEffect.d.ts +4 -4
  297. package/layers/support/FeatureFilter.d.ts +17 -17
  298. package/layers/support/FeatureReductionBinning.d.ts +1 -1
  299. package/layers/support/FeatureReductionCluster.d.ts +9 -9
  300. package/layers/support/LabelClass.d.ts +2 -2
  301. package/layers/support/RasterFunction.d.ts +1 -1
  302. package/layers/support/SceneFilter.d.ts +2 -2
  303. package/layers/support/SceneModification.d.ts +3 -3
  304. package/layers/support/SubtypeSublayer.d.ts +5 -5
  305. package/layers/support/arcgisLayerUrl.js +1 -1
  306. package/layers/support/capabilities.js +1 -1
  307. package/layers/support/featurePopupQueryUtils.js +1 -1
  308. package/layers/support/serviceCapabilitiesUtils.js +1 -1
  309. package/networks/support/Circuit.d.ts +11 -2
  310. package/networks/support/CircuitSection.d.ts +3 -2
  311. package/networks/support/TraceConfiguration.d.ts +5 -4
  312. package/networks/support/UNTraceConfiguration.d.ts +6 -5
  313. package/networks/support/jsonTypes.d.ts +305 -0
  314. package/package.json +3 -3
  315. package/popup/content/AttachmentsContent.d.ts +1 -1
  316. package/popup/content/BarChartMediaInfo.d.ts +1 -1
  317. package/popup/content/ColumnChartMediaInfo.d.ts +1 -1
  318. package/popup/content/FieldsContent.d.ts +1 -1
  319. package/popup/content/ImageMediaInfo.d.ts +1 -1
  320. package/popup/content/LineChartMediaInfo.d.ts +1 -1
  321. package/popup/content/MediaContent.d.ts +1 -1
  322. package/popup/content/PieChartMediaInfo.d.ts +1 -1
  323. package/popup/content/RelationshipContent.d.ts +1 -1
  324. package/popup/content/TextContent.d.ts +1 -1
  325. package/portal/schemas/definitions.js +1 -1
  326. package/portal/support/urlUtils.js +1 -1
  327. package/renderers/DotDensityRenderer.d.ts +3 -3
  328. package/renderers/FlowRenderer.d.ts +6 -6
  329. package/renderers/HeatmapRenderer.d.ts +3 -3
  330. package/renderers/PieChartRenderer.d.ts +1 -1
  331. package/renderers/RasterShadedReliefRenderer.d.ts +1 -1
  332. package/renderers/Renderer.d.ts +2 -2
  333. package/renderers/SimpleRenderer.d.ts +1 -1
  334. package/renderers/VectorFieldRenderer.d.ts +1 -1
  335. package/renderers/mixins/VisualVariablesMixin.d.ts +8 -8
  336. package/rest/featureService/FeatureService.js +1 -1
  337. package/rest/featureService/types.d.ts +7 -1
  338. package/rest/query/operations/editsZScale.js +1 -1
  339. package/rest/query/operations/pbfFlatFeatureSet.js +1 -1
  340. package/rest/query/support/AttachmentInfo.d.ts +1 -1
  341. package/rest/support/AutoIntervalBinParameters.d.ts +1 -1
  342. package/rest/support/DateBinParameters.d.ts +1 -1
  343. package/rest/support/FixedBoundariesBinParameters.d.ts +1 -1
  344. package/rest/support/FixedIntervalBinParameters.d.ts +1 -1
  345. package/rest/support/Query.d.ts +3 -2
  346. package/rest/types.d.ts +1 -3
  347. package/smartMapping/labels/clusters.d.ts +1 -1
  348. package/smartMapping/popup/clusters.d.ts +2 -2
  349. package/smartMapping/popup/templates.d.ts +1 -1
  350. package/smartMapping/raster/renderers/flow.d.ts +2 -2
  351. package/smartMapping/renderers/color.d.ts +12 -12
  352. package/smartMapping/renderers/predominance.d.ts +3 -3
  353. package/smartMapping/renderers/relationship.d.ts +15 -15
  354. package/smartMapping/renderers/univariateColorSize.d.ts +4 -4
  355. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  356. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  357. package/smartMapping/support/utils.js +1 -1
  358. package/smartMapping/symbology/color.d.ts +4 -4
  359. package/smartMapping/symbology/flow.d.ts +2 -2
  360. package/smartMapping/symbology/types.d.ts +18 -18
  361. package/support/revision.js +1 -1
  362. package/symbols/CIMSymbol.d.ts +1 -1
  363. package/symbols/FillSymbol3DLayer.d.ts +3 -3
  364. package/symbols/IconSymbol3DLayer.d.ts +1 -1
  365. package/symbols/LabelSymbol3D.d.ts +2 -2
  366. package/symbols/LineStyleMarker3D.d.ts +7 -7
  367. package/symbols/LineSymbol3D.d.ts +2 -2
  368. package/symbols/LineSymbol3DLayer.d.ts +7 -7
  369. package/symbols/LineSymbolMarker.d.ts +6 -6
  370. package/symbols/MarkerSymbol.d.ts +1 -1
  371. package/symbols/MeshSymbol3D.d.ts +2 -2
  372. package/symbols/ObjectSymbol3DLayer.d.ts +1 -1
  373. package/symbols/PathSymbol3DLayer.d.ts +14 -14
  374. package/symbols/PictureFillSymbol.d.ts +1 -1
  375. package/symbols/PictureMarkerSymbol.d.ts +1 -1
  376. package/symbols/PointSymbol3D.d.ts +3 -3
  377. package/symbols/PolygonSymbol3D.d.ts +8 -26
  378. package/symbols/PolygonSymbol3D.js +1 -1
  379. package/symbols/SimpleFillSymbol.d.ts +8 -8
  380. package/symbols/SimpleLineSymbol.d.ts +20 -20
  381. package/symbols/SimpleMarkerSymbol.d.ts +7 -7
  382. package/symbols/Symbol3DLayer.d.ts +28 -34
  383. package/symbols/TextSymbol.d.ts +1 -1
  384. package/symbols/TextSymbol3DLayer.d.ts +1 -1
  385. package/symbols/WaterSymbol3DLayer.d.ts +3 -3
  386. package/symbols/WebStyleSymbol.d.ts +1 -1
  387. package/symbols/callouts/Callout3D.d.ts +1 -1
  388. package/symbols/callouts/LineCallout3D.d.ts +3 -3
  389. package/symbols/cim/CIMCursor.js +1 -1
  390. package/symbols/cim/CIMSymbolHelper.js +1 -1
  391. package/symbols/cim/cimAnalyzer.js +1 -1
  392. package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
  393. package/symbols/cim/placements/PlacementAtExtremities.js +1 -1
  394. package/symbols/cim/placements/PlacementAtMeasuredUnits.js +1 -1
  395. package/symbols/cim/placements/PlacementAtRatioPositions.js +1 -1
  396. package/symbols/cim/placements/PlacementOnLine.js +1 -1
  397. package/symbols/cim/placements/PlacementOnVertices.js +1 -1
  398. package/symbols/cim/types.d.ts +30 -23
  399. package/symbols/edges/Edges3D.d.ts +1 -1
  400. package/symbols/edges/SolidEdges3D.d.ts +1 -1
  401. package/symbols/patterns/LineStylePattern3D.d.ts +11 -11
  402. package/symbols/patterns/StylePattern3D.d.ts +8 -8
  403. package/symbols/support/ElevationInfo.d.ts +2 -2
  404. package/symbols/support/IconSymbol3DLayerResource.d.ts +6 -6
  405. package/symbols/support/ObjectSymbol3DLayerResource.d.ts +7 -7
  406. package/symbols/support/Symbol3DEmissive.d.ts +24 -13
  407. package/symbols/support/Symbol3DVerticalOffset.d.ts +2 -2
  408. package/symbols/support/previewSymbol3D.js +1 -1
  409. package/versionManagement/VersionManagementService.d.ts +3 -2
  410. package/views/2d/analysis/DistanceMeasurement/utils.js +1 -1
  411. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  412. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedPolyShader.js +1 -1
  413. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  414. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
  415. package/views/2d/engine/webgl/shaderGraph/techniques/animated/attributes.js +1 -1
  416. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  417. package/views/2d/layers/BaseLayerViewGL2D.d.ts +1 -1
  418. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  419. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  420. package/views/2d/types.d.ts +3 -3
  421. package/views/3d/environment/CloudyWeather.d.ts +1 -1
  422. package/views/3d/environment/Environment.d.ts +4 -4
  423. package/views/3d/environment/FoggyWeather.d.ts +1 -1
  424. package/views/3d/environment/RainyWeather.d.ts +1 -1
  425. package/views/3d/environment/SnowyWeather.d.ts +1 -1
  426. package/views/3d/environment/SunLighting.d.ts +1 -1
  427. package/views/3d/environment/SunnyWeather.d.ts +1 -1
  428. package/views/3d/environment/VirtualLighting.d.ts +1 -1
  429. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  430. package/views/3d/layers/graphics/FeatureGraphics3DGraphicsPipeline.js +1 -1
  431. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  432. package/views/3d/support/MemoryController.js +1 -1
  433. package/views/3d/support/orientedBoundingBox.js +1 -1
  434. package/views/3d/webgl/RenderNode.d.ts +46 -57
  435. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  436. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  437. package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
  438. package/views/3d/webgl-engine/lib/Viewshed.js +1 -1
  439. package/views/3d/webgl-engine/materials/renderers/BufferCache.js +2 -0
  440. package/views/3d/webgl-engine/materials/renderers/MergedBuffer.js +1 -1
  441. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  442. package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
  443. package/views/3d/webgl-engine/materials/renderers/PerOriginData.js +1 -1
  444. package/views/3d/webgl-engine/materials/renderers/TextureBufferCache.js +2 -0
  445. package/views/3d/webgl-engine/materials/renderers/VaoWriter.js +1 -1
  446. package/views/3d/webgl-engine/materials/renderers/VboCache.js +2 -0
  447. package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
  448. package/views/3d/webgl-engine/shaders/MeasurementArrow.glsl.js +1 -1
  449. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +7 -7
  450. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  451. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  452. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  453. package/views/3d/webgl-engine/shaders/alphaCutoff.glsl.js +2 -0
  454. package/views/3d/webgl.d.ts +8 -5
  455. package/views/DOMContainer.js +1 -1
  456. package/views/Magnifier.d.ts +3 -3
  457. package/views/MapView.d.ts +7 -7
  458. package/views/SceneView.d.ts +34 -37
  459. package/views/View.d.ts +2 -2
  460. package/views/analysis/ElevationProfile/ElevationProfileChart.js +1 -1
  461. package/views/draw/DrawOperation.js +1 -1
  462. package/views/draw/DrawTool.js +1 -1
  463. package/views/draw/plugins/BezierSegmentPlugin.js +1 -1
  464. package/views/draw/plugins/CircularArcSegmentPlugin.js +1 -1
  465. package/views/draw/plugins/FreehandSegmentPlugin.js +1 -1
  466. package/views/draw/plugins/MultipointPlugin.js +1 -1
  467. package/views/draw/plugins/PointPlugin.js +1 -1
  468. package/views/draw/plugins/PolygonPlugin.js +1 -1
  469. package/views/draw/plugins/PolylinePlugin.js +1 -1
  470. package/views/draw/plugins/ShapePlugin.js +1 -1
  471. package/views/draw/support/managers/TooltipManager.js +1 -1
  472. package/views/interactive/sketch/SketchLabelOptions.d.ts +1 -1
  473. package/views/interactive/sketch/SketchTooltipOptions.d.ts +1 -1
  474. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  475. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  476. package/views/interactive/snapping/SnappingOptions.d.ts +7 -7
  477. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
  478. package/views/interactive/tooltip/content/TooltipContentDynamic.js +1 -1
  479. package/views/interactive/tooltip/infos/DynamicTooltipInfo.js +1 -1
  480. package/views/layers/FeatureLikeLayerView.js +1 -1
  481. package/views/support/HighlightOptions.d.ts +1 -1
  482. package/views/support/flow/dataUtils.js +1 -1
  483. package/views/ui/DefaultUI.d.ts +2 -2
  484. package/views/webgl/VertexArrayObject.js +1 -1
  485. package/webscene/Environment.d.ts +10 -10
  486. package/webscene/Glow.d.ts +13 -2
  487. package/webscene/background/ColorBackground.d.ts +1 -1
  488. package/webscene/spec-certification/spec.js +1 -1
  489. package/widgets/AreaMeasurement2D.d.ts +1 -1
  490. package/widgets/AreaMeasurement3D.d.ts +2 -2
  491. package/widgets/Attachments.d.ts +1 -1
  492. package/widgets/Attribution.d.ts +1 -1
  493. package/widgets/BasemapGallery.d.ts +1 -1
  494. package/widgets/BasemapLayerList.d.ts +3 -3
  495. package/widgets/BasemapToggle.d.ts +1 -1
  496. package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +1 -1
  497. package/widgets/Bookmarks.d.ts +2 -2
  498. package/widgets/BuildingExplorer.d.ts +1 -1
  499. package/widgets/CatalogLayerList.d.ts +3 -3
  500. package/widgets/Compass.d.ts +2 -2
  501. package/widgets/CoordinateConversion.d.ts +1 -1
  502. package/widgets/Daylight.d.ts +5 -5
  503. package/widgets/DirectLineMeasurement3D.d.ts +2 -2
  504. package/widgets/Directions/DirectionsViewModel.d.ts +12 -0
  505. package/widgets/Directions/DirectionsViewModel.js +1 -1
  506. package/widgets/Directions.d.ts +4 -4
  507. package/widgets/Directions.js +1 -1
  508. package/widgets/DistanceMeasurement2D.d.ts +1 -1
  509. package/widgets/Editor/CreateFeaturesWorkflow.d.ts +1 -1
  510. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  511. package/widgets/Editor/SplitFeatureWorkflow.js +1 -1
  512. package/widgets/Editor.d.ts +2 -2
  513. package/widgets/ElevationProfile/ElevationProfileLineGround.d.ts +1 -1
  514. package/widgets/ElevationProfile/ElevationProfileLineInput.d.ts +1 -1
  515. package/widgets/ElevationProfile/ElevationProfileLineView.d.ts +1 -1
  516. package/widgets/ElevationProfile.d.ts +3 -3
  517. package/widgets/Expand.d.ts +1 -1
  518. package/widgets/FeatureForm.d.ts +1 -1
  519. package/widgets/FeatureTable/ActionColumn.d.ts +1 -1
  520. package/widgets/FeatureTable/AttachmentsColumn.d.ts +1 -1
  521. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +3 -3
  522. package/widgets/FeatureTable/Grid/GroupColumn.d.ts +1 -1
  523. package/widgets/FeatureTable/RelationshipColumn.d.ts +1 -1
  524. package/widgets/FeatureTable/VisibleElements.d.ts +1 -1
  525. package/widgets/FeatureTable.d.ts +9 -9
  526. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.d.ts +5 -5
  527. package/widgets/FeatureTemplates.d.ts +8 -8
  528. package/widgets/Features/FeaturesViewModel.d.ts +2 -2
  529. package/widgets/Features/FeaturesVisibleElements.d.ts +2 -2
  530. package/widgets/Features.d.ts +1 -1
  531. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  532. package/widgets/Histogram.d.ts +2 -2
  533. package/widgets/HistogramRangeSlider.d.ts +1 -1
  534. package/widgets/Home/HomeViewModel.d.ts +2 -1
  535. package/widgets/Home/HomeViewModel.js +1 -1
  536. package/widgets/Home.d.ts +1 -1
  537. package/widgets/Home.js +1 -1
  538. package/widgets/LayerList.d.ts +4 -4
  539. package/widgets/Legend.d.ts +8 -8
  540. package/widgets/LineOfSight.d.ts +1 -1
  541. package/widgets/Locate.d.ts +2 -2
  542. package/widgets/Measurement.d.ts +1 -1
  543. package/widgets/NavigationToggle/NavigationToggleViewModel.d.ts +1 -1
  544. package/widgets/NavigationToggle.d.ts +3 -3
  545. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  546. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  547. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  548. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  549. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  550. package/widgets/OrientedImageryViewer/constants.js +1 -1
  551. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  552. package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
  553. package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
  554. package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
  555. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  556. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  557. package/widgets/OrientedImageryViewer/types.js +1 -1
  558. package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
  559. package/widgets/OrientedImageryViewer.js +1 -1
  560. package/widgets/Popup/PopupVisibleElements.d.ts +2 -2
  561. package/widgets/Popup.d.ts +5 -5
  562. package/widgets/Print/CustomTemplate.d.ts +1 -1
  563. package/widgets/Print/TemplateOptions.d.ts +4 -4
  564. package/widgets/ScaleRangeSlider.d.ts +1 -1
  565. package/widgets/Search/SearchViewModel.d.ts +4 -4
  566. package/widgets/Search.d.ts +5 -5
  567. package/widgets/ShadowCast.d.ts +3 -3
  568. package/widgets/Sketch/SketchViewModel.d.ts +39 -39
  569. package/widgets/Sketch/SketchViewModel.js +1 -1
  570. package/widgets/Sketch/support/PluginManager.js +1 -1
  571. package/widgets/Sketch.d.ts +43 -43
  572. package/widgets/Slice.d.ts +2 -2
  573. package/widgets/Slider/SliderViewModel.d.ts +2 -2
  574. package/widgets/Slider.d.ts +9 -9
  575. package/widgets/Swipe/SwipeViewModel.d.ts +1 -1
  576. package/widgets/Swipe.d.ts +2 -2
  577. package/widgets/TableList.d.ts +1 -1
  578. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +8 -8
  579. package/widgets/TimeSlider/types.d.ts +1 -1
  580. package/widgets/TimeSlider.d.ts +11 -11
  581. package/widgets/Track.d.ts +2 -2
  582. package/widgets/UtilityNetworkAssociations.d.ts +3 -3
  583. package/widgets/UtilityNetworkTrace.d.ts +4 -4
  584. package/widgets/UtilityNetworkValidateTopology.d.ts +1 -1
  585. package/widgets/ValuePicker.d.ts +5 -5
  586. package/widgets/VideoPlayer.d.ts +1 -1
  587. package/widgets/smartMapping/ClassedColorSlider.d.ts +1 -1
  588. package/widgets/smartMapping/ClassedSizeSlider.d.ts +1 -1
  589. package/widgets/smartMapping/ColorSizeSlider.d.ts +2 -2
  590. package/widgets/smartMapping/ColorSlider.d.ts +1 -1
  591. package/widgets/smartMapping/HeatmapSlider.d.ts +1 -1
  592. package/widgets/smartMapping/OpacitySlider.d.ts +1 -1
  593. package/widgets/smartMapping/SizeSlider.d.ts +1 -1
  594. package/widgets/smartMapping/SmartMappingSliderBase.d.ts +4 -4
  595. package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +6 -6
  596. package/widgets/support/GridControls.d.ts +1 -1
  597. package/widgets/support/SnappingControls/VisibleElements.d.ts +1 -1
  598. package/widgets/support/SnappingControls.d.ts +6 -6
  599. package/assets/esri/core/workers/chunks/0184b4c0c92c76c60ab2.js +0 -1
  600. package/assets/esri/core/workers/chunks/08616877b58b518e7461.js +0 -1
  601. package/assets/esri/core/workers/chunks/089cef7124173a5cd5f9.js +0 -1
  602. package/assets/esri/core/workers/chunks/0baa0d66003d23cc76a7.js +0 -1
  603. package/assets/esri/core/workers/chunks/0baf2cf9d8998045a605.js +0 -1
  604. package/assets/esri/core/workers/chunks/0bf742d48f434c4c575f.js +0 -1
  605. package/assets/esri/core/workers/chunks/0cc68540194bd9f7aa3c.js +0 -1
  606. package/assets/esri/core/workers/chunks/0e216f0075fd531c3a2b.js +0 -1
  607. package/assets/esri/core/workers/chunks/1219b588f983b4f35033.js +0 -1
  608. package/assets/esri/core/workers/chunks/13e913aa5f5113fceb16.js +0 -1
  609. package/assets/esri/core/workers/chunks/15ba0296403dd4152b88.js +0 -1
  610. package/assets/esri/core/workers/chunks/15e5471277a48f482383.js +0 -1
  611. package/assets/esri/core/workers/chunks/16abc548724e428c325a.js +0 -1
  612. package/assets/esri/core/workers/chunks/1d124a55f6804be19e09.js +0 -1
  613. package/assets/esri/core/workers/chunks/1ede5fa7a16839ed9444.js +0 -1
  614. package/assets/esri/core/workers/chunks/25267253ba578eba38cf.js +0 -1
  615. package/assets/esri/core/workers/chunks/27aa21da934ecaca381a.js +0 -1
  616. package/assets/esri/core/workers/chunks/27d1f8279df34d8b15b5.js +0 -1
  617. package/assets/esri/core/workers/chunks/2907e9a7216b5a29729b.js +0 -1
  618. package/assets/esri/core/workers/chunks/2b0891ba57ba66b913ce.js +0 -1
  619. package/assets/esri/core/workers/chunks/2bb7bb7901bd343201fc.js +0 -1
  620. package/assets/esri/core/workers/chunks/2c7e5b78d94e5850537b.js +0 -1
  621. package/assets/esri/core/workers/chunks/2d52b137ee64469a46b2.js +0 -1
  622. package/assets/esri/core/workers/chunks/2eb7df99170b7bb2a914.js +0 -1
  623. package/assets/esri/core/workers/chunks/36b8dd092697ef544f40.js +0 -1
  624. package/assets/esri/core/workers/chunks/395ee51a863757ea8124.js +0 -1
  625. package/assets/esri/core/workers/chunks/3b0cfe3db8d90e02d6c6.js +0 -1
  626. package/assets/esri/core/workers/chunks/454150571b5b664b576a.js +0 -1
  627. package/assets/esri/core/workers/chunks/4740d319f233b7f528fe.js +0 -1
  628. package/assets/esri/core/workers/chunks/4742a8c19b86a5f859f0.js +0 -1
  629. package/assets/esri/core/workers/chunks/49d58bacb5b397246978.js +0 -1
  630. package/assets/esri/core/workers/chunks/4ba4aa6c75e3f8950e65.js +0 -1
  631. package/assets/esri/core/workers/chunks/59f955c7d6b0589e7cc6.js +0 -1
  632. package/assets/esri/core/workers/chunks/5a347b1d87eb6f710136.js +0 -1
  633. package/assets/esri/core/workers/chunks/5b97cdeb5949822fbef3.js +0 -1
  634. package/assets/esri/core/workers/chunks/5cd614f50e8925eeeaf4.js +0 -1
  635. package/assets/esri/core/workers/chunks/620d7cd0b0885122aa0f.js +0 -1
  636. package/assets/esri/core/workers/chunks/6321680c8070dffa3b6c.js +0 -1
  637. package/assets/esri/core/workers/chunks/7017c2e621236c7a7da4.js +0 -1
  638. package/assets/esri/core/workers/chunks/731e6eaad319865fb780.js +0 -1
  639. package/assets/esri/core/workers/chunks/7407a1e0cef508116a0b.js +0 -1
  640. package/assets/esri/core/workers/chunks/752c43cdd38dfde912d2.js +0 -1
  641. package/assets/esri/core/workers/chunks/78936c591fd49ff955a9.js +0 -1
  642. package/assets/esri/core/workers/chunks/796f5265747ce8be910e.js +0 -1
  643. package/assets/esri/core/workers/chunks/7b7288c431933a75daca.js +0 -1
  644. package/assets/esri/core/workers/chunks/7e6309bfed6692e8d2d7.js +0 -2
  645. package/assets/esri/core/workers/chunks/7f60309d211c49721265.js +0 -1
  646. package/assets/esri/core/workers/chunks/7f9b0ef7f9b3f3fd3df9.js +0 -1
  647. package/assets/esri/core/workers/chunks/8177e95596b71bf020aa.js +0 -1
  648. package/assets/esri/core/workers/chunks/9bb04d5f2e6f6e4585a0.js +0 -1
  649. package/assets/esri/core/workers/chunks/a03196e6579d738251fc.js +0 -1
  650. package/assets/esri/core/workers/chunks/a0b715cf03895082b773.js +0 -1
  651. package/assets/esri/core/workers/chunks/a115984b794a7f90b2c0.js +0 -1
  652. package/assets/esri/core/workers/chunks/a5e91cf150f6cf6a5d2a.js +0 -1
  653. package/assets/esri/core/workers/chunks/a60a84c8c45f6d03443f.js +0 -1
  654. package/assets/esri/core/workers/chunks/aec827b50df6edc54808.js +0 -1
  655. package/assets/esri/core/workers/chunks/aef2832902b270f1a594.js +0 -1
  656. package/assets/esri/core/workers/chunks/b0b24fb60a21b995b348.js +0 -1
  657. package/assets/esri/core/workers/chunks/bb830d93e97dceac350f.js +0 -1
  658. package/assets/esri/core/workers/chunks/bd05e68b00b9878d0266.js +0 -1
  659. package/assets/esri/core/workers/chunks/bd12ca39198e6efbefbb.js +0 -1
  660. package/assets/esri/core/workers/chunks/bdd246cc50ccd5c10987.js +0 -1
  661. package/assets/esri/core/workers/chunks/c080e189764d8bb9cf25.js +0 -1
  662. package/assets/esri/core/workers/chunks/c15f0769a64863cccef0.js +0 -1
  663. package/assets/esri/core/workers/chunks/c516b185b099bf69c0ed.js +0 -1
  664. package/assets/esri/core/workers/chunks/c53048b0f153b251d792.js +0 -1
  665. package/assets/esri/core/workers/chunks/c693e8eb96ab8a4b9cbe.js +0 -1
  666. package/assets/esri/core/workers/chunks/c9babe86c00ae69e63ee.js +0 -2
  667. package/assets/esri/core/workers/chunks/cf09408cb7729126caae.js +0 -1
  668. package/assets/esri/core/workers/chunks/d9c1e1ec5c56f09fb82f.js +0 -1
  669. package/assets/esri/core/workers/chunks/e0565849281ffbe8269e.js +0 -1
  670. package/assets/esri/core/workers/chunks/e1ba6f857ca12f154e77.js +0 -1
  671. package/assets/esri/core/workers/chunks/e4f1e584f89ffb86206b.js +0 -1
  672. package/assets/esri/core/workers/chunks/e60684918100666bb892.js +0 -1
  673. package/assets/esri/core/workers/chunks/e94448b371cd17d7a472.js +0 -1
  674. package/assets/esri/core/workers/chunks/ed78e19b1e400c0db309.js +0 -1
  675. package/assets/esri/core/workers/chunks/ede1d1cc2f315a34f4ca.js +0 -1
  676. package/assets/esri/core/workers/chunks/f17a301516f008abef3a.js +0 -1
  677. package/assets/esri/core/workers/chunks/fc98b8351be567d3eb62.js +0 -1
  678. package/assets/esri/core/workers/chunks/fd5a5b05a1551cdb8c87.js +0 -1
  679. package/assets/esri/core/workers/chunks/fda0f4469d9cda637af4.js +0 -1
  680. package/assets/esri/core/workers/chunks/fe52117fe6982046c9e3.js +0 -1
  681. package/assets/esri/core/workers/chunks/ff961bb6d29ab3fe129d.js +0 -1
  682. /package/assets/esri/core/workers/chunks/{2762149a922275136171.js.LICENSE.txt → 112227b862b935123ddf.js.LICENSE.txt} +0 -0
  683. /package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js.LICENSE.txt → 53e348f5585fa8c53fe8.js.LICENSE.txt} +0 -0
  684. /package/assets/esri/core/workers/chunks/{7e6309bfed6692e8d2d7.js.LICENSE.txt → b397a9f87082705301a4.js.LICENSE.txt} +0 -0
  685. /package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js.LICENSE.txt → baad696d84ab78b3d00e.js.LICENSE.txt} +0 -0
  686. /package/assets/esri/core/workers/chunks/{c9babe86c00ae69e63ee.js.LICENSE.txt → edaae0fc63d16b0f675d.js.LICENSE.txt} +0 -0
@@ -48,8 +48,8 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
48
48
  * ```js
49
49
  * new LuminanceRenderNode({ view });
50
50
  * ```
51
- * A RenderNode subclass is created using [Accessor.createSubclass()](https://developers.arcgis.com/javascript/latest/references/core/core/Accessor/#createSubclass). This example
52
- * node modifies the "composite-color" output of the render pipeline:
51
+ * A RenderNode subclass is created using [Accessor.createSubclass()](https://developers.arcgis.com/javascript/latest/references/core/core/Accessor/#createSubclass). This example node modifies the "composite-color"
52
+ * output of the render pipeline:
53
53
  * ```js
54
54
  * const LuminanceRenderNode = RenderNode.createSubclass({
55
55
  * consumes: { required: ["composite-color"] }
@@ -67,9 +67,9 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
67
67
  * [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). Every time a node is traversed, the render engine will modify or create
68
68
  * framebuffers.
69
69
  * For example, the render graph in the images shown
70
- * [below](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render-node-input-images) contains nodes which render buildings,
71
- * one transparent cube, the terrain with textures, atmosphere effects, and post processing effects such as
72
- * antialiasing.
70
+ * [below](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render-node-input-images)
71
+ * contains nodes which render buildings, one transparent cube, the terrain with textures, atmosphere effects, and post
72
+ * processing effects such as antialiasing.
73
73
  *
74
74
  * Depending on the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) properties and layer configuration, the rendering engine
75
75
  * modifies the render graph to traverse the nodes which are required to produce the configured rendering. The
@@ -78,13 +78,13 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
78
78
  *
79
79
  * The [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) class offers a way to inject custom render code to this render
80
80
  * pipeline. Currently the following outputs can be modified by custom render nodes:
81
- * * **opaque-color**
82
- * * **transparent-color**
83
- * * **composite-color**
84
- * * **final-color**
85
81
  *
86
- * Opaque color contains all non-transparent 3D geometries. Transparent color contains opaque-color and all transparent
87
- * 3D geometries. Composite color contains all 3D content, but not 2D content such as icons and highlights.
82
+ * | [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) | Description |
83
+ * |---------- | ----------- |
84
+ * | opaque-color | Contains the rendered image after all opaque geometries have been drawn. |
85
+ * | transparent-color | Contains the rendered image after all opaque and transparent geometries have been drawn |
86
+ * | composite-color | Contains the rendered image without any post processes applied. |
87
+ * | final-color | Contains the rendered image including post processes. |
88
88
  *
89
89
  * Important to note is that the chronological order for traversing the render graph does not correspond to the
90
90
  * object location in the frame. For example, all opaque objects are rendered first even if they are behind transparent
@@ -92,58 +92,49 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
92
92
  * [alpha blending](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/blendFunc) will
93
93
  * create the correct visibility.
94
94
  *
95
- * Once the injection point is declared with [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces), the
96
- * [render()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render) function needs to return this output in a
97
- * [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for the RenderNode to be correctly traversed. The output is
98
- * also provided as an input, and typically this input is read as a texture or bound as the framebuffer to create the
99
- * output.
95
+ * Once the injection point is declared with [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces), the [render()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#render)
96
+ * function needs to return this output in a [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for the RenderNode to be correctly
97
+ * traversed. The output is also provided as an input, and typically this input is read as a texture or bound as the
98
+ * framebuffer to create the output.
100
99
  *
101
- * See [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces) and
102
- * [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) for details.
100
+ * See [produces](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/#produces) and [RenderNodeOutput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeOutput) for details.
103
101
  *
104
102
  * #### RenderNode inputs
105
103
  *
106
- * Every [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) requires some input
107
- * [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
104
+ * Every [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) requires some input [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
108
105
  * Typically a node will modify the state of a framebuffer, using its output also as a required input. The
109
- * [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) offers additional input targets to be used as inputs for a rendering
110
- * code. These are used for advanced graphics effects. The following additional inputs are available:
106
+ * [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) offers additional input targets to be used as inputs for a rendering code. These are
107
+ * used for advanced graphics effects. The following additional inputs are available:
111
108
  *
112
109
  * <span id="render-node-input-images"></span>
113
- * | composite-color | composite-color depth attachment | highlights | normals |
114
- * | --------------- | -------------------------------- | ---------- | ------- |
115
- * | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeCompositeColor.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeCompositeColorDepth.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeHighlight.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/rendernodeNormals.png" style="width:200px;"/> |
110
+ * | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeColor.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeColorDepth.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeCompositeEmissive.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeHighlight.png" style="width:200px;"/> | <img src="https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/rendernodeNormals.png" style="width:200px;"/> |
111
+ * | ---------- | ---------- | ---------- | ---------- | ---------- |
112
+ * | composite-color | composite-color depth attachment | composite-color emissive attachment | highlights | normals |
116
113
  *
117
- * If one of the required inputs is not available then this [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) will be
118
- * skipped during the frame. For example, a custom [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) using highlights as
119
- * required input will only render if highlights are present in the scene. Optional inputs do not cause the render node
120
- * to be skipped while rendering. If optional inputs are not available they will not be present in the input parameter
121
- * of the render function.
114
+ * If one of the required inputs is not available then this [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) will be skipped during the
115
+ * frame. For example, a custom [RenderNode](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/RenderNode/) using highlights as required input will only render if
116
+ * highlights are present in the scene. Optional inputs do not cause the render node to be skipped while rendering. If
117
+ * optional inputs are not available they will not be present in the input parameter of the render function.
122
118
  *
123
- * Note that there are restrictions in availability due to the implicit ordering of the render graph as well. For
124
- * example, opaque-color cannot require composite-color. See details in
125
- * [RenderNodeInput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeInput).
119
+ * Note that there are restrictions in availability due to the implicit ordering of the render graph as well. For example,
120
+ * opaque-color cannot require composite-color. See details in [RenderNodeInput](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#RenderNodeInput).
126
121
  *
127
122
  * #### Managed framebuffer objects and attachments
128
123
  *
129
- * All render nodes have in common that they alter the state of a
130
- * [framebuffer object](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
131
- * This happens either by simply drawing additional geometry "on top" of the input framebuffer, or by using the input
132
- * as a Texture, e.g. to apply a post processing effect. See WebGL tutorials or the WebGL documentation to get familiar
133
- * with the concept of
134
- * [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
124
+ * All render nodes have in common that they alter the state of a [framebuffer object](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
125
+ * This happens either by simply drawing additional geometry "on top" of the input framebuffer, or by using the input as
126
+ * a Texture, e.g. to apply a post processing effect. See WebGL tutorials or the WebGL documentation to get familiar with
127
+ * the concept of [framebuffer objects](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/createFramebuffer).
135
128
  *
136
- * The [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) is a wrapper interface to request and provide framebuffer content
137
- * to the render engine of the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).The ManagedFBO exposes the necessary interface to
138
- * reference count these framebuffer and attached textures to render nodes.
139
- * See [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for details.
129
+ * The [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) is a wrapper interface to request and provide framebuffer content to the render
130
+ * engine of the [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).The ManagedFBO exposes the necessary interface to reference count these
131
+ * framebuffer and attached textures to render nodes. See [ManagedFBO](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/) for details.
140
132
  *
141
133
  * <span id="coordinate-systems"></span>
142
134
  * #### Coordinate systems
143
135
  *
144
136
  * When working with custom render nodes, coordinates have to be specified in the internal rendering coordinate system
145
- * of SceneView. This coordinate system depends on the [SceneView.viewingMode](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) of
146
- * the view:
137
+ * of SceneView. This coordinate system depends on the [SceneView.viewingMode](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) of the view:
147
138
  *
148
139
  * * In `local` viewing mode, it is equal to the coordinate system defined by the spatial reference of the view.
149
140
  * * In `global` viewing mode, it is an [ECEF](https://en.wikipedia.org/wiki/ECEF) coordinate system where the X-axis
@@ -151,12 +142,11 @@ export interface RenderNodeProperties extends Partial<Pick<RenderNode, "produces
151
142
  * drawn as a perfect sphere with a radius of 6378137, so the unit of the coordinate system should be considered
152
143
  * meters.
153
144
  *
154
- * ![rendernode-global-coordinate-system](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/3d/externalRenderers-global-coordinate-system.png)
145
+ * ![rendernode-global-coordinate-system](https://developers.arcgis.com/javascript/latest/assets/references/core/views/3d/externalRenderers-global-coordinate-system.png)
155
146
  *
156
- * You can use [toRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#toRenderCoordinates)
157
- * and [fromRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#fromRenderCoordinates) to transform to
158
- * and from the rendering coordinate system without having to worry about viewingMode and the exact coordinate
159
- * system definition.
147
+ * You can use [toRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#toRenderCoordinates) and [fromRenderCoordinates()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/#fromRenderCoordinates) to transform to
148
+ * and from the rendering coordinate system without having to worry about viewingMode and the exact coordinate system
149
+ * definition.
160
150
  *
161
151
  * #### Precision and local origins
162
152
  *
@@ -235,10 +225,8 @@ export default abstract class RenderNode extends Accessor {
235
225
  *
236
226
  * The returned FBO has only a color0 attachment. The render function is however expected to return a ManagedFBO
237
227
  * with the same attachments as the input framebuffer. Any additionally needed attachments can be allocated using
238
- * [ManagedFBO.acquireDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireDepth) and
239
- * [ManagedFBO.acquireColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireColor), or reused from an input framebuffer
240
- * using [ManagedFBO.attachDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachDepth) and
241
- * [ManagedFBO.attachColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachColor).
228
+ * [ManagedFBO.acquireDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireDepth) and [ManagedFBO.acquireColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#acquireColor), or reused from
229
+ * an input framebuffer using [ManagedFBO.attachDepth()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachDepth) and [ManagedFBO.attachColor()](https://developers.arcgis.com/javascript/latest/references/core/views/3d/webgl/ManagedFBO/#attachColor).
242
230
  *
243
231
  * @returns The requested framebuffer object.
244
232
  * @example
@@ -273,9 +261,10 @@ export default abstract class RenderNode extends Accessor {
273
261
  /**
274
262
  * The render function is called whenever a frame is rendered.
275
263
  *
276
- * It has to return a framebuffer with the same attachments as the input "produces" framebuffer. For example, a
277
- * render node producing "composite-color" is expected to produce a "composite-color" framebuffer with one color
278
- * and depth attachment.
264
+ * It has to return a framebuffer with the same attachments as the input "produces" framebuffer. A render node producing
265
+ * "composite-color" is expected to produce a "composite-color" framebuffer with one color and depth attachment. If the
266
+ * "composite-color" framebuffer contains an additional color attachment, e.g. for emissive rendering, the render node
267
+ * is expected to return a framebuffer with two attachments and a depth attachment.
279
268
  *
280
269
  * Typically the render function either uses bindRenderTarget() to render into this framebuffer, or
281
270
  * acquireOutputFramebuffer() to get a new output framebuffer.
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{exactEquals as e}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as r}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ComponentTechnique as t}from"./ComponentTechnique.js";import{ComponentTechniqueConfiguration as s}from"./ComponentTechniqueConfiguration.js";import{MaterialBase as i}from"../../../core/material/MaterialBase.js";import{isColor as o}from"../../../core/shaderLibrary/ShaderOutput.js";class a extends i{constructor(e,r,t,i,o){super(),this.parameters=e,this.key=o,this.usePBR=e.usePBR,this.hasParametersFromSource=e.hasParametersFromSource,this.isGround=e.isGround,this.slicePlaneEnabled=e.slicePlaneEnabled,this.isIntegratedMesh=e.isIntegratedMesh,this.applySSAO=e.applySSAO,this.hasEmissions=u(e,t,i),this.materialPass=n(e,t),this._configuration=new s(i.sphericalSR),this._initializeMaterialConfiguration(e,r,t,i)}destroy(){}acquireTechnique(e,r,s,i){const o=this._updateConfiguration(r,s);return e.get(t,o,i.layout)}_initializeMaterialConfiguration(e,r,t,s){const i=this._configuration;i.hasMetallicRoughnessTexture=null!=e.metallicRoughnessTexture,i.hasOcclusionTexture=null!=e.occlusionTexture,i.hasNormalTexture=null!=e.normalTexture,i.sphereDepthInterpolate=e.sphereDepthInterpolate&&i.spherical,i.ellipsoidMode=e.ellipsoidMode,i.doubleSidedMode=e.doubleSided?1:0,i.hasColorTexture=null!=e.baseColorTexture,i.cullFace=e.cullFace,i.alphaDiscardMode=e.alphaDiscardMode,i.hasVertexColors=r.hasVertexColors,i.textureCoordinateType=r.textureCoordinateType,i.shadeNormals=r.shadeNormals,i.normalType=r.hasNormals?1:2,i.hasPolygonOffset=e.polygonOffsetEnabled,i.hasModelRotationScale=r.hasModelRotationScale,i.componentDataType=t.componentDataType,i.emissionSource=c(e,t,s)}_updateConfiguration(e,r){const t=this._configuration,{identifier:s,output:i}=e,a=0===s;t.output=i,t.hasEmission=r.hasEmission&&a,t.renderOccluded=10===r.slot,t.oitPass=a?r.oitPass:0,t.terrainDepthTest=a&&r.terrainDepthTest,t.cullAboveTerrain=!!a&&r.cullAboveTerrain;const n=this.isIntegratedMesh?d(r)?h(r)?3:2:1:0;t.integratedMeshMode=n,t.pbrMode=3===n?4:this.usePBR?this.hasParametersFromSource?0!==t.shadeNormals&&this.isIntegratedMesh?0:2:1:0,t.hasSlicePlane=null!=r.slicePlane&&this.slicePlaneEnabled,t.isGroundSlice=t.hasSlicePlane&&this.isGround;const{materialPass:l}=this;t.blendingEnabled=a&&(1===l||2===l&&e.transparent||4===l)||t.isGroundSlice,t.hasHighlightMixTexture=2===s&&null!=r.highlightMixTexture,t.snowCover=a&&r.snowCover>0,t.vertexDiscardMode=a&&2===l?e.transparent?2:1:0;const u=a&&o(i);return t.receiveAmbientOcclusion=u&&this.applySSAO&&null!=r.ssao?.getTexture(),t.hasOccludees=u&&r.hasOccludees,t.receiveShadows=u&&r.shadowMap.ready,t.screenSpaceReflections=u&&null!=r.ssr.lastFrameColor,t.cloudReflections=u&&null!=r.clouds.data?.cubeMap?.colorTexture,t}}function n(e,r){const{alphaDiscardMode:t,isIntegratedMesh:s,slicePlaneEnabled:i}=e,{transparent:o,opaqueOverride:a}=r,n=e.opacity<1,l=e.baseColor[3]<1;if(s)return n||i?4:3;if(n)return 1;if(0===a)return 0;if(l||0===t||3===t)return 1;switch(o){case 2:return 0;case 0:return 1;case 1:return 2}}function l(t){return null!=t.emissionTexture||!e(t.emissiveBaseColor,r)}function u(e,r,t){const s=l(e);return t.floatBufferBlendSupported&&2!==r.emissiveOverride&&(s||2!==r.emissiveSourceOverride)}function c(e,r,t){const s=null!=e.emissionTexture,{emissiveSourceOverride:i}=r,o=1===i,a=2===i,n=u(e,r,t),c=l(e);return n?c?a?s?4:2:o?s?5:7:6:o?7:6:0}function h(e){return null!=e.overlay?.getTexture(3)}function d(e){return null!=e.overlay?.getTexture(1)}export{a as ComponentMaterial,c as calculateEmissionSource,u as calculateHasEmissions,l as calculateHasEmissiveBase,n as computeMaterialPass};
2
+ import{exactEquals as e}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as r}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ComponentTechnique as t}from"./ComponentTechnique.js";import{ComponentTechniqueConfiguration as s}from"./ComponentTechniqueConfiguration.js";import{MaterialBase as i}from"../../../core/material/MaterialBase.js";import{isColor as o}from"../../../core/shaderLibrary/ShaderOutput.js";class a extends i{constructor(e,r,t,i,o){super(),this.parameters=e,this.key=o,this.usePBR=e.usePBR,this.hasParametersFromSource=e.hasParametersFromSource,this.isGround=e.isGround,this.slicePlaneEnabled=e.slicePlaneEnabled,this.isIntegratedMesh=e.isIntegratedMesh,this.applySSAO=e.applySSAO,this.hasEmissions=u(e,t,i),this.materialPass=n(e,t),this._configuration=new s(i.sphericalSR),this._initializeMaterialConfiguration(e,r,t,i)}destroy(){}acquireTechnique(e,r,s,i){const o=this._updateConfiguration(r,s);return e.get(t,o,i.layout)}_initializeMaterialConfiguration(e,r,t,s){const i=this._configuration;i.hasMetallicRoughnessTexture=null!=e.metallicRoughnessTexture,i.hasOcclusionTexture=null!=e.occlusionTexture,i.hasNormalTexture=null!=e.normalTexture,i.sphereDepthInterpolate=e.sphereDepthInterpolate&&i.spherical,i.ellipsoidMode=e.ellipsoidMode,i.doubleSidedMode=e.doubleSided?1:0,i.hasColorTexture=null!=e.baseColorTexture,i.cullFace=e.cullFace,i.alphaDiscardMode=e.alphaDiscardMode,i.hasVertexColors=r.hasVertexColors,i.textureCoordinateType=r.textureCoordinateType,i.shadeNormals=r.shadeNormals,i.normalType=r.hasNormals?1:2,i.hasPolygonOffset=e.polygonOffsetEnabled,i.hasModelRotationScale=r.hasModelRotationScale,i.componentDataType=t.componentDataType,i.emissionSource=c(e,t,s)}_updateConfiguration(e,r){const t=this._configuration,{identifier:s,output:i}=e,a=0===s;t.output=i,t.hasEmission=r.hasEmission&&a,t.renderOccluded=10===r.slot,t.oitPass=a?r.oitPass:0,t.terrainDepthTest=a&&r.terrainDepthTest,t.cullAboveTerrain=!!a&&r.cullAboveTerrain;const n=this.isIntegratedMesh?d(r)?h(r)?3:2:1:0;t.integratedMeshMode=n,t.pbrMode=3===n?4:this.usePBR?this.hasParametersFromSource?0!==t.shadeNormals&&this.isIntegratedMesh?0:2:1:0,t.hasSlicePlane=null!=r.slicePlane&&this.slicePlaneEnabled,t.isGroundSlice=t.hasSlicePlane&&this.isGround;const{materialPass:l}=this;t.blendingEnabled=a&&(1===l||2===l&&e.transparent||4===l)||t.isGroundSlice,t.hasHighlightMixTexture=2===s&&null!=r.highlightMixTexture,t.snowCover=a&&r.snowCover>0,t.vertexDiscardMode=a&&2===l?e.transparent?2:1:0;const u=a&&o(i);return t.receiveAmbientOcclusion=u&&this.applySSAO&&!t.renderOccluded&&null!=r.ssao?.getTexture(),t.hasOccludees=u&&r.hasOccludees,t.receiveShadows=u&&r.shadowMap.ready,t.screenSpaceReflections=u&&null!=r.ssr.lastFrameColor,t.cloudReflections=u&&null!=r.clouds.data?.cubeMap?.colorTexture,t}}function n(e,r){const{alphaDiscardMode:t,isIntegratedMesh:s,slicePlaneEnabled:i}=e,{transparent:o,opaqueOverride:a}=r,n=e.opacity<1,l=e.baseColor[3]<1;if(s)return n||i?4:3;if(n)return 1;if(0===a)return 0;if(l||0===t||3===t)return 1;switch(o){case 2:return 0;case 0:return 1;case 1:return 2}}function l(t){return null!=t.emissionTexture||!e(t.emissiveBaseColor,r)}function u(e,r,t){const s=l(e);return t.floatBufferBlendSupported&&2!==r.emissiveOverride&&(s||2!==r.emissiveSourceOverride)}function c(e,r,t){const s=null!=e.emissionTexture,{emissiveSourceOverride:i}=r,o=1===i,a=2===i,n=u(e,r,t),c=l(e);return n?c?a?s?4:2:o?s?5:7:6:o?7:6:0}function h(e){return null!=e.overlay?.getTexture(3)}function d(e){return null!=e.overlay?.getTexture(1)}export{a as ComponentMaterial,c as calculateEmissionSource,u as calculateHasEmissions,l as calculateHasEmissiveBase,n as computeMaterialPass};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import has from"../../../../core/has.js";import{ScreenSpaceGeometry as e}from"../effects/ScreenSpaceGeometry.js";import{createEmptyTexture as s}from"./glUtil3D.js";import{VaoCache as r}from"../materials/renderers/VaoCache.js";import{AppleAmdDriverHelper as t}from"../../../webgl/AppleAmdDriverHelper.js";import{RenderingContext as i}from"../../../webgl/RenderingContext.js";class a extends i{constructor(r,t){super(r,t),this.emptyTexture=s(this),this._vaoCaches=new Map,this.debugBoundTechnique="",this._appleAmdDriverHelper=null,this._refCount=1,this._newCache=t.newCache,this._screen=new e(this)}configure(e){super.configure(e),this._newCache=e.newCache}destroy(){this._vaoCaches.forEach(e=>e.dispose()),this._vaoCaches.clear(),--this._refCount>0||this.dispose()}ref(){++this._refCount}get refCount(){return this._refCount}dispose(){this.emptyTexture.dispose(),this._screen.destroy(),this._screen=null,super.dispose(),this._appleAmdDriverHelper?.dispose(),this._vaoCaches.forEach(e=>e.dispose()),this._vaoCaches.clear()}get newCache(){return this._newCache}get screen(){return this._screen}getVaoCache(e){const s=JSON.stringify(e),t=this._vaoCaches.get(s);if(t)return t;const i=new r(this,e);return this._vaoCaches.set(s,i),i}bindTechnique(e,s,r,t){return this.debugBoundTechnique=e.declaredClass,this.useProgram(e.program),this.setPipelineState(e.getPipeline(s)),e.program.bind(s),r&&(e.program.bindPass(r,s),t&&e.program.bindDraw(s,r,t)),e.program}runAppleAmdDriverHelper(){this.driverTest.drawArraysRequiresIndicesTypeReset.result&&(this._appleAmdDriverHelper??=new t(this),this._appleAmdDriverHelper.run())}get isAssumedMetalDriver(){if(null==this._isAssumedMetalDriver&&(this._isAssumedMetalDriver=!!has("ios")||!!has("safari"),!this._isAssumedMetalDriver&&has("mac")&&has("chrome"))){const e=this.capabilities.rendererInfo?.getUnmaskedRenderer().toLowerCase(),s=e?.includes("apple")&&e?.includes("angle")&&e?.includes("metal");this._isAssumedMetalDriver=s??!0}return this._isAssumedMetalDriver}get test(){}}export{a as RenderingContext};
2
+ import has from"../../../../core/has.js";import{ScreenSpaceGeometry as e}from"../effects/ScreenSpaceGeometry.js";import{createEmptyTexture as s}from"./glUtil3D.js";import{TextureBufferCache as r}from"../materials/renderers/TextureBufferCache.js";import{VaoCache as t}from"../materials/renderers/VaoCache.js";import{VboCache as i}from"../materials/renderers/VboCache.js";import{AppleAmdDriverHelper as a}from"../../../webgl/AppleAmdDriverHelper.js";import{RenderingContext as h}from"../../../webgl/RenderingContext.js";class o extends h{constructor(r,t){super(r,t),this.emptyTexture=s(this),this._vaoCaches=new Map,this._vboCaches=new Map,this._textureBufferCaches=new Map,this.debugBoundTechnique="",this._appleAmdDriverHelper=null,this._refCount=1,this._newCache=t.newCache,this._screen=new e(this)}configure(e){super.configure(e),this._newCache=e.newCache}destroy(){this._vaoCaches.forEach(e=>e.dispose()),this._vaoCaches.clear(),this._vboCaches.forEach(e=>e.dispose()),this._vboCaches.clear(),this._textureBufferCaches.forEach(e=>e.dispose()),this._textureBufferCaches.clear(),--this._refCount>0||this.dispose()}ref(){++this._refCount}get refCount(){return this._refCount}dispose(){this.emptyTexture.dispose(),this._screen.destroy(),this._screen=null,super.dispose(),this._appleAmdDriverHelper?.dispose(),this._vaoCaches.forEach(e=>e.dispose()),this._vaoCaches.clear(),this._vboCaches.forEach(e=>e.dispose()),this._vboCaches.clear(),this._textureBufferCaches.forEach(e=>e.dispose()),this._textureBufferCaches.clear()}get newCache(){return this._newCache}get screen(){return this._screen}getVaoCache(e){const s=JSON.stringify(e),r=this._vaoCaches.get(s);if(r)return r;const i=new t(this,e);return this._vaoCaches.set(s,i),i}getVboCache(e){const s=JSON.stringify(e),r=this._vboCaches.get(s);if(r)return r;const t=new i(this,e);return this._vboCaches.set(s,t),t}getTextureBufferCache(e){const s=JSON.stringify(e),t=this._textureBufferCaches.get(s);if(t)return t;const i=new r(this,e);return this._textureBufferCaches.set(s,i),i}bindTechnique(e,s,r,t){return this.debugBoundTechnique=e.declaredClass,this.useProgram(e.program),this.setPipelineState(e.getPipeline(s)),e.program.bind(s),r&&(e.program.bindPass(r,s),t&&e.program.bindDraw(s,r,t)),e.program}runAppleAmdDriverHelper(){this.driverTest.drawArraysRequiresIndicesTypeReset.result&&(this._appleAmdDriverHelper??=new a(this),this._appleAmdDriverHelper.run())}get isAssumedMetalDriver(){if(null==this._isAssumedMetalDriver&&(this._isAssumedMetalDriver=!!has("ios")||!!has("safari"),!this._isAssumedMetalDriver&&has("mac")&&has("chrome"))){const e=this.capabilities.rendererInfo?.getUnmaskedRenderer().toLowerCase(),s=e?.includes("apple")&&e?.includes("angle")&&e?.includes("metal");this._isAssumedMetalDriver=s??!0}return this._isAssumedMetalDriver}get test(){}}export{o as RenderingContext};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{getMaxItemCount as t,getItemsRectangle as e}from"./TextureBackedBufferUtils.js";import{SizedPixelFormat as r,PixelType as o}from"../../../../webgl/enums.js";import i from"../../../../webgl/Texture.js";import{TextureDescriptor as s}from"../../../../webgl/TextureDescriptor.js";class a{constructor(a,n,u){this.layout=n;const l="number"!=typeof u,h=l?Math.floor(u.byteLength/n.byteStride):u;if(h>t(a,n))throw new Error(`Cannot allocate TextureBuffer for ${h}. Exceeding hardware texture limits`);const{itemCount:m,itemWidth:d,itemHeight:f}=e(h),{texelStride:p,byteStride:c}=this.layout,x=d*p,y=f;this.itemCount=m,this.byteLength=m*c;const w=new s(x,y);w.samplingMode=9728,w.wrapMode=33071,w.internalFormat=r.RGBA8UI,w.pixelFormat=36249,w.dataType=o.UNSIGNED_BYTE,w.isImmutable=!0,w.hasMipmap=!1,this.texture=new i(a,w),l&&this.setSubData(u)}get sizeBytes(){return this.byteLength}setSubData(t,e=0,r=0,o=Math.floor((t.byteLength-r)/this.layout.byteStride)){if(0===o)return;const{layout:i,texture:s}=this,{texelStride:a,texelByteStride:n}=i,{width:u}=s.descriptor;if(e+o>this.itemCount)throw new Error("Upload range is outside of texture");const l=e*a,h=o*a,m=Math.floor(l/u),d=l%u,f=(u-d)%u,p=h-f,c=Math.floor(p/u),x=p%u,y=0===d?m:m+1;if(0!==d){const e=new i.texelElementArrayConstructor(t,r);s.updateData(0,d,m,f,1,e)}if(c>0){const e=r+f*n,o=new i.texelElementArrayConstructor(t,e);s.updateData(0,0,y,u,c,o)}if(x>0){const e=r+(h-x)*n,o=y+c,a=new i.texelElementArrayConstructor(t,e);s.updateData(0,0,o,x,1,a)}}dispose(){this.texture.dispose()}}export{a as TextureBuffer};
2
+ import{getMaxItemCount as t,getItemsRectangle as e}from"./TextureBackedBufferUtils.js";import{SizedPixelFormat as r,PixelType as o}from"../../../../webgl/enums.js";import i from"../../../../webgl/Texture.js";import{TextureDescriptor as s}from"../../../../webgl/TextureDescriptor.js";class a{constructor(a,n,u){this.layout=n;const l="number"!=typeof u,h=l?Math.floor(u.byteLength/n.byteStride):u;if(h>t(a,n))throw new Error(`Cannot allocate TextureBuffer for ${h}. Exceeding hardware texture limits`);const{itemCount:m,itemWidth:d,itemHeight:f}=e(h),{texelStride:p,byteStride:y}=this.layout,c=d*p,x=f;this.itemCount=m,this.byteLength=m*y;const b=new s(c,x);b.samplingMode=9728,b.wrapMode=33071,b.internalFormat=r.RGBA8UI,b.pixelFormat=36249,b.dataType=o.UNSIGNED_BYTE,b.isImmutable=!0,b.hasMipmap=!1,this.texture=new i(a,b),l&&this.setSubData(u)}get sizeBytes(){return this.byteLength}get usedMemory(){return this.byteLength}setSubData(t,e=0,r=0,o=Math.floor((t.byteLength-r)/this.layout.byteStride)){if(0===o)return;const{layout:i,texture:s}=this,{texelStride:a,texelByteStride:n}=i,{width:u}=s.descriptor;if(e+o>this.itemCount)throw new Error("Upload range is outside of texture");const l=e*a,h=o*a,m=Math.floor(l/u),d=l%u,f=(u-d)%u,p=h-f,y=Math.floor(p/u),c=p%u,x=0===d?m:m+1;if(0!==d){const e=new i.texelElementArrayConstructor(t,r);s.updateData(0,d,m,f,1,e)}if(y>0){const e=r+f*n,o=new i.texelElementArrayConstructor(t,e);s.updateData(0,0,x,u,y,o)}if(c>0){const e=r+(h-c)*n,o=x+y,a=new i.texelElementArrayConstructor(t,e);s.updateData(0,0,o,c,1,a)}}dispose(){this.texture.dispose()}}export{a as TextureBuffer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import s from"../../../../core/Collection.js";import{deg2rad as t}from"../../../../core/mathUtils.js";import{disposeMaybe as r}from"../../../../core/maybe.js";import{watch as i,initial as o,when as a,sync as n}from"../../../../core/reactiveUtils.js";import{property as h,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{translate as c,fromTranslation as p,scale as w,mul as l}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{sub as f,distance as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as v,fromValues as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Sphere as V}from"../../../../geometry/support/sphere.js";import{InternalRenderCategory as g}from"../../webgl.js";import M from"../../webgl/RenderNode.js";import{ViewshedShadowMap as b}from"./ViewshedShadowMap.js";import{V as y}from"../../../../chunks/Viewshed.glsl.js";import{ViewshedTechnique as S}from"../shaders/ViewshedTechnique.js";let j=class extends M{get shadowMap(){return this._shadowMap}get hasViewsheds(){return this._viewsheds.length>0}get _contentPixelRatio(){return this.view.state.contentPixelRatio}get _viewshedsInView(){return this._viewsheds.items.filter(e=>P(this.view,e))}constructor(e){super(e),this.isDecoration=!1,this._passParameters=new y,this._viewsheds=new s,this._shadowMap=null,this.consumes={required:[g.VIEWSHED,"normals"]},this.produces=g.VIEWSHED,this.requireGeometryDepth=!0}initialize(){this._shadowMap=new b(this.fboCache),this.addHandles([i(()=>this.view.resolutionScale,e=>{const s=this._shadowMap;s&&(s.settings.textureSizeQuality=e)},o),a(()=>!this.hasViewsheds,()=>this._shadowMap?.dispose()),i(()=>this._viewshedsInView.map(e=>[e.observerRenderSpace,e.heading,e.tilt,e.farDistance,e.horizontalFieldOfView,e.verticalFieldOfView]),()=>this.requestRender(1),n)])}destroy(){this._shadowMap=r(this._shadowMap)}precompile(){if(this.hasViewsheds){this.techniques.precompile(S);for(const e of this._viewshedsInView)if(this._shadowMap?.isActive(e))return void this.view.stage.renderer.precompileViewshedShadowMap()}}render(e){const s=this.bindParameters,t=this.renderingContext,r=e.find(({name:e})=>e===g.VIEWSHED);if(!this.hasViewsheds||!s.depth||this.isDecoration&&!s.decorations)return r;this._passParameters.shadowMap=this._shadowMap??this._passParameters.shadowMap,this._passParameters.normals=e.find(({name:e})=>"normals"===e)?.getTexture();const i=this.techniques.get(S);if(!i?.compiled)return this.requestRender(1),r;const o=this.view.stage.renderer.isFeatureEnabled(8);for(const a of this._viewshedsInView){if(!this._renderShadowCubeMap(s,a,o)||!this._shadowMap?.ready)continue;const e=this._setupViewshedParameters(a,s.camera);t.bindTechnique(i,s,e),t.bindFramebuffer(r.fbo),t.screen.draw()}return this.shadowMap?.dispose(),r}updateViewsheds(e){const s=this._viewsheds,{removes:t,adds:r}=e;if(t&&(Array.isArray(t)?s.removeMany(t):s.remove(t)),r)if(Array.isArray(r)){const e=r.filter(e=>!s.includes(e));s.addMany(e)}else s.includes(r)||s.add(r)}_renderShadowCubeMap(e,s,t){const r=this._shadowMap;if(!r)return!1;const i=this.view.basemapTerrain.hasStencilEnabledExtents,o=r.start(e.camera,s,t,this._contentPixelRatio,i);return o&&r.faces.forEach(e=>this.view.stage.renderer.renderViewshedShadowMap(e)),r.finish(),o}_setupViewshedParameters(e,s){const r=this._shadowMap;if(!r)return this._passParameters;const i=this._passParameters,o=e.effectiveObserverRenderSpace;i.localOrigin=o,i.observerOffset=f(E,e.observerRenderSpace,e.effectiveObserverRenderSpace),i.fovs=[t(e.horizontalFieldOfView),t(e.verticalFieldOfView)],i.headingAndTilt=[t(e.heading),t(e.tiltParallelToSurface)],i.upVector=e.tiltedUpVector;const a=R(e.targetRenderSpace,o);i.targetVector=a;const n=new Array,h=new Array;for(let t=0;t<r.numActiveFaces;t++)c(I,r.viewshedViewMatrices[t],o),n.push(...I),x(r.viewshedProjectionMatrices[t],I,D),h.push(...D);return i.viewMatrices=n,i.projectionMatrices=h,i.volumeOffset=this.selectedViewshed?.()===e.viewshed?A(e,this.view,s.eye):0,i}get test(){return{viewsheds:this._viewsheds,shadowMap:this._shadowMap,viewshedsInView:this._viewshedsInView}}};function R(e,s){const t=v();return f(t,e,s)}function x(e,s,t){const r=_(.5,.5,.5);return p(t,r),w(t,t,r),l(t,t,e),l(t,t,s),t}function P(e,s){const t=new V(s.observerRenderSpace,s.farDistanceRenderSpace);return!!e.ready&&e.frustum.intersectsSphere(t)}function A(e,s,t){if(null==e)return 0;const{observerRenderSpace:r,targetRenderSpace:i}=e,o=u(t,r)>u(t,i)?e.observer:e.target;return s.pixelSizeAt(o)}e([h()],j.prototype,"selectedViewshed",void 0),e([h()],j.prototype,"isDecoration",void 0),e([h()],j.prototype,"shadowMap",null),e([h()],j.prototype,"hasViewsheds",null),e([h()],j.prototype,"_contentPixelRatio",null),e([h()],j.prototype,"_viewshedsInView",null),e([h()],j.prototype,"consumes",void 0),e([h()],j.prototype,"produces",void 0),j=e([d("esri.views.3d.webgl-engine.lib.Viewshed")],j);const E=v(),I=m(),D=m();export{j as Viewshed,A as computeOffsetScale};
2
+ import{__decorate as e}from"tslib";import s from"../../../../core/Collection.js";import{deg2rad as t}from"../../../../core/mathUtils.js";import{disposeMaybe as r}from"../../../../core/maybe.js";import{watch as i,initial as o,when as a,sync as n}from"../../../../core/reactiveUtils.js";import{property as h,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{translate as c,fromTranslation as p,scale as w,mul as l}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{sub as f,distance as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as v,fromValues as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Sphere as V}from"../../../../geometry/support/sphere.js";import{InternalRenderCategory as g}from"../../webgl.js";import M from"../../webgl/RenderNode.js";import{ViewshedShadowMap as b}from"./ViewshedShadowMap.js";import{V as y}from"../../../../chunks/Viewshed.glsl.js";import{ViewshedTechnique as S}from"../shaders/ViewshedTechnique.js";let j=class extends M{get shadowMap(){return this._shadowMap}get hasViewsheds(){return this._viewsheds.length>0}get _contentPixelRatio(){return this.view.state.contentPixelRatio}get _viewshedsInView(){return this._viewsheds.items.filter(e=>P(this.view,e))}constructor(e){super(e),this.isDecoration=!1,this._passParameters=new y,this._viewsheds=new s,this._shadowMap=null,this.consumes={required:[g.VIEWSHED,"normals"]},this.produces=g.VIEWSHED,this.requireGeometryDepth=!0}initialize(){this._shadowMap=new b(this.fboCache),this.addHandles([i(()=>this.view.resolutionScale,e=>{const s=this._shadowMap;s&&(s.settings.textureSizeQuality=e)},o),a(()=>!this.hasViewsheds,()=>this._shadowMap?.dispose()),i(()=>this._viewshedsInView.map(e=>[e.observerRenderSpace,e.heading,e.tilt,e.farDistance,e.horizontalFieldOfView,e.verticalFieldOfView]),()=>this.requestRender(1),n)])}destroy(){this._shadowMap=r(this._shadowMap)}precompile(){if(this.hasViewsheds){this.techniques.precompile(S);for(const e of this._viewshedsInView)if(this._shadowMap?.isActive(e))return void this.view.stage.renderer.precompileViewshedShadowMap()}}render(e){const s=this.bindParameters,t=this.renderingContext,r=e.find(({name:e})=>e===g.VIEWSHED);if(!this.hasViewsheds||!s.depth||this.isDecoration&&!s.decorations)return r;this._passParameters.shadowMap=this._shadowMap??this._passParameters.shadowMap,this._passParameters.normals=e.find(({name:e})=>"normals"===e)?.getTexture();const i=this.techniques.get(S);if(!i?.compiled)return this.requestRender(1),r;const o=this.view.stage.renderer.isFeatureEnabled(8);for(const a of this._viewshedsInView){if(!this._renderShadowCubeMap(s,a,o)||!this._shadowMap?.ready)continue;const e=this._setupViewshedParameters(a,s.camera);t.bindFramebuffer(r.fbo),t.bindTechnique(i,s,e),t.screen.draw()}return this.shadowMap?.dispose(),r}updateViewsheds(e){const s=this._viewsheds,{removes:t,adds:r}=e;if(t&&(Array.isArray(t)?s.removeMany(t):s.remove(t)),r)if(Array.isArray(r)){const e=r.filter(e=>!s.includes(e));s.addMany(e)}else s.includes(r)||s.add(r)}_renderShadowCubeMap(e,s,t){const r=this._shadowMap;if(!r)return!1;const i=this.view.basemapTerrain.hasStencilEnabledExtents,o=r.start(e.camera,s,t,this._contentPixelRatio,i);return o&&r.faces.forEach(e=>this.view.stage.renderer.renderViewshedShadowMap(e)),r.finish(),o}_setupViewshedParameters(e,s){const r=this._shadowMap;if(!r)return this._passParameters;const i=this._passParameters,o=e.effectiveObserverRenderSpace;i.localOrigin=o,i.observerOffset=f(E,e.observerRenderSpace,e.effectiveObserverRenderSpace),i.fovs=[t(e.horizontalFieldOfView),t(e.verticalFieldOfView)],i.headingAndTilt=[t(e.heading),t(e.tiltParallelToSurface)],i.upVector=e.tiltedUpVector;const a=R(e.targetRenderSpace,o);i.targetVector=a;const n=new Array,h=new Array;for(let t=0;t<r.numActiveFaces;t++)c(I,r.viewshedViewMatrices[t],o),n.push(...I),x(r.viewshedProjectionMatrices[t],I,D),h.push(...D);return i.viewMatrices=n,i.projectionMatrices=h,i.volumeOffset=this.selectedViewshed?.()===e.viewshed?A(e,this.view,s.eye):0,i}get test(){return{viewsheds:this._viewsheds,shadowMap:this._shadowMap,viewshedsInView:this._viewshedsInView}}};function R(e,s){const t=v();return f(t,e,s)}function x(e,s,t){const r=_(.5,.5,.5);return p(t,r),w(t,t,r),l(t,t,e),l(t,t,s),t}function P(e,s){const t=new V(s.observerRenderSpace,s.farDistanceRenderSpace);return!!e.ready&&e.frustum.intersectsSphere(t)}function A(e,s,t){if(null==e)return 0;const{observerRenderSpace:r,targetRenderSpace:i}=e,o=u(t,r)>u(t,i)?e.observer:e.target;return s.pixelSizeAt(o)}e([h()],j.prototype,"selectedViewshed",void 0),e([h()],j.prototype,"isDecoration",void 0),e([h()],j.prototype,"shadowMap",null),e([h()],j.prototype,"hasViewsheds",null),e([h()],j.prototype,"_contentPixelRatio",null),e([h()],j.prototype,"_viewshedsInView",null),e([h()],j.prototype,"consumes",void 0),e([h()],j.prototype,"produces",void 0),j=e([d("esri.views.3d.webgl-engine.lib.Viewshed")],j);const E=v(),I=m(),D=m();export{j as Viewshed,A as computeOffsetScale};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{MemCachePool as e}from"../../../../../core/MemCachePool.js";class t{constructor(t,c,r){this._create=c,this._cache=new e(t,r)}dispose(){this._cache.destroy()}newBuffer(e){const t=e.toString();let c=this._cache.pop(t);return c||(c=this._create(e),c)}deleteBuffer(e){if(null==e)return;const t=e.sizeBytes.toString();this._cache.put(t,e)}}export{t as BufferCache};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../../core/Accessor.js";import{removeUnordered as s,filterInPlace as o}from"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{getOrCreateMapValue as n}from"../../../../../core/MapUtils.js";import{NestedMap as r}from"../../../../../core/NestedMap.js";import{nullUid as a}from"../../../../../core/uid.js";import{property as i,subclass as l}from"../../../../../core/accessorSupport/decorators.js";import{assert as c}from"../../lib/Util.js";import{bufferRangePool as f,mergeAdjacentRanges as u}from"./BufferRange.js";import{Instance as d}from"./Instance.js";import{PerBaseInstanceData as h}from"./PerBaseInstanceData.js";import{PerBufferData as m,hasVao as p}from"./PerBufferData.js";import{PerOriginData as g}from"./PerOriginData.js";import{VaoWriter as y}from"./VaoWriter.js";let v=class extends t{constructor(e){super(e),this._vaoWriter=null,this._useMetalWorkaround=!1,this._hasOccludees=!1}destroy(){this.uninitializeRenderContext()}initializeRenderContext(e){this._useMetalWorkaround=e.renderContext.rctx.isAssumedMetalDriver,this._vaoWriter=new y(this.material,e.renderContext.rctx)}uninitializeRenderContext(){this._useMetalWorkaround=!1,this._vaoWriter=null}get hasOccludees(){return this._hasOccludees}modify(e,t){this._applyUpdates(e,t),this._applyAddsAndRemoves(e),this._updateDrawCommands()}get canCompact(){for(const e of this.dataByBaseInstance.values())for(const t of e.dataByOrigin.values())if(t.buffers.some(e=>e.holes.geometry.length>1))return!0;return!1}compact(e){if(!this.canCompact)return!1;let t=!1;for(const o of this.dataByBaseInstance.values())for(const n of o.dataByOrigin.values()){const r=new Array;for(let t=0;t<n.buffers.length&&!e.done;){const o=n.buffers[t];o.holes.geometry.length<=1?++t:(o.instances.forEach(({geometry:e})=>r.push(e)),this._vaoWriter?.deleteBuffer(o),s(n.buffers,o,void 0,{last:t}),e.madeProgress())}if(r.length>0){const{baseInstanceData:e}=o;n.buffers.forEach(t=>this._applyAdds(e,t,r));const s=null!=e;for(;r.length>0;)n.buffers.push(this._applyAndRebuild(e,new m(s,this._vaoWriter.targetBuffers),r,null));t=!0}}return t}updateHighlights(e){this.highlightOrderMap=e;for(const t of this.dataByBaseInstance.values())for(const s of t.dataByOrigin.values())for(const t of s.buffers)t.updateHighlights(e)}_applyUpdates(e,t){const o=this._vaoWriter;if(null==o)return void e.clearUpdates();let n;const r=this._useMetalWorkaround?(e,t)=>{n??=new Map;let s=n.get(t);s||(s=[],n.set(t,s)),s.push(e)}:(e,t)=>o.updateInstance(e,t);for(const i of e.updates){if(t.done)return;const{renderGeometry:o,updateType:n}=i;s(e.pending.updates,i),t.madeProgress();const l=this.dataByBaseInstance.get(o.geometry.baseGeometry?.id??a),c=l?.dataByOrigin.get(o.localOrigin.id)?.findBuffer(o.id);if(null==c)return;const f=c.instances.get(o.id);6&n&&r(f,c),25&n&&(c.drawCommandsDirty=!0)}n&&o.updateInstancesMetal(n)}_computeDeltas(e,t){const s=new Map;for(const o of e){const e=o.localOrigin;if(null==e)continue;const t=o.geometry.baseGeometry,r=n(s,t??null,b);let a=r.get(e,null);null==a&&(a=new _(e.vec3,t),r.set(e,null,a)),a.changes.push(o)}for(const o of t){const e=o.localOrigin;if(null==e)continue;const t=o.geometry.baseGeometry,r=this.dataByBaseInstance.get(t?.id??a),i=r?.dataByOrigin.get(e.id)?.findBuffer(o.id);if(null==i)continue;const l=n(s,t??null,b);let c=l.get(e,i);null==c&&(c=new _(e.vec3,t),l.set(e,i,c)),c.changes.push(o)}return s}_applyAddsAndRemoves(e){const{_vaoWriter:t,dataByBaseInstance:o}=this;if(null==t)return void e.clearAddsAndRemoves();const r=this._computeDeltas(e.adds,e.removes);for(const[i,l]of r){const e=n(o,i?.id??a,()=>new h(t.createBaseInstanceData(i)));for(const[o,r]of l.outerMap()){const a=r.get(null),i=a?.changes??[];l.delete(o,null);const f=n(e.dataByOrigin,o.id,()=>new g(o.vec3));for(const[n,u]of r){if(l.delete(o,n),null==n&&c(!1,"No VAO for removed geometries"),n.instances.size===u.changes.length){t.deleteBuffer(n),s(f.buffers,n),0===f.buffers.length&&0===i.length&&e.dataByOrigin.delete(o.id);continue}switch(t.evaluateBufferAllocation(n.numElements.geometry,i,u.changes,n)){case 0:u.changes.forEach(({id:e})=>n.deleteInstance(e)),n.instances.forEach(({geometry:e})=>i.push(e)),t.deleteBuffer(n),s(f.buffers,n);break;case 1:this._applyAndRebuild(e.baseInstanceData,n,i,u);break;case 2:this._applyRemoves(n,u)}}if(i.length>0){const{baseInstanceData:s}=e,o=null!=s;for(const e of f.buffers)this._applyAdds(s,e,i);const{targetBuffers:n}=t;for(;i.length>0;)f.buffers.push(this._applyAndRebuild(s,new m(o,n),i,null))}}0===e.dataByOrigin.size&&(e.dispose(),o.delete(e.id))}e.clearAddsAndRemoves()}_updateDrawCommands(){this._hasOccludees=!1;for(const e of this.dataByBaseInstance.values())for(const t of e.dataByOrigin.values())for(const e of t.buffers)e.updateIfDrawCommandsDirty(this.highlightOrderMap),this._hasOccludees||=e.hasOccludees}_applyAndRebuild(e,t,s,o){if(o)for(const c of o.changes)t.deleteInstance(c.id);const n=this._vaoWriter,{targetBuffers:r}=n,a={},i={};for(const c of r)a[c]=n.maxElements(c),i[c]=t.numElements[c];for(;s.length>0;){const e=s.pop(),o={};for(const t of r)o[t]=n.elementCount(e.geometry,t);if(r.some(e=>i[e]+o[e]>a[e]&&i[e]>0)){s.push(e);break}for(const t of r)i[t]+=o[t];const l=new d(e,{geometry:f.acquire(0,0),texture:f.acquire(0,0)},this.highlightOrderMap);t.addInstance(e.id,l)}t.resetInstanceSummary(),n.reallocateBuffer(e,t,i);const l=n.rebuildInstances(i,t.writeableInstances.values(),t);t.updateInstances(),t.clearHoles();for(const c of r)t.holes[c].push(f.acquire(l[c],t.getEndElement(c)));return t.updateDrawCommands(this.highlightOrderMap),t}_applyRemoves(e,t){const{_vaoWriter:s}=this;if(0===t.changes.length||null==s)return;const{targetBuffers:o}=s,n={},r={};for(const a of o)n[a]=[],r[a]=f.acquire(1/0,-1/0);for(const a of t.changes){const t=a.id,s=e.instances.get(t);if(s){if(this._useMetalWorkaround)for(const e of o){const t=s.targetRanges[e],o=r[e];o.from=Math.min(o.from,t.from),o.to=Math.max(o.to,t.to)}for(const e of o){const t=s.targetRanges[e],o=n[e],r=o.at(-1);r?.to===t.from?r.to=t.to:r?.from===t.to?r.from=t.from:o.push(f.acquire(t.from,t.to))}e.deleteInstance(t)}}for(const a of o)u(n[a]);this._useMetalWorkaround?s.clearHolesMetal(e.instances.values(),r,e):s.clearHoles(n,e);for(const a of o)f.release(r[a]);for(const a of o){const t=e.holes[a];for(const e of n[a])t.push(e)}e.drawCommandsDirty=!0}_applyAdds(e,t,s){if(0===s.length||null==this._vaoWriter)return;if(!p(t))return void this._applyAndRebuild(e,t,s,null);const n=this._vaoWriter,{targetBuffers:r}=n,a={};for(const o of r){const e=t.numElements[o],r=s.reduce((e,{geometry:t})=>e+n.elementCount(t,o),0);a[o]=Math.min(e+r,n.maxElements(o))}if(n.canGrow(t,a))return void this._applyAndRebuild(e,t,s,null);t.mergeHoles();const i={},l={};for(const o of r)i[o]=[],l[o]=f.acquire(1/0,-1/0);for(const{geometry:o}of s){const e={},s={};for(const a of r)e[a]=n.elementCount(o,a),s[a]=B(t.holes[a],e[a]);if(r.every(e=>null!=s[e]))for(const t of r){const o=s[t];if(i[t].push(o),this._useMetalWorkaround){const s=l[t];s.from=Math.min(s.from,o),s.to=Math.max(s.to,o+e[t])}}else for(const t of r)i[t].push(null)}const c=this._addInstances(s,t,i);if(this._useMetalWorkaround){if(r.some(e=>!Number.isFinite(l[e].from)||!Number.isFinite(l[e].to)))return;for(const e of c);n.writeInstanceRangeMetal(l,t.instances.values(),t)}else n.writeRandomInstances(a,c,t);o(s,(e,t)=>r.some(e=>null==i[e][t]))}*_addInstances(e,t,s){const o=e.length,n=this._vaoWriter,{targetBuffers:r}=n;for(let a=0;a<o;++a){const o=e[a];if(r.some(e=>null==s[e][a]))continue;const i={};for(const e of r){const t=s[e][a];i[e]=f.acquire(t,t+n.elementCount(o.geometry,e))}const l=new d(o,i,this.highlightOrderMap);t.addInstance(o.id,l),t.drawCommandsDirty=!0,yield l}}static prune(){y.prune()}get test(){}};e([i({constructOnly:!0})],v.prototype,"dataByBaseInstance",void 0),e([i({constructOnly:!0})],v.prototype,"material",void 0),e([i()],v.prototype,"highlightOrderMap",void 0),v=e([l("esri.views.3d.webgl-engine.materials.renderers.MergedBuffer")],v);class _{constructor(e,t){this.origin=e,this.baseInstance=t,this.changes=new Array}}function B(e,t){if(0===t)return 0;const o=e.find(e=>e.numElements>=t);if(null==o)return null;const n=o.from;return o.from+=t,o.numElements<=0&&(s(e,o),f.release(o)),n}function b(){return new r}export{v as MergedBuffer};
2
+ import{__decorate as e}from"tslib";import t from"../../../../../core/Accessor.js";import{removeUnordered as s,filterInPlace as o}from"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{getOrCreateMapValue as n}from"../../../../../core/MapUtils.js";import{NestedMap as r}from"../../../../../core/NestedMap.js";import{nullUid as a}from"../../../../../core/uid.js";import{property as i,subclass as c}from"../../../../../core/accessorSupport/decorators.js";import{assert as l}from"../../lib/Util.js";import{bufferRangePool as f,mergeAdjacentRanges as u}from"./BufferRange.js";import{Instance as d}from"./Instance.js";import{PerBaseInstanceData as h}from"./PerBaseInstanceData.js";import{PerBufferData as m,hasVao as p}from"./PerBufferData.js";import{PerOriginData as g}from"./PerOriginData.js";import{VaoWriter as y}from"./VaoWriter.js";let v=class extends t{constructor(e){super(e),this._vaoWriter=null,this._useMetalWorkaround=!1,this._hasOccludees=!1}destroy(){for(const e of this.dataByBaseInstance.values()){for(const t of e.dataByOrigin.values())for(const e of t.buffers)this._vaoWriter?.deleteBuffer(e);e.dispose()}this.dataByBaseInstance.clear(),this.uninitializeRenderContext()}initializeRenderContext(e){this._useMetalWorkaround=e.renderContext.rctx.isAssumedMetalDriver,this._vaoWriter=new y(this.material,e.renderContext.rctx)}uninitializeRenderContext(){this._useMetalWorkaround=!1,this._vaoWriter=null}get hasOccludees(){return this._hasOccludees}modify(e,t){this._applyUpdates(e,t),this._applyAddsAndRemoves(e),this._updateDrawCommands()}get canCompact(){for(const e of this.dataByBaseInstance.values())for(const t of e.dataByOrigin.values())if(t.buffers.some(e=>e.holes.geometry.length>1))return!0;return!1}compact(e){if(!this.canCompact)return!1;let t=!1;for(const o of this.dataByBaseInstance.values())for(const n of o.dataByOrigin.values()){const r=new Array;for(let t=0;t<n.buffers.length&&!e.done;){const o=n.buffers[t];o.holes.geometry.length<=1?++t:(o.instances.forEach(({geometry:e})=>r.push(e)),this._vaoWriter?.deleteBuffer(o),s(n.buffers,o,void 0,{last:t}),e.madeProgress())}if(r.length>0){const{baseInstanceData:e}=o;n.buffers.forEach(t=>this._applyAdds(e,t,r));const s=null!=e;for(;r.length>0;)n.buffers.push(this._applyAndRebuild(e,new m(s,this._vaoWriter.targetBuffers),r,null));t=!0}}return t}updateHighlights(e){this.highlightOrderMap=e;for(const t of this.dataByBaseInstance.values())for(const s of t.dataByOrigin.values())for(const t of s.buffers)t.updateHighlights(e)}_applyUpdates(e,t){const o=this._vaoWriter;if(null==o)return void e.clearUpdates();let n;const r=this._useMetalWorkaround?(e,t)=>{n??=new Map;let s=n.get(t);s||(s=[],n.set(t,s)),s.push(e)}:(e,t)=>o.updateInstance(e,t);for(const i of e.updates){if(t.done)return;const{renderGeometry:o,updateType:n}=i;s(e.pending.updates,i),t.madeProgress();const c=this.dataByBaseInstance.get(o.geometry.baseGeometry?.id??a),l=c?.dataByOrigin.get(o.localOrigin.id)?.findBuffer(o.id);if(null==l)return;const f=l.instances.get(o.id);6&n&&r(f,l),25&n&&(l.drawCommandsDirty=!0)}n&&o.updateInstancesMetal(n)}_computeDeltas(e,t){const s=new Map;for(const o of e){const e=o.localOrigin;if(null==e)continue;const t=o.geometry.baseGeometry,r=n(s,t??null,b);let a=r.get(e,null);null==a&&(a=new B(e.vec3,t),r.set(e,null,a)),a.changes.push(o)}for(const o of t){const e=o.localOrigin;if(null==e)continue;const t=o.geometry.baseGeometry,r=this.dataByBaseInstance.get(t?.id??a),i=r?.dataByOrigin.get(e.id)?.findBuffer(o.id);if(null==i)continue;const c=n(s,t??null,b);let l=c.get(e,i);null==l&&(l=new B(e.vec3,t),c.set(e,i,l)),l.changes.push(o)}return s}_applyAddsAndRemoves(e){const{_vaoWriter:t,dataByBaseInstance:o}=this;if(null==t)return void e.clearAddsAndRemoves();const r=this._computeDeltas(e.adds,e.removes);for(const[i,c]of r){const e=n(o,i?.id??a,()=>new h(t.createBaseInstanceData(i)));for(const[o,r]of c.outerMap()){const a=r.get(null),i=a?.changes??[];c.delete(o,null);const f=n(e.dataByOrigin,o.id,()=>new g(o.vec3));for(const[n,u]of r){if(c.delete(o,n),null==n&&l(!1,"No VAO for removed geometries"),n.instances.size===u.changes.length){t.deleteBuffer(n),s(f.buffers,n),0===f.buffers.length&&0===i.length&&e.dataByOrigin.delete(o.id);continue}switch(t.evaluateBufferAllocation(n.numElements.geometry,i,u.changes,n)){case 0:u.changes.forEach(({id:e})=>n.deleteInstance(e)),n.instances.forEach(({geometry:e})=>i.push(e)),t.deleteBuffer(n),s(f.buffers,n);break;case 1:this._applyAndRebuild(e.baseInstanceData,n,i,u);break;case 2:this._applyRemoves(n,u)}}if(i.length>0){const{baseInstanceData:s}=e,o=null!=s;for(const e of f.buffers)this._applyAdds(s,e,i);const{targetBuffers:n}=t;for(;i.length>0;)f.buffers.push(this._applyAndRebuild(s,new m(o,n),i,null))}}0===e.dataByOrigin.size&&(e.dispose(),o.delete(e.id))}e.clearAddsAndRemoves()}_updateDrawCommands(){this._hasOccludees=!1;for(const e of this.dataByBaseInstance.values())for(const t of e.dataByOrigin.values())for(const e of t.buffers)e.updateIfDrawCommandsDirty(this.highlightOrderMap),this._hasOccludees||=e.hasOccludees}_applyAndRebuild(e,t,s,o){if(o)for(const l of o.changes)t.deleteInstance(l.id);const n=this._vaoWriter,{targetBuffers:r}=n,a={},i={};for(const l of r)a[l]=n.maxElements(l),i[l]=t.numElements[l];for(;s.length>0;){const e=s.pop(),o={};for(const t of r)o[t]=n.elementCount(e.geometry,t);if(r.some(e=>i[e]+o[e]>a[e]&&i[e]>0)){s.push(e);break}for(const t of r)i[t]+=o[t];const c=new d(e,{geometry:f.acquire(0,0),texture:f.acquire(0,0)},this.highlightOrderMap);t.addInstance(e.id,c)}t.resetInstanceSummary(),n.reallocateBuffer(e,t,i);const c=n.rebuildInstances(i,t.writeableInstances.values(),t);t.updateInstances(),t.clearHoles();for(const l of r)t.holes[l].push(f.acquire(c[l],t.getEndElement(l)));return t.updateDrawCommands(this.highlightOrderMap),t}_applyRemoves(e,t){const{_vaoWriter:s}=this;if(0===t.changes.length||null==s)return;const{targetBuffers:o}=s,n={},r={};for(const a of o)n[a]=[],r[a]=f.acquire(1/0,-1/0);for(const a of t.changes){const t=a.id,s=e.instances.get(t);if(s){if(this._useMetalWorkaround)for(const e of o){const t=s.targetRanges[e],o=r[e];o.from=Math.min(o.from,t.from),o.to=Math.max(o.to,t.to)}for(const e of o){const t=s.targetRanges[e],o=n[e],r=o.at(-1);r?.to===t.from?r.to=t.to:r?.from===t.to?r.from=t.from:o.push(f.acquire(t.from,t.to))}e.deleteInstance(t)}}for(const a of o)u(n[a]);this._useMetalWorkaround?s.clearHolesMetal(e.instances.values(),r,e):s.clearHoles(n,e);for(const a of o)f.release(r[a]);for(const a of o){const t=e.holes[a];for(const e of n[a])t.push(e)}e.drawCommandsDirty=!0}_applyAdds(e,t,s){if(0===s.length||null==this._vaoWriter)return;if(!p(t))return void this._applyAndRebuild(e,t,s,null);const n=this._vaoWriter,{targetBuffers:r}=n,a={};for(const o of r){const e=t.numElements[o],r=s.reduce((e,{geometry:t})=>e+n.elementCount(t,o),0);a[o]=Math.min(e+r,n.maxElements(o))}if(n.canGrow(t,a))return void this._applyAndRebuild(e,t,s,null);t.mergeHoles();const i={},c={};for(const o of r)i[o]=[],c[o]=f.acquire(1/0,-1/0);for(const{geometry:o}of s){const e={},s={};for(const a of r)e[a]=n.elementCount(o,a),s[a]=_(t.holes[a],e[a]);if(r.every(e=>null!=s[e]))for(const t of r){const o=s[t];if(i[t].push(o),this._useMetalWorkaround){const s=c[t];s.from=Math.min(s.from,o),s.to=Math.max(s.to,o+e[t])}}else for(const t of r)i[t].push(null)}const l=this._addInstances(s,t,i);if(this._useMetalWorkaround){if(r.some(e=>!Number.isFinite(c[e].from)||!Number.isFinite(c[e].to)))return;for(const e of l);n.writeInstanceRangeMetal(c,t.instances.values(),t)}else n.writeRandomInstances(a,l,t);o(s,(e,t)=>r.some(e=>null==i[e][t]))}*_addInstances(e,t,s){const o=e.length,n=this._vaoWriter,{targetBuffers:r}=n;for(let a=0;a<o;++a){const o=e[a];if(r.some(e=>null==s[e][a]))continue;const i={};for(const e of r){const t=s[e][a];i[e]=f.acquire(t,t+n.elementCount(o.geometry,e))}const c=new d(o,i,this.highlightOrderMap);t.addInstance(o.id,c),t.drawCommandsDirty=!0,yield c}}static prune(){y.prune()}get test(){}};e([i({constructOnly:!0})],v.prototype,"dataByBaseInstance",void 0),e([i({constructOnly:!0})],v.prototype,"material",void 0),e([i()],v.prototype,"highlightOrderMap",void 0),v=e([c("esri.views.3d.webgl-engine.materials.renderers.MergedBuffer")],v);class B{constructor(e,t){this.origin=e,this.baseInstance=t,this.changes=new Array}}function _(e,t){if(0===t)return 0;const o=e.find(e=>e.numElements>=t);if(null==o)return null;const n=o.from;return o.from+=t,o.numElements<=0&&(s(e,o),f.release(o)),n}function b(){return new r}export{v as MergedBuffer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{property as t,subclass as r}from"../../../../../core/accessorSupport/decorators.js";import{SyncRenderPlugin as s}from"../../effects/RenderPlugin.js";import{MergedBuffer as i}from"./MergedBuffer.js";import{VaoRenderer as a}from"./VaoRenderer.js";let n=class extends s{constructor(e){super(e),this._dataByBaseInstance=new Map,this._buffer=null,this._renderer=null,this.drapedPriority=0}initialize(){this._buffer=new i({material:this.material,dataByBaseInstance:this._dataByBaseInstance,highlightOrderMap:this.highlightOrderMap}),this._renderer=new a({material:this.material,dataByBaseInstance:this._dataByBaseInstance})}destroy(){for(const e of this._dataByBaseInstance.values())e.dispose();this._dataByBaseInstance.clear(),this._buffer.destroy(),this._renderer.destroy()}hasHighlight(e){return this._renderer.hasHighlight(e)}initializeRenderContext(e){this._buffer.initializeRenderContext(e),this._renderer.initializeRenderContext(e)}uninitializeRenderContext(){this._buffer.uninitializeRenderContext(),this._renderer.uninitializeRenderContext()}get produces(){return this._renderer.produces}get hasOccludees(){return this._buffer.hasOccludees}get hasOnlyOccluders(){return!!(-2&this.renderOccludedFlags)}get hasEmitters(){return this.material.hasEmissions}get isDecoration(){return this.material.parameters.isDecoration}get renderOccludedFlags(){return this.material.renderOccludedFlags}get testsTransparentRenderOrder(){return"test"===process.env.NODE_ENV?this.material.testsTransparentRenderOrder:0}get numGeometries(){let e=0;for(const t of this._dataByBaseInstance.values())for(const r of t.dataByOrigin.values())e+=r.buffers.reduce((e,t)=>e+t.instances.size,0);return e}get usedMemory(){let e=0;for(const t of this._dataByBaseInstance.values())for(const r of t.dataByOrigin.values())e+=r.buffers.reduce((e,t)=>e+t.vao.usedMemory,0);return e}forEachGeometry(e){for(const t of this._dataByBaseInstance.values())for(const r of t.dataByOrigin.values())for(const t of r.buffers)for(const{geometry:r}of t.instances.values())e(r)}modify(e,t){this._buffer.modify(e,t),this._renderer.updateHighlights()}get canCompact(){return this._buffer.canCompact}compact(e){return this._buffer.compact(e)}updateHighlights(e){this.highlightOrderMap=e,this._buffer.updateHighlights(e),this._renderer.updateHighlights()}updateAnimation(e){return this.material.update(e)}acquireTechniques(e){return this._renderer.acquireTechniques(e)}render(e,t){return this._renderer.render(e,t)}static prune(){i.prune()}get test(){}};e([t({constructOnly:!0})],n.prototype,"material",void 0),e([t()],n.prototype,"highlightOrderMap",void 0),n=e([r("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],n);export{n as MergedRenderer};
2
+ import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{property as r,subclass as t}from"../../../../../core/accessorSupport/decorators.js";import{SyncRenderPlugin as s}from"../../effects/RenderPlugin.js";import{MergedBuffer as i}from"./MergedBuffer.js";import{VaoRenderer as a}from"./VaoRenderer.js";let n=class extends s{constructor(e){super(e),this._dataByBaseInstance=new Map,this._buffer=null,this._renderer=null,this.drapedPriority=0}initialize(){this._buffer=new i({material:this.material,dataByBaseInstance:this._dataByBaseInstance,highlightOrderMap:this.highlightOrderMap}),this._renderer=new a({material:this.material,dataByBaseInstance:this._dataByBaseInstance})}destroy(){this._buffer.destroy(),this._renderer.destroy()}hasHighlight(e){return this._renderer.hasHighlight(e)}initializeRenderContext(e){this._buffer.initializeRenderContext(e),this._renderer.initializeRenderContext(e)}uninitializeRenderContext(){this._buffer.uninitializeRenderContext(),this._renderer.uninitializeRenderContext()}get produces(){return this._renderer.produces}get hasOccludees(){return this._buffer.hasOccludees}get hasOnlyOccluders(){return!!(-2&this.renderOccludedFlags)}get hasEmitters(){return this.material.hasEmissions}get isDecoration(){return this.material.parameters.isDecoration}get renderOccludedFlags(){return this.material.renderOccludedFlags}get testsTransparentRenderOrder(){return"test"===process.env.NODE_ENV?this.material.testsTransparentRenderOrder:0}get numGeometries(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.instances.size,0);return e}get usedMemory(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.vao.usedMemory,0);return e}forEachGeometry(e){for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())for(const r of t.buffers)for(const{geometry:t}of r.instances.values())e(t)}modify(e,r){this._buffer.modify(e,r),this._renderer.updateHighlights()}get canCompact(){return this._buffer.canCompact}compact(e){return this._buffer.compact(e)}updateHighlights(e){this.highlightOrderMap=e,this._buffer.updateHighlights(e),this._renderer.updateHighlights()}updateAnimation(e){return this.material.update(e)}acquireTechniques(e){return this._renderer.acquireTechniques(e)}render(e,r){return this._renderer.render(e,r)}static prune(){i.prune()}get test(){}};e([r({constructOnly:!0})],n.prototype,"material",void 0),e([r()],n.prototype,"highlightOrderMap",void 0),n=e([t("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],n);export{n as MergedRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{getOrCreateMapValue as t}from"../../../../../core/MapUtils.js";import s from"../../../../../core/PooledArray.js";import{assert as e}from"../../lib/Util.js";import{bufferRangePool as n,mergeAdjacentRanges as a}from"./BufferRange.js";import{DrawCommand as i}from"./DrawCommand.js";import{InstancedCommandVAO as o}from"./InstancedCommandVAO.js";import{InstancedCommandVAOs as r}from"./InstancedCommandVAOs.js";import{defaultHighlightName as h}from"../../../../support/HighlightDefaults.js";class m{constructor(t,s){this.isInstanced=t,this.targetBuffers=s,this.vao=null,this.textureBuffer=null,this.vaoEndElement=0,this.textureEndElement=0,this._instances=new Map,this.hasHiddenInstances=!1,this.hasOccludees=!1,this.drawCommandsDirty=!0,this.highlightNames=new Set,this.drawCommandsDefault=c(),this.drawCommandsHighlights=new Map,this.drawCommandsOccludees=c(),this.drawCommandsShadowHighlightRest=c(),this._instancedCommandVAOs=null;const e={},n={};for(const a of s)e[a]=0,n[a]=[];this._numElements=e,this._holes=n}dispose(){this.isInstanced?(this.vao?.buffer("geometry")?.dispose(),this.vao?.disposeVAOOnly(),this.instancedCommandVAOs?.dispose()):this.vao?.dispose(),this.textureBuffer?.dispose()}getTargetBuffer(t){return"geometry"===t?this.vao?.buffer("geometry"):this.textureBuffer}get numElements(){return this._numElements}get instances(){return this._instances}get writeableInstances(){return this._instances}clearHoles(){for(const t of this.targetBuffers){const s=this._holes[t];for(const t of s)n.release(t);s.length=0}}getEndElement(t){return"geometry"===t?this.vaoEndElement:this.textureEndElement}get holes(){return this._holes}get hasHighlights(){return this.highlightNames.size>0}get instancedCommandVAOs(){return this._instancedCommandVAOs}resetInstanceSummary(){this.hasHiddenInstances=!1,this.hasOccludees=!1,this.highlightNames.clear()}updateIfDrawCommandsDirty(t){if(this.drawCommandsDirty){this.resetInstanceSummary();for(const t of this.instances.values())this.updateDrawState(t);this.updateDrawCommands(t)}}addInstance(t,s){e(!this._instances.has(t)),this._instances.set(t,s);for(const e of this.targetBuffers)this._numElements[e]+=s.targetRanges[e].numElements}deleteInstance(t){const s=this._instances.get(t);if(s){for(const t of this.targetBuffers){const e=s.targetRanges[t];this._numElements[t]-=e.numElements,n.release(e)}this._instances.delete(t)}}updateInstances(){const{targetBuffers:t}=this,s={};for(const e of t)s[e]=0;for(const e of this._instances.values()){for(const n of t)s[n]+=e.targetRanges[n].numElements;this.updateDrawState(e)}this._numElements=s}updateDrawState(t){if(t.isVisible){const{highlightName:s}=t;s&&this.highlightNames.add(s),t.hasOccludees&&(this.hasOccludees=!0)}else this.hasHiddenInstances=!0}updateDrawCommands(t){this._updateDrawCommands(t),this._updateInstancedCommandVAOs()}_updateDrawCommands(t){if(this.drawCommandsDefault.clear(),this.drawCommandsOccludees.clear(),this.drawCommandsDirty=!1,0===this._instances.size)return;const{sortedInstances:s}=this;if(this._updateHighlightDrawCommands(t,s),!this.needsMultipleCommands){const t=this.drawCommandsDefault.pushNew(),s=this.holes.geometry.at(0);return this.vao&&1===this.holes.geometry.length&&s.to===this.vaoEndElement?(t.first=0,void(t.count=s.from)):(t.first=1/0,t.count=0,this._instances.forEach(s=>{t.first=Math.min(t.first,s.targetRanges.geometry.from),t.count=Math.max(t.count,s.targetRanges.geometry.to)}),void(t.count-=t.first))}for(const e of s)e.isVisible&&l(e.hasOccludees?this.drawCommandsOccludees:this.drawCommandsDefault,e)}get sortedInstances(){return Array.from(this._instances.values()).sort(({targetRanges:{geometry:t}},{targetRanges:{geometry:s}})=>t.from===s.from?t.to-s.to:t.from-s.from)}updateHighlights(t){this.highlightNames.clear();const s=this.sortedInstances;for(const e of s)e.updateHighlightOptions(t),e.isVisible&&e.highlightName&&this.highlightNames.add(e.highlightName);this._updateHighlightDrawCommands(t,s),this._updateInstancedCommandVAOs()}mergeHoles(){const t=this._holes;for(const s of this.targetBuffers)a(t[s])}_updateHighlightDrawCommands(s,e){const{drawCommandsHighlights:n,drawCommandsShadowHighlightRest:a}=this;n.clear(),a.clear();for(const i of e){if(i.updateHighlightOptions(s),!i.isVisible)continue;const{highlightName:e}=i;if(e){this.highlightNames.add(e);l(t(n,e,c),i)}e&&e===h||l(a,i)}}_updateInstancedCommandVAOs(){const t=this.vao;if(!this.isInstanced||null==t)return;this._instancedCommandVAOs??=new r;const s=this._instancedCommandVAOs,e=s.commandVAOs.copy();s.clear();const n=s.commandVAOs,a=(s,a)=>{for(const i of s){const{first:s,count:r}=i,h=n.get(s,r)??e.pop(s,r)??new o(t.shallowCloneWithBaseInstances(new Map([["geometry",i.first]])),i.count);n.set(s,r,h),a.push(h)}};a(this.drawCommandsDefault,s.drawCommandsDefault);for(const[i,o]of this.drawCommandsHighlights){const t=new Array;a(o,t),s.drawCommandsHighlights.set(i,t)}a(this.drawCommandsOccludees,s.drawCommandsOccludees),a(this.drawCommandsShadowHighlightRest,s.drawCommandsShadowHighlightRest);for(const i of e.values())i.dispose();e.clear()}get needsMultipleCommands(){return this.hasOccludees||this.hasHighlights||this.hasHiddenInstances}}function d(t){return null!=t.vao}function c(){return new s({allocator:t=>t||new i,deallocator:t=>t})}function l(t,{targetRanges:{geometry:s}}){const e=t.back();if(null==e){const e=t.pushNew();return e.first=s.from,void(e.count=s.numElements)}if(u(e,s)){const t=s.from-e.first+s.numElements;e.count=t}else{const e=t.pushNew();e.first=s.from,e.count=s.numElements}}function u(t,s){return t.first+t.count>=s.from}export{m as PerBufferData,d as hasVao};
2
+ import{getOrCreateMapValue as t}from"../../../../../core/MapUtils.js";import s from"../../../../../core/PooledArray.js";import{assert as e}from"../../lib/Util.js";import{bufferRangePool as n,mergeAdjacentRanges as a}from"./BufferRange.js";import{DrawCommand as i}from"./DrawCommand.js";import{InstancedCommandVAO as o}from"./InstancedCommandVAO.js";import{InstancedCommandVAOs as r}from"./InstancedCommandVAOs.js";import{defaultHighlightName as h}from"../../../../support/HighlightDefaults.js";class m{constructor(t,s){this.isInstanced=t,this.targetBuffers=s,this.vao=null,this.textureBuffer=null,this.vaoEndElement=0,this.textureEndElement=0,this._instances=new Map,this.hasHiddenInstances=!1,this.hasOccludees=!1,this.drawCommandsDirty=!0,this.highlightNames=new Set,this.drawCommandsDefault=c(),this.drawCommandsHighlights=new Map,this.drawCommandsOccludees=c(),this.drawCommandsShadowHighlightRest=c(),this._instancedCommandVAOs=null;const e={},n={};for(const a of s)e[a]=0,n[a]=[];this._numElements=e,this._holes=n}getTargetBuffer(t){return"geometry"===t?this.vao?.buffer("geometry"):this.textureBuffer}get numElements(){return this._numElements}get instances(){return this._instances}get writeableInstances(){return this._instances}clearHoles(){for(const t of this.targetBuffers){const s=this._holes[t];for(const t of s)n.release(t);s.length=0}}getEndElement(t){return"geometry"===t?this.vaoEndElement:this.textureEndElement}get holes(){return this._holes}get hasHighlights(){return this.highlightNames.size>0}get instancedCommandVAOs(){return this._instancedCommandVAOs}resetInstanceSummary(){this.hasHiddenInstances=!1,this.hasOccludees=!1,this.highlightNames.clear()}updateIfDrawCommandsDirty(t){if(this.drawCommandsDirty){this.resetInstanceSummary();for(const t of this.instances.values())this.updateDrawState(t);this.updateDrawCommands(t)}}addInstance(t,s){e(!this._instances.has(t)),this._instances.set(t,s);for(const e of this.targetBuffers)this._numElements[e]+=s.targetRanges[e].numElements}deleteInstance(t){const s=this._instances.get(t);if(s){for(const t of this.targetBuffers){const e=s.targetRanges[t];this._numElements[t]-=e.numElements,n.release(e)}this._instances.delete(t)}}updateInstances(){const{targetBuffers:t}=this,s={};for(const e of t)s[e]=0;for(const e of this._instances.values()){for(const n of t)s[n]+=e.targetRanges[n].numElements;this.updateDrawState(e)}this._numElements=s}updateDrawState(t){if(t.isVisible){const{highlightName:s}=t;s&&this.highlightNames.add(s),t.hasOccludees&&(this.hasOccludees=!0)}else this.hasHiddenInstances=!0}updateDrawCommands(t){this._updateDrawCommands(t),this._updateInstancedCommandVAOs()}_updateDrawCommands(t){if(this.drawCommandsDefault.clear(),this.drawCommandsOccludees.clear(),this.drawCommandsDirty=!1,0===this._instances.size)return;const{sortedInstances:s}=this;if(this._updateHighlightDrawCommands(t,s),!this.needsMultipleCommands){const t=this.drawCommandsDefault.pushNew(),s=this.holes.geometry.at(0);return this.vao&&1===this.holes.geometry.length&&s.to===this.vaoEndElement?(t.first=0,void(t.count=s.from)):(t.first=1/0,t.count=0,this._instances.forEach(s=>{t.first=Math.min(t.first,s.targetRanges.geometry.from),t.count=Math.max(t.count,s.targetRanges.geometry.to)}),void(t.count-=t.first))}for(const e of s)e.isVisible&&l(e.hasOccludees?this.drawCommandsOccludees:this.drawCommandsDefault,e)}get sortedInstances(){return Array.from(this._instances.values()).sort(({targetRanges:{geometry:t}},{targetRanges:{geometry:s}})=>t.from===s.from?t.to-s.to:t.from-s.from)}updateHighlights(t){this.highlightNames.clear();const s=this.sortedInstances;for(const e of s)e.updateHighlightOptions(t),e.isVisible&&e.highlightName&&this.highlightNames.add(e.highlightName);this._updateHighlightDrawCommands(t,s),this._updateInstancedCommandVAOs()}mergeHoles(){const t=this._holes;for(const s of this.targetBuffers)a(t[s])}_updateHighlightDrawCommands(s,e){const{drawCommandsHighlights:n,drawCommandsShadowHighlightRest:a}=this;n.clear(),a.clear();for(const i of e){if(i.updateHighlightOptions(s),!i.isVisible)continue;const{highlightName:e}=i;if(e){this.highlightNames.add(e);l(t(n,e,c),i)}e&&e===h||l(a,i)}}_updateInstancedCommandVAOs(){const t=this.vao;if(!this.isInstanced||null==t)return;this._instancedCommandVAOs??=new r;const s=this._instancedCommandVAOs,e=s.commandVAOs.copy();s.clear();const n=s.commandVAOs,a=(s,a)=>{for(const i of s){const{first:s,count:r}=i,h=n.get(s,r)??e.pop(s,r)??new o(t.shallowCloneWithBaseInstances(new Map([["geometry",i.first]])),i.count);n.set(s,r,h),a.push(h)}};a(this.drawCommandsDefault,s.drawCommandsDefault);for(const[i,o]of this.drawCommandsHighlights){const t=new Array;a(o,t),s.drawCommandsHighlights.set(i,t)}a(this.drawCommandsOccludees,s.drawCommandsOccludees),a(this.drawCommandsShadowHighlightRest,s.drawCommandsShadowHighlightRest);for(const i of e.values())i.dispose();e.clear()}get needsMultipleCommands(){return this.hasOccludees||this.hasHighlights||this.hasHiddenInstances}}function d(t){return null!=t.vao}function c(){return new s({allocator:t=>t||new i,deallocator:t=>t})}function l(t,{targetRanges:{geometry:s}}){const e=t.back();if(null==e){const e=t.pushNew();return e.first=s.from,void(e.count=s.numElements)}if(u(e,s)){const t=s.from-e.first+s.numElements;e.count=t}else{const e=t.pushNew();e.first=s.from,e.count=s.numElements}}function u(t,s){return t.first+t.count>=s.from}export{m as PerBufferData,d as hasVao};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- class s{constructor(s){this.origin=s,this.buffers=new Array}dispose(){for(const s of this.buffers)s.dispose();this.buffers.length=0}findBuffer(s){return this.buffers.find(f=>f.instances.has(s))}}export{s as PerOriginData};
2
+ class s{constructor(s){this.origin=s,this.buffers=new Array}dispose(){this.buffers.length=0}findBuffer(s){return this.buffers.find(r=>r.instances.has(s))}}export{s as PerOriginData};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{TextureBuffer as e}from"../../lib/TextureBackedBuffer/TextureBuffer.js";import{BufferCache as r}from"./BufferCache.js";class f{constructor(f,t){this._cache=new r(f.newCache,r=>new e(f,t,r),"TextureBufferCache")}dispose(){this._cache.dispose()}newTextureBuffer(e){return this._cache.newBuffer(e)}deleteTextureBuffer(e){return this._cache.deleteBuffer(e)}}export{f as TextureBufferCache};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{nextHighestPowerOfTwo as t}from"../../../../../core/mathUtils.js";import{disposeMaybe as e}from"../../../../../core/maybe.js";import{copy as r,invert as o,transpose as s}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{glLayout as a}from"../../../support/buffer/glUtil.js";import{VertexArrayObject as f}from"../../lib/VertexArrayObject.js";import{getMaxItemCount as i,getMaxByteSize as u}from"../../lib/TextureBackedBuffer/TextureBackedBufferUtils.js";import{TextureBuffer as c}from"../../lib/TextureBackedBuffer/TextureBuffer.js";import{bufferRangePool as m}from"./BufferRange.js";import{DrawCommand as l}from"./DrawCommand.js";import{BaseInstanceData as g}from"./PerBaseInstanceData.js";import{VertexBuffer as h}from"../../../../webgl/VertexBuffer.js";class y{constructor(t,e){this._rctx=e;const r=t.createBufferWriter();this._bufferWriter=r,this._vaoCache=e.getVaoCache(a(r.layout));const o=["geometry"];"textureBufferLayout"in r&&null!=r.textureBufferLayout&&o.push("texture"),this.targetBuffers=o}maxElements(t){if("texture"===t){const t=this._targetLayout("texture");return null==t?0:i(this._rctx,t)}return Math.floor(x/this._targetStrideBytes(t))}_targetStrideBytes(t){return this._targetLayout(t)?.stride??0}_targetLayout(t){return"geometry"===t?this._bufferWriter.layout:"baseInstance"===t?this._bufferWriter.baseInstanceLayout:this._bufferWriter.textureBufferLayout}evaluateBufferAllocation(t,e,r,o){const s=this._targetStrideBytes("geometry"),n=e.reduce((t,{geometry:e})=>t+this.vertexElementCount(e),0),a=r.reduce((t,{geometry:e})=>t+this.vertexElementCount(e),0),f=Math.min((t+n-a)*s,x),i=o.vao?.buffer("geometry"),u=i?.sizeBytes??0;return f>b&&f<u/2?0:f>u?1:2}deleteBuffer(t){if(t.isInstanced)return t.instancedCommandVAOs?.dispose(),t.vao?.buffer("geometry")?.dispose(),t.vao?.disposeVAOOnly(),void(t.vao=null);this._vaoCache.deleteVao(t.vao),t.vaoEndElement=0,t.textureBuffer=e(t.textureBuffer),t.textureEndElement=0}createBaseInstanceData(t){const{_bufferWriter:e}=this;if(null==t||null==e.baseInstanceLayout||null==e.writeBaseInstance||null==e.elementCountBaseInstance)return null;const r=this._targetLayout("baseInstance"),o=e.elementCountBaseInstance(t.attributes),s=o*r.stride,n=new h(this._rctx,a(r));n.setSize(Math.ceil(s));const f=S(s),i=r.createView(f.buffer);e.writeBaseInstance(t.attributes,i),n.setSubData(f,0,0,s);const u=new l;return u.first=0,u.count=o,new g(t,n,u)}_allocateInstanceBuffer(t){const e=this._bufferWriter.layout,r=t*this._targetStrideBytes("geometry"),o=new h(this._rctx,a(e,1));return o.setSize(I(r)),o}_createInstancedVao(t,e){return new f(this._rctx,new Map([["baseInstance",t],["geometry",e]]))}reallocateBuffer(t,e,r){if(this.deleteBuffer(e),null!=t){const o=t.baseInstanceBuffer,s=this._allocateInstanceBuffer(r.geometry);e.vao=this._createInstancedVao(o,s)}else{const t=r.geometry*this._targetStrideBytes("geometry");e.vao=this._vaoCache.newVao(I(t))}const o=this._targetLayout("texture");if(null!=o){const t=I(r.texture*o.stride),s=Math.ceil(t/o.stride);e.textureBuffer=new c(this._rctx,o,s)}e.vaoEndElement=Math.floor((e.vao?.getByteLength("geometry")??0)/this._targetStrideBytes("geometry")),e.textureEndElement=e.textureBuffer?.itemCount??0}elementCount(t,e){const{attributes:r}=t;return"geometry"===e?this._bufferWriter.elementCount(r):"baseInstance"===e?this._bufferWriter.elementCountBaseInstance?.(r)??0:this._bufferWriter.elementCountTextureBuffer?.(r)??0}vertexElementCount(t){return this._bufferWriter.elementCount(t.attributes)}textureElementCount(t){return this._bufferWriter.elementCountTextureBuffer?.(t.attributes)??0}canGrow(t,e){const r=this.targetBuffers.map(r=>this._evaluateTargetBufferGrowth(r,t,e));return r.every(({canGrow:t})=>t)&&r.some(({needsToGrow:t})=>t)}_evaluateTargetBufferGrowth(t,e,r){const o=this._targetLayout(t),s=e.getTargetBuffer(t);if(null==o||null==s)return{needsToGrow:null!=o,canGrow:!0};return{needsToGrow:r[t]*o.stride>s.sizeBytes,canGrow:"geometry"===t?s.sizeBytes<I(x-b):s.sizeBytes<u(this._rctx,o)}}clearHoles(t,e){for(const r of this.targetBuffers){const o=this._targetStrideBytes(r),s=t[r],n=s.reduce((t,e)=>Math.max(t,e.numElements),0)*o,a=S(n);a.fill(0,0,n);for(const t of s)this._setTargetSubData(r,e,o,t,a)}}clearHolesMetal(t,e,r){const{targetBuffers:o}=this,s={};let n=0;for(const i of o){const t=e[i].numElements*this._targetStrideBytes(i);s[i]=n,n+=v(t)}const a=S(n);a.fill(0,0,n);const f={};for(const i of o)f[i]=this._targetLayout(i)?.createView(a.buffer,s[i]);for(const i of t){const t=i.targetRanges.geometry;if(!(t.from>=e.geometry.from&&t.to<=e.geometry.to))continue;const r={};for(const s of o)r[s]=i.targetRanges[s].from-e[s].from;this._writeGeometry(i.geometry,f,r,i.targetRanges)}for(const i of o)this._setTargetSubData(i,r,this._targetStrideBytes(i),e[i],a,s[i])}writeRandomInstances(t,e,r){const{targetBuffers:o}=this,s={},n={},a={},f={};let i=0;for(const l of o)s[l]=t[l]*this._targetStrideBytes(l),n[l]=i,a[l]=0,f[l]=m.acquire(0,0),i+=v(s[l]);const u=S(i),c={};for(const m of o)c[m]=this._targetLayout(m)?.createView(u.buffer,n[m]);for(const m of e){for(const t of o){const e=m.targetRanges[t],o=f[t];o.to===e.from||(o.numElements>0&&this._setTargetSubData(t,r,this._targetStrideBytes(t),f[t],u,n[t]),o.from=e.from,a[t]=0)}this._writeGeometry(m.geometry,c,a,m.targetRanges);for(const t of o){const e=m.targetRanges[t];a[t]+=e.numElements,f[t].to=e.to}}for(const l of o){const t=f[l];t.numElements>0&&this._setTargetSubData(l,r,this._targetStrideBytes(l),t,u,n[l]),m.release(f[l])}}writeInstanceRangeMetal(t,e,r){const{targetBuffers:o}=this,s={},n={};let a=0;for(const u of o)s[u]=t[u].numElements*this._targetStrideBytes(u),n[u]=a,a+=v(s[u]);const f=S(a),i={};for(const u of o)i[u]=this._targetLayout(u)?.createView(f.buffer,n[u]);f.fill(0,0,a);for(const u of e){const e=u.targetRanges.geometry;if(!(e.from>=t.geometry.from&&e.to<=t.geometry.to))continue;const r={},s={};for(const n of o){const e=u.targetRanges[n];r[n]=e.from-t[n].from,s[n]=e}this._writeGeometry(u.geometry,i,r,s)}for(const u of o)t[u].numElements>0&&this._setTargetSubData(u,r,this._targetStrideBytes(u),t[u],f,n[u])}rebuildInstances(t,e,r){const{targetBuffers:o}=this,s={},n={},a={};let f=0;for(const c of o)s[c]=t[c]*this._targetStrideBytes(c),n[c]=f,f+=v(s[c]),a[c]=0;const i=S(f),u={};for(const c of o)u[c]=this._targetLayout(c)?.createView(i.buffer,n[c]);for(const c of e){const t={},e={};for(const r of o){t[r]=a[r],a[r]+=this.elementCount(c.geometry.geometry,r);const o=c.targetRanges[r];o.from=t[r],o.to=a[r],e[r]=o}this._writeGeometry(c.geometry,u,t,e)}for(const c of o){const t=m.acquire(0,a[c]);this._setTargetSubData(c,r,this._targetStrideBytes(c),t,i,n[c]),m.release(t)}return a}updateInstance(t,e){const{targetBuffers:r}=this,o={},s={};let n=0;for(const u of r){const e=this._targetStrideBytes(u);o[u]=this.elementCount(t.geometry.geometry,u)*e,s[u]=n,n+=v(o[u])}const a=S(n),f={},i={};for(const u of r)i[u]=0,f[u]=this._targetLayout(u)?.createView(a.buffer,s[u]);this._writeGeometry(t.geometry,f,i,t.targetRanges);for(const u of r)this._setTargetSubData(u,e,this._targetStrideBytes(u),t.targetRanges[u],a,s[u])}updateInstancesMetal(t){const{targetBuffers:e}=this;for(const[r,o]of t){const t={};for(const r of e)t[r]=m.acquire(1/0,-1/0);for(const r of o)for(const o of e){const e=t[o],s=r.targetRanges[o];e.from=Math.min(e.from,s.from),e.to=Math.max(e.to,s.to)}this.writeInstanceRangeMetal(t,r.instances.values(),r);for(const r of e)m.release(t[r])}}_writeGeometry(t,e,n,a){const{_bufferWriter:f}=this;null!=f&&(r(B,t.transformation),B[12]-=t.localOrigin.vec3[0],B[13]-=t.localOrigin.vec3[1],B[14]-=t.localOrigin.vec3[2],o(_,B),s(_,_),f.write(B,_,t.geometry.attributes,t.geometry.olidColor,e.geometry,n.geometry,a.texture),null!=e.texture&&f.writeTextureBuffer&&f.writeTextureBuffer(B,_,t.geometry.attributes,e.texture,n.texture))}_setTargetSubData(t,e,r,o,s,n=0){if("geometry"===t){const a=e.getTargetBuffer(t);a?.setSubData(s,o.from*r,n,o.numElements*r)}else if("texture"===t){const r=e.getTargetBuffer(t);r?.setSubData(s.buffer,o.from,n,o.numElements)}}static prune(){w=new Uint8Array(b)}}const B=n(),_=n(),b=262144,d=1024,x=16777216;let w=new Uint8Array(b);function S(t){return w.byteLength<t&&(w=new Uint8Array(t)),w}function v(t){return 4*Math.ceil(t/4)}function I(e){return e<=d?d:e<b?t(e):Math.max(Math.min(Math.ceil(1.5*e/b)*b,x),e)}export{y as VaoWriter};
2
+ import{nextHighestPowerOfTwo as t}from"../../../../../core/mathUtils.js";import{copy as e,invert as r,transpose as o}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{glLayout as a}from"../../../support/buffer/glUtil.js";import{VertexArrayObject as n}from"../../lib/VertexArrayObject.js";import{getMaxItemCount as f,getMaxByteSize as u}from"../../lib/TextureBackedBuffer/TextureBackedBufferUtils.js";import{bufferRangePool as i}from"./BufferRange.js";import{DrawCommand as c}from"./DrawCommand.js";import{BaseInstanceData as l}from"./PerBaseInstanceData.js";import{VertexBuffer as m}from"../../../../webgl/VertexBuffer.js";class g{constructor(t,e){this._rctx=e,this._vaoCacheValue=null,this._instanceVboCacheValue=null,this._textureBufferCacheValue=null;const r=t.createBufferWriter();this._bufferWriter=r;const o=["geometry"],s="textureBufferLayout"in r&&null!=r.textureBufferLayout;this.useTextureBuffer=s,s&&o.push("texture"),this.targetBuffers=o}get _vaoCache(){return this._vaoCacheValue??=this._rctx.getVaoCache(a(this._bufferWriter.layout)),this._vaoCacheValue}get _instanceVboCache(){return this._instanceVboCacheValue??=this._rctx.getVboCache(a(this._bufferWriter.layout,1)),this._instanceVboCacheValue}get _textureBufferCache(){return this.useTextureBuffer?(this._textureBufferCacheValue??=this._rctx.getTextureBufferCache(this._bufferWriter.textureBufferLayout),this._textureBufferCacheValue):null}maxElements(t){if("texture"===t){const t=this._targetLayout("texture");return null==t?0:f(this._rctx,t)}return Math.floor(b/this._targetStrideBytes(t))}_targetStrideBytes(t){return this._targetLayout(t)?.stride??0}_targetLayout(t){return"geometry"===t?this._bufferWriter.layout:"baseInstance"===t?this._bufferWriter.baseInstanceLayout:this._bufferWriter.textureBufferLayout}evaluateBufferAllocation(t,e,r,o){const s=this._targetStrideBytes("geometry"),a=e.reduce((t,{geometry:e})=>t+this.vertexElementCount(e),0),n=r.reduce((t,{geometry:e})=>t+this.vertexElementCount(e),0),f=Math.min((t+a-n)*s,b),u=o.vao?.buffer("geometry"),i=u?.sizeBytes??0;return f>_&&f<i/2?0:f>i?1:2}deleteBuffer(t){t.isInstanced?(t.instancedCommandVAOs?.dispose(),this._instanceVboCache.deleteVbo(t.vao?.mutableBuffer("geometry")),t.vao?.disposeVAOOnly()):this._vaoCache.deleteVao(t.vao),this._textureBufferCache?.deleteTextureBuffer(t.textureBuffer),t.vao=null,t.textureBuffer=null,t.vaoEndElement=0,t.textureEndElement=0}createBaseInstanceData(t){const{_bufferWriter:e}=this;if(null==t||null==e.baseInstanceLayout||null==e.writeBaseInstance||null==e.elementCountBaseInstance)return null;const r=this._targetLayout("baseInstance"),o=e.elementCountBaseInstance(t.attributes),s=o*r.stride,n=new m(this._rctx,a(r));n.setSize(Math.ceil(s));const f=d(s),u=r.createView(f.buffer);e.writeBaseInstance(t.attributes,u),n.setSubData(f,0,0,s);const i=new c;return i.first=0,i.count=o,new l(t,n,i)}reallocateBuffer(t,e,r){if(this.deleteBuffer(e),null!=t){const o=t.baseInstanceBuffer,s=r.geometry*this._targetStrideBytes("geometry"),a=this._instanceVboCache.newVbo(C(s));e.vao=new n(this._rctx,new Map([["baseInstance",o],["geometry",a]]))}else{const t=r.geometry*this._targetStrideBytes("geometry");e.vao=this._vaoCache.newVao(C(t))}const o=this._targetLayout("texture"),s=this._textureBufferCache;if(null!=o&&null!=s){const t=C(r.texture*o.stride),a=Math.ceil(t/o.stride);e.textureBuffer=s.newTextureBuffer(a)}e.vaoEndElement=Math.floor((e.vao?.getByteLength("geometry")??0)/this._targetStrideBytes("geometry")),e.textureEndElement=e.textureBuffer?.itemCount??0}elementCount(t,e){const{attributes:r}=t;return"geometry"===e?this._bufferWriter.elementCount(r):"baseInstance"===e?this._bufferWriter.elementCountBaseInstance?.(r)??0:this._bufferWriter.elementCountTextureBuffer?.(r)??0}vertexElementCount(t){return this._bufferWriter.elementCount(t.attributes)}textureElementCount(t){return this._bufferWriter.elementCountTextureBuffer?.(t.attributes)??0}canGrow(t,e){const r=this.targetBuffers.map(r=>this._evaluateTargetBufferGrowth(r,t,e));return r.every(({canGrow:t})=>t)&&r.some(({needsToGrow:t})=>t)}_evaluateTargetBufferGrowth(t,e,r){const o=this._targetLayout(t),s=e.getTargetBuffer(t);if(null==o||null==s)return{needsToGrow:null!=o,canGrow:!0};return{needsToGrow:r[t]*o.stride>s.sizeBytes,canGrow:"geometry"===t?s.sizeBytes<C(b-_):s.sizeBytes<u(this._rctx,o)}}clearHoles(t,e){for(const r of this.targetBuffers){const o=this._targetStrideBytes(r),s=t[r],a=s.reduce((t,e)=>Math.max(t,e.numElements),0)*o,n=d(a);n.fill(0,0,a);for(const t of s)this._setTargetSubData(r,e,o,t,n)}}clearHolesMetal(t,e,r){const{targetBuffers:o}=this,s={};let a=0;for(const u of o){const t=e[u].numElements*this._targetStrideBytes(u);s[u]=a,a+=w(t)}const n=d(a);n.fill(0,0,a);const f={};for(const u of o)f[u]=this._targetLayout(u)?.createView(n.buffer,s[u]);for(const u of t){const t=u.targetRanges.geometry;if(!(t.from>=e.geometry.from&&t.to<=e.geometry.to))continue;const r={};for(const s of o)r[s]=u.targetRanges[s].from-e[s].from;this._writeGeometry(u.geometry,f,r,u.targetRanges)}for(const u of o)this._setTargetSubData(u,r,this._targetStrideBytes(u),e[u],n,s[u])}writeRandomInstances(t,e,r){const{targetBuffers:o}=this,s={},a={},n={},f={};let u=0;for(const m of o)s[m]=t[m]*this._targetStrideBytes(m),a[m]=u,n[m]=0,f[m]=i.acquire(0,0),u+=w(s[m]);const c=d(u),l={};for(const i of o)l[i]=this._targetLayout(i)?.createView(c.buffer,a[i]);for(const i of e){for(const t of o){const e=i.targetRanges[t],o=f[t];o.to===e.from||(o.numElements>0&&this._setTargetSubData(t,r,this._targetStrideBytes(t),f[t],c,a[t]),o.from=e.from,n[t]=0)}this._writeGeometry(i.geometry,l,n,i.targetRanges);for(const t of o){const e=i.targetRanges[t];n[t]+=e.numElements,f[t].to=e.to}}for(const m of o){const t=f[m];t.numElements>0&&this._setTargetSubData(m,r,this._targetStrideBytes(m),t,c,a[m]),i.release(f[m])}}writeInstanceRangeMetal(t,e,r){const{targetBuffers:o}=this,s={},a={};let n=0;for(const i of o)s[i]=t[i].numElements*this._targetStrideBytes(i),a[i]=n,n+=w(s[i]);const f=d(n),u={};for(const i of o)u[i]=this._targetLayout(i)?.createView(f.buffer,a[i]);f.fill(0,0,n);for(const i of e){const e=i.targetRanges.geometry;if(!(e.from>=t.geometry.from&&e.to<=t.geometry.to))continue;const r={},s={};for(const a of o){const e=i.targetRanges[a];r[a]=e.from-t[a].from,s[a]=e}this._writeGeometry(i.geometry,u,r,s)}for(const i of o)t[i].numElements>0&&this._setTargetSubData(i,r,this._targetStrideBytes(i),t[i],f,a[i])}rebuildInstances(t,e,r){const{targetBuffers:o}=this,s={},a={},n={};let f=0;for(const i of o)s[i]=t[i]*this._targetStrideBytes(i),a[i]=f,f+=w(s[i]),n[i]=0;const u=d(f),c={};for(const i of o)c[i]=this._targetLayout(i)?.createView(u.buffer,a[i]);for(const i of e){const t={},e={};for(const r of o){t[r]=n[r],n[r]+=this.elementCount(i.geometry.geometry,r);const o=i.targetRanges[r];o.from=t[r],o.to=n[r],e[r]=o}this._writeGeometry(i.geometry,c,t,e)}for(const l of o){const t=i.acquire(0,n[l]);this._setTargetSubData(l,r,this._targetStrideBytes(l),t,u,a[l]),i.release(t)}return n}updateInstance(t,e){const{targetBuffers:r}=this,o={},s={};let a=0;for(const i of r){const e=this._targetStrideBytes(i);o[i]=this.elementCount(t.geometry.geometry,i)*e,s[i]=a,a+=w(o[i])}const n=d(a),f={},u={};for(const i of r)u[i]=0,f[i]=this._targetLayout(i)?.createView(n.buffer,s[i]);this._writeGeometry(t.geometry,f,u,t.targetRanges);for(const i of r)this._setTargetSubData(i,e,this._targetStrideBytes(i),t.targetRanges[i],n,s[i])}updateInstancesMetal(t){const{targetBuffers:e}=this;for(const[r,o]of t){const t={};for(const r of e)t[r]=i.acquire(1/0,-1/0);for(const r of o)for(const o of e){const e=t[o],s=r.targetRanges[o];e.from=Math.min(e.from,s.from),e.to=Math.max(e.to,s.to)}this.writeInstanceRangeMetal(t,r.instances.values(),r);for(const r of e)i.release(t[r])}}_writeGeometry(t,s,a,n){const{_bufferWriter:f}=this;null!=f&&(e(h,t.transformation),h[12]-=t.localOrigin.vec3[0],h[13]-=t.localOrigin.vec3[1],h[14]-=t.localOrigin.vec3[2],r(y,h),o(y,y),f.write(h,y,t.geometry.attributes,t.geometry.olidColor,s.geometry,a.geometry,n.texture),null!=s.texture&&f.writeTextureBuffer&&f.writeTextureBuffer(h,y,t.geometry.attributes,s.texture,a.texture))}_setTargetSubData(t,e,r,o,s,a=0){if("geometry"===t){const n=e.getTargetBuffer(t);n?.setSubData(s,o.from*r,a,o.numElements*r)}else if("texture"===t){const r=e.getTargetBuffer(t);r?.setSubData(s.buffer,o.from,a,o.numElements)}}static prune(){x=new Uint8Array(_)}}const h=s(),y=s(),_=262144,B=1024,b=16777216;let x=new Uint8Array(_);function d(t){return x.byteLength<t&&(x=new Uint8Array(t)),x}function w(t){return 4*Math.ceil(t/4)}function C(e){return e<=B?B:e<_?t(e):Math.max(Math.min(Math.ceil(1.5*e/_)*_,b),e)}export{g as VaoWriter};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{BufferCache as e}from"./BufferCache.js";import{VertexBuffer as t}from"../../../../webgl/VertexBuffer.js";class s{constructor(s,r){this._rctx=s,this._layout=r,this._cache=new e(s.newCache,e=>{const s=new t(this._rctx,this._layout);return s.setSize(e),s},"VBOCache")}dispose(){this._cache.dispose()}newVbo(e){return this._cache.newBuffer(e)}deleteVbo(e){this._cache.deleteBuffer(e)}}export{s as VboCache};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import"../core/shaderLibrary/hud/AlignPixel.glsl.js";import"../core/shaderLibrary/hud/HUD.glsl.js";import"../core/shaderLibrary/hud/HUDOcclusionPass.glsl.js";import"../core/shaderLibrary/hud/HUDVisibility.glsl.js";import"../core/shaderLibrary/output/OutputHighlight.glsl.js";import"../core/shaderLibrary/output/ReadDepth.glsl.js";import"../core/shaderLibrary/shading/PositionOutsideClipSpace.js";import"../core/shaderLibrary/shading/VisualVariables.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/ScreenSizePerspective.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2PassUniform.js";import"../core/shaderModules/Float4BindUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DBindUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/ShaderBuilder.js";import"../../../../webscene/support/AlphaCutoff.js";export{b as build,c as calculateAnchorPosition}from"../../../../chunks/HUDMaterial.glsl.js";
2
+ import"../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import"../core/shaderLibrary/hud/AlignPixel.glsl.js";import"../core/shaderLibrary/hud/HUD.glsl.js";import"../core/shaderLibrary/hud/HUDOcclusionPass.glsl.js";import"../core/shaderLibrary/hud/HUDVisibility.glsl.js";import"../core/shaderLibrary/output/OutputHighlight.glsl.js";import"../core/shaderLibrary/output/ReadDepth.glsl.js";import"../core/shaderLibrary/shading/PositionOutsideClipSpace.js";import"../core/shaderLibrary/shading/VisualVariables.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/ScreenSizePerspective.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2PassUniform.js";import"../core/shaderModules/Float4BindUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DBindUniform.js";import"../core/shaderModules/Texture2DPassUniform.js";import"./alphaCutoff.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build,c as calculateAnchorPosition}from"../../../../chunks/HUDMaterial.glsl.js";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../../../webgl/ShaderBuilder.js";import"../../../../webscene/support/AlphaCutoff.js";export{b as build}from"../../../../chunks/MeasurementArrow.glsl.js";
2
+ import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"./alphaCutoff.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../chunks/MeasurementArrow.glsl.js";
@@ -1,14 +1,14 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{isColor as o}from"../core/shaderLibrary/ShaderOutput.js";import{Emissions as r}from"../core/shaderLibrary/output/Emissions.glsl.js";import{OutputHighlight as l}from"../core/shaderLibrary/output/OutputHighlight.glsl.js";import{ColorConversion as i}from"../core/shaderLibrary/util/ColorConversion.glsl.js";import{If as a,glsl as s}from"../core/shaderModules/glsl.js";import{alphaCutoff as t}from"../../../../webscene/support/AlphaCutoff.js";function e(e,n){e.include(l,n),e.include(r,n),e.fragment.include(i);const{output:f,oitPass:u,hasEmission:m,discardInvisibleFragments:d,oitPremultipliedAlpha:p,snowCover:c}=n,g=9===f,C=o(f)&&1===u,h=o(f)&&2===u,v=o(f)&&1!==u;let b=0;(v||C)&&e.outputs.add("fragColor","vec4",b++),m&&e.outputs.add("fragEmission","vec4",b++),C&&e.outputs.add("fragAlpha","float",b++),e.fragment.code.add(s`
3
- void outputColorHighlightOLID(vec4 finalColor, vec3 emissiveSymbolColor ${a(c,", float snow")}) {
4
- ${a(g,"finalColor.a = 1.0;")}
5
- ${a(d,`if (finalColor.a < ${s.float(t)}) { discard; }`)}
2
+ import{isColor as o}from"../core/shaderLibrary/ShaderOutput.js";import{Emissions as r}from"../core/shaderLibrary/output/Emissions.glsl.js";import{OutputHighlight as l}from"../core/shaderLibrary/output/OutputHighlight.glsl.js";import{ColorConversion as i}from"../core/shaderLibrary/util/ColorConversion.glsl.js";import{If as a,glsl as s}from"../core/shaderModules/glsl.js";import{alphaCutoff as t}from"./alphaCutoff.glsl.js";function e(e,n){e.include(l,n),e.include(r,n),e.fragment.include(i);const{output:f,oitPass:u,hasEmission:m,discardInvisibleFragments:d,oitPremultipliedAlpha:p,snowCover:g}=n,C=9===f,c=o(f)&&1===u,h=o(f)&&2===u,v=o(f)&&1!==u;let b=0;(v||c)&&e.outputs.add("fragColor","vec4",b++),m&&e.outputs.add("fragEmission","vec4",b++),c&&e.outputs.add("fragAlpha","float",b++),e.fragment.include(t),e.fragment.code.add(s`
3
+ void outputColorHighlightOLID(vec4 finalColor, vec3 emissiveSymbolColor ${a(g,", float snow")}) {
4
+ ${a(C,"finalColor.a = 1.0;")}
5
+ ${a(d,"if (finalColor.a < alphaCutoff) { discard; }")}
6
6
 
7
- ${a(C,`${a(p,"fragColor = finalColor;","fragColor = premultiplyAlpha(finalColor);")}\n fragAlpha = finalColor.a;`)}
7
+ ${a(c,`${a(p,"fragColor = finalColor;","fragColor = premultiplyAlpha(finalColor);")}\n fragAlpha = finalColor.a;`)}
8
8
  ${a(h&&p&&d,"finalColor.rgb /= finalColor.a;")}
9
9
  ${a(v,"fragColor = finalColor;")}
10
- ${a(m,`fragEmission = ${a(c,"mix(finalColor.a * getEmissions(emissiveSymbolColor), vec4(0.0), snow);","finalColor.a * getEmissions(emissiveSymbolColor);")}`)}
10
+ ${a(m,`fragEmission = ${a(g,"mix(finalColor.a * getEmissions(emissiveSymbolColor), vec4(0.0), snow);","finalColor.a * getEmissions(emissiveSymbolColor);")}`)}
11
11
  calculateOcclusionAndOutputHighlight();
12
- ${a(g,"outputObjectAndLayerIdColor();")}
12
+ ${a(C,"outputObjectAndLayerIdColor();")}
13
13
  }
14
14
  `)}export{e as outputColorHighlightOLID};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../core/shaderLibrary/Offset.glsl.js";import"../core/shaderLibrary/ShaderOutput.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/attributes/InstanceColor.glsl.js";import"../core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import"../core/shaderLibrary/attributes/MaskedColor.glsl.js";import"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import"../core/shaderLibrary/attributes/SymbolColor.glsl.js";import"../core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import"../core/shaderLibrary/attributes/VertexColor.glsl.js";import"../core/shaderLibrary/attributes/VerticalOffset.glsl.js";import"../core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import"../core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import"../core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import"../core/shaderLibrary/shading/MainLighting.glsl.js";import"../core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import"../core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import"../core/shaderLibrary/shading/VisualVariables.glsl.js";import"../core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import"../core/shaderLibrary/util/MixExternalColor.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float3PassUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../effects/weather/SnowCover.glsl.js";import"../materials/internal/MaterialUtil.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";import"../../../../webscene/support/AlphaCutoff.js";export{b as build}from"../../../../chunks/RealisticTree.glsl.js";
2
+ import"../core/shaderLibrary/Offset.glsl.js";import"../core/shaderLibrary/ShaderOutput.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/attributes/InstanceColor.glsl.js";import"../core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import"../core/shaderLibrary/attributes/MaskedColor.glsl.js";import"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import"../core/shaderLibrary/attributes/SymbolColor.glsl.js";import"../core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import"../core/shaderLibrary/attributes/VertexColor.glsl.js";import"../core/shaderLibrary/attributes/VerticalOffset.glsl.js";import"../core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import"../core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import"../core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import"../core/shaderLibrary/shading/MainLighting.glsl.js";import"../core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import"../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import"../core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import"../core/shaderLibrary/shading/VisualVariables.glsl.js";import"../core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import"../core/shaderLibrary/util/MixExternalColor.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float3PassUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../effects/weather/SnowCover.glsl.js";import"../materials/internal/MaterialUtil.js";import"./alphaCutoff.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../chunks/RealisticTree.glsl.js";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import"../core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import"../core/shaderLibrary/shading/LineStipple.glsl.js";import"../core/shaderLibrary/shading/MarkerSizing.glsl.js";import"../core/shaderLibrary/shading/PiUtils.glsl.js";import"../core/shaderLibrary/shading/PositionOutsideClipSpace.js";import"../core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/NoPerspective.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2BindUniform.js";import"../core/shaderModules/Float4BindUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatBindUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Matrix4BindUniform.js";import"./AnimatedLine.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";import"../../../../webscene/support/AlphaCutoff.js";export{b as build,r as ribbonlineNumRoundJoinSubdivisions}from"../../../../chunks/RibbonLine.glsl.js";
2
+ import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import"../core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import"../core/shaderLibrary/shading/LineStipple.glsl.js";import"../core/shaderLibrary/shading/MarkerSizing.glsl.js";import"../core/shaderLibrary/shading/PiUtils.glsl.js";import"../core/shaderLibrary/shading/PositionOutsideClipSpace.js";import"../core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/NoPerspective.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float2BindUniform.js";import"../core/shaderModules/Float4BindUniform.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatBindUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Matrix4BindUniform.js";import"./alphaCutoff.glsl.js";import"./AnimatedLine.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build,r as ribbonlineNumRoundJoinSubdivisions}from"../../../../chunks/RibbonLine.glsl.js";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import"../../../../core/libs/gl-matrix-2/math/mat4.js";import"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import"../../../../core/libs/gl-matrix-2/math/vec3.js";import"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import"../core/shaderLibrary/ForwardLinearDepth.glsl.js";import"../core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import"../core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import"../core/shaderLibrary/attributes/VertexTangent.glsl.js";import"../core/shaderLibrary/output/OutputDepth.glsl.js";import"../core/shaderLibrary/output/OutputHighlight.glsl.js";import"../core/shaderLibrary/output/OutputHighlightOverlay.js";import"../core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import"../core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import"../core/shaderLibrary/shading/MainLighting.glsl.js";import"../core/shaderLibrary/shading/NormalUtils.glsl.js";import"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import"../core/shaderLibrary/terrain/Overlay.glsl.js";import"../core/shaderLibrary/terrain/TerrainTexture.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float3BindUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Matrix4DrawUniform.js";import"../core/shaderModules/Texture2DBindUniform.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";import"../../../../webscene/support/AlphaCutoff.js";export{T as TerrainPassParameters,b as build}from"../../../../chunks/Terrain.glsl.js";
2
+ import"../../../../core/libs/gl-matrix-2/math/mat4.js";import"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import"../../../../core/libs/gl-matrix-2/math/vec3.js";import"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import"../core/shaderLibrary/ForwardLinearDepth.glsl.js";import"../core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import"../core/shaderLibrary/Slice.glsl.js";import"../core/shaderLibrary/Transform.glsl.js";import"../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import"../core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import"../core/shaderLibrary/attributes/VertexTangent.glsl.js";import"../core/shaderLibrary/output/OutputDepth.glsl.js";import"../core/shaderLibrary/output/OutputHighlight.glsl.js";import"../core/shaderLibrary/output/OutputHighlightOverlay.js";import"../core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import"../core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import"../core/shaderLibrary/shading/MainLighting.glsl.js";import"../core/shaderLibrary/shading/NormalUtils.glsl.js";import"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import"../core/shaderLibrary/terrain/Overlay.glsl.js";import"../core/shaderLibrary/terrain/TerrainTexture.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float3BindUniform.js";import"../core/shaderModules/glsl.js";import"../core/shaderModules/Matrix4DrawUniform.js";import"../core/shaderModules/Texture2DBindUniform.js";import"./alphaCutoff.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{T as TerrainPassParameters,b as build}from"../../../../chunks/Terrain.glsl.js";
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
+ import{alphaCutoff as o}from"../../../../webscene/support/AlphaCutoff.js";function t(t){t.constants.add("alphaCutoff","float",o)}export{t as alphaCutoff};