@arcgis/core 5.2.0-next.40 → 5.2.0-next.42

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 (634) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/02ab09285a5c4ca98066.js +1 -0
  3. package/assets/esri/core/workers/chunks/0646524250bb9fe82935.js +1 -0
  4. package/assets/esri/core/workers/chunks/0a50efb07eee36237e21.js +1 -0
  5. package/assets/esri/core/workers/chunks/0a98a13418f53082ca7a.js +1 -0
  6. package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +1 -0
  7. package/assets/esri/core/workers/chunks/0ae35b02dda9b9662560.js +1 -0
  8. package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +1 -0
  9. package/assets/esri/core/workers/chunks/{542d8a6c415098b9857c.js → 0da4816c11b45b4a6289.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{8a39dd585742960d3ca2.js → 0dcfd82a2669df6eb5a0.js} +1 -1
  11. package/assets/esri/core/workers/chunks/0f19bc532be24ca64755.js +1 -0
  12. package/assets/esri/core/workers/chunks/0f674c625f24ac73e25a.js +1 -0
  13. package/assets/esri/core/workers/chunks/11a3aa43fb940c21f148.js +1 -0
  14. package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +1 -0
  15. package/assets/esri/core/workers/chunks/1276df03201c1b855fee.js +1 -0
  16. package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +1 -0
  17. package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +1 -0
  18. package/assets/esri/core/workers/chunks/15de305ac3d6433748e7.js +1 -0
  19. package/assets/esri/core/workers/chunks/18d874739ee9ffad7480.js +1 -0
  20. package/assets/esri/core/workers/chunks/1dc1bfb3425665f560e4.js +1 -0
  21. package/assets/esri/core/workers/chunks/{1cd8dff4373494b01ad4.js → 1e342d532925569daadb.js} +1 -1
  22. package/assets/esri/core/workers/chunks/1f118d85d8271ad7690b.js +1 -0
  23. package/assets/esri/core/workers/chunks/1fece9757de7c10d1e9f.js +1 -0
  24. package/assets/esri/core/workers/chunks/{a2e754df3215e8b00a8f.js → 2015f4def2ef201bdab8.js} +1 -1
  25. package/assets/esri/core/workers/chunks/23570397304969f724b3.js +1 -0
  26. package/assets/esri/core/workers/chunks/24c0b3586bb6500eda53.js +2 -0
  27. package/assets/esri/core/workers/chunks/26e7884d8639df4d994b.js +1 -0
  28. package/assets/esri/core/workers/chunks/26fdc8382e009672924e.js +1 -0
  29. package/assets/esri/core/workers/chunks/{96860b6035e0b06672dd.js → 272c8ab189217240d05f.js} +1 -1
  30. package/assets/esri/core/workers/chunks/2791f3fe16ca5ee2f39a.js +1 -0
  31. package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +1 -0
  32. package/assets/esri/core/workers/chunks/284e88805184334396fe.js +1 -0
  33. package/assets/esri/core/workers/chunks/28bc5e8e82f188b30eb9.js +1 -0
  34. package/assets/esri/core/workers/chunks/2a4868acd546312aa6d8.js +1 -0
  35. package/assets/esri/core/workers/chunks/2d7cfc68a38dabd8898a.js +1 -0
  36. package/assets/esri/core/workers/chunks/2da337d7fd9295f6b967.js +1 -0
  37. package/assets/esri/core/workers/chunks/2e79fb1b8445b2091cdb.js +1 -0
  38. package/assets/esri/core/workers/chunks/2f29f08cddd5add9388e.js +1 -0
  39. package/assets/esri/core/workers/chunks/30c53a7e1ad5aa52f2f3.js +1 -0
  40. package/assets/esri/core/workers/chunks/31c4db1eac8f765bb93f.js +1 -0
  41. package/assets/esri/core/workers/chunks/321dbc60f44819c2b4de.js +1 -0
  42. package/assets/esri/core/workers/chunks/32fb597aef66c444758f.js +1 -0
  43. package/assets/esri/core/workers/chunks/34fcb776e4de1d870bbd.js +30 -0
  44. package/assets/esri/core/workers/chunks/354199a41de44902de84.js +1 -0
  45. package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +1 -0
  46. package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +1 -0
  47. package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +1 -0
  48. package/assets/esri/core/workers/chunks/{ed1d4ebf487c7dcd5c33.js → 37a8cfec11057947b45f.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{2b2b042a6d6949b06127.js → 381790e1f3df05c7eb68.js} +1 -1
  50. package/assets/esri/core/workers/chunks/383304d33b496c5d8baa.js +1 -0
  51. package/assets/esri/core/workers/chunks/{4e28f49d0be20ea50fd7.js → 383392c63202ac044b6c.js} +1 -1
  52. package/assets/esri/core/workers/chunks/394716bd1ecfd638d708.js +2 -0
  53. package/assets/esri/core/workers/chunks/399e23d777a043efa9f1.js +1 -0
  54. package/assets/esri/core/workers/chunks/3aacb935d632834d4154.js +1 -0
  55. package/assets/esri/core/workers/chunks/3c8e98cf23ad8ef12fcb.js +1 -0
  56. package/assets/esri/core/workers/chunks/4129b27fcd4103cdc499.js +1 -0
  57. package/assets/esri/core/workers/chunks/44e64186318728d1be51.js +1 -0
  58. package/assets/esri/core/workers/chunks/474ea8c97d101e41b3f5.js +1 -0
  59. package/assets/esri/core/workers/chunks/475c60ed8785d07911c6.js +1 -0
  60. package/assets/esri/core/workers/chunks/{c7662455252b48531da1.js → 484b3e2a220c440ccbb4.js} +1 -1
  61. package/assets/esri/core/workers/chunks/4d4710d57c72ec75cccc.js +1 -0
  62. package/assets/esri/core/workers/chunks/4e1b087453fc5e20e961.js +1 -0
  63. package/assets/esri/core/workers/chunks/4e94793aab42ebd251ca.js +1 -0
  64. package/assets/esri/core/workers/chunks/4f59357f535f30a6b5cc.js +1 -0
  65. package/assets/esri/core/workers/chunks/509cfac9e5d86a8ee449.js +1 -0
  66. package/assets/esri/core/workers/chunks/510acf2e8781be9b0dba.js +1 -0
  67. package/assets/esri/core/workers/chunks/5133083222588799493f.js +1 -0
  68. package/assets/esri/core/workers/chunks/52c4b4dabcb0d162be72.js +1 -0
  69. package/assets/esri/core/workers/chunks/{697e0ce10d77b90d4fee.js → 538fe46dfd685a490e23.js} +1 -1
  70. package/assets/esri/core/workers/chunks/5441f96cdd0660229efe.js +1 -0
  71. package/assets/esri/core/workers/chunks/551d0c5432f7a08dea77.js +1 -0
  72. package/assets/esri/core/workers/chunks/55924fb0de05e727f5e3.js +1 -0
  73. package/assets/esri/core/workers/chunks/55af58b6dff52dc040fe.js +2 -0
  74. package/assets/esri/core/workers/chunks/56bbde1dff96b423fbb9.js +1 -0
  75. package/assets/esri/core/workers/chunks/57824ecc10b25e3ad794.js +1 -0
  76. package/assets/esri/core/workers/chunks/{9ba705a6ddabca0f77b1.js → 580451761cadfe308919.js} +1 -1
  77. package/assets/esri/core/workers/chunks/590e977f8eeb379b86c8.js +1398 -0
  78. package/assets/esri/core/workers/chunks/5923ebadd4f75be2c9cc.js +1 -0
  79. package/assets/esri/core/workers/chunks/5b18696109fe84a1010a.js +2 -0
  80. package/assets/esri/core/workers/chunks/{db96a0c66578b2d1b715.js → 5b30231ae0a8f4b8435f.js} +1 -1
  81. package/assets/esri/core/workers/chunks/{77a4f6f224d7ca4b69f4.js → 5bf4ab72b9634b06cc5d.js} +1 -1
  82. package/assets/esri/core/workers/chunks/5ce168ae45ab7e7a71d1.js +1 -0
  83. package/assets/esri/core/workers/chunks/{7b1678dcf62481469544.js → 5dc17b76c6ecc24e7b9a.js} +1 -1
  84. package/assets/esri/core/workers/chunks/5e35828216020f33e26b.js +1 -0
  85. package/assets/esri/core/workers/chunks/5f0d6c853873a7f32527.js +1 -0
  86. package/assets/esri/core/workers/chunks/5fe9eea35ddb428efd8b.js +1 -0
  87. package/assets/esri/core/workers/chunks/6010b7be978698a642d0.js +1 -0
  88. package/assets/esri/core/workers/chunks/613e799377bdb767c955.js +1 -0
  89. package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +1 -0
  90. package/assets/esri/core/workers/chunks/632ab11cdd4b0d9a5cc5.js +1 -0
  91. package/assets/esri/core/workers/chunks/64247e439ef3e1f712e9.js +1 -0
  92. package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +1 -0
  93. package/assets/esri/core/workers/chunks/67468c50ecb1fbedda87.js +1 -0
  94. package/assets/esri/core/workers/chunks/6b0acd1a7dd74a7367e0.js +1 -0
  95. package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +1 -0
  96. package/assets/esri/core/workers/chunks/6e45d0db97ffa4509177.js +1 -0
  97. package/assets/esri/core/workers/chunks/6f408397e2c8a2ea9805.js +1 -0
  98. package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +1 -0
  99. package/assets/esri/core/workers/chunks/705d6b108fd121cea887.js +1 -0
  100. package/assets/esri/core/workers/chunks/71ce1009dadcae8f8094.js +1 -0
  101. package/assets/esri/core/workers/chunks/72fe7fb03c156f26a589.js +1 -0
  102. package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +1 -0
  103. package/assets/esri/core/workers/chunks/7684f0c771d312e05bb4.js +680 -0
  104. package/assets/esri/core/workers/chunks/79b857bb301f9c4169d6.js +1 -0
  105. package/assets/esri/core/workers/chunks/79c0a966f7d11d3c217f.js +1 -0
  106. package/assets/esri/core/workers/chunks/7a818499c1079906c2d7.js +1 -0
  107. package/assets/esri/core/workers/chunks/7ac47a9ad244100bc3b1.js +1 -0
  108. package/assets/esri/core/workers/chunks/7b862a074816c099b9ff.js +1 -0
  109. package/assets/esri/core/workers/chunks/7baa363b3b0a442a63d2.js +1 -0
  110. package/assets/esri/core/workers/chunks/7cc729b57a6a52c8ac68.js +1 -0
  111. package/assets/esri/core/workers/chunks/{4abe820bbe4f7ffccc09.js → 7df795bc4fa1d433463b.js} +1 -1
  112. package/assets/esri/core/workers/chunks/7f7a76f5fef25049fbf8.js +1 -0
  113. package/assets/esri/core/workers/chunks/7fa9dc39bf0a7a6fdc1f.js +1 -0
  114. package/assets/esri/core/workers/chunks/821176ee3be724621bb0.js +1 -0
  115. package/assets/esri/core/workers/chunks/825eb845216762a1ed2f.js +1 -0
  116. package/assets/esri/core/workers/chunks/82f4aa0533db009b11d8.js +2 -0
  117. package/assets/esri/core/workers/chunks/{2a344bca6837ca3b5c41.js.LICENSE.txt → 82f4aa0533db009b11d8.js.LICENSE.txt} +0 -6
  118. package/assets/esri/core/workers/chunks/830d1a7dee43422507ab.js +1 -0
  119. package/assets/esri/core/workers/chunks/835643f716f7058a2722.js +1 -0
  120. package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +1 -0
  121. package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +1 -0
  122. package/assets/esri/core/workers/chunks/893ffc38e1a43de5b63d.js +1 -0
  123. package/assets/esri/core/workers/chunks/{93df864c2e829f0fd5ce.js → 8a1970e68bc1e833cb7f.js} +1 -1
  124. package/assets/esri/core/workers/chunks/{684c9b4bd9590d2db12f.js → 8a410edcdf74ba957159.js} +1 -1
  125. package/assets/esri/core/workers/chunks/8b73694d5a97638a3a61.js +1 -0
  126. package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +1 -0
  127. package/assets/esri/core/workers/chunks/{6ef3b8d67b498d655a99.js → 8c5e65982c3f9295e844.js} +1 -1
  128. package/assets/esri/core/workers/chunks/8cb2fe91d1d8f49c14f8.js +1 -0
  129. package/assets/esri/core/workers/chunks/{1961b59756933e0a82f2.js → 8dcc6c19d5b3a5ac5512.js} +1 -1
  130. package/assets/esri/core/workers/chunks/8dee03779b569f233daf.js +1 -0
  131. package/assets/esri/core/workers/chunks/8ec5e470583b75fceae1.js +1 -0
  132. package/assets/esri/core/workers/chunks/8f2fecd8a0a972d68590.js +1 -0
  133. package/assets/esri/core/workers/chunks/9073b0f0ec93d6e243b9.js +1 -0
  134. package/assets/esri/core/workers/chunks/90ace5f9b4af1beea6bf.js +1 -0
  135. package/assets/esri/core/workers/chunks/934044f2ef6ce199b399.js +1 -0
  136. package/assets/esri/core/workers/chunks/94719ac469dadc4c05dc.js +1 -0
  137. package/assets/esri/core/workers/chunks/94e9cf8e729ec36de5be.js +1 -0
  138. package/assets/esri/core/workers/chunks/96d5fed0235558c0e348.js +1 -0
  139. package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +1 -0
  140. package/assets/esri/core/workers/chunks/9902fcd2070c8eb6d043.js +1 -0
  141. package/assets/esri/core/workers/chunks/99772ce7e628364434fa.js +1 -0
  142. package/assets/esri/core/workers/chunks/{b1a0eb6598309e11337f.js → 99e3aa4832ed87474ab4.js} +1 -1
  143. package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +1 -0
  144. package/assets/esri/core/workers/chunks/9a97f6cda2f36941efae.js +1 -0
  145. package/assets/esri/core/workers/chunks/9b1199104a6822ab7340.js +1 -0
  146. package/assets/esri/core/workers/chunks/9ceeae787dc7c194d60e.js +1 -0
  147. package/assets/esri/core/workers/chunks/9ebc98746b1f085b82b7.js +1 -0
  148. package/assets/esri/core/workers/chunks/9ee3741eef73f3edb18b.js +1 -0
  149. package/assets/esri/core/workers/chunks/9fb87a7dba62b527c0ba.js +1 -0
  150. package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +1 -0
  151. package/assets/esri/core/workers/chunks/a183b77854f5b42c1a86.js +1 -0
  152. package/assets/esri/core/workers/chunks/a23f4d8e7c372f5fb6d7.js +1 -0
  153. package/assets/esri/core/workers/chunks/a25f51d2d3ff6b9af7ca.js +1 -0
  154. package/assets/esri/core/workers/chunks/a27172dacdb85a774c4b.js +1 -0
  155. package/assets/esri/core/workers/chunks/a27cdf4c29dd50a6dab1.js +1 -0
  156. package/assets/esri/core/workers/chunks/a294dd12b5c708ce04af.js +1 -0
  157. package/assets/esri/core/workers/chunks/a3c882fe7599dc0f4f27.js +1 -0
  158. package/assets/esri/core/workers/chunks/a90f7b1c6c69b6033b4c.js +1 -0
  159. package/assets/esri/core/workers/chunks/a9c641bcdef161c754bf.js +1 -0
  160. package/assets/esri/core/workers/chunks/a9d391071803b1e9e8a0.js +1 -0
  161. package/assets/esri/core/workers/chunks/aaa66a04b882b0ba2961.js +1 -0
  162. package/assets/esri/core/workers/chunks/ae50b2d5e63f62c088d2.js +1 -0
  163. package/assets/esri/core/workers/chunks/af3ac4bed43e901b59c7.js +1 -0
  164. package/assets/esri/core/workers/chunks/af97e19516dbbcfb5286.js +1 -0
  165. package/assets/esri/core/workers/chunks/aff0e7761276036e029d.js +1 -0
  166. package/assets/esri/core/workers/chunks/b23d1e10fc4161d1f3eb.js +1 -0
  167. package/assets/esri/core/workers/chunks/b32bdf5730953c2fb16b.js +1 -0
  168. package/assets/esri/core/workers/chunks/b3f1a442d6b7826e917f.js +1 -0
  169. package/assets/esri/core/workers/chunks/b4047333265a2665aef9.js +1 -0
  170. package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +1 -0
  171. package/assets/esri/core/workers/chunks/{5c63b38160c7d063b8af.js → b780514be87a22b49b01.js} +1 -1
  172. package/assets/esri/core/workers/chunks/b792857a178da2dd77d6.js +1 -0
  173. package/assets/esri/core/workers/chunks/b819a9187426d0c146df.js +1 -0
  174. package/assets/esri/core/workers/chunks/{1d92da90fbbc3f98b201.js → b8d788e110c212a879ab.js} +1 -1
  175. package/assets/esri/core/workers/chunks/b94cd7eac5ff4a78dd5b.js +1 -0
  176. package/assets/esri/core/workers/chunks/b9d6f89f9b8e9d1bc787.js +1 -0
  177. package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +1 -0
  178. package/assets/esri/core/workers/chunks/{bc547cf814d6703cef59.js → bb95922cd4631d6f17fb.js} +1 -1
  179. package/assets/esri/core/workers/chunks/bcb5017500d144b73908.js +1 -0
  180. package/assets/esri/core/workers/chunks/bd862382f72ebd446b46.js +1 -0
  181. package/assets/esri/core/workers/chunks/bdd19dab276d20d5381a.js +1 -0
  182. package/assets/esri/core/workers/chunks/bee5e738ecf8680909c4.js +1 -0
  183. package/assets/esri/core/workers/chunks/{9be4438ce2c7180adadf.js → bf287f0e2ecb4532dc00.js} +1 -1
  184. package/assets/esri/core/workers/chunks/{5115059b012ef84407cf.js → bfb6566c27c09deb0929.js} +1 -1
  185. package/assets/esri/core/workers/chunks/c055c16379f5bb56e930.js +1 -0
  186. package/assets/esri/core/workers/chunks/c13e55b9efb0b532f7ee.js +1 -0
  187. package/assets/esri/core/workers/chunks/c1845682cc9a5aac8703.js +261 -0
  188. package/assets/esri/core/workers/chunks/c369d4266f38e9ea6592.js +1 -0
  189. package/assets/esri/core/workers/chunks/c3fae4f4522604a9c17e.js +1 -0
  190. package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +1 -0
  191. package/assets/esri/core/workers/chunks/c50e4e8c6188e64e7d45.js +1 -0
  192. package/assets/esri/core/workers/chunks/c838cc1c786368b78598.js +1 -0
  193. package/assets/esri/core/workers/chunks/c8db0a4fb5bc982dc9fc.js +1 -0
  194. package/assets/esri/core/workers/chunks/{82adfa2dbd40e1becaf4.js → c97451f75c23be979476.js} +1 -1
  195. package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +1 -0
  196. package/assets/esri/core/workers/chunks/ca419858910af5505d3d.js +1 -0
  197. package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +1 -0
  198. package/assets/esri/core/workers/chunks/{034dd8ee5152a12412cd.js → cba3316910ff088f4d77.js} +1 -1
  199. package/assets/esri/core/workers/chunks/cc414fd2e313d89d524d.js +1 -0
  200. package/assets/esri/core/workers/chunks/{7b8466f892a38a53c600.js → cce83896093279c70449.js} +1 -1
  201. package/assets/esri/core/workers/chunks/cda04571d7623c17ada2.js +1 -0
  202. package/assets/esri/core/workers/chunks/cea4b18e7f83c02922b1.js +1 -0
  203. package/assets/esri/core/workers/chunks/cf03d391d50a4c7aca4f.js +1 -0
  204. package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +1 -0
  205. package/assets/esri/core/workers/chunks/d082de5dd83bd73d209b.js +1 -0
  206. package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +1 -0
  207. package/assets/esri/core/workers/chunks/d36f17d32c654b1ac7fa.js +1 -0
  208. package/assets/esri/core/workers/chunks/d36fba71c52ea4e71546.js +1 -0
  209. package/assets/esri/core/workers/chunks/{18f980465db5a86153d1.js → d37a72111dffc4c4db70.js} +1 -1
  210. package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +1 -0
  211. package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +1 -0
  212. package/assets/esri/core/workers/chunks/d5561dff043789494845.js +1 -0
  213. package/assets/esri/core/workers/chunks/d66d58ed5d66520ab1bf.js +1 -0
  214. package/assets/esri/core/workers/chunks/d79ce047afbc034f6008.js +1 -0
  215. package/assets/esri/core/workers/chunks/d847c3cb2043a983145b.js +1 -0
  216. package/assets/esri/core/workers/chunks/d849bdaf5bdfdc37531a.js +1 -0
  217. package/assets/esri/core/workers/chunks/da6134c7883531f21afe.js +1 -0
  218. package/assets/esri/core/workers/chunks/{c48dfda8dcb9551606fb.js → dad39ddf0f8dfb0bef47.js} +1 -1
  219. package/assets/esri/core/workers/chunks/dadefe369f49e89a2610.js +1 -0
  220. package/assets/esri/core/workers/chunks/dccb46c7dce68528c72b.js +1 -0
  221. package/assets/esri/core/workers/chunks/ddafe402f1bc9e8285ef.js +1 -0
  222. package/assets/esri/core/workers/chunks/de9573871f64c01e9f01.js +1 -0
  223. package/assets/esri/core/workers/chunks/dedf678490572c500a19.js +30 -0
  224. package/assets/esri/core/workers/chunks/df174346a7e9b629a392.js +1 -0
  225. package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +1 -0
  226. package/assets/esri/core/workers/chunks/dfbdc72c7ea137e3841d.js +1 -0
  227. package/assets/esri/core/workers/chunks/e21b3490bfce75405e55.js +1 -0
  228. package/assets/esri/core/workers/chunks/e2c9393bec747f7876bb.js +1 -0
  229. package/assets/esri/core/workers/chunks/e3e966777f18164afcd8.js +1 -0
  230. package/assets/esri/core/workers/chunks/e4a2eefffe16cd5bb20f.js +1 -0
  231. package/assets/esri/core/workers/chunks/{d0983cc19d19c19c3478.js → e4aacfc1617ccf60bd5a.js} +1 -1
  232. package/assets/esri/core/workers/chunks/{3a526e1d18490b99332f.js → e5bb7ee670a3ba5ba3fe.js} +1 -1
  233. package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +1 -0
  234. package/assets/esri/core/workers/chunks/{757982a73174aa7ab0d1.js → e6b5c015205d38abe037.js} +1 -1
  235. package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +1 -0
  236. package/assets/esri/core/workers/chunks/e94f2d6037fba042dc6e.js +1 -0
  237. package/assets/esri/core/workers/chunks/e9511627418c6864148a.js +1 -0
  238. package/assets/esri/core/workers/chunks/ec1a2e68957fae48e60b.js +30 -0
  239. package/assets/esri/core/workers/chunks/ec2e0b2e31fd53b81d0a.js +1 -0
  240. package/assets/esri/core/workers/chunks/ed552941eca621a51f16.js +1 -0
  241. package/assets/esri/core/workers/chunks/ee58f4bbc0a1f7d03df0.js +1 -0
  242. package/assets/esri/core/workers/chunks/f04cb48fc73635d0572f.js +1 -0
  243. package/assets/esri/core/workers/chunks/f06f591680c9e93e69f6.js +1 -0
  244. package/assets/esri/core/workers/chunks/f1d3cf674b6bea89e122.js +1 -0
  245. package/assets/esri/core/workers/chunks/f2ab8e49c7f17f488aa8.js +1 -0
  246. package/assets/esri/core/workers/chunks/{6a51499c6623ddce5f00.js → f2adf1227a795604d3b8.js} +1 -1
  247. package/assets/esri/core/workers/chunks/{57c003c6745d450558a7.js → f4aed2b6e92bd0474069.js} +1 -1
  248. package/assets/esri/core/workers/chunks/f4eda59ec1e816ecc827.js +1 -0
  249. package/assets/esri/core/workers/chunks/f5d7f69047e1b1116202.js +1 -0
  250. package/assets/esri/core/workers/chunks/f5d809d30cbb56be852d.js +1 -0
  251. package/assets/esri/core/workers/chunks/{2d92f0042facb55edcff.js → f65adaaa33d9f3b131f6.js} +1 -1
  252. package/assets/esri/core/workers/chunks/f8f0de841be17cd05c8f.js +1 -0
  253. package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +1 -0
  254. package/assets/esri/core/workers/chunks/fb34d6d96c8c0d53fcf6.js +1 -0
  255. package/assets/esri/core/workers/chunks/fb51f823b25c827c6b29.js +1 -0
  256. package/assets/esri/core/workers/chunks/fba8065a3a6fbd877e23.js +1 -0
  257. package/assets/esri/core/workers/chunks/fd47ee8598e37fea03fe.js +1 -0
  258. package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +1 -0
  259. package/assets/esri/core/workers/chunks/ff089723a27859fe18d1.js +1 -0
  260. package/assets/esri/layers/raster/formats/lerc-wasm.wasm +0 -0
  261. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
  262. package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
  263. package/assets/esri/themes/base/_core.scss +0 -6
  264. package/assets/esri/themes/dark/main.css +1 -1
  265. package/assets/esri/themes/light/main.css +1 -1
  266. package/assets/esri/themes/light/view.css +1 -1
  267. package/chunks/CutFillMinMaxDepth.glsl.js +2 -0
  268. package/chunks/CutFillTotalDepth.glsl.js +2 -0
  269. package/chunks/EdgeShader.glsl.js +9 -9
  270. package/chunks/GaussianSplat.glsl.js +1 -1
  271. package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
  272. package/chunks/arcgis-knowledge-client-core.js +1 -1
  273. package/chunks/cameraUtilsSpherical.js +1 -1
  274. package/config.js +1 -1
  275. package/editing/geometry/coordUtils.js +1 -1
  276. package/geohash/geohashUtils.js +1 -1
  277. package/geometry/support/aaBoundingRect.js +1 -1
  278. package/geometry/support/quantizationUtils.js +1 -1
  279. package/geometry/support/sphere.js +1 -1
  280. package/interfaces.d.ts +5 -0
  281. package/intl/date.js +1 -1
  282. package/kernel.js +1 -1
  283. package/layers/AnnotationFeatureLayer.d.ts +13 -3
  284. package/layers/DimensionFeatureLayer.d.ts +10 -3
  285. package/layers/graphics/featureConversionUtils.js +1 -1
  286. package/layers/graphics/sources/support/sourceUtils.js +1 -1
  287. package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
  288. package/layers/raster/formats/Lerc.js +1 -1
  289. package/layers/raster/formats/RasterCodec.js +1 -1
  290. package/layers/support/fieldUtils.js +1 -1
  291. package/package.json +3 -3
  292. package/support/revision.js +1 -1
  293. package/views/2d/engine/vectorTiles/GeometryUtils.js +1 -1
  294. package/views/2d/engine/webgl/Painter.js +1 -1
  295. package/views/2d/engine/webgl/definitions.js +1 -1
  296. package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
  297. package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
  298. package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
  299. package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
  300. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  301. package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
  302. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/BitBlitShader.js +2 -0
  303. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/DebugOverlayShader.js +2 -0
  304. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HighlightShader.js +2 -0
  305. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/WorldExtentStencilShader.js +2 -0
  306. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  307. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  308. package/views/2d/engine/webgl/shaderGraph/techniques/utility/BitBlitTechnique.js +2 -0
  309. package/views/2d/engine/webgl/shaderGraph/techniques/utility/DebugOverlayTechnique.js +2 -0
  310. package/views/2d/engine/webgl/shaderGraph/techniques/utility/HighlightTechnique.js +2 -0
  311. package/views/2d/engine/webgl/shaderGraph/techniques/utility/WorldExtentClipTechnique.js +2 -0
  312. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  313. package/views/2d/layers/features/FeatureContainer.js +1 -1
  314. package/views/2d/layers/support/DebugOverlay.js +1 -1
  315. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  316. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  317. package/views/3d/layers/I3SMeshView3D.js +1 -1
  318. package/views/3d/layers/SceneLayerWorker.js +1 -1
  319. package/views/3d/layers/SceneLayerWorkerHandle.js +1 -1
  320. package/views/3d/layers/i3s/I3SNode.js +1 -1
  321. package/views/3d/layers/i3s/SphereCone.js +1 -1
  322. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  323. package/views/3d/support/cameraUtilsSpherical.js +1 -1
  324. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  325. package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
  326. package/views/3d/terrain/OverlayRenderer.js +1 -1
  327. package/views/3d/webgl/RenderCamera.js +1 -1
  328. package/views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js +2 -2
  329. package/views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.js +1 -1
  330. package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
  331. package/views/3d/webgl-engine/effects/clouds/CloudsParameters.js +1 -1
  332. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  333. package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
  334. package/views/3d/webgl-engine/effects/laserlines/LaserLineRenderer.js +1 -1
  335. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  336. package/views/3d/webgl-engine/lib/CutFillComputation.js +1 -1
  337. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  338. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  339. package/views/3d/webgl-engine/lib/IntersectorInterfaces.js +1 -1
  340. package/views/3d/webgl-engine/lib/Octree.js +1 -1
  341. package/views/3d/webgl-engine/lib/PolygonIntersections2D.js +2 -0
  342. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  343. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  344. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  345. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/AdjustProjectedPosition.glsl.js +1 -1
  346. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/DiscardNonSilhouetteEdges.glsl.js +1 -1
  347. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  348. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
  349. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/EdgeUtil.glsl.js +1 -1
  350. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/LineAmplitude.glsl.js +1 -1
  351. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/LineOffset.glsl.js +1 -1
  352. package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/UnpackAttributes.glsl.js +1 -1
  353. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  354. package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
  355. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  356. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  357. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
  358. package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
  359. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  360. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  361. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  362. package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
  363. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  364. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  365. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  366. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  367. package/views/3d/webgl-engine/materials/TriangleMaterial.js +1 -1
  368. package/views/3d/webgl-engine/materials/renderers/BufferRange.js +1 -1
  369. package/views/3d/webgl-engine/materials/renderers/VaoWriter.js +1 -1
  370. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  371. package/views/3d/webgl-engine/shaders/CutFillMinMaxDepth.glsl.js +2 -0
  372. package/views/3d/webgl-engine/shaders/CutFillMinMaxDepthTechnique.js +2 -0
  373. package/views/3d/webgl-engine/shaders/{CutFillDepth.glsl.js → CutFillTotalDepth.glsl.js} +1 -1
  374. package/views/3d/webgl-engine/shaders/CutFillTotalDepthTechnique.js +2 -0
  375. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +1 -1
  376. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
  377. package/views/Viewport2DMixin.js +1 -1
  378. package/views/input/BrowserEventSource.js +1 -1
  379. package/views/input/InputManager.js +1 -1
  380. package/views/interactive/snapping/snappingUtils.js +1 -1
  381. package/views/support/euclideanLengthMeasurementUtils.js +1 -1
  382. package/views/webgl/VertexAttributeLayouts.js +1 -1
  383. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  384. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  385. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  386. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  387. package/widgets/BatchAttributeForm/inputs/support/multipleChoiceInputUtils.js +1 -1
  388. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  389. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  390. package/widgets/Legend/support/relationshipRampUtils.js +1 -1
  391. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  392. package/widgets/OrientedImageryViewer/utils.js +1 -1
  393. package/widgets/Sketch.js +1 -1
  394. package/assets/esri/core/workers/chunks/02b043a3c5fa8bcb4c5b.js +0 -1
  395. package/assets/esri/core/workers/chunks/03437a8ef35c200dbf17.js +0 -1
  396. package/assets/esri/core/workers/chunks/0603cbd938ab619c706b.js +0 -1
  397. package/assets/esri/core/workers/chunks/08405116b5feb2d00101.js +0 -1
  398. package/assets/esri/core/workers/chunks/0a6e03263ab0906d8bcf.js +0 -1
  399. package/assets/esri/core/workers/chunks/0af6b87a3d77bb93b893.js +0 -1
  400. package/assets/esri/core/workers/chunks/0edd250159ec259601b3.js +0 -1
  401. package/assets/esri/core/workers/chunks/0f10d7d592c36ee2d1ea.js +0 -1
  402. package/assets/esri/core/workers/chunks/0f8fcbd0650b6a924f75.js +0 -1
  403. package/assets/esri/core/workers/chunks/0f976bfb7db98c2c0e05.js +0 -1
  404. package/assets/esri/core/workers/chunks/1040bce57ea63a6dbca4.js +0 -2
  405. package/assets/esri/core/workers/chunks/10510f76f8538c2dfb84.js +0 -1
  406. package/assets/esri/core/workers/chunks/1079914101d69a40b3eb.js +0 -1
  407. package/assets/esri/core/workers/chunks/11af659688cf963ea6cd.js +0 -1
  408. package/assets/esri/core/workers/chunks/15081b361fc42f40b865.js +0 -1
  409. package/assets/esri/core/workers/chunks/1599dc5309a4e60017ce.js +0 -261
  410. package/assets/esri/core/workers/chunks/181e98399732f425305d.js +0 -1
  411. package/assets/esri/core/workers/chunks/1837f97f720d255a1694.js +0 -1
  412. package/assets/esri/core/workers/chunks/18c4c437ded8bfbd3305.js +0 -1
  413. package/assets/esri/core/workers/chunks/18f4b2099299942aaf97.js +0 -1
  414. package/assets/esri/core/workers/chunks/1958facb000b6c16bfe4.js +0 -1
  415. package/assets/esri/core/workers/chunks/196e7515a43bd0026f49.js +0 -1
  416. package/assets/esri/core/workers/chunks/1a0903b1d2d5101977c6.js +0 -1
  417. package/assets/esri/core/workers/chunks/1aa7496a7dc95aae11ac.js +0 -1
  418. package/assets/esri/core/workers/chunks/1bd49e8d2657c72bf3f9.js +0 -1
  419. package/assets/esri/core/workers/chunks/1c263ffb7144e171a64f.js +0 -1
  420. package/assets/esri/core/workers/chunks/1d524690c4b66289bd20.js +0 -1
  421. package/assets/esri/core/workers/chunks/20fa2c3d4360afa5e136.js +0 -1
  422. package/assets/esri/core/workers/chunks/210ffc448c73a7bf63aa.js +0 -1
  423. package/assets/esri/core/workers/chunks/23f81f4a3d7a983eef23.js +0 -1
  424. package/assets/esri/core/workers/chunks/2540beb53f1443a070d7.js +0 -1
  425. package/assets/esri/core/workers/chunks/25c1f5e2561986330b80.js +0 -1
  426. package/assets/esri/core/workers/chunks/2757c4bf0280e27f3484.js +0 -1
  427. package/assets/esri/core/workers/chunks/294537e1ac43e8dfeaea.js +0 -1
  428. package/assets/esri/core/workers/chunks/29a1d0659bbc5a039864.js +0 -1
  429. package/assets/esri/core/workers/chunks/29df3f829006719b2680.js +0 -1
  430. package/assets/esri/core/workers/chunks/2a344bca6837ca3b5c41.js +0 -2
  431. package/assets/esri/core/workers/chunks/2a5dbed88bbd96cfac9f.js +0 -1
  432. package/assets/esri/core/workers/chunks/2b044c8fab2055a8818d.js +0 -1
  433. package/assets/esri/core/workers/chunks/2d956dacb26d71d1c174.js +0 -1
  434. package/assets/esri/core/workers/chunks/2da797ae5af9d2ede42d.js +0 -1
  435. package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +0 -1
  436. package/assets/esri/core/workers/chunks/2e495a28494c2351837b.js +0 -1
  437. package/assets/esri/core/workers/chunks/2ef80e003b4f0393ac2e.js +0 -1
  438. package/assets/esri/core/workers/chunks/2fc3e43b64300014dddc.js +0 -1
  439. package/assets/esri/core/workers/chunks/30cf84a47ebefd180bb7.js +0 -1
  440. package/assets/esri/core/workers/chunks/314bc1b356d43bfa72a8.js +0 -1
  441. package/assets/esri/core/workers/chunks/34a024eda22d228e1fbe.js +0 -1
  442. package/assets/esri/core/workers/chunks/37e823202424c11076cb.js +0 -1
  443. package/assets/esri/core/workers/chunks/38a76bc4ef5c10ab0488.js +0 -1
  444. package/assets/esri/core/workers/chunks/390f2beee8e3f2a302e4.js +0 -1
  445. package/assets/esri/core/workers/chunks/3a76fffa2016c16d7989.js +0 -1398
  446. package/assets/esri/core/workers/chunks/3c2eb386c0165150e039.js +0 -1
  447. package/assets/esri/core/workers/chunks/3e4b379a6a197b9c4e6b.js +0 -1
  448. package/assets/esri/core/workers/chunks/3ec91474658eae87b832.js +0 -1
  449. package/assets/esri/core/workers/chunks/3eee32db0e9a5086b9a8.js +0 -1
  450. package/assets/esri/core/workers/chunks/406c7723e8db470822bf.js +0 -1
  451. package/assets/esri/core/workers/chunks/41aca863324387576cf8.js +0 -1
  452. package/assets/esri/core/workers/chunks/442424200e7475e9a08f.js +0 -1
  453. package/assets/esri/core/workers/chunks/4452fd0c59431904d533.js +0 -1
  454. package/assets/esri/core/workers/chunks/448e0596005cba9a4225.js +0 -1
  455. package/assets/esri/core/workers/chunks/4545cf12ad0824ce6b41.js +0 -1
  456. package/assets/esri/core/workers/chunks/45530a49fa1f09d1682e.js +0 -1
  457. package/assets/esri/core/workers/chunks/459e89d1b94a3b204d20.js +0 -30
  458. package/assets/esri/core/workers/chunks/45b2e58051f42ebd236e.js +0 -1
  459. package/assets/esri/core/workers/chunks/4611cf051c3c396fdf96.js +0 -1
  460. package/assets/esri/core/workers/chunks/46e3d33e44e5398221e2.js +0 -1
  461. package/assets/esri/core/workers/chunks/47656ec12401e53f4bd3.js +0 -1
  462. package/assets/esri/core/workers/chunks/47948c72bc01bd173c20.js +0 -2
  463. package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +0 -1
  464. package/assets/esri/core/workers/chunks/49713dfa4c8b788079d1.js +0 -1
  465. package/assets/esri/core/workers/chunks/4a8201e09bc3ad5cc00b.js +0 -1
  466. package/assets/esri/core/workers/chunks/4ad86d6b1be07c97b6f6.js +0 -1
  467. package/assets/esri/core/workers/chunks/4be0c64bbf2449d57ea5.js +0 -1
  468. package/assets/esri/core/workers/chunks/4d57c771af4137f74bfb.js +0 -1
  469. package/assets/esri/core/workers/chunks/4f25aac84d9eb10cac83.js +0 -1
  470. package/assets/esri/core/workers/chunks/50b34e246f8eef2f6e07.js +0 -1
  471. package/assets/esri/core/workers/chunks/514ab968c0d75062e6ab.js +0 -1
  472. package/assets/esri/core/workers/chunks/51838d55d8ec4ce70398.js +0 -1
  473. package/assets/esri/core/workers/chunks/557300ec03bae84d8afc.js +0 -1
  474. package/assets/esri/core/workers/chunks/57abf838fcff0f0e2c5e.js +0 -1
  475. package/assets/esri/core/workers/chunks/57dd017fed2943d24e3d.js +0 -1
  476. package/assets/esri/core/workers/chunks/59801b2ccaaf4b394e02.js +0 -1
  477. package/assets/esri/core/workers/chunks/5a2d2dcdfa8d958f277d.js +0 -1
  478. package/assets/esri/core/workers/chunks/5a62c9f64db4fcae5e52.js +0 -1
  479. package/assets/esri/core/workers/chunks/5aebecb5c2b3e7887127.js +0 -1
  480. package/assets/esri/core/workers/chunks/5e68b74fd548c7cdba36.js +0 -1
  481. package/assets/esri/core/workers/chunks/5f360492560ae07083a6.js +0 -1
  482. package/assets/esri/core/workers/chunks/6022f43ebd58e21c737a.js +0 -1
  483. package/assets/esri/core/workers/chunks/6048c89fc4dcd2e9988d.js +0 -1
  484. package/assets/esri/core/workers/chunks/61efc7f5fab1c2b1f764.js +0 -1
  485. package/assets/esri/core/workers/chunks/62b137a795e487fa06a1.js +0 -1
  486. package/assets/esri/core/workers/chunks/632de34ebd2f44b4423d.js +0 -1
  487. package/assets/esri/core/workers/chunks/63ca17f569407c89bde1.js +0 -30
  488. package/assets/esri/core/workers/chunks/643c7506f8fe8e06acd2.js +0 -1
  489. package/assets/esri/core/workers/chunks/6596b12bb286a0b45a68.js +0 -1
  490. package/assets/esri/core/workers/chunks/65cc9a48ac95523f7aa8.js +0 -1
  491. package/assets/esri/core/workers/chunks/661f50cb97604453f942.js +0 -1
  492. package/assets/esri/core/workers/chunks/686c1a1b794ebe1a0341.js +0 -1
  493. package/assets/esri/core/workers/chunks/6896a6dd36fa91a27151.js +0 -1
  494. package/assets/esri/core/workers/chunks/68bc674affe2f7269c40.js +0 -1
  495. package/assets/esri/core/workers/chunks/6c02493a1c1deff49c7e.js +0 -1
  496. package/assets/esri/core/workers/chunks/6cdf1db30793133294dd.js +0 -1
  497. package/assets/esri/core/workers/chunks/6ff6783f89ecd3a5e752.js +0 -1
  498. package/assets/esri/core/workers/chunks/70763c7b68d8abe8d5fe.js +0 -1
  499. package/assets/esri/core/workers/chunks/716b1f073e3cd807abd3.js +0 -1
  500. package/assets/esri/core/workers/chunks/71a3f05cb86ae2920f8d.js +0 -1
  501. package/assets/esri/core/workers/chunks/71b672259bac2befd9c7.js +0 -1
  502. package/assets/esri/core/workers/chunks/71c996e1ae84d9daddf2.js +0 -1
  503. package/assets/esri/core/workers/chunks/723bb56de2324b41df4e.js +0 -1
  504. package/assets/esri/core/workers/chunks/73f61107cb7e6d30bf03.js +0 -1
  505. package/assets/esri/core/workers/chunks/752c34cee981862add89.js +0 -1
  506. package/assets/esri/core/workers/chunks/75915f81caaf9e5345a9.js +0 -1
  507. package/assets/esri/core/workers/chunks/75baf6dff6e7658b17b3.js +0 -1
  508. package/assets/esri/core/workers/chunks/760dfd585b6c2c1937ce.js +0 -1
  509. package/assets/esri/core/workers/chunks/76449e50222111ba0eb1.js +0 -1
  510. package/assets/esri/core/workers/chunks/76789f46b2c65d219cf9.js +0 -1
  511. package/assets/esri/core/workers/chunks/76bed5497f42f23a27ed.js +0 -1
  512. package/assets/esri/core/workers/chunks/7849cf0352c0a604e164.js +0 -1
  513. package/assets/esri/core/workers/chunks/7908aed639521cf572e8.js +0 -1
  514. package/assets/esri/core/workers/chunks/7d65a8ec5e1f871b9321.js +0 -1
  515. package/assets/esri/core/workers/chunks/7e4093f42795ba2f8cfd.js +0 -1
  516. package/assets/esri/core/workers/chunks/7f849c8255140be6097f.js +0 -1
  517. package/assets/esri/core/workers/chunks/804c31973f7d116523cb.js +0 -1
  518. package/assets/esri/core/workers/chunks/81726d997a2d34449bb2.js +0 -1
  519. package/assets/esri/core/workers/chunks/81883bca8a79ee2ddb00.js +0 -1
  520. package/assets/esri/core/workers/chunks/832ecc1f7d45774c4726.js +0 -1
  521. package/assets/esri/core/workers/chunks/8461f50e9875db4ccfec.js +0 -1
  522. package/assets/esri/core/workers/chunks/8598997340682113a2a5.js +0 -1
  523. package/assets/esri/core/workers/chunks/860a0f9d20f53db1caf4.js +0 -1
  524. package/assets/esri/core/workers/chunks/867e39bb444947c93586.js +0 -1
  525. package/assets/esri/core/workers/chunks/88ec63501fa2f6fdadca.js +0 -1
  526. package/assets/esri/core/workers/chunks/8980767c5b626e4dc3b9.js +0 -1
  527. package/assets/esri/core/workers/chunks/89dd1b1acb0d69264c93.js +0 -1
  528. package/assets/esri/core/workers/chunks/8a66a3e8391206f7d8aa.js +0 -1
  529. package/assets/esri/core/workers/chunks/8a8b7ac6693bdfbebf07.js +0 -1
  530. package/assets/esri/core/workers/chunks/8ad5e80e911419c1685a.js +0 -1
  531. package/assets/esri/core/workers/chunks/8b526ca2dd6fc6a7e921.js +0 -1
  532. package/assets/esri/core/workers/chunks/8e80441eddef1b5be8b9.js +0 -1
  533. package/assets/esri/core/workers/chunks/8f16a358ed83d2264415.js +0 -1
  534. package/assets/esri/core/workers/chunks/8fce15ce4cfdccf407f3.js +0 -1
  535. package/assets/esri/core/workers/chunks/8fd63cb38036f331a803.js +0 -1
  536. package/assets/esri/core/workers/chunks/91c5205d1274c7f190d5.js +0 -1
  537. package/assets/esri/core/workers/chunks/92341f36a8b15f34bcca.js +0 -1
  538. package/assets/esri/core/workers/chunks/937cf55b3b9d324eea73.js +0 -1
  539. package/assets/esri/core/workers/chunks/93d4bda22bde33fafa57.js +0 -1
  540. package/assets/esri/core/workers/chunks/9639b1dd27ccc17ee21e.js +0 -1
  541. package/assets/esri/core/workers/chunks/966d002acec8c72be56a.js +0 -1
  542. package/assets/esri/core/workers/chunks/986d8c3907aeeb18c4f6.js +0 -1
  543. package/assets/esri/core/workers/chunks/98e489c2b85feded7776.js +0 -1
  544. package/assets/esri/core/workers/chunks/9aef0b87f471626abd66.js +0 -1
  545. package/assets/esri/core/workers/chunks/9ba9a3705623679bc305.js +0 -1
  546. package/assets/esri/core/workers/chunks/a188d0767825d322f96d.js +0 -1
  547. package/assets/esri/core/workers/chunks/a4d3cbc02dc1186a9a6d.js +0 -1
  548. package/assets/esri/core/workers/chunks/a638de0102c3990403d1.js +0 -1
  549. package/assets/esri/core/workers/chunks/a6bda5f17fb1c03f7e4b.js +0 -1
  550. package/assets/esri/core/workers/chunks/a6dc01847f39413f78b8.js +0 -1
  551. package/assets/esri/core/workers/chunks/acc733b4881c3e4e503e.js +0 -1
  552. package/assets/esri/core/workers/chunks/b022debf9e0bc2bff0e2.js +0 -1
  553. package/assets/esri/core/workers/chunks/b09935d0105d50a0971b.js +0 -1
  554. package/assets/esri/core/workers/chunks/b12fc1b5a9da97346684.js +0 -1
  555. package/assets/esri/core/workers/chunks/b4323e69e624c6b51754.js +0 -1
  556. package/assets/esri/core/workers/chunks/b45e91249a8ea1559a2b.js +0 -1
  557. package/assets/esri/core/workers/chunks/b50a42a9f96515beb929.js +0 -1
  558. package/assets/esri/core/workers/chunks/b5141f240ca79729686d.js +0 -1
  559. package/assets/esri/core/workers/chunks/b549a4d4b1a34bee8beb.js +0 -1
  560. package/assets/esri/core/workers/chunks/bb89b6fd93513c61b2d3.js +0 -1
  561. package/assets/esri/core/workers/chunks/bc553ecc8cbcc1b02717.js +0 -1
  562. package/assets/esri/core/workers/chunks/bcba02f61cf0abcb5600.js +0 -1
  563. package/assets/esri/core/workers/chunks/bccc199af4e2e49f7acd.js +0 -1
  564. package/assets/esri/core/workers/chunks/bd0f488e228a75fbefb3.js +0 -30
  565. package/assets/esri/core/workers/chunks/bd155794e9bc16dd0474.js +0 -1
  566. package/assets/esri/core/workers/chunks/bf6ae205fbfbfcd1a0ee.js +0 -1
  567. package/assets/esri/core/workers/chunks/c148ad0ea9258046ac1f.js +0 -1
  568. package/assets/esri/core/workers/chunks/c228b058dd91bf0e1102.js +0 -1
  569. package/assets/esri/core/workers/chunks/c4e44fde4bc4ff89e2bc.js +0 -1
  570. package/assets/esri/core/workers/chunks/c4fc85281ca83af7abaf.js +0 -1
  571. package/assets/esri/core/workers/chunks/c610ccbfdb1c5b06c217.js +0 -1
  572. package/assets/esri/core/workers/chunks/c660a5a1086870a3a6b9.js +0 -1
  573. package/assets/esri/core/workers/chunks/c8b7ffc5cb3f1493129e.js +0 -1
  574. package/assets/esri/core/workers/chunks/c9057b0ad2c2bae4a8ce.js +0 -1
  575. package/assets/esri/core/workers/chunks/c93a68618674b38b932e.js +0 -1
  576. package/assets/esri/core/workers/chunks/c961aff385e38b081204.js +0 -1
  577. package/assets/esri/core/workers/chunks/cc0efa716b8414a44398.js +0 -1
  578. package/assets/esri/core/workers/chunks/cd66bd30f654fe571e57.js +0 -1
  579. package/assets/esri/core/workers/chunks/cd88e6f02bc2e5b67abf.js +0 -1
  580. package/assets/esri/core/workers/chunks/cf826787ab8d4b27ad80.js +0 -1
  581. package/assets/esri/core/workers/chunks/cfbbfa5edffa57bd3a8e.js +0 -1
  582. package/assets/esri/core/workers/chunks/d0217187aed8bb7038f4.js +0 -1
  583. package/assets/esri/core/workers/chunks/d1928a8c86a8966e5582.js +0 -1
  584. package/assets/esri/core/workers/chunks/d2745886ba5a86fd5c4c.js +0 -680
  585. package/assets/esri/core/workers/chunks/d4c341b15d9244276fb9.js +0 -1
  586. package/assets/esri/core/workers/chunks/d5faab9799891e5da5a8.js +0 -1
  587. package/assets/esri/core/workers/chunks/d811924acc9c0be95bba.js +0 -1
  588. package/assets/esri/core/workers/chunks/db90fb8ac96579259566.js +0 -1
  589. package/assets/esri/core/workers/chunks/dd0acd0f8b96839b4f24.js +0 -2
  590. package/assets/esri/core/workers/chunks/dd785e595cd08b2d6284.js +0 -1
  591. package/assets/esri/core/workers/chunks/e0b47b08ae2c36c76fa2.js +0 -1
  592. package/assets/esri/core/workers/chunks/e1ddb8e4977b317fd40c.js +0 -1
  593. package/assets/esri/core/workers/chunks/e4015870412edd69453c.js +0 -1
  594. package/assets/esri/core/workers/chunks/e7cb1b72f0b54e845741.js +0 -1
  595. package/assets/esri/core/workers/chunks/e7e7c7cbfd8542bd7a46.js +0 -1
  596. package/assets/esri/core/workers/chunks/e80376832050a4b6d28a.js +0 -1
  597. package/assets/esri/core/workers/chunks/e8a885b576da3ec145d3.js +0 -1
  598. package/assets/esri/core/workers/chunks/e95ee94027c1934086d8.js +0 -1
  599. package/assets/esri/core/workers/chunks/e961c6140c39921816a8.js +0 -1
  600. package/assets/esri/core/workers/chunks/eb7daa0f6610983ff8db.js +0 -1
  601. package/assets/esri/core/workers/chunks/eb842cf470ce28a73187.js +0 -1
  602. package/assets/esri/core/workers/chunks/eeea5710275c967e8d51.js +0 -1
  603. package/assets/esri/core/workers/chunks/ef32e454012f3b0e3f77.js +0 -1
  604. package/assets/esri/core/workers/chunks/f31a8e76f1dde23c0900.js +0 -1
  605. package/assets/esri/core/workers/chunks/f50bba74ae72c07e131a.js +0 -1
  606. package/assets/esri/core/workers/chunks/f58ddf37dee066a5c0d8.js +0 -1
  607. package/assets/esri/core/workers/chunks/f80cadcc2a588da63b38.js +0 -1
  608. package/assets/esri/core/workers/chunks/f83e3ad67b60744afd6d.js +0 -1
  609. package/assets/esri/core/workers/chunks/f859c53432f258af77e3.js +0 -2
  610. package/assets/esri/core/workers/chunks/f8bbb52b865a0a242140.js +0 -1
  611. package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +0 -1
  612. package/assets/esri/core/workers/chunks/f9592bcdd9988199a7ea.js +0 -1
  613. package/assets/esri/core/workers/chunks/fedbeb488d5d7c07c7dc.js +0 -1
  614. package/assets/esri/core/workers/chunks/ff7e1eb2366d4301d288.js +0 -1
  615. package/assets/esri/themes/base/_colorVariables.scss +0 -1
  616. package/assets/esri/themes/base/widgets/_DatePicker.scss +0 -170
  617. package/assets/esri/themes/base/widgets/_FeatureUtilityNetworkAssociationList.scss +0 -13
  618. package/assets/esri/themes/base/widgets/_TimePicker.scss +0 -15
  619. package/chunks/CutFillDepth.glsl.js +0 -2
  620. package/core/PLRUCache.js +0 -2
  621. package/views/2d/engine/webgl/BitBlitRenderer.js +0 -2
  622. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +0 -2
  623. package/views/2d/engine/webgl/effects/highlight/HighlightRenderer.js +0 -2
  624. package/views/2d/engine/webgl/shaders/BitBlitPrograms.js +0 -2
  625. package/views/2d/engine/webgl/shaders/HighlightPrograms.js +0 -2
  626. package/views/2d/engine/webgl/shaders/StencilPrograms.js +0 -2
  627. package/views/3d/webgl-engine/shaders/CutFillDepthTechnique.js +0 -2
  628. package/views/3d/webgl-engine/shaders/CutFillDepthTechniqueConfiguration.js +0 -2
  629. package/views/support/euclideanAreaMeasurementUtils.js +0 -2
  630. package/widgets/ShadowCast/ShadowVisualizationType.js +0 -2
  631. /package/assets/esri/core/workers/chunks/{47948c72bc01bd173c20.js.LICENSE.txt → 24c0b3586bb6500eda53.js.LICENSE.txt} +0 -0
  632. /package/assets/esri/core/workers/chunks/{f859c53432f258af77e3.js.LICENSE.txt → 394716bd1ecfd638d708.js.LICENSE.txt} +0 -0
  633. /package/assets/esri/core/workers/chunks/{1040bce57ea63a6dbca4.js.LICENSE.txt → 55af58b6dff52dc040fe.js.LICENSE.txt} +0 -0
  634. /package/assets/esri/core/workers/chunks/{dd0acd0f8b96839b4f24.js.LICENSE.txt → 5b18696109fe84a1010a.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../core/ObjectPool.js";import t from"../../../../core/PooledArray.js";import{lerp as n,squaredDistance as r,scale as i,add as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as o,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphereCenterRadius as h,intersectsSphere as d}from"../../../../geometry/support/frustum.js";import{wrap as u}from"../../../../geometry/support/ray.js";import{Sphere as c}from"../../../../geometry/support/sphere.js";import{rayBoxTest as l}from"./Util.js";class f{get bounds(){return this._root.bounds}get halfSize(){return this._root.halfSize}get root(){return this._root.node}get maximumObjectsPerNode(){return this._maximumObjectsPerNode}get maximumDepth(){return this._maximumDepth}get objectCount(){return this._objectCount}constructor(e,t){this.objectToBoundingSphere=e,this._maximumObjectsPerNode=10,this._maximumDepth=20,this._degenerateObjects=new Set,this._root=new m,this._objectCount=0,t&&(void 0!==t.maximumObjectsPerNode&&(this._maximumObjectsPerNode=t.maximumObjectsPerNode),void 0!==t.maximumDepth&&(this._maximumDepth=t.maximumDepth))}destroy(){this._degenerateObjects.clear(),m.clearPool(),R[0]=null,k.prune(),G.prune()}add(e){const t=Array.from(e);this._grow(t);const n=m.acquire();for(const r of t)++this._objectCount,this._isDegenerate(r)?this._degenerateObjects.add(r):(n.init(this._root),this._add(r,n));m.release(n)}remove(e,t=null){this._objectCount-=e.length;const n=m.acquire();for(const r of e){const e=t??this.objectToBoundingSphere(r);w(e.radius)?(n.init(this._root),g(r,e,n)):this._degenerateObjects.delete(r)}m.release(n),this._shrink()}update(e,t){if(!w(t.radius)&&this._isDegenerate(e))return;const n=E(e);this.remove(n,t),this.add(n)}forEachAlongRay(e,t,n){const r=u(e,t);p(this._root,e=>{if(!j(r,e))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),!0})}forEachAlongRayWithVerticalOffset(e,t,n,r){const i=u(e,t);p(this._root,e=>{if(!x(i,e,r))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),!0})}forEach(e){for(const t of this.values())e(t)}*values(){for(const e of this._nodeIteratorValues()){const t=e.node;yield*t.terminals,null!==t.residents&&(yield*t.residents)}yield*this.degenerateObjectValues()}forEachDegenerateObject(e){this._degenerateObjects.forEach(e)}*degenerateObjectValues(){yield*this._degenerateObjects.values()}findClosest(e,t,n,r=()=>!0,o=1/0){let a=1/0,u=1/0,c=null;const l=N(e,t),f=i=>{if(--o,!r(i))return;const s=this.objectToBoundingSphere(i);if(!d(n,s))return;const h=v(e,t,s.center),l=h-s.radius,f=h+s.radius;l<a&&(a=l,u=f,c=i)};return b(this._root,r=>{if(o<=0||!h(n,r.bounds.center,2*r.bounds.radius))return!1;i(I,l,2*r.halfSize),s(I,I,r.bounds.center);if(v(e,t,I)>u)return!1;const a=r.node;return a.terminals.forAll(e=>f(e)),null!==a.residents&&a.residents.forAll(e=>f(e)),!0},e,t),c}forEachInDepthRange(e,t,n,r,o,a,u){let c=-1/0,l=1/0;const f={setRange:e=>{1===n?(c=Math.max(c,e.near),l=Math.min(l,e.far)):(c=Math.max(c,-e.far),l=Math.min(l,-e.near))}};f.setRange(r);const m=v(t,n,e),_=N(t,n),p=N(t,-n),g=e=>{if(!u(e))return;const r=this.objectToBoundingSphere(e),i=v(t,n,r.center)-m,s=i-r.radius,h=i+r.radius;s>l||h<c||!d(a,r)||o(e,f)};b(this._root,e=>{if(!h(a,e.bounds.center,2*e.bounds.radius))return!1;i(I,_,2*e.halfSize),s(I,I,e.bounds.center);if(v(t,n,I)-m>l)return!1;i(I,p,2*e.halfSize),s(I,I,e.bounds.center);if(v(t,n,I)-m<c)return!1;const r=e.node;return r.terminals.forAll(e=>g(e)),null!==r.residents&&r.residents.forAll(e=>g(e)),!0},t,n)}forEachNode(e){p(this._root,t=>e(t.node,t.bounds,t.halfSize,t.depth))}forEachIntersectingFrustum(e,t,n=()=>!0){for(const r of this.intersectingFrustumValues(e,n))t(r)}*intersectingFrustumValues(e,t=()=>!0){for(const n of this._nodeIteratorValues(t=>h(e,t.bounds.center,2*t.bounds.radius))){const r=n.node;for(const n of r.terminals)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n);if(null!==r.residents)for(const n of r.residents)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n)}}*_nodeIteratorValues(e=()=>!0){yield*_(this._root,e)}forEachNeighbor(e,t){const n=t.radius,i=t.center,s=t=>{const s=this.objectToBoundingSphere(t),o=s.radius,a=n+o;return!(r(s.center,i)-a*a<=0)||e(t)};let o=!0;const a=e=>{o&&(o=s(e))};p(this._root,e=>{const t=2*e.bounds.radius,s=n+t;if(r(e.bounds.center,i)-s*s>0)return!1;const h=e.node;return h.terminals.forAll(a),o&&null!==h.residents&&h.residents.forAll(a),o}),o&&this.forEachDegenerateObject(a)}_intersectsObject(e,t){const n=this.objectToBoundingSphere(t);return!(n.radius>0)||n.intersectRay(e)}_intersectsObjectWithOffset(e,t,n){const r=this.objectToBoundingSphere(t);return!(r.radius>0)||n.applyToBoundingSphere(r).intersectRay(e)}_add(e,t){t.advanceTo(this.objectToBoundingSphere(e))?t.node.terminals.push(e):(t.node.residents.push(e),t.node.residents.length>this._maximumObjectsPerNode&&t.depth<this._maximumDepth&&this._split(t))}_split(e){const t=e.node.residents;e.node.residents=null;for(let n=0;n<t.length;n++){const r=m.acquire().init(e);this._add(t.at(n),r),m.release(r)}}_grow(e){if(y(e,e=>this.objectToBoundingSphere(e),L),w(L.radius)&&!this._fitsInsideTree(L))if(z(this._root.node))this._root.bounds.copyFrom(L),this._root.halfSize=1.25*this._root.bounds.radius,this._root.updateBoundsRadiusFromHalfSize();else{const e=this._rootBoundsForRootAsSubNode(L);this._placingRootViolatesMaxDepth(e)?this._rebuildTree(L,e):this._growRootAsSubNode(e),m.release(e)}}_rebuildTree(e,t){C.center=t.bounds.center,C.radius=t.halfSize,y([e,C],e=>e,H);const n=m.acquire().init(this._root);this._root.initFrom(null,H,H.radius),this._root.increaseHalfSize(1.25),p(n,e=>(this.add(e.node.terminals.data),null!==e.node.residents&&this.add(e.node.residents.data),!0)),m.release(n)}_placingRootViolatesMaxDepth(e){const t=Math.log(e.halfSize/this._root.halfSize)*Math.LOG2E;let n=0;return p(this._root,e=>(n=Math.max(n,e.depth),n+t<=this._maximumDepth)),n+t>this._maximumDepth}_rootBoundsForRootAsSubNode(e){const t=e.radius,n=e.center;let r=-1/0;const i=this._root.bounds.center,s=this._root.halfSize;for(let a=0;a<3;a++){const e=i[a]-s-(n[a]-t),o=n[a]+t-(i[a]+s),h=Math.max(0,Math.ceil(e/(2*s))),d=Math.max(0,Math.ceil(o/(2*s)))+1,u=2**Math.ceil(Math.log(h+d)*Math.LOG2E);r=Math.max(r,u),W[a].min=h,W[a].max=d}for(let a=0;a<3;a++){let e=W[a].min,t=W[a].max;const n=(r-(e+t))/2;e+=Math.ceil(n),t+=Math.floor(n);const o=i[a]-s-e*s*2;q.center[a]=o+(t+e)*s}const o=r*s;return q.radius=o*D,m.acquire().initFrom(null,q,o,0)}_growRootAsSubNode(e){const t=this._root.node;L.center=this._root.bounds.center,L.radius=this._root.halfSize,this._root.init(e),e.advanceTo(L,null,!0),e.node.children=t.children,e.node.residents=t.residents,e.node.terminals=t.terminals}_shrink(){for(;;){const e=this._findShrinkIndex();if(-1===e)break;this._root.advance(e),this._root.depth=0}}_findShrinkIndex(){if(0!==this._root.node.terminals.length||this._root.isLeaf())return-1;let e=null;const t=this._root.node.children;let n=0,r=0;for(;r<t.length&&null==e;)n=r++,e=t[n];for(;r<t.length;)if(t[r++])return-1;return n}_isDegenerate(e){return!w(this.objectToBoundingSphere(e).radius)}_fitsInsideTree(e){const t=this._root.bounds,n=this._root.halfSize;return e.radius<=n&&e.center[0]>=t.center[0]-n&&e.center[0]<=t.center[0]+n&&e.center[1]>=t.center[1]-n&&e.center[1]<=t.center[1]+n&&e.center[2]>=t.center[2]-n&&e.center[2]<=t.center[2]+n}_nodeToJSON(e){const t=e.children.map(e=>e?this._nodeToJSON(e):null),n=e.residents?.map(e=>this.objectToBoundingSphere(e)),r=e.terminals?.map(e=>this.objectToBoundingSphere(e));return{children:t,residents:n,terminals:r}}}class m{constructor(){this.bounds=new c,this.halfSize=0,this.initFrom(null,null,0,0)}init(e){return this.initFrom(e.node,e.bounds,e.halfSize,e.depth)}initFrom(e,t,n,r=this.depth){return this.node=null!=e?e:m.createEmptyNode(),t&&this.bounds.copyFrom(t),this.halfSize=n,this.depth=r,this}increaseHalfSize(e){this.halfSize*=e,this.updateBoundsRadiusFromHalfSize()}updateBoundsRadiusFromHalfSize(){this.bounds.radius=this.halfSize*D}advance(e){let t=this.node.children[e];t||(t=m.createEmptyNode(),this.node.children[e]=t),this.node=t,this.halfSize/=2,this.depth++;const n=A[e];return this.bounds.center[0]+=n[0]*this.halfSize,this.bounds.center[1]+=n[1]*this.halfSize,this.bounds.center[2]+=n[2]*this.halfSize,this.updateBoundsRadiusFromHalfSize(),this}advanceTo(e,t,n=!1){for(;;){if(this.isTerminalFor(e))return t?.(this,-1),!0;if(this.isLeaf()){if(!n)return t?.(this,-1),!1;this.node.residents=null}const r=this._childIndex(e);t?.(this,r),this.advance(r)}}isLeaf(){return null!=this.node.residents}isTerminalFor(e){return e.radius>this.halfSize/2}_childIndex(e){const t=this.bounds.center;return(t[0]<e.center[0]?1:0)+(t[1]<e.center[1]?2:0)+(t[2]<e.center[2]?4:0)}static createEmptyNode(){return{children:[null,null,null,null,null,null,null,null],terminals:new t({shrink:!0}),residents:new t({shrink:!0})}}static{this._pool=new e(()=>new m)}static acquire(){return m._pool.acquire()}static release(e){m._pool.release(e)}static clearPool(){m._pool.prune()}}function*_(e,t=()=>!0){const n=[m.acquire().init(e)];for(;0!==n.length;){const e=n.pop();if(t(e)){if(yield e,!e.isLeaf())for(let t=0;t<e.node.children.length;t++){e.node.children[t]&&n.push(m.acquire().init(e).advance(t))}m.release(e)}}}function p(e,t){const n=_(e,t);for(const r of n);}function b(e,t,n,r=1){let i=m.acquire().init(e);const s=[i];for(B(n,r,J);0!==s.length;){if(i=s.pop(),t(i)&&!i.isLeaf())for(let e=7;e>=0;--e){const t=J[e];i.node.children[t]&&s.push(m.acquire().init(i).advance(t))}m.release(i)}}function g(e,t,n){k.clear();const r=n.advanceTo(t,(e,t)=>{k.push(e.node),k.push(t)})?n.node.terminals:n.node.residents;if(r.removeUnordered(e),0===r.length)for(let i=k.length-2;i>=0;i-=2){if(!S(k.data[i],k.data[i+1]))break}}function S(e,n){return n>=0&&(e.children[n]=null),!!z(e)&&(null===e.residents&&(e.residents=new t({shrink:!0})),!0)}function j(e,t){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),l(e.origin,e.direction,P,V)}function x(e,t,n){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),n.applyToMinMax(P,V),l(e.origin,e.direction,P,V)}function z(e){if(0!==e.terminals.length)return!1;if(null!==e.residents)return 0===e.residents.length;for(let t=0;t<e.children.length;t++)if(e.children[t])return!1;return!0}function O(e,t){e[0]=Math.min(e[0],t.center[0]-t.radius),e[1]=Math.min(e[1],t.center[1]-t.radius),e[2]=Math.min(e[2],t.center[2]-t.radius)}function M(e,t){e[0]=Math.max(e[0],t.center[0]+t.radius),e[1]=Math.max(e[1],t.center[1]+t.radius),e[2]=Math.max(e[2],t.center[2]+t.radius)}function T(e,t,n){n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t}function y(e,t,r){P[0]=1/0,P[1]=1/0,P[2]=1/0,V[0]=-1/0,V[1]=-1/0,V[2]=-1/0;for(const n of e){const e=t(n);w(e.radius)&&(O(P,e),M(V,e))}n(r.center,P,V,.5),r.radius=Math.max(V[0]-P[0],V[1]-P[1],V[2]-P[2])/2}function B(e,t,n){if(!G.length)for(let r=0;r<8;++r)G.push({index:0,distance:0});for(let r=0;r<8;++r){const n=A[r];G.data[r].index=r,G.data[r].distance=v(e,t,n)}G.sort((e,t)=>e.distance-t.distance);for(let r=0;r<8;++r)n[r]=G.data[r].index}function N(e,t){let n,r=1/0;for(let i=0;i<8;++i){const s=v(e,t,F[i]);s<r&&(r=s,n=F[i])}return n}function v(e,t,n){return t*(e[0]*n[0]+e[1]*n[1]+e[2]*n[2])}function w(e){return!isNaN(e)&&e!==-1/0&&e!==1/0&&e>0}const A=[o(-1,-1,-1),o(1,-1,-1),o(-1,1,-1),o(1,1,-1),o(-1,-1,1),o(1,-1,1),o(-1,1,1),o(1,1,1)],F=[o(-1,-1,-1),o(-1,-1,1),o(-1,1,-1),o(-1,1,1),o(1,-1,-1),o(1,-1,1),o(1,1,-1),o(1,1,1)],D=Math.sqrt(3),R=[null];function E(e){return R[0]=e,R}const q=new c,I=a(),P=a(),V=a(),k=new t,L=new c,C=new c,H=new c,W=[{min:0,max:0},{min:0,max:0},{min:0,max:0}],G=new t,J=[0,0,0,0,0,0,0,0];export{f as Octree};
2
+ import e from"../../../../core/ObjectPool.js";import t from"../../../../core/PooledArray.js";import{lerp as n,scale as r,add as i,squaredDistance as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as o,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphereCenterRadius as h,intersectsSphere as d}from"../../../../geometry/support/frustum.js";import{wrap as c}from"../../../../geometry/support/ray.js";import{Sphere as u}from"../../../../geometry/support/sphere.js";import{rayBoxTest as l}from"./Util.js";class f{get bounds(){return this._root.bounds}get halfSize(){return this._root.halfSize}get root(){return this._root.node}get maximumObjectsPerNode(){return this._maximumObjectsPerNode}get maximumDepth(){return this._maximumDepth}get objectCount(){return this._objectCount}constructor(e,t){this.objectToBoundingSphere=e,this._maximumObjectsPerNode=10,this._maximumDepth=20,this._degenerateObjects=new Set,this._root=new m,this._objectCount=0,t&&(void 0!==t.maximumObjectsPerNode&&(this._maximumObjectsPerNode=t.maximumObjectsPerNode),void 0!==t.maximumDepth&&(this._maximumDepth=t.maximumDepth))}destroy(){this._degenerateObjects.clear(),m.clearPool(),R[0]=null,k.prune(),G.prune()}add(e){const t=Array.from(e);this._grow(t);const n=m.acquire();for(const r of t)++this._objectCount,this._isDegenerate(r)?this._degenerateObjects.add(r):(n.init(this._root),this._add(r,n));m.release(n)}remove(e,t=null){this._objectCount-=e.length;const n=m.acquire();for(const r of e){const e=t??this.objectToBoundingSphere(r);w(e.radius)?(n.init(this._root),g(r,e,n)):this._degenerateObjects.delete(r)}m.release(n),this._shrink()}update(e,t){if(!w(t.radius)&&this._isDegenerate(e))return;const n=E(e);this.remove(n,t),this.add(n)}forEachAlongRay(e,t,n){const r=c(e,t);p(this._root,e=>{if(!j(r,e))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),!0})}forEachAlongRayWithVerticalOffset(e,t,n,r){const i=c(e,t);p(this._root,e=>{if(!x(i,e,r))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),!0})}forEach(e){for(const t of this.values())e(t)}*values(){for(const e of this._nodeIteratorValues()){const t=e.node;yield*t.terminals,null!==t.residents&&(yield*t.residents)}yield*this.degenerateObjectValues()}forEachDegenerateObject(e){this._degenerateObjects.forEach(e)}*degenerateObjectValues(){yield*this._degenerateObjects.values()}findClosest(e,t,n,s=()=>!0,o=1/0){let a=1/0,c=1/0,u=null;const l=N(e,t),f=r=>{if(--o,!s(r))return;const i=this.objectToBoundingSphere(r);if(!d(n,i))return;const h=v(e,t,i.center),l=h-i.radius,f=h+i.radius;l<a&&(a=l,c=f,u=r)};return b(this._root,s=>{if(o<=0||!h(n,s.bounds.center,2*s.bounds.radius))return!1;r(I,l,2*s.halfSize),i(I,I,s.bounds.center);if(v(e,t,I)>c)return!1;const a=s.node;return a.terminals.forAll(e=>f(e)),null!==a.residents&&a.residents.forAll(e=>f(e)),!0},e,t),u}forEachInDepthRange(e,t,n,s,o,a,c){let u=-1/0,l=1/0;const f={setRange:e=>{1===n?(u=Math.max(u,e.near),l=Math.min(l,e.far)):(u=Math.max(u,-e.far),l=Math.min(l,-e.near))}};f.setRange(s);const m=v(t,n,e),_=N(t,n),p=N(t,-n),g=e=>{if(!c(e))return;const r=this.objectToBoundingSphere(e),i=v(t,n,r.center)-m,s=i-r.radius,h=i+r.radius;s>l||h<u||!d(a,r)||o(e,f)};b(this._root,e=>{if(!h(a,e.bounds.center,2*e.bounds.radius))return!1;r(I,_,2*e.halfSize),i(I,I,e.bounds.center);if(v(t,n,I)-m>l)return!1;r(I,p,2*e.halfSize),i(I,I,e.bounds.center);if(v(t,n,I)-m<u)return!1;const s=e.node;return s.terminals.forAll(e=>g(e)),null!==s.residents&&s.residents.forAll(e=>g(e)),!0},t,n)}forEachNode(e){p(this._root,t=>e(t.node,t.bounds,t.halfSize,t.depth))}forEachIntersectingFrustum(e,t,n=()=>!0){for(const r of this.intersectingFrustumValues(e,n))t(r)}*intersectingFrustumValues(e,t=()=>!0){for(const n of this._nodeIteratorValues(t=>h(e,t.bounds.center,2*t.bounds.radius))){const r=n.node;for(const n of r.terminals)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n);if(null!==r.residents)for(const n of r.residents)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n)}}*_nodeIteratorValues(e=()=>!0){yield*_(this._root,e)}forEachNeighbor(e,t){const n=t.radius,r=t.center,i=n=>{const r=this.objectToBoundingSphere(n);return!t.intersects(r)||e(n)};let o=!0;const a=e=>{o&&(o=i(e))};p(this._root,e=>{const t=2*e.bounds.radius,i=n+t;if(s(e.bounds.center,r)-i*i>0)return!1;const h=e.node;return h.terminals.forAll(a),o&&null!==h.residents&&h.residents.forAll(a),o}),o&&this.forEachDegenerateObject(a)}_intersectsObject(e,t){const n=this.objectToBoundingSphere(t);return!(n.radius>0)||n.intersectRay(e)}_intersectsObjectWithOffset(e,t,n){const r=this.objectToBoundingSphere(t);return!(r.radius>0)||n.applyToBoundingSphere(r).intersectRay(e)}_add(e,t){t.advanceTo(this.objectToBoundingSphere(e))?t.node.terminals.push(e):(t.node.residents.push(e),t.node.residents.length>this._maximumObjectsPerNode&&t.depth<this._maximumDepth&&this._split(t))}_split(e){const t=e.node.residents;e.node.residents=null;for(let n=0;n<t.length;n++){const r=m.acquire().init(e);this._add(t.at(n),r),m.release(r)}}_grow(e){if(y(e,e=>this.objectToBoundingSphere(e),L),w(L.radius)&&!this._fitsInsideTree(L))if(z(this._root.node))this._root.bounds.copyFrom(L),this._root.halfSize=1.25*this._root.bounds.radius,this._root.updateBoundsRadiusFromHalfSize();else{const e=this._rootBoundsForRootAsSubNode(L);this._placingRootViolatesMaxDepth(e)?this._rebuildTree(L,e):this._growRootAsSubNode(e),m.release(e)}}_rebuildTree(e,t){C.center=t.bounds.center,C.radius=t.halfSize,y([e,C],e=>e,H);const n=m.acquire().init(this._root);this._root.initFrom(null,H,H.radius),this._root.increaseHalfSize(1.25),p(n,e=>(this.add(e.node.terminals.data),null!==e.node.residents&&this.add(e.node.residents.data),!0)),m.release(n)}_placingRootViolatesMaxDepth(e){const t=Math.log(e.halfSize/this._root.halfSize)*Math.LOG2E;let n=0;return p(this._root,e=>(n=Math.max(n,e.depth),n+t<=this._maximumDepth)),n+t>this._maximumDepth}_rootBoundsForRootAsSubNode(e){const t=e.radius,n=e.center;let r=-1/0;const i=this._root.bounds.center,s=this._root.halfSize;for(let a=0;a<3;a++){const e=i[a]-s-(n[a]-t),o=n[a]+t-(i[a]+s),h=Math.max(0,Math.ceil(e/(2*s))),d=Math.max(0,Math.ceil(o/(2*s)))+1,c=2**Math.ceil(Math.log(h+d)*Math.LOG2E);r=Math.max(r,c),W[a].min=h,W[a].max=d}for(let a=0;a<3;a++){let e=W[a].min,t=W[a].max;const n=(r-(e+t))/2;e+=Math.ceil(n),t+=Math.floor(n);const o=i[a]-s-e*s*2;q.center[a]=o+(t+e)*s}const o=r*s;return q.radius=o*D,m.acquire().initFrom(null,q,o,0)}_growRootAsSubNode(e){const t=this._root.node;L.center=this._root.bounds.center,L.radius=this._root.halfSize,this._root.init(e),e.advanceTo(L,null,!0),e.node.children=t.children,e.node.residents=t.residents,e.node.terminals=t.terminals}_shrink(){for(;;){const e=this._findShrinkIndex();if(-1===e)break;this._root.advance(e),this._root.depth=0}}_findShrinkIndex(){if(0!==this._root.node.terminals.length||this._root.isLeaf())return-1;let e=null;const t=this._root.node.children;let n=0,r=0;for(;r<t.length&&null==e;)n=r++,e=t[n];for(;r<t.length;)if(t[r++])return-1;return n}_isDegenerate(e){return!w(this.objectToBoundingSphere(e).radius)}_fitsInsideTree(e){const t=this._root.bounds,n=this._root.halfSize;return e.radius<=n&&e.center[0]>=t.center[0]-n&&e.center[0]<=t.center[0]+n&&e.center[1]>=t.center[1]-n&&e.center[1]<=t.center[1]+n&&e.center[2]>=t.center[2]-n&&e.center[2]<=t.center[2]+n}_nodeToJSON(e){const t=e.children.map(e=>e?this._nodeToJSON(e):null),n=e.residents?.map(e=>this.objectToBoundingSphere(e)),r=e.terminals?.map(e=>this.objectToBoundingSphere(e));return{children:t,residents:n,terminals:r}}}class m{constructor(){this.bounds=new u,this.halfSize=0,this.initFrom(null,null,0,0)}init(e){return this.initFrom(e.node,e.bounds,e.halfSize,e.depth)}initFrom(e,t,n,r=this.depth){return this.node=null!=e?e:m.createEmptyNode(),t&&this.bounds.copyFrom(t),this.halfSize=n,this.depth=r,this}increaseHalfSize(e){this.halfSize*=e,this.updateBoundsRadiusFromHalfSize()}updateBoundsRadiusFromHalfSize(){this.bounds.radius=this.halfSize*D}advance(e){let t=this.node.children[e];t||(t=m.createEmptyNode(),this.node.children[e]=t),this.node=t,this.halfSize/=2,this.depth++;const n=A[e];return this.bounds.center[0]+=n[0]*this.halfSize,this.bounds.center[1]+=n[1]*this.halfSize,this.bounds.center[2]+=n[2]*this.halfSize,this.updateBoundsRadiusFromHalfSize(),this}advanceTo(e,t,n=!1){for(;;){if(this.isTerminalFor(e))return t?.(this,-1),!0;if(this.isLeaf()){if(!n)return t?.(this,-1),!1;this.node.residents=null}const r=this._childIndex(e);t?.(this,r),this.advance(r)}}isLeaf(){return null!=this.node.residents}isTerminalFor(e){return e.radius>this.halfSize/2}_childIndex(e){const t=this.bounds.center;return(t[0]<e.center[0]?1:0)+(t[1]<e.center[1]?2:0)+(t[2]<e.center[2]?4:0)}static createEmptyNode(){return{children:[null,null,null,null,null,null,null,null],terminals:new t({shrink:!0}),residents:new t({shrink:!0})}}static{this._pool=new e(()=>new m)}static acquire(){return m._pool.acquire()}static release(e){m._pool.release(e)}static clearPool(){m._pool.prune()}}function*_(e,t=()=>!0){const n=[m.acquire().init(e)];for(;0!==n.length;){const e=n.pop();if(t(e)){if(yield e,!e.isLeaf())for(let t=0;t<e.node.children.length;t++){e.node.children[t]&&n.push(m.acquire().init(e).advance(t))}m.release(e)}}}function p(e,t){const n=_(e,t);for(const r of n);}function b(e,t,n,r=1){let i=m.acquire().init(e);const s=[i];for(B(n,r,J);0!==s.length;){if(i=s.pop(),t(i)&&!i.isLeaf())for(let e=7;e>=0;--e){const t=J[e];i.node.children[t]&&s.push(m.acquire().init(i).advance(t))}m.release(i)}}function g(e,t,n){k.clear();const r=n.advanceTo(t,(e,t)=>{k.push(e.node),k.push(t)})?n.node.terminals:n.node.residents;if(r.removeUnordered(e),0===r.length)for(let i=k.length-2;i>=0;i-=2){if(!S(k.data[i],k.data[i+1]))break}}function S(e,n){return n>=0&&(e.children[n]=null),!!z(e)&&(null===e.residents&&(e.residents=new t({shrink:!0})),!0)}function j(e,t){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),l(e.origin,e.direction,P,V)}function x(e,t,n){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),n.applyToMinMax(P,V),l(e.origin,e.direction,P,V)}function z(e){if(0!==e.terminals.length)return!1;if(null!==e.residents)return 0===e.residents.length;for(let t=0;t<e.children.length;t++)if(e.children[t])return!1;return!0}function O(e,t){e[0]=Math.min(e[0],t.center[0]-t.radius),e[1]=Math.min(e[1],t.center[1]-t.radius),e[2]=Math.min(e[2],t.center[2]-t.radius)}function M(e,t){e[0]=Math.max(e[0],t.center[0]+t.radius),e[1]=Math.max(e[1],t.center[1]+t.radius),e[2]=Math.max(e[2],t.center[2]+t.radius)}function T(e,t,n){n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t}function y(e,t,r){P[0]=1/0,P[1]=1/0,P[2]=1/0,V[0]=-1/0,V[1]=-1/0,V[2]=-1/0;for(const n of e){const e=t(n);w(e.radius)&&(O(P,e),M(V,e))}n(r.center,P,V,.5),r.radius=Math.max(V[0]-P[0],V[1]-P[1],V[2]-P[2])/2}function B(e,t,n){if(!G.length)for(let r=0;r<8;++r)G.push({index:0,distance:0});for(let r=0;r<8;++r){const n=A[r];G.data[r].index=r,G.data[r].distance=v(e,t,n)}G.sort((e,t)=>e.distance-t.distance);for(let r=0;r<8;++r)n[r]=G.data[r].index}function N(e,t){let n,r=1/0;for(let i=0;i<8;++i){const s=v(e,t,F[i]);s<r&&(r=s,n=F[i])}return n}function v(e,t,n){return t*(e[0]*n[0]+e[1]*n[1]+e[2]*n[2])}function w(e){return!isNaN(e)&&e!==-1/0&&e!==1/0&&e>0}const A=[o(-1,-1,-1),o(1,-1,-1),o(-1,1,-1),o(1,1,-1),o(-1,-1,1),o(1,-1,1),o(-1,1,1),o(1,1,1)],F=[o(-1,-1,-1),o(-1,-1,1),o(-1,1,-1),o(-1,1,1),o(1,-1,-1),o(1,-1,1),o(1,1,-1),o(1,1,1)],D=Math.sqrt(3),R=[null];function E(e){return R[0]=e,R}const q=new u,I=a(),P=a(),V=a(),k=new t,L=new u,C=new u,H=new u,W=[{min:0,max:0},{min:0,max:0},{min:0,max:0}],G=new t,J=[0,0,0,0,0,0,0,0];export{f as Octree};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{fromValues as n,create as t}from"../../../../geometry/support/aaBoundingRect.js";import{screenPolygonIntersectsBounds as o,screenPolygonIntersectsTriangle as i}from"./screenPolygonOverlapUtils.js";function r(t,i,r){if(!r.visible)return null;const{boundingInfo:s}=r;if(s){const{bbMin:r,bbMax:e}=s;if(n(r[0]+i[0],r[1]+i[1],e[0]+i[0],e[1]+i[1],u),!o(t,u))return null}const c=r.positionAttribute,l=r.primitivePositionIndices;return e(t,i,0,l.length/3,l,c)}function e(n,t,o,r,e,u){const{data:p,stride:b}=u;for(let a=o;a<r;++a){const o=3*a;if(s(c,t,p,b,e[o]),s(l,t,p,b,e[o+1]),s(f,t,p,b,e[o+2]),i(n,c,l,f))return a}return null}function s(n,t,o,i,r){const e=i*r;n[0]=o[e]+t[0],n[1]=o[e+1]+t[1]}const u=t(),c=[0,0],l=[0,0],f=[0,0];export{r as intersectTriangleGeometryPolygon2D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as s}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as i,abortMaybe as r,destroyMaybe as a,releaseMaybe as n,releaseReferencedMaybe as h}from"../../../../core/maybe.js";import{throwIfAborted as o}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as l,initial as u,sync as m}from"../../../../core/reactiveUtils.js";import{signal as _}from"../../../../core/signal.js";import{property as p,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{equals as f,invert as b,multiply as g,copy as P}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as w,create as E}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as I}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as A,ZEROS as C}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as T}from"../../../../geometry/support/Indices.js";import{RenderNodeOutput as O,InternalRenderCategory as R,AllRenderNodeOutputs as S,AllInternalRenderNodeOutputs as D}from"../../webgl.js";import{minNearDistanceInMeters as N}from"../../state/NearFarHeuristic.js";import{debugFlags as F}from"../../support/debugFlags.js";import{computeShadowsEnabled as G}from"../../support/sunUtils.js";import{FBOCache as x}from"../core/FBOCache.js";import{RenderPassManager as H}from"../core/renderPasses/RenderPassManager.js";import{isColor as y}from"../core/shaderLibrary/ShaderOutput.js";import{distanceFadeEnd as v}from"../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{RenderNodes as M}from"../effects/RenderNodes.js";import{RenderPluginManager as L}from"../effects/RenderPluginManager.js";import{WeatherFader as q}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as j}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as U}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as B,renderHighlightBuffer as V}from"../effects/highlight/Highlight.js";import{OITBlend as k}from"../effects/transparency/OITBlend.js";import{AnimationTimer as W}from"./AnimationTimer.js";import{AnimationTimeStep as Q}from"./AnimationTimeStep.js";import{BoundingInfo as z}from"./BoundingInfo.js";import{Compositor as Y}from"./Compositor.js";import{DepthRange as J}from"./DepthRange.js";import{depthRangeFromScene as X}from"./depthRangeUtils.js";import{MainFramebuffer as $}from"./MainFramebuffer.js";import{NavigationDepthCache as K}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as Z}from"./OrderIndependentTransparency.js";import{RenderContext as ee,defaultRenderOccludedMask as te}from"./RenderContext.js";import{RendererBase as se}from"./RendererBase.js";import{setupFeatureDefaults as ie}from"./RenderFeature.js";import{RenderPluginInput as re}from"./RenderPluginInput.js";import{ShadowAccumulator as ae}from"./ShadowAccumulator.js";import{ShadowMap as ne}from"./ShadowMap.js";import he from"./SliceHelper.js";import{MergedRenderer as oe}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as de}from"../parts/renderUtils.js";import{RendererPerformanceInfo as le,PerformanceCategory as ue}from"../statistics/RendererPerformanceInfo.js";import{ColorAttachment1 as me,PixelType as _e,ColorAttachment2 as pe,ColorAttachment0 as ce,DrawBufferNone as fe}from"../../../webgl/enums.js";const be=has("disable-feature:async-navigation-3d-depth-readback");let ge=class extends se{constructor(e,t,s,i,r){super({stage:e}),this._techniques=s,this._rctx=i,this._requestRender=r,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new H,this._isRendering=!1,this._inGlobeView=!1,this._backgroundColor=A(0,0,0,1),this._sliceHelper=new he,this.sceneDepthRange=_(J.Infinite),this._state=_(2),this._hasGlobalIlluminationFlag=!!has("enable-feature:global-illumination"),this._hasAnimations=!1,this._animationTimestep=new Q,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=_(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new re,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(const t of Ne)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new x(i),this._compositor=new Y(i,s),this._renderStateFeatures=_(ie(e.view.qualityProfile));const a=new ne(this._fboCache,e.viewingMode);this._renderContext=new ee(this._rctx,a,s),this._framebuffer=new $(this._fboCache,this._bindParameters),this._performanceInfo=new le(this._rctx),this._blit=new U(s),this.navigationDepthCache=new K(this._rctx,this._fboCache,s,()=>this._requestRender(0)),this._shadowAccumulator=new ae(this.fboCache,s,e,(t,s,i)=>{const r=e.view.qualitySettings.maximumPixelRatio;t.shadowMap.start(t.camera,s,i,!0,r),this._renderShadowCascades(5,t.shadowMap),t.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(t.camera,t.contentCamera)},r),this._nodes=new M(this._renderContext),this._plugins=new L({renderContext:this._renderContext,techniques:s,materials:t,requestRender:r,controller:e}),this._plugins.add(this.renderPassManager),this.weatherFader=new q({view:e.view,context:this._renderContext}),this.addHandles([d(()=>e.view.state.camera,()=>r(),l),d(()=>F.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},r()},u),d(()=>e.view.environment.background?.color,e=>{const t=e?e.toUnitRGBA():C;I(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),r()},l),d(()=>e.view.state.camera.relativeElevation,e=>this._inGlobeView=(e??1/0)>=v,l),d(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},m),d(()=>this._bindParameters.clouds.data?.state,()=>r(),m),d(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,r()},u),d(()=>"sun"===e.view.environment.lighting?.type,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},l)])}destroy(){this._gpuTimerHandle=i(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator.destroy(),this._shadowAccumulator=null,this._loadEdgeViewTask=r(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,z.prune(),oe.prune(),T()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new k(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=ie(e),this._requestRender()}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,s){this._renderStateFeatures.mutate(i=>i.set(t,e,s)),this._requestRender()}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this.isFeatureEnabled(3)&&!this._inGlobeView}get hasGlobalIllumination(){return this._hasGlobalIlluminationFlag&&this.hasAmbientIllumination}get hasGlobalIlluminationHighQuality(){return this.hasGlobalIllumination&&this.isFeatureEnabled(10)}get _keepGlobalIlluminationShadingAlive(){return this._hasGlobalIlluminationFlag&&!this._inGlobeView}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){return this._plugins.emissions}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}_releaseFBOs(){this._bindParameters.hudOcclusion=n(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose(),this._bindParameters.globalIllumination=n(this._bindParameters.globalIllumination),this._bindParameters.reprojection.lastFrameDepth=n(this._bindParameters.reprojection.lastFrameDepth),this._bindParameters.reprojection.lastFrameEmission=n(this._bindParameters.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||(this._loadEdgeViewTask=s(async e=>{const{EdgeView:t}=await import("./edgeRendering/EdgeView.js");o(e);const s=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:ye(this.stage.view.resourceController)});return this.addHandles(d(()=>s.updating,()=>this._requestRender(),m)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(s)),this._edgeViewCallbacks.length=0,s})),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView(),null==this._edgeView?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&f(this._bindParameters.reprojection.matrix,w)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}modifyShadowsEnabled(){const e=this.stage.view.environmentManager.referencePositionGeographic,t=null==e||G(e[2],this.stage.viewingMode),s=this.stage.view.environment.lighting.directShadowsEnabled&&t;this._bindParameters.shadowMap.enabled!==s&&(this._bindParameters.shadowMap.enabled=s,this._requestRender(1))}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&this._shadowAccumulator.setParameters(e.shadowCast)}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn("Renderer.modify called while rendering"),!!super.commit(e,t,this._plugins.context)&&(this.updateHasFlags(),!0)}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(8&this.plugins.renderOccludedFlags)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){const has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...Te),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new W(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);const s=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==s&&(this._gpuTimerHandle=s?i(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,s=!1){try{return this._isRendering=!0,this._render(e,t,s)}catch(i){console.error(`Exception during rendering: ${i}:\n${i.stack}`)}finally{this._isRendering=!1}return new de(this._pluginInput.get(O.FINAL),null)}_render(e,t,s){const i=0===t;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=i,this._disposeBindBuffers();const{camera:r,contentCamera:a,mode:o,alignPixelEnabled:d}=e;this._state.value=o,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=d,this._bindParameters.decorations=!s,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;const l=!s||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=l?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(R.VIEWSHED),this._bindParameters.cutFillComputationEnabled=this._nodes.produces(R.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(R.CUTFILL_COLOR),this._renderOverlay(),r.setGLViewport(this._rctx);const u=this._framebuffer,m=u.initialize(r.fullWidth,r.fullHeight,this._backgroundColor),_=this._needsLastFrameColor;_?(m?.retain(_-1),m?.setName("last frame color"),this._bindParameters.reprojection.lastFrameColor=m):m?.release(),this._ensureBindParameters(r,a),this._plugins.sortTestsTransparentOrderedSlots(Re),this._plugins.prepareRender(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!s,this._shadowAccumulator.fullyRecompute=!i,this._shadowAccumulator.updateCamera(r),this._hasTransparentGeometry=this._plugins.produces(0,...we),this._precompilePrepasses(),this.performanceInfo.advance(ue.PREPARE);const p=this._computeShadowDepthRange(r);this._pluginInput.set("normals",this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(r,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),u.bind(),this._bindParameters.mainDepth=u.depth.attachment,this._precompileShaders(i),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this.hasReflections&&(this._bindParameters.depth=h(this._bindParameters.depth),this._bindParameters.reprojection.lastFrameColor=h(this._bindParameters.reprojection.lastFrameColor)),this._bindParameters.shadowMap.disposeOutput(5),u.update(e=>this._renderNodes(R.CUTFILL_COMPUTATION,e)),this._pluginInput.set(R.FOCUSAREA,this._renderFocusAreaGeometry()),u.update(e=>this._renderNodes(R.TRANSPARENT_ENVIRONMENT,e)),u.update(e=>this._renderNodes(R.VIEWSHED,e)),u.update(e=>this._renderNodes(R.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),u.update(e=>this._renderNodes(R.FOCUSAREA_COLOR,e)),u.update(e=>this._renderNodes(R.CUTFILL_COLOR,e)),this._pluginInput.release(R.FOCUSAREA),this._pluginInput.release(R.GROUND_DEPTH),u.update(e=>this._renderNodes(R.OCCLUDED,e)),this._pluginInput.set("highlights",this._renderHighlightPrepass());const c=2===t?this._renderObjectAndLayerIdColor():null;u.update(e=>this._renderNodes(O.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=n(this._bindParameters.shadowHighlight),u.update(e=>this._renderNodes(R.ANTIALIASING,e));const f=this._hasTransparentGeometry?2:1,b=this._bindParameters.emissions;let g;return this._bindParameters.emissions=0,this._hasHUDHighlights&&u.update(e=>this._renderHUD(f,e)),u.update(e=>this._renderNodes(R.HIGHLIGHT_COLOR,e)),this._hasHUDHighlights||u.update(e=>this._renderHUD(f,e)),this._bindParameters.emissions=b,u.update(e=>this._renderNodes(R.MAGNIFIER,e)),u.update(e=>this._renderNodes(O.FINAL,e)),i&&(this._blit.toFramebuffer(u.color,this._bindParameters),be||2!==o&&0!==o||this.navigationDepthCache.update(this._bindParameters,u.depth.attachment,this._renderContext.time)),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth,0!==this._emissions&&(this._bindParameters.reprojection.lastFrameEmission=u.color.obtainAttachment(me))),this._testsNeedsDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),this._releaseFBOs(),u.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd(),i||(g=u.color,g.retain(),this._releaseFBOs(),this._disposeOffscreenBuffers()),this.performanceInfo.finishFrame(),new de(g,c)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;const t=this._bindParameters;t.output=0;const s=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(t.hasOpaqueEmission,R.OPAQUE_ENVIRONMENT,R.GAUSSIAN_SPLAT,R.OPAQUE_OCCLUSION_QUERY,R.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...Ee),t.output=0,this._plugins.precompile(...Ee),this._hasTransparentGeometry){const e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(t.hasOpaqueEmission,R.FOCUSAREA),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(t.hasOpaqueEmission,R.TRANSPARENT_ENVIRONMENT,R.VIEWSHED,R.CUTFILL_COMPUTATION,R.CUTFILL_COLOR,R.LASERLINES,R.FOCUSAREA_COLOR,R.OCCLUDED,R.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0),t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=s,this._hasHighlights&&(t.highlights.forEach((e,s)=>{t.highlightLevel=s,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(t.hasOpaqueEmission,R.HIGHLIGHT_COLOR)),t.highlightMixTexture=null,this._nodes.precompile(t.hasOpaqueEmission,O.COMPOSITE,R.MAGNIFIER),this._shadowAccumulator.precompile(),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),--this._plugins.context.techniques.precompiling}_renderFocusAreaGeometry(){const e=this._nodes.produce(R.FOCUSAREA,this._pluginInput);return e&&this.performanceInfo.advance(ue.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(R.OBJECT_AND_LAYER_ID_COLOR))return null;const e=this._bindParameters.output;++this._techniques.precompiling;const{width:t,height:s}=this._framebuffer.size;let i=this.fboCache.acquire(t,s,R.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return i=this._renderNodes(R.OBJECT_AND_LAYER_ID_COLOR,i),--this._techniques.precompiling,this._bindParameters.output=e,i}finish(e){this._hasAnimations||this._animationTimestep.clear();const t=this.performanceInfo.gpuSamplingEnabled,s=0===e;if(s||t){const e=s?this.performanceInfo.elapsedTime:0;let i=0;t?i=this.performanceInfo.totalGPUTimeSampler.last:this._rctx.gl.finish();const r=Math.max(e,i);this._animationTimestep.frame(r,s)}}readAccumulatedShadow(e){return this._shadowAccumulator.readAccumulatedShadow(e[0],e[1])}readMainDepth(e,t){const{mainDepth:s,camera:i}=this._bindParameters;if(!s)return;const r=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,"linear depth");this._rctx.bindFramebuffer(r.fbo),i.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(C),this._compositor.blitDepthToLinearDepth(this._bindParameters,s),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),r.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,_e.UNSIGNED_BYTE,t),r.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){const t=this._needsEdges;if(!t)return;const{width:s,height:i}=this._framebuffer.size,r=this.fboCache.acquire(s,i,"edges");r.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(C),t.render(this._bindParameters,e),r.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,r.getTexture()),r.release(),this.performanceInfo.advance(1===e?ue.OPAQUE_EDGES:ue.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(ue.OVERLAY)}_renderShadowMap(e,t,s,i){if(!this.shadowsEnabled)return;const r=this._bindParameters.shadowMap;if(r.start(e,s,i,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,r),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);const s=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(R.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=s,r.disposeOutput(6),r.clear(),this._renderShadowCascades(7,r)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=h(this._bindParameters.depth)),this.performanceInfo.advance(R.SHADOWMAP)}_precompileShadowCascades(e){0!==this._bindParameters.shadowMap.cascades.length&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){const s=this._bindParameters.output,i=t===this._bindParameters.shadowMap&&6!==e;t.bindFramebuffer();for(const r of t.cascades)r.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(r.camera,r.camera),this.renderAllGeometry(e),i&&this._renderShadowNodes();t.finish(e),this._bindParameters.output=s}_renderShadowNodes(){const e=this._bindParameters.shadowMap.renderTarget;e&&(this._renderNodes(R.SHADOWMAP,e),this._pluginInput.set(R.SHADOWMAP,null))}get _needsLastFrameColor(){return+this.hasReflections+ +this.hasGlobalIllumination}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._shadowAccumulator.requiresDepth+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){this._bindParameters.depth=n(this._bindParameters.depth);const e=this._pluginInput.get("normals");if(e){this._pluginInput.set(R.AMBIENT_ILLUMINATION,this._hasGlobalIlluminationFlag?this._renderGlobalIllumination():this._renderSSAO());const t=this._needsDepth;t?(this._rctx.bindFramebuffer(e.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),this._bindParameters.depth=e.obtainDepthTexture(),this._bindParameters.depth?.retain(t-1),this.performanceInfo.advance(ue.DEPTH)):e.detachDepth(),this.hasAmbientIllumination&&this._pluginInput.release("normals")}else this._hasGlobalIlluminationFlag&&(this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){const e=this._needsDepth;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"geometry depth",14);this._rctx.bindFramebuffer(i.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._bindParameters.depth=i.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),i.release(),this.performanceInfo.advance(ue.DEPTH)}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||this._shadowAccumulator.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return J.Zero;const t=X(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),this._bindParameters.shadowMap.enabled&&t.union(this._nodes.queryDepthRange(R.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal)return void(this.sceneDepthRange.value=J.Infinite);if((this.stage.view.renderCoordsHelper?.getAltitude(e.eye)??0)<j)return void(this.sceneDepthRange.value=J.Infinite);const t=e.clone();t.near=N,t.far=1e10;const s=X(t,this._plugins.plugins,this.stage.layers,1);s.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(s)||(this.sceneDepthRange.value=s)}get _normalsRequired(){return this._nodes.require("normals",...S,R.VIEWSHED,R.LASERLINES)+(this.hasAmbientIllumination?1:0)}_precompilePrepasses(){this._normalsRequired?(this._precompilePlugins(4,Ie),this._needsDepth&&this._precompilePlugins(3,Ae)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(this._bindParameters.hasEmission,R.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5)),this._shadowAccumulator.active&&(this._shadowAccumulator.precompilePrepass(),this._precompileAllGeometry(5)),this.hasAmbientIllumination&&this._normalsRequired&&this._nodes.precompile(this._bindParameters.hasEmission,R.AMBIENT_ILLUMINATION)}_renderNormals(){const e=this._normalsRequired;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"normals",5);i.acquireDepth(14),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(C,!0,!0),this._bindParameters.output=4,this._plugins.render(...Ie);const r=this._nodes.optional("normals",...S,R.VIEWSHED);return i.retain(e+r-1),this.performanceInfo.advance(ue.NORMALS),i}_renderSSAO(){this._bindParameters.globalIlluminationEnabled=!1;const e=this._pluginInput.get("normals");return this.hasAmbientIllumination&&e?(this._bindParameters.ssao=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput),this._bindParameters.ssao&&this.performanceInfo.advance(ue.AMBIENT_ILLUMINATION),this._bindParameters.ssao):null}_renderGlobalIllumination(){if(!this.hasGlobalIllumination)return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive,null;const e=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput);return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIllumination=e,this._bindParameters.globalIlluminationEnabled=!0,this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?ue.AMBIENT_ILLUMINATION_HIGH_QUALITY:ue.AMBIENT_ILLUMINATION),e}_releaseGlobalIlluminationBuffers(){const e=this._bindParameters;e.reprojection.lastFrameColor=h(e.reprojection.lastFrameColor),e.reprojection.lastFrameDepth=h(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=h(e.reprojection.lastFrameEmission),e.globalIllumination=h(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){const t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...Ee),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(const s of t)this._renderContext.renderOccludedMask=s,this.precompileSlots(e,...Ce);this._renderContext.renderOccludedMask=te}renderSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.forAll(e=>{const t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...Ce),this._renderContext.renderOccludedMask=te}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...Se[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){this._precompileAllGeometry(8)}precompileCutFillOrthographicReferenceDepth(){this._precompilePlugins(9,De)}_precompilePlugins(e,t){const s=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=s}renderViewshedShadowMap(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._ensureBindParametersCamera(t,s),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillOrthographicReferenceDepth(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...De),this._ensureBindParametersCamera(t,s),t.setGLViewport(this._rctx),this._bindParameters.output=i}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;const{width:e,height:t}=this._framebuffer.size,s=this.fboCache.acquire(e,t,R.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,256),this._framebuffer.bind(),s}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...Ae)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...Pe),this._nodes.precompile(this._bindParameters.hasEmission,"opaque-color"))}_renderOpaqueGeometry(){this._plugins.render(...Pe)}_renderTransparentGeometry(){this._plugins.render(...we),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...Ee)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;const t=this._bindParameters.output,s=this._bindParameters.hudRenderStyle,i=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...Te),this._bindParameters.output=2,this._plugins.precompile(...Te),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...Te)),this._bindParameters.emissions=i,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=s}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;const s=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);const i=!!t.getTexture(me);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,s.getTexture(),i),s.release(),this.performanceInfo.advance(0===e?ue.HUD_OCCLUDED:ue.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;const{fboCache:e,_rctx:t,_bindParameters:s}=this,{width:i,height:r}=this._framebuffer.size,{highlights:a}=s,n=a.length>B?3:1,h=e.acquire(i,r,"highlights",n);h.acquireDepth(14);const o=this._plugins.produces(10,0);return o&&this._framebuffer.color.fbo&&h.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,h.fbo,1024),t.bindFramebuffer(h.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),o||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(h.fbo),V(t,e,i,r,s,()=>this._renderHighlightGeometries()),h.detachDepth(),this.performanceInfo.advance(ue.HIGHLIGHTS),h.retain(this._nodes.require("highlights",...D)+this._nodes.optional("highlights",...D)-1),h}_renderHighlightGeometries(){this._plugins.render(...Oe),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){this._shadowAccumulator.updateDepthRange(e);const t=this._shadowAccumulator.requiresDepth;this._bindParameters.output=0,this._shadowAccumulator.renderAccumulation(this._bindParameters)&&this.performanceInfo.advance(ue.ACCUMULATED_SHADOWS),this._shadowAccumulator.updateMask(),t&&(this._bindParameters.depth=h(this._bindParameters.depth))}_precompileTransparentGeometry(){y(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...we)}_renderOIT(e,t=2){const s=1===e,{width:i,height:r}=this._framebuffer.size,a=s?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),h=this._bindParameters,o=h.useFloatBlend.value?8:5,d=h.output;h.output=1;const l=s?"oit hud":"oit",u=this.fboCache.acquire(i,r,l,o).acquireColor(me,this.hasFloatBlend?7:0,"oit alpha"),m=h.hasEmission&&(0===e||1!==t);m&&u.acquireColor(pe,o,"oit emissive"),s||u.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(u.fbo),this._rctx.clearFramebuffer(Z),m&&this._rctx.clearBuffer(2,Z),a(),u.detachDepth(),h.output=2;const _=this.fboCache.acquire(i,r,s?"oit front hud":"oit front");m&&_.acquireColor(me,o,"oit front emissive"),s?_.acquireDepth(this._hudDepthFormat):_.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(_.fbo),this._rctx.clearFramebuffer(C,s),a(),_.detachDepth();const p=this._pluginsHas.occludedHudElements&&!s,c=p&&0!==h.emissions?pe:me;let f;return h.hudOcclusion=n(this._bindParameters.hudOcclusion),h.output=0,s?(f=this.fboCache.acquire(i,r,"oit composite hud"),this._rctx.bindFramebuffer(f.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(0!==h.emissions&&this._framebuffer.ensureEmissionAttachment(),p&&(this._framebuffer.color.acquireColor(c,0,"hud occlusion"),this._rctx.clearBuffer(c-ce,C)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,u,_,h,p,e,this._fboCache.debugCallback),f?.detachDepth(),s||(m&&(this._bindParameters.emissions=3),p&&(h.hudOcclusion=this._framebuffer.color.obtainAttachment(c))),_.release(),u.release(),h.output=d,f}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...Pe)||this.plugins.produces(5,...Pe)||this.plugins.produces(3,3)}_renderOpaque(){const e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(R.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));const t=this._framebuffer;t.update(t=>this._renderNodes(O.OPAQUE,t,e)),this.fboCache.debugCallback?.(O.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(R.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(R.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(R.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(R.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(R.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.VOXEL,e)),this.fboCache.debugCallback?.(R.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){const e=this._framebuffer;this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(O.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(O.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=n(this._bindParameters.ssao),e.update(e=>this._renderNodes(R.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(R.TRANSPARENT_NO_DEPTH,e.color.fbo),this._renderTransparentMaterialWithoutDepth()}_renderTransparentMaterialWithoutDepth(){if(this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){const e=this._rctx.setDrawBuffers([fe,me]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(ue.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,s=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return s&&this.performanceInfo.advance(e),t;const i=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,i.fbo),i}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){1===this.stage.viewingMode&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){const{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){null==this._ssrEnableTime&&(this._ssrEnableTime=e);const s=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=s>0?Math.min(s,e-this._ssrEnableTime)/s:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination))return void(this._reprojectionMatrix=w);const{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:s}=e,i=!s.equals(t);if(i?(b(Ge,t.viewMatrix),b(Fe,t.projectionMatrix),g(xe,Ge,Fe),g(xe,s.viewMatrix,xe),g(xe,s.projectionMatrix,xe),this._reprojectionMatrix=xe):this._reprojectionMatrix=w,this.hasGlobalIllumination){const{viewMatrix:t}=e;i?(g(He,s.viewMatrix,Ge),P(t,He)):P(t,w)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,s,i){this._bindParameters.updateLighting(e,t,s,i),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([p()],ge.prototype,"_inGlobeView",void 0),e([p({readOnly:!0})],ge.prototype,"highResolutionAtmosphere",null),e([p()],ge.prototype,"_edgeView",void 0),e([p()],ge.prototype,"updating",null),ge=e([c("esri.views.3d.webgl-engine.lib.Renderer")],ge);const Pe=[0,1,2,3],we=[7,6,4,5],Ee=[7,6],Ie=[0,1,2,4,...Ee],Ae=[3,5],Ce=[2,4,8],Te=[16,12,14,13],Oe=[4,5,2,3,0,1,...Ee],Re=[4,8,5,11],Se={0:[13],1:[12],2:[13,12],3:[13,12]},De=[0,1,...Ee],Ne=["normals","highlights"],Fe=E(),Ge=E(),xe=E(),He=E();function ye(e){return t=>e.immediate.schedule(t)}export{ge as Renderer};
2
+ import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as s}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as i,abortMaybe as r,destroyMaybe as a,releaseMaybe as n,releaseReferencedMaybe as h}from"../../../../core/maybe.js";import{throwIfAborted as o}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as l,initial as u,sync as m}from"../../../../core/reactiveUtils.js";import{signal as _}from"../../../../core/signal.js";import{property as p,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{equals as f,invert as b,multiply as g,copy as P}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as w,create as E}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as I}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as A,ZEROS as C}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as T}from"../../../../geometry/support/Indices.js";import{RenderNodeOutput as O,InternalRenderCategory as R,AllRenderNodeOutputs as S,AllInternalRenderNodeOutputs as D}from"../../webgl.js";import{minNearDistanceInMeters as N}from"../../state/NearFarHeuristic.js";import{debugFlags as F}from"../../support/debugFlags.js";import{computeShadowsEnabled as G}from"../../support/sunUtils.js";import{FBOCache as H}from"../core/FBOCache.js";import{RenderPassManager as x}from"../core/renderPasses/RenderPassManager.js";import{isColor as y}from"../core/shaderLibrary/ShaderOutput.js";import{distanceFadeEnd as v}from"../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{RenderNodes as M}from"../effects/RenderNodes.js";import{RenderPluginManager as L}from"../effects/RenderPluginManager.js";import{WeatherFader as q}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as j}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as U}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as B,renderHighlightBuffer as V}from"../effects/highlight/Highlight.js";import{OITBlend as k}from"../effects/transparency/OITBlend.js";import{AnimationTimer as W}from"./AnimationTimer.js";import{AnimationTimeStep as Q}from"./AnimationTimeStep.js";import{BoundingInfo as z}from"./BoundingInfo.js";import{Compositor as Y}from"./Compositor.js";import{DepthRange as J}from"./DepthRange.js";import{depthRangeFromScene as X}from"./depthRangeUtils.js";import{MainFramebuffer as $}from"./MainFramebuffer.js";import{NavigationDepthCache as K}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as Z}from"./OrderIndependentTransparency.js";import{RenderContext as ee,defaultRenderOccludedMask as te}from"./RenderContext.js";import{RendererBase as se}from"./RendererBase.js";import{setupFeatureDefaults as ie}from"./RenderFeature.js";import{RenderPluginInput as re}from"./RenderPluginInput.js";import{ShadowAccumulator as ae}from"./ShadowAccumulator.js";import{ShadowMap as ne}from"./ShadowMap.js";import he from"./SliceHelper.js";import{MergedRenderer as oe}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as de}from"../parts/renderUtils.js";import{RendererPerformanceInfo as le,PerformanceCategory as ue}from"../statistics/RendererPerformanceInfo.js";import{ColorAttachment1 as me,PixelType as _e,ColorAttachment2 as pe,ColorAttachment0 as ce,DrawBufferNone as fe}from"../../../webgl/enums.js";const be=has("disable-feature:async-navigation-3d-depth-readback");let ge=class extends se{constructor(e,t,s,i,r){super({stage:e}),this._techniques=s,this._rctx=i,this._requestRender=r,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new x,this._isRendering=!1,this._inGlobeView=!1,this._backgroundColor=A(0,0,0,1),this._sliceHelper=new he,this.sceneDepthRange=_(J.Infinite),this._state=_(2),this._hasGlobalIlluminationFlag=!!has("enable-feature:global-illumination"),this._hasAnimations=!1,this._animationTimestep=new Q,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=_(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new re,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(const t of Ne)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new H(i),this._compositor=new Y(i,s),this._renderStateFeatures=_(ie(e.view.qualityProfile));const a=new ne(this._fboCache,e.viewingMode);this._renderContext=new ee(this._rctx,a,s),this._framebuffer=new $(this._fboCache,this._bindParameters),this._performanceInfo=new le(this._rctx),this._blit=new U(s),this.navigationDepthCache=new K(this._rctx,this._fboCache,s,()=>this._requestRender(0)),this._shadowAccumulator=new ae(this.fboCache,s,e,(t,s,i)=>{const r=e.view.qualitySettings.maximumPixelRatio;t.shadowMap.start(t.camera,s,i,!0,r),this._renderShadowCascades(5,t.shadowMap),t.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(t.camera,t.contentCamera)},r),this._nodes=new M(this._renderContext),this._plugins=new L({renderContext:this._renderContext,techniques:s,materials:t,requestRender:r,controller:e}),this._plugins.add(this.renderPassManager),this.weatherFader=new q({view:e.view,context:this._renderContext}),this.addHandles([d(()=>e.view.state.camera,()=>r(),l),d(()=>F.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},r()},u),d(()=>e.view.environment.background?.color,e=>{const t=e?e.toUnitRGBA():C;I(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),r()},l),d(()=>e.view.state.camera.relativeElevation,e=>this._inGlobeView=(e??1/0)>=v,l),d(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},m),d(()=>this._bindParameters.clouds.data?.state,()=>r(),m),d(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,r()},u),d(()=>"sun"===e.view.environment.lighting?.type,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},l)])}destroy(){this._gpuTimerHandle=i(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator.destroy(),this._shadowAccumulator=null,this._loadEdgeViewTask=r(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,z.prune(),oe.prune(),T()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new k(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=ie(e),this._requestRender()}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,s){this._renderStateFeatures.mutate(i=>i.set(t,e,s)),this._requestRender()}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this.isFeatureEnabled(3)&&!this._inGlobeView}get hasGlobalIllumination(){return this._hasGlobalIlluminationFlag&&this.hasAmbientIllumination}get hasGlobalIlluminationHighQuality(){return this.hasGlobalIllumination&&this.isFeatureEnabled(10)}get _keepGlobalIlluminationShadingAlive(){return this._hasGlobalIlluminationFlag&&!this._inGlobeView}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){return this._plugins.emissions}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}_releaseFBOs(){this._bindParameters.hudOcclusion=n(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose(),this._bindParameters.globalIllumination=n(this._bindParameters.globalIllumination),this._bindParameters.reprojection.lastFrameDepth=n(this._bindParameters.reprojection.lastFrameDepth),this._bindParameters.reprojection.lastFrameEmission=n(this._bindParameters.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||(this._loadEdgeViewTask=s(async e=>{const{EdgeView:t}=await import("./edgeRendering/EdgeView.js");o(e);const s=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:ye(this.stage.view.resourceController)});return this.addHandles(d(()=>s.updating,()=>this._requestRender(),m)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(s)),this._edgeViewCallbacks.length=0,s})),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView(),null==this._edgeView?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&f(this._bindParameters.reprojection.matrix,w)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}modifyShadowsEnabled(){const e=this.stage.view.environmentManager.referencePositionGeographic,t=null==e||G(e[2],this.stage.viewingMode),s=this.stage.view.environment.lighting.directShadowsEnabled&&t;this._bindParameters.shadowMap.enabled!==s&&(this._bindParameters.shadowMap.enabled=s,this._requestRender(1))}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&this._shadowAccumulator.setParameters(e.shadowCast)}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn("Renderer.modify called while rendering"),!!super.commit(e,t,this._plugins.context)&&(this.updateHasFlags(),!0)}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(8&this.plugins.renderOccludedFlags)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){const has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...Te),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new W(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);const s=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==s&&(this._gpuTimerHandle=s?i(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,s=!1){try{return this._isRendering=!0,this._render(e,t,s)}catch(i){console.error(`Exception during rendering: ${i}:\n${i.stack}`)}finally{this._isRendering=!1}return new de(this._pluginInput.get(O.FINAL),null)}_render(e,t,s){const i=0===t;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=i,this._disposeBindBuffers();const{camera:r,contentCamera:a,mode:o,alignPixelEnabled:d}=e;this._state.value=o,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=d,this._bindParameters.decorations=!s,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;const l=!s||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=l?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(R.VIEWSHED),this._bindParameters.cutFillComputationEnabled=this._nodes.produces(R.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(R.CUTFILL_COLOR),this._renderOverlay(),r.setGLViewport(this._rctx);const u=this._framebuffer,m=u.initialize(r.fullWidth,r.fullHeight,this._backgroundColor),_=this._needsLastFrameColor;_?(m?.retain(_-1),m?.setName("last frame color"),this._bindParameters.reprojection.lastFrameColor=m):m?.release(),this._ensureBindParameters(r,a),this._plugins.sortTestsTransparentOrderedSlots(Re),this._plugins.prepareRender(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!s,this._shadowAccumulator.fullyRecompute=!i,this._shadowAccumulator.updateCamera(r),this._hasTransparentGeometry=this._plugins.produces(0,...we),this._precompilePrepasses(),this.performanceInfo.advance(ue.PREPARE);const p=this._computeShadowDepthRange(r);this._pluginInput.set("normals",this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(r,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),u.bind(),this._bindParameters.mainDepth=u.depth.attachment,this._precompileShaders(i),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this.hasReflections&&(this._bindParameters.depth=h(this._bindParameters.depth),this._bindParameters.reprojection.lastFrameColor=h(this._bindParameters.reprojection.lastFrameColor)),this._bindParameters.shadowMap.disposeOutput(5),u.update(e=>this._renderNodes(R.CUTFILL_COMPUTATION,e)),this._pluginInput.set(R.FOCUSAREA,this._renderFocusAreaGeometry()),u.update(e=>this._renderNodes(R.TRANSPARENT_ENVIRONMENT,e)),u.update(e=>this._renderNodes(R.VIEWSHED,e)),u.update(e=>this._renderNodes(R.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),u.update(e=>this._renderNodes(R.FOCUSAREA_COLOR,e)),u.update(e=>this._renderNodes(R.CUTFILL_COLOR,e)),this._pluginInput.release(R.FOCUSAREA),this._pluginInput.release(R.GROUND_DEPTH),u.update(e=>this._renderNodes(R.OCCLUDED,e)),this._pluginInput.set("highlights",this._renderHighlightPrepass());const c=2===t?this._renderObjectAndLayerIdColor():null;u.update(e=>this._renderNodes(O.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=n(this._bindParameters.shadowHighlight),u.update(e=>this._renderNodes(R.ANTIALIASING,e));const f=this._hasTransparentGeometry?2:1,b=this._bindParameters.emissions;let g;return this._bindParameters.emissions=0,this._hasHUDHighlights&&u.update(e=>this._renderHUD(f,e)),u.update(e=>this._renderNodes(R.HIGHLIGHT_COLOR,e)),this._hasHUDHighlights||u.update(e=>this._renderHUD(f,e)),this._bindParameters.emissions=b,u.update(e=>this._renderNodes(R.MAGNIFIER,e)),u.update(e=>this._renderNodes(O.FINAL,e)),i&&(this._blit.toFramebuffer(u.color,this._bindParameters),be||2!==o&&0!==o||this.navigationDepthCache.update(this._bindParameters,u.depth.attachment,this._renderContext.time)),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth,0!==this._emissions&&(this._bindParameters.reprojection.lastFrameEmission=u.color.obtainAttachment(me))),this._testsNeedsDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),this._releaseFBOs(),u.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd(),i||(g=u.color,g.retain(),this._releaseFBOs(),this._disposeOffscreenBuffers()),this.performanceInfo.finishFrame(),new de(g,c)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;const t=this._bindParameters;t.output=0;const s=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(t.hasOpaqueEmission,R.OPAQUE_ENVIRONMENT,R.GAUSSIAN_SPLAT,R.OPAQUE_OCCLUSION_QUERY,R.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...Ee),t.output=0,this._plugins.precompile(...Ee),this._hasTransparentGeometry){const e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(t.hasOpaqueEmission,R.FOCUSAREA),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(t.hasOpaqueEmission,R.TRANSPARENT_ENVIRONMENT,R.VIEWSHED,R.CUTFILL_COMPUTATION,R.CUTFILL_COLOR,R.LASERLINES,R.FOCUSAREA_COLOR,R.OCCLUDED,R.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0),t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=s,this._hasHighlights&&(t.highlights.forEach((e,s)=>{t.highlightLevel=s,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(t.hasOpaqueEmission,R.HIGHLIGHT_COLOR)),t.highlightMixTexture=null,this._nodes.precompile(t.hasOpaqueEmission,O.COMPOSITE,R.MAGNIFIER),this._shadowAccumulator.precompile(),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),--this._plugins.context.techniques.precompiling}_renderFocusAreaGeometry(){const e=this._nodes.produce(R.FOCUSAREA,this._pluginInput);return e&&this.performanceInfo.advance(ue.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(R.OBJECT_AND_LAYER_ID_COLOR))return null;const e=this._bindParameters.output;++this._techniques.precompiling;const{width:t,height:s}=this._framebuffer.size;let i=this.fboCache.acquire(t,s,R.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return i=this._renderNodes(R.OBJECT_AND_LAYER_ID_COLOR,i),--this._techniques.precompiling,this._bindParameters.output=e,i}finish(e){this._hasAnimations||this._animationTimestep.clear();const t=this.performanceInfo.gpuSamplingEnabled,s=0===e;if(s||t){const e=s?this.performanceInfo.elapsedTime:0;let i=0;t?i=this.performanceInfo.totalGPUTimeSampler.last:this._rctx.gl.finish();const r=Math.max(e,i);this._animationTimestep.frame(r,s)}}readAccumulatedShadow(e){return this._shadowAccumulator.readAccumulatedShadow(e[0],e[1])}readMainDepth(e,t){const{mainDepth:s,camera:i}=this._bindParameters;if(!s)return;const r=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,"linear depth");this._rctx.bindFramebuffer(r.fbo),i.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(C),this._compositor.blitDepthToLinearDepth(this._bindParameters,s),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),r.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,_e.UNSIGNED_BYTE,t),r.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){const t=this._needsEdges;if(!t)return;const{width:s,height:i}=this._framebuffer.size,r=this.fboCache.acquire(s,i,"edges");r.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(C),t.render(this._bindParameters,e),r.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,r.getTexture()),r.release(),this.performanceInfo.advance(1===e?ue.OPAQUE_EDGES:ue.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(ue.OVERLAY)}_renderShadowMap(e,t,s,i){if(!this.shadowsEnabled)return;const r=this._bindParameters.shadowMap;if(r.start(e,s,i,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,r),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);const s=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(R.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=s,r.disposeOutput(6),r.clear(),this._renderShadowCascades(7,r)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=h(this._bindParameters.depth)),this.performanceInfo.advance(R.SHADOWMAP)}_precompileShadowCascades(e){0!==this._bindParameters.shadowMap.cascades.length&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){const s=this._bindParameters.output,i=t===this._bindParameters.shadowMap&&6!==e;t.bindFramebuffer();for(const r of t.cascades)r.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(r.camera,r.camera),this.renderAllGeometry(e),i&&this._renderShadowNodes();t.finish(e),this._bindParameters.output=s}_renderShadowNodes(){const e=this._bindParameters.shadowMap.renderTarget;e&&(this._renderNodes(R.SHADOWMAP,e),this._pluginInput.set(R.SHADOWMAP,null))}get _needsLastFrameColor(){return+this.hasReflections+ +this.hasGlobalIllumination}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._shadowAccumulator.requiresDepth+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){this._bindParameters.depth=n(this._bindParameters.depth);const e=this._pluginInput.get("normals");if(e){this._pluginInput.set(R.AMBIENT_ILLUMINATION,this._hasGlobalIlluminationFlag?this._renderGlobalIllumination():this._renderSSAO());const t=this._needsDepth;t?(this._rctx.bindFramebuffer(e.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),this._bindParameters.depth=e.obtainDepthTexture(),this._bindParameters.depth?.retain(t-1),this.performanceInfo.advance(ue.DEPTH)):e.detachDepth(),this.hasAmbientIllumination&&this._pluginInput.release("normals")}else this._hasGlobalIlluminationFlag&&(this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){const e=this._needsDepth;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"geometry depth",14);this._rctx.bindFramebuffer(i.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._bindParameters.depth=i.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),i.release(),this.performanceInfo.advance(ue.DEPTH)}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||this._shadowAccumulator.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return J.Zero;const t=X(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),this._bindParameters.shadowMap.enabled&&t.union(this._nodes.queryDepthRange(R.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal)return void(this.sceneDepthRange.value=J.Infinite);if((this.stage.view.renderCoordsHelper?.getAltitude(e.eye)??0)<j)return void(this.sceneDepthRange.value=J.Infinite);const t=e.clone();t.near=N,t.far=1e10;const s=X(t,this._plugins.plugins,this.stage.layers,1);s.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(s)||(this.sceneDepthRange.value=s)}get _normalsRequired(){return this._nodes.require("normals",...S,R.VIEWSHED,R.LASERLINES)+(this.hasAmbientIllumination?1:0)}_precompilePrepasses(){this._normalsRequired?(this._precompilePlugins(4,Ie),this._needsDepth&&this._precompilePlugins(3,Ae)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(this._bindParameters.hasEmission,R.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5),this._nodes.precompile(!1,R.SHADOWMAP)),this._shadowAccumulator.active&&(this._shadowAccumulator.precompilePrepass(),this._precompileAllGeometry(5)),this.hasAmbientIllumination&&this._normalsRequired&&this._nodes.precompile(this._bindParameters.hasEmission,R.AMBIENT_ILLUMINATION)}_renderNormals(){const e=this._normalsRequired;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"normals",5);i.acquireDepth(14),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(C,!0,!0),this._bindParameters.output=4,this._plugins.render(...Ie);const r=this._nodes.optional("normals",...S,R.VIEWSHED);return i.retain(e+r-1),this.performanceInfo.advance(ue.NORMALS),i}_renderSSAO(){this._bindParameters.globalIlluminationEnabled=!1;const e=this._pluginInput.get("normals");return this.hasAmbientIllumination&&e?(this._bindParameters.ssao=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput),this._bindParameters.ssao&&this.performanceInfo.advance(ue.AMBIENT_ILLUMINATION),this._bindParameters.ssao):null}_renderGlobalIllumination(){if(!this.hasGlobalIllumination)return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive,null;const e=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput);return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIllumination=e,this._bindParameters.globalIlluminationEnabled=!0,this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?ue.AMBIENT_ILLUMINATION_HIGH_QUALITY:ue.AMBIENT_ILLUMINATION),e}_releaseGlobalIlluminationBuffers(){const e=this._bindParameters;e.reprojection.lastFrameColor=h(e.reprojection.lastFrameColor),e.reprojection.lastFrameDepth=h(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=h(e.reprojection.lastFrameEmission),e.globalIllumination=h(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){const t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...Ee),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(const s of t)this._renderContext.renderOccludedMask=s,this.precompileSlots(e,...Ce);this._renderContext.renderOccludedMask=te}renderSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.forAll(e=>{const t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...Ce),this._renderContext.renderOccludedMask=te}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...Se[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){this._precompileAllGeometry(8)}precompileCutFillOrthographicReferenceDepth(){this._precompilePlugins(9,De)}_precompilePlugins(e,t){const s=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=s}renderViewshedShadowMap(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._ensureBindParametersCamera(t,s),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillOrthographicReferenceDepth(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...De),this._ensureBindParametersCamera(t,s),t.setGLViewport(this._rctx),this._bindParameters.output=i}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;const{width:e,height:t}=this._framebuffer.size,s=this.fboCache.acquire(e,t,R.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,256),this._framebuffer.bind(),s}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...Ae)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...Pe),this._nodes.precompile(this._bindParameters.hasEmission,"opaque-color"))}_renderOpaqueGeometry(){this._plugins.render(...Pe)}_renderTransparentGeometry(){this._plugins.render(...we),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...Ee)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;const t=this._bindParameters.output,s=this._bindParameters.hudRenderStyle,i=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...Te),this._bindParameters.output=2,this._plugins.precompile(...Te),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...Te)),this._bindParameters.emissions=i,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=s}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;const s=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);const i=!!t.getTexture(me);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,s.getTexture(),i),s.release(),this.performanceInfo.advance(0===e?ue.HUD_OCCLUDED:ue.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;const{fboCache:e,_rctx:t,_bindParameters:s}=this,{width:i,height:r}=this._framebuffer.size,{highlights:a}=s,n=a.length>B?3:1,h=e.acquire(i,r,"highlights",n);h.acquireDepth(14);const o=this._plugins.produces(10,0);return o&&this._framebuffer.color.fbo&&h.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,h.fbo,1024),t.bindFramebuffer(h.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),o||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(h.fbo),V(t,e,i,r,s,()=>this._renderHighlightGeometries()),h.detachDepth(),this.performanceInfo.advance(ue.HIGHLIGHTS),h.retain(this._nodes.require("highlights",...D)+this._nodes.optional("highlights",...D)-1),h}_renderHighlightGeometries(){this._plugins.render(...Oe),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){this._shadowAccumulator.updateDepthRange(e);const t=this._shadowAccumulator.requiresDepth;this._bindParameters.output=0,this._shadowAccumulator.renderAccumulation(this._bindParameters)&&this.performanceInfo.advance(ue.ACCUMULATED_SHADOWS),this._shadowAccumulator.updateMask(),t&&(this._bindParameters.depth=h(this._bindParameters.depth))}_precompileTransparentGeometry(){y(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...we)}_renderOIT(e,t=2){const s=1===e,{width:i,height:r}=this._framebuffer.size,a=s?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),h=this._bindParameters,o=h.useFloatBlend.value?8:5,d=h.output;h.output=1;const l=s?"oit hud":"oit",u=this.fboCache.acquire(i,r,l,o).acquireColor(me,this.hasFloatBlend?7:0,"oit alpha"),m=h.hasEmission&&(0===e||1!==t);m&&u.acquireColor(pe,o,"oit emissive"),s||u.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(u.fbo),this._rctx.clearFramebuffer(Z),m&&this._rctx.clearBuffer(2,Z),a(),u.detachDepth(),h.output=2;const _=this.fboCache.acquire(i,r,s?"oit front hud":"oit front");m&&_.acquireColor(me,o,"oit front emissive"),s?_.acquireDepth(this._hudDepthFormat):_.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(_.fbo),this._rctx.clearFramebuffer(C,s),a(),_.detachDepth();const p=this._pluginsHas.occludedHudElements&&!s,c=p&&0!==h.emissions?pe:me;let f;return h.hudOcclusion=n(this._bindParameters.hudOcclusion),h.output=0,s?(f=this.fboCache.acquire(i,r,"oit composite hud"),this._rctx.bindFramebuffer(f.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(0!==h.emissions&&this._framebuffer.ensureEmissionAttachment(),p&&(this._framebuffer.color.acquireColor(c,0,"hud occlusion"),this._rctx.clearBuffer(c-ce,C)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,u,_,h,p,e,this._fboCache.debugCallback),f?.detachDepth(),s||(m&&(this._bindParameters.emissions=3),p&&(h.hudOcclusion=this._framebuffer.color.obtainAttachment(c))),_.release(),u.release(),h.output=d,f}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...Pe)||this.plugins.produces(5,...Pe)||this.plugins.produces(3,3)}_renderOpaque(){const e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(R.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));const t=this._framebuffer;t.update(t=>this._renderNodes(O.OPAQUE,t,e)),this.fboCache.debugCallback?.(O.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(R.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(R.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(R.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(R.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(R.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.VOXEL,e)),this.fboCache.debugCallback?.(R.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){const e=this._framebuffer;if(this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(O.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(O.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=n(this._bindParameters.ssao),e.update(e=>this._renderNodes(R.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(R.TRANSPARENT_NO_DEPTH,e.color.fbo),this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){const e=this._rctx.setDrawBuffers([fe,me]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(ue.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,s=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return s&&this.performanceInfo.advance(e),t;const i=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,i.fbo),i}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){1===this.stage.viewingMode&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration,this.stage.view.state.stationary),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){const{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){null==this._ssrEnableTime&&(this._ssrEnableTime=e);const s=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=s>0?Math.min(s,e-this._ssrEnableTime)/s:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination))return void(this._reprojectionMatrix=w);const{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:s}=e,i=!s.equals(t);if(i?(b(Ge,t.viewMatrix),b(Fe,t.projectionMatrix),g(He,Ge,Fe),g(He,s.viewMatrix,He),g(He,s.projectionMatrix,He),this._reprojectionMatrix=He):this._reprojectionMatrix=w,this.hasGlobalIllumination){const{viewMatrix:t}=e;i?(g(xe,s.viewMatrix,Ge),P(t,xe)):P(t,w)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,s,i){this._bindParameters.updateLighting(e,t,s,i),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([p()],ge.prototype,"_inGlobeView",void 0),e([p({readOnly:!0})],ge.prototype,"highResolutionAtmosphere",null),e([p()],ge.prototype,"_edgeView",void 0),e([p()],ge.prototype,"updating",null),ge=e([c("esri.views.3d.webgl-engine.lib.Renderer")],ge);const Pe=[0,1,2,3],we=[7,6,4,5],Ee=[7,6],Ie=[0,1,2,4,...Ee],Ae=[3,5],Ce=[2,4,8],Te=[16,12,14,13],Oe=[4,5,2,3,0,1,...Ee],Re=[4,8,5,11],Se={0:[13],1:[12],2:[13,12],3:[13,12]},De=[0,1,...Ee],Ne=["normals","highlights"],Fe=E(),Ge=E(),He=E(),xe=E();function ye(e){return t=>e.immediate.schedule(t)}export{ge as Renderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{sliceEquals as i}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{disposeMaybe as s}from"../../../../core/maybe.js";import{watch as r,sync as a}from"../../../../core/reactiveUtils.js";import{signal as o}from"../../../../core/signal.js";import{property as n,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{copy as c,equals as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ReadShadowMapPassParameters as m}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{F as _}from"../../../../chunks/FocusAreaMask.glsl.js";import{volumeToVao as d}from"../effects/focusArea/focusAreaMaskUtils.js";import{BindParameters as p}from"./BindParameters.js";import{DepthRange as f}from"./DepthRange.js";import{createQuadVAO as g}from"./glUtil3D.js";import{ShadowCastRenderer as b}from"./ShadowCastRenderer.js";import{ShadowMap as v}from"./ShadowMap.js";import{S as y}from"../../../../chunks/ShadowCastAccumulate.glsl.js";import{ShadowCastAccumulateTechnique as S}from"../shaders/ShadowCastAccumulateTechnique.js";import{ShadowCastAccumulateTechniqueConfiguration as w}from"../shaders/ShadowCastAccumulateTechniqueConfiguration.js";import{ShadowCastClearTechnique as A}from"../shaders/ShadowCastClearTechnique.js";import{ShadowCastMaskTechnique as x}from"../shaders/ShadowCastMaskTechnique.js";import{PrimitiveType as C,DepthStencilAttachment as R,PixelType as F}from"../../../webgl/enums.js";import{DisposableFramebufferObject as q}from"../../../webgl/FramebufferObject.js";import{noParameters as V}from"../../../webgl/NoParameters.js";let H=class extends t{constructor(e,t,i,s,o){super({}),this._fbos=e,this._techniques=t,this._renderToShadowMap=s,this._requestRender=o,this.fullyRecompute=!1,this._analysisVolumeGeometry=null,this._primarySet=new D(new w(0),()=>this._requestRenderIfEnabled()),this._contextSet=new D(new w(1),()=>this._requestRenderIfEnabled()),this._passParameters=new m,this._maskParameters=new _,this._volumeVao=null,this._volumeVertexCount=0,this._depthRange=f.Zero,this._enabled=!1,this._previewing=!1,this._shadowAccumulatorKey=Symbol("shadowAccumulator"),this._bindParameters=new p(e.rctx,new v(e,i.viewingMode)),this._bindParameters.shadowMap.enabled=!0,this._vao=g(e.rctx),this._accumulationRenderer=new b({view:i.view,data:this}),this._tmpReadFbo=new q(e.rctx),this.addHandles([r(()=>this._previewing,e=>{e?this._invalidateAccumulationSets():this._requestRenderIfEnabled()},a),r(()=>this._numActive,()=>this._numActiveChanged(),a)],this._shadowAccumulatorKey)}destroy(){this._disable(),this.removeHandles(this._shadowAccumulatorKey),this._fboHandle=s(this._fboHandle),this._vao=s(this._vao),this._volumeVao=s(this._volumeVao),this._tmpReadFbo=s(this._tmpReadFbo),this._bindParameters.destroy();for(const e of this._accumulationSets())e.destroy();this._contextSet=null,this._primarySet=null}*_accumulationSets(){yield this._primarySet,yield this._contextSet}get computedSamples(){return[this._primarySet.progress,this._contextSet.progress]}get shadowCastTexture(){return this._fboHandle?.getTexture()}get accumulating(){return this.active&&(this._previewing||this._refining||this.fullyRecompute)}get _refining(){return this.active&&!this._doneAccumulating&&!this._previewing}get active(){return this._enabled&&[...this._accumulationSets()].some(e=>e.active)}get canAccumulate(){return null!=this._bindParameters.depth&&this._depthRange!==f.Zero&&this._accumulationRenderer.isAboveElevationThreshold}get _doneAccumulating(){return[...this._accumulationSets()].every(e=>e.doneAccumulating)}get _numActive(){return[...this._accumulationSets()].reduce((e,t)=>e+(t.active?1:0),0)}get _colorFormat(){return 2===this._numActive?2:0}get _analysisVolume(){return this._analysisVolumeGeometry}set _analysisVolume(e){if(this._analysisVolumeGeometry===e)return;this._invalidateAccumulationSets(),this._analysisVolumeGeometry=e,this._volumeVao=s(this._volumeVao),this._volumeVertexCount=0;const t=null!=e;for(const s of this._accumulationSets())s.configuration.useMask=t;if(!t)return;const i=e.geometryVolume,{vao:r,vertexCount:a}=d(this._rctx,i);this._volumeVao=r,this._volumeVertexCount=a}get requiresDepth(){return this.accumulating||null!=this._volumeVao}renderAccumulation(e){if(!this.active)return!1;if(this._bindParameters.contentCamera=e.contentCamera,this._bindParameters.depth=e.depth,this._passParameters.origin=this._bindParameters.camera.center,!this.canAccumulate)return this._bindParameters.depth=null,!1;if(this._renderAreaMask(this._bindParameters),!this.accumulating)return this._bindParameters.depth=null,!1;(this._previewing||this.fullyRecompute)&&this._reset(),this._clearBuffersOnAccumulationStart(this._bindParameters);const t=this._accumulateSetsForRenderFrame(this._previewing&&!this.fullyRecompute,this._bindParameters);return this._bindParameters.depth=null,t}_renderAreaMask(e){const t=this._techniques.getCompiled(x),i=this._volumeVao,s=this._volumeVertexCount,r=this._fboHandle,a=this._analysisVolume;if(r?.detachDepth(),!t||!i||s<1||!r||!a)return;r.acquireDepth(14);const o=this._rctx,n=e,h=n.depth,c=this._tmpReadFbo;c.attachDepthStencil(h?.attachment),o.blitFramebuffer(c,r.fbo,256),c.detachDepthStencilTexture(),o.bindFramebuffer(r.fbo),o.setClearStencil(0),o.clear(1024),o.setViewport(0,0,n.camera.width,n.camera.height);const u=o.bindTechnique(t,n,V);this._maskParameters.origin=a.origin,u.bindDraw(n,V,this._maskParameters),o.bindVAO(i),o.drawArrays(C.TRIANGLES,0,s)}_clearBuffersOnAccumulationStart(e){if([...this._accumulationSets()].every(e=>0===e.progress))this._clearFramebuffer();else for(const t of this._accumulationSets())0===t.progress&&this._clearFramebufferForSet(this._fboHandle,t,e)}_accumulateSetsForRenderFrame(e,t){let i=!1;for(const s of this._accumulationSets())this._accumulateSet(s,e,t),i=!0;return i&&this._requestRender(),i}_accumulateSet(e,t,i){const s=t?Math.min(j,e.sampleCount)-e.progress:e.sampleCount-e.progress;for(let r=0;r<s;++r)this._accumulateShadow(e,i)}precompilePrepass(){if(this.accumulating){for(const e of this._accumulationSets())this._techniques.precompile(S,e.configuration),this._techniques.precompile(A,e.configuration);this._techniques.precompile(x)}}precompile(){this._accumulationRenderer.precompile()}updateMask(){this._accumulationRenderer.setStencilMask(this._fboHandle?.getAttachment(R))}setParameters(e){void 0!==e.previewing&&(this._previewing=e.previewing),void 0!==e.lightDirections&&(this._primarySet.lightDirections=e.lightDirections),void 0!==e.lightDirectionsContext&&(this._contextSet.lightDirections=e.lightDirectionsContext),!0===e.enabled?this._enable():!1===e.enabled&&this._disable(),void 0!==e.analysisVolume&&(this._analysisVolume=e.analysisVolume),this._accumulationRenderer.setOptions(e)}readAccumulatedShadow(e,t){const i=this._primarySet.progress;return!this.active||!this._fboHandle||i<1||e<0||e>=this._fboHandle.fbo.width||t<0||t>=this._fboHandle.fbo.height?0:(this._fboHandle.fbo.readPixels(e,t,1,1,6408,F.UNSIGNED_BYTE,P),P[0]/i)}updateCamera(e){if(!this.active)return;const t=this._bindParameters.camera;e.equals(t)||t.copyFrom(e),this._isAccumulationValid(e)||(this._fboHandle?.release(),this._fboHandle=this._createFBO(e.fullWidth,e.fullHeight),this._reset()),this._accumulationRenderer.setOpacityFromElevation(e.relativeElevation)}_numActiveChanged(){if(!this._enabled||!this._fboHandle)return;const e=2===this._numActive,{width:t,height:i}=this._fboHandle.fbo,s=this._createFBO(t,i);e&&(this._clearFramebuffer(s),this._contextSet.reset()),this._rctx.blitFramebuffer(this._fboHandle.fbo,s.fbo),this._fboHandle.dispose(),this._fboHandle=s,this._requestRender()}_enable(){this._enabled||(this._enabled=!0,this._invalidateAccumulationSets())}_disable(){this._enabled&&(this._fboHandle=s(this._fboHandle),this._enabled=!1,this._requestRender())}_createFBO(e,t){return this._fbos.acquire(e,t,"shadow accumulation",this._colorFormat)}_invalidateAccumulationSets(){for(const e of this._accumulationSets())e.reset();this._requestRenderIfEnabled()}_reset(){for(const e of this._accumulationSets())e.reset()}_clearFramebuffer(e=this._fboHandle){e&&(this._rctx.bindFramebuffer(e.fbo),this._rctx.setClearColor(0,0,0,0),this._rctx.clear(16384))}_clearFramebufferForSet(e,t,i){if(!e)return;const s=this._techniques.get(A,t.configuration);this._rctx.bindFramebuffer(e.fbo),this._rctx.bindTechnique(s,i,this._passParameters),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(s.primitiveType,0,this._vao.vertexCount("geometry"))}_accumulateShadow(e,t){this._renderToShadowMap(t,e.lightDirections[e.progress++],this._depthRange);const i=this._techniques.get(S,e.configuration);this._rctx.bindFramebuffer(this._fboHandle?.fbo),this._rctx.bindTechnique(i,t,this._passParameters),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(i.primitiveType,0,this._vao.vertexCount("geometry"))}_isAccumulationValid(e){return this._fboHandle?.fbo.width===e.fullWidth&&this._fboHandle?.fbo.height===e.fullHeight}_requestRenderIfEnabled(){this._enabled&&this._requestRender()}get _rctx(){return this._fbos.rctx}updateDepthRange(e){this._depthRange.equals(e)||(this._depthRange=e,this._invalidateAccumulationSets())}get test(){}};e([n()],H.prototype,"_refining",null),e([n()],H.prototype,"active",null),e([n()],H.prototype,"_doneAccumulating",null),e([n()],H.prototype,"_numActive",null),e([n()],H.prototype,"_colorFormat",null),e([n()],H.prototype,"_depthRange",void 0),e([n()],H.prototype,"_enabled",void 0),e([n()],H.prototype,"_previewing",void 0),e([n()],H.prototype,"_accumulationRenderer",void 0),H=e([h("esri.views.3d.webgl-engine.lib.ShadowAccumulator")],H);const j=6,P=new Uint8Array(4);class D{constructor(e,t){this.configuration=e,this._notifyChange=t,this._cachedLightDirections=[],this._progress=o(0),this._sampleCount=o(0)}get progress(){return this._progress.value}set progress(e){this._progress.value=e}get sampleCount(){return this._sampleCount.value}get doneAccumulating(){return this.progress>=this.sampleCount}get running(){return this.progress>0}get active(){return this.sampleCount>0}get lightDirections(){return this._cachedLightDirections}set lightDirections(e){const t=this._cachedLightDirections,s=Math.min(y,e.length);if(!i(t,0,t.length,e,0,s,u)){t.length=s,this._sampleCount.value=s;for(let i=0;i<s;++i)t[i]=c(t[i]??l(),e[i]);this.reset(),this._notifyChange()}}destroy(){this._cachedLightDirections.length=0,this._sampleCount.value=0}reset(){this.progress=0}precompile(e){e.precompile(S,this.configuration),e.precompile(A,this.configuration)}}export{H as ShadowAccumulator};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{sliceEquals as i}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{disposeMaybe as s}from"../../../../core/maybe.js";import{watch as r,sync as a}from"../../../../core/reactiveUtils.js";import{signal as o}from"../../../../core/signal.js";import{property as n,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{copy as c,equals as u}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ReadShadowMapPassParameters as m}from"../core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{F as _}from"../../../../chunks/FocusAreaMask.glsl.js";import{volumeToVao as d}from"../effects/focusArea/focusAreaMaskUtils.js";import{BindParameters as p}from"./BindParameters.js";import{DepthRange as f}from"./DepthRange.js";import{createQuadVAO as g}from"./glUtil3D.js";import{ShadowCastRenderer as b}from"./ShadowCastRenderer.js";import{ShadowMap as v}from"./ShadowMap.js";import{S as y}from"../../../../chunks/ShadowCastAccumulate.glsl.js";import{ShadowCastAccumulateTechnique as S}from"../shaders/ShadowCastAccumulateTechnique.js";import{ShadowCastAccumulateTechniqueConfiguration as w}from"../shaders/ShadowCastAccumulateTechniqueConfiguration.js";import{ShadowCastClearTechnique as A}from"../shaders/ShadowCastClearTechnique.js";import{ShadowCastMaskTechnique as x}from"../shaders/ShadowCastMaskTechnique.js";import{PrimitiveType as C,DepthStencilAttachment as R,PixelType as F}from"../../../webgl/enums.js";import{DisposableFramebufferObject as q}from"../../../webgl/FramebufferObject.js";import{noParameters as V}from"../../../webgl/NoParameters.js";let H=class extends t{constructor(e,t,i,s,o){super({}),this._fbos=e,this._techniques=t,this._renderToShadowMap=s,this._requestRender=o,this.fullyRecompute=!1,this._analysisVolumeGeometry=null,this._primarySet=new D(new w(0),()=>this._requestRenderIfEnabled()),this._contextSet=new D(new w(1),()=>this._requestRenderIfEnabled()),this._passParameters=new m,this._maskParameters=new _,this._volumeVao=null,this._volumeVertexCount=0,this._depthRange=f.Zero,this._enabled=!1,this._previewing=!1,this._shadowAccumulatorKey=Symbol("shadowAccumulator"),this._bindParameters=new p(e.rctx,new v(e,i.viewingMode)),this._bindParameters.shadowMap.enabled=!0,this._vao=g(e.rctx),this._accumulationRenderer=new b({view:i.view,data:this}),this._tmpReadFbo=new q(e.rctx),this.addHandles([r(()=>this._previewing,e=>{e?this._invalidateAccumulationSets():this._requestRenderIfEnabled()},a),r(()=>this._numActive,()=>this._numActiveChanged(),a)],this._shadowAccumulatorKey)}destroy(){this._disable(),this.removeHandles(this._shadowAccumulatorKey),this._fboHandle=s(this._fboHandle),this._vao=s(this._vao),this._volumeVao=s(this._volumeVao),this._tmpReadFbo=s(this._tmpReadFbo),this._bindParameters.destroy();for(const e of this._accumulationSets())e.destroy();this._contextSet=null,this._primarySet=null}*_accumulationSets(){yield this._primarySet,yield this._contextSet}get computedSamples(){return[this._primarySet.progress,this._contextSet.progress]}get shadowCastTexture(){return this._fboHandle?.getTexture()}get accumulating(){return this.active&&(this._previewing||this._refining||this.fullyRecompute)}get _refining(){return this.active&&!this._doneAccumulating&&!this._previewing}get active(){return this._enabled&&[...this._accumulationSets()].some(e=>e.active)}get canAccumulate(){return null!=this._bindParameters.depth&&this._depthRange!==f.Zero&&this._accumulationRenderer.isAboveElevationThreshold}get _doneAccumulating(){return[...this._accumulationSets()].every(e=>e.doneAccumulating)}get _numActive(){return[...this._accumulationSets()].reduce((e,t)=>e+(t.active?1:0),0)}get _colorFormat(){return 2===this._numActive?2:0}get _analysisVolume(){return this._analysisVolumeGeometry}set _analysisVolume(e){if(this._analysisVolumeGeometry===e)return;this._invalidateAccumulationSets(),this._analysisVolumeGeometry=e,this._volumeVao=s(this._volumeVao),this._volumeVertexCount=0;const t=null!=e;for(const s of this._accumulationSets())s.configuration.useMask=t;if(!t)return;const i=e.geometryVolume,{vao:r,vertexCount:a}=d(this._rctx,i);this._volumeVao=r,this._volumeVertexCount=a}get requiresDepth(){return this.accumulating||null!=this._volumeVao}renderAccumulation(e){if(!this.active)return!1;if(this._bindParameters.contentCamera=e.contentCamera,this._bindParameters.depth=e.depth,this._passParameters.origin=this._bindParameters.camera.center,!this.canAccumulate)return this._bindParameters.depth=null,!1;if(this._renderAreaMask(),!this.accumulating)return this._bindParameters.depth=null,!1;(this._previewing||this.fullyRecompute)&&this._reset(),this._clearBuffersOnAccumulationStart(this._bindParameters);const t=this._accumulateSetsForRenderFrame(this._previewing&&!this.fullyRecompute,this._bindParameters);return this._bindParameters.depth=null,t}_renderAreaMask(){const e=this._techniques.getCompiled(x),t=this._volumeVao,i=this._volumeVertexCount,s=this._fboHandle,r=this._analysisVolume;if(s?.detachDepth(),!e||!t||i<1||!s||!r)return;s.acquireDepth(14);const a=this._rctx,o=this._bindParameters,n=o.depth,h=this._tmpReadFbo;h.attachDepthStencil(n?.attachment),a.blitFramebuffer(h,s.fbo,256),h.detachDepthStencilTexture(),a.bindFramebuffer(s.fbo),a.setClearStencil(0),a.clear(1024),a.setViewport(0,0,o.camera.width,o.camera.height);const c=a.bindTechnique(e,o,V);this._maskParameters.origin=r.origin,c.bindDraw(o,V,this._maskParameters),a.bindVAO(t),a.drawArrays(C.TRIANGLES,0,i)}_clearBuffersOnAccumulationStart(e){if([...this._accumulationSets()].every(e=>0===e.progress))this._clearFramebuffer();else for(const t of this._accumulationSets())0===t.progress&&this._clearFramebufferForSet(this._fboHandle,t,e)}_accumulateSetsForRenderFrame(e,t){let i=!1;for(const s of this._accumulationSets())this._accumulateSet(s,e,t),i=!0;return i&&this._requestRender(),i}_accumulateSet(e,t,i){const s=t?Math.min(j,e.sampleCount)-e.progress:e.sampleCount-e.progress;for(let r=0;r<s;++r)this._accumulateShadow(e,i)}precompilePrepass(){if(this.accumulating){for(const e of this._accumulationSets())this._techniques.precompile(S,e.configuration),this._techniques.precompile(A,e.configuration);this._techniques.precompile(x)}}precompile(){this._accumulationRenderer.precompile()}updateMask(){this._accumulationRenderer.setStencilMask(this._fboHandle?.getAttachment(R))}setParameters(e){void 0!==e.previewing&&(this._previewing=e.previewing),void 0!==e.lightDirections&&(this._primarySet.lightDirections=e.lightDirections),void 0!==e.lightDirectionsContext&&(this._contextSet.lightDirections=e.lightDirectionsContext),!0===e.enabled?this._enable():!1===e.enabled&&this._disable(),void 0!==e.analysisVolume&&(this._analysisVolume=e.analysisVolume),this._accumulationRenderer.setOptions(e)}readAccumulatedShadow(e,t){const i=this._primarySet.progress;return!this.active||!this._fboHandle||i<1||e<0||e>=this._fboHandle.fbo.width||t<0||t>=this._fboHandle.fbo.height?0:(this._fboHandle.fbo.readPixels(e,t,1,1,6408,F.UNSIGNED_BYTE,P),P[0]/i)}updateCamera(e){if(!this.active)return;const t=this._bindParameters.camera;e.equals(t)||t.copyFrom(e),this._isAccumulationValid(e)||(this._fboHandle?.release(),this._fboHandle=this._createFBO(e.fullWidth,e.fullHeight),this._reset()),this._accumulationRenderer.setOpacityFromElevation(e.relativeElevation)}_numActiveChanged(){if(!this._enabled||!this._fboHandle)return;const e=2===this._numActive,{width:t,height:i}=this._fboHandle.fbo,s=this._createFBO(t,i);e&&(this._clearFramebuffer(s),this._contextSet.reset()),this._rctx.blitFramebuffer(this._fboHandle.fbo,s.fbo),this._fboHandle.dispose(),this._fboHandle=s,this._requestRender()}_enable(){this._enabled||(this._enabled=!0,this._invalidateAccumulationSets())}_disable(){this._enabled&&(this._fboHandle=s(this._fboHandle),this._enabled=!1,this._requestRender())}_createFBO(e,t){return this._fbos.acquire(e,t,"shadow accumulation",this._colorFormat)}_invalidateAccumulationSets(){for(const e of this._accumulationSets())e.reset();this._requestRenderIfEnabled()}_reset(){for(const e of this._accumulationSets())e.reset()}_clearFramebuffer(e=this._fboHandle){e&&(this._rctx.bindFramebuffer(e.fbo),this._rctx.setClearColor(0,0,0,0),this._rctx.clear(16384))}_clearFramebufferForSet(e,t,i){if(!e)return;const s=this._techniques.get(A,t.configuration);this._rctx.bindFramebuffer(e.fbo),this._rctx.bindTechnique(s,i,this._passParameters),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(s.primitiveType,0,this._vao.vertexCount("geometry"))}_accumulateShadow(e,t){this._renderToShadowMap(t,e.lightDirections[e.progress++],this._depthRange);const i=this._techniques.get(S,e.configuration);this._rctx.bindFramebuffer(this._fboHandle?.fbo),this._rctx.bindTechnique(i,t,this._passParameters),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(i.primitiveType,0,this._vao.vertexCount("geometry"))}_isAccumulationValid(e){return this._fboHandle?.fbo.width===e.fullWidth&&this._fboHandle?.fbo.height===e.fullHeight}_requestRenderIfEnabled(){this._enabled&&this._requestRender()}get _rctx(){return this._fbos.rctx}updateDepthRange(e){this._depthRange.equals(e)||(this._depthRange=e,this._invalidateAccumulationSets())}get test(){}};e([n()],H.prototype,"_refining",null),e([n()],H.prototype,"active",null),e([n()],H.prototype,"_doneAccumulating",null),e([n()],H.prototype,"_numActive",null),e([n()],H.prototype,"_colorFormat",null),e([n()],H.prototype,"_depthRange",void 0),e([n()],H.prototype,"_enabled",void 0),e([n()],H.prototype,"_previewing",void 0),e([n()],H.prototype,"_accumulationRenderer",void 0),H=e([h("esri.views.3d.webgl-engine.lib.ShadowAccumulator")],H);const j=6,P=new Uint8Array(4);class D{constructor(e,t){this.configuration=e,this._notifyChange=t,this._cachedLightDirections=[],this._progress=o(0),this._sampleCount=o(0)}get progress(){return this._progress.value}set progress(e){this._progress.value=e}get sampleCount(){return this._sampleCount.value}get doneAccumulating(){return this.progress>=this.sampleCount}get running(){return this.progress>0}get active(){return this.sampleCount>0}get lightDirections(){return this._cachedLightDirections}set lightDirections(e){const t=this._cachedLightDirections,s=Math.min(y,e.length);if(!i(t,0,t.length,e,0,s,u)){t.length=s,this._sampleCount.value=s;for(let i=0;i<s;++i)t[i]=c(t[i]??l(),e[i]);this.reset(),this._notifyChange()}}destroy(){this._cachedLightDirections.length=0,this._sampleCount.value=0}reset(){this.progress=0}precompile(e){e.precompile(S,this.configuration),e.precompile(A,this.configuration)}}export{H as ShadowAccumulator};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as s,everyMap as i}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as h}from"../../terrain/Intersector.js";import{ChangeSet as c,RenderGeometryUpdate as l}from"./ChangeSet.js";import{IntersectorResult as p}from"./IntersectorResult.js";import{RendererBase as u}from"./RendererBase.js";import{noBudget as g}from"../../../support/Scheduler.js";let m=class extends u{constructor(e){super(e),this._pending=new y,this._changes=new c,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return s(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&s(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return i(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,g,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=s(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=s(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}addRenderer(){this._sortedRenderers.clear()}removeRenderer(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const i of t)this._geometries.set(i.id,i);const s=this._pending.empty;for(const i of t)this._pending.adds.add(i);switch(s&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,s=this._pending.adds;for(const i of e)s.has(i)?(this._pending.removed.add(i),s.delete(i)):this._pending.removed.has(i)||this._pending.removes.add(i),this._geometries.delete(i.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const s of e){const e=new l;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(s),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersect(e,r,t,s,i){for(const n of this._geometries.values()){if(!s(n))continue;this._intersectRenderGeometry(n,t,r,0,e,i);const o=this.rendererContext.longitudeCyclical;o&&(n.boundingSphere.center[0]-n.boundingSphere.radius<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,i),n.boundingSphere.center[0]+n.boundingSphere.radius>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,i)),i++}return i}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,s,i,n){if(!e.visible||!e.material.visible||!e.material.intersectRayDraped)return;let o=0;s+=e.transformation[12],o=e.transformation[13],f[0]=t[0]-s,f[1]=t[1]-o,e.screenToWorldRatio=this.rendererContext.screenToWorldRatio,e.material.intersectRayDraped(e,i,f,(t,s,o)=>{_(r,o,n,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)},r)}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],m.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],m.prototype,"rendererContext",void 0),e([o()],m.prototype,"updating",null),e([o()],m.prototype,"rctx",null),e([o()],m.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],m.prototype,"isEmpty",null),e([o()],m.prototype,"_geometries",void 0),m=e([d("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],m);class y{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function _(e,r,t,s,i,n,o){const d=new h(n,o,r),a=r=>{r.set(5,d,e.distance,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.distance||i.results.ground.distance<=i.results.min.distance)&&a(i.results.min),0!==i.options.store&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.distance||i.results.ground.distance>i.results.max.distance)&&a(i.results.max),2===i.options.store){const e=new p(i.ray);a(e),i.results.all.push(e)}}const f=a();export{m as SortedRenderGeometryRenderer};
2
+ import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as s,everyMap as i}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{set as d}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as c}from"../../terrain/Intersector.js";import{ChangeSet as l,RenderGeometryUpdate as m}from"./ChangeSet.js";import{IntersectorResult as g}from"./IntersectorResult.js";import{RendererBase as p}from"./RendererBase.js";import{noBudget as u}from"../../../support/Scheduler.js";let y=class extends p{constructor(e){super(e),this._pending=new _,this._changes=new l,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return s(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&s(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return i(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,u,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=s(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=s(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}addRenderer(){this._sortedRenderers.clear()}removeRenderer(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const i of t)this._geometries.set(i.id,i);const s=this._pending.empty;for(const i of t)this._pending.adds.add(i);switch(s&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,s=this._pending.adds;for(const i of e)s.has(i)?(this._pending.removed.add(i),s.delete(i)):this._pending.removed.has(i)||this._pending.removes.add(i),this._geometries.delete(i.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const s of e){const e=new m;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(s),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersectRay(e,r,t,s,i){for(const n of this._geometries.values()){if(!s(n))continue;this._intersectRenderGeometry(n,t,r,0,e,i);const o=this.rendererContext.longitudeCyclical;if(o){const s=n.boundingSphere.center,a=this._effectiveGeometryRadius(n);s[0]-a<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,i),s[0]+a>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,i)}i++}return i}*intersectScreenPolygon(e,r,t,s){for(const i of this._geometries.values()){if(!t(i))continue;this._intersectScreenPolygonRenderGeometry(i,r,0,e,s);const n=this.rendererContext.longitudeCyclical;if(n){const t=i.boundingSphere.center,o=this._effectiveGeometryRadius(i);t[0]-o<n.min&&this._intersectScreenPolygonRenderGeometry(i,r,n.range,e,s),t[0]+o>n.max&&this._intersectScreenPolygonRenderGeometry(i,r,-n.range,e,s)}s++,yield}return s}_effectiveGeometryRadius(e){const r=e.boundingSphere.radius;return r||e.screenToWorldRatio*C}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,s,i,n){if(!e.visible||!e.material.visible||!e.material.intersectRayDraped)return;let o=0;s+=e.transformation[12],o=e.transformation[13],G[0]=t[0]-s,G[1]=t[1]-o,e.screenToWorldRatio=this.rendererContext.screenToWorldRatio,e.material.intersectRayDraped(e,i,G,(t,s,o)=>{f(r,o,n,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)},r)}_intersectScreenPolygonRenderGeometry(e,r,t,s,i){if(!e.visible||!e.material.visible||!e.material.intersectScreenPolygonDraped)return;d(v,t+e.transformation[12],e.transformation[13]),e.screenToWorldRatio=this.rendererContext.screenToWorldRatio;const n=e.material.intersectScreenPolygonDraped(e,v,s,r);n&&R(r.distance,n.primitiveIndex,i,e.material.renderPriority,s,e.layerViewUid,e.graphicUid)}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],y.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],y.prototype,"rendererContext",void 0),e([o()],y.prototype,"updating",null),e([o()],y.prototype,"rctx",null),e([o()],y.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],y.prototype,"isEmpty",null),e([o()],y.prototype,"_geometries",void 0),y=e([a("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],y);class _{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function f(e,r,t,s,i,n,o){const a=new c(n,o,r),d=r=>{r.set(5,a,e.distance,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.distance||i.results.ground.distance<=i.results.min.distance)&&d(i.results.min),0!==i.options.store&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.distance||i.results.ground.distance>i.results.max.distance)&&d(i.results.max),2===i.options.store){const e=new g(i.ray);d(e),i.results.all.push(e)}}function R(e,r,t,s,i,n,o){i.polygonResults.add(5,new c(n,o,r),e,t,s)}const G=h(),v=h(),C=128;export{y as SortedRenderGeometryRenderer};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{fromValues as o}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{IsNaN as r}from"../../../core/shaderLibrary/util/IsNaN.glsl.js";import{Float2BindUniform as e}from"../../../core/shaderModules/Float2BindUniform.js";import{glsl as a}from"../../../core/shaderModules/glsl.js";import{Matrix3PassUniform as s}from"../../../core/shaderModules/Matrix3PassUniform.js";import{Matrix4BindUniform as t}from"../../../core/shaderModules/Matrix4BindUniform.js";const l=o(.5,-4e-4);function i(o,i){const c=o.vertex;c.include(r),c.constants.add("depthBias","vec2",l),c.uniforms.add(new e("inverseViewport",o=>o.inverseViewport)),i.legacy?(c.uniforms.add(new t("proj",o=>o.camera.projectionMatrix)),c.code.add(a`vec2 calculateProjectedBiasXY(vec4 projPos, vec3 globalNormal) {
2
+ import{fromValues as o}from"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{IsNaN as r}from"../../core/shaderLibrary/util/IsNaN.glsl.js";import{Float2BindUniform as e}from"../../core/shaderModules/Float2BindUniform.js";import{glsl as a}from"../../core/shaderModules/glsl.js";import{Matrix3PassUniform as s}from"../../core/shaderModules/Matrix3PassUniform.js";import{Matrix4BindUniform as t}from"../../core/shaderModules/Matrix4BindUniform.js";const l=o(.5,-4e-4);function i(o,i){const c=o.vertex;c.include(r),c.constants.add("depthBias","vec2",l),c.uniforms.add(new e("inverseViewport",o=>o.inverseViewport)),i.legacy?(c.uniforms.add(new t("proj",o=>o.camera.projectionMatrix)),c.code.add(a`vec2 calculateProjectedBiasXY(vec4 projPos, vec3 globalNormal) {
3
3
  float offsetXY = depthBias.x;
4
4
  vec4 projNormal = proj * localView * vec4(globalNormal, 0.0);
5
5
  return offsetXY * projPos.w * 2.0 * inverseViewport * normalize(projNormal.xyz).xy;
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{glsl as e}from"../../../core/shaderModules/glsl.js";function o(o,l){const r=o.vertex;l.silhouette?(r.code.add(e`bool isSilhouetteEdge(vec3 viewDir, vec3 normalA, vec3 normalB) {
2
+ import{glsl as e}from"../../core/shaderModules/glsl.js";function o(o,l){const r=o.vertex;l.silhouette?(r.code.add(e`bool isSilhouetteEdge(vec3 viewDir, vec3 normalA, vec3 normalB) {
3
3
  float faceAVisible = dot(viewDir, normalA);
4
4
  float faceBVisible = dot(viewDir, normalB);
5
5
  return faceAVisible * faceBVisible < 0.0;
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../../core/PooledArray.js";import{transpose as r,invert as t}from"../../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as i}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{debugFlags as o}from"../../../support/debugFlags.js";import{TwoVectorPosition as n}from"../../core/util/TwoVectorPosition.js";import{EdgeDrawParameters as a}from"./EdgeShaderParameters.js";import{EdgeShaderTechnique as l}from"./EdgeShaderTechnique.js";import{EdgeShaderTechniqueConfiguration as d}from"./EdgeShaderTechniqueConfiguration.js";import{isLegacyTransform as h}from"./LegacyTransform.js";import{PrimitiveType as c}from"../../../../webgl/enums.js";const m=8,f=128,g={type:0,hasSlicePlane:!1,strokesTexture:null,legacy:!0,spherical:!0};class _{constructor(r,t,s){this.rctx=r,this._techniques=t,this._configuration=new d,this.refCount=0,this._renderables=new Set,this._sortedRenderables={0:{0:new e,1:new e},1:{0:new e,1:new e}},this._renderablesDirty=!1,this._drawParameters=new a,this._settings={...g,...s},this.key=_.getKey(this._settings.type,this._settings.hasSlicePlane,this._settings.legacy);const i=this._settings.strokesTexture.variants;this.writerSettings={variants:i,reducedPrecision:!o.ENABLE_OPTIMIZATIONS},this._configuration.legacy=this._settings.legacy,this._configuration.type=this._settings.type,this._configuration.silhouette=!1,this._configuration.hasSlicePlane=this._settings.hasSlicePlane,this._configuration.spherical=s.spherical}addRenderable(e){this._renderables.add(e),this._renderablesDirty=!0}removeRenderable(e){this._renderables.delete(e),this._renderablesDirty=!0}setRenderablesDirty(){this._renderablesDirty=!0}forEachRenderable(e,r){this._renderablesDirty&&this._sortRenderables();const t=this._sortedRenderables[r];t[0].forAll(e),t[1].forAll(e)}acquireTechnique(e,r){return this._lastOriginId=null,this._configuration.silhouette=r,this._techniques.get(l,this._configuration)}renderRegularEdges(e,r,t,s,i){this._render(e,r,r.regular.vao,t,s,i)}renderSilhouetteEdges(e,r,t,s,i){this._render(e,r,r.silhouette.vao,t,s,i)}get strokesTexture(){return this._settings.strokesTexture}_render(e,r,t,s,i,o){o>0&&(this._bindDraw(e,r,s,i),this.rctx.bindVAO(t),this.rctx.drawArraysInstanced(c.TRIANGLE_FAN,0,4,o))}_bindDraw(e,s,o,a){if(this._drawParameters.componentDataTextureBuffer=s.components.buffer.textureBuffer,h(s.transform)){const{origin:r}=s.transform,t=r.origin.id;this._lastOriginId!==t&&(e.setUniformMatrix4fv("localView",r.viewMatrix),this._lastOriginId=t),e.setUniformMatrix4fv("model",s.transform.modelMatrix),this._drawParameters.slicePlaneLocalOrigin=r.origin.vec3}else{const o=new n(s.transform.position),l=r(u,t(u,s.transform.rotationScale));e.setUniform3fv("transformWorldFromModelTL",o.low),e.setUniform3fv("transformWorldFromModelTH",o.high),e.setUniformMatrix3fv("transformWorldFromModelRS",s.transform.rotationScale),e.setUniformMatrix3fv("transformNormalGlobalFromModel",l);const d=a.camera.viewInverseTransposeMatrix;i(this._drawParameters.slicePlaneLocalOrigin,d[3],d[7],d[11])}e.bindDraw(a,o,this._drawParameters)}_sortRenderables(){this._renderablesDirty=!1,this._sortedRenderables[0][0].clear(),this._sortedRenderables[0][1].clear(),this._sortedRenderables[1][0].clear(),this._sortedRenderables[1][1].clear(),this._renderables.forEach(e=>this._sortedRenderables[e.objectTransparency][e.edgeTransparency].push(e));const e=(e,r)=>h(e.transform)?h(r.transform)?e.transform.origin.origin.id<r.transform.origin.origin.id?-1:e.transform.origin.origin.id>r.transform.origin.origin.id?1:0:1:0;this._sortedRenderables[0][0].sort(e),this._sortedRenderables[0][1].sort(e),this._sortedRenderables[1][0].sort(e),this._sortedRenderables[1][1].sort(e)}static getKey(e,r,t){return`edges-t:${e}:${r}:${t}`}}const u=s();export{_ as EdgeRenderer,f as extensionLengthOffset,m as lineWidthFractionFactor};
2
+ import e from"../../../../../core/PooledArray.js";import{transpose as r,invert as t}from"../../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as s}from"../../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as i}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{debugFlags as o}from"../../../support/debugFlags.js";import{TwoVectorPosition as n}from"../../core/util/TwoVectorPosition.js";import{EdgeDrawParameters as a}from"./EdgeShaderParameters.js";import{EdgeShaderTechnique as l}from"./EdgeShaderTechnique.js";import{EdgeShaderTechniqueConfiguration as d}from"./EdgeShaderTechniqueConfiguration.js";import{isLegacyTransform as h}from"./LegacyTransform.js";import{PrimitiveType as c}from"../../../../webgl/enums.js";const m=8,f=128,g={type:0,hasSlicePlane:!1,strokesTexture:null,legacy:!0,spherical:!0};class _{constructor(r,t,s){this.rctx=r,this._techniques=t,this._configuration=new d,this.refCount=0,this._renderables=new Set,this._sortedRenderables={0:{0:new e,1:new e},1:{0:new e,1:new e}},this._renderablesDirty=!1,this._drawParameters=new a,this._settings={...g,...s},this.key=_.getKey(this._settings.type,this._settings.hasSlicePlane,this._settings.legacy);const i=this._settings.strokesTexture.variants;this.writerSettings={variants:i,reducedPrecision:!o.ENABLE_OPTIMIZATIONS},this._configuration.legacy=this._settings.legacy,this._configuration.type=this._settings.type,this._configuration.silhouette=!1,this._configuration.hasSlicePlane=this._settings.hasSlicePlane,this._configuration.spherical=s.spherical}addRenderable(e){this._renderables.add(e),this._renderablesDirty=!0}removeRenderable(e){this._renderables.delete(e),this._renderablesDirty=!0}setRenderablesDirty(){this._renderablesDirty=!0}forEachRenderable(e,r){this._renderablesDirty&&this._sortRenderables();const t=this._sortedRenderables[r];t[0].forAll(e),t[1].forAll(e)}acquireTechnique(e,r){return this._lastOriginId=null,this._configuration.silhouette=r,this._techniques.get(l,this._configuration)}renderRegularEdges(e,r,t,s,i){this._render(e,r,r.regular.vao,t,s,i)}renderSilhouetteEdges(e,r,t,s,i){this._render(e,r,r.silhouette.vao,t,s,i)}get strokesTexture(){return this._settings.strokesTexture}_render(e,r,t,s,i,o){o>0&&(this._bindDraw(e,r,s,i),this.rctx.bindVAO(t),this.rctx.drawArraysInstanced(c.TRIANGLE_FAN,0,4,o))}_bindDraw(e,s,o,a){if(this._drawParameters.componentData=s.components.buffer.textureBuffer,h(s.transform)){const{origin:r}=s.transform,t=r.origin.id;this._lastOriginId!==t&&(e.setUniformMatrix4fv("localView",r.viewMatrix),this._lastOriginId=t),e.setUniformMatrix4fv("model",s.transform.modelMatrix),this._drawParameters.slicePlaneLocalOrigin=r.origin.vec3}else{const o=new n(s.transform.position),l=r(u,t(u,s.transform.rotationScale));e.setUniform3fv("transformWorldFromModelTL",o.low),e.setUniform3fv("transformWorldFromModelTH",o.high),e.setUniformMatrix3fv("transformWorldFromModelRS",s.transform.rotationScale),e.setUniformMatrix3fv("transformNormalGlobalFromModel",l);const d=a.camera.viewInverseTransposeMatrix;i(this._drawParameters.slicePlaneLocalOrigin,d[3],d[7],d[11])}e.bindDraw(a,o,this._drawParameters)}_sortRenderables(){this._renderablesDirty=!1,this._sortedRenderables[0][0].clear(),this._sortedRenderables[0][1].clear(),this._sortedRenderables[1][0].clear(),this._sortedRenderables[1][1].clear(),this._renderables.forEach(e=>this._sortedRenderables[e.objectTransparency][e.edgeTransparency].push(e));const e=(e,r)=>h(e.transform)?h(r.transform)?e.transform.origin.origin.id<r.transform.origin.origin.id?-1:e.transform.origin.origin.id>r.transform.origin.origin.id?1:0:1:0;this._sortedRenderables[0][0].sort(e),this._sortedRenderables[0][1].sort(e),this._sortedRenderables[1][0].sort(e),this._sortedRenderables[1][1].sort(e)}static getKey(e,r,t){return`edges-t:${e}:${r}:${t}`}}const u=s();export{_ as EdgeRenderer,f as extensionLengthOffset,m as lineWidthFractionFactor};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../core/shaderLibrary/Slice.glsl.js";import"../../core/shaderModules/Float2BindUniform.js";import"../../core/shaderModules/Float4BindUniform.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"../../shaders/sources/edgeRenderer/AdjustProjectedPosition.glsl.js";import"../../shaders/sources/edgeRenderer/DiscardNonSilhouetteEdges.glsl.js";import"../../shaders/sources/edgeRenderer/EdgeUtil.glsl.js";import"../../shaders/sources/edgeRenderer/LineAmplitude.glsl.js";import"../../shaders/sources/edgeRenderer/LineOffset.glsl.js";import"../../shaders/sources/edgeRenderer/UnpackAttributes.glsl.js";import"../../../../webgl/ShaderBuilder.js";import"../../../../webgl/Uniform.js";export{b as build}from"../../../../../chunks/EdgeShader.glsl.js";
2
+ import"../../../../../core/libs/gl-matrix-2/math/vec2.js";import"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import"../../core/shaderLibrary/Slice.glsl.js";import"../../core/shaderModules/Float2BindUniform.js";import"../../core/shaderModules/Float4BindUniform.js";import"../../core/shaderModules/FloatBindUniform.js";import"../../core/shaderModules/FloatPassUniform.js";import"../../core/shaderModules/glsl.js";import"./AdjustProjectedPosition.glsl.js";import"./DiscardNonSilhouetteEdges.glsl.js";import"./EdgeUtil.glsl.js";import"./LineAmplitude.glsl.js";import"./LineOffset.glsl.js";import"./UnpackAttributes.glsl.js";import"../../../../webgl/ShaderBuilder.js";import"../../../../webgl/Uniform.js";export{b as build}from"../../../../../chunks/EdgeShader.glsl.js";
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{TextureBackedBufferModule as o}from"../../../core/shaderLibrary/TextureBackedBuffer.glsl.js";import{NormalAttribute as e}from"../../../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{DoublePrecision as r}from"../../../core/shaderLibrary/util/DoublePrecision.glsl.js";import{Float3PassUniform as t}from"../../../core/shaderModules/Float3PassUniform.js";import{glsl as a}from"../../../core/shaderModules/glsl.js";import{Matrix3PassUniform as l}from"../../../core/shaderModules/Matrix3PassUniform.js";import{Matrix4BindUniform as n}from"../../../core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintDrawUniform as d}from"../../../core/shaderModules/Texture2DUintDrawUniform.js";import{edgeViewTextureLayout as m}from"../../../lib/edgeRendering/bufferLayouts.js";import{Uniform as i}from"../../../../../webgl/Uniform.js";const s=new o({layout:m,itemIndexExpression:"componentIndex",bufferUniform:new d("componentTextureBuffer",o=>o.componentDataTextureBuffer?.texture)});function c(o,d){const{vertex:m}=o;o.include(e,d);const{silhouette:i,legacy:c,spherical:f}=d;o.attributes.add("componentIndex","uint");const w=s.createBuilder(o,d),p=8,x=128;m.constants.add("lineWidthFractionFactor","float",p),m.constants.add("extensionLengthOffset","float",x),m.code.add(a`
2
+ import{TextureBackedBufferModule as o}from"../../core/shaderLibrary/TextureBackedBuffer.glsl.js";import{NormalAttribute as e}from"../../core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{DoublePrecision as r}from"../../core/shaderLibrary/util/DoublePrecision.glsl.js";import{Float3PassUniform as t}from"../../core/shaderModules/Float3PassUniform.js";import{glsl as a}from"../../core/shaderModules/glsl.js";import{Matrix3PassUniform as l}from"../../core/shaderModules/Matrix3PassUniform.js";import{Matrix4BindUniform as n}from"../../core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintDrawUniform as d}from"../../core/shaderModules/Texture2DUintDrawUniform.js";import{edgeViewTextureLayout as m}from"./bufferLayouts.js";import{Uniform as i}from"../../../../webgl/Uniform.js";const s=new o({layout:m,itemIndexExpression:"componentIndex",bufferUniform:new d("componentTextureBuffer",o=>o.componentData?.texture)});function c(o,d){const{vertex:m}=o;o.include(e,d);const{silhouette:i,legacy:c,spherical:f}=d;o.attributes.add("componentIndex","uint");const w=s.createBuilder(o,d),p=8,x=128;m.constants.add("lineWidthFractionFactor","float",p),m.constants.add("extensionLengthOffset","float",x),m.code.add(a`
3
3
  struct ComponentData {
4
4
  vec4 color;
5
5
  vec3 normal;
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{FloatPassUniform as e}from"../../../core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../../../core/shaderModules/glsl.js";import{UnpackAttributes as r}from"./UnpackAttributes.glsl.js";function s(s,a){const u=s.vertex;switch(s.include(r,a),a.type){case 0:u.code.add(t`float calculateLineAmplitude(UnpackedAttributes unpackedAttributes) {
2
+ import{FloatPassUniform as e}from"../../core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../../core/shaderModules/glsl.js";import{UnpackAttributes as r}from"./UnpackAttributes.glsl.js";function s(s,a){const u=s.vertex;switch(s.include(r,a),a.type){case 0:u.code.add(t`float calculateLineAmplitude(UnpackedAttributes unpackedAttributes) {
3
3
  return 0.0;
4
4
  }`);break;case 1:u.uniforms.add(new e("strokesAmplitude",e=>e.strokesTexture.amplitude)).code.add(t`float calculateLineAmplitude(UnpackedAttributes unpackedAttributes) {
5
5
  return strokesAmplitude;
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{FloatPassUniform as e}from"../../../core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../../../core/shaderModules/glsl.js";import{Texture2DPassUniform as r}from"../../../core/shaderModules/Texture2DPassUniform.js";import{usesSketchLogic as s}from"./EdgeUtil.glsl.js";import{UnpackAttributes as a}from"./UnpackAttributes.glsl.js";import{NoParameters as u}from"../../../../../webgl/NoParameters.js";class c extends u{}function l(u,c){u.include(a,c);const{vertex:l,fragment:o}=u;switch(s(c.type)&&(u.varyings.add("vStrokeUV","vec2"),l.uniforms.add(new r("strokesTexture",e=>e.strokesTexture.texture),new e("strokesLog2Resolution",e=>Math.log2(e.strokesTexture.resolution)),new e("strokeVariants",e=>e.strokesTexture.variants)).code.add(t`void calculateStyleOutputsSketch(float lineLength, UnpackedAttributes unpackedAttributes) {
2
+ import{FloatPassUniform as e}from"../../core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../../core/shaderModules/glsl.js";import{Texture2DPassUniform as r}from"../../core/shaderModules/Texture2DPassUniform.js";import{usesSketchLogic as s}from"./EdgeUtil.glsl.js";import{UnpackAttributes as a}from"./UnpackAttributes.glsl.js";import{NoParameters as u}from"../../../../webgl/NoParameters.js";class c extends u{}function l(u,c){u.include(a,c);const{vertex:l,fragment:o}=u;switch(s(c.type)&&(u.varyings.add("vStrokeUV","vec2"),l.uniforms.add(new r("strokesTexture",e=>e.strokesTexture.texture),new e("strokesLog2Resolution",e=>Math.log2(e.strokesTexture.resolution)),new e("strokeVariants",e=>e.strokesTexture.variants)).code.add(t`void calculateStyleOutputsSketch(float lineLength, UnpackedAttributes unpackedAttributes) {
3
3
  vec2 sidenessNorm = unpackedAttributes.sidenessNorm;
4
4
  float lineIndex = clamp(ceil(log2(lineLength)), 0.0, strokesLog2Resolution);
5
5
  vStrokeUV = vec2(exp2(lineIndex) * sidenessNorm.y, lineIndex * strokeVariants + variantStroke + 0.5) / vec2(textureSize(strokesTexture, 0));
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{If as e,glsl as t}from"../../../core/shaderModules/glsl.js";function n(n,s){const i=2===s.type,o=0===s.type;n.attributes.add("sideness","vec2"),n.vertex.code.add(t`
2
+ import{If as e,glsl as t}from"../../core/shaderModules/glsl.js";function n(n,s){const i=2===s.type,o=0===s.type;n.attributes.add("sideness","vec2"),n.vertex.code.add(t`
3
3
  struct UnpackedAttributes {
4
4
  vec2 sideness;
5
5
  vec2 sidenessNorm;
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{copy as e,distance as n,squaredDistance as o,set as r,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as l,setMax as u,getMax as c,getMin as a,create as f}from"../../../../geometry/support/aaBoundingBox.js";import{clipPolygon as m}from"../../../../geometry/support/plane.js";import{normalFromValues as p,closestPointFromValues as d}from"../../../../geometry/support/triangle.js";import{boundingInfoSubdivisionThreshold as I}from"./intersectionConstants.js";import{projectAabbToScreenBounds as h,projectBoundingInfoToScreenBounds as g,screenPolygonIntersectsBounds as b,screenPolygonIntersectsTriangle as v}from"./screenPolygonOverlapUtils.js";class y{constructor(){this.distance=Number.POSITIVE_INFINITY,this.primitiveIndex=0,this.hasNormal=!1,this.point=s(),this.normal=s()}reset(){this.distance=Number.POSITIVE_INFINITY}update(t,n,o,r){this.distance=t,this.primitiveIndex=n,e(this.point,o),this.hasNormal=null!=r,null!=r&&e(this.normal,r)}updateIfCloserFromValues(t,e,n,o){t<this.distance&&this.update(t,e,n,o)}updateIfCloser(t){const{distance:e,primitiveIndex:n,point:o,normal:r}=t;this.updateIfCloserFromValues(e,n,o,t.hasNormal?r:null)}get valid(){return Number.isFinite(this.distance)}}function N(t,e,n,o,r){if(!t.visible||0!==t.type)return null;const i=new y;let s;if(t.boundingInfo)s=P(t.boundingInfo,e,n,o,r);else{const i=t.positionAttribute,l=t.primitivePositionIndices;s=x(e,n,o,0,l.length/3,l,i.data,i.stride,r,null,0)}for(const l of s)i.updateIfCloser(l);return i.valid?i:null}function T(t,e,n,o,r,i,s,l,u){const c=new y;for(const a of x(t,e,n,o,r,i,s,l,u,null,0))c.updateIfCloser(a);return c.valid?c:null}function j(t,e,n,o,r){const i=new y;for(const s of C(t,e,n,o,r))i.updateIfCloser(s);return i.valid?i:null}function*x(t,e,n,o,r,i,s,l,u,c=null,a=0){const f=(t,n,o,r)=>{const f=(c?.[r]??r)+a,m=null==c?f:r,p=3*f;return F(t,i,s,l,p+0,u,m,e),F(n,i,s,l,p+1,u,m,e),F(o,i,s,l,p+2,u,m,e),f};return yield*C(t,n,o,r,f)}function*C(t,e,o,r,i){if(null==t.camera)return;const{camera:s,screenPolygonPrimitiveProcessor:l}=t;for(let u=o;u<r;++u){const t=i(S[0],S[1],S[2],u),o=B;let r;U.reset();for(const{list:i,count:u}of l.processTriangle(k,S)){const l=m(s.frustum[4],i,u,E,!1);if(!(l<3)){for(let t=0;t<l;t++)s.projectToScreen(E[t],Y[t]);V(e,Y,l)&&(w(s.eye,E,l,_),null==r&&(r=p(B,S[0],S[1],S[2])),U.updateIfCloserFromValues(n(s.eye,_),t,_,r?o:null))}}U.valid&&(yield U)}}function*P(t,e,n,o,r){const i=e.camera,s=null!=r?(l(A,t.bbMin),u(A,t.bbMax),r.applyToAabb(A),h(i,a(A,S[0]),c(A,S[1]),n)):g(i,t,n);if(null==s||!b(o,s.bounds))return;const{primitiveIndices:f,position:m}=t,p=f?f.length:m.indices.length/3;if(p>I){const i=t.getChildren();if(void 0!==i){for(const t of i)yield*P(t,e,n,o,r);return}}yield*x(e,n,o,0,p,m.indices,m.data,m.stride,r,f,0)}function F(t,e,n,o,s,l,u,c){const a=o*e[s],f=n[a+0],m=n[a+1],p=n[a+2];null!=l?l.applyToVertex(t,f,m,p,u):r(t,f,m,p),c&&i(t,t,c)}function V(t,e,n){for(let o=1;o<n-1;o++)if(v(t,e[0],e[o],e[o+1]))return!0;return!1}function w(t,n,r,i){let s=Number.POSITIVE_INFINITY;for(let l=1;l<r-1;l++){d(M,t,n[0],n[l],n[l+1]);const r=o(t,M);r<s&&(s=r,e(i,M))}}const A=f(),O=12,S=[s(),s(),s()],E=Array.from({length:O},()=>s()),Y=Array.from({length:O},()=>t()),_=s(),B=s(),M=s(),U=new y,k={list:[],count:0};export{y as Hit,x as forEachTriangleRangeScreenPolygonHit,C as forEachTriangleReaderRangeScreenPolygonHit,N as intersectTriangleGeometryScreenPolygon,T as intersectTriangleRangeScreenPolygon,j as intersectTriangleReaderRangeScreenPolygon};
2
+ import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{copy as e,distance as n,squaredDistance as o,set as r,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as l,setMax as u,getMax as c,getMin as a,create as f}from"../../../../geometry/support/aaBoundingBox.js";import{clipPolygon as m}from"../../../../geometry/support/plane.js";import{normalFromValues as p,closestPointFromValues as d}from"../../../../geometry/support/triangle.js";import{boundingInfoSubdivisionThreshold as I}from"./intersectionConstants.js";import{projectAabbToScreenBounds as h,projectBoundingInfoToScreenBounds as g,screenPolygonIntersectsBounds as b,screenPolygonIntersectsTriangle as v}from"./screenPolygonOverlapUtils.js";class y{constructor(t){this.primitiveIndex=t}}class N{constructor(t){this.type=t,this.distance=Number.POSITIVE_INFINITY,this.primitiveIndex=0,this.hasNormal=!1,this.point=s(),this.normal=s()}reset(){this.distance=Number.POSITIVE_INFINITY,this.hasNormal=!1}update(t,n,o,r){this.distance=t,this.primitiveIndex=n,e(this.point,o),this.hasNormal=null!=r,null!=r&&e(this.normal,r)}updateIfCloserFromValues(t,e,n,o){t<this.distance&&this.update(t,e,n,o)}updateIfCloser(t){const{distance:e,primitiveIndex:n,point:o,normal:r}=t;this.updateIfCloserFromValues(e,n,o,t.hasNormal?r:null)}get valid(){return Number.isFinite(this.distance)}}function x(t,e,n,o,r){if(!t.visible||0!==t.type)return null;const i=new N(4);let s;if(t.boundingInfo)s=F(t.boundingInfo,e,n,o,r);else{const i=t.positionAttribute,l=t.primitivePositionIndices;s=C(e,n,o,0,l.length/3,l,i.data,i.stride,r,null,0)}for(const l of s)i.updateIfCloser(l);return i.valid?i:null}function T(t,e,n,o,r,i,s,l,u){const c=new N(4);for(const a of C(t,e,n,o,r,i,s,l,u,null,0))c.updateIfCloser(a);return c.valid?c:null}function j(t,e,n,o,r){const i=new N(4);for(const s of P(t,e,n,o,r))i.updateIfCloser(s);return i.valid?i:null}function*C(t,e,n,o,r,i,s,l,u,c=null,a=0){const f=(t,n,o,r)=>{const f=(c?.[r]??r)+a,m=null==c?f:r,p=3*f;return V(t,i,s,l,p+0,u,m,e),V(n,i,s,l,p+1,u,m,e),V(o,i,s,l,p+2,u,m,e),f};return yield*P(t,n,o,r,f)}function*P(t,e,o,r,i){if(null==t.camera)return;const{camera:s,screenPolygonPrimitiveProcessor:l}=t;for(let u=o;u<r;++u){const t=i(E[0],E[1],E[2],u),o=M;let r;k.reset();for(const{list:i,count:u}of l.processTriangle(q,E)){const l=m(s.frustum[4],i,u,Y,!1);if(!(l<3)){for(let t=0;t<l;t++)s.projectToScreen(Y[t],_[t]);w(e,_,l)&&(A(s.eye,Y,l,B),null==r&&(r=p(M,E[0],E[1],E[2])),k.updateIfCloserFromValues(n(s.eye,B),t,B,r?o:null))}}k.valid&&(yield k)}}function*F(t,e,n,o,r){const i=e.camera,s=null!=r?(l(O,t.bbMin),u(O,t.bbMax),r.applyToAabb(O),h(i,a(O,E[0]),c(O,E[1]),n)):g(i,t,n);if(null==s||!b(o,s.bounds))return;const{primitiveIndices:f,position:m}=t,p=f?f.length:m.indices.length/3;if(p>I){const i=t.getChildren();if(void 0!==i){for(const t of i)yield*F(t,e,n,o,r);return}}yield*C(e,n,o,0,p,m.indices,m.data,m.stride,r,f,0)}function V(t,e,n,o,s,l,u,c){const a=o*e[s],f=n[a+0],m=n[a+1],p=n[a+2];null!=l?l.applyToVertex(t,f,m,p,u):r(t,f,m,p),c&&i(t,t,c)}function w(t,e,n){for(let o=1;o<n-1;o++)if(v(t,e[0],e[o],e[o+1]))return!0;return!1}function A(t,n,r,i){let s=Number.POSITIVE_INFINITY;for(let l=1;l<r-1;l++){d(U,t,n[0],n[l],n[l+1]);const r=o(t,U);r<s&&(s=r,e(i,U))}}const O=f(),S=12,E=[s(),s(),s()],Y=Array.from({length:S},()=>s()),_=Array.from({length:S},()=>t()),B=s(),M=s(),U=s(),k=new N(4),q={list:[],count:0};export{y as DrapedHit,N as Hit,C as forEachTriangleRangeScreenPolygonHit,P as forEachTriangleReaderRangeScreenPolygonHit,x as intersectTriangleGeometryScreenPolygon,T as intersectTriangleRangeScreenPolygon,j as intersectTriangleReaderRangeScreenPolygon};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{writeAttributes as t}from"./internal/bufferWriterUtils.js";class e{constructor(t){this.layout=t}elementCount(t){return t.get("position").indices.length}write(e,r,i,o,n){t(i,o,this.layout,e,r,n)}}export{e as DefaultBufferWriter};
2
+ import{writeAttributes as t}from"./internal/bufferWriterUtils.js";class e{constructor(t){this.layout=t}elementCount(t){return t.get("position").indices.length}write(e,r,i,n,o){null!=o&&t(i,n,this.layout,e,r,o)}}export{e as DefaultBufferWriter};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{exactEquals as e,subtract as t,add as r,set as s,copy as i,normalize as a,length as o,scale as n,dot as l,transformMat3 as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as u,create as h,fromValues as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as p,getMin as f,setMax as d,getMax as x}from"../../../../geometry/support/aaBoundingBox.js";import{is3DGeometryOrShadowLike as T,isColor as g}from"../core/shaderLibrary/ShaderOutput.js";import{GLTextureMaterial as v}from"../lib/GLTextureMaterial.js";import{Material as S}from"../lib/Material.js";import{intersectTriangleGeometry as b}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as M}from"../lib/screenPolygonTriangleIntersections.js";import{getVerticalOffsetObject3D as y}from"../lib/verticalOffsetUtils.js";import{DefaultBufferWriter as O}from"./DefaultBufferWriter.js";import{intersectWithPolygonOffset as C,applyPolygonOffsetToHit as R}from"./intersectWithPolygonOffset.js";import{verticalOffsetAtDistance as w}from"./internal/MaterialUtil.js";import{getLayout as P,DefaultMaterialPassParameters as j,DefaultMaterialTechnique as V}from"../shaders/DefaultMaterialTechnique.js";import{DefaultMaterialTechniqueConfiguration as I}from"../shaders/DefaultMaterialTechniqueConfiguration.js";import{RealisticTreeTechnique as _}from"../shaders/RealisticTreeTechnique.js";import{hasShadowHighlights as A}from"../shaders/ReceiveShadowsConfiguration.js";import{alphaCutoff as B}from"../../../../webscene/support/AlphaCutoff.js";class D extends S{constructor(e,t){super(e,z),this.materialType="default",this.supportsEdges=!0,this.intersectRayDraped=void 0,this.produces=new Map([[2,e=>T(e)&&!this.transparent],[4,e=>T(e)&&this.transparent]]),this._layout=P(this.parameters),this._configuration=new I(t.spherical)}isVisibleForOutput(e){return 5!==e&&7!==e&&6!==e||this.parameters.castShadows}get visible(){const{layerOpacity:e,colorMixMode:t,opacity:r,externalColor:s}=this.parameters;return e*("replace"===t?1:r)*("ignore"===t||isNaN(s[3])?1:s[3])>=B}get _hasEmissiveBase(){return!!this.parameters.emissiveTextureId||!e(this.parameters.emissiveBaseColor,u)}get emissions(){return this.parameters.emissiveStrength>0&&(0===this.parameters.emissiveSource&&this._hasEmissiveBase||1===this.parameters.emissiveSource)?this.transparent?2:1:0}updateConfiguration(e){super.updateConfiguration(e);const{parameters:t,_configuration:r}=this;r.hasNormalTexture=t.hasNormalTexture,r.hasColorTexture=t.hasColorTexture,r.hasMetallicRoughnessTexture=t.hasMetallicRoughnessTexture,r.hasOcclusionTexture=t.hasOcclusionTexture;const{treeRendering:s,doubleSided:i,doubleSidedType:a}=t;r.hasVertexTangents=!s&&t.hasVertexTangents,r.instanced=t.instanced,r.instancedDoublePrecision=t.instancedDoublePrecision,r.hasVVColor=!!t.vvColor,r.hasVVSize=!!t.vvSize,r.hasVerticalOffset=null!=t.verticalOffset,r.hasScreenSizePerspective=null!=t.screenSizePerspective,r.hasSlicePlane=t.hasSlicePlane,r.alphaDiscardMode=t.textureAlphaMode,r.normalType=s?0:t.normalType,r.transparent=this.transparent,r.enableOITOffset=e.enableOITOffset,r.customDepthTest=t.customDepthTest??0,r.hasOccludees=e.hasOccludees,r.cullFace=t.hasSlicePlane?0:t.cullFace,r.hasModelTransformation=!s&&null!=t.modelTransformation,r.hasVertexColors=t.hasVertexColors,r.hasSymbolColors=t.hasSymbolColors,r.doubleSidedMode=s?2:i&&"normal"===a?1:i&&"winding-order"===a?2:0,r.instancedFeatureAttribute=t.instancedFeatureAttribute,r.instancedColor=t.instancedColor,g(e.output)?(r.receiveShadows=t.receiveShadows,r.hasShadowHighlights=A(r,e),r.receiveAmbientOcclusion=t.receiveAmbientOcclusion&&null!=e.ssao,r.receiveGlobalIllumination=t.receiveAmbientOcclusion&&e.globalIlluminationEnabled):r.receiveShadows=r.hasShadowHighlights=r.receiveAmbientOcclusion=!1,r.textureAlphaPremultiplied=!!t.textureAlphaPremultiplied,r.pbrMode=t.usePBR?t.isSchematic?2:1:0,r.emissionSource=t.emissionSource,r.offsetBackfaces=!(!this.transparent||!t.offsetTransparentBackfaces),r.snowCover=e.snowCover>0,r.hasColorTextureTransform=!!t.colorTextureTransformMatrix,r.hasNormalTextureTransform=!!t.normalTextureTransformMatrix,r.hasEmissionTextureTransform=!!t.emissiveTextureTransformMatrix,r.hasOcclusionTextureTransform=!!t.occlusionTextureTransformMatrix,r.hasMetallicRoughnessTextureTransform=!!t.metallicRoughnessTextureTransformMatrix}intersectRay(e,r,s,i,a,o){const n=this._getMaterialVerticalOffset(r,s);null!=n&&(i=t(F,i,n),a=t(E,a,n)),o=C(o,this._configuration,i,a),b(e,s,i,a,y(s.verticalOffset),o)}intersectScreenPolygon(e,t,r,s){return R(M(e,r,t,s,this._createScreenPolygonVertexDisplacement(t,r)),this._configuration,r.camera.eye)}createGLMaterial(e){return new N(e)}createBufferWriter(){return new O(this._layout)}get transparent(){const{drivenOpacity:e,opacity:t,externalColor:r,layerOpacity:s,texture:i,textureId:a,textureAlphaMode:o,colorMixMode:n}=this.parameters,l=r[3];return e||t<1&&"replace"!==n||l<1&&"ignore"!==n||s<1||(null!=i||null!=a)&&1!==o&&2!==o&&"replace"!==n}_createScreenPolygonVertexDisplacement(e,t){const s=this._getMaterialVerticalOffset(e,t);return null==s?null:{applyToVertex:(e,t,r,i)=>(e[0]=t+s[0],e[1]=r+s[1],e[2]=i+s[2],e),applyToAabb:e=>(p(e,r(W,f(e,W),s)),d(e,r(W,x(e,W),s)),e)}}_getMaterialVerticalOffset(e,r){if(null==this.parameters.verticalOffset)return null;const u=r.camera;s(G,e[12],e[13],e[14]);let h=null;switch(r.viewingMode){case 1:h=a(k,G);break;case 2:h=i(k,q)}const m=t(H,G,u.eye),p=o(m),f=n(m,m,1/p);let d=null;this.parameters.screenSizePerspective&&(d=l(h,f));const x=w(u,p,this.parameters.verticalOffset,d??0,this.parameters.screenSizePerspective,null);return n(h,h,x),c(L,h,r.transform.inverseRotation)}}class N extends v{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){this._material.setParameters({receiveShadows:e.shadowMap.enabled});const t=this._material.parameters;this.updateTexture(t.textureId);const r=e.camera.viewInverseTransposeMatrix;return s(t.origin,r[3],r[7],r[11]),this._material.setParameters(this.textureBindParameters),this.getTechnique(t.treeRendering?_:V,e)}}class z extends j{constructor(){super(...arguments),this.treeRendering=!1,this.useIndexing=!1,this.hasVertexTangents=!1}get hasNormalTexture(){return!this.treeRendering&&!!this.normalTextureId}get hasColorTexture(){return!!this.textureId}get hasMetallicRoughnessTexture(){return!this.treeRendering&&!!this.metallicRoughnessTextureId}get hasOcclusionTexture(){return!this.treeRendering&&!!this.occlusionTextureId}get emissiveStrength(){return this.emissiveStrengthFromSymbol*this.emissiveStrengthKHR}get emissionSource(){return null!=this.emissiveTextureId&&0===this.emissiveSource?3:0===this.emissiveSource?2:1}get hasTextures(){return this.hasColorTexture||this.hasNormalTexture||this.hasMetallicRoughnessTexture||3===this.emissionSource||this.hasOcclusionTexture}}const F=h(),E=h(),q=m(0,0,1),k=h(),G=h(),H=h(),L=h(),W=h();export{N as DefaultGLMaterial,D as DefaultMaterial,z as DefaultMaterialParameters};
2
+ import{exactEquals as e,subtract as t,add as r,set as s,copy as i,normalize as a,length as o,scale as n,dot as l,transformMat3 as c}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{ZEROS as u,create as h,fromValues as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as p,getMin as d,setMax as f,getMax as x}from"../../../../geometry/support/aaBoundingBox.js";import{is3DGeometryOrShadowLike as g,isColor as T}from"../core/shaderLibrary/ShaderOutput.js";import{GLTextureMaterial as v}from"../lib/GLTextureMaterial.js";import{Material as S}from"../lib/Material.js";import{intersectTriangleGeometry as b}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as M}from"../lib/screenPolygonTriangleIntersections.js";import{getVerticalOffsetObject3D as y}from"../lib/verticalOffsetUtils.js";import{DefaultBufferWriter as O}from"./DefaultBufferWriter.js";import{intersectWithPolygonOffset as C,applyPolygonOffsetToHit as P}from"./intersectWithPolygonOffset.js";import{verticalOffsetAtDistance as R}from"./internal/MaterialUtil.js";import{getLayout as w,DefaultMaterialPassParameters as j,DefaultMaterialTechnique as V}from"../shaders/DefaultMaterialTechnique.js";import{DefaultMaterialTechniqueConfiguration as I}from"../shaders/DefaultMaterialTechniqueConfiguration.js";import{RealisticTreeTechnique as _}from"../shaders/RealisticTreeTechnique.js";import{hasShadowHighlights as A}from"../shaders/ReceiveShadowsConfiguration.js";import{alphaCutoff as D}from"../../../../webscene/support/AlphaCutoff.js";class B extends S{constructor(e,t){super(e,z),this.materialType="default",this.supportsEdges=!0,this.intersectRayDraped=void 0,this.intersectScreenPolygonDraped=void 0,this.produces=new Map([[2,e=>g(e)&&!this.transparent],[4,e=>g(e)&&this.transparent]]),this._layout=w(this.parameters),this._configuration=new I(t.spherical)}isVisibleForOutput(e){return 5!==e&&7!==e&&6!==e||this.parameters.castShadows}get visible(){const{layerOpacity:e,colorMixMode:t,opacity:r,externalColor:s}=this.parameters;return e*("replace"===t?1:r)*("ignore"===t||isNaN(s[3])?1:s[3])>=D}get _hasEmissiveBase(){return!!this.parameters.emissiveTextureId||!e(this.parameters.emissiveBaseColor,u)}get emissions(){return this.parameters.emissiveStrength>0&&(0===this.parameters.emissiveSource&&this._hasEmissiveBase||1===this.parameters.emissiveSource)?this.transparent?2:1:0}updateConfiguration(e){super.updateConfiguration(e);const{parameters:t,_configuration:r}=this;r.hasNormalTexture=t.hasNormalTexture,r.hasColorTexture=t.hasColorTexture,r.hasMetallicRoughnessTexture=t.hasMetallicRoughnessTexture,r.hasOcclusionTexture=t.hasOcclusionTexture;const{treeRendering:s,doubleSided:i,doubleSidedType:a}=t;r.hasVertexTangents=!s&&t.hasVertexTangents,r.instanced=t.instanced,r.instancedDoublePrecision=t.instancedDoublePrecision,r.hasVVColor=!!t.vvColor,r.hasVVSize=!!t.vvSize,r.hasVerticalOffset=null!=t.verticalOffset,r.hasScreenSizePerspective=null!=t.screenSizePerspective,r.hasSlicePlane=t.hasSlicePlane,r.alphaDiscardMode=t.textureAlphaMode,r.normalType=s?0:t.normalType,r.transparent=this.transparent,r.enableOITOffset=e.enableOITOffset,r.customDepthTest=t.customDepthTest??0,r.hasOccludees=e.hasOccludees,r.cullFace=t.hasSlicePlane?0:t.cullFace,r.hasModelTransformation=!s&&null!=t.modelTransformation,r.hasVertexColors=t.hasVertexColors,r.hasSymbolColors=t.hasSymbolColors,r.doubleSidedMode=s?2:i&&"normal"===a?1:i&&"winding-order"===a?2:0,r.instancedFeatureAttribute=t.instancedFeatureAttribute,r.instancedColor=t.instancedColor,T(e.output)?(r.receiveShadows=t.receiveShadows,r.hasShadowHighlights=A(r,e),r.receiveAmbientOcclusion=t.receiveAmbientOcclusion&&null!=e.ssao,r.receiveGlobalIllumination=t.receiveAmbientOcclusion&&e.globalIlluminationEnabled):r.receiveShadows=r.hasShadowHighlights=r.receiveAmbientOcclusion=!1,r.textureAlphaPremultiplied=!!t.textureAlphaPremultiplied,r.pbrMode=t.usePBR?t.isSchematic?2:1:0,r.emissionSource=t.emissionSource,r.offsetBackfaces=!(!this.transparent||!t.offsetTransparentBackfaces),r.snowCover=e.snowCover>0,r.hasColorTextureTransform=!!t.colorTextureTransformMatrix,r.hasNormalTextureTransform=!!t.normalTextureTransformMatrix,r.hasEmissionTextureTransform=!!t.emissiveTextureTransformMatrix,r.hasOcclusionTextureTransform=!!t.occlusionTextureTransformMatrix,r.hasMetallicRoughnessTextureTransform=!!t.metallicRoughnessTextureTransformMatrix}intersectRay(e,r,s,i,a,o){const n=this._getMaterialVerticalOffset(r,s);null!=n&&(i=t(F,i,n),a=t(E,a,n)),o=C(o,this._configuration,i,a),b(e,s,i,a,y(s.verticalOffset),o)}intersectScreenPolygon(e,t,r,s){return P(M(e,r,t,s,this._createScreenPolygonVertexDisplacement(t,r)),this._configuration,r.camera.eye)}createGLMaterial(e){return new N(e)}createBufferWriter(){return new O(this._layout)}get transparent(){const{drivenOpacity:e,opacity:t,externalColor:r,layerOpacity:s,texture:i,textureId:a,textureAlphaMode:o,colorMixMode:n}=this.parameters,l=r[3];return e||t<1&&"replace"!==n||l<1&&"ignore"!==n||s<1||(null!=i||null!=a)&&1!==o&&2!==o&&"replace"!==n}_createScreenPolygonVertexDisplacement(e,t){const s=this._getMaterialVerticalOffset(e,t);return null==s?null:{applyToVertex:(e,t,r,i)=>(e[0]=t+s[0],e[1]=r+s[1],e[2]=i+s[2],e),applyToAabb:e=>(p(e,r(W,d(e,W),s)),f(e,r(W,x(e,W),s)),e)}}_getMaterialVerticalOffset(e,r){if(null==this.parameters.verticalOffset)return null;const u=r.camera;s(G,e[12],e[13],e[14]);let h=null;switch(r.viewingMode){case 1:h=a(k,G);break;case 2:h=i(k,q)}const m=t(H,G,u.eye),p=o(m),d=n(m,m,1/p);let f=null;this.parameters.screenSizePerspective&&(f=l(h,d));const x=R(u,p,this.parameters.verticalOffset,f??0,this.parameters.screenSizePerspective,null);return n(h,h,x),c(L,h,r.transform.inverseRotation)}}class N extends v{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){this._material.setParameters({receiveShadows:e.shadowMap.enabled});const t=this._material.parameters;this.updateTexture(t.textureId);const r=e.camera.viewInverseTransposeMatrix;return s(t.origin,r[3],r[7],r[11]),this._material.setParameters(this.textureBindParameters),this.getTechnique(t.treeRendering?_:V,e)}}class z extends j{constructor(){super(...arguments),this.treeRendering=!1,this.useIndexing=!1,this.hasVertexTangents=!1}get hasNormalTexture(){return!this.treeRendering&&!!this.normalTextureId}get hasColorTexture(){return!!this.textureId}get hasMetallicRoughnessTexture(){return!this.treeRendering&&!!this.metallicRoughnessTextureId}get hasOcclusionTexture(){return!this.treeRendering&&!!this.occlusionTextureId}get emissiveStrength(){return this.emissiveStrengthFromSymbol*this.emissiveStrengthKHR}get emissionSource(){return null!=this.emissiveTextureId&&0===this.emissiveSource?3:0===this.emissiveSource?2:1}get hasTextures(){return this.hasColorTexture||this.hasNormalTexture||this.hasMetallicRoughnessTexture||3===this.emissionSource||this.hasOcclusionTexture}}const F=h(),E=h(),q=m(0,0,1),k=h(),G=h(),H=h(),L=h(),W=h();export{N as DefaultGLMaterial,B as DefaultMaterial,z as DefaultMaterialParameters};