@arcgis/core 4.25.0-next.20220919 → 4.25.0-next.20220921
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.
- package/AggregateGraphic.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{9f31ab2247c9defb882c.js → 01ac91fc0bc6b4d4e3c6.js} +1 -1
- package/assets/esri/core/workers/chunks/{d26108352874af0b6762.js → 053564e659222e8f0efb.js} +1 -1
- package/assets/esri/core/workers/chunks/1c65fd714f637ac1ee8c.js +1 -0
- package/assets/esri/core/workers/chunks/{8588cbecb8e808f451fe.js → 249e32af1f2d433fae4c.js} +1 -1
- package/assets/esri/core/workers/chunks/{5b16b30ac3166f33e81e.js → 26690f4ec1f3cb8099c2.js} +1 -1
- package/assets/esri/core/workers/chunks/{be93b0cef85665446944.js → 274b4cdf6c8d77e8a2e6.js} +1 -1
- package/assets/esri/core/workers/chunks/{52dcfd6b8b1dfa864e44.js → 2cae0ec5f60ab42a49aa.js} +1 -1
- package/assets/esri/core/workers/chunks/43e4560d65e5ddeeef6f.js +1 -0
- package/assets/esri/core/workers/chunks/{f436c86f86236ea7ea04.js → 4641e10e0e8e9d257521.js} +1 -1
- package/assets/esri/core/workers/chunks/{7a45333de9ded92619c2.js → 466008f793c2e11e854c.js} +1 -1
- package/assets/esri/core/workers/chunks/{c9d655675552dcf6cef7.js → 4a699b41072ee88f0956.js} +1 -1
- package/assets/esri/core/workers/chunks/{14ea96e398f4842abe4e.js → 4fdd18f5cdaa0d82ebc1.js} +1 -1
- package/assets/esri/core/workers/chunks/{9662da3e1e37f3445186.js → 562b9619b8ee13734813.js} +1 -1
- package/assets/esri/core/workers/chunks/{5c1a5615c865c10209c2.js → 5880fa48bad79a7c93ab.js} +1 -1
- package/assets/esri/core/workers/chunks/58824250492b89ec24ea.js +1 -0
- package/assets/esri/core/workers/chunks/64a6b837f1d5d7ad7619.js +1 -0
- package/assets/esri/core/workers/chunks/{421241543afbc9a619ea.js → 64de93865088bbe0398f.js} +1 -1
- package/assets/esri/core/workers/chunks/{99d56a707039d645622c.js → 6a20d8740ec2a5b2c579.js} +1 -1
- package/assets/esri/core/workers/chunks/{8bab21bc6164a593278f.js → 771b92e524802de840ba.js} +1 -1
- package/assets/esri/core/workers/chunks/{dbb1bf97c85848bb8ce1.js → 7ce250cc6fbe68aef50d.js} +32 -32
- package/assets/esri/core/workers/chunks/{2c4938512dd726a177dd.js → 7fab18074b130b71a648.js} +1 -1
- package/assets/esri/core/workers/chunks/{f67357b3c6c591c9da5e.js → 872f1cb3596fb80e387f.js} +1 -1
- package/assets/esri/core/workers/chunks/{3ee81834b3217720cb48.js → 8874e69378a27d155f9d.js} +1 -1
- package/assets/esri/core/workers/chunks/{31de71018575457155e5.js → 8ee3da8677255b8c8709.js} +1 -1
- package/assets/esri/core/workers/chunks/{2e44aee22e70857b893c.js → 93631b10452b0e0189b3.js} +1 -1
- package/assets/esri/core/workers/chunks/{cb2dc84d972469445da6.js → 95cd9edca50ea163d50f.js} +1 -1
- package/assets/esri/core/workers/chunks/{d31bbb13af45ce8e45dc.js → acf9f753741b677afb44.js} +1 -1
- package/assets/esri/core/workers/chunks/{1455944edeba1560eb07.js → afdafa77f5ca1b9e3acc.js} +1 -1
- package/assets/esri/core/workers/chunks/{cf3e1ac63580bc495ea6.js → b4da35f1093f3731f9ac.js} +1 -1
- package/assets/esri/core/workers/chunks/{09f4296dcb80e3ae4b3d.js → b8eba8c9d5424a7ae5f2.js} +1 -1
- package/assets/esri/core/workers/chunks/bb0d86937faf0cd7d16d.js +1 -0
- package/assets/esri/core/workers/chunks/bf3e80023e156d5906c7.js +1 -0
- package/assets/esri/core/workers/chunks/{8ba83fee56dd4f306d87.js → c2a6ac7046134f725cf3.js} +1 -1
- package/assets/esri/core/workers/chunks/{5d3fabe66e1bce1b30fb.js → cc7569489b572b8b3b53.js} +1 -1
- package/assets/esri/core/workers/chunks/{fddd4ea487788e003fb1.js → d09f06eb4157a7c2c8ab.js} +1 -1
- package/assets/esri/core/workers/chunks/d1be3ab7846e3a555b6c.js +1 -0
- package/assets/esri/core/workers/chunks/e064035f959d68e9603f.js +1 -0
- package/assets/esri/core/workers/chunks/{d92975e56a1290255252.js → e09df62cf35d636b0975.js} +1 -1
- package/assets/esri/core/workers/chunks/{674fa5b93704ef08c9e8.js → e0c763e05feb1c2093ba.js} +1 -1
- package/assets/esri/core/workers/chunks/e20e99f8f76f5002437e.js +1 -0
- package/assets/esri/core/workers/chunks/{51289d2f5277af4023e9.js → ed33e019bc7775db2e50.js} +1 -1
- package/assets/esri/core/workers/chunks/ef95d6ab7b1c032ab4ad.js +1 -0
- package/assets/esri/core/workers/chunks/{48aa432e1bf60c68de14.js → f0c4b408a0b88adf6576.js} +1 -1
- package/assets/esri/core/workers/chunks/{169f4354a375db5de121.js → ffcbcb928b6cb8c596ad.js} +1 -1
- package/assets/esri/t9n/common_ar.json +1 -1
- package/assets/esri/t9n/common_bg.json +1 -1
- package/assets/esri/t9n/common_bs.json +1 -1
- package/assets/esri/t9n/common_ca.json +1 -1
- package/assets/esri/t9n/common_cs.json +1 -1
- package/assets/esri/t9n/common_da.json +1 -1
- package/assets/esri/t9n/common_de.json +1 -1
- package/assets/esri/t9n/common_el.json +1 -1
- package/assets/esri/t9n/common_es.json +1 -1
- package/assets/esri/t9n/common_et.json +1 -1
- package/assets/esri/t9n/common_fi.json +1 -1
- package/assets/esri/t9n/common_fr.json +1 -1
- package/assets/esri/t9n/common_he.json +1 -1
- package/assets/esri/t9n/common_hr.json +1 -1
- package/assets/esri/t9n/common_hu.json +1 -1
- package/assets/esri/t9n/common_id.json +1 -1
- package/assets/esri/t9n/common_it.json +1 -1
- package/assets/esri/t9n/common_ja.json +1 -1
- package/assets/esri/t9n/common_ko.json +1 -1
- package/assets/esri/t9n/common_lt.json +1 -1
- package/assets/esri/t9n/common_lv.json +1 -1
- package/assets/esri/t9n/common_nb.json +1 -1
- package/assets/esri/t9n/common_nl.json +1 -1
- package/assets/esri/t9n/common_pl.json +1 -1
- package/assets/esri/t9n/common_pt-BR.json +1 -1
- package/assets/esri/t9n/common_pt-PT.json +1 -1
- package/assets/esri/t9n/common_ro.json +1 -1
- package/assets/esri/t9n/common_ru.json +1 -1
- package/assets/esri/t9n/common_sk.json +1 -1
- package/assets/esri/t9n/common_sl.json +1 -1
- package/assets/esri/t9n/common_sr.json +1 -1
- package/assets/esri/t9n/common_sv.json +1 -1
- package/assets/esri/t9n/common_th.json +1 -1
- package/assets/esri/t9n/common_tr.json +1 -1
- package/assets/esri/t9n/common_uk.json +1 -1
- package/assets/esri/t9n/common_vi.json +1 -1
- package/assets/esri/t9n/common_zh-CN.json +1 -1
- package/assets/esri/t9n/common_zh-HK.json +1 -1
- package/assets/esri/t9n/common_zh-TW.json +1 -1
- package/assets/esri/themes/base/widgets/_Daylight.scss +1 -0
- package/assets/esri/themes/base/widgets/_Directions.scss +1 -2
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ar.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bg.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ca.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_cs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_da.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_de.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_el.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_es.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_et.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_he.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hu.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_id.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_it.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ja.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ko.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lt.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nb.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-BR.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-PT.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ro.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ru.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_th.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_tr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_uk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_vi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-CN.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-HK.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-TW.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ar.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bg.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_bs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ca.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_cs.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_da.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_de.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_el.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_es.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_et.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_fr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_he.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_hu.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_id.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_it.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ja.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ko.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lt.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_lv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nb.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_nl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-BR.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_pt-PT.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ro.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_ru.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sl.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_sv.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_th.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_tr.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_uk.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_vi.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-CN.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-HK.json +1 -1
- package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_zh-TW.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ar.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bg.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ca.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_cs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_da.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_de.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_el.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_es.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_et.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_he.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hu.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_id.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_it.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ja.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ko.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lt.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nb.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-BR.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-PT.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ro.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ru.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_th.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_tr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_uk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_vi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-CN.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-HK.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-TW.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ar.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_bg.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_bs.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ca.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_cs.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_da.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_de.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_el.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_es.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_et.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_fi.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_fr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_he.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_hr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_hu.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_id.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_it.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ja.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ko.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_lt.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_lv.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_nb.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_nl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pt-BR.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_pt-PT.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ro.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_ru.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sk.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sl.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_sv.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_th.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_tr.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_uk.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_vi.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-CN.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-HK.json +1 -1
- package/assets/esri/widgets/support/t9n/DatePicker_zh-TW.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ar.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_bg.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_bs.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ca.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_cs.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_da.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_de.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_el.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_es.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_et.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_fi.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_fr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_he.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_hr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_hu.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_id.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_it.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ja.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ko.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_lt.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_lv.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_nb.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_nl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pt-BR.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_pt-PT.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ro.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_ru.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sk.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sl.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_sv.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_th.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_tr.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_uk.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_vi.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-CN.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-HK.json +1 -1
- package/assets/esri/widgets/support/t9n/TimePicker_zh-TW.json +1 -1
- package/chunks/CheckerBoard.glsl.js +3 -3
- package/chunks/ColorMaterial.glsl.js +5 -5
- package/chunks/ComponentShader.glsl.js +1 -1
- package/chunks/Compositing.glsl.js +4 -19
- package/chunks/DefaultMaterial.glsl.js +2 -2
- package/chunks/HUDCompositing.glsl.js +7 -0
- package/chunks/HeatmapDensity.glsl.js +4 -4
- package/chunks/ImageMaterial.glsl.js +1 -1
- package/chunks/Laserlines.glsl.js +5 -5
- package/chunks/LineMarker.glsl.js +1 -1
- package/chunks/MeasurementArrow.glsl.js +3 -3
- package/chunks/NativeLine.glsl.js +1 -1
- package/chunks/OITCompositing.glsl.js +13 -0
- package/chunks/OverlayCompositing.glsl.js +8 -0
- package/chunks/Path.glsl.js +3 -3
- package/chunks/Pattern.glsl.js +1 -1
- package/chunks/Precipitation.glsl.js +3 -3
- package/chunks/RealisticTree.glsl.js +2 -2
- package/chunks/RibbonLine.glsl.js +25 -25
- package/chunks/ShadedColorMaterial.glsl.js +1 -1
- package/chunks/ShadowHighlight.glsl.js +1 -1
- package/chunks/SlicePlaneMaterial.glsl.js +2 -2
- package/chunks/Terrain.glsl.js +4 -4
- package/chunks/WaterSurface.glsl.js +1 -1
- package/chunks/ar.js +1 -1
- package/chunks/bg_BG.js +1 -1
- package/chunks/boundedPlane.js +1 -1
- package/chunks/bs_BA.js +1 -1
- package/chunks/ca_ES.js +1 -1
- package/chunks/cameraUtilsPlanar.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/cs_CZ.js +1 -1
- package/chunks/da_DK.js +1 -1
- package/chunks/de_CH.js +1 -1
- package/chunks/de_DE.js +1 -1
- package/chunks/el_GR.js +1 -1
- package/chunks/en_CA.js +1 -1
- package/chunks/en_US.js +1 -1
- package/chunks/es_ES.js +1 -1
- package/chunks/et_EE.js +1 -1
- package/chunks/fi_FI.js +1 -1
- package/chunks/fr_FR.js +1 -1
- package/chunks/he_IL.js +1 -1
- package/chunks/hr_HR.js +1 -1
- package/chunks/hu_HU.js +1 -1
- package/chunks/id_ID.js +1 -1
- package/chunks/index.js +1 -1
- package/chunks/it_IT.js +1 -1
- package/chunks/ja_JP.js +1 -1
- package/chunks/ko_KR.js +1 -1
- package/chunks/lt_LT.js +1 -1
- package/chunks/lv_LV.js +1 -1
- package/chunks/mat3.js +1 -1
- package/chunks/nb_NO.js +1 -1
- package/chunks/nl_NL.js +1 -1
- package/chunks/pl_PL.js +1 -1
- package/chunks/pt_BR.js +1 -1
- package/chunks/pt_PT.js +1 -1
- package/chunks/quat.js +1 -1
- package/chunks/quat2.js +1 -1
- package/chunks/quatf64.js +1 -1
- package/chunks/ro_RO.js +1 -1
- package/chunks/ru_RU.js +1 -1
- package/chunks/sk_SK.js +1 -1
- package/chunks/sl_SL.js +1 -1
- package/chunks/sphere.js +1 -1
- package/chunks/sr_RS.js +1 -1
- package/chunks/sv_SE.js +1 -1
- package/chunks/th_TH.js +1 -1
- package/chunks/tr_TR.js +1 -1
- package/chunks/uk_UA.js +1 -1
- package/chunks/vec3.js +1 -1
- package/chunks/vec3f32.js +1 -1
- package/chunks/vec4f64.js +1 -1
- package/chunks/vi_VN.js +1 -1
- package/chunks/zh_Hans.js +1 -1
- package/chunks/zh_Hant.js +1 -1
- package/core/VectorStack.js +1 -1
- package/core/libs/gl-matrix-2/factories/quatf64.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec3f32.js +1 -1
- package/core/libs/gl-matrix-2/factories/vec4f64.js +1 -1
- package/core/libs/gl-matrix-2/math/mat3.js +1 -1
- package/core/libs/gl-matrix-2/math/quat.js +1 -1
- package/core/libs/gl-matrix-2/math/vec3.js +1 -1
- package/core/perspectiveUtils.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/geohash/GeohashTree.js +1 -1
- package/geometry/support/MeshTransform.js +1 -1
- package/geometry/support/axisAngle.js +1 -1
- package/geometry/support/axisAngleDegrees.js +1 -1
- package/geometry/support/lineSegment.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/gltf.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/node.js +1 -1
- package/geometry/support/meshUtils/georeference.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/geometry/support/meshUtils/projection.js +1 -1
- package/geometry/support/meshUtils/rotate.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/interfaces.d.ts +70 -0
- package/layers/VoxelWasmPerSceneView.js +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/layers/mixins/EditBusLayer.js +1 -1
- package/layers/mixins/OperationalLayer.js +1 -1
- package/layers/support/AggregateField.js +1 -1
- package/layers/support/ControlPointsGeoreference.js +1 -1
- package/layers/support/ExportImageServiceParameters.js +1 -1
- package/layers/support/OutStatistic.js +1 -1
- package/layers/support/VoxelVolume.js +1 -1
- package/layers/support/voxelPlaneUtils.js +1 -1
- package/package.json +1 -1
- package/rest/support/AggregateFeatureSet.js +5 -0
- package/support/revision.js +1 -1
- package/views/2d/ViewState.js +1 -1
- package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
- package/views/2d/engine/imagery/RasterVFTile.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
- package/views/2d/engine/webgl/OverlayContainer.js +1 -1
- package/views/2d/engine/webgl/TiledDisplayObject.js +1 -1
- package/views/2d/engine/webgl/WGLTile.js +1 -1
- package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/features/controllers/FeatureController2D.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/support/BinStore.js +1 -1
- package/views/2d/layers/features/support/ClusterStore.js +1 -1
- package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
- package/views/2d/layers/imagery/ImageryView2D.js +1 -1
- package/views/2d/layers/support/DebugOverlay.js +1 -1
- package/views/2d/layers/support/ExportStrategy.js +1 -1
- package/views/2d/layers/support/FeatureLayerProxy.js +1 -1
- package/views/2d/layers/support/clusterUtils.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/Dimensioning/DimensioningTool.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionComputation.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionVisualization.js +1 -1
- package/views/3d/analysis/Dimensioning/lengthDimensionUtils.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/sliceToolConfig.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/camera/constraintUtils/distance.js +1 -1
- package/views/3d/camera/constraintUtils/tilt.js +1 -1
- package/views/3d/environment/CloudsComposition.js +1 -1
- package/views/3d/environment/CloudsCompositionParameters.js +1 -1
- package/views/3d/environment/CloudsGenerator.js +1 -1
- package/views/3d/environment/CloudsPresets.js +1 -1
- package/views/3d/environment/EnvironmentRenderer.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/environment/PanoramicAtmosphere.js +1 -1
- package/views/3d/environment/Precipitation.js +1 -1
- package/views/3d/environment/SceneViewEnvironmentManager.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.js +1 -1
- package/views/3d/environment/weatherUtils.js +1 -1
- package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
- package/views/3d/externalRenderers/RenderContext.js +1 -1
- package/views/3d/glTF/internal/Resource.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/editingTools/reshapeGraphic/edgeOffsetUtils.js +1 -1
- package/views/3d/interactive/editingTools/settings.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
- package/views/3d/interactive/manipulatorUtils.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/ImageryLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudWorker.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/elevationAlignPointsInFeatures.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/layers/i3s/I3SElevationProvider.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/layers/i3s/PointRenderer.js +1 -1
- package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
- package/views/3d/layers/support/I3STreeDebugger.js +1 -1
- package/views/3d/layers/support/edgeUtils.js +1 -1
- package/views/3d/layers/support/uvUtils.js +1 -1
- package/views/3d/state/Frustum.js +1 -1
- package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
- package/views/3d/state/controllers/RotateController.js +1 -1
- package/views/3d/state/controllers/global/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
- package/views/3d/state/controllers/local/ZoomController.js +1 -1
- package/views/3d/state/controllers/momentum/ZoomPlanarMomentumController.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/support/FrustumExtentIntersection.js +1 -1
- package/views/3d/support/orientedBoundingBox.js +1 -1
- package/views/3d/support/pointsOfInterest/CameraOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/CenterOnSurface.js +1 -1
- package/views/3d/support/pointsOfInterest/PointsOfInterest.js +1 -1
- package/views/3d/support/sunUtils.js +1 -1
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/DepthRange.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +13 -13
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +9 -9
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
- package/views/3d/webgl-engine/core/util/TwoVectorPosition.js +1 -1
- package/views/3d/webgl-engine/lib/AnimationTimer.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryRecord.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/Highlight.js +1 -1
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/ObjectAndLayerIdRenderHelper.js +1 -1
- package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
- package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/Update.js +5 -0
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgePreprocessing.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceOctree.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
- package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
- package/views/3d/webgl-engine/lighting/SceneLighting.js +1 -1
- package/views/3d/webgl-engine/lighting/SphericalHarmonics.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterGLMaterial.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/parts/ScreenshotManager.js +1 -1
- package/views/3d/webgl-engine/shaders/Compositing.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/CompositingTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/HUDCompositingTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/OITCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/OITCompositingTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/OverlayCompositing.glsl.js +5 -0
- package/views/3d/webgl-engine/shaders/OverlayCompositingTechnique.js +5 -0
- package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/draw/support/surfaceCoordinateSystems.js +1 -1
- package/views/interactive/coordinateHelper.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
- package/views/interactive/snapping/LineSnapper.js +1 -1
- package/views/interactive/snapping/ParallelLineSnapper.js +1 -1
- package/views/interactive/snapping/RightAngleSnapper.js +1 -1
- package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
- package/views/interactive/snapping/SnappingAlgorithm.js +1 -1
- package/views/interactive/snapping/SnappingManager.js +1 -1
- package/views/interactive/snapping/featureSources/FeatureCollectionSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/FeatureServiceSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
- package/views/interactive/snapping/featureSources/SnappingCandidateElevationAligner.js +1 -1
- package/views/interactive/snapping/featureSources/SnappingResultElevationFilter.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorker.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorkerHandle.js +1 -1
- package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
- package/views/interactive/snapping/featureSources/snappingResultElevationUtils.js +5 -0
- package/views/interactive/snapping/snappingUtils.js +1 -1
- package/views/layers/FeatureLayerView.js +1 -1
- package/views/navigation/PanSphericalMomentumEstimator.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/views/support/euclideanAreaMeasurementUtils.js +1 -1
- package/views/support/geometry3dUtils.js +1 -1
- package/widgets/Directions/support/resources.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/ElevationProfile/support/ProfileLines3D.js +1 -1
- package/widgets/ElevationProfile/support/constants.js +1 -1
- package/widgets/Feature/FeatureRelationship/FeatureRelationshipViewModel.js +1 -1
- package/widgets/Feature/FeatureRelationship.js +1 -1
- package/widgets/Legend/LegendViewModel.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/Weather/LabeledSlider.js +1 -1
- package/widgets/Weather.js +1 -1
- package/assets/esri/core/workers/chunks/0059699bf824f851d51c.js +0 -1
- package/assets/esri/core/workers/chunks/01a6005569d0820992a0.js +0 -1
- package/assets/esri/core/workers/chunks/2eb547a0be305f2c816c.js +0 -1
- package/assets/esri/core/workers/chunks/36dd5654df5c7f00406d.js +0 -1
- package/assets/esri/core/workers/chunks/36e0a0d5f86b2b4b88f9.js +0 -1
- package/assets/esri/core/workers/chunks/8b8a813f5e6d6551a816.js +0 -1
- package/assets/esri/core/workers/chunks/bf84189bd9bf3de81df9.js +0 -1
- package/assets/esri/core/workers/chunks/cd7f5c3d328166f28f59.js +0 -1
- package/assets/esri/core/workers/chunks/de128d8a643b4297940b.js +0 -1
- package/assets/esri/core/workers/chunks/e208d9c34f5db4481441.js +0 -1
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{lerp as t,clamp as e}from"../../../core/mathUtils.js";import{d as
|
|
5
|
+
import{lerp as t,clamp as e}from"../../../core/mathUtils.js";import{isSome as i}from"../../../core/maybe.js";import{d as n,i as o,r as a,n as r,o as l}from"../../../chunks/mat4.js";import{c}from"../../../chunks/mat4f64.js";import{s,h as u,n as m,g as d,v as g,a as h}from"../../../chunks/vec3.js";import{f as b,c as f,a as y}from"../../../chunks/vec3f64.js";import{ViewingMode as p}from"../../ViewingMode.js";import{S as A}from"../../../chunks/SunCalc.js";import{angle as w}from"./mathUtils.js";const N={local:{altitude:1500,ambientAtNight:.1,ambientAtNoon:.45,ambientAtTwilight:.2,directAtNoon:.65,directAtTwilight:.7},global:{altitude:8e5,ambient:.015,direct:.75},planarDirection:{localAltitude:1e4,globalAltitude:1e6,globalAngles:{azimuth:1.3*Math.PI,altitude:.6*Math.PI}}};function T(n,o,a,r,l,c){s(c.ambient.color,1,1,1),c.ambient.intensity=N.global.ambient,s(c.direct.color,1,1,1),c.direct.intensity=N.global.direct;const m=o[2],d=e((Math.abs(m)-N.local.altitude)/(N.global.altitude-N.local.altitude),0,1);let g;if(c.globalFactor=d,i(n)&&(g=A.getTimes(n,o[1],o[0])),d<1){let e;if(i(n))e=G(n,g,r);else{const t=E(r);e={direct:{intensity:N.local.directAtNoon*t.direct,color:b(1,1,1)},ambient:{intensity:N.local.ambientAtNoon*t.ambient,color:b(1,1,1)},timeOfDay:"early afternoon"}}u(c.ambient.color,e.ambient.color,c.ambient.color,d),c.ambient.intensity=t(e.ambient.intensity,c.ambient.intensity,d),u(c.direct.color,e.direct.color,c.direct.color,d),c.direct.intensity=t(e.direct.intensity,c.direct.intensity,d),c.specularStrength="rainy"===r||"snowy"===r||"foggy"===r?0:1,c.environmentStrength="rainy"===r?.7:"snowy"===r||"foggy"===r?.75:1}c.noonFactor=i(n)?D(n,g):1,i(n)?M(n,o,a,c.direct.directionToLightSource):v(l,a,c.direct.directionToLightSource)}function v(t,e,i){e===p.Global?m(L,t.eye):s(L,0,0,1),d(R,t.viewForward,-1);const o=w(R,L),a=Math.max(o-2*_,0),r=.85*a/(a+1),l=Math.max(_,o-_-r);n(F,-l,t.viewRight),g(i,R,F),h(i,i,d(U,t.viewRight,C)),m(i,i)}function M(t,i,n,c){const u=z,m=o(j);if(n===p.Global)A.getPosition(t,0,0,u),s(c,0,0,-1),a(m,m,-u.azimuth),r(m,m,-u.altitude),g(c,c,m);else{const n=N.planarDirection,o=n.globalAngles,r=i[2];let d=(Math.abs(r)-n.localAltitude)/(n.globalAltitude-n.localAltitude);d=e(d,0,1),d<1?(A.getPosition(t,i[1],i[0],u),u.azimuth=(1-d)*u.azimuth+d*o.azimuth,u.altitude=(1-d)*u.altitude+d*o.altitude):(u.azimuth=o.azimuth,u.altitude=o.altitude),s(c,0,-1,0),l(m,m,-u.azimuth),a(m,m,-u.altitude),g(c,c,m)}}function x(t,e){if(e===p.Global)return!0;const i=N.planarDirection;return Math.abs(t)<i.localAltitude}function S(t,e,i,n,o){const a=t.getTime(),r=e.getTime()-a,l=Math.floor(r/i)+1,c=new Array(l);for(let s=0;s<l;++s)k.setTime(a+i*s),c[s]=f(),M(k,n,o,c[s]);return c}const O=b(.5773502691896258,-.5773502691896258,.5773502691896258);class P{constructor(){this.ambient={color:b(1,1,1),intensity:.55},this.direct={color:b(1,1,1),intensity:.55,directionToLightSource:y(O)},this.noonFactor=.5,this.globalFactor=0,this.specularStrength=1,this.environmentStrength=1}}const j=c(),z={azimuth:0,altitude:0};function D(t,i){const n=t.valueOf();let o,a;i.polarException===A.PolarException.MIDNIGHT_SUN?(o=n-60*(t.getHours()+48)*60*1e3-60*t.getMinutes()*1e3,a=o+432e6):i.polarException===A.PolarException.POLAR_NIGHT?(o=n-2,a=n-1):(o=i.sunrise.valueOf(),a=i.sunset.valueOf());const r=o+(a-o)/2;return 1-e(Math.abs(n-r)/432e5,0,1)}function E(t){switch(t){case"disabled":case"sunny":case"cloudy":return{direct:1,ambient:1};case"rainy":return{direct:.4,ambient:1.2};case"snowy":return{direct:.5,ambient:1.3};case"foggy":return{direct:.2,ambient:1.6}}}function I(t,e){const i=(t[0]+t[1]+t[2])/3;for(let n=0;n<3;n++)t[n]=t[n]+(i-t[n])*e;return t}function G(t,e,i){const n=t.valueOf();let o,a;e.polarException===A.PolarException.MIDNIGHT_SUN?(o=n-60*(t.getHours()+48)*60*1e3-60*t.getMinutes()*1e3,a=o+432e6):e.polarException===A.PolarException.POLAR_NIGHT?(o=n-2,a=n-1):(o=e.sunrise.valueOf(),a=e.sunset.valueOf());const r=a-o,l=o+r/2,c=r/4,s=l-c,u=l+c,m=.06*r,d=o-m/2,g=o+m/2,h=a-m/2,f=a+m/2,y=N.local,p=[.01,y.ambientAtNight],w=[.8,.8,1],T=[.01,.01,.01],v=[y.directAtTwilight,y.ambientAtTwilight],M=[1,.6,.5],x=[.8,.8,1],S=[.9*y.directAtNoon,y.ambientAtNoon],O=[1,.98,.98],P=[.98,.98,1],j=[y.directAtNoon,y.ambientAtNoon],z=[1,1,1],D=[1,1,1],G=S,k=O,F=P,L=v,R=M,U=x;let _,C,V=[0,0],q=[0,0,0],B=[0,0,0];n<d||n>f?(V=p,q=T,B=w,C="night"):n<g?(_=g-d,V=H(n-d,_,p,v),q=H(n-d,_,T,M),B=H(n-d,_,w,x),C="sun rising"):n<s?(_=s-g,V=H(n-g,_,v,S),q=H(n-g,_,M,O),B=H(n-g,_,x,P),C="early morning"):n<l?(_=l-s,V=H(n-s,_,S,j),q=H(n-s,_,O,z),B=H(n-s,_,P,D),C="late morning"):n<u?(_=u-l,V=H(n-l,_,j,G),q=H(n-l,_,z,k),B=H(n-l,_,D,F),C="early afternoon"):n<h?(_=h-u,V=H(n-u,_,G,L),q=H(n-u,_,k,R),B=H(n-u,_,F,U),C="late afternoon"):n<f&&(_=f-h,V=H(n-h,_,L,p),q=H(n-h,_,R,T),B=H(n-h,_,U,w),C="sun setting");let J=0;switch(i){case"rainy":case"foggy":J=.9;case"snowy":J=.5}J>0&&(q=I(q,J),B=I(B,J));const K=b(q[0],q[1],q[2]),Q=b(B[0],B[1],B[2]),W=E(i);return{direct:{intensity:V[0]*W.direct,color:K},ambient:{intensity:V[1]*W.ambient,color:Q},timeOfDay:C}}function H(t,e,i,n){const o=[];for(let a=0;a<i.length;a++)o[a]=(n[a]-i[a])*t/e+i[a];return o}const k=new Date(0),F=c(),L=f(),R=f(),U=f(),_=.25,C=.2;export{P as ColorAndIntensity,T as computeColorAndIntensity,S as computeDirectionsOverTime,x as computeShadowsEnabled,v as computeVirtualLightDirection};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{Cyclical as r,cyclicalPI as s}from"../../../core/Cyclical.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import{clamp as a,deg2rad as n}from"../../../core/mathUtils.js";import{isSome as o,isNone as l,unwrap as h}from"../../../core/maybe.js";import{watch as c,sync as d}from"../../../core/reactiveUtils.js";import{addFrameTask as u}from"../../../core/scheduling.js";import{Milliseconds as p}from"../../../core/time.js";import{property as _}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as m}from"../../../core/accessorSupport/decorators/subclass.js";import{a as y}from"../../../chunks/vec2.js";import{a as g,b as f,E as v,c as R,i as T}from"../../../chunks/vec3.js";import{c as O}from"../../../chunks/vec3f64.js";import{t as w,b as D,a as x}from"../../../chunks/vec4.js";import{c as E,f as S}from"../../../chunks/vec4f64.js";import{projectVectorToVector as P}from"../../../geometry/projection.js";import{getReferenceEllipsoid as U}from"../../../geometry/projectionEllipsoid.js";import{create as M,width as C,copy as j,center as I,height as N,intersection as b,contains as A,intersects as G,offset as H}from"../../../geometry/support/aaBoundingRect.js";import{create as L,wrap as V}from"../../../geometry/support/ray.js";import{b as k,e as B,t as F}from"../../../chunks/sphere.js";import{angleAroundAxis as q}from"../../../geometry/support/vector.js";import{y2lat as W}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as z}from"../state/utils/viewUtils.js";import Y from"../support/debugFlags.js";import{PointGraphics as X}from"../support/debugUtils.js";import{OverlayIndex as K}from"./interfaces.js";import{computeOverlayResolution as Z}from"./Overlay.js";import{OverlayRenderer as J}from"./OverlayRenderer.js";import{RenderRequestType as Q,ValidationState as $}from"../webgl-engine/lib/basicInterfaces.js";import{newIntersector as ee}from"../webgl-engine/lib/Intersector.js";import{fromValues as te}from"../webgl-engine/lib/LocalOriginFactory.js";import{SortedRenderGeometryRenderer as re}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{removeLoadedShaderModules as se}from"../webgl-engine/parts/requireUtils.js";import{TaskPriority as ie}from"../../support/Scheduler.js";const ae=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let ne,oe=class extends t{constructor(e){super(e),this._handles=new i,this._spatialReference=null,this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._hasUnusedRenderTargets=!1,this._longitudeCyclical=null,this._latestOriginId=0,this._maxResolution=has("esri-mobile")?2048:4096,this._animationTimeLast=0}get running(){return this._placementDirty&&(this._drapeSources.size>0||this._view.graphics.length>0||Y.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!this.suspended&&this.surface.ready}get _isSpherical(){return this._view.state.isGlobal}get _worldToPCSRatio(){return o(this._spatialReference)&&this._spatialReference.isGeographic&&!this._view.state.isLocal?U(this._spatialReference).metersPerDegree:1}get _view(){return this.surface.view}get suspended(){return this.surface.suspended}get updating(){return this.running||this.renderer.updating||this._contentUpdated}get hasHighlights(){return this.renderer.hasHighlights}get rendersOccluded(){return this.renderer.rendersOccluded}initialize(){const e=this._view;this.renderer=new J({view:e,worldToPCSRatio:this._worldToPCSRatio,spatialReference:this._spatialReference}),this._groundIntersector=ee(this._view.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this._handles.add([this.renderer.events.on("has-highlights",(()=>{this.setDrawTexturesDirty(),this.notifyChange("hasHighlights")})),this.renderer.events.on("has-water",(t=>e._stage?.renderView.setRenderParameters({hasOverlayWater:t}))),this.renderer.events.on("renders-occluded",(()=>{this.setDrawTexturesDirty(),this.notifyChange("rendersOccluded")})),this.renderer.events.on("content-changed",(()=>this.setDrawTexturesDirty())),this.renderer.events.on("textures-disposed",(()=>this.updateOverlayResult())),c((()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location]),(()=>this.setPlacementDirty())),c((()=>e.state?.pixelRatio),(()=>this.setPlacementDirty()),d),this.surface.on("elevation-change",(()=>this.setPlacementDirty())),e.on("resize",(()=>this.setPlacementDirty())),u({preRender:e=>{this._contentUpdated=!1,this.renderer.processSyncDrapeSources(),this.renderer.hasOverlays&&(this._dispatchAnimationUpdate(e),this._drawOverlayTextures(this.renderer.overlays,Q.UPDATE)),this._hasUnusedRenderTargets&&this._collectUnusedRenderTargetMemory()}}),e.resourceController.scheduler.registerTask(ie.OVERLAY,this),e._stage.renderView.events.on("force-camera-for-screenshot",(e=>{this._updateOverlays(e,Q.BACKGROUND),this.renderer.hasOverlays&&this._drawOverlayTextures(this.renderer.overlays,Q.BACKGROUND,e)}))])}destroy(){this.renderer.dispose(),this._handles&&(this._handles.destroy(),this._handles=null),o(ne)&&(ne.hide(),ne=null)}get hasOverlays(){return this.renderer.hasOverlays}setSpatialReference(e){this._spatialReference=e,this.renderer.spatialReference=e,this._longitudeCyclical=null;const t=this._view.renderSpatialReference;o(e)&&o(t)?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this._longitudeCyclical=e.isWebMercator?new r(-20037508.342787,20037508.342787):new r(-180,180),this.renderer.longitudeCyclical=this._longitudeCyclical),this.renderer&&(this.renderer.worldToPCSRatio=this._worldToPCSRatio)):this.renderer.disposeOverlays()}get gpuMemoryUsage(){return this.renderer.gpuMemoryUsage}registerDrapeSource(e,t,r){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const s=this.renderer.createDrapeSourceRenderer(e,t,r);return this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange("running"),s}registerGeometryDrapeSource(e){return this.registerDrapeSource(e,re)}_updateDrapeSourceExtent(e){2===this.renderer.overlays.length&&o(e.setDrapingExtent)&&o(this._spatialReference)&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange("running"))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}updateOverlayResult(){this._view._stage?.renderView.setRenderParameters({overlays:this.renderer.overlays})}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.setDrawTexturesDirty()}setPlacementDirty(){this._placementDirty=!0}runTask(){this._updateOverlays(this._view.state.camera,Q.UPDATE)}_updateOverlays(e,t){if(!this._spatialReference)return;const r=Z(e.fullWidth,e.fullHeight,this._maxResolution);this._computeOverlayExtents(e,r,de);const s=C(de.inner)/C(de.outer);this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const i=this._updateOverlay(K.INNER,de.inner,r,1*de.pixelRatioAdjustment,de.mapUnitsPerPixel),a=this._updateOverlay(K.OUTER,de.outer,r,s*de.pixelRatioAdjustment,de.mapUnitsPerPixel);i!==me.EXTENT&&a!==me.EXTENT||(this._drapeSources.forEach((e=>this._updateDrapeSourceExtent(e))),this.surface.updateTileOverlayParams(t)),i===me.NONE&&a===me.NONE||this.setDrawTexturesDirty(),this._placementDirty=!1}_updateOverlay(e,t,r,s,i){if(0===this.renderer.overlays.length)return me.NONE;const a=this.renderer.overlays[e],n=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=s,le(t,a.extent)&&r===a.resolution)return n===i?me.NONE:me.RERENDER_ONLY;j(a.extent,t),a.resolution=r;const o=I(a.extent);return a.renderLocalOrigin=te(o[0],o[1],0,"OV_"+this._latestOriginId++),me.EXTENT}setTileParameters(e){const t=e.renderData.overlay;if(this.renderer.overlays.length>0){const r=this.renderer.overlays[K.INNER],s=this.renderer.overlays[K.OUTER],i=e.extent;this._rectInsideRect(r.extent,i)||this._rectanglesOverlap(i,r.extent)||this._rectanglesOverlap(i,s.extent)?(this._setTileOverlayData(i,K.INNER,t),this._setTileOverlayData(i,K.OUTER,t)):(this._clearTileOverlayData(K.INNER,t),this._clearTileOverlayData(K.OUTER,t))}else this._clearTileOverlayData(K.INNER,t),this._clearTileOverlayData(K.OUTER,t)}overlayPixelSizeInMapUnits(e){if(0===this.renderer.overlays.length)return 0;const t=this.renderer.overlays[K.INNER],r=this.renderer.overlays[K.OUTER],s=this._pointIsInExtent(e,t.extent)?t:r;return(s.extent[2]-s.extent[0])/s.resolution}_setTileOverlayData(e,t,r){if(0===this.renderer.overlays.length)return;const s=this.renderer.overlays[t].extent,i=C(s),a=N(s);let n=e[0];if(this._longitudeCyclical){n=this._longitudeCyclical.minimalMonotonic(s[0],n);const t=this._longitudeCyclical.minimalMonotonic(s[0],e[2]);n>t&&(n=t-(e[2]-e[0]))}r.setScale(t,C(e)/i,N(e)/a),r.setOffset(t,(n-s[0])/i,(e[1]-s[1])/a)}_clearTileOverlayData(e,t){t.setScale(e,-1,-1),t.setOffset(e,-1,-1)}async reloadShaders(){se(),await this.renderer.reloadShaders(),this.setDrawTexturesDirty(),this.runTask()}_dispatchAnimationUpdate(e){const t=p(e.time-this._animationTimeLast);(t>=this.surface.view._stage.renderView.animationTimestep||o(this.forcedAnimationTime)||this._drawTexturesDirty||this._drawTexturesAnimateDirty)&&(this.renderer.updateAnimation({dt:t,forcedTime:this.forcedAnimationTime,camera:this._view.state.camera})&&(this._drawTexturesAnimateDirty=!0),this._animationTimeLast=e.time)}setDrawTexturesDirty(){this.renderer.hasOverlays?(this._contentUpdated=!0,this._drawTexturesDirty=!0):this.setPlacementDirty()}_intersectGroundFromView(e,t,r,s){const i=this._view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,_e,t,r);if(l(i))return!1;const a=i.origin,n=g(ce,i.origin,i.direction);return this._groundIntersector.reset(a,n,e),this._groundIntersector.intersect([],null),this._view.basemapTerrain.intersect(this._groundIntersector,null,a,n),this._groundIntersector.results.min.getIntersectionPoint(s)}_findHorizonBasedPointOfInterest(e,t){let r=.5;const i=.55,n=this._view.renderCoordsHelper.getAltitude(e.eye),o=this._view.pointsOfInterest.centerOnSurfaceFrequent,l=1e-5,h=a(o.estimatedSurfaceAltitude,e.aboveGround?-1/0:n+l,e.aboveGround?n-l:1/0),c=e.aboveGround;if("global"===this._view.viewingMode){const t=ce;k(B(F,U(this._view.spatialReference).radius+h),V(e.eye,e.viewForward),t),f(t,t,e.eye);const a=s.normalize(q(e.viewForward,t,e.viewRight))/e.fovY+.5,n=a<=0||a>=1?.5:i;r=c?n*a:a+n*(1-a)}else{const t=.5*Math.PI-Math.acos(-e.viewForward[2]),s=Math.tan(t),n=S(0,s,1,0),o=w(n,n,e.projectionMatrix)[1],l=a(.5+.5*o,0,1);r=1===l||0===l?.5:c?l*i:1-(1-l)*i}return!!this._intersectGroundFromView(e,.5,r,t)&&v(t,e.eye)<o.distance*o.distance}_computeOverlayExtents(e,t,r){const s=this._view.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,i=O();this._findHorizonBasedPointOfInterest(e,i)||R(i,s);const a=Math.max(.1,T(e.eye,i)),c=z(this._view.renderCoordsHelper,s,e.eye),d=Math.PI/2-Math.abs(c-Math.PI/2);Y.OVERLAY_SHOW_CENTER?(l(ne)&&(ne=new X(this._view.graphics,"red")),ne.show(i,this._renderSR)):o(ne)&&ne.hide(),this._overlaySREqualsRenderSR||P(i,this._renderSR,i,this._spatialReference);const u=this.surface.extent,p=!this._isSpherical&&o(this._spatialReference)&&this._spatialReference.isGeographic,_=p&&o(this._spatialReference)?1/U(this._spatialReference).metersPerDegree:1,m=e.perRenderPixelRatio*a*_;r.mapUnitsPerPixel=m/this._worldToPCSRatio;let g=t*m/2,f=!1,v=p?90:1/0;this._isSpherical&&o(u)&&o(this._spatialReference)&&(this._spatialReference.isWebMercator?(g/=Math.cos(W(i[1])),v=u[3]):(f=!0,g/=U(this._spatialReference).metersPerDegree,v=90),g>=v&&(g=v,i[1]=0,this._spatialReference.isWebMercator&&(i[0]=0)));let w=1;f&&(w=1/Math.max(.2,Math.cos(Math.abs(n(i[1])))),g*w>180&&(w=180/g),r.mapUnitsPerPixel*=w);const E=Math.log(2)/12;g=Math.exp(Math.round(Math.log(g)/E)*E);const S=g*w,M=32,I=.5*t/(M*S),N=.5*t/(M*g);i[0]=Math.round(i[0]*I)/I,i[1]=Math.round(i[1]*N)/N;const G=r.inner;G[0]=i[0]-S,G[1]=i[1]-g,G[2]=i[0]+S,G[3]=i[1]+g,this._isSpherical&&this._shiftExtentToFitBounds(G,1/0,v);const H=r.outer;if(6*S>C(u))j(H,h(u));else if(d<=.25*Math.PI)H[0]=G[0]-S,H[1]=G[1]-g,H[2]=G[2]+S,H[3]=G[3]+g;else{P(e.eye,this._renderSR,ce,this._spatialReference),y(he,i,ce);let t=-Math.atan2(he[1],he[0])+.125*Math.PI;t<0&&(t+=2*Math.PI);const r=Math.floor(t/(.25*Math.PI));D(he,ae[r],2*g),he[0]*=w,he[2]*=w,x(H,G,he)}if(this._isSpherical)H[0]=this._longitudeCyclical.clamp(H[0]),H[2]=this._longitudeCyclical.clamp(H[2]),H[1]=Math.max(H[1],-v),H[3]=Math.min(H[3],v);else{const e=b(G,u,ue),t=b(H,u,pe);A(e,t)&&(H[2]=H[0],H[3]=H[1])}const L=Math.abs(G[2]-G[0])/t;r.mapUnitsPerPixel=Math.max(r.mapUnitsPerPixel,L),r.pixelRatioAdjustment=r.mapUnitsPerPixel/L}_drawOverlayTextures(e,t,r=this._view.state.camera){if(0===e.length||!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return;const s=this._drawTexturesDirty;this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1;const i=this._drawOverlay(e[K.INNER],r),a=this._drawOverlay(e[K.OUTER],r);i!==$.CHANGED&&a!==$.CHANGED||this.surface.updateTileOverlayParams(Q.UPDATE),this._collectUnusedRenderTargetMemory(),this.updateOverlayResult(),s?(this.surface.requestRender(t),t===Q.UPDATE&&this.surface.requestUpdate()):this.surface.requestRender(Q.BACKGROUND)}_drawOverlay(e,t){return this._longitudeCyclical?e.setupGeometryViewsCyclical(this._longitudeCyclical):e.setupGeometryViewsDirect(),e.draw(this.renderer,t.pixelRatio)}_collectUnusedRenderTargetMemory(){if(this._hasUnusedRenderTargets=!1,this.renderer.hasOverlays){const e=performance.now();this._hasUnusedRenderTargets=this.renderer.collectUnusedRenderTargetMemory(e)}}_rectanglesOverlap(e,t){return!l(e)&&(this._longitudeCyclical?(this._longitudeCyclical.contains(t[0],t[2],e[0])||this._longitudeCyclical.contains(t[0],t[2],e[2])||this._longitudeCyclical.contains(e[0],e[2],t[0]))&&!(e[1]>t[3]||e[3]<t[1]):G(e,t))}_rectInsideRect(e,t){return!l(t)&&(this._longitudeCyclical?this._longitudeCyclical.contains(e[0],e[2],t[0])&&this._longitudeCyclical.contains(e[0],e[2],t[2])&&t[1]>e[1]&&t[3]<e[3]:A(e,t))}_pointIsInExtent(e,t){if(this._longitudeCyclical)return this._longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];const r=e.x,s=e.y;return r>t[0]&&r<t[2]&&s>t[1]&&s<t[3]}_shiftExtentToFitBounds(e,t,r){let s=0,i=0;e[0]<-t?s=e[0]+t:e[2]>t&&(s=t-e[2]),e[1]<-r?i=e[1]+r:e[3]>r&&(i=r-e[3]),H(e,s,i)}get test(){return{renderer:this.renderer,update:()=>this.runTask()}}};function le(e,t){const r=1e-5,s=Y.TESTS_DISABLE_OPTIMIZATIONS?0:r*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]);return Math.abs(t[0]-e[0])<=s&&Math.abs(t[1]-e[1])<=s&&Math.abs(t[2]-e[2])<=s&&Math.abs(t[3]-e[3])<=s}e([_()],oe.prototype,"_spatialReference",void 0),e([_({readOnly:!0})],oe.prototype,"running",null),e([_()],oe.prototype,"_placementDirty",void 0),e([_()],oe.prototype,"_contentUpdated",void 0),e([_()],oe.prototype,"_isSpherical",null),e([_()],oe.prototype,"_worldToPCSRatio",null),e([_()],oe.prototype,"renderer",void 0),e([_({constructOnly:!0})],oe.prototype,"surface",void 0),e([_()],oe.prototype,"suspended",null),e([_()],oe.prototype,"updating",null),e([_({type:Boolean})],oe.prototype,"hasHighlights",null),e([_({type:Boolean})],oe.prototype,"rendersOccluded",null),oe=e([m("esri.views.3d.terrain.OverlayManager")],oe);const he=E(),ce=O(),de={inner:M(),outer:M(),mapUnitsPerPixel:0,pixelRatioAdjustment:1},ue=M(),pe=M(),_e=L();var me;!function(e){e[e.NONE=0]="NONE",e[e.EXTENT=1]="EXTENT",e[e.RERENDER_ONLY=2]="RERENDER_ONLY"}(me||(me={}));export{oe as OverlayManager};
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{Cyclical as r,cyclicalPI as s}from"../../../core/Cyclical.js";import i from"../../../core/Handles.js";import has from"../../../core/has.js";import{clamp as a,deg2rad as n}from"../../../core/mathUtils.js";import{isSome as o,unwrapOr as l,isNone as h,unwrap as c}from"../../../core/maybe.js";import{watch as d,sync as u}from"../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../core/scheduling.js";import{Milliseconds as _}from"../../../core/time.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{a as g}from"../../../chunks/vec2.js";import{a as f,b as v,E as R,c as T,i as w}from"../../../chunks/vec3.js";import{c as O}from"../../../chunks/vec3f64.js";import{t as D,b as x,a as E}from"../../../chunks/vec4.js";import{c as S,f as P}from"../../../chunks/vec4f64.js";import{projectVectorToVector as U}from"../../../geometry/projection.js";import{getReferenceEllipsoid as M}from"../../../geometry/projectionEllipsoid.js";import{create as C,width as j,copy as I,center as N,height as b,intersection as A,contains as G,intersects as H,offset as L}from"../../../geometry/support/aaBoundingRect.js";import{create as V,wrap as k}from"../../../geometry/support/ray.js";import{b as B,e as F,t as q}from"../../../chunks/sphere.js";import{angleAroundAxis as W}from"../../../geometry/support/vector.js";import{y2lat as z}from"../../../geometry/support/webMercatorUtils.js";import{viewAngle as Y}from"../state/utils/viewUtils.js";import X from"../support/debugFlags.js";import{PointGraphics as K}from"../support/debugUtils.js";import{OverlayIndex as Z}from"./interfaces.js";import{computeOverlayResolution as J}from"./Overlay.js";import{OverlayRenderer as Q}from"./OverlayRenderer.js";import{RenderRequestType as $,ValidationState as ee}from"../webgl-engine/lib/basicInterfaces.js";import{newIntersector as te}from"../webgl-engine/lib/Intersector.js";import{fromValues as re}from"../webgl-engine/lib/LocalOriginFactory.js";import{SortedRenderGeometryRenderer as se}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{removeLoadedShaderModules as ie}from"../webgl-engine/parts/requireUtils.js";import{TaskPriority as ae}from"../../support/Scheduler.js";const ne=[[-.1,-2,3.9,2],[-.1,-3.9,3.9,.1],[-2,-3.9,2,.1],[-3.9,-3.9,.1,.1],[-3.9,-2,.1,2],[-3.9,-.1,.1,3.9],[-2,-.1,2,3.9],[-.1,-.1,3.9,3.9]];let oe,le=class extends t{constructor(e){super(e),this._handles=new i,this._spatialReference=null,this._renderSR=null,this._overlaySREqualsRenderSR=!0,this._drapeSources=new Set,this._drapeTargets=new Set,this._placementDirty=!1,this._contentUpdated=!1,this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1,this._hasUnusedRenderTargets=!1,this._longitudeCyclical=null,this._latestOriginId=0,this._maxResolution=has("esri-mobile")?2048:4096,this._animationTimeLast=0}get running(){return this._placementDirty&&(this._drapeSources.size>0||this._view.graphics.length>0||X.OVERLAY_DRAW_DEBUG_TEXTURE)&&!!this._spatialReference&&!this.suspended&&this.surface.ready}get _isSpherical(){return this._view.state.isGlobal}get _worldToPCSRatio(){return o(this._spatialReference)&&this._spatialReference.isGeographic&&!this._view.state.isLocal?M(this._spatialReference).metersPerDegree:1}get _view(){return this.surface.view}get suspended(){return this.surface.suspended}get updating(){return this.running||this.renderer.updating||this._contentUpdated}get hasHighlights(){return this.renderer.hasHighlights}get rendersOccluded(){return this.renderer.rendersOccluded}initialize(){const e=this._view;this.renderer=new Q({view:e,worldToPCSRatio:this._worldToPCSRatio,spatialReference:this._spatialReference}),this._groundIntersector=te(this._view.state.viewingMode),this._groundIntersector.options.backfacesTerrain=!0,this._groundIntersector.options.invisibleTerrain=!0,this._groundIntersector.options.hud=!1,this._handles.add([this.renderer.events.on("has-highlights",(()=>{this.setDrawTexturesDirty(),this.notifyChange("hasHighlights")})),this.renderer.events.on("has-water",(t=>e._stage?.renderView.setRenderParameters({hasOverlayWater:t}))),this.renderer.events.on("renders-occluded",(()=>{this.setDrawTexturesDirty(),this.notifyChange("rendersOccluded")})),this.renderer.events.on("content-changed",(()=>this.setDrawTexturesDirty())),this.renderer.events.on("textures-disposed",(()=>this.updateOverlayResult())),d((()=>[e.pointsOfInterest?.renderPointOfView,e.pointsOfInterest?.centerOnSurfaceFrequent?.location]),(()=>this.setPlacementDirty())),d((()=>e.state?.pixelRatio),(()=>this.setPlacementDirty()),u),this.surface.on("elevation-change",(()=>this.setPlacementDirty())),e.on("resize",(()=>this.setPlacementDirty())),p({preRender:e=>{this._contentUpdated=!1,this.renderer.processSyncDrapeSources(),this.renderer.hasOverlays&&(this._dispatchAnimationUpdate(e),this._drawOverlayTextures(this.renderer.overlays,$.UPDATE)),this._hasUnusedRenderTargets&&this._collectUnusedRenderTargetMemory()}}),e.resourceController.scheduler.registerTask(ae.OVERLAY,this),e._stage.renderView.events.on("force-camera-for-screenshot",(e=>{this._updateOverlays(e,$.BACKGROUND),this.renderer.hasOverlays&&this._drawOverlayTextures(this.renderer.overlays,$.BACKGROUND,e)}))])}destroy(){this.renderer.dispose(),this._handles&&(this._handles.destroy(),this._handles=null),o(oe)&&(oe.hide(),oe=null)}get hasOverlays(){return this.renderer.hasOverlays}setSpatialReference(e){this._spatialReference=e,this.renderer.spatialReference=e,this._longitudeCyclical=null;const t=this._view.renderSpatialReference;o(e)&&o(t)?(this._renderSR=t,this._overlaySREqualsRenderSR=e.equals(this._renderSR),this._isSpherical&&(this._longitudeCyclical=e.isWebMercator?new r(-20037508.342787,20037508.342787):new r(-180,180),this.renderer.longitudeCyclical=this._longitudeCyclical),this.renderer&&(this.renderer.worldToPCSRatio=this._worldToPCSRatio)):this.renderer.disposeOverlays()}get gpuMemoryUsage(){return this.renderer.gpuMemoryUsage}registerDrapeSource(e,t,r){this._drapeSources.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const s=this.renderer.createDrapeSourceRenderer(e,t,r);return this._updateDrapeSourceExtent(e),this._setContentDirty(),this.notifyChange("running"),s}registerGeometryDrapeSource(e){return this.registerDrapeSource(e,se)}_updateDrapeSourceExtent(e){2===this.renderer.overlays.length&&o(e.setDrapingExtent)&&o(this._spatialReference)&&e.setDrapingExtent(this.renderer.overlays,this._spatialReference)}unregisterDrapeSource(e){this._drapeSources.has(e)&&(this._drapeSources.delete(e),this.renderer.removeDrapeSourceRenderer(e),this.renderer.ensureDrapeSources(this._drapeSources),this._setContentDirty(),this.notifyChange("running"))}registerDrapeTarget(e){this._drapeTargets.add(e),this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources)}updateOverlayResult(){this._view._stage?.renderView.setRenderParameters({overlays:this.renderer.overlays})}unregisterDrapeTarget(e){this._drapeTargets.delete(e),this.renderer.ensureDrapeTargets(this._drapeTargets)}_setContentDirty(){this.setPlacementDirty(),this.setDrawTexturesDirty()}setPlacementDirty(){this._placementDirty=!0}runTask(){this._updateOverlays(this._view.state.camera,$.UPDATE)}_updateOverlays(e,t){if(!this._spatialReference)return;const r=J(e.fullWidth,e.fullHeight,this._maxResolution);this._computeOverlayExtents(e,r,ue);const s=j(ue.inner)/j(ue.outer);this.renderer.ensureOverlays(this._drapeTargets,this._drapeSources);const i=this._updateOverlay(Z.INNER,ue.inner,r,1*ue.pixelRatioAdjustment,ue.mapUnitsPerPixel),a=this._updateOverlay(Z.OUTER,ue.outer,r,s*ue.pixelRatioAdjustment,ue.mapUnitsPerPixel);i!==ye.EXTENT&&a!==ye.EXTENT||(this._drapeSources.forEach((e=>this._updateDrapeSourceExtent(e))),this.surface.updateTileOverlayParams(t)),i===ye.NONE&&a===ye.NONE||this.setDrawTexturesDirty(),this._placementDirty=!1}_updateOverlay(e,t,r,s,i){if(0===this.renderer.overlays.length)return ye.NONE;const a=this.renderer.overlays[e],n=a.mapUnitsPerPixel;if(a.mapUnitsPerPixel=i,a.pixelRatio=s,he(t,a.extent)&&r===a.resolution)return n===i?ye.NONE:ye.RERENDER_ONLY;I(a.extent,t),a.resolution=r;const o=N(a.extent);return a.renderLocalOrigin=re(o[0],o[1],0,"OV_"+this._latestOriginId++),ye.EXTENT}setTileParameters(e){const t=e.renderData.overlay;if(this.renderer.overlays.length>0){const r=this.renderer.overlays[Z.INNER],s=this.renderer.overlays[Z.OUTER],i=e.extent;this._rectInsideRect(r.extent,i)||this._rectanglesOverlap(i,r.extent)||this._rectanglesOverlap(i,s.extent)?(this._setTileOverlayData(i,Z.INNER,t),this._setTileOverlayData(i,Z.OUTER,t)):(this._clearTileOverlayData(Z.INNER,t),this._clearTileOverlayData(Z.OUTER,t))}else this._clearTileOverlayData(Z.INNER,t),this._clearTileOverlayData(Z.OUTER,t)}overlayPixelSizeInMapUnits(e){if(0===this.renderer.overlays.length)return 0;const t=this.renderer.overlays[Z.INNER],r=this.renderer.overlays[Z.OUTER],s=this._pointIsInExtent(e,t.extent)?t:r;return(s.extent[2]-s.extent[0])/s.resolution}_setTileOverlayData(e,t,r){if(0===this.renderer.overlays.length)return;const s=this.renderer.overlays[t].extent,i=j(s),a=b(s);let n=e[0];if(this._longitudeCyclical){n=this._longitudeCyclical.minimalMonotonic(s[0],n);const t=this._longitudeCyclical.minimalMonotonic(s[0],e[2]);n>t&&(n=t-(e[2]-e[0]))}r.setScale(t,j(e)/i,b(e)/a),r.setOffset(t,(n-s[0])/i,(e[1]-s[1])/a)}_clearTileOverlayData(e,t){t.setScale(e,-1,-1),t.setOffset(e,-1,-1)}async reloadShaders(){ie(),await this.renderer.reloadShaders(),this.setDrawTexturesDirty(),this.runTask()}_dispatchAnimationUpdate(e){const t=_(e.time-this._animationTimeLast),r=l(this._view.state.forcedAnimationTime,e.time);(t>=this.surface.view._stage.renderView.animationTimestep||o(this._view.state.forcedAnimationTime)||this._drawTexturesDirty||this._drawTexturesAnimateDirty)&&(this.renderer.updateAnimation({time:r,camera:this._view.state.camera})&&(this._drawTexturesAnimateDirty=!0),this._animationTimeLast=e.time)}setDrawTexturesDirty(){this.renderer.hasOverlays?(this._contentUpdated=!0,this._drawTexturesDirty=!0):this.setPlacementDirty()}_intersectGroundFromView(e,t,r,s){const i=this._view.sceneIntersectionHelper.getCenterRayWithSubpixelOffset(e,me,t,r);if(h(i))return!1;const a=i.origin,n=f(de,i.origin,i.direction);return this._groundIntersector.reset(a,n,e),this._groundIntersector.intersect([],null),this._view.basemapTerrain.intersect(this._groundIntersector,null,a,n),this._groundIntersector.results.min.getIntersectionPoint(s)}_findHorizonBasedPointOfInterest(e,t){let r=.5;const i=.55,n=this._view.renderCoordsHelper.getAltitude(e.eye),o=this._view.pointsOfInterest.centerOnSurfaceFrequent,l=1e-5,h=a(o.estimatedSurfaceAltitude,e.aboveGround?-1/0:n+l,e.aboveGround?n-l:1/0),c=e.aboveGround;if("global"===this._view.viewingMode){const t=de;B(F(q,M(this._view.spatialReference).radius+h),k(e.eye,e.viewForward),t),v(t,t,e.eye);const a=s.normalize(W(e.viewForward,t,e.viewRight))/e.fovY+.5,n=a<=0||a>=1?.5:i;r=c?n*a:a+n*(1-a)}else{const t=.5*Math.PI-Math.acos(-e.viewForward[2]),s=Math.tan(t),n=P(0,s,1,0),o=D(n,n,e.projectionMatrix)[1],l=a(.5+.5*o,0,1);r=1===l||0===l?.5:c?l*i:1-(1-l)*i}return!!this._intersectGroundFromView(e,.5,r,t)&&R(t,e.eye)<o.distance*o.distance}_computeOverlayExtents(e,t,r){const s=this._view.pointsOfInterest.centerOnSurfaceFrequent.renderLocation,i=O();this._findHorizonBasedPointOfInterest(e,i)||T(i,s);const a=Math.max(.1,w(e.eye,i)),l=Y(this._view.renderCoordsHelper,s,e.eye),d=Math.PI/2-Math.abs(l-Math.PI/2);X.OVERLAY_SHOW_CENTER?(h(oe)&&(oe=new K(this._view.graphics,"red")),oe.show(i,this._renderSR)):o(oe)&&oe.hide(),this._overlaySREqualsRenderSR||U(i,this._renderSR,i,this._spatialReference);const u=this.surface.extent,p=!this._isSpherical&&o(this._spatialReference)&&this._spatialReference.isGeographic,_=p&&o(this._spatialReference)?1/M(this._spatialReference).metersPerDegree:1,m=e.perRenderPixelRatio*a*_;r.mapUnitsPerPixel=m/this._worldToPCSRatio;let y=t*m/2,f=!1,v=p?90:1/0;this._isSpherical&&o(u)&&o(this._spatialReference)&&(this._spatialReference.isWebMercator?(y/=Math.cos(z(i[1])),v=u[3]):(f=!0,y/=M(this._spatialReference).metersPerDegree,v=90),y>=v&&(y=v,i[1]=0,this._spatialReference.isWebMercator&&(i[0]=0)));let R=1;f&&(R=1/Math.max(.2,Math.cos(Math.abs(n(i[1])))),y*R>180&&(R=180/y),r.mapUnitsPerPixel*=R);const D=Math.log(2)/12;y=Math.exp(Math.round(Math.log(y)/D)*D);const S=y*R,P=32,C=.5*t/(P*S),N=.5*t/(P*y);i[0]=Math.round(i[0]*C)/C,i[1]=Math.round(i[1]*N)/N;const b=r.inner;b[0]=i[0]-S,b[1]=i[1]-y,b[2]=i[0]+S,b[3]=i[1]+y,this._isSpherical&&this._shiftExtentToFitBounds(b,1/0,v);const H=r.outer;if(6*S>j(u))I(H,c(u));else if(d<=.25*Math.PI)H[0]=b[0]-S,H[1]=b[1]-y,H[2]=b[2]+S,H[3]=b[3]+y;else{U(e.eye,this._renderSR,de,this._spatialReference),g(ce,i,de);let t=-Math.atan2(ce[1],ce[0])+.125*Math.PI;t<0&&(t+=2*Math.PI);const r=Math.floor(t/(.25*Math.PI));x(ce,ne[r],2*y),ce[0]*=R,ce[2]*=R,E(H,b,ce)}if(this._isSpherical)H[0]=this._longitudeCyclical.clamp(H[0]),H[2]=this._longitudeCyclical.clamp(H[2]),H[1]=Math.max(H[1],-v),H[3]=Math.min(H[3],v);else{const e=A(b,u,pe),t=A(H,u,_e);G(e,t)&&(H[2]=H[0],H[3]=H[1])}const L=Math.abs(b[2]-b[0])/t;r.mapUnitsPerPixel=Math.max(r.mapUnitsPerPixel,L),r.pixelRatioAdjustment=r.mapUnitsPerPixel/L}_drawOverlayTextures(e,t,r=this._view.state.camera){if(0===e.length||!this._drawTexturesDirty&&!this._drawTexturesAnimateDirty)return;const s=this._drawTexturesDirty;this._drawTexturesDirty=!1,this._drawTexturesAnimateDirty=!1;const i=this._drawOverlay(e[Z.INNER],r),a=this._drawOverlay(e[Z.OUTER],r);i!==ee.CHANGED&&a!==ee.CHANGED||this.surface.updateTileOverlayParams($.UPDATE),this._collectUnusedRenderTargetMemory(),this.updateOverlayResult(),s?(this.surface.requestRender(t),t===$.UPDATE&&this.surface.requestUpdate()):this.surface.requestRender($.BACKGROUND)}_drawOverlay(e,t){return this._longitudeCyclical?e.setupGeometryViewsCyclical(this._longitudeCyclical):e.setupGeometryViewsDirect(),e.draw(this.renderer,t.pixelRatio)}_collectUnusedRenderTargetMemory(){if(this._hasUnusedRenderTargets=!1,this.renderer.hasOverlays){const e=performance.now();this._hasUnusedRenderTargets=this.renderer.collectUnusedRenderTargetMemory(e)}}_rectanglesOverlap(e,t){return!h(e)&&(this._longitudeCyclical?(this._longitudeCyclical.contains(t[0],t[2],e[0])||this._longitudeCyclical.contains(t[0],t[2],e[2])||this._longitudeCyclical.contains(e[0],e[2],t[0]))&&!(e[1]>t[3]||e[3]<t[1]):H(e,t))}_rectInsideRect(e,t){return!h(t)&&(this._longitudeCyclical?this._longitudeCyclical.contains(e[0],e[2],t[0])&&this._longitudeCyclical.contains(e[0],e[2],t[2])&&t[1]>e[1]&&t[3]<e[3]:G(e,t))}_pointIsInExtent(e,t){if(this._longitudeCyclical)return this._longitudeCyclical.contains(t[0],t[2],e.x)&&e.y>=t[1]&&e.y<=t[3];const r=e.x,s=e.y;return r>t[0]&&r<t[2]&&s>t[1]&&s<t[3]}_shiftExtentToFitBounds(e,t,r){let s=0,i=0;e[0]<-t?s=e[0]+t:e[2]>t&&(s=t-e[2]),e[1]<-r?i=e[1]+r:e[3]>r&&(i=r-e[3]),L(e,s,i)}get test(){return{renderer:this.renderer,update:()=>this.runTask()}}};function he(e,t){const r=1e-5,s=X.TESTS_DISABLE_OPTIMIZATIONS?0:r*Math.max(e[2]-e[0],e[3]-e[1],t[2]-t[0],t[3]-t[1]);return Math.abs(t[0]-e[0])<=s&&Math.abs(t[1]-e[1])<=s&&Math.abs(t[2]-e[2])<=s&&Math.abs(t[3]-e[3])<=s}e([m()],le.prototype,"_spatialReference",void 0),e([m({readOnly:!0})],le.prototype,"running",null),e([m()],le.prototype,"_placementDirty",void 0),e([m()],le.prototype,"_contentUpdated",void 0),e([m()],le.prototype,"_isSpherical",null),e([m()],le.prototype,"_worldToPCSRatio",null),e([m()],le.prototype,"renderer",void 0),e([m({constructOnly:!0})],le.prototype,"surface",void 0),e([m()],le.prototype,"suspended",null),e([m()],le.prototype,"updating",null),e([m({type:Boolean})],le.prototype,"hasHighlights",null),e([m({type:Boolean})],le.prototype,"rendersOccluded",null),le=e([y("esri.views.3d.terrain.OverlayManager")],le);const ce=S(),de=O(),ue={inner:C(),outer:C(),mapUnitsPerPixel:0,pixelRatioAdjustment:1},pe=C(),_e=C(),me=V();var ye;!function(e){e[e.NONE=0]="NONE",e[e.EXTENT=1]="EXTENT",e[e.RERENDER_ONLY=2]="RERENDER_ONLY"}(ye||(ye={}));export{le as OverlayManager};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,isSome as n,isNone as h,unwrapOr as d}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{watch as c,syncAndInitial as p,on as u}from"../../../core/reactiveUtils.js";import{someSet as m}from"../../../core/SetUtils.js";import{property as _}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{w as y,f as R}from"../../../chunks/mat4.js";import{s as f}from"../../../chunks/vec3.js";import{f as T}from"../../../chunks/vec3f64.js";import{ViewingMode as w}from"../../ViewingMode.js";import{DrapeTargetType as b,DrapeSourceType as v}from"../layers/interfaces.js";import x from"../support/debugFlags.js";import{OverlayIndex as O,RenderTargetType as S}from"./interfaces.js";import{Overlay as D}from"./Overlay.js";import{OverlayFramebufferObject as j}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderOutput as E}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as A}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{AutoDisposableMixin as F,autoDispose as q}from"../webgl-engine/lib/AutoDisposable.js";import{UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import{Camera as W}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as U}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as V,createQuadVAO as I}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as B}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as H}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as N}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as L}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as G}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as k}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as z}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as Y}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as X}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as J}from"../webgl-engine/lib/TransparencyPassType.js";import{AmbientLight as K}from"../webgl-engine/lighting/Lightsources.js";import{StippleTextureRepository as Q}from"../webgl-engine/materials/StippleTextureRepository.js";import{AlphaMode as Z,CompositingFunction as $}from"../webgl-engine/shaders/CompositingTechniqueConfiguration.js";import{TaskPriority as ee,noBudget as re}from"../../support/Scheduler.js";import{ClearBufferBit as te,PrimitiveType as se,TextureType as ie,PixelFormat as oe,PixelType as ae,TextureSamplingMode as ne}from"../../webgl/enums.js";import{Texture as he}from"../../webgl/Texture.js";import{vertexCount as de}from"../../webgl/Util.js";let le=class extends(F(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new l,this._passParameters=new A,this._rctx=null,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}get _bindParameters(){return this._renderContext.bindParameters}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext;const r=e.waterTextureRepository;this._stippleTextureRepository=new Q(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:w.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._renderContext=new N(this._rctx,new G(this._rctx,this.view.state.viewingMode),new z(this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([c((()=>r.updating),(()=>this.events.emit("content-changed")),p),c((()=>this.spatialReference),(e=>this._localOriginFactory=new B(e)),p),u((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new U(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&ge)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=L.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=V(this._rctx),this._bindParameters.camera=me,this._bindParameters.transparencyPassType=J.NONE,this._bindParameters.lighting.noonFactor=0,this._bindParameters.lighting.globalFactor=0,this._bindParameters.lighting.set([new K(T(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(ee.STAGE,this))}dispose(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=a(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return n(this._overlays)&&n(this._overlayRenderTarget)}get gpuMemoryUsage(){return n(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,k)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);n(s)&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(c((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(h(e))return;const r=this._renderers.get(e);h(r)||(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(n(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return d(this._overlays,[])}ensureDrapeTargets(e){n(this._overlays)&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=m(e,(e=>e.drapeTargetType===b.WithoutRasterImage))))}ensureDrapeSources(e){n(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=m(e,(e=>e.drapeSourceType===v.Features)),r.hasDrapedRasterSource=m(e,(e=>e.drapeSourceType===v.RasterImage))}))}ensureOverlays(e,r){h(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new D(O.INNER,this._overlayRenderTarget),new D(O.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._updateSortedDrapeSourceRenderers(),t&&(n(this._overlays)&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources(re,(e=>e.updatePolicy===M.SYNC))}isEmpty(){if(x.OVERLAY_DRAW_DEBUG_TEXTURE)return!1;for(const e of this._renderers.values())if(!e.isEmpty)return!1;return!0}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.output;if(this.isEmpty()||i===E.Highlight&&!this.hasHighlights||i===E.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const o=r.fbo;if(!o.isValid())return!1;const a=2*e.resolution,h=e.resolution;o.resize(a,h);const d=this._rctx;me.pixelRatio=e.pixelRatio*t,this._renderContext.output=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===E.Normal?L.DRAPED_WATER:L.DRAPED_MATERIAL,e.applyViewport(this._rctx),o.bind(d),e.index===O.INNER&&(d.setClearColor(0,0,0,0),d.clearSafe(te.COLOR_BUFFER_BIT));const l=r.type===S.ColorNoRasterImage?ce.ExcludeRasterImage:r.type===S.Occluded?ce.OccludedOnly:ce.Normal;if(l===ce.OccludedOnly&&(this._renderContext.renderOccludedMask=ge),x.OVERLAY_DRAW_DEBUG_TEXTURE&&l!==ce.OccludedOnly)for(let n=0;n<s.numViews;n++)this._setViewParameters(s.extents[n],e,me),this._drawDebugTexture(e.resolution,ue[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:r,renderer:t})=>{if(l===ce.ExcludeRasterImage&&r.drapeSourceType===v.RasterImage)return;const{fullOpacity:c}=r,p=n(c)&&c<1&&i===E.Color;p&&(this.bindTemporaryFramebuffer(this._rctx,a,h),d.clearSafe(te.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,me),t.render(this._renderContext,this._bindParameters);p&&n(this._temporaryFBO)&&(o.bind(d),this.view._stage.renderView.compositingHelper.composite(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),Z.PremultipliedAlpha,c,$.OverlayWithTransparency,e.index))})),d.bindFramebuffer(null),o.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){h(this._temporaryFBO)&&(this._temporaryFBO=new j(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(!this._sortedDrapeSourceRenderersDirty)return;if(this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedRenderers.push(new pe(t,r,s<0?1/0:s))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,y(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),R(t.viewMatrix,[-e[0],-e[1],0]),this._bindParameters.camera=t}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(se.TRIANGLE_STRIP,0,de(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r,t){if(f(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;const s=new Uint8Array(e*r*4);let i=0;for(let a=0;a<r;a++)for(let t=0;t<e;t++){const o=Math.floor(t/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=255):(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=1&o&&1&n?1&t^1&a?0:255:1&o^1&n?0:128)}this._passParameters.texture=new he(this._rctx,{target:ie.TEXTURE_2D,pixelFormat:oe.RGBA,dataType:ae.UNSIGNED_BYTE,samplingMode:ne.NEAREST,width:e,height:r},s);const o=new X;o.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Y,o),this._quadVAO=I(this._rctx)}get test(){return{drapeSourceRenderers:this._renderers,getDrapeSourceRenderer:e=>this._renderers.get(e)}}};var ce;e([_()],le.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([q()],le.prototype,"_shaderTechniqueRepository",void 0),e([q()],le.prototype,"_stippleTextureRepository",void 0),e([_({constructOnly:!0})],le.prototype,"view",void 0),e([_()],le.prototype,"worldToPCSRatio",void 0),e([_()],le.prototype,"spatialReference",void 0),e([_({type:Boolean,readOnly:!0})],le.prototype,"updating",null),le=e([g("esri.views.3d.terrain.OverlayRenderer")],le),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(ce||(ce={}));class pe{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const ue=[[1,.5,.5],[.5,.5,1]],me=new W;me.near=1,me.far=1e4,me.relativeElevation=null;const _e=-2,ge=H.OccludeAndTransparent;export{_e as DRAPED_Z,ce as DrawPassOption,le as OverlayRenderer,ge as overlayRenderOccludedFlag};
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Evented.js";import s from"../../../core/Handles.js";import{someMap as i}from"../../../core/MapUtils.js";import{releaseMaybe as o,disposeMaybe as a,isSome as n,isNone as h,unwrapOr as d}from"../../../core/maybe.js";import l from"../../../core/PooledArray.js";import{watch as c,syncAndInitial as p,on as u}from"../../../core/reactiveUtils.js";import{someSet as _}from"../../../core/SetUtils.js";import{property as m}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{w as y,f as R}from"../../../chunks/mat4.js";import{s as f}from"../../../chunks/vec3.js";import{f as T}from"../../../chunks/vec3f64.js";import{ViewingMode as w}from"../../ViewingMode.js";import{DrapeTargetType as b,DrapeSourceType as v}from"../layers/interfaces.js";import x from"../support/debugFlags.js";import{OverlayIndex as O,RenderTargetType as S}from"./interfaces.js";import{Overlay as D}from"./Overlay.js";import{OverlayFramebufferObject as j}from"./OverlayFramebufferObject.js";import{OverlayRenderTarget as P}from"./OverlayRenderTarget.js";import{ShaderOutput as E}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{T as A}from"../../../chunks/TextureOnly.glsl.js";import{ShaderTechniqueRepository as C}from"../webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js";import{AutoDisposableMixin as F,autoDispose as q}from"../webgl-engine/lib/AutoDisposable.js";import{UpdatePolicy as M}from"../webgl-engine/lib/basicInterfaces.js";import{Camera as U}from"../webgl-engine/lib/Camera.js";import{GLMaterialRepository as V}from"../webgl-engine/lib/GLMaterialRepository.js";import{createEmptyDepthTexture as W,createQuadVAO as I}from"../webgl-engine/lib/glUtil3D.js";import{GridLocalOriginFactory as B}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderOccludedFlag as H}from"../webgl-engine/lib/Material.js";import{OverlayRenderContext as L}from"../webgl-engine/lib/RenderContext.js";import{RenderSlot as N}from"../webgl-engine/lib/RenderSlot.js";import{ShadowMap as G}from"../webgl-engine/lib/ShadowMap.js";import{SortedRenderGeometryRenderer as k}from"../webgl-engine/lib/SortedRenderGeometryRenderer.js";import{SSAOHelper as z}from"../webgl-engine/lib/SSAOHelper.js";import{TextureTechnique as Y}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as X}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{TransparencyPassType as J}from"../webgl-engine/lib/TransparencyPassType.js";import{AmbientLight as K}from"../webgl-engine/lighting/Lightsources.js";import{StippleTextureRepository as Q}from"../webgl-engine/materials/StippleTextureRepository.js";import{TaskPriority as Z,noBudget as $}from"../../support/Scheduler.js";import{ClearBufferBit as ee,PrimitiveType as re,TextureType as te,PixelFormat as se,PixelType as ie,TextureSamplingMode as oe}from"../../webgl/enums.js";import{Texture as ae}from"../../webgl/Texture.js";import{vertexCount as ne}from"../../webgl/Util.js";let he=class extends(F(r)){constructor(e){super(e),this._overlays=null,this._overlayRenderTarget=null,this._hasHighlights=!1,this._rendersOccluded=!1,this._hasWater=!1,this._handles=new s,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new l,this._passParameters=new A,this._rctx=null,this._materialRepository=null,this._screenToWorldRatio=1,this._localOriginFactory=null,this.worldToPCSRatio=1,this.events=new t,this.longitudeCyclical=null}get _bindParameters(){return this._renderContext.bindParameters}get rctx(){return this._rctx}get materialRepository(){return this._materialRepository}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}initialize(){const e=this.view._stage.renderView;this._rctx=e.renderingContext;const r=e.waterTextureRepository;this._stippleTextureRepository=new Q(e.renderingContext),this._shaderTechniqueRepository=new C({rctx:this._rctx,viewingMode:w.Local,stippleTextureRepository:this._stippleTextureRepository,waterTextureRepository:r}),this._renderContext=new L(this._rctx,new G(this._rctx,this.view.state.viewingMode),new z(this._shaderTechniqueRepository,this._rctx,(()=>{}))),this._handles.add([c((()=>r.updating),(()=>this.events.emit("content-changed")),p),c((()=>this.spatialReference),(e=>this._localOriginFactory=new B(e)),p),u((()=>this.view.allLayerViews),"after-changes",(()=>this._sortedDrapeSourceRenderersDirty=!0))]),this._materialRepository=new V(e.textureRepository,this._shaderTechniqueRepository,(e=>{(e.renderOccluded&_e)>0!==this._rendersOccluded&&this._updateRendersOccluded(),this.events.emit("content-changed"),this.notifyChange("updating")}),(()=>this.events.emit("content-changed"))),this._bindParameters.slot=N.DRAPED_MATERIAL,this._bindParameters.highlightDepthTexture=W(this._rctx),this._bindParameters.camera=pe,this._bindParameters.transparencyPassType=J.NONE,this._bindParameters.newLighting.noonFactor=0,this._bindParameters.newLighting.globalFactor=0,this._bindParameters.newLighting.set([new K(T(1,1,1))]),this._handles.add(this.view.resourceController.scheduler.registerTask(Z.STAGE,this))}dispose(){this._handles.destroy(),this._renderers.forEach((e=>e.destroy())),this._renderers.clear(),this._debugTextureTechnique=o(this._debugTextureTechnique),this._passParameters.texture=a(this._passParameters.texture),this._bindParameters.highlightDepthTexture=a(this._bindParameters.highlightDepthTexture),this._shaderTechniqueRepository=a(this._shaderTechniqueRepository),this._temporaryFBO=a(this._temporaryFBO),this._quadVAO=a(this._quadVAO),this.disposeOverlays()}get updating(){return this._sortedDrapeSourceRenderersDirty||i(this._renderers,(e=>e.updating))}get hasOverlays(){return n(this._overlays)&&n(this._overlayRenderTarget)}get gpuMemoryUsage(){return n(this._overlayRenderTarget)?this._overlayRenderTarget.gpuMemoryUsage:0}createGeometryDrapeSourceRenderer(e){return this.createDrapeSourceRenderer(e,k)}createDrapeSourceRenderer(e,r,t){const s=this._renderers.get(e);n(s)&&s.destroy();const i=new r({...t,rendererContext:this,drapeSource:e});return this._renderers.set(e,i),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this._handles.add(c((()=>e.fullOpacity),(()=>this.events.emit("content-changed"))),e),i}removeDrapeSourceRenderer(e){if(h(e))return;const r=this._renderers.get(e);h(r)||(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this._handles.remove(e),r.destroy())}collectUnusedRenderTargetMemory(e){let r=!1;if(n(this._overlayRenderTarget))for(const t of this._overlayRenderTarget.renderTargets){const s=this.overlays[0].validTargets[t.type]||!this.overlays[1].validTargets[t.type];r=this._overlayRenderTarget.validateUsageForTarget(s,t,e)||r}return r}get overlays(){return d(this._overlays,[])}ensureDrapeTargets(e){n(this._overlays)&&this._overlays.forEach((r=>r.hasTargetWithoutRasterImage=_(e,(e=>e.drapeTargetType===b.WithoutRasterImage))))}ensureDrapeSources(e){n(this._overlays)&&this._overlays.forEach((r=>{r.hasDrapedFeatureSource=_(e,(e=>e.drapeSourceType===v.Features)),r.hasDrapedRasterSource=_(e,(e=>e.drapeSourceType===v.RasterImage))}))}ensureOverlays(e,r){h(this._overlays)&&(this._overlayRenderTarget=new P(this._rctx),this._overlays=[new D(O.INNER,this._overlayRenderTarget),new D(O.OUTER,this._overlayRenderTarget)]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r)}disposeOverlays(){this._overlays=null,this._overlayRenderTarget=a(this._overlayRenderTarget),this.events.emit("textures-disposed")}get running(){return this.updating}runTask(e){this._processDrapeSources(e,(()=>!0))}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(e.done)break;(s.destroyed||r(s))&&(i.commitChanges()&&(t=!0,e.madeProgress()))}this._updateSortedDrapeSourceRenderers(),t&&(n(this._overlays)&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.events.emit("content-changed"),this._updateHasHighlights(),this._updateRendersOccluded(),this._updateHasWater())}processSyncDrapeSources(){this._processDrapeSources($,(e=>e.updatePolicy===M.SYNC))}isEmpty(){if(x.OVERLAY_DRAW_DEBUG_TEXTURE)return!1;for(const e of this._renderers.values())if(!e.isEmpty)return!1;return!0}get hasHighlights(){return this._hasHighlights}get hasWater(){return this._hasWater}get rendersOccluded(){return this._rendersOccluded}updateAnimation(e){let r=!1;return this._renderers.forEach((t=>r=t.updateAnimation(e)||r)),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}drawTarget(e,r,t){const s=e.canvasGeometries;if(0===s.numViews)return!1;this._screenToWorldRatio=t*e.mapUnitsPerPixel;const i=r.output;if(this.isEmpty()||i===E.Highlight&&!this.hasHighlights||i===E.Normal&&!this.hasWater||!e.hasSomeSizedView())return!1;const o=r.fbo;if(!o.isValid())return!1;const a=2*e.resolution,h=e.resolution;o.resize(a,h);const d=this._rctx;pe.pixelRatio=e.pixelRatio*t,this._renderContext.output=i,this._bindParameters.screenToWorldRatio=this._screenToWorldRatio,this._bindParameters.screenToPCSRatio=this._screenToWorldRatio*this.worldToPCSRatio,this._bindParameters.slot=i===E.Normal?N.DRAPED_WATER:N.DRAPED_MATERIAL,e.applyViewport(this._rctx),o.bind(d),e.index===O.INNER&&(d.setClearColor(0,0,0,0),d.clearSafe(ee.COLOR_BUFFER_BIT));const l=r.type===S.ColorNoRasterImage?de.ExcludeRasterImage:r.type===S.Occluded?de.OccludedOnly:de.Normal;if(l===de.OccludedOnly&&(this._renderContext.renderOccludedMask=_e),x.OVERLAY_DRAW_DEBUG_TEXTURE&&l!==de.OccludedOnly)for(let n=0;n<s.numViews;n++)this._setViewParameters(s.extents[n],e,pe),this._drawDebugTexture(e.resolution,ce[e.index]);return this._renderers.size>0&&this._sortedRenderers.forAll((({drapeSource:r,renderer:t})=>{if(l===de.ExcludeRasterImage&&r.drapeSourceType===v.RasterImage)return;const{fullOpacity:c}=r,p=n(c)&&c<1&&i===E.Color;p&&(this.bindTemporaryFramebuffer(this._rctx,a,h),d.clearSafe(ee.COLOR_BUFFER_BIT));for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],e,pe),t.render(this._renderContext,this._bindParameters);p&&n(this._temporaryFBO)&&(o.bind(d),this.view._stage.renderView.compositingHelper.compositeOverlay(this._renderContext.bindParameters,this._temporaryFBO.getTexture(),c,e.index))})),d.bindFramebuffer(null),o.generateMipMap(),this._renderContext.resetRenderOccludedMask(),!0}bindTemporaryFramebuffer(e,r,t){h(this._temporaryFBO)&&(this._temporaryFBO=new j(e,!1)),this._temporaryFBO.resize(r,t),this._temporaryFBO.bind(e)}async reloadShaders(){await this._shaderTechniqueRepository.reloadAll()}notifyContentChanged(){this.events.emit("content-changed")}intersect(e,r,t,s){let i=0;for(const o of this._renderers.values())i=o.intersect?.(e,r,t,s,i)??i}_updateSortedDrapeSourceRenderers(){if(!this._sortedDrapeSourceRenderersDirty)return;if(this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this.view.map.allLayers;this._renderers.forEach(((r,t)=>{const s=e.indexOf(t.layer);this._sortedRenderers.push(new le(t,r,s<0?1/0:s))})),this._sortedRenderers.sort(((e,r)=>e.index-r.index))}_setViewParameters(e,r,t){t.viewport[0]=t.viewport[1]=0,t.viewport[2]=t.viewport[3]=r.resolution,y(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),R(t.viewMatrix,[-e[0],-e[1],0]),this._bindParameters.camera=t}_updateHasWater(){const e=i(this._renderers,(e=>e.hasWater));e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water",e))}_updateHasHighlights(){const e=i(this._renderers,(e=>e.hasHighlights));e!==this._hasHighlights&&(this._hasHighlights=e,this.events.emit("has-highlights",e))}_updateRendersOccluded(){const e=i(this._renderers,(e=>e.rendersOccluded));e!==this._rendersOccluded&&(this._rendersOccluded=e,this.events.emit("renders-occluded",e))}_drawDebugTexture(e,r){this._ensureDebugPatternResources(e,e,r);const t=this._rctx;t.bindTechnique(this._debugTextureTechnique,this._passParameters,null),t.bindVAO(this._quadVAO),t.drawArrays(re.TRIANGLE_STRIP,0,ne(this._quadVAO,"geometry"))}_ensureDebugPatternResources(e,r,t){if(f(this._passParameters.color,t[0],t[1],t[2]),this._passParameters.texture)return;const s=new Uint8Array(e*r*4);let i=0;for(let a=0;a<r;a++)for(let t=0;t<e;t++){const o=Math.floor(t/10),n=Math.floor(a/10);o<2||n<2||10*o>e-20||10*n>r-20?(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=255):(s[i++]=255,s[i++]=255,s[i++]=255,s[i++]=1&o&&1&n?1&t^1&a?0:255:1&o^1&n?0:128)}this._passParameters.texture=new ae(this._rctx,{target:te.TEXTURE_2D,pixelFormat:se.RGBA,dataType:ie.UNSIGNED_BYTE,samplingMode:oe.NEAREST,width:e,height:r},s);const o=new X;o.hasAlpha=!0,this._debugTextureTechnique=this._shaderTechniqueRepository.acquire(Y,o),this._quadVAO=I(this._rctx)}get test(){return{drapeSourceRenderers:this._renderers,getDrapeSourceRenderer:e=>this._renderers.get(e)}}};var de;e([m()],he.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([q()],he.prototype,"_shaderTechniqueRepository",void 0),e([q()],he.prototype,"_stippleTextureRepository",void 0),e([m({constructOnly:!0})],he.prototype,"view",void 0),e([m()],he.prototype,"worldToPCSRatio",void 0),e([m()],he.prototype,"spatialReference",void 0),e([m({type:Boolean,readOnly:!0})],he.prototype,"updating",null),he=e([g("esri.views.3d.terrain.OverlayRenderer")],he),function(e){e[e.Normal=0]="Normal",e[e.OccludedOnly=1]="OccludedOnly",e[e.ExcludeRasterImage=2]="ExcludeRasterImage"}(de||(de={}));class le{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const ce=[[1,.5,.5],[.5,.5,1]],pe=new U;pe.near=1,pe.far=1e4,pe.relativeElevation=null;const ue=-2,_e=H.OccludeAndTransparent;export{ue as DRAPED_Z,de as DrawPassOption,he as OverlayRenderer,_e as overlayRenderOccludedFlag};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{equals as e}from"../../../core/arrayUtils.js";import{isPowerOfTwo as t}from"../../../core/mathUtils.js";import{isSome as r,isNone as i,mapOr as s}from"../../../core/maybe.js";import{i as a,j as n,u as o,b as l,n as h,e as d,y as g,F as c}from"../../../chunks/vec3.js";import{c as u,a as m}from"../../../chunks/vec3f64.js";import{empty as p}from"../../../geometry/support/aaBoundingBox.js";import{containsXY as f}from"../../../geometry/support/aaBoundingRect.js";import{earth as y}from"../../../geometry/support/Ellipsoid.js";import{glLayout as _}from"../support/buffer/glUtil.js";import{GeometryState as x}from"./GeometryState.js";import{NeighborIndex as D}from"./interfaces.js";import{LayerClass as v}from"./LayerClass.js";import{PatchGeometry as C,releaseGeometry as S}from"./PatchGeometry.js";import{ENABLE_TERRAIN_INTERNAL_CHECKS as $,internalAssert as E,neighborEdgeIndices as b,oppositeEdge as T,neighborCornerIndices as j,v32s as A,lij2s as V}from"./terrainUtils.js";import{TextureFader as R,ActivationTime as L}from"./TextureFader.js";export{ActivationTime}from"./TextureFader.js";import{isEdgeNeighbor as w}from"./Tile.js";import P from"./TileOverlayData.js";import{fallsWithinLayer as N}from"./tileUtils.js";import{VertexArrayObject as I}from"../webgl-engine/lib/VertexArrayObject.js";import{terrainVertexAttributeLocations as G}from"../webgl-engine/shaders/TerrainTechnique.js";import{BufferObject as M}from"../../webgl/BufferObject.js";class O{constructor(){this.geometryInfo=new C,this.intersectionData=null,this.geometryState=null,this._textureRef=new R((()=>this.tile.surface.textureFadeDuration)),this.overlay=new P,this._geometryStateChangedSinceLastUpdate=!0,this._hasGeometry=!1,this._numVerticesPerSideChanged=!1,this._samplerDataChanged=!1,this._clippingAreaChanged=!1,this._wireframeChanged=!1,this._shadingChanged=!1,this._dirtyEdgeResolutions=15,this._dirtyEdges=15,this._dirtyCorners=15}get tile(){return this._tile}init(e){this.clear(),this._tile=e;const t=this.geometryInfo;t.indices=null,t.vertexAttributes=null,p(t.boundingBox),t.indexCount=0,t.numVerticesPerSide=0,this.intersectionData=null,this.geometryState=new x,this.localOrigin=null,this.overlay.clear()}clear(){this._releaseGeometry(),this.releaseTexture(),this._textureRef.clear(),this._tile=null,this.intersectionData=null,this.geometryState=null}updateGeometryIfNeeded(e){if((!this._vao||this._geometryStateChangedSinceLastUpdate||this._wireframeChanged||this._shadingChanged||this._clippingAreaChanged||this._samplerDataChanged||this._numVerticesPerSideChanged||this._dirtyCorners||this._dirtyEdgeResolutions||this._dirtyEdges)&&(this._updateGeometry(e),this._geometryStateChangedSinceLastUpdate=!1),$&&this.tile.intersectsClippingArea)for(let t=0;t<4;++t)E(this.geometryInfo.outerEdges[t].count===this.geometryState.neighborData.edgeResolutions[t]+1)}_calculateEdgeResolution(e,t){const s=this.tile,a=this.geometryState.numVerticesPerSide-1;if(!s.surface.isGlobal){const t=s.surface.extent;if(r(t)&&(0===e&&s.extent[3]>t[3]||1===e&&s.extent[2]>t[2]||2===e&&s.extent[1]<t[1]||3===e&&s.extent[0]<t[0]))return a}const n=s.level,o=b[e];if(!t)return E(i(s.surface?.rootTiles)||s.surface.updatingRootTiles||!s.shouldHaveNeighbor(o)),a;if(t.isLoaded){const r=t,i=r.renderData.geometryState,s=n-r.level;if(E(s>=0),0===s){const e=i.numVerticesPerSide-1;return Math.max(e,a)}const o=2**s,l=i.neighborData.edgeResolutions[(e+2)%4]/o;return Math.max(1,l)}E(!t.isLeaf);let l=a;return t.forAllSubtreeOnSide(T(o),(e=>e===s||(e.isLoaded?(l=Math.max(l,2**(e.level-n)),!0):(E(!e.isLeaf),!1)))),l}updateNeighborData(){const e=this.tile;if(!e.intersectsClippingArea)return;const r=e.renderData.geometryState.neighborData,i=t=>(t.isLoaded||t.level===e.level)&&t?.intersectsClippingArea,s=r.edgePeerNeighbors,a=r.edgePeerNeighborSamplerVersions;for(let o=0;o<4;++o){const n=e.findNeighborTile(b[o],i),l=z(e,n),h=l?.renderData?.geometryState.samplerDataVersion??-1,d=s[o],g=l!==z(e,d),c=a[o]!==h;s[o]=n,(g||c)&&(a[o]=h,this._markEdgeDirty(o));const u=r.edgeResolutions[o],m=this._calculateEdgeResolution(o,n);E(t(m)),E(m>=1),r.edgeResolutions[o]=m,u!==m&&this._markEdgeResolutionDirty(o)}const n=r.cornerPeerNeighbors;for(let t=0;t<4;++t){const a=e.findNeighborTile(j[t],i);n[t]=a;const o=z(e,s[t]),l=z(e,s[(t+1)%4]),h=z(e,a);q[t]=h,q[(t+1)%4]=l,q[(t+2)%4]=e,q[(t+3)%4]=o,E(q.some((t=>t?.isLoaded||t===e)));const d=q.reduce(((e,t)=>Math.min(e,t?.level??1/0)),1/0);q.forEach(((e,t)=>{e?.level>d&&(q[t]=null)})),E(q.some((t=>t?.isLoaded||t===e)));const g=r.cornerNeighborData[t].cornerTiles,c=r.cornerNeighborData[t].cornerTileSamplerVersions;for(let e=0;e<4;++e){const r=q[e],i=r?.renderData.geometryState.samplerDataVersion??-1,s=g[e]!==r,a=!s&&c[e]!==i;(s||a)&&(g[e]=r,c[e]=i,this._markCornerDirty(t))}E(g.some((t=>t?.isLoaded||t===e)))}$&&E(this.geometryState.neighborData.edgeResolutions.every((e=>e>0)));for(let t=0;t<4;++t)q[t]=null}_updateGeometry(e){if(!this.tile.intersectsClippingArea)return;$&&E(!this.tile.intersectsClippingArea||this.geometryState.neighborData.edgeResolutions.every((e=>e>0))),this.intersectionData=null;const t=this.tile,r=this._vao,i=this.geometryInfo.vertexAttributes,s=!r||!i||this._wireframeChanged||this._shadingChanged||this._numVerticesPerSideChanged||this._samplerDataChanged||this._clippingAreaChanged||this._dirtyEdgeResolutions,a=!s&&(0!==this._dirtyEdges||0!==this._dirtyEdgeResolutions),n=!a&&0!==this._dirtyCorners;s?(this._releaseGeometry(),this._createGeometry(e)):a||n?t.updateEdgeElevations():n?t.updateCornerElevations():console.warn("Update for no reason?"),this._numVerticesPerSideChanged=!1,this._samplerDataChanged=!1,this._dirtyEdgeResolutions=0,this._dirtyEdges=0,this._dirtyCorners=0,this._clippingAreaChanged=!1,this._wireframeChanged=!1}releaseGeometry(){return this._releaseGeometry()}get hasGeometry(){return this._hasGeometry}ensureTexture(e,t){return r(this._texture)&&this._texture.descriptor.width!==e&&this.releaseTexture(),i(this._texture)&&(this._texture=t(),this.tile.setMemoryDirty()),this._texture}releaseTexture(){r(this._texture)&&(this._texture.release(),this._texture=null,this.tile.setMemoryDirty())}_markCornerDirty(e){const t=1<<e;this._dirtyCorners|=t}_markEdgeDirty(e){const t=1<<e;this._dirtyEdges|=t}_markEdgeResolutionDirty(e){const t=1<<e;this._dirtyEdgeResolutions|=t,this._dirtyEdges|=t}_markAllEdgesAndCornersDirty(){this._dirtyCorners=15,this._dirtyEdges=15,this._dirtyEdgeResolutions=15}updateGeometryState(){const t=this._getElevationInfo(),r=this.tile,i=t.samplerData?r.getElevationBasedVerticesPerSide(t.maxTileLevel):r.getDefaultVerticesPerRowOnLevel(),s=Math.max(i,5);let a=r.clippingArea;r.intersectsClippingArea&&!r.isWithinClippingArea||(a=null);const n=this.geometryState;let o=!1;n.numVerticesPerSide!==s&&(this._numVerticesPerSideChanged=!0,n.numVerticesPerSide=s,n.samplerDataVersion++,o=!0),t.changed&&(this._samplerDataChanged=!0,n.samplerData=t.samplerData,n.samplerDataVersion++,o=!0),e(n.clippingArea,a)||(this._clippingAreaChanged=!0,n.clippingArea=a,o=!0);const l=r.surface,h=l.wireframe;n.wireframe!==h&&(this._wireframeChanged=!0,n.wireframe=h,o=!0);const d=l.shading;return n.shading!==d&&(this._shadingChanged=d,n.shading=d,o=d),this._geometryStateChangedSinceLastUpdate||(this._geometryStateChangedSinceLastUpdate=o),o&&this._markAllEdgesAndCornersDirty(),this._hasGeometry=!0,this._geometryStateChangedSinceLastUpdate}_createGeometry(e){this.tile.createGeometry();const t=this.geometryInfo.vertexAttributes,r=this.geometryInfo.indices,i=e.gl;this._vao=new I(e,G,{geometry:_(t.layout)},{geometry:M.createVertex(e,i.STATIC_DRAW,t.buffer)},M.createIndex(e,i.STATIC_DRAW,r)),this._hasGeometry=!0}_releaseGeometry(){return this._hasGeometry=!1,this.intersectionData=null,!!this._vao&&(this._vao.dispose(),this._vao=null,S(this.geometryInfo),!0)}get vao(){return this._vao}setTextureReference(e,t=L.Immediate){r(e)&&e.texture!==this._texture&&this.releaseTexture(),this._textureRef.push(e,t)}get textureReference(){return this._textureRef.current}get nextTextureReference(){return this._textureRef.next}get textureFadeFactor(){return this._textureRef.fadeFactor}get textureIsFading(){return this._textureRef.isFading}_getElevationInfo(){const e=this.geometryState.samplerData,t=this.tile.layerInfo[v.ELEVATION],i=t.length;let s=new Array(i),a=0,n=0,o=!1;for(let l=0;l<i;l++){const i=t[l];if(r(i.upsampleInfo)){const t=i.upsampleInfo.tile,r=t.layerInfo[v.ELEVATION][l].data,h=r&&r.samplerData;e&&e[a]===h||(o=!0),s[a++]=h,n=Math.max(n,t.lij[0])}else if(i.data){const t=this.tile.surface.layerViewByIndex(l,v.ELEVATION);if(N(this.tile,t.layer,!1)){const t=i.data;e&&e[a]===t.samplerData||(o=!0),s[a++]=t.samplerData,n=this.tile.level}}}return r(e)&&e.length!==a&&(o=!0),a>0?s.length=a:s=null,{changed:o,samplerData:s,maxTileLevel:n}}get estimatedGeometryMemoryUsage(){const e=s(this.intersectionData,0,(e=>e.estimatedMemoryUsage));return(this.geometryInfo.indices?.byteLength??0)+(this.geometryInfo.vertexAttributes?.byteLength??0)+e}get textureDescriptor(){return r(this._texture)?this._texture.descriptor:null}get test(){return{hasTexture:null!=this._texture}}checkGeometryWaterproofness(){if(!$)return;const e=this.tile;if(E(e?.isLoaded),!e.isLoaded||!e.intersectsClippingArea)return;if(0===e.level)return;const s=e.surface.extent;if(r(s)&&!e.intersectsExtent(s))return;const p=b.map(((t,i)=>!!r(s)&&(i<2?-1:1)*(e.extent[3-i]-s[3-i])<0)),_=e.level;E(0===this._dirtyCorners),E(0===this._dirtyEdges),E(0===this._dirtyEdgeResolutions),E(!this._numVerticesPerSideChanged),E(!this._samplerDataChanged),E(!this._clippingAreaChanged),E(!this._wireframeChanged);const x=j.map((t=>e.findNeighborCornerTileExact(t,(t=>!t.intersectsClippingArea||t.isLoaded||t.level===e.level))??null)).map((e=>e?.intersectsClippingArea?e:null)),v=this.geometryState.neighborData;for(let t=0;t<4;++t){const r=v.cornerPeerNeighbors[t],i=x[t];E(i===r,`Tile[${e.lij}].corner[${t}] out of date: cur=[${r?.lij}] exp=[${i?.lij}]`)}b.forEach(((s,x)=>{if(p[x])return;const v=e.findNeighborTile(s,(e=>(e.level===_||e?.isLoaded)&&e?.intersectsClippingArea));if(!v){const t=!e.surface.updatingRootTiles&&r(e.surface.rootTiles)&&e.surface.rootTiles.length>0&&e.shouldHaveNeighbor(s);return void E(!t)}E(v.isLoaded||v.level===e.level),E(v===this.geometryState.neighborData.edgePeerNeighbors[x]);const C=_-v.level;if(!v.isLoaded)return E(!v.isLeaf),void E(0===C);E(w(e,v,s)),E(C>=0);const S=2**C;if(C<0)return void E(!1);const $=e.renderData.geometryInfo,b=$.outerEdges[x],T=$.numVerticesPerSide-1,j=v.renderData.geometryInfo;if(!j)return void E(!1);{const t=this.geometryState.neighborData.edgePeerNeighbors[x];(t?.isLoaded||t.isLoaded)&&(E(t==t),E(e.renderData.geometryState.neighborData.edgePeerNeighborSamplerVersions[x]===t.renderData.geometryState.samplerDataVersion),E(this.geometryState.neighborData.edgePeerNeighborSamplerVersions[x]===t.renderData.geometryState.samplerDataVersion))}const R=(x+2)%4,L=j.outerEdges[R],P=b.count-1,N=L.count-1;E(P*S===N,`Tile[${e.lij}]:e${x},res=${P} edgeRes mismatch with Neighbor[${v.lij}]:e${R},res=${N} (expected:${P*S})`);const I=e.extent,G=s===D.NORTH||s===D.SOUTH,M=L.count-1,O=M/2**C,q=b.count-1;if(O<1)return void E(1===q);E(O===q),E(t(O));const z=j.numVerticesPerSide-1;E(C>0||O===Math.max(z,T));const J=e.getNeighborEdgeStartVertexIndex(x,v);E(0<=J&&J<S);const K=J*O;E(0<=K&&K<=M-O);let Q=0,Y=K;b.getVertexPos(U,0),b.getVertexPos(k,b.count-1);const Z=a(U,k),ee=Math.max(W,1e-4*Z);for(let t=0;t<=O;++t){b.getVertexPos(U,Q),L.getVertexPos(k,Y);const a=t/O,p=G?I[0]+a*(I[2]-I[0]):s===D.WEST?I[0]:I[2],_=G?s===D.SOUTH?I[1]:I[3]:I[1]+a*(I[3]-I[1]),C=e.surface.extent;if(i(C)||f(C,p,_)){const t=n(U,k),i=o(U)-y.radius,s=o(k)-y.radius,a=t<ee;if(!a){console.warn(`Tile edge vertex position mismatch: between [${e.lij}].edge${x}[${Q}/${b.count}] and [${v.lij}].edge${R}[${Y}/${L.count}]`),r(C)&&console.warn(" surface extent= ",C," x,y=",p,",",_);const n=u();l(n,e.renderData.localOrigin,v.renderData.localOrigin),o(n)>0&&console.warn(` localOrigins: ${e.renderData.localOrigin} vs ${v.renderData.localOrigin} d=${o(n)} [${n}]`);(()=>{const t=m(U),r=m(k);e.updateEdgeElevations(),v.updateEdgeElevations(),b.getVertexPos(U,Q),L.getVertexPos(k,Y);const i=u();g(i,U,t),o(i)>0&&console.warn(` XXX Tile[${e.lij}] edge out of date: ${t} vs ${U} d=${o(i)} [${i}]`),g(i,k,r),o(i)>0&&console.warn(` XXX Neighbor[${v.lij}] edge out of date: ${r} vs ${k} d=${o(i)} [${i}]`)})(),E(a,`Mismatch in tile [${e.lij}].edge[${x}][${Q}/${b.count}] vs neighbor [${v.lij}].edge[${R}][${Y}/${L.count}] ${A(U)} vs ${A(k)} dist=${t} h(t|n|d)=${i}|${s}|${s-i}`)}if(e.surface.shading){b.getNormal(F,Q),L.getNormal(B,Y),h(X,F),h(H,B);const t=d(X,H),r=!1,i=1-t<.01||r||e===v;if(!i){const r=u();g(r,F,B);const s=()=>`Mismatch in tile edge normal ${V(e.lij)} (${Q}/${b.count-1}) edge ${x} vs neighbor ${V(v.lij)} (${Y}/${L.count-1}) nedge ${R} :${A(F)} vs ${A(B)} dot = ${t} : ${A(r)}`;console.warn("Mismatch in tile edge normal: ",s());{e.updateEdgeElevations(),v.updateEdgeElevations();const t=u(),r=u();b.getNormal(t,Q),L.getNormal(r,Y),c(F,t)||console.warn("Missing update in tile normal: ",A(F)," => ",A(t)),c(B,r)||console.warn("Missing update in neighbor normal: ",A(B)," => ",A(r))}E(i,s())}}}Q+=1,Y+=1}}))}}const U=u(),k=u(),F=u(),B=u(),X=u(),H=u(),W=1,q=[null,null,null,null];function z(e,t){return t?.isLoaded||t===e?t:null}export{O as PatchRenderData,z as neighborTileIfLoadedOrSelf};
|
|
5
|
+
import{equals as e}from"../../../core/arrayUtils.js";import{isPowerOfTwo as t}from"../../../core/mathUtils.js";import{isSome as r,isNone as i,mapOr as s}from"../../../core/maybe.js";import{i as a,j as n,y as o,b as l,n as h,e as d,p as g,F as c}from"../../../chunks/vec3.js";import{c as u,a as m}from"../../../chunks/vec3f64.js";import{empty as p}from"../../../geometry/support/aaBoundingBox.js";import{containsXY as f}from"../../../geometry/support/aaBoundingRect.js";import{earth as y}from"../../../geometry/support/Ellipsoid.js";import{glLayout as _}from"../support/buffer/glUtil.js";import{GeometryState as x}from"./GeometryState.js";import{NeighborIndex as D}from"./interfaces.js";import{LayerClass as v}from"./LayerClass.js";import{PatchGeometry as C,releaseGeometry as S}from"./PatchGeometry.js";import{ENABLE_TERRAIN_INTERNAL_CHECKS as $,internalAssert as E,neighborEdgeIndices as b,oppositeEdge as T,neighborCornerIndices as j,v32s as A,lij2s as V}from"./terrainUtils.js";import{TextureFader as R,ActivationTime as L}from"./TextureFader.js";export{ActivationTime}from"./TextureFader.js";import{isEdgeNeighbor as w}from"./Tile.js";import P from"./TileOverlayData.js";import{fallsWithinLayer as N}from"./tileUtils.js";import{VertexArrayObject as I}from"../webgl-engine/lib/VertexArrayObject.js";import{terrainVertexAttributeLocations as G}from"../webgl-engine/shaders/TerrainTechnique.js";import{BufferObject as M}from"../../webgl/BufferObject.js";class O{constructor(){this.geometryInfo=new C,this.intersectionData=null,this.geometryState=null,this._textureRef=new R((()=>this.tile.surface.textureFadeDuration)),this.overlay=new P,this._geometryStateChangedSinceLastUpdate=!0,this._hasGeometry=!1,this._numVerticesPerSideChanged=!1,this._samplerDataChanged=!1,this._clippingAreaChanged=!1,this._wireframeChanged=!1,this._shadingChanged=!1,this._dirtyEdgeResolutions=15,this._dirtyEdges=15,this._dirtyCorners=15}get tile(){return this._tile}init(e){this.clear(),this._tile=e;const t=this.geometryInfo;t.indices=null,t.vertexAttributes=null,p(t.boundingBox),t.indexCount=0,t.numVerticesPerSide=0,this.intersectionData=null,this.geometryState=new x,this.localOrigin=null,this.overlay.clear()}clear(){this._releaseGeometry(),this.releaseTexture(),this._textureRef.clear(),this._tile=null,this.intersectionData=null,this.geometryState=null}updateGeometryIfNeeded(e){if((!this._vao||this._geometryStateChangedSinceLastUpdate||this._wireframeChanged||this._shadingChanged||this._clippingAreaChanged||this._samplerDataChanged||this._numVerticesPerSideChanged||this._dirtyCorners||this._dirtyEdgeResolutions||this._dirtyEdges)&&(this._updateGeometry(e),this._geometryStateChangedSinceLastUpdate=!1),$&&this.tile.intersectsClippingArea)for(let t=0;t<4;++t)E(this.geometryInfo.outerEdges[t].count===this.geometryState.neighborData.edgeResolutions[t]+1)}_calculateEdgeResolution(e,t){const s=this.tile,a=this.geometryState.numVerticesPerSide-1;if(!s.surface.isGlobal){const t=s.surface.extent;if(r(t)&&(0===e&&s.extent[3]>t[3]||1===e&&s.extent[2]>t[2]||2===e&&s.extent[1]<t[1]||3===e&&s.extent[0]<t[0]))return a}const n=s.level,o=b[e];if(!t)return E(i(s.surface?.rootTiles)||s.surface.updatingRootTiles||!s.shouldHaveNeighbor(o)),a;if(t.isLoaded){const r=t,i=r.renderData.geometryState,s=n-r.level;if(E(s>=0),0===s){const e=i.numVerticesPerSide-1;return Math.max(e,a)}const o=2**s,l=i.neighborData.edgeResolutions[(e+2)%4]/o;return Math.max(1,l)}E(!t.isLeaf);let l=a;return t.forAllSubtreeOnSide(T(o),(e=>e===s||(e.isLoaded?(l=Math.max(l,2**(e.level-n)),!0):(E(!e.isLeaf),!1)))),l}updateNeighborData(){const e=this.tile;if(!e.intersectsClippingArea)return;const r=e.renderData.geometryState.neighborData,i=t=>(t.isLoaded||t.level===e.level)&&t?.intersectsClippingArea,s=r.edgePeerNeighbors,a=r.edgePeerNeighborSamplerVersions;for(let o=0;o<4;++o){const n=e.findNeighborTile(b[o],i),l=z(e,n),h=l?.renderData?.geometryState.samplerDataVersion??-1,d=s[o],g=l!==z(e,d),c=a[o]!==h;s[o]=n,(g||c)&&(a[o]=h,this._markEdgeDirty(o));const u=r.edgeResolutions[o],m=this._calculateEdgeResolution(o,n);E(t(m)),E(m>=1),r.edgeResolutions[o]=m,u!==m&&this._markEdgeResolutionDirty(o)}const n=r.cornerPeerNeighbors;for(let t=0;t<4;++t){const a=e.findNeighborTile(j[t],i);n[t]=a;const o=z(e,s[t]),l=z(e,s[(t+1)%4]),h=z(e,a);q[t]=h,q[(t+1)%4]=l,q[(t+2)%4]=e,q[(t+3)%4]=o,E(q.some((t=>t?.isLoaded||t===e)));const d=q.reduce(((e,t)=>Math.min(e,t?.level??1/0)),1/0);q.forEach(((e,t)=>{e?.level>d&&(q[t]=null)})),E(q.some((t=>t?.isLoaded||t===e)));const g=r.cornerNeighborData[t].cornerTiles,c=r.cornerNeighborData[t].cornerTileSamplerVersions;for(let e=0;e<4;++e){const r=q[e],i=r?.renderData.geometryState.samplerDataVersion??-1,s=g[e]!==r,a=!s&&c[e]!==i;(s||a)&&(g[e]=r,c[e]=i,this._markCornerDirty(t))}E(g.some((t=>t?.isLoaded||t===e)))}$&&E(this.geometryState.neighborData.edgeResolutions.every((e=>e>0)));for(let t=0;t<4;++t)q[t]=null}_updateGeometry(e){if(!this.tile.intersectsClippingArea)return;$&&E(!this.tile.intersectsClippingArea||this.geometryState.neighborData.edgeResolutions.every((e=>e>0))),this.intersectionData=null;const t=this.tile,r=this._vao,i=this.geometryInfo.vertexAttributes,s=!r||!i||this._wireframeChanged||this._shadingChanged||this._numVerticesPerSideChanged||this._samplerDataChanged||this._clippingAreaChanged||this._dirtyEdgeResolutions,a=!s&&(0!==this._dirtyEdges||0!==this._dirtyEdgeResolutions),n=!a&&0!==this._dirtyCorners;s?(this._releaseGeometry(),this._createGeometry(e)):a||n?t.updateEdgeElevations():n?t.updateCornerElevations():console.warn("Update for no reason?"),this._numVerticesPerSideChanged=!1,this._samplerDataChanged=!1,this._dirtyEdgeResolutions=0,this._dirtyEdges=0,this._dirtyCorners=0,this._clippingAreaChanged=!1,this._wireframeChanged=!1}releaseGeometry(){return this._releaseGeometry()}get hasGeometry(){return this._hasGeometry}ensureTexture(e,t){return r(this._texture)&&this._texture.descriptor.width!==e&&this.releaseTexture(),i(this._texture)&&(this._texture=t(),this.tile.setMemoryDirty()),this._texture}releaseTexture(){r(this._texture)&&(this._texture.release(),this._texture=null,this.tile.setMemoryDirty())}_markCornerDirty(e){const t=1<<e;this._dirtyCorners|=t}_markEdgeDirty(e){const t=1<<e;this._dirtyEdges|=t}_markEdgeResolutionDirty(e){const t=1<<e;this._dirtyEdgeResolutions|=t,this._dirtyEdges|=t}_markAllEdgesAndCornersDirty(){this._dirtyCorners=15,this._dirtyEdges=15,this._dirtyEdgeResolutions=15}updateGeometryState(){const t=this._getElevationInfo(),r=this.tile,i=t.samplerData?r.getElevationBasedVerticesPerSide(t.maxTileLevel):r.getDefaultVerticesPerRowOnLevel(),s=Math.max(i,5);let a=r.clippingArea;r.intersectsClippingArea&&!r.isWithinClippingArea||(a=null);const n=this.geometryState;let o=!1;n.numVerticesPerSide!==s&&(this._numVerticesPerSideChanged=!0,n.numVerticesPerSide=s,n.samplerDataVersion++,o=!0),t.changed&&(this._samplerDataChanged=!0,n.samplerData=t.samplerData,n.samplerDataVersion++,o=!0),e(n.clippingArea,a)||(this._clippingAreaChanged=!0,n.clippingArea=a,o=!0);const l=r.surface,h=l.wireframe;n.wireframe!==h&&(this._wireframeChanged=!0,n.wireframe=h,o=!0);const d=l.shading;return n.shading!==d&&(this._shadingChanged=d,n.shading=d,o=d),this._geometryStateChangedSinceLastUpdate||(this._geometryStateChangedSinceLastUpdate=o),o&&this._markAllEdgesAndCornersDirty(),this._hasGeometry=!0,this._geometryStateChangedSinceLastUpdate}_createGeometry(e){this.tile.createGeometry();const t=this.geometryInfo.vertexAttributes,r=this.geometryInfo.indices,i=e.gl;this._vao=new I(e,G,{geometry:_(t.layout)},{geometry:M.createVertex(e,i.STATIC_DRAW,t.buffer)},M.createIndex(e,i.STATIC_DRAW,r)),this._hasGeometry=!0}_releaseGeometry(){return this._hasGeometry=!1,this.intersectionData=null,!!this._vao&&(this._vao.dispose(),this._vao=null,S(this.geometryInfo),!0)}get vao(){return this._vao}setTextureReference(e,t=L.Immediate){r(e)&&e.texture!==this._texture&&this.releaseTexture(),this._textureRef.push(e,t)}get textureReference(){return this._textureRef.current}get nextTextureReference(){return this._textureRef.next}get textureFadeFactor(){return this._textureRef.fadeFactor}get textureIsFading(){return this._textureRef.isFading}_getElevationInfo(){const e=this.geometryState.samplerData,t=this.tile.layerInfo[v.ELEVATION],i=t.length;let s=new Array(i),a=0,n=0,o=!1;for(let l=0;l<i;l++){const i=t[l];if(r(i.upsampleInfo)){const t=i.upsampleInfo.tile,r=t.layerInfo[v.ELEVATION][l].data,h=r&&r.samplerData;e&&e[a]===h||(o=!0),s[a++]=h,n=Math.max(n,t.lij[0])}else if(i.data){const t=this.tile.surface.layerViewByIndex(l,v.ELEVATION);if(N(this.tile,t.layer,!1)){const t=i.data;e&&e[a]===t.samplerData||(o=!0),s[a++]=t.samplerData,n=this.tile.level}}}return r(e)&&e.length!==a&&(o=!0),a>0?s.length=a:s=null,{changed:o,samplerData:s,maxTileLevel:n}}get estimatedGeometryMemoryUsage(){const e=s(this.intersectionData,0,(e=>e.estimatedMemoryUsage));return(this.geometryInfo.indices?.byteLength??0)+(this.geometryInfo.vertexAttributes?.byteLength??0)+e}get textureDescriptor(){return r(this._texture)?this._texture.descriptor:null}get test(){return{hasTexture:null!=this._texture}}checkGeometryWaterproofness(){if(!$)return;const e=this.tile;if(E(e?.isLoaded),!e.isLoaded||!e.intersectsClippingArea)return;if(0===e.level)return;const s=e.surface.extent;if(r(s)&&!e.intersectsExtent(s))return;const p=b.map(((t,i)=>!!r(s)&&(i<2?-1:1)*(e.extent[3-i]-s[3-i])<0)),_=e.level;E(0===this._dirtyCorners),E(0===this._dirtyEdges),E(0===this._dirtyEdgeResolutions),E(!this._numVerticesPerSideChanged),E(!this._samplerDataChanged),E(!this._clippingAreaChanged),E(!this._wireframeChanged);const x=j.map((t=>e.findNeighborCornerTileExact(t,(t=>!t.intersectsClippingArea||t.isLoaded||t.level===e.level))??null)).map((e=>e?.intersectsClippingArea?e:null)),v=this.geometryState.neighborData;for(let t=0;t<4;++t){const r=v.cornerPeerNeighbors[t],i=x[t];E(i===r,`Tile[${e.lij}].corner[${t}] out of date: cur=[${r?.lij}] exp=[${i?.lij}]`)}b.forEach(((s,x)=>{if(p[x])return;const v=e.findNeighborTile(s,(e=>(e.level===_||e?.isLoaded)&&e?.intersectsClippingArea));if(!v){const t=!e.surface.updatingRootTiles&&r(e.surface.rootTiles)&&e.surface.rootTiles.length>0&&e.shouldHaveNeighbor(s);return void E(!t)}E(v.isLoaded||v.level===e.level),E(v===this.geometryState.neighborData.edgePeerNeighbors[x]);const C=_-v.level;if(!v.isLoaded)return E(!v.isLeaf),void E(0===C);E(w(e,v,s)),E(C>=0);const S=2**C;if(C<0)return void E(!1);const $=e.renderData.geometryInfo,b=$.outerEdges[x],T=$.numVerticesPerSide-1,j=v.renderData.geometryInfo;if(!j)return void E(!1);{const t=this.geometryState.neighborData.edgePeerNeighbors[x];(t?.isLoaded||t.isLoaded)&&(E(t==t),E(e.renderData.geometryState.neighborData.edgePeerNeighborSamplerVersions[x]===t.renderData.geometryState.samplerDataVersion),E(this.geometryState.neighborData.edgePeerNeighborSamplerVersions[x]===t.renderData.geometryState.samplerDataVersion))}const R=(x+2)%4,L=j.outerEdges[R],P=b.count-1,N=L.count-1;E(P*S===N,`Tile[${e.lij}]:e${x},res=${P} edgeRes mismatch with Neighbor[${v.lij}]:e${R},res=${N} (expected:${P*S})`);const I=e.extent,G=s===D.NORTH||s===D.SOUTH,M=L.count-1,O=M/2**C,q=b.count-1;if(O<1)return void E(1===q);E(O===q),E(t(O));const z=j.numVerticesPerSide-1;E(C>0||O===Math.max(z,T));const J=e.getNeighborEdgeStartVertexIndex(x,v);E(0<=J&&J<S);const K=J*O;E(0<=K&&K<=M-O);let Q=0,Y=K;b.getVertexPos(U,0),b.getVertexPos(k,b.count-1);const Z=a(U,k),ee=Math.max(W,1e-4*Z);for(let t=0;t<=O;++t){b.getVertexPos(U,Q),L.getVertexPos(k,Y);const a=t/O,p=G?I[0]+a*(I[2]-I[0]):s===D.WEST?I[0]:I[2],_=G?s===D.SOUTH?I[1]:I[3]:I[1]+a*(I[3]-I[1]),C=e.surface.extent;if(i(C)||f(C,p,_)){const t=n(U,k),i=o(U)-y.radius,s=o(k)-y.radius,a=t<ee;if(!a){console.warn(`Tile edge vertex position mismatch: between [${e.lij}].edge${x}[${Q}/${b.count}] and [${v.lij}].edge${R}[${Y}/${L.count}]`),r(C)&&console.warn(" surface extent= ",C," x,y=",p,",",_);const n=u();l(n,e.renderData.localOrigin,v.renderData.localOrigin),o(n)>0&&console.warn(` localOrigins: ${e.renderData.localOrigin} vs ${v.renderData.localOrigin} d=${o(n)} [${n}]`);(()=>{const t=m(U),r=m(k);e.updateEdgeElevations(),v.updateEdgeElevations(),b.getVertexPos(U,Q),L.getVertexPos(k,Y);const i=u();g(i,U,t),o(i)>0&&console.warn(` XXX Tile[${e.lij}] edge out of date: ${t} vs ${U} d=${o(i)} [${i}]`),g(i,k,r),o(i)>0&&console.warn(` XXX Neighbor[${v.lij}] edge out of date: ${r} vs ${k} d=${o(i)} [${i}]`)})(),E(a,`Mismatch in tile [${e.lij}].edge[${x}][${Q}/${b.count}] vs neighbor [${v.lij}].edge[${R}][${Y}/${L.count}] ${A(U)} vs ${A(k)} dist=${t} h(t|n|d)=${i}|${s}|${s-i}`)}if(e.surface.shading){b.getNormal(F,Q),L.getNormal(B,Y),h(X,F),h(H,B);const t=d(X,H),r=!1,i=1-t<.01||r||e===v;if(!i){const r=u();g(r,F,B);const s=()=>`Mismatch in tile edge normal ${V(e.lij)} (${Q}/${b.count-1}) edge ${x} vs neighbor ${V(v.lij)} (${Y}/${L.count-1}) nedge ${R} :${A(F)} vs ${A(B)} dot = ${t} : ${A(r)}`;console.warn("Mismatch in tile edge normal: ",s());{e.updateEdgeElevations(),v.updateEdgeElevations();const t=u(),r=u();b.getNormal(t,Q),L.getNormal(r,Y),c(F,t)||console.warn("Missing update in tile normal: ",A(F)," => ",A(t)),c(B,r)||console.warn("Missing update in neighbor normal: ",A(B)," => ",A(r))}E(i,s())}}}Q+=1,Y+=1}}))}}const U=u(),k=u(),F=u(),B=u(),X=u(),H=u(),W=1,q=[null,null,null,null];function z(e,t){return t?.isLoaded||t===e?t:null}export{O as PatchRenderData,z as neighborTileIfLoadedOrSelf};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.25/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{isSome as r,disposeMaybe as s,isNone as n}from"../../../core/maybe.js";import a from"../../../core/ObjectPool.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{I as h}from"../../../chunks/mat4f64.js";import{b as d,s as c,e as u}from"../../../chunks/vec3.js";import{Z as p,f as _,c as g}from"../../../chunks/vec3f64.js";import{Z as f}from"../../../chunks/vec4f64.js";import{create as m,set as b}from"../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as T}from"../../../geometry/support/buffer/BufferView.js";import{ViewingMode as y}from"../../ViewingMode.js";import{TextureUpdate as R}from"./interfaces.js";import{LayerClass as v}from"./LayerClass.js";import{OverlaySource as O}from"./Overlay.js";import{overlayRenderOccludedFlag as C}from"./OverlayRenderer.js";import{clearCaches as x}from"./PatchGeometry.js";import{PatchRenderData as D}from"./PatchRenderData.js";import{RenderOrder as P}from"./RenderOrder.js";import{ScaleRangeQueries as q}from"./ScaleRangeQueries.js";import{ENABLE_TERRAIN_INTERNAL_CHECKS as S}from"./terrainUtils.js";import{TileRenderer as E}from"./TileRenderer.js";import{TileUpdate as A}from"./TileUpdate.js";import{IteratorPreorder as N,sortTiles as w,compareTiles as j}from"./tileUtils.js";import{componentMinimalSizeForIntersectionData as G,ComponentIntersectionData as I}from"../webgl-engine/collections/Component/ComponentIntersectionData.js";import{ShaderOutput as L}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{OverlayMode as F}from"../webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{T as U}from"../../../chunks/Terrain.glsl.js";import{TileBlendInput as k}from"../webgl-engine/core/shaderLibrary/terrain/TileBlendInput.js";import{RenderRequestType as B}from"../webgl-engine/lib/basicInterfaces.js";import{createEmptyTexture as z}from"../webgl-engine/lib/glUtil3D.js";import{newIntersectorResult as M}from"../webgl-engine/lib/Intersector.js";import{IntersectorType as H,StoreResults as V}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as Q}from"../webgl-engine/lib/Material.js";import{RenderSlot as W}from"../webgl-engine/lib/RenderSlot.js";import{getSettings as Y}from"../webgl-engine/lib/screenSizePerspectiveUtils.js";import{VertexAttribute as X}from"../webgl-engine/lib/VertexAttribute.js";import{TERRAIN_ID as Z,getVerticalOffsetTerrain as K}from"../webgl-engine/lib/verticalOffsetUtils.js";import{DrawParameters as J}from"../webgl-engine/materials/DrawParameters.js";import{intersectAabbInvDirBefore as $,intersectTriangles as ee}from"../webgl-engine/materials/internal/MaterialUtil.js";import{TerrainTechnique as te}from"../webgl-engine/shaders/TerrainTechnique.js";import{TerrainTechniqueConfiguration as ie}from"../webgl-engine/shaders/TerrainTechniqueConfiguration.js";import{ClearBufferBit as re,PrimitiveType as se}from"../../webgl/enums.js";const ne=7,ae=10,oe=m();let le=class extends i{constructor(e){super(e),this.type=H.TERRAIN,this.isGround=!0,this._tileSize=256,this._techniqueConfiguration=new ie,this._passParameters=new U,this._rctx=null,this._isTransparent=!1,this._scaleRangeQueries=new q,this._renderDataPool=new a(D),this._patchGroups=new Map,this._patchGroupsDirty=!0,this._patchSortingDirty=!0,this._tileIterator=new N,this._highestVisibleLODTile=null,this._visible=!0,this._opaque=!0,this._velvetOverground=!0,this._castShadows=!0,this._emptyTex=null,this._tileRenderer=null,this._stencilEnabledLayerExtents=new Array,this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this.needsHighlight=!1,this.renderOccludedFlags=Q.Occlude}get _isGlobal(){return this._stage.viewingMode===y.Global}get shading(){return this._techniqueConfiguration.shading}set shading(e){this._techniqueConfiguration.shading=e}initialize(){const e=[W.OPAQUE_TERRAIN,W.TRANSPARENT_TERRAIN,W.OCCLUDED_TERRAIN];this._stage.addRenderPlugin(e,this)}destroy(){this._stage.removeRenderPlugin(this),x()}get canRender(){return this._visible&&!!this._rootTiles&&!this.renderingDisabled}set renderingDisabled(e){this._set("renderingDisabled",!!e),this.setDirty()}set opaque(e){this._opaque!==e&&(this._opaque=e,this.setNeedsRender())}get opaque(){return this._opaque&&!this._techniqueConfiguration.hasSlicePlane}get needsLinearDepth(){return this._overlayRenderer.hasWater}set isTransparent(e){this._isTransparent!==e&&(this._isTransparent=e,this.setNeedsRender())}get isTransparent(){return this._isTransparent}get renderPatchBorders(){return!!this._techniqueConfiguration.tileBorders}set renderPatchBorders(e){this._techniqueConfiguration.tileBorders!==e&&(this._techniqueConfiguration.tileBorders=e,this.setNeedsRender(),this.notifyChange("renderPatchBorders"))}get visualizeNormals(){return!!this._techniqueConfiguration.visualizeNormals}set visualizeNormals(e){this._techniqueConfiguration.visualizeNormals!==e&&(this._techniqueConfiguration.visualizeNormals=e,this.setNeedsRender(),this.notifyChange("visualizeNormals"))}get cullBackFaces(){return this._techniqueConfiguration.backfaceCullingEnabled}set cullBackFaces(e){this._techniqueConfiguration.backfaceCullingEnabled!==e&&(this._techniqueConfiguration.backfaceCullingEnabled=e,this.notifyChange("cullBackFaces"),this.setNeedsRender())}set renderOrder(e){this._set("renderOrder",e),this._setSortingDirty()}set velvetOverground(e){this._velvetOverground!==e&&(this._velvetOverground=e,this.setNeedsRender())}get layerUid(){return Z}get slicePlaneEnabled(){return this._techniqueConfiguration.hasSlicePlane}set slicePlaneEnabled(e){this._techniqueConfiguration.hasSlicePlane!==e&&(this._techniqueConfiguration.hasSlicePlane=e,this.setNeedsRender())}set textureFadingEnabled(e){this._techniqueConfiguration.textureFadingEnabled!==e&&(this._techniqueConfiguration.textureFadingEnabled=e,this.setNeedsRender())}setDebugScreenSizePerspective(e){this._techniqueConfiguration.screenSizePerspective!==e&&(this._techniqueConfiguration.screenSizePerspective=e,this.setNeedsRender())}setRootTiles(e){this._rootTiles=e,this.setDirty()}setNeedsHighlight(e){this.needsHighlight=e,this.setNeedsRender()}setRenderOccludedOverlay(e){this.renderOccludedFlags=e?C:Q.Occlude,this.setNeedsRender()}setStencilEnabledLayerExtents(e){this._stencilEnabledLayerExtents=e,this._setSortingDirty()}setTileSize(e){this._tileSize=e,r(this._tileRenderer)&&(this._tileRenderer.tileSize=e),this.setDirty()}_prepareTileForLoading(e){e.renderData||(e.renderData=this._renderDataPool.acquire(),e.renderData.init(e),e.renderData.localOrigin=this._getLocalOriginOfTile(e))}loadTile(e){this._prepareTileForLoading(e),this.updateTileGeometryState(e),this.updateTileTexture(e,A.TEXTURE_FADING)}queryVisibleLevelRange(e,t,i,r){this._scaleRangeQueries.queryVisibleLevelRange(e,t,i,r),this.setNeedsRender()}updateTileTexture(e,t){r(this._tileRenderer)&&(this._tileRenderer.updateTileTexture(e,t===A.TEXTURE_FADING?R.FADING:R.UNFADED),this.setNeedsRender(),e.resetPendingUpdate(t))}updateTileGeometryState(e){for(const i of e.layerInfo[v.ELEVATION])i.pendingUpdates&=~A.GEOMETRY;e.resetPendingUpdate(A.GEOMETRY);const t=e.renderData.updateGeometryState();return t&&this.setDirty(),t}updateGeometryIfNeeded(e){e.isLoaded&&e.renderData.updateGeometryIfNeeded(this._rctx)}unloadTile(e){const t=e.renderData;t&&(t.releaseGeometry(),this._renderDataPool.release(t),t.clear(),e.renderData=null,e.setMemoryDirty(),this.setDirty())}_getLocalOriginOfTile(e){const t=ae-ne,i=Math.max(0,Math.floor((e.level-t)/ne)*ne);if(this._isGlobal&&0===i)return p;for(;e.parent&&e.level>i;)e=e.parent;return e.centerAtSeaLevel}setVisibility(e){this._visible=e,this.setDirty()}getStats(){return{numTilesRendered:this._numTilesRendered,numTilesCulled:this._numTilesCulled,numOriginsRendered:this._numOriginsRendered}}set wireframe(e){this._get("wireframe")!==e&&(this._set("wireframe",e),this.setNeedsRender())}setDirty(e=B.UPDATE){this._patchGroupsDirty=!0,this._context.requestRender(e)}_setSortingDirty(e=B.UPDATE){this._patchSortingDirty=!0,this._context.requestRender(e)}setNeedsRender(e=B.UPDATE){this._context.requestRender(e)}initializeRenderContext(e){this._context=e,this._rctx=e.renderContext.rctx,this._techniqueRepository=e.shaderTechniqueRepository,this._tileRenderer=new E(this._rctx,this._tileSize,this._techniqueRepository),this.updateTileBackground(),this._emptyTex=z(this._rctx)}uninitializeRenderContext(){this._emptyTex=s(this._emptyTex),this._tileRenderer=s(this._tileRenderer)}intersect(e,t,i,s){if(!this._rootTiles||e.options.selectOpaqueTerrainOnly&&e.options.selectionMode&&!this._opaque)return;const a=de,o=ce;d(a,s,i),c(o,1/a[0],1/a[1],1/a[2]);const l=e.results.min,p=e.results.max,_=e.results.ground,g=e.options.store===V.MIN,f=!!e.results.ground.target,m=K(e.verticalOffset),y=e.tolerance;let R,v=g&&r(l.dist)?l.dist:1/0;const O=c=>{const f=c.renderData;if(!f?.vao)return;const O=f.geometryInfo;b(oe,O.boundingBox);const C=f.localOrigin;r(m)&&(m.localOrigin=C,m.applyToAabb(oe));const x=oe;if(ue[0]=i[0]-C[0],ue[1]=i[1]-C[1],ue[2]=i[2]-C[2],!$(x,ue,o,y,v))return;const D=(e,t,i)=>{e.set(this.type,c,t,i,h),v=g&&r(l.dist)?l.dist:1/0},P=(o,h)=>{if(r(h)&&o>=0&&(e.options.backfacesTerrain||u(h,a)<0)&&(e.options.invisibleTerrain||!e.options.selectionMode||null==t||t(i,s,o))){if((null==_.dist||o<_.dist)&&D(_,o,h),e.options.isFiltered)return;e.options.store===V.ALL&&(n(R)?(R=M(e.ray),D(R,o,h),e.results.all.push(R)):o<R.dist&&D(R,o,h)),(null==l.dist||o<l.dist)&&D(l,o,h),e.options.store!==V.MIN&&(null==p.dist||o>p.dist)&&D(p,o,h)}},q=pe;d(q,s,C);const S=O.indices,E=O.vertexAttributes,A={data:E.getField(X.POSITION,T).typedBuffer,size:3,stride:E.stride/4},N=O.indexCount/3;if(n(m)&&N>G){const e=c.renderData;n(e.intersectionData)&&(e.intersectionData=new I(S,0,N,A)),e.intersectionData.intersectRay({r0:ue,r1:q},P)}else ee(ue,q,0,N,S,A,null,m,P)},C=this._rootTiles;if(r(C)){(()=>{const t=this._tileIterator;t.reset(C);const s=e.options.invisibleTerrain;for(;!t.done;){const e=t.next();!(e.visible||s&&e.intersectsClippingArea)||!r(m)&&!e.intersectsRay(i,a,y,v)||f&&this._useStencilForTile(e)?t.skipSubtree():O(e)}})()}}prepareTechnique(e){if(e.bindParameters.slot===W.OCCLUDED_TERRAIN){if(0==(e.renderOccludedMask&C))return null}else{const t=this.opaque?W.OPAQUE_TERRAIN:W.TRANSPARENT_TERRAIN;if(e.bindParameters.slot!==t)return null}switch(e.output){case L.Color:{this._techniqueConfiguration.hasScreenSpaceReflections=e.bindParameters.ssr.enabled,this._techniqueConfiguration.hasCloudsReflections=r(e.bindParameters.weatherParameter.cloudsFadingComposition.data),this._techniqueConfiguration.receiveShadows=e.bindParameters.shadowMap.ready,this._techniqueConfiguration.receiveAmbientOcclusion=e.bindParameters.ssaoHelper.ready,this._techniqueConfiguration.overlayMode=this._overlayRenderer.isEmpty()?F.Disabled:this._overlayRenderer.hasWater?F.EnabledWithWater:F.Enabled;const t=e.bindParameters.slot===W.OCCLUDED_TERRAIN?O.Occluded:O.ColorAndWater;return this._updateTechnique(L.Color,t===O.Occluded)}case L.Shadow:case L.ShadowExludeHighlight:return this._castShadows&&1===e.bindParameters.lighting.globalFactor?(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Shadow,!1)):null;case L.Depth:return this.isTransparent&&this._overlayRenderer.isEmpty()?null:(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Depth,!1));case L.Normal:return this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Normal,!1);case L.ObjectAndLayerIdColor:return this._updateTechnique(L.ObjectAndLayerIdColor,!1);case L.Highlight:return this.needsHighlight?(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Highlight,!1)):null}return null}render(e,t){const i=1===e.bindParameters.lighting.globalFactor;switch(this._updatePatchGroups(),t.useStencil=!1,e.output){case L.Color:{const i=e.bindParameters.slot===W.OCCLUDED_TERRAIN?O.Occluded:O.ColorAndWater;this._renderMaterialPass(e,t,i);break}case L.Shadow:case L.ShadowExludeHighlight:this._castShadows&&i&&this._renderAuxiliaryPass(e,t,O.None);break;case L.Depth:this.isTransparent&&this._overlayRenderer.isEmpty()||this._renderAuxiliaryPass(e,t,O.None);break;case L.Normal:this._renderAuxiliaryPass(e,t,O.None);break;case L.ObjectAndLayerIdColor:this._renderAuxiliaryPass(e,t,O.ObjectAndLayerIdColor);break;case L.Highlight:this.needsHighlight&&(this._renderAuxiliaryPass(e,t,O.Highlight),e.rctx.clearSafe(re.DEPTH_BUFFER_BIT))}this._scaleRangeQueries.hasPendingQueries()&&this.setNeedsRender()}_renderMaterialPass(e,t,i){const{rctx:r}=e;this._passParameters.overlaySource=i,r.bindTechnique(t,this._passParameters,e.bindParameters),this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this._scaleRangeQueries.prepareQueries(),this.opaque?this._renderPatchGroups(e,t,i):e.offscreenRenderingHelper.renderToTargets((()=>this._renderPatchGroups(e,t,i)),e.offscreenRenderingHelper.tmpColor,e.offscreenRenderingHelper.mainDepth,[0,0,0,0]),this._scaleRangeQueries.processQueries()}_renderAuxiliaryPass(e,t,i){const r=e.rctx;this._passParameters.overlaySource=i,r.bindTechnique(t,this._passParameters,e.bindParameters),this._renderPatchGroupsAuxiliary(e,t,i)}updateTileBackground(e=null){if(n(this._tileRenderer))return;const i=this._tileRenderer;let s=null;if(r(e)){const i=t.toUnitRGBA(e);s=_(i[0]||0,i[1]||0,i[2]||0)}i.setBackground(s),this._allTiles.forAll((e=>i.updateTileTexture(e,R.FADING))),this._techniqueConfiguration.tileBlendInput=i.backgroundIsGrid?k.GridComposite:r(i.backgroundColor)?k.ColorComposite:k.LayerOnly,this.setNeedsRender()}_updatePatchGroups(){if(this._patchGroupsDirty&&(this._highestVisibleLODTile=null,this._rebuildPatchGroups(),this._patchGroupsDirty=!1,this._patchSortingDirty=!0),this._patchSortingDirty&&this.renderOrder!==P.NONE){const e=Array.from(this._patchGroups.values());e.forEach((e=>w(this.renderOrder,e,this._stencilEnabledLayerExtents))),e.sort(((e,t)=>j(e[0],t[0],this.renderOrder))),this._patchGroups=new Map(e.map((e=>[e[0].renderData.localOrigin,e]))),this._patchSortingDirty=!1}}_rebuildPatchGroups(){const e=this._rootTiles;if(!n(e)){e[0]?.surface.checkAllTilesWaterproofness(),this._patchGroups.clear();for(const t of e)this._rebuildPatchGroupsForRootTile(t)}}_rebuildPatchGroupsForRootTile(e){const t=this._tileIterator;for(t.resetOne(e);!t.done;){const e=t.next(),i=e.renderData;if(!i||e.visible)if(e.rendered){if(i){const r=this._patchGroups.get(i.localOrigin)||new Array;this._patchGroups.set(i.localOrigin,r),r.push(e),(!this._highestVisibleLODTile||e.vlevel>this._highestVisibleLODTile.vlevel)&&(this._highestVisibleLODTile=e),t.skipSubtree()}}else this._numTilesCulled++;else this._numTilesCulled++,t.skipSubtree()}}_useStencilForTile(e){for(const t of this._stencilEnabledLayerExtents)if(e.intersectsExtent(t))return!0;return!1}_renderPatchGroupsAuxiliary(e,t,i){const r=this._stencilEnabledLayerExtents.length>0;this._patchGroups.forEach((s=>{const n=s[0].renderData.localOrigin;t.program.bindDraw(new J(n),e.bindParameters,this._passParameters);for(let a=0;a<s.length;a++)this._renderPatch(e,t,s[a],se.TRIANGLES,r,i)})),e.rctx.bindVAO(null)}_renderPatchGroups(e,t,i){const s=e.rctx,a=e.bindParameters.camera,o=t.program;if(this._techniqueConfiguration.screenSizePerspective&&this.pointsOfInterest){const e=Y(this._stage.viewingMode,this._ellipsoidRadius),t=this.pointsOfInterest.centerOnSurfaceFrequent.distance;e.update({distance:t,fovY:a.fovY})}const l=this._stencilEnabledLayerExtents.length>0,h=i===O.Occluded;h&&(o.bindTexture("tex",this._emptyTex),o.setUniform1f("blend",1),o.setUniform4fv("texOffsetAndScale",f));const d=r(this._tileRenderer)&&r(this._tileRenderer.backgroundColor)?this._tileRenderer.backgroundColor:p;this._techniqueConfiguration.tileBlendInput===k.ColorComposite&&o.setUniform3fv("backgroundColor",d);const c=this.wireframe?se.LINES:se.TRIANGLES;this._techniqueConfiguration.textureFadingEnabled&&o.bindTexture("texNext",this._emptyTex),this._patchGroups.forEach((s=>{const a=s[0].renderData.localOrigin;t.program.bindDraw(new J(a),e.bindParameters,this._passParameters),this._numOriginsRendered++;for(let d=0;d<s.length;d++){const a=s[d],u=a.renderData.textureReference;if(!n(u)){if(!h){this._scaleRangeQueries.scaleQueriesForTile(a),o.setUniform4fv("texOffsetAndScale",u.offsetAndScale),o.bindTexture("tex",u.texture.texture);const e=a.renderData.textureFadeFactor,t=e<1?a.renderData.nextTextureReference:null;this._techniqueConfiguration.textureFadingEnabled&&r(t)&&e<1?(o.setUniform1f("fadeFactor",e),o.setUniform4fv("nextTexOffsetAndScale",t.offsetAndScale),o.setUniform3fv("nextTexOpacities",t.opacities),o.bindTexture("texNext",t.texture.texture)):o.setUniform1f("fadeFactor",1),a.renderData.textureIsFading&&this.setNeedsRender(),o.setUniform3fv("textureOpacities",u.opacities)}this._renderPatch(e,t,a,c,l,i),a.renderOrder=this._numTilesRendered,this._numTilesRendered++}}})),s.bindVAO(null)}_renderPatch(e,t,i,r,s,a){const o=i.renderData,l=o.vao,h=l.indexBuffer;if(n(h))return void(S&&console.error("Rendered tile with no indices: ",i.lij," : ",o));const d=t.program;a!==O.None&&this._bindOverlayPatchData(d,o.overlay),s&&(t.useStencil=this._useStencilForTile(i),t.bindPipelineState(e.rctx,e.bindParameters.slot));const c=o.geometryInfo.indexCount;e.rctx.bindVAO(l),d.assertCompatibleVertexAttributeLocations(l),e.rctx.drawElements(r,c,h.indexType,0)}_bindOverlayPatchData(e,t){e.setUniform4fv("overlayTexOffset",t.offsets),e.setUniform4fv("overlayTexScale",t.scales)}_updateTechnique(e,t){return this._techniqueConfiguration.output=e,e===L.Color&&(this._techniqueConfiguration.atmosphere=this._isGlobal&&this._velvetOverground),this._techniqueConfiguration.renderOccluded=t,this._techniqueConfiguration.stencilEnabled=!1,this._shaderTechnique=this._techniqueRepository.releaseAndAcquire(te,this._techniqueConfiguration,this._shaderTechnique),this._shaderTechnique}get test(){return{tileRenderer:this._tileRenderer}}};e([o({constructOnly:!0})],le.prototype,"_overlayRenderer",void 0),e([o({constructOnly:!0})],le.prototype,"_stage",void 0),e([o({readOnly:!0})],le.prototype,"_isGlobal",null),e([o({constructOnly:!0})],le.prototype,"_allTiles",void 0),e([o({constructOnly:!0})],le.prototype,"_ellipsoidRadius",void 0),e([o({value:!1})],le.prototype,"renderingDisabled",null),e([o()],le.prototype,"renderPatchBorders",null),e([o()],le.prototype,"visualizeNormals",null),e([o()],le.prototype,"cullBackFaces",null),e([o({value:P.FRONT_TO_BACK})],le.prototype,"renderOrder",null),e([o()],le.prototype,"wireframe",null),le=e([l("esri.views.3d.terrain.TerrainRenderer")],le);const he=le,de=g(),ce=g(),ue=g(),pe=g();export{he as default};
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import i from"../../../core/Accessor.js";import{isSome as r,disposeMaybe as s,isNone as n}from"../../../core/maybe.js";import a from"../../../core/ObjectPool.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{I as h}from"../../../chunks/mat4f64.js";import{b as d,s as c,e as u}from"../../../chunks/vec3.js";import{Z as p,f as _,c as g}from"../../../chunks/vec3f64.js";import{Z as f}from"../../../chunks/vec4f64.js";import{create as m,set as b}from"../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as T}from"../../../geometry/support/buffer/BufferView.js";import{ViewingMode as y}from"../../ViewingMode.js";import{TextureUpdate as R}from"./interfaces.js";import{LayerClass as v}from"./LayerClass.js";import{OverlaySource as O}from"./Overlay.js";import{overlayRenderOccludedFlag as x}from"./OverlayRenderer.js";import{clearCaches as C}from"./PatchGeometry.js";import{PatchRenderData as D}from"./PatchRenderData.js";import{RenderOrder as P}from"./RenderOrder.js";import{ScaleRangeQueries as q}from"./ScaleRangeQueries.js";import{ENABLE_TERRAIN_INTERNAL_CHECKS as S}from"./terrainUtils.js";import{TileRenderer as E}from"./TileRenderer.js";import{TileUpdate as A}from"./TileUpdate.js";import{IteratorPreorder as N,sortTiles as w,compareTiles as j}from"./tileUtils.js";import{componentMinimalSizeForIntersectionData as G,ComponentIntersectionData as I}from"../webgl-engine/collections/Component/ComponentIntersectionData.js";import{ShaderOutput as L}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";import{OverlayMode as F}from"../webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{T as U}from"../../../chunks/Terrain.glsl.js";import{TileBlendInput as k}from"../webgl-engine/core/shaderLibrary/terrain/TileBlendInput.js";import{RenderRequestType as B}from"../webgl-engine/lib/basicInterfaces.js";import{createEmptyTexture as z}from"../webgl-engine/lib/glUtil3D.js";import{newIntersectorResult as M}from"../webgl-engine/lib/Intersector.js";import{IntersectorType as H,StoreResults as V}from"../webgl-engine/lib/IntersectorInterfaces.js";import{RenderOccludedFlag as Q}from"../webgl-engine/lib/Material.js";import{RenderSlot as W}from"../webgl-engine/lib/RenderSlot.js";import{getSettings as Y}from"../webgl-engine/lib/screenSizePerspectiveUtils.js";import{VertexAttribute as X}from"../webgl-engine/lib/VertexAttribute.js";import{TERRAIN_ID as Z,getVerticalOffsetTerrain as K}from"../webgl-engine/lib/verticalOffsetUtils.js";import{DrawParameters as J}from"../webgl-engine/materials/DrawParameters.js";import{intersectAabbInvDirBefore as $,intersectTriangles as ee}from"../webgl-engine/materials/internal/MaterialUtil.js";import{TerrainTechnique as te}from"../webgl-engine/shaders/TerrainTechnique.js";import{TerrainTechniqueConfiguration as ie}from"../webgl-engine/shaders/TerrainTechniqueConfiguration.js";import{ClearBufferBit as re,PrimitiveType as se}from"../../webgl/enums.js";const ne=7,ae=10,oe=m();let le=class extends i{constructor(e){super(e),this.type=H.TERRAIN,this.isGround=!0,this._tileSize=256,this._techniqueConfiguration=new ie,this._passParameters=new U,this._rctx=null,this._isTransparent=!1,this._scaleRangeQueries=new q,this._renderDataPool=new a(D),this._patchGroups=new Map,this._patchGroupsDirty=!0,this._patchSortingDirty=!0,this._tileIterator=new N,this._highestVisibleLODTile=null,this._visible=!0,this._opaque=!0,this._velvetOverground=!0,this._castShadows=!0,this._emptyTex=null,this._tileRenderer=null,this._stencilEnabledLayerExtents=new Array,this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this.needsHighlight=!1,this.renderOccludedFlags=Q.Occlude}get _isGlobal(){return this._stage.viewingMode===y.Global}get shading(){return this._techniqueConfiguration.shading}set shading(e){this._techniqueConfiguration.shading=e}initialize(){const e=[W.OPAQUE_TERRAIN,W.TRANSPARENT_TERRAIN,W.OCCLUDED_TERRAIN];this._stage.addRenderPlugin(e,this)}destroy(){this._stage.removeRenderPlugin(this),C()}get canRender(){return this._visible&&!!this._rootTiles&&!this.renderingDisabled}set renderingDisabled(e){this._set("renderingDisabled",!!e),this.setDirty()}set opaque(e){this._opaque!==e&&(this._opaque=e,this.setNeedsRender())}get opaque(){return this._opaque&&!this._techniqueConfiguration.hasSlicePlane}get needsLinearDepth(){return this._overlayRenderer.hasWater}set isTransparent(e){this._isTransparent!==e&&(this._isTransparent=e,this.setNeedsRender())}get isTransparent(){return this._isTransparent}get renderPatchBorders(){return!!this._techniqueConfiguration.tileBorders}set renderPatchBorders(e){this._techniqueConfiguration.tileBorders!==e&&(this._techniqueConfiguration.tileBorders=e,this.setNeedsRender(),this.notifyChange("renderPatchBorders"))}get visualizeNormals(){return!!this._techniqueConfiguration.visualizeNormals}set visualizeNormals(e){this._techniqueConfiguration.visualizeNormals!==e&&(this._techniqueConfiguration.visualizeNormals=e,this.setNeedsRender(),this.notifyChange("visualizeNormals"))}get cullBackFaces(){return this._techniqueConfiguration.backfaceCullingEnabled}set cullBackFaces(e){this._techniqueConfiguration.backfaceCullingEnabled!==e&&(this._techniqueConfiguration.backfaceCullingEnabled=e,this.notifyChange("cullBackFaces"),this.setNeedsRender())}set renderOrder(e){this._set("renderOrder",e),this._setSortingDirty()}set velvetOverground(e){this._velvetOverground!==e&&(this._velvetOverground=e,this.setNeedsRender())}get layerUid(){return Z}get slicePlaneEnabled(){return this._techniqueConfiguration.hasSlicePlane}set slicePlaneEnabled(e){this._techniqueConfiguration.hasSlicePlane!==e&&(this._techniqueConfiguration.hasSlicePlane=e,this.setNeedsRender())}set textureFadingEnabled(e){this._techniqueConfiguration.textureFadingEnabled!==e&&(this._techniqueConfiguration.textureFadingEnabled=e,this.setNeedsRender())}setDebugScreenSizePerspective(e){this._techniqueConfiguration.screenSizePerspective!==e&&(this._techniqueConfiguration.screenSizePerspective=e,this.setNeedsRender())}setRootTiles(e){this._rootTiles=e,this.setDirty()}setNeedsHighlight(e){this.needsHighlight=e,this.setNeedsRender()}setRenderOccludedOverlay(e){this.renderOccludedFlags=e?x:Q.Occlude,this.setNeedsRender()}setStencilEnabledLayerExtents(e){this._stencilEnabledLayerExtents=e,this._setSortingDirty()}setTileSize(e){this._tileSize=e,r(this._tileRenderer)&&(this._tileRenderer.tileSize=e),this.setDirty()}_prepareTileForLoading(e){e.renderData||(e.renderData=this._renderDataPool.acquire(),e.renderData.init(e),e.renderData.localOrigin=this._getLocalOriginOfTile(e))}loadTile(e){this._prepareTileForLoading(e),this.updateTileGeometryState(e),this.updateTileTexture(e,A.TEXTURE_FADING)}queryVisibleLevelRange(e,t,i,r){this._scaleRangeQueries.queryVisibleLevelRange(e,t,i,r),this.setNeedsRender()}updateTileTexture(e,t){r(this._tileRenderer)&&(this._tileRenderer.updateTileTexture(e,t===A.TEXTURE_FADING?R.FADING:R.UNFADED),this.setNeedsRender(),e.resetPendingUpdate(t))}updateTileGeometryState(e){for(const i of e.layerInfo[v.ELEVATION])i.pendingUpdates&=~A.GEOMETRY;e.resetPendingUpdate(A.GEOMETRY);const t=e.renderData.updateGeometryState();return t&&this.setDirty(),t}updateGeometryIfNeeded(e){e.isLoaded&&e.renderData.updateGeometryIfNeeded(this._rctx)}unloadTile(e){const t=e.renderData;t&&(t.releaseGeometry(),this._renderDataPool.release(t),t.clear(),e.renderData=null,e.setMemoryDirty(),this.setDirty())}_getLocalOriginOfTile(e){const t=ae-ne,i=Math.max(0,Math.floor((e.level-t)/ne)*ne);if(this._isGlobal&&0===i)return p;for(;e.parent&&e.level>i;)e=e.parent;return e.centerAtSeaLevel}setVisibility(e){this._visible=e,this.setDirty()}getStats(){return{numTilesRendered:this._numTilesRendered,numTilesCulled:this._numTilesCulled,numOriginsRendered:this._numOriginsRendered}}set wireframe(e){this._get("wireframe")!==e&&(this._set("wireframe",e),this.setNeedsRender())}setDirty(e=B.UPDATE){this._patchGroupsDirty=!0,this._context.requestRender(e)}_setSortingDirty(e=B.UPDATE){this._patchSortingDirty=!0,this._context.requestRender(e)}setNeedsRender(e=B.UPDATE){this._context.requestRender(e)}initializeRenderContext(e){this._context=e,this._rctx=e.renderContext.rctx,this._techniqueRepository=e.shaderTechniqueRepository,this._tileRenderer=new E(this._rctx,this._tileSize,this._techniqueRepository),this.updateTileBackground(),this._emptyTex=z(this._rctx)}uninitializeRenderContext(){this._emptyTex=s(this._emptyTex),this._tileRenderer=s(this._tileRenderer)}intersect(e,t,i,s){if(!this._rootTiles||e.options.selectOpaqueTerrainOnly&&e.options.selectionMode&&!this._opaque)return;const a=de,o=ce;d(a,s,i),c(o,1/a[0],1/a[1],1/a[2]);const l=e.results.min,p=e.results.max,_=e.results.ground,g=e.options.store===V.MIN,f=!!e.results.ground.target,m=K(e.verticalOffset),y=e.tolerance;let R,v=g&&r(l.dist)?l.dist:1/0;const O=c=>{const f=c.renderData;if(!f?.vao)return;const O=f.geometryInfo;b(oe,O.boundingBox);const x=f.localOrigin;r(m)&&(m.localOrigin=x,m.applyToAabb(oe));const C=oe;if(ue[0]=i[0]-x[0],ue[1]=i[1]-x[1],ue[2]=i[2]-x[2],!$(C,ue,o,y,v))return;const D=(e,t,i)=>{e.set(this.type,c,t,i,h),v=g&&r(l.dist)?l.dist:1/0},P=(o,h)=>{if(r(h)&&o>=0&&(e.options.backfacesTerrain||u(h,a)<0)&&(e.options.invisibleTerrain||!e.options.selectionMode||null==t||t(i,s,o))){if((null==_.dist||o<_.dist)&&D(_,o,h),e.options.isFiltered)return;e.options.store===V.ALL&&(n(R)?(R=M(e.ray),D(R,o,h),e.results.all.push(R)):o<R.dist&&D(R,o,h)),(null==l.dist||o<l.dist)&&D(l,o,h),e.options.store!==V.MIN&&(null==p.dist||o>p.dist)&&D(p,o,h)}},q=pe;d(q,s,x);const S=O.indices,E=O.vertexAttributes,A={data:E.getField(X.POSITION,T).typedBuffer,size:3,stride:E.stride/4},N=O.indexCount/3;if(n(m)&&N>G){const e=c.renderData;n(e.intersectionData)&&(e.intersectionData=new I(S,0,N,A)),e.intersectionData.intersectRay({r0:ue,r1:q},P)}else ee(ue,q,0,N,S,A,null,m,P)},x=this._rootTiles;if(r(x)){(()=>{const t=this._tileIterator;t.reset(x);const s=e.options.invisibleTerrain;for(;!t.done;){const e=t.next();!(e.visible||s&&e.intersectsClippingArea)||!r(m)&&!e.intersectsRay(i,a,y,v)||f&&this._useStencilForTile(e)?t.skipSubtree():O(e)}})()}}prepareTechnique(e){if(e.bindParameters.slot===W.OCCLUDED_TERRAIN){if(0==(e.renderOccludedMask&x))return null}else{const t=this.opaque?W.OPAQUE_TERRAIN:W.TRANSPARENT_TERRAIN;if(e.bindParameters.slot!==t)return null}switch(e.output){case L.Color:{this._techniqueConfiguration.hasScreenSpaceReflections=e.bindParameters.ssr.enabled,this._techniqueConfiguration.hasCloudsReflections=r(e.bindParameters.cloudsFade.data),this._techniqueConfiguration.receiveShadows=e.bindParameters.shadowMap.ready,this._techniqueConfiguration.receiveAmbientOcclusion=e.bindParameters.ssaoHelper.ready,this._techniqueConfiguration.overlayMode=this._overlayRenderer.isEmpty()?F.Disabled:this._overlayRenderer.hasWater?F.EnabledWithWater:F.Enabled;const t=e.bindParameters.slot===W.OCCLUDED_TERRAIN?O.Occluded:O.ColorAndWater;return this._updateTechnique(L.Color,t===O.Occluded)}case L.Shadow:case L.ShadowExludeHighlight:return this._castShadows&&1===e.bindParameters.lighting.globalFactor?(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Shadow,!1)):null;case L.Depth:return this.isTransparent&&this._overlayRenderer.isEmpty()?null:(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Depth,!1));case L.Normal:return this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Normal,!1);case L.ObjectAndLayerIdColor:return this._updateTechnique(L.ObjectAndLayerIdColor,!1);case L.Highlight:return this.needsHighlight?(this._techniqueConfiguration.receiveShadows=this._techniqueConfiguration.receiveAmbientOcclusion=!1,this._updateTechnique(L.Highlight,!1)):null}return null}render(e,t){const i=1===e.bindParameters.lighting.globalFactor;switch(this._updatePatchGroups(),t.useStencil=!1,e.output){case L.Color:{const i=e.bindParameters.slot===W.OCCLUDED_TERRAIN?O.Occluded:O.ColorAndWater;this._renderMaterialPass(e,t,i);break}case L.Shadow:case L.ShadowExludeHighlight:this._castShadows&&i&&this._renderAuxiliaryPass(e,t,O.None);break;case L.Depth:this.isTransparent&&this._overlayRenderer.isEmpty()||this._renderAuxiliaryPass(e,t,O.None);break;case L.Normal:this._renderAuxiliaryPass(e,t,O.None);break;case L.ObjectAndLayerIdColor:this._renderAuxiliaryPass(e,t,O.ObjectAndLayerIdColor);break;case L.Highlight:this.needsHighlight&&(this._renderAuxiliaryPass(e,t,O.Highlight),e.rctx.clearSafe(re.DEPTH_BUFFER_BIT))}this._scaleRangeQueries.hasPendingQueries()&&this.setNeedsRender()}_renderMaterialPass(e,t,i){const{rctx:r}=e;this._passParameters.overlaySource=i,r.bindTechnique(t,this._passParameters,e.bindParameters),this._numTilesRendered=0,this._numTilesCulled=0,this._numOriginsRendered=0,this._scaleRangeQueries.prepareQueries(),this.opaque?this._renderPatchGroups(e,t,i):e.offscreenRenderingHelper.renderToTargets((()=>this._renderPatchGroups(e,t,i)),e.offscreenRenderingHelper.tmpColor,e.offscreenRenderingHelper.mainDepth,[0,0,0,0]),this._scaleRangeQueries.processQueries()}_renderAuxiliaryPass(e,t,i){const r=e.rctx;this._passParameters.overlaySource=i,r.bindTechnique(t,this._passParameters,e.bindParameters),this._renderPatchGroupsAuxiliary(e,t,i)}updateTileBackground(e=null){if(n(this._tileRenderer))return;const i=this._tileRenderer;let s=null;if(r(e)){const i=t.toUnitRGBA(e);s=_(i[0]||0,i[1]||0,i[2]||0)}i.setBackground(s),this._allTiles.forAll((e=>i.updateTileTexture(e,R.FADING))),this._techniqueConfiguration.tileBlendInput=i.backgroundIsGrid?k.GridComposite:r(i.backgroundColor)?k.ColorComposite:k.LayerOnly,this.setNeedsRender()}_updatePatchGroups(){if(this._patchGroupsDirty&&(this._highestVisibleLODTile=null,this._rebuildPatchGroups(),this._patchGroupsDirty=!1,this._patchSortingDirty=!0),this._patchSortingDirty&&this.renderOrder!==P.NONE){const e=Array.from(this._patchGroups.values());e.forEach((e=>w(this.renderOrder,e,this._stencilEnabledLayerExtents))),e.sort(((e,t)=>j(e[0],t[0],this.renderOrder))),this._patchGroups=new Map(e.map((e=>[e[0].renderData.localOrigin,e]))),this._patchSortingDirty=!1}}_rebuildPatchGroups(){const e=this._rootTiles;if(!n(e)){e[0]?.surface.checkAllTilesWaterproofness(),this._patchGroups.clear();for(const t of e)this._rebuildPatchGroupsForRootTile(t)}}_rebuildPatchGroupsForRootTile(e){const t=this._tileIterator;for(t.resetOne(e);!t.done;){const e=t.next(),i=e.renderData;if(!i||e.visible)if(e.rendered){if(i){const r=this._patchGroups.get(i.localOrigin)||new Array;this._patchGroups.set(i.localOrigin,r),r.push(e),(!this._highestVisibleLODTile||e.vlevel>this._highestVisibleLODTile.vlevel)&&(this._highestVisibleLODTile=e),t.skipSubtree()}}else this._numTilesCulled++;else this._numTilesCulled++,t.skipSubtree()}}_useStencilForTile(e){for(const t of this._stencilEnabledLayerExtents)if(e.intersectsExtent(t))return!0;return!1}_renderPatchGroupsAuxiliary(e,t,i){const r=this._stencilEnabledLayerExtents.length>0;this._patchGroups.forEach((s=>{const n=s[0].renderData.localOrigin;t.program.bindDraw(new J(n),e.bindParameters,this._passParameters);for(let a=0;a<s.length;a++)this._renderPatch(e,t,s[a],se.TRIANGLES,r,i)})),e.rctx.bindVAO(null)}_renderPatchGroups(e,t,i){const s=e.rctx,a=e.bindParameters.camera,o=t.program;if(this._techniqueConfiguration.screenSizePerspective&&this.pointsOfInterest){const e=Y(this._stage.viewingMode,this._ellipsoidRadius),t=this.pointsOfInterest.centerOnSurfaceFrequent.distance;e.update({distance:t,fovY:a.fovY})}const l=this._stencilEnabledLayerExtents.length>0,h=i===O.Occluded;h&&(o.bindTexture("tex",this._emptyTex),o.setUniform1f("blend",1),o.setUniform4fv("texOffsetAndScale",f));const d=r(this._tileRenderer)&&r(this._tileRenderer.backgroundColor)?this._tileRenderer.backgroundColor:p;this._techniqueConfiguration.tileBlendInput===k.ColorComposite&&o.setUniform3fv("backgroundColor",d);const c=this.wireframe?se.LINES:se.TRIANGLES;this._techniqueConfiguration.textureFadingEnabled&&o.bindTexture("texNext",this._emptyTex),this._patchGroups.forEach((s=>{const a=s[0].renderData.localOrigin;t.program.bindDraw(new J(a),e.bindParameters,this._passParameters),this._numOriginsRendered++;for(let d=0;d<s.length;d++){const a=s[d],u=a.renderData.textureReference;if(!n(u)){if(!h){this._scaleRangeQueries.scaleQueriesForTile(a),o.setUniform4fv("texOffsetAndScale",u.offsetAndScale),o.bindTexture("tex",u.texture.texture);const e=a.renderData.textureFadeFactor,t=e<1?a.renderData.nextTextureReference:null;this._techniqueConfiguration.textureFadingEnabled&&r(t)&&e<1?(o.setUniform1f("fadeFactor",e),o.setUniform4fv("nextTexOffsetAndScale",t.offsetAndScale),o.setUniform3fv("nextTexOpacities",t.opacities),o.bindTexture("texNext",t.texture.texture)):o.setUniform1f("fadeFactor",1),a.renderData.textureIsFading&&this.setNeedsRender(),o.setUniform3fv("textureOpacities",u.opacities)}this._renderPatch(e,t,a,c,l,i),a.renderOrder=this._numTilesRendered,this._numTilesRendered++}}})),s.bindVAO(null)}_renderPatch(e,t,i,r,s,a){const o=i.renderData,l=o.vao,h=l.indexBuffer;if(n(h))return void(S&&console.error("Rendered tile with no indices: ",i.lij," : ",o));const d=t.program;a!==O.None&&this._bindOverlayPatchData(d,o.overlay),s&&(t.useStencil=this._useStencilForTile(i),t.bindPipelineState(e.rctx,e.bindParameters.slot));const c=o.geometryInfo.indexCount;e.rctx.bindVAO(l),d.assertCompatibleVertexAttributeLocations(l),e.rctx.drawElements(r,c,h.indexType,0)}_bindOverlayPatchData(e,t){e.setUniform4fv("overlayTexOffset",t.offsets),e.setUniform4fv("overlayTexScale",t.scales)}_updateTechnique(e,t){return this._techniqueConfiguration.output=e,e===L.Color&&(this._techniqueConfiguration.atmosphere=this._isGlobal&&this._velvetOverground),this._techniqueConfiguration.renderOccluded=t,this._techniqueConfiguration.stencilEnabled=!1,this._shaderTechnique=this._techniqueRepository.releaseAndAcquire(te,this._techniqueConfiguration,this._shaderTechnique),this._shaderTechnique}get test(){return{tileRenderer:this._tileRenderer}}};e([o({constructOnly:!0})],le.prototype,"_overlayRenderer",void 0),e([o({constructOnly:!0})],le.prototype,"_stage",void 0),e([o({readOnly:!0})],le.prototype,"_isGlobal",null),e([o({constructOnly:!0})],le.prototype,"_allTiles",void 0),e([o({constructOnly:!0})],le.prototype,"_ellipsoidRadius",void 0),e([o({value:!1})],le.prototype,"renderingDisabled",null),e([o()],le.prototype,"renderPatchBorders",null),e([o()],le.prototype,"visualizeNormals",null),e([o()],le.prototype,"cullBackFaces",null),e([o({value:P.FRONT_TO_BACK})],le.prototype,"renderOrder",null),e([o()],le.prototype,"wireframe",null),le=e([l("esri.views.3d.terrain.TerrainRenderer")],le);const he=le,de=g(),ce=g(),ue=g(),pe=g();export{he as default};
|