@arcgis/core 5.2.0-next.40 → 5.2.0-next.41
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/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/002356e675769d20e5c0.js +1 -0
- package/assets/esri/core/workers/chunks/02ab09285a5c4ca98066.js +1 -0
- package/assets/esri/core/workers/chunks/0646524250bb9fe82935.js +1 -0
- package/assets/esri/core/workers/chunks/06e71d52773eb656a4bf.js +261 -0
- package/assets/esri/core/workers/chunks/0a50efb07eee36237e21.js +1 -0
- package/assets/esri/core/workers/chunks/0a98a13418f53082ca7a.js +1 -0
- package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +1 -0
- package/assets/esri/core/workers/chunks/0ae35b02dda9b9662560.js +1 -0
- package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +1 -0
- package/assets/esri/core/workers/chunks/{542d8a6c415098b9857c.js → 0da4816c11b45b4a6289.js} +1 -1
- package/assets/esri/core/workers/chunks/{8a39dd585742960d3ca2.js → 0dcfd82a2669df6eb5a0.js} +1 -1
- package/assets/esri/core/workers/chunks/0f19bc532be24ca64755.js +1 -0
- package/assets/esri/core/workers/chunks/0f674c625f24ac73e25a.js +1 -0
- package/assets/esri/core/workers/chunks/11a3aa43fb940c21f148.js +1 -0
- package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +1 -0
- package/assets/esri/core/workers/chunks/1276df03201c1b855fee.js +1 -0
- package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +1 -0
- package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +1 -0
- package/assets/esri/core/workers/chunks/15de305ac3d6433748e7.js +1 -0
- package/assets/esri/core/workers/chunks/18d874739ee9ffad7480.js +1 -0
- package/assets/esri/core/workers/chunks/1dc1bfb3425665f560e4.js +1 -0
- package/assets/esri/core/workers/chunks/{1cd8dff4373494b01ad4.js → 1e342d532925569daadb.js} +1 -1
- package/assets/esri/core/workers/chunks/1f118d85d8271ad7690b.js +1 -0
- package/assets/esri/core/workers/chunks/1fece9757de7c10d1e9f.js +1 -0
- package/assets/esri/core/workers/chunks/{a2e754df3215e8b00a8f.js → 2015f4def2ef201bdab8.js} +1 -1
- package/assets/esri/core/workers/chunks/23570397304969f724b3.js +1 -0
- package/assets/esri/core/workers/chunks/24c0b3586bb6500eda53.js +2 -0
- package/assets/esri/core/workers/chunks/26e7884d8639df4d994b.js +1 -0
- package/assets/esri/core/workers/chunks/26fdc8382e009672924e.js +1 -0
- package/assets/esri/core/workers/chunks/{96860b6035e0b06672dd.js → 272c8ab189217240d05f.js} +1 -1
- package/assets/esri/core/workers/chunks/2791f3fe16ca5ee2f39a.js +1 -0
- package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +1 -0
- package/assets/esri/core/workers/chunks/284e88805184334396fe.js +1 -0
- package/assets/esri/core/workers/chunks/28bc5e8e82f188b30eb9.js +1 -0
- package/assets/esri/core/workers/chunks/2a4868acd546312aa6d8.js +1 -0
- package/assets/esri/core/workers/chunks/2b8909a488cf3b231eec.js +1398 -0
- package/assets/esri/core/workers/chunks/2d7cfc68a38dabd8898a.js +1 -0
- package/assets/esri/core/workers/chunks/2da337d7fd9295f6b967.js +1 -0
- package/assets/esri/core/workers/chunks/2e79fb1b8445b2091cdb.js +1 -0
- package/assets/esri/core/workers/chunks/2f29f08cddd5add9388e.js +1 -0
- package/assets/esri/core/workers/chunks/30c53a7e1ad5aa52f2f3.js +1 -0
- package/assets/esri/core/workers/chunks/31c4db1eac8f765bb93f.js +1 -0
- package/assets/esri/core/workers/chunks/32fb597aef66c444758f.js +1 -0
- package/assets/esri/core/workers/chunks/34fcb776e4de1d870bbd.js +30 -0
- package/assets/esri/core/workers/chunks/352d144d7651da8a29c9.js +1 -0
- package/assets/esri/core/workers/chunks/354199a41de44902de84.js +1 -0
- package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +1 -0
- package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +1 -0
- package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +1 -0
- package/assets/esri/core/workers/chunks/{ed1d4ebf487c7dcd5c33.js → 37a8cfec11057947b45f.js} +1 -1
- package/assets/esri/core/workers/chunks/{2b2b042a6d6949b06127.js → 381790e1f3df05c7eb68.js} +1 -1
- package/assets/esri/core/workers/chunks/383304d33b496c5d8baa.js +1 -0
- package/assets/esri/core/workers/chunks/{4e28f49d0be20ea50fd7.js → 383392c63202ac044b6c.js} +1 -1
- package/assets/esri/core/workers/chunks/394716bd1ecfd638d708.js +2 -0
- package/assets/esri/core/workers/chunks/3aacb935d632834d4154.js +1 -0
- package/assets/esri/core/workers/chunks/3c8e98cf23ad8ef12fcb.js +1 -0
- package/assets/esri/core/workers/chunks/4056659d5c7698265129.js +1 -0
- package/assets/esri/core/workers/chunks/4129b27fcd4103cdc499.js +1 -0
- package/assets/esri/core/workers/chunks/44e64186318728d1be51.js +1 -0
- package/assets/esri/core/workers/chunks/474ea8c97d101e41b3f5.js +1 -0
- package/assets/esri/core/workers/chunks/475c60ed8785d07911c6.js +1 -0
- package/assets/esri/core/workers/chunks/{c7662455252b48531da1.js → 484b3e2a220c440ccbb4.js} +1 -1
- package/assets/esri/core/workers/chunks/4d4710d57c72ec75cccc.js +1 -0
- package/assets/esri/core/workers/chunks/4e1b087453fc5e20e961.js +1 -0
- package/assets/esri/core/workers/chunks/4e94793aab42ebd251ca.js +1 -0
- package/assets/esri/core/workers/chunks/4f2a61dfae6ca8ed1ec8.js +1 -0
- package/assets/esri/core/workers/chunks/4f59357f535f30a6b5cc.js +1 -0
- package/assets/esri/core/workers/chunks/509cfac9e5d86a8ee449.js +1 -0
- package/assets/esri/core/workers/chunks/510acf2e8781be9b0dba.js +1 -0
- package/assets/esri/core/workers/chunks/52c4b4dabcb0d162be72.js +1 -0
- package/assets/esri/core/workers/chunks/{697e0ce10d77b90d4fee.js → 538fe46dfd685a490e23.js} +1 -1
- package/assets/esri/core/workers/chunks/5441f96cdd0660229efe.js +1 -0
- package/assets/esri/core/workers/chunks/551d0c5432f7a08dea77.js +1 -0
- package/assets/esri/core/workers/chunks/55924fb0de05e727f5e3.js +1 -0
- package/assets/esri/core/workers/chunks/55af58b6dff52dc040fe.js +2 -0
- package/assets/esri/core/workers/chunks/56bbde1dff96b423fbb9.js +1 -0
- package/assets/esri/core/workers/chunks/57824ecc10b25e3ad794.js +1 -0
- package/assets/esri/core/workers/chunks/{9ba705a6ddabca0f77b1.js → 580451761cadfe308919.js} +1 -1
- package/assets/esri/core/workers/chunks/5923ebadd4f75be2c9cc.js +1 -0
- package/assets/esri/core/workers/chunks/5b18696109fe84a1010a.js +2 -0
- package/assets/esri/core/workers/chunks/{db96a0c66578b2d1b715.js → 5b30231ae0a8f4b8435f.js} +1 -1
- package/assets/esri/core/workers/chunks/{77a4f6f224d7ca4b69f4.js → 5bf4ab72b9634b06cc5d.js} +1 -1
- package/assets/esri/core/workers/chunks/5ce168ae45ab7e7a71d1.js +1 -0
- package/assets/esri/core/workers/chunks/{7b1678dcf62481469544.js → 5dc17b76c6ecc24e7b9a.js} +1 -1
- package/assets/esri/core/workers/chunks/5e35828216020f33e26b.js +1 -0
- package/assets/esri/core/workers/chunks/5f0d6c853873a7f32527.js +1 -0
- package/assets/esri/core/workers/chunks/5fe9eea35ddb428efd8b.js +1 -0
- package/assets/esri/core/workers/chunks/6010b7be978698a642d0.js +1 -0
- package/assets/esri/core/workers/chunks/613e799377bdb767c955.js +1 -0
- package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +1 -0
- package/assets/esri/core/workers/chunks/632ab11cdd4b0d9a5cc5.js +1 -0
- package/assets/esri/core/workers/chunks/64247e439ef3e1f712e9.js +1 -0
- package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +1 -0
- package/assets/esri/core/workers/chunks/6b0acd1a7dd74a7367e0.js +1 -0
- package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +1 -0
- package/assets/esri/core/workers/chunks/6e45d0db97ffa4509177.js +1 -0
- package/assets/esri/core/workers/chunks/6f408397e2c8a2ea9805.js +1 -0
- package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +1 -0
- package/assets/esri/core/workers/chunks/705d6b108fd121cea887.js +1 -0
- package/assets/esri/core/workers/chunks/71ce1009dadcae8f8094.js +1 -0
- package/assets/esri/core/workers/chunks/72fe7fb03c156f26a589.js +1 -0
- package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +1 -0
- package/assets/esri/core/workers/chunks/79b857bb301f9c4169d6.js +1 -0
- package/assets/esri/core/workers/chunks/79c0a966f7d11d3c217f.js +1 -0
- package/assets/esri/core/workers/chunks/7a818499c1079906c2d7.js +1 -0
- package/assets/esri/core/workers/chunks/7ac47a9ad244100bc3b1.js +1 -0
- package/assets/esri/core/workers/chunks/7b862a074816c099b9ff.js +1 -0
- package/assets/esri/core/workers/chunks/7baa363b3b0a442a63d2.js +1 -0
- package/assets/esri/core/workers/chunks/7cc729b57a6a52c8ac68.js +1 -0
- package/assets/esri/core/workers/chunks/{4abe820bbe4f7ffccc09.js → 7df795bc4fa1d433463b.js} +1 -1
- package/assets/esri/core/workers/chunks/7ea65aa6d3e684e12082.js +1 -0
- package/assets/esri/core/workers/chunks/7f7a76f5fef25049fbf8.js +1 -0
- package/assets/esri/core/workers/chunks/7fa9dc39bf0a7a6fdc1f.js +1 -0
- package/assets/esri/core/workers/chunks/821176ee3be724621bb0.js +1 -0
- package/assets/esri/core/workers/chunks/825eb845216762a1ed2f.js +1 -0
- package/assets/esri/core/workers/chunks/82f4aa0533db009b11d8.js +2 -0
- package/assets/esri/core/workers/chunks/{2a344bca6837ca3b5c41.js.LICENSE.txt → 82f4aa0533db009b11d8.js.LICENSE.txt} +0 -6
- package/assets/esri/core/workers/chunks/830d1a7dee43422507ab.js +1 -0
- package/assets/esri/core/workers/chunks/835643f716f7058a2722.js +1 -0
- package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +1 -0
- package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +1 -0
- package/assets/esri/core/workers/chunks/893ffc38e1a43de5b63d.js +1 -0
- package/assets/esri/core/workers/chunks/{93df864c2e829f0fd5ce.js → 8a1970e68bc1e833cb7f.js} +1 -1
- package/assets/esri/core/workers/chunks/{684c9b4bd9590d2db12f.js → 8a410edcdf74ba957159.js} +1 -1
- package/assets/esri/core/workers/chunks/8b73694d5a97638a3a61.js +1 -0
- package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +1 -0
- package/assets/esri/core/workers/chunks/{6ef3b8d67b498d655a99.js → 8c5e65982c3f9295e844.js} +1 -1
- package/assets/esri/core/workers/chunks/8cb2fe91d1d8f49c14f8.js +1 -0
- package/assets/esri/core/workers/chunks/{1961b59756933e0a82f2.js → 8dcc6c19d5b3a5ac5512.js} +1 -1
- package/assets/esri/core/workers/chunks/8dee03779b569f233daf.js +1 -0
- package/assets/esri/core/workers/chunks/8ec5e470583b75fceae1.js +1 -0
- package/assets/esri/core/workers/chunks/8f2fecd8a0a972d68590.js +1 -0
- package/assets/esri/core/workers/chunks/9073b0f0ec93d6e243b9.js +1 -0
- package/assets/esri/core/workers/chunks/90ace5f9b4af1beea6bf.js +1 -0
- package/assets/esri/core/workers/chunks/94719ac469dadc4c05dc.js +1 -0
- package/assets/esri/core/workers/chunks/94e9cf8e729ec36de5be.js +1 -0
- package/assets/esri/core/workers/chunks/96d5fed0235558c0e348.js +1 -0
- package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +1 -0
- package/assets/esri/core/workers/chunks/9902fcd2070c8eb6d043.js +1 -0
- package/assets/esri/core/workers/chunks/99772ce7e628364434fa.js +1 -0
- package/assets/esri/core/workers/chunks/{b1a0eb6598309e11337f.js → 99e3aa4832ed87474ab4.js} +1 -1
- package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +1 -0
- package/assets/esri/core/workers/chunks/9a97f6cda2f36941efae.js +1 -0
- package/assets/esri/core/workers/chunks/9b1199104a6822ab7340.js +1 -0
- package/assets/esri/core/workers/chunks/9ceeae787dc7c194d60e.js +1 -0
- package/assets/esri/core/workers/chunks/9ebc98746b1f085b82b7.js +1 -0
- package/assets/esri/core/workers/chunks/9ee3741eef73f3edb18b.js +1 -0
- package/assets/esri/core/workers/chunks/9fb87a7dba62b527c0ba.js +1 -0
- package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +1 -0
- package/assets/esri/core/workers/chunks/a183b77854f5b42c1a86.js +1 -0
- package/assets/esri/core/workers/chunks/a23f4d8e7c372f5fb6d7.js +1 -0
- package/assets/esri/core/workers/chunks/a25f51d2d3ff6b9af7ca.js +1 -0
- package/assets/esri/core/workers/chunks/a27172dacdb85a774c4b.js +1 -0
- package/assets/esri/core/workers/chunks/a27cdf4c29dd50a6dab1.js +1 -0
- package/assets/esri/core/workers/chunks/a294dd12b5c708ce04af.js +1 -0
- package/assets/esri/core/workers/chunks/a3c882fe7599dc0f4f27.js +1 -0
- package/assets/esri/core/workers/chunks/a90f7b1c6c69b6033b4c.js +1 -0
- package/assets/esri/core/workers/chunks/a9c641bcdef161c754bf.js +1 -0
- package/assets/esri/core/workers/chunks/a9d391071803b1e9e8a0.js +1 -0
- package/assets/esri/core/workers/chunks/{757982a73174aa7ab0d1.js → aa0fb77c62a2d4eb20a5.js} +1 -1
- package/assets/esri/core/workers/chunks/aaa66a04b882b0ba2961.js +1 -0
- package/assets/esri/core/workers/chunks/ae50b2d5e63f62c088d2.js +1 -0
- package/assets/esri/core/workers/chunks/af3ac4bed43e901b59c7.js +1 -0
- package/assets/esri/core/workers/chunks/af97e19516dbbcfb5286.js +1 -0
- package/assets/esri/core/workers/chunks/aff0e7761276036e029d.js +1 -0
- package/assets/esri/core/workers/chunks/b23d1e10fc4161d1f3eb.js +1 -0
- package/assets/esri/core/workers/chunks/b32bdf5730953c2fb16b.js +1 -0
- package/assets/esri/core/workers/chunks/b3f1a442d6b7826e917f.js +1 -0
- package/assets/esri/core/workers/chunks/b4047333265a2665aef9.js +1 -0
- package/assets/esri/core/workers/chunks/b45a013039bbd2614525.js +680 -0
- package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +1 -0
- package/assets/esri/core/workers/chunks/{5c63b38160c7d063b8af.js → b780514be87a22b49b01.js} +1 -1
- package/assets/esri/core/workers/chunks/b792857a178da2dd77d6.js +1 -0
- package/assets/esri/core/workers/chunks/b819a9187426d0c146df.js +1 -0
- package/assets/esri/core/workers/chunks/{1d92da90fbbc3f98b201.js → b8d788e110c212a879ab.js} +1 -1
- package/assets/esri/core/workers/chunks/b94cd7eac5ff4a78dd5b.js +1 -0
- package/assets/esri/core/workers/chunks/b9d6f89f9b8e9d1bc787.js +1 -0
- package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +1 -0
- package/assets/esri/core/workers/chunks/{bc547cf814d6703cef59.js → bb95922cd4631d6f17fb.js} +1 -1
- package/assets/esri/core/workers/chunks/bcb5017500d144b73908.js +1 -0
- package/assets/esri/core/workers/chunks/bd862382f72ebd446b46.js +1 -0
- package/assets/esri/core/workers/chunks/bdd19dab276d20d5381a.js +1 -0
- package/assets/esri/core/workers/chunks/bee5e738ecf8680909c4.js +1 -0
- package/assets/esri/core/workers/chunks/{9be4438ce2c7180adadf.js → bf287f0e2ecb4532dc00.js} +1 -1
- package/assets/esri/core/workers/chunks/{5115059b012ef84407cf.js → bfb6566c27c09deb0929.js} +1 -1
- package/assets/esri/core/workers/chunks/c055c16379f5bb56e930.js +1 -0
- package/assets/esri/core/workers/chunks/c13e55b9efb0b532f7ee.js +1 -0
- package/assets/esri/core/workers/chunks/c369d4266f38e9ea6592.js +1 -0
- package/assets/esri/core/workers/chunks/c3fae4f4522604a9c17e.js +1 -0
- package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +1 -0
- package/assets/esri/core/workers/chunks/c50e4e8c6188e64e7d45.js +1 -0
- package/assets/esri/core/workers/chunks/c838cc1c786368b78598.js +1 -0
- package/assets/esri/core/workers/chunks/c8db0a4fb5bc982dc9fc.js +1 -0
- package/assets/esri/core/workers/chunks/{82adfa2dbd40e1becaf4.js → c97451f75c23be979476.js} +1 -1
- package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +1 -0
- package/assets/esri/core/workers/chunks/ca419858910af5505d3d.js +1 -0
- package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +1 -0
- package/assets/esri/core/workers/chunks/{034dd8ee5152a12412cd.js → cba3316910ff088f4d77.js} +1 -1
- package/assets/esri/core/workers/chunks/cc414fd2e313d89d524d.js +1 -0
- package/assets/esri/core/workers/chunks/{7b8466f892a38a53c600.js → cce83896093279c70449.js} +1 -1
- package/assets/esri/core/workers/chunks/cda04571d7623c17ada2.js +1 -0
- package/assets/esri/core/workers/chunks/cea4b18e7f83c02922b1.js +1 -0
- package/assets/esri/core/workers/chunks/cf03d391d50a4c7aca4f.js +1 -0
- package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +1 -0
- package/assets/esri/core/workers/chunks/d082de5dd83bd73d209b.js +1 -0
- package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +1 -0
- package/assets/esri/core/workers/chunks/d36f17d32c654b1ac7fa.js +1 -0
- package/assets/esri/core/workers/chunks/d36fba71c52ea4e71546.js +1 -0
- package/assets/esri/core/workers/chunks/{18f980465db5a86153d1.js → d37a72111dffc4c4db70.js} +1 -1
- package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +1 -0
- package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +1 -0
- package/assets/esri/core/workers/chunks/d5561dff043789494845.js +1 -0
- package/assets/esri/core/workers/chunks/d79ce047afbc034f6008.js +1 -0
- package/assets/esri/core/workers/chunks/d847c3cb2043a983145b.js +1 -0
- package/assets/esri/core/workers/chunks/d849bdaf5bdfdc37531a.js +1 -0
- package/assets/esri/core/workers/chunks/da6134c7883531f21afe.js +1 -0
- package/assets/esri/core/workers/chunks/{c48dfda8dcb9551606fb.js → dad39ddf0f8dfb0bef47.js} +1 -1
- package/assets/esri/core/workers/chunks/dadefe369f49e89a2610.js +1 -0
- package/assets/esri/core/workers/chunks/dccb46c7dce68528c72b.js +1 -0
- package/assets/esri/core/workers/chunks/dd65c32ae55fcf1282fe.js +1 -0
- package/assets/esri/core/workers/chunks/ddafe402f1bc9e8285ef.js +1 -0
- package/assets/esri/core/workers/chunks/de9573871f64c01e9f01.js +1 -0
- package/assets/esri/core/workers/chunks/dedf678490572c500a19.js +30 -0
- package/assets/esri/core/workers/chunks/df174346a7e9b629a392.js +1 -0
- package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +1 -0
- package/assets/esri/core/workers/chunks/dfbdc72c7ea137e3841d.js +1 -0
- package/assets/esri/core/workers/chunks/e21b3490bfce75405e55.js +1 -0
- package/assets/esri/core/workers/chunks/e2c9393bec747f7876bb.js +1 -0
- package/assets/esri/core/workers/chunks/e3e966777f18164afcd8.js +1 -0
- package/assets/esri/core/workers/chunks/e4a2eefffe16cd5bb20f.js +1 -0
- package/assets/esri/core/workers/chunks/{d0983cc19d19c19c3478.js → e4aacfc1617ccf60bd5a.js} +1 -1
- package/assets/esri/core/workers/chunks/{3a526e1d18490b99332f.js → e5bb7ee670a3ba5ba3fe.js} +1 -1
- package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +1 -0
- package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +1 -0
- package/assets/esri/core/workers/chunks/e94f2d6037fba042dc6e.js +1 -0
- package/assets/esri/core/workers/chunks/e9511627418c6864148a.js +1 -0
- package/assets/esri/core/workers/chunks/ea8f224da4c5c95a3547.js +1 -0
- package/assets/esri/core/workers/chunks/ec1a2e68957fae48e60b.js +30 -0
- package/assets/esri/core/workers/chunks/ec2e0b2e31fd53b81d0a.js +1 -0
- package/assets/esri/core/workers/chunks/ed552941eca621a51f16.js +1 -0
- package/assets/esri/core/workers/chunks/ee58f4bbc0a1f7d03df0.js +1 -0
- package/assets/esri/core/workers/chunks/f04cb48fc73635d0572f.js +1 -0
- package/assets/esri/core/workers/chunks/f06f591680c9e93e69f6.js +1 -0
- package/assets/esri/core/workers/chunks/f1d3cf674b6bea89e122.js +1 -0
- package/assets/esri/core/workers/chunks/f2ab8e49c7f17f488aa8.js +1 -0
- package/assets/esri/core/workers/chunks/{6a51499c6623ddce5f00.js → f2adf1227a795604d3b8.js} +1 -1
- package/assets/esri/core/workers/chunks/f30578843f4faefd53b4.js +1 -0
- package/assets/esri/core/workers/chunks/{57c003c6745d450558a7.js → f4aed2b6e92bd0474069.js} +1 -1
- package/assets/esri/core/workers/chunks/f5d7f69047e1b1116202.js +1 -0
- package/assets/esri/core/workers/chunks/f5d809d30cbb56be852d.js +1 -0
- package/assets/esri/core/workers/chunks/{2d92f0042facb55edcff.js → f65adaaa33d9f3b131f6.js} +1 -1
- package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +1 -0
- package/assets/esri/core/workers/chunks/fb34d6d96c8c0d53fcf6.js +1 -0
- package/assets/esri/core/workers/chunks/fb51f823b25c827c6b29.js +1 -0
- package/assets/esri/core/workers/chunks/fba8065a3a6fbd877e23.js +1 -0
- package/assets/esri/core/workers/chunks/fd47ee8598e37fea03fe.js +1 -0
- package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +1 -0
- package/assets/esri/core/workers/chunks/ff089723a27859fe18d1.js +1 -0
- package/assets/esri/layers/raster/formats/lerc-wasm.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
- package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
- package/chunks/arcgis-knowledge-client-core.js +1 -1
- package/config.js +1 -1
- package/geometry/support/sphere.js +1 -1
- package/interfaces.d.ts +5 -0
- package/kernel.js +1 -1
- package/layers/AnnotationFeatureLayer.d.ts +13 -3
- package/layers/DimensionFeatureLayer.d.ts +10 -3
- package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
- package/layers/raster/formats/RasterCodec.js +1 -1
- package/package.json +3 -3
- package/support/revision.js +1 -1
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/SceneLayerWorker.js +1 -1
- package/views/3d/layers/SceneLayerWorkerHandle.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
- package/views/3d/webgl/RenderCamera.js +1 -1
- package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
- package/views/3d/webgl-engine/effects/clouds/CloudsParameters.js +1 -1
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/Octree.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.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/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/BufferRange.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/VaoWriter.js +1 -1
- package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
- package/views/Viewport2DMixin.js +1 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/Sketch.js +1 -1
- package/assets/esri/core/workers/chunks/02b043a3c5fa8bcb4c5b.js +0 -1
- package/assets/esri/core/workers/chunks/03437a8ef35c200dbf17.js +0 -1
- package/assets/esri/core/workers/chunks/0603cbd938ab619c706b.js +0 -1
- package/assets/esri/core/workers/chunks/08405116b5feb2d00101.js +0 -1
- package/assets/esri/core/workers/chunks/0a6e03263ab0906d8bcf.js +0 -1
- package/assets/esri/core/workers/chunks/0af6b87a3d77bb93b893.js +0 -1
- package/assets/esri/core/workers/chunks/0edd250159ec259601b3.js +0 -1
- package/assets/esri/core/workers/chunks/0f10d7d592c36ee2d1ea.js +0 -1
- package/assets/esri/core/workers/chunks/0f8fcbd0650b6a924f75.js +0 -1
- package/assets/esri/core/workers/chunks/0f976bfb7db98c2c0e05.js +0 -1
- package/assets/esri/core/workers/chunks/1040bce57ea63a6dbca4.js +0 -2
- package/assets/esri/core/workers/chunks/10510f76f8538c2dfb84.js +0 -1
- package/assets/esri/core/workers/chunks/1079914101d69a40b3eb.js +0 -1
- package/assets/esri/core/workers/chunks/11af659688cf963ea6cd.js +0 -1
- package/assets/esri/core/workers/chunks/15081b361fc42f40b865.js +0 -1
- package/assets/esri/core/workers/chunks/1599dc5309a4e60017ce.js +0 -261
- package/assets/esri/core/workers/chunks/181e98399732f425305d.js +0 -1
- package/assets/esri/core/workers/chunks/1837f97f720d255a1694.js +0 -1
- package/assets/esri/core/workers/chunks/18c4c437ded8bfbd3305.js +0 -1
- package/assets/esri/core/workers/chunks/18f4b2099299942aaf97.js +0 -1
- package/assets/esri/core/workers/chunks/1958facb000b6c16bfe4.js +0 -1
- package/assets/esri/core/workers/chunks/196e7515a43bd0026f49.js +0 -1
- package/assets/esri/core/workers/chunks/1a0903b1d2d5101977c6.js +0 -1
- package/assets/esri/core/workers/chunks/1aa7496a7dc95aae11ac.js +0 -1
- package/assets/esri/core/workers/chunks/1bd49e8d2657c72bf3f9.js +0 -1
- package/assets/esri/core/workers/chunks/1c263ffb7144e171a64f.js +0 -1
- package/assets/esri/core/workers/chunks/1d524690c4b66289bd20.js +0 -1
- package/assets/esri/core/workers/chunks/20fa2c3d4360afa5e136.js +0 -1
- package/assets/esri/core/workers/chunks/210ffc448c73a7bf63aa.js +0 -1
- package/assets/esri/core/workers/chunks/23f81f4a3d7a983eef23.js +0 -1
- package/assets/esri/core/workers/chunks/2540beb53f1443a070d7.js +0 -1
- package/assets/esri/core/workers/chunks/25c1f5e2561986330b80.js +0 -1
- package/assets/esri/core/workers/chunks/2757c4bf0280e27f3484.js +0 -1
- package/assets/esri/core/workers/chunks/294537e1ac43e8dfeaea.js +0 -1
- package/assets/esri/core/workers/chunks/29a1d0659bbc5a039864.js +0 -1
- package/assets/esri/core/workers/chunks/29df3f829006719b2680.js +0 -1
- package/assets/esri/core/workers/chunks/2a344bca6837ca3b5c41.js +0 -2
- package/assets/esri/core/workers/chunks/2a5dbed88bbd96cfac9f.js +0 -1
- package/assets/esri/core/workers/chunks/2b044c8fab2055a8818d.js +0 -1
- package/assets/esri/core/workers/chunks/2d956dacb26d71d1c174.js +0 -1
- package/assets/esri/core/workers/chunks/2da797ae5af9d2ede42d.js +0 -1
- package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +0 -1
- package/assets/esri/core/workers/chunks/2e495a28494c2351837b.js +0 -1
- package/assets/esri/core/workers/chunks/2ef80e003b4f0393ac2e.js +0 -1
- package/assets/esri/core/workers/chunks/2fc3e43b64300014dddc.js +0 -1
- package/assets/esri/core/workers/chunks/30cf84a47ebefd180bb7.js +0 -1
- package/assets/esri/core/workers/chunks/314bc1b356d43bfa72a8.js +0 -1
- package/assets/esri/core/workers/chunks/34a024eda22d228e1fbe.js +0 -1
- package/assets/esri/core/workers/chunks/37e823202424c11076cb.js +0 -1
- package/assets/esri/core/workers/chunks/38a76bc4ef5c10ab0488.js +0 -1
- package/assets/esri/core/workers/chunks/390f2beee8e3f2a302e4.js +0 -1
- package/assets/esri/core/workers/chunks/3a76fffa2016c16d7989.js +0 -1398
- package/assets/esri/core/workers/chunks/3c2eb386c0165150e039.js +0 -1
- package/assets/esri/core/workers/chunks/3e4b379a6a197b9c4e6b.js +0 -1
- package/assets/esri/core/workers/chunks/3ec91474658eae87b832.js +0 -1
- package/assets/esri/core/workers/chunks/3eee32db0e9a5086b9a8.js +0 -1
- package/assets/esri/core/workers/chunks/406c7723e8db470822bf.js +0 -1
- package/assets/esri/core/workers/chunks/41aca863324387576cf8.js +0 -1
- package/assets/esri/core/workers/chunks/442424200e7475e9a08f.js +0 -1
- package/assets/esri/core/workers/chunks/4452fd0c59431904d533.js +0 -1
- package/assets/esri/core/workers/chunks/448e0596005cba9a4225.js +0 -1
- package/assets/esri/core/workers/chunks/4545cf12ad0824ce6b41.js +0 -1
- package/assets/esri/core/workers/chunks/45530a49fa1f09d1682e.js +0 -1
- package/assets/esri/core/workers/chunks/459e89d1b94a3b204d20.js +0 -30
- package/assets/esri/core/workers/chunks/45b2e58051f42ebd236e.js +0 -1
- package/assets/esri/core/workers/chunks/4611cf051c3c396fdf96.js +0 -1
- package/assets/esri/core/workers/chunks/46e3d33e44e5398221e2.js +0 -1
- package/assets/esri/core/workers/chunks/47656ec12401e53f4bd3.js +0 -1
- package/assets/esri/core/workers/chunks/47948c72bc01bd173c20.js +0 -2
- package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +0 -1
- package/assets/esri/core/workers/chunks/49713dfa4c8b788079d1.js +0 -1
- package/assets/esri/core/workers/chunks/4a8201e09bc3ad5cc00b.js +0 -1
- package/assets/esri/core/workers/chunks/4ad86d6b1be07c97b6f6.js +0 -1
- package/assets/esri/core/workers/chunks/4be0c64bbf2449d57ea5.js +0 -1
- package/assets/esri/core/workers/chunks/4d57c771af4137f74bfb.js +0 -1
- package/assets/esri/core/workers/chunks/4f25aac84d9eb10cac83.js +0 -1
- package/assets/esri/core/workers/chunks/50b34e246f8eef2f6e07.js +0 -1
- package/assets/esri/core/workers/chunks/514ab968c0d75062e6ab.js +0 -1
- package/assets/esri/core/workers/chunks/51838d55d8ec4ce70398.js +0 -1
- package/assets/esri/core/workers/chunks/557300ec03bae84d8afc.js +0 -1
- package/assets/esri/core/workers/chunks/57abf838fcff0f0e2c5e.js +0 -1
- package/assets/esri/core/workers/chunks/57dd017fed2943d24e3d.js +0 -1
- package/assets/esri/core/workers/chunks/59801b2ccaaf4b394e02.js +0 -1
- package/assets/esri/core/workers/chunks/5a2d2dcdfa8d958f277d.js +0 -1
- package/assets/esri/core/workers/chunks/5a62c9f64db4fcae5e52.js +0 -1
- package/assets/esri/core/workers/chunks/5aebecb5c2b3e7887127.js +0 -1
- package/assets/esri/core/workers/chunks/5e68b74fd548c7cdba36.js +0 -1
- package/assets/esri/core/workers/chunks/5f360492560ae07083a6.js +0 -1
- package/assets/esri/core/workers/chunks/6022f43ebd58e21c737a.js +0 -1
- package/assets/esri/core/workers/chunks/6048c89fc4dcd2e9988d.js +0 -1
- package/assets/esri/core/workers/chunks/61efc7f5fab1c2b1f764.js +0 -1
- package/assets/esri/core/workers/chunks/62b137a795e487fa06a1.js +0 -1
- package/assets/esri/core/workers/chunks/632de34ebd2f44b4423d.js +0 -1
- package/assets/esri/core/workers/chunks/63ca17f569407c89bde1.js +0 -30
- package/assets/esri/core/workers/chunks/643c7506f8fe8e06acd2.js +0 -1
- package/assets/esri/core/workers/chunks/6596b12bb286a0b45a68.js +0 -1
- package/assets/esri/core/workers/chunks/65cc9a48ac95523f7aa8.js +0 -1
- package/assets/esri/core/workers/chunks/661f50cb97604453f942.js +0 -1
- package/assets/esri/core/workers/chunks/686c1a1b794ebe1a0341.js +0 -1
- package/assets/esri/core/workers/chunks/6896a6dd36fa91a27151.js +0 -1
- package/assets/esri/core/workers/chunks/68bc674affe2f7269c40.js +0 -1
- package/assets/esri/core/workers/chunks/6c02493a1c1deff49c7e.js +0 -1
- package/assets/esri/core/workers/chunks/6cdf1db30793133294dd.js +0 -1
- package/assets/esri/core/workers/chunks/6ff6783f89ecd3a5e752.js +0 -1
- package/assets/esri/core/workers/chunks/70763c7b68d8abe8d5fe.js +0 -1
- package/assets/esri/core/workers/chunks/716b1f073e3cd807abd3.js +0 -1
- package/assets/esri/core/workers/chunks/71a3f05cb86ae2920f8d.js +0 -1
- package/assets/esri/core/workers/chunks/71b672259bac2befd9c7.js +0 -1
- package/assets/esri/core/workers/chunks/71c996e1ae84d9daddf2.js +0 -1
- package/assets/esri/core/workers/chunks/723bb56de2324b41df4e.js +0 -1
- package/assets/esri/core/workers/chunks/73f61107cb7e6d30bf03.js +0 -1
- package/assets/esri/core/workers/chunks/752c34cee981862add89.js +0 -1
- package/assets/esri/core/workers/chunks/75915f81caaf9e5345a9.js +0 -1
- package/assets/esri/core/workers/chunks/75baf6dff6e7658b17b3.js +0 -1
- package/assets/esri/core/workers/chunks/760dfd585b6c2c1937ce.js +0 -1
- package/assets/esri/core/workers/chunks/76449e50222111ba0eb1.js +0 -1
- package/assets/esri/core/workers/chunks/76789f46b2c65d219cf9.js +0 -1
- package/assets/esri/core/workers/chunks/76bed5497f42f23a27ed.js +0 -1
- package/assets/esri/core/workers/chunks/7849cf0352c0a604e164.js +0 -1
- package/assets/esri/core/workers/chunks/7908aed639521cf572e8.js +0 -1
- package/assets/esri/core/workers/chunks/7d65a8ec5e1f871b9321.js +0 -1
- package/assets/esri/core/workers/chunks/7e4093f42795ba2f8cfd.js +0 -1
- package/assets/esri/core/workers/chunks/7f849c8255140be6097f.js +0 -1
- package/assets/esri/core/workers/chunks/804c31973f7d116523cb.js +0 -1
- package/assets/esri/core/workers/chunks/81726d997a2d34449bb2.js +0 -1
- package/assets/esri/core/workers/chunks/81883bca8a79ee2ddb00.js +0 -1
- package/assets/esri/core/workers/chunks/832ecc1f7d45774c4726.js +0 -1
- package/assets/esri/core/workers/chunks/8461f50e9875db4ccfec.js +0 -1
- package/assets/esri/core/workers/chunks/8598997340682113a2a5.js +0 -1
- package/assets/esri/core/workers/chunks/860a0f9d20f53db1caf4.js +0 -1
- package/assets/esri/core/workers/chunks/867e39bb444947c93586.js +0 -1
- package/assets/esri/core/workers/chunks/88ec63501fa2f6fdadca.js +0 -1
- package/assets/esri/core/workers/chunks/8980767c5b626e4dc3b9.js +0 -1
- package/assets/esri/core/workers/chunks/89dd1b1acb0d69264c93.js +0 -1
- package/assets/esri/core/workers/chunks/8a66a3e8391206f7d8aa.js +0 -1
- package/assets/esri/core/workers/chunks/8a8b7ac6693bdfbebf07.js +0 -1
- package/assets/esri/core/workers/chunks/8ad5e80e911419c1685a.js +0 -1
- package/assets/esri/core/workers/chunks/8b526ca2dd6fc6a7e921.js +0 -1
- package/assets/esri/core/workers/chunks/8e80441eddef1b5be8b9.js +0 -1
- package/assets/esri/core/workers/chunks/8f16a358ed83d2264415.js +0 -1
- package/assets/esri/core/workers/chunks/8fce15ce4cfdccf407f3.js +0 -1
- package/assets/esri/core/workers/chunks/8fd63cb38036f331a803.js +0 -1
- package/assets/esri/core/workers/chunks/91c5205d1274c7f190d5.js +0 -1
- package/assets/esri/core/workers/chunks/92341f36a8b15f34bcca.js +0 -1
- package/assets/esri/core/workers/chunks/937cf55b3b9d324eea73.js +0 -1
- package/assets/esri/core/workers/chunks/93d4bda22bde33fafa57.js +0 -1
- package/assets/esri/core/workers/chunks/9639b1dd27ccc17ee21e.js +0 -1
- package/assets/esri/core/workers/chunks/966d002acec8c72be56a.js +0 -1
- package/assets/esri/core/workers/chunks/986d8c3907aeeb18c4f6.js +0 -1
- package/assets/esri/core/workers/chunks/98e489c2b85feded7776.js +0 -1
- package/assets/esri/core/workers/chunks/9aef0b87f471626abd66.js +0 -1
- package/assets/esri/core/workers/chunks/9ba9a3705623679bc305.js +0 -1
- package/assets/esri/core/workers/chunks/a188d0767825d322f96d.js +0 -1
- package/assets/esri/core/workers/chunks/a4d3cbc02dc1186a9a6d.js +0 -1
- package/assets/esri/core/workers/chunks/a638de0102c3990403d1.js +0 -1
- package/assets/esri/core/workers/chunks/a6bda5f17fb1c03f7e4b.js +0 -1
- package/assets/esri/core/workers/chunks/a6dc01847f39413f78b8.js +0 -1
- package/assets/esri/core/workers/chunks/acc733b4881c3e4e503e.js +0 -1
- package/assets/esri/core/workers/chunks/b022debf9e0bc2bff0e2.js +0 -1
- package/assets/esri/core/workers/chunks/b09935d0105d50a0971b.js +0 -1
- package/assets/esri/core/workers/chunks/b12fc1b5a9da97346684.js +0 -1
- package/assets/esri/core/workers/chunks/b4323e69e624c6b51754.js +0 -1
- package/assets/esri/core/workers/chunks/b45e91249a8ea1559a2b.js +0 -1
- package/assets/esri/core/workers/chunks/b50a42a9f96515beb929.js +0 -1
- package/assets/esri/core/workers/chunks/b5141f240ca79729686d.js +0 -1
- package/assets/esri/core/workers/chunks/b549a4d4b1a34bee8beb.js +0 -1
- package/assets/esri/core/workers/chunks/bb89b6fd93513c61b2d3.js +0 -1
- package/assets/esri/core/workers/chunks/bc553ecc8cbcc1b02717.js +0 -1
- package/assets/esri/core/workers/chunks/bcba02f61cf0abcb5600.js +0 -1
- package/assets/esri/core/workers/chunks/bccc199af4e2e49f7acd.js +0 -1
- package/assets/esri/core/workers/chunks/bd0f488e228a75fbefb3.js +0 -30
- package/assets/esri/core/workers/chunks/bd155794e9bc16dd0474.js +0 -1
- package/assets/esri/core/workers/chunks/bf6ae205fbfbfcd1a0ee.js +0 -1
- package/assets/esri/core/workers/chunks/c148ad0ea9258046ac1f.js +0 -1
- package/assets/esri/core/workers/chunks/c228b058dd91bf0e1102.js +0 -1
- package/assets/esri/core/workers/chunks/c4e44fde4bc4ff89e2bc.js +0 -1
- package/assets/esri/core/workers/chunks/c4fc85281ca83af7abaf.js +0 -1
- package/assets/esri/core/workers/chunks/c610ccbfdb1c5b06c217.js +0 -1
- package/assets/esri/core/workers/chunks/c660a5a1086870a3a6b9.js +0 -1
- package/assets/esri/core/workers/chunks/c8b7ffc5cb3f1493129e.js +0 -1
- package/assets/esri/core/workers/chunks/c9057b0ad2c2bae4a8ce.js +0 -1
- package/assets/esri/core/workers/chunks/c93a68618674b38b932e.js +0 -1
- package/assets/esri/core/workers/chunks/c961aff385e38b081204.js +0 -1
- package/assets/esri/core/workers/chunks/cc0efa716b8414a44398.js +0 -1
- package/assets/esri/core/workers/chunks/cd66bd30f654fe571e57.js +0 -1
- package/assets/esri/core/workers/chunks/cd88e6f02bc2e5b67abf.js +0 -1
- package/assets/esri/core/workers/chunks/cf826787ab8d4b27ad80.js +0 -1
- package/assets/esri/core/workers/chunks/cfbbfa5edffa57bd3a8e.js +0 -1
- package/assets/esri/core/workers/chunks/d0217187aed8bb7038f4.js +0 -1
- package/assets/esri/core/workers/chunks/d1928a8c86a8966e5582.js +0 -1
- package/assets/esri/core/workers/chunks/d2745886ba5a86fd5c4c.js +0 -680
- package/assets/esri/core/workers/chunks/d4c341b15d9244276fb9.js +0 -1
- package/assets/esri/core/workers/chunks/d5faab9799891e5da5a8.js +0 -1
- package/assets/esri/core/workers/chunks/d811924acc9c0be95bba.js +0 -1
- package/assets/esri/core/workers/chunks/db90fb8ac96579259566.js +0 -1
- package/assets/esri/core/workers/chunks/dd0acd0f8b96839b4f24.js +0 -2
- package/assets/esri/core/workers/chunks/dd785e595cd08b2d6284.js +0 -1
- package/assets/esri/core/workers/chunks/e0b47b08ae2c36c76fa2.js +0 -1
- package/assets/esri/core/workers/chunks/e1ddb8e4977b317fd40c.js +0 -1
- package/assets/esri/core/workers/chunks/e4015870412edd69453c.js +0 -1
- package/assets/esri/core/workers/chunks/e7cb1b72f0b54e845741.js +0 -1
- package/assets/esri/core/workers/chunks/e7e7c7cbfd8542bd7a46.js +0 -1
- package/assets/esri/core/workers/chunks/e80376832050a4b6d28a.js +0 -1
- package/assets/esri/core/workers/chunks/e8a885b576da3ec145d3.js +0 -1
- package/assets/esri/core/workers/chunks/e95ee94027c1934086d8.js +0 -1
- package/assets/esri/core/workers/chunks/e961c6140c39921816a8.js +0 -1
- package/assets/esri/core/workers/chunks/eb7daa0f6610983ff8db.js +0 -1
- package/assets/esri/core/workers/chunks/eb842cf470ce28a73187.js +0 -1
- package/assets/esri/core/workers/chunks/eeea5710275c967e8d51.js +0 -1
- package/assets/esri/core/workers/chunks/ef32e454012f3b0e3f77.js +0 -1
- package/assets/esri/core/workers/chunks/f31a8e76f1dde23c0900.js +0 -1
- package/assets/esri/core/workers/chunks/f50bba74ae72c07e131a.js +0 -1
- package/assets/esri/core/workers/chunks/f58ddf37dee066a5c0d8.js +0 -1
- package/assets/esri/core/workers/chunks/f80cadcc2a588da63b38.js +0 -1
- package/assets/esri/core/workers/chunks/f83e3ad67b60744afd6d.js +0 -1
- package/assets/esri/core/workers/chunks/f859c53432f258af77e3.js +0 -2
- package/assets/esri/core/workers/chunks/f8bbb52b865a0a242140.js +0 -1
- package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +0 -1
- package/assets/esri/core/workers/chunks/f9592bcdd9988199a7ea.js +0 -1
- package/assets/esri/core/workers/chunks/fedbeb488d5d7c07c7dc.js +0 -1
- package/assets/esri/core/workers/chunks/ff7e1eb2366d4301d288.js +0 -1
- /package/assets/esri/core/workers/chunks/{47948c72bc01bd173c20.js.LICENSE.txt → 24c0b3586bb6500eda53.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{f859c53432f258af77e3.js.LICENSE.txt → 394716bd1ecfd638d708.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{1040bce57ea63a6dbca4.js.LICENSE.txt → 55af58b6dff52dc040fe.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{dd0acd0f8b96839b4f24.js.LICENSE.txt → 5b18696109fe84a1010a.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import"../../../../core/has.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as s,sync as
|
|
2
|
+
import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import"../../../../core/has.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as s,sync as o}from"../../../../core/reactiveUtils.js";import{signal as r}from"../../../../core/signal.js";import{property as n,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{cloudPresets as c}from"./clouds/CloudsPresets.js";import{CloudsRenderer as u}from"./clouds/CloudsRenderer.js";import{Precipitation as p}from"./precipitation/Precipitation.js";let h=class extends e{constructor(t){super(t),this._clouds=r(null),this._incarnation=0,this._precipitation=null}initialize(){const t=()=>this._requestRender();this.addHandles([s(()=>this._precipitation,t,o),s(()=>this._clouds.value?.state,t,o),s(()=>this.view.state.mode,t,o),s(()=>this.view.state.stationary&&this.context.bind.clouds.needsStationaryAnchorUpdate(this.view.state.camera),e=>{e&&t()},o),s(()=>this._updateClouds(),t,o),s(()=>this._updatePrecipitation(),t,o),s(()=>this.weather,t=>this._initWeather(t))])}destroy(){this.removeHandles(),this._clouds.value=i(this._clouds.value),this._precipitation=null,this._precipitationOutgoing=null}get readyToRun(){return!!this._clouds.value?.readyToRun||this.view.state.stationary&&this.context.bind.clouds.needsStationaryAnchorUpdate(this.view.state.camera)}get usedMemory(){return this._clouds.value?.usedMemory??0}_fadeOutPrecipitation(){this._precipitation&&(this._precipitationOutgoing?.destroy(),this._precipitationOutgoing=this._precipitation,this._precipitationOutgoing.fadeOut(()=>this._precipitationOutgoing=i(this._precipitationOutgoing)),this._precipitation=null,++this._incarnation)}get snowCover(){return this._precipitationOutgoing?.snowCover??this._precipitation?.snowCover??0}get weather(){return this.view?.environmentManager?.weatherEnabled?this.view.environment.weather:null}cleanupCubemap(){const t=this._clouds.value;0!==t?.state||0!==t.coverage||t.readyToRun||t.destroyCubeMap()}_requestRender(){this.view.stage.renderView.requestRender()}_initWeather(t){t&&this.context?this._clouds.value||(this._clouds.value=new u({context:this.context,view:this.view,requestRender:()=>this._requestRender()})):this._clouds.value=i(this._clouds.value)}_updateClouds(){const t=this.view.environment.weather;return null==t||null==this._clouds.value||this._clouds.value.applyPreset(c[t.type],l(t)),++this._incarnation}_updatePrecipitation(){const t=this.view.environment.weather;if(t.type===this._precipitation?.type)return this._incarnation;this._fadeOutPrecipitation();return("rainy"===t.type||"snowy"===t.type)&&(this._precipitation=new p({view:this.view,type:t.type}),++this._incarnation),this._incarnation}get test(){}};function l(t){switch(t.type){case"rainy":case"snowy":case"cloudy":case"sunny":return t.cloudCover;case"foggy":return t.fogStrength}}t([n({constructOnly:!0})],h.prototype,"view",void 0),t([n({constructOnly:!0})],h.prototype,"context",void 0),h=t([a("esri.views.3d.webgl-engine.effects.WeatherFader")],h);export{h as WeatherFader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{clamp as t}from"../../../../../core/mathUtils.js";import{signal as a}from"../../../../../core/signal.js";import{rotate as e}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as s,create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{
|
|
2
|
+
import"../../../../../core/has.js";import{clamp as t}from"../../../../../core/mathUtils.js";import{signal as a}from"../../../../../core/signal.js";import{rotate as e}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as s,create as i}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{copy as r,squaredLength as h,normalize as o,scale as n,length as c,subtract as d}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as l,fromValues as u}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as _,fromPoints as f,axis as p}from"../../../../../geometry/support/axisAngleDegrees.js";import{earth as m}from"../../../../../geometry/support/Ellipsoid.js";import{heightLimit as P}from"../../../environment/weather.js";import{ensureClouds as x}from"./Clouds.js";class F{constructor(){this.startTime=0,this._data=a(null),this.coverage=0,this.absorption=0,this._readChannels=0,this.parallax=new w,this.parallaxNew=new w,this._anchorPoint=l(),this._fadeState=a(0),this._fadeFactor=a(1)}get data(){return this._data.value}set data(t){this._data.value=t}get readChannels(){return this._readChannels}needsStationaryAnchorUpdate(t){return C&&this._stationaryAnchorPointDistance(t)>j}get fadeState(){return this._fadeState.value}get fadeFactor(){return this._fadeFactor.value}get opacity(){switch(this.fadeState){case 0:return 0;case 4:return 1-this.fadeFactor;case 1:return this.fadeFactor;case 2:case 3:return 1}}fade(a,e,s,i){if(this.isFading&&this.fadeFactor<1&&(this._fadeFactor.value=s?t((e-this.startTime)/(y*s),0,1):1,1===this.fadeFactor&&this._endFade()),this._evaluateState(a,e),i&&this.needsStationaryAnchorUpdate(a))switch(this.fadeState){case 3:r(this.parallaxNew.anchorPoint,this._anchorPoint);break;case 1:case 2:r(this.parallax.anchorPoint,this._anchorPoint),r(this.parallaxNew.anchorPoint,this._anchorPoint)}this._updateParallax(a)}_evaluateState(t,a){const e=t.relativeElevation,s=this._updateAnchorPoint(t);(Math.abs(e)>1.7*P||s>k)&&this.opacity>0?this._startFade(0,a):this.isFading||(Math.abs(e)>P||s>N*k?this.opacity>0&&this._startFade(4,a):x(this.data)&&(0===this.opacity?this._startFade(1,a):2===this.data.state&&(2===this.fadeState?this._startFade(3,a):this._startFade(2,a))))}_updateParallax(t){const a=h(t.eye);this.parallax.radiusCurvatureCorrection=.84*Math.sqrt(Math.max(a-m.radius*m.radius,0))/Math.sqrt(a),f(S,this.parallax.anchorPoint,v),e(this.parallax.transform,s,v[3],p(v)),f(S,this.parallaxNew.anchorPoint,v),e(this.parallaxNew.transform,s,v[3],p(v))}_updateAnchorPoint(t){return o(this._anchorPoint,t.eye),n(this._anchorPoint,this._anchorPoint,m.radius),0===this.fadeState&&2===this.data?.state?(r(this.parallax.anchorPoint,this._anchorPoint),0):c(d(g,this.parallax.anchorPoint,this._anchorPoint))}_stationaryAnchorPointDistance(t){switch(this.fadeState){case 1:case 2:return o(b,t.eye),n(b,b,m.radius),c(d(g,this.parallax.anchorPoint,b));case 3:return o(b,t.eye),n(b,b,m.radius),c(d(g,this.parallaxNew.anchorPoint,b));case 0:case 4:return 0;default:return this.fadeState,0}}requestFade(){this._fadeFactor.value=0}_startFade(t,a){switch(this._fadeState.value=t,this.startTime=a,t){case 3:this.requestFade(),this._switchReadChannels(),r(this.parallaxNew.anchorPoint,this._anchorPoint);break;case 1:this.requestFade(),this._switchReadChannels(),r(this.parallax.anchorPoint,this._anchorPoint),r(this.parallaxNew.anchorPoint,this._anchorPoint);break;case 4:this.requestFade();break;case 2:this._switchReadChannels(),r(this.parallax.anchorPoint,this._anchorPoint),r(this.parallaxNew.anchorPoint,this._anchorPoint),this._endFade();break;case 0:this._endFade()}}_endFade(){switch(this._fadeFactor.value=1,this.data&&2!==this.data.state&&(this.data.state=0),this.fadeState){case 3:r(this.parallax.anchorPoint,this.parallaxNew.anchorPoint),this._fadeState.value=2;break;case 1:this._fadeState.value=2;break;case 4:this._fadeState.value=0;break;case 2:case 0:break;default:this.fadeState}}_switchReadChannels(){2===this.data?.state&&(this._readChannels=1-this._readChannels,this.data.state=3)}get isFading(){return 4===this.fadeState||1===this.fadeState||3===this.fadeState}}class w{constructor(){this.anchorPoint=l(),this.radiusCurvatureCorrection=0,this.transform=i()}}const S=u(0,0,1),v=_(),g=l(),b=l(),y=1.25,C=!1,j=1e-6,N=.5,k=2e5;export{F as CloudsParameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{add as t,transformMat4 as e,copy as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphere as r}from"../../../../geometry/support/frustum.js";import{create as n,fromPoints as o,copy as a}from"../../../../geometry/support/ray.js";import l from"../../webgl/RenderCamera.js";import{HUDTarget as c,HUDIntersectorResult as h}from"./HUDIntersectorResult.js";import{IntersectorOptions as f}from"./IntersectorInterfaces.js";import{IntersectorResult as m,compareOrderedIntersectionHits as u}from"./IntersectorResult.js";import{ObjectTarget as d}from"./ObjectTarget.js";import{PolygonIntersectionResults as y}from"./PolygonIntersectionResults.js";import{IntersectorTransform as g,getVerticalOffsetObject3D as
|
|
2
|
+
import{add as t,transformMat4 as e,copy as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphere as r}from"../../../../geometry/support/frustum.js";import{create as n,fromPoints as o,copy as a}from"../../../../geometry/support/ray.js";import l from"../../webgl/RenderCamera.js";import{HUDTarget as c,HUDIntersectorResult as h}from"./HUDIntersectorResult.js";import{IntersectorOptions as f}from"./IntersectorInterfaces.js";import{IntersectorResult as m,compareOrderedIntersectionHits as u}from"./IntersectorResult.js";import{ObjectTarget as d}from"./ObjectTarget.js";import{PolygonIntersectionResults as y}from"./PolygonIntersectionResults.js";import{IntersectorTransform as g,getVerticalOffsetObject3D as p}from"./verticalOffsetUtils.js";const _=1e-5;class v{constructor(t){this.options=new f,this._results=new b,this.polygonResults=new y,this.transform=new g,this.camera=new l,this.screenPolygonPrimitiveProcessor=j,this.tolerance=_,this.verticalOffset=null,this._ray=n(),this._rayEnd=i(),this._rayBeginTransformed=i(),this._rayEndTransformed=i(),this.viewingMode=t??1}get results(){return this._results}get ray(){return this._ray}get rayBegin(){return this._ray.origin}get rayEnd(){return this._rayEnd}reset(t,e,s){this.resetWithRay(o(t,e,this._ray),s)}resetWithRay(e,s){this.camera=s,e!==this._ray&&a(e,this._ray),0!==this.options.verticalOffset?2===this.viewingMode?this._ray.origin[2]-=this.options.verticalOffset:this.verticalOffset=this.options.verticalOffset:this.verticalOffset=null,t(this._rayEnd,this._ray.origin,this._ray.direction),this._results.init(this._ray),this.polygonResults.init()}intersect(t=null,e,s,i,r){this.point=e,this.filterPredicate=i,this.tolerance=s??_;const n=p(this.verticalOffset);if(t&&t.length>0){const e=r?t=>{r(t)&&this.intersectObject(t)}:t=>{this.intersectObject(t)};for(const s of t){const t=s.getSpatialQueryAccelerator?.();null!=t?(null!=n?t.forEachAlongRayWithVerticalOffset(this._ray.origin,this._ray.direction,e,n):t.forEachAlongRay(this._ray.origin,this._ray.direction,e),this.options.selectionMode&&this.options.hud&&t.forEachDegenerateObject(e)):s.objects.forEach(t=>e(t))}}this.sortResults()}*intersectScreenPolygon(t=null,e){if(this.verticalOffset=null,t?.length)for(const s of t){const t=s.getSpatialQueryAccelerator?.();if(null!=t)for(const s of t.intersectingFrustumValues(e.broadPhaseFrustum,t=>t.visible))yield*this._intersectScreenPolygonObject(s,e);else for(const i of s.objects.values())i.visible&&r(e.broadPhaseFrustum,i.boundingVolumeWorldSpace.bounds)&&(yield*this._intersectScreenPolygonObject(i,e))}}*intersectHUDScreenPolygon(t=null,e){if(this.verticalOffset=null,this.options.selectionMode&&this.options.hud&&t?.length)for(const s of t){const t=s.getSpatialQueryAccelerator?.(),i=t?.degenerateObjectValues()??s.objects.values();for(const s of i)yield*this._intersectScreenPolygonObject(s,e)}}*_intersectScreenPolygonObject(t,e){const s=t.geometries;if(!t.visible||!s)return;const i=t.effectiveTransformation;for(const r of s){if(!r.visible)continue;const{material:s,id:n}=r;if(!s.visible||!s.intersectScreenPolygon)continue;this.transform.setAndInvalidateLazyTransforms(i,r.transformation);const o=s.intersectScreenPolygon(r,this.transform.transform,this,e);o?.valid&&this._handleObjectScreenPolygonIntersection(o.type,new d(t,n,o.primitiveIndex),o.distance,o.point),yield}}intersectObject(t){const s=t.geometries;if(!s)return;const i=t.effectiveTransformation,r=p(this.verticalOffset);for(const n of s){if(!n.visible)continue;const{material:s,id:o}=n;if(!s.visible)continue;this.transform.setAndInvalidateLazyTransforms(i,n.transformation),e(this._rayBeginTransformed,this.rayBegin,this.transform.inverse),e(this._rayEndTransformed,this.rayEnd,this.transform.inverse);const a=this.transform.transform;null!=r&&(r.objectTransform=this.transform),s.intersectRay(n,this.transform.transform,this,this._rayBeginTransformed,this._rayEndTransformed,(e,s,i,r)=>this.handleObjectIntersection({object:t,geometryId:o,primitiveIndex:i},e,s,a,r))}}handleObjectIntersection(t,e,s,i,r){if(e<0||null!=this.filterPredicate&&!this.filterPredicate(this._ray.origin,this._rayEnd,e))return;const n=r?this._results.hud:this._results;t=r?new c(t,r):t;const o=r?i=>i.set(1,t,e,s):r=>r.set(4,t,e,s,i);if((null==n.min.distance||e<n.min.distance)&&o(n.min),0!==this.options.store&&(null==n.max.distance||e>n.max.distance)&&o(n.max),2===this.options.store)if(r){const t=new h(this._ray);o(t),this._results.hud.all.push(t)}else{const t=new m(this._ray);o(t),this._results.all.push(t)}}_handleObjectScreenPolygonIntersection(t,e,s,i){s<0||(null==this.filterPredicate||null!=i&&this.filterPredicate(this.camera.eye,i,1))&&this.polygonResults.add(t,1===t&&i?new c(e,i):e,s)}sortResults(t=this._results.all){t.sort(u)}}class b{constructor(){this.min=new m(n()),this.max=new m(n()),this.hud={min:new h(n()),max:new h(n()),all:new Array},this.ground=new m(n()),this.all=[]}init(t){this.min.init(t),this.max.init(t),this.ground.init(t),this.all.length=0,this.hud.min.init(t),this.hud.max.init(t),this.hud.all.length=0}}const j={*processTriangle(t,e){t.list=e,t.count=e.length,yield t},*processLineSegment(t,e,i){s(t[0],e),s(t[1],i),yield t},validatePoint:()=>!0};export{v as Intersector,j as defaultScreenPolygonPrimitiveProcessor,_ as defaultTolerance};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../../core/ObjectPool.js";import t from"../../../../core/PooledArray.js";import{lerp as n,squaredDistance as r,scale as i,add as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as o,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphereCenterRadius as h,intersectsSphere as d}from"../../../../geometry/support/frustum.js";import{wrap as u}from"../../../../geometry/support/ray.js";import{Sphere as c}from"../../../../geometry/support/sphere.js";import{rayBoxTest as l}from"./Util.js";class f{get bounds(){return this._root.bounds}get halfSize(){return this._root.halfSize}get root(){return this._root.node}get maximumObjectsPerNode(){return this._maximumObjectsPerNode}get maximumDepth(){return this._maximumDepth}get objectCount(){return this._objectCount}constructor(e,t){this.objectToBoundingSphere=e,this._maximumObjectsPerNode=10,this._maximumDepth=20,this._degenerateObjects=new Set,this._root=new m,this._objectCount=0,t&&(void 0!==t.maximumObjectsPerNode&&(this._maximumObjectsPerNode=t.maximumObjectsPerNode),void 0!==t.maximumDepth&&(this._maximumDepth=t.maximumDepth))}destroy(){this._degenerateObjects.clear(),m.clearPool(),R[0]=null,k.prune(),G.prune()}add(e){const t=Array.from(e);this._grow(t);const n=m.acquire();for(const r of t)++this._objectCount,this._isDegenerate(r)?this._degenerateObjects.add(r):(n.init(this._root),this._add(r,n));m.release(n)}remove(e,t=null){this._objectCount-=e.length;const n=m.acquire();for(const r of e){const e=t??this.objectToBoundingSphere(r);w(e.radius)?(n.init(this._root),g(r,e,n)):this._degenerateObjects.delete(r)}m.release(n),this._shrink()}update(e,t){if(!w(t.radius)&&this._isDegenerate(e))return;const n=E(e);this.remove(n,t),this.add(n)}forEachAlongRay(e,t,n){const r=u(e,t);p(this._root,e=>{if(!j(r,e))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),!0})}forEachAlongRayWithVerticalOffset(e,t,n,r){const i=u(e,t);p(this._root,e=>{if(!x(i,e,r))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),!0})}forEach(e){for(const t of this.values())e(t)}*values(){for(const e of this._nodeIteratorValues()){const t=e.node;yield*t.terminals,null!==t.residents&&(yield*t.residents)}yield*this.degenerateObjectValues()}forEachDegenerateObject(e){this._degenerateObjects.forEach(e)}*degenerateObjectValues(){yield*this._degenerateObjects.values()}findClosest(e,t,n,r=()=>!0,o=1/0){let a=1/0,u=1/0,c=null;const l=N(e,t),f=i=>{if(--o,!r(i))return;const s=this.objectToBoundingSphere(i);if(!d(n,s))return;const h=v(e,t,s.center),l=h-s.radius,f=h+s.radius;l<a&&(a=l,u=f,c=i)};return b(this._root,r=>{if(o<=0||!h(n,r.bounds.center,2*r.bounds.radius))return!1;i(I,l,2*r.halfSize),s(I,I,r.bounds.center);if(v(e,t,I)>u)return!1;const a=r.node;return a.terminals.forAll(e=>f(e)),null!==a.residents&&a.residents.forAll(e=>f(e)),!0},e,t),c}forEachInDepthRange(e,t,n,r,o,a,u){let c=-1/0,l=1/0;const f={setRange:e=>{1===n?(c=Math.max(c,e.near),l=Math.min(l,e.far)):(c=Math.max(c,-e.far),l=Math.min(l,-e.near))}};f.setRange(r);const m=v(t,n,e),_=N(t,n),p=N(t,-n),g=e=>{if(!u(e))return;const r=this.objectToBoundingSphere(e),i=v(t,n,r.center)-m,s=i-r.radius,h=i+r.radius;s>l||h<c||!d(a,r)||o(e,f)};b(this._root,e=>{if(!h(a,e.bounds.center,2*e.bounds.radius))return!1;i(I,_,2*e.halfSize),s(I,I,e.bounds.center);if(v(t,n,I)-m>l)return!1;i(I,p,2*e.halfSize),s(I,I,e.bounds.center);if(v(t,n,I)-m<c)return!1;const r=e.node;return r.terminals.forAll(e=>g(e)),null!==r.residents&&r.residents.forAll(e=>g(e)),!0},t,n)}forEachNode(e){p(this._root,t=>e(t.node,t.bounds,t.halfSize,t.depth))}forEachIntersectingFrustum(e,t,n=()=>!0){for(const r of this.intersectingFrustumValues(e,n))t(r)}*intersectingFrustumValues(e,t=()=>!0){for(const n of this._nodeIteratorValues(t=>h(e,t.bounds.center,2*t.bounds.radius))){const r=n.node;for(const n of r.terminals)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n);if(null!==r.residents)for(const n of r.residents)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n)}}*_nodeIteratorValues(e=()=>!0){yield*_(this._root,e)}forEachNeighbor(e,t){const n=t.radius,i=t.center,s=t=>{const s=this.objectToBoundingSphere(t),o=s.radius,a=n+o;return!(r(s.center,i)-a*a<=0)||e(t)};let o=!0;const a=e=>{o&&(o=s(e))};p(this._root,e=>{const t=2*e.bounds.radius,s=n+t;if(r(e.bounds.center,i)-s*s>0)return!1;const h=e.node;return h.terminals.forAll(a),o&&null!==h.residents&&h.residents.forAll(a),o}),o&&this.forEachDegenerateObject(a)}_intersectsObject(e,t){const n=this.objectToBoundingSphere(t);return!(n.radius>0)||n.intersectRay(e)}_intersectsObjectWithOffset(e,t,n){const r=this.objectToBoundingSphere(t);return!(r.radius>0)||n.applyToBoundingSphere(r).intersectRay(e)}_add(e,t){t.advanceTo(this.objectToBoundingSphere(e))?t.node.terminals.push(e):(t.node.residents.push(e),t.node.residents.length>this._maximumObjectsPerNode&&t.depth<this._maximumDepth&&this._split(t))}_split(e){const t=e.node.residents;e.node.residents=null;for(let n=0;n<t.length;n++){const r=m.acquire().init(e);this._add(t.at(n),r),m.release(r)}}_grow(e){if(y(e,e=>this.objectToBoundingSphere(e),L),w(L.radius)&&!this._fitsInsideTree(L))if(z(this._root.node))this._root.bounds.copyFrom(L),this._root.halfSize=1.25*this._root.bounds.radius,this._root.updateBoundsRadiusFromHalfSize();else{const e=this._rootBoundsForRootAsSubNode(L);this._placingRootViolatesMaxDepth(e)?this._rebuildTree(L,e):this._growRootAsSubNode(e),m.release(e)}}_rebuildTree(e,t){C.center=t.bounds.center,C.radius=t.halfSize,y([e,C],e=>e,H);const n=m.acquire().init(this._root);this._root.initFrom(null,H,H.radius),this._root.increaseHalfSize(1.25),p(n,e=>(this.add(e.node.terminals.data),null!==e.node.residents&&this.add(e.node.residents.data),!0)),m.release(n)}_placingRootViolatesMaxDepth(e){const t=Math.log(e.halfSize/this._root.halfSize)*Math.LOG2E;let n=0;return p(this._root,e=>(n=Math.max(n,e.depth),n+t<=this._maximumDepth)),n+t>this._maximumDepth}_rootBoundsForRootAsSubNode(e){const t=e.radius,n=e.center;let r=-1/0;const i=this._root.bounds.center,s=this._root.halfSize;for(let a=0;a<3;a++){const e=i[a]-s-(n[a]-t),o=n[a]+t-(i[a]+s),h=Math.max(0,Math.ceil(e/(2*s))),d=Math.max(0,Math.ceil(o/(2*s)))+1,u=2**Math.ceil(Math.log(h+d)*Math.LOG2E);r=Math.max(r,u),W[a].min=h,W[a].max=d}for(let a=0;a<3;a++){let e=W[a].min,t=W[a].max;const n=(r-(e+t))/2;e+=Math.ceil(n),t+=Math.floor(n);const o=i[a]-s-e*s*2;q.center[a]=o+(t+e)*s}const o=r*s;return q.radius=o*D,m.acquire().initFrom(null,q,o,0)}_growRootAsSubNode(e){const t=this._root.node;L.center=this._root.bounds.center,L.radius=this._root.halfSize,this._root.init(e),e.advanceTo(L,null,!0),e.node.children=t.children,e.node.residents=t.residents,e.node.terminals=t.terminals}_shrink(){for(;;){const e=this._findShrinkIndex();if(-1===e)break;this._root.advance(e),this._root.depth=0}}_findShrinkIndex(){if(0!==this._root.node.terminals.length||this._root.isLeaf())return-1;let e=null;const t=this._root.node.children;let n=0,r=0;for(;r<t.length&&null==e;)n=r++,e=t[n];for(;r<t.length;)if(t[r++])return-1;return n}_isDegenerate(e){return!w(this.objectToBoundingSphere(e).radius)}_fitsInsideTree(e){const t=this._root.bounds,n=this._root.halfSize;return e.radius<=n&&e.center[0]>=t.center[0]-n&&e.center[0]<=t.center[0]+n&&e.center[1]>=t.center[1]-n&&e.center[1]<=t.center[1]+n&&e.center[2]>=t.center[2]-n&&e.center[2]<=t.center[2]+n}_nodeToJSON(e){const t=e.children.map(e=>e?this._nodeToJSON(e):null),n=e.residents?.map(e=>this.objectToBoundingSphere(e)),r=e.terminals?.map(e=>this.objectToBoundingSphere(e));return{children:t,residents:n,terminals:r}}}class m{constructor(){this.bounds=new c,this.halfSize=0,this.initFrom(null,null,0,0)}init(e){return this.initFrom(e.node,e.bounds,e.halfSize,e.depth)}initFrom(e,t,n,r=this.depth){return this.node=null!=e?e:m.createEmptyNode(),t&&this.bounds.copyFrom(t),this.halfSize=n,this.depth=r,this}increaseHalfSize(e){this.halfSize*=e,this.updateBoundsRadiusFromHalfSize()}updateBoundsRadiusFromHalfSize(){this.bounds.radius=this.halfSize*D}advance(e){let t=this.node.children[e];t||(t=m.createEmptyNode(),this.node.children[e]=t),this.node=t,this.halfSize/=2,this.depth++;const n=A[e];return this.bounds.center[0]+=n[0]*this.halfSize,this.bounds.center[1]+=n[1]*this.halfSize,this.bounds.center[2]+=n[2]*this.halfSize,this.updateBoundsRadiusFromHalfSize(),this}advanceTo(e,t,n=!1){for(;;){if(this.isTerminalFor(e))return t?.(this,-1),!0;if(this.isLeaf()){if(!n)return t?.(this,-1),!1;this.node.residents=null}const r=this._childIndex(e);t?.(this,r),this.advance(r)}}isLeaf(){return null!=this.node.residents}isTerminalFor(e){return e.radius>this.halfSize/2}_childIndex(e){const t=this.bounds.center;return(t[0]<e.center[0]?1:0)+(t[1]<e.center[1]?2:0)+(t[2]<e.center[2]?4:0)}static createEmptyNode(){return{children:[null,null,null,null,null,null,null,null],terminals:new t({shrink:!0}),residents:new t({shrink:!0})}}static{this._pool=new e(()=>new m)}static acquire(){return m._pool.acquire()}static release(e){m._pool.release(e)}static clearPool(){m._pool.prune()}}function*_(e,t=()=>!0){const n=[m.acquire().init(e)];for(;0!==n.length;){const e=n.pop();if(t(e)){if(yield e,!e.isLeaf())for(let t=0;t<e.node.children.length;t++){e.node.children[t]&&n.push(m.acquire().init(e).advance(t))}m.release(e)}}}function p(e,t){const n=_(e,t);for(const r of n);}function b(e,t,n,r=1){let i=m.acquire().init(e);const s=[i];for(B(n,r,J);0!==s.length;){if(i=s.pop(),t(i)&&!i.isLeaf())for(let e=7;e>=0;--e){const t=J[e];i.node.children[t]&&s.push(m.acquire().init(i).advance(t))}m.release(i)}}function g(e,t,n){k.clear();const r=n.advanceTo(t,(e,t)=>{k.push(e.node),k.push(t)})?n.node.terminals:n.node.residents;if(r.removeUnordered(e),0===r.length)for(let i=k.length-2;i>=0;i-=2){if(!S(k.data[i],k.data[i+1]))break}}function S(e,n){return n>=0&&(e.children[n]=null),!!z(e)&&(null===e.residents&&(e.residents=new t({shrink:!0})),!0)}function j(e,t){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),l(e.origin,e.direction,P,V)}function x(e,t,n){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),n.applyToMinMax(P,V),l(e.origin,e.direction,P,V)}function z(e){if(0!==e.terminals.length)return!1;if(null!==e.residents)return 0===e.residents.length;for(let t=0;t<e.children.length;t++)if(e.children[t])return!1;return!0}function O(e,t){e[0]=Math.min(e[0],t.center[0]-t.radius),e[1]=Math.min(e[1],t.center[1]-t.radius),e[2]=Math.min(e[2],t.center[2]-t.radius)}function M(e,t){e[0]=Math.max(e[0],t.center[0]+t.radius),e[1]=Math.max(e[1],t.center[1]+t.radius),e[2]=Math.max(e[2],t.center[2]+t.radius)}function T(e,t,n){n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t}function y(e,t,r){P[0]=1/0,P[1]=1/0,P[2]=1/0,V[0]=-1/0,V[1]=-1/0,V[2]=-1/0;for(const n of e){const e=t(n);w(e.radius)&&(O(P,e),M(V,e))}n(r.center,P,V,.5),r.radius=Math.max(V[0]-P[0],V[1]-P[1],V[2]-P[2])/2}function B(e,t,n){if(!G.length)for(let r=0;r<8;++r)G.push({index:0,distance:0});for(let r=0;r<8;++r){const n=A[r];G.data[r].index=r,G.data[r].distance=v(e,t,n)}G.sort((e,t)=>e.distance-t.distance);for(let r=0;r<8;++r)n[r]=G.data[r].index}function N(e,t){let n,r=1/0;for(let i=0;i<8;++i){const s=v(e,t,F[i]);s<r&&(r=s,n=F[i])}return n}function v(e,t,n){return t*(e[0]*n[0]+e[1]*n[1]+e[2]*n[2])}function w(e){return!isNaN(e)&&e!==-1/0&&e!==1/0&&e>0}const A=[o(-1,-1,-1),o(1,-1,-1),o(-1,1,-1),o(1,1,-1),o(-1,-1,1),o(1,-1,1),o(-1,1,1),o(1,1,1)],F=[o(-1,-1,-1),o(-1,-1,1),o(-1,1,-1),o(-1,1,1),o(1,-1,-1),o(1,-1,1),o(1,1,-1),o(1,1,1)],D=Math.sqrt(3),R=[null];function E(e){return R[0]=e,R}const q=new c,I=a(),P=a(),V=a(),k=new t,L=new c,C=new c,H=new c,W=[{min:0,max:0},{min:0,max:0},{min:0,max:0}],G=new t,J=[0,0,0,0,0,0,0,0];export{f as Octree};
|
|
2
|
+
import e from"../../../../core/ObjectPool.js";import t from"../../../../core/PooledArray.js";import{lerp as n,scale as r,add as i,squaredDistance as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as o,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{intersectsSphereCenterRadius as h,intersectsSphere as d}from"../../../../geometry/support/frustum.js";import{wrap as c}from"../../../../geometry/support/ray.js";import{Sphere as u}from"../../../../geometry/support/sphere.js";import{rayBoxTest as l}from"./Util.js";class f{get bounds(){return this._root.bounds}get halfSize(){return this._root.halfSize}get root(){return this._root.node}get maximumObjectsPerNode(){return this._maximumObjectsPerNode}get maximumDepth(){return this._maximumDepth}get objectCount(){return this._objectCount}constructor(e,t){this.objectToBoundingSphere=e,this._maximumObjectsPerNode=10,this._maximumDepth=20,this._degenerateObjects=new Set,this._root=new m,this._objectCount=0,t&&(void 0!==t.maximumObjectsPerNode&&(this._maximumObjectsPerNode=t.maximumObjectsPerNode),void 0!==t.maximumDepth&&(this._maximumDepth=t.maximumDepth))}destroy(){this._degenerateObjects.clear(),m.clearPool(),R[0]=null,k.prune(),G.prune()}add(e){const t=Array.from(e);this._grow(t);const n=m.acquire();for(const r of t)++this._objectCount,this._isDegenerate(r)?this._degenerateObjects.add(r):(n.init(this._root),this._add(r,n));m.release(n)}remove(e,t=null){this._objectCount-=e.length;const n=m.acquire();for(const r of e){const e=t??this.objectToBoundingSphere(r);w(e.radius)?(n.init(this._root),g(r,e,n)):this._degenerateObjects.delete(r)}m.release(n),this._shrink()}update(e,t){if(!w(t.radius)&&this._isDegenerate(e))return;const n=E(e);this.remove(n,t),this.add(n)}forEachAlongRay(e,t,n){const r=c(e,t);p(this._root,e=>{if(!j(r,e))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObject(r,e)&&n(e)}),!0})}forEachAlongRayWithVerticalOffset(e,t,n,r){const i=c(e,t);p(this._root,e=>{if(!x(i,e,r))return!1;const t=e.node;return t.terminals.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),null!==t.residents&&t.residents.forAll(e=>{this._intersectsObjectWithOffset(i,e,r)&&n(e)}),!0})}forEach(e){for(const t of this.values())e(t)}*values(){for(const e of this._nodeIteratorValues()){const t=e.node;yield*t.terminals,null!==t.residents&&(yield*t.residents)}yield*this.degenerateObjectValues()}forEachDegenerateObject(e){this._degenerateObjects.forEach(e)}*degenerateObjectValues(){yield*this._degenerateObjects.values()}findClosest(e,t,n,s=()=>!0,o=1/0){let a=1/0,c=1/0,u=null;const l=N(e,t),f=r=>{if(--o,!s(r))return;const i=this.objectToBoundingSphere(r);if(!d(n,i))return;const h=v(e,t,i.center),l=h-i.radius,f=h+i.radius;l<a&&(a=l,c=f,u=r)};return b(this._root,s=>{if(o<=0||!h(n,s.bounds.center,2*s.bounds.radius))return!1;r(I,l,2*s.halfSize),i(I,I,s.bounds.center);if(v(e,t,I)>c)return!1;const a=s.node;return a.terminals.forAll(e=>f(e)),null!==a.residents&&a.residents.forAll(e=>f(e)),!0},e,t),u}forEachInDepthRange(e,t,n,s,o,a,c){let u=-1/0,l=1/0;const f={setRange:e=>{1===n?(u=Math.max(u,e.near),l=Math.min(l,e.far)):(u=Math.max(u,-e.far),l=Math.min(l,-e.near))}};f.setRange(s);const m=v(t,n,e),_=N(t,n),p=N(t,-n),g=e=>{if(!c(e))return;const r=this.objectToBoundingSphere(e),i=v(t,n,r.center)-m,s=i-r.radius,h=i+r.radius;s>l||h<u||!d(a,r)||o(e,f)};b(this._root,e=>{if(!h(a,e.bounds.center,2*e.bounds.radius))return!1;r(I,_,2*e.halfSize),i(I,I,e.bounds.center);if(v(t,n,I)-m>l)return!1;r(I,p,2*e.halfSize),i(I,I,e.bounds.center);if(v(t,n,I)-m<u)return!1;const s=e.node;return s.terminals.forAll(e=>g(e)),null!==s.residents&&s.residents.forAll(e=>g(e)),!0},t,n)}forEachNode(e){p(this._root,t=>e(t.node,t.bounds,t.halfSize,t.depth))}forEachIntersectingFrustum(e,t,n=()=>!0){for(const r of this.intersectingFrustumValues(e,n))t(r)}*intersectingFrustumValues(e,t=()=>!0){for(const n of this._nodeIteratorValues(t=>h(e,t.bounds.center,2*t.bounds.radius))){const r=n.node;for(const n of r.terminals)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n);if(null!==r.residents)for(const n of r.residents)t(n)&&d(e,this.objectToBoundingSphere(n))&&(yield n)}}*_nodeIteratorValues(e=()=>!0){yield*_(this._root,e)}forEachNeighbor(e,t){const n=t.radius,r=t.center,i=n=>{const r=this.objectToBoundingSphere(n);return!t.intersects(r)||e(n)};let o=!0;const a=e=>{o&&(o=i(e))};p(this._root,e=>{const t=2*e.bounds.radius,i=n+t;if(s(e.bounds.center,r)-i*i>0)return!1;const h=e.node;return h.terminals.forAll(a),o&&null!==h.residents&&h.residents.forAll(a),o}),o&&this.forEachDegenerateObject(a)}_intersectsObject(e,t){const n=this.objectToBoundingSphere(t);return!(n.radius>0)||n.intersectRay(e)}_intersectsObjectWithOffset(e,t,n){const r=this.objectToBoundingSphere(t);return!(r.radius>0)||n.applyToBoundingSphere(r).intersectRay(e)}_add(e,t){t.advanceTo(this.objectToBoundingSphere(e))?t.node.terminals.push(e):(t.node.residents.push(e),t.node.residents.length>this._maximumObjectsPerNode&&t.depth<this._maximumDepth&&this._split(t))}_split(e){const t=e.node.residents;e.node.residents=null;for(let n=0;n<t.length;n++){const r=m.acquire().init(e);this._add(t.at(n),r),m.release(r)}}_grow(e){if(y(e,e=>this.objectToBoundingSphere(e),L),w(L.radius)&&!this._fitsInsideTree(L))if(z(this._root.node))this._root.bounds.copyFrom(L),this._root.halfSize=1.25*this._root.bounds.radius,this._root.updateBoundsRadiusFromHalfSize();else{const e=this._rootBoundsForRootAsSubNode(L);this._placingRootViolatesMaxDepth(e)?this._rebuildTree(L,e):this._growRootAsSubNode(e),m.release(e)}}_rebuildTree(e,t){C.center=t.bounds.center,C.radius=t.halfSize,y([e,C],e=>e,H);const n=m.acquire().init(this._root);this._root.initFrom(null,H,H.radius),this._root.increaseHalfSize(1.25),p(n,e=>(this.add(e.node.terminals.data),null!==e.node.residents&&this.add(e.node.residents.data),!0)),m.release(n)}_placingRootViolatesMaxDepth(e){const t=Math.log(e.halfSize/this._root.halfSize)*Math.LOG2E;let n=0;return p(this._root,e=>(n=Math.max(n,e.depth),n+t<=this._maximumDepth)),n+t>this._maximumDepth}_rootBoundsForRootAsSubNode(e){const t=e.radius,n=e.center;let r=-1/0;const i=this._root.bounds.center,s=this._root.halfSize;for(let a=0;a<3;a++){const e=i[a]-s-(n[a]-t),o=n[a]+t-(i[a]+s),h=Math.max(0,Math.ceil(e/(2*s))),d=Math.max(0,Math.ceil(o/(2*s)))+1,c=2**Math.ceil(Math.log(h+d)*Math.LOG2E);r=Math.max(r,c),W[a].min=h,W[a].max=d}for(let a=0;a<3;a++){let e=W[a].min,t=W[a].max;const n=(r-(e+t))/2;e+=Math.ceil(n),t+=Math.floor(n);const o=i[a]-s-e*s*2;q.center[a]=o+(t+e)*s}const o=r*s;return q.radius=o*D,m.acquire().initFrom(null,q,o,0)}_growRootAsSubNode(e){const t=this._root.node;L.center=this._root.bounds.center,L.radius=this._root.halfSize,this._root.init(e),e.advanceTo(L,null,!0),e.node.children=t.children,e.node.residents=t.residents,e.node.terminals=t.terminals}_shrink(){for(;;){const e=this._findShrinkIndex();if(-1===e)break;this._root.advance(e),this._root.depth=0}}_findShrinkIndex(){if(0!==this._root.node.terminals.length||this._root.isLeaf())return-1;let e=null;const t=this._root.node.children;let n=0,r=0;for(;r<t.length&&null==e;)n=r++,e=t[n];for(;r<t.length;)if(t[r++])return-1;return n}_isDegenerate(e){return!w(this.objectToBoundingSphere(e).radius)}_fitsInsideTree(e){const t=this._root.bounds,n=this._root.halfSize;return e.radius<=n&&e.center[0]>=t.center[0]-n&&e.center[0]<=t.center[0]+n&&e.center[1]>=t.center[1]-n&&e.center[1]<=t.center[1]+n&&e.center[2]>=t.center[2]-n&&e.center[2]<=t.center[2]+n}_nodeToJSON(e){const t=e.children.map(e=>e?this._nodeToJSON(e):null),n=e.residents?.map(e=>this.objectToBoundingSphere(e)),r=e.terminals?.map(e=>this.objectToBoundingSphere(e));return{children:t,residents:n,terminals:r}}}class m{constructor(){this.bounds=new u,this.halfSize=0,this.initFrom(null,null,0,0)}init(e){return this.initFrom(e.node,e.bounds,e.halfSize,e.depth)}initFrom(e,t,n,r=this.depth){return this.node=null!=e?e:m.createEmptyNode(),t&&this.bounds.copyFrom(t),this.halfSize=n,this.depth=r,this}increaseHalfSize(e){this.halfSize*=e,this.updateBoundsRadiusFromHalfSize()}updateBoundsRadiusFromHalfSize(){this.bounds.radius=this.halfSize*D}advance(e){let t=this.node.children[e];t||(t=m.createEmptyNode(),this.node.children[e]=t),this.node=t,this.halfSize/=2,this.depth++;const n=A[e];return this.bounds.center[0]+=n[0]*this.halfSize,this.bounds.center[1]+=n[1]*this.halfSize,this.bounds.center[2]+=n[2]*this.halfSize,this.updateBoundsRadiusFromHalfSize(),this}advanceTo(e,t,n=!1){for(;;){if(this.isTerminalFor(e))return t?.(this,-1),!0;if(this.isLeaf()){if(!n)return t?.(this,-1),!1;this.node.residents=null}const r=this._childIndex(e);t?.(this,r),this.advance(r)}}isLeaf(){return null!=this.node.residents}isTerminalFor(e){return e.radius>this.halfSize/2}_childIndex(e){const t=this.bounds.center;return(t[0]<e.center[0]?1:0)+(t[1]<e.center[1]?2:0)+(t[2]<e.center[2]?4:0)}static createEmptyNode(){return{children:[null,null,null,null,null,null,null,null],terminals:new t({shrink:!0}),residents:new t({shrink:!0})}}static{this._pool=new e(()=>new m)}static acquire(){return m._pool.acquire()}static release(e){m._pool.release(e)}static clearPool(){m._pool.prune()}}function*_(e,t=()=>!0){const n=[m.acquire().init(e)];for(;0!==n.length;){const e=n.pop();if(t(e)){if(yield e,!e.isLeaf())for(let t=0;t<e.node.children.length;t++){e.node.children[t]&&n.push(m.acquire().init(e).advance(t))}m.release(e)}}}function p(e,t){const n=_(e,t);for(const r of n);}function b(e,t,n,r=1){let i=m.acquire().init(e);const s=[i];for(B(n,r,J);0!==s.length;){if(i=s.pop(),t(i)&&!i.isLeaf())for(let e=7;e>=0;--e){const t=J[e];i.node.children[t]&&s.push(m.acquire().init(i).advance(t))}m.release(i)}}function g(e,t,n){k.clear();const r=n.advanceTo(t,(e,t)=>{k.push(e.node),k.push(t)})?n.node.terminals:n.node.residents;if(r.removeUnordered(e),0===r.length)for(let i=k.length-2;i>=0;i-=2){if(!S(k.data[i],k.data[i+1]))break}}function S(e,n){return n>=0&&(e.children[n]=null),!!z(e)&&(null===e.residents&&(e.residents=new t({shrink:!0})),!0)}function j(e,t){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),l(e.origin,e.direction,P,V)}function x(e,t,n){return T(t.bounds.center,2*-t.halfSize,P),T(t.bounds.center,2*t.halfSize,V),n.applyToMinMax(P,V),l(e.origin,e.direction,P,V)}function z(e){if(0!==e.terminals.length)return!1;if(null!==e.residents)return 0===e.residents.length;for(let t=0;t<e.children.length;t++)if(e.children[t])return!1;return!0}function O(e,t){e[0]=Math.min(e[0],t.center[0]-t.radius),e[1]=Math.min(e[1],t.center[1]-t.radius),e[2]=Math.min(e[2],t.center[2]-t.radius)}function M(e,t){e[0]=Math.max(e[0],t.center[0]+t.radius),e[1]=Math.max(e[1],t.center[1]+t.radius),e[2]=Math.max(e[2],t.center[2]+t.radius)}function T(e,t,n){n[0]=e[0]+t,n[1]=e[1]+t,n[2]=e[2]+t}function y(e,t,r){P[0]=1/0,P[1]=1/0,P[2]=1/0,V[0]=-1/0,V[1]=-1/0,V[2]=-1/0;for(const n of e){const e=t(n);w(e.radius)&&(O(P,e),M(V,e))}n(r.center,P,V,.5),r.radius=Math.max(V[0]-P[0],V[1]-P[1],V[2]-P[2])/2}function B(e,t,n){if(!G.length)for(let r=0;r<8;++r)G.push({index:0,distance:0});for(let r=0;r<8;++r){const n=A[r];G.data[r].index=r,G.data[r].distance=v(e,t,n)}G.sort((e,t)=>e.distance-t.distance);for(let r=0;r<8;++r)n[r]=G.data[r].index}function N(e,t){let n,r=1/0;for(let i=0;i<8;++i){const s=v(e,t,F[i]);s<r&&(r=s,n=F[i])}return n}function v(e,t,n){return t*(e[0]*n[0]+e[1]*n[1]+e[2]*n[2])}function w(e){return!isNaN(e)&&e!==-1/0&&e!==1/0&&e>0}const A=[o(-1,-1,-1),o(1,-1,-1),o(-1,1,-1),o(1,1,-1),o(-1,-1,1),o(1,-1,1),o(-1,1,1),o(1,1,1)],F=[o(-1,-1,-1),o(-1,-1,1),o(-1,1,-1),o(-1,1,1),o(1,-1,-1),o(1,-1,1),o(1,1,-1),o(1,1,1)],D=Math.sqrt(3),R=[null];function E(e){return R[0]=e,R}const q=new u,I=a(),P=a(),V=a(),k=new t,L=new u,C=new u,H=new u,W=[{min:0,max:0},{min:0,max:0},{min:0,max:0}],G=new t,J=[0,0,0,0,0,0,0,0];export{f as Octree};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as s}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as i,abortMaybe as r,destroyMaybe as a,releaseMaybe as n,releaseReferencedMaybe as h}from"../../../../core/maybe.js";import{throwIfAborted as o}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as l,initial as u,sync as m}from"../../../../core/reactiveUtils.js";import{signal as _}from"../../../../core/signal.js";import{property as p,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{equals as f,invert as b,multiply as g,copy as P}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as w,create as E}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as I}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as A,ZEROS as C}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as T}from"../../../../geometry/support/Indices.js";import{RenderNodeOutput as O,InternalRenderCategory as R,AllRenderNodeOutputs as S,AllInternalRenderNodeOutputs as D}from"../../webgl.js";import{minNearDistanceInMeters as N}from"../../state/NearFarHeuristic.js";import{debugFlags as F}from"../../support/debugFlags.js";import{computeShadowsEnabled as G}from"../../support/sunUtils.js";import{FBOCache as x}from"../core/FBOCache.js";import{RenderPassManager as H}from"../core/renderPasses/RenderPassManager.js";import{isColor as y}from"../core/shaderLibrary/ShaderOutput.js";import{distanceFadeEnd as v}from"../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{RenderNodes as M}from"../effects/RenderNodes.js";import{RenderPluginManager as L}from"../effects/RenderPluginManager.js";import{WeatherFader as q}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as j}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as U}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as B,renderHighlightBuffer as V}from"../effects/highlight/Highlight.js";import{OITBlend as k}from"../effects/transparency/OITBlend.js";import{AnimationTimer as W}from"./AnimationTimer.js";import{AnimationTimeStep as Q}from"./AnimationTimeStep.js";import{BoundingInfo as z}from"./BoundingInfo.js";import{Compositor as Y}from"./Compositor.js";import{DepthRange as J}from"./DepthRange.js";import{depthRangeFromScene as X}from"./depthRangeUtils.js";import{MainFramebuffer as $}from"./MainFramebuffer.js";import{NavigationDepthCache as K}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as Z}from"./OrderIndependentTransparency.js";import{RenderContext as ee,defaultRenderOccludedMask as te}from"./RenderContext.js";import{RendererBase as se}from"./RendererBase.js";import{setupFeatureDefaults as ie}from"./RenderFeature.js";import{RenderPluginInput as re}from"./RenderPluginInput.js";import{ShadowAccumulator as ae}from"./ShadowAccumulator.js";import{ShadowMap as ne}from"./ShadowMap.js";import he from"./SliceHelper.js";import{MergedRenderer as oe}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as de}from"../parts/renderUtils.js";import{RendererPerformanceInfo as le,PerformanceCategory as ue}from"../statistics/RendererPerformanceInfo.js";import{ColorAttachment1 as me,PixelType as _e,ColorAttachment2 as pe,ColorAttachment0 as ce,DrawBufferNone as fe}from"../../../webgl/enums.js";const be=has("disable-feature:async-navigation-3d-depth-readback");let ge=class extends se{constructor(e,t,s,i,r){super({stage:e}),this._techniques=s,this._rctx=i,this._requestRender=r,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new H,this._isRendering=!1,this._inGlobeView=!1,this._backgroundColor=A(0,0,0,1),this._sliceHelper=new he,this.sceneDepthRange=_(J.Infinite),this._state=_(2),this._hasGlobalIlluminationFlag=!!has("enable-feature:global-illumination"),this._hasAnimations=!1,this._animationTimestep=new Q,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=_(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new re,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(const t of Ne)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new x(i),this._compositor=new Y(i,s),this._renderStateFeatures=_(ie(e.view.qualityProfile));const a=new ne(this._fboCache,e.viewingMode);this._renderContext=new ee(this._rctx,a,s),this._framebuffer=new $(this._fboCache,this._bindParameters),this._performanceInfo=new le(this._rctx),this._blit=new U(s),this.navigationDepthCache=new K(this._rctx,this._fboCache,s,()=>this._requestRender(0)),this._shadowAccumulator=new ae(this.fboCache,s,e,(t,s,i)=>{const r=e.view.qualitySettings.maximumPixelRatio;t.shadowMap.start(t.camera,s,i,!0,r),this._renderShadowCascades(5,t.shadowMap),t.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(t.camera,t.contentCamera)},r),this._nodes=new M(this._renderContext),this._plugins=new L({renderContext:this._renderContext,techniques:s,materials:t,requestRender:r,controller:e}),this._plugins.add(this.renderPassManager),this.weatherFader=new q({view:e.view,context:this._renderContext}),this.addHandles([d(()=>e.view.state.camera,()=>r(),l),d(()=>F.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},r()},u),d(()=>e.view.environment.background?.color,e=>{const t=e?e.toUnitRGBA():C;I(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),r()},l),d(()=>e.view.state.camera.relativeElevation,e=>this._inGlobeView=(e??1/0)>=v,l),d(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},m),d(()=>this._bindParameters.clouds.data?.state,()=>r(),m),d(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,r()},u),d(()=>"sun"===e.view.environment.lighting?.type,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},l)])}destroy(){this._gpuTimerHandle=i(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator.destroy(),this._shadowAccumulator=null,this._loadEdgeViewTask=r(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,z.prune(),oe.prune(),T()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new k(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=ie(e),this._requestRender()}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,s){this._renderStateFeatures.mutate(i=>i.set(t,e,s)),this._requestRender()}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this.isFeatureEnabled(3)&&!this._inGlobeView}get hasGlobalIllumination(){return this._hasGlobalIlluminationFlag&&this.hasAmbientIllumination}get hasGlobalIlluminationHighQuality(){return this.hasGlobalIllumination&&this.isFeatureEnabled(10)}get _keepGlobalIlluminationShadingAlive(){return this._hasGlobalIlluminationFlag&&!this._inGlobeView}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){return this._plugins.emissions}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}_releaseFBOs(){this._bindParameters.hudOcclusion=n(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose(),this._bindParameters.globalIllumination=n(this._bindParameters.globalIllumination),this._bindParameters.reprojection.lastFrameDepth=n(this._bindParameters.reprojection.lastFrameDepth),this._bindParameters.reprojection.lastFrameEmission=n(this._bindParameters.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||(this._loadEdgeViewTask=s(async e=>{const{EdgeView:t}=await import("./edgeRendering/EdgeView.js");o(e);const s=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:ye(this.stage.view.resourceController)});return this.addHandles(d(()=>s.updating,()=>this._requestRender(),m)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(s)),this._edgeViewCallbacks.length=0,s})),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView(),null==this._edgeView?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&f(this._bindParameters.reprojection.matrix,w)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}modifyShadowsEnabled(){const e=this.stage.view.environmentManager.referencePositionGeographic,t=null==e||G(e[2],this.stage.viewingMode),s=this.stage.view.environment.lighting.directShadowsEnabled&&t;this._bindParameters.shadowMap.enabled!==s&&(this._bindParameters.shadowMap.enabled=s,this._requestRender(1))}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&this._shadowAccumulator.setParameters(e.shadowCast)}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn("Renderer.modify called while rendering"),!!super.commit(e,t,this._plugins.context)&&(this.updateHasFlags(),!0)}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(8&this.plugins.renderOccludedFlags)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){const has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...Te),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new W(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);const s=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==s&&(this._gpuTimerHandle=s?i(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,s=!1){try{return this._isRendering=!0,this._render(e,t,s)}catch(i){console.error(`Exception during rendering: ${i}:\n${i.stack}`)}finally{this._isRendering=!1}return new de(this._pluginInput.get(O.FINAL),null)}_render(e,t,s){const i=0===t;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=i,this._disposeBindBuffers();const{camera:r,contentCamera:a,mode:o,alignPixelEnabled:d}=e;this._state.value=o,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=d,this._bindParameters.decorations=!s,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;const l=!s||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=l?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(R.VIEWSHED),this._bindParameters.cutFillComputationEnabled=this._nodes.produces(R.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(R.CUTFILL_COLOR),this._renderOverlay(),r.setGLViewport(this._rctx);const u=this._framebuffer,m=u.initialize(r.fullWidth,r.fullHeight,this._backgroundColor),_=this._needsLastFrameColor;_?(m?.retain(_-1),m?.setName("last frame color"),this._bindParameters.reprojection.lastFrameColor=m):m?.release(),this._ensureBindParameters(r,a),this._plugins.sortTestsTransparentOrderedSlots(Re),this._plugins.prepareRender(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!s,this._shadowAccumulator.fullyRecompute=!i,this._shadowAccumulator.updateCamera(r),this._hasTransparentGeometry=this._plugins.produces(0,...we),this._precompilePrepasses(),this.performanceInfo.advance(ue.PREPARE);const p=this._computeShadowDepthRange(r);this._pluginInput.set("normals",this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(r,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),u.bind(),this._bindParameters.mainDepth=u.depth.attachment,this._precompileShaders(i),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this.hasReflections&&(this._bindParameters.depth=h(this._bindParameters.depth),this._bindParameters.reprojection.lastFrameColor=h(this._bindParameters.reprojection.lastFrameColor)),this._bindParameters.shadowMap.disposeOutput(5),u.update(e=>this._renderNodes(R.CUTFILL_COMPUTATION,e)),this._pluginInput.set(R.FOCUSAREA,this._renderFocusAreaGeometry()),u.update(e=>this._renderNodes(R.TRANSPARENT_ENVIRONMENT,e)),u.update(e=>this._renderNodes(R.VIEWSHED,e)),u.update(e=>this._renderNodes(R.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),u.update(e=>this._renderNodes(R.FOCUSAREA_COLOR,e)),u.update(e=>this._renderNodes(R.CUTFILL_COLOR,e)),this._pluginInput.release(R.FOCUSAREA),this._pluginInput.release(R.GROUND_DEPTH),u.update(e=>this._renderNodes(R.OCCLUDED,e)),this._pluginInput.set("highlights",this._renderHighlightPrepass());const c=2===t?this._renderObjectAndLayerIdColor():null;u.update(e=>this._renderNodes(O.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=n(this._bindParameters.shadowHighlight),u.update(e=>this._renderNodes(R.ANTIALIASING,e));const f=this._hasTransparentGeometry?2:1,b=this._bindParameters.emissions;let g;return this._bindParameters.emissions=0,this._hasHUDHighlights&&u.update(e=>this._renderHUD(f,e)),u.update(e=>this._renderNodes(R.HIGHLIGHT_COLOR,e)),this._hasHUDHighlights||u.update(e=>this._renderHUD(f,e)),this._bindParameters.emissions=b,u.update(e=>this._renderNodes(R.MAGNIFIER,e)),u.update(e=>this._renderNodes(O.FINAL,e)),i&&(this._blit.toFramebuffer(u.color,this._bindParameters),be||2!==o&&0!==o||this.navigationDepthCache.update(this._bindParameters,u.depth.attachment,this._renderContext.time)),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth,0!==this._emissions&&(this._bindParameters.reprojection.lastFrameEmission=u.color.obtainAttachment(me))),this._testsNeedsDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),this._releaseFBOs(),u.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd(),i||(g=u.color,g.retain(),this._releaseFBOs(),this._disposeOffscreenBuffers()),this.performanceInfo.finishFrame(),new de(g,c)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;const t=this._bindParameters;t.output=0;const s=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(t.hasOpaqueEmission,R.OPAQUE_ENVIRONMENT,R.GAUSSIAN_SPLAT,R.OPAQUE_OCCLUSION_QUERY,R.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...Ee),t.output=0,this._plugins.precompile(...Ee),this._hasTransparentGeometry){const e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(t.hasOpaqueEmission,R.FOCUSAREA),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(t.hasOpaqueEmission,R.TRANSPARENT_ENVIRONMENT,R.VIEWSHED,R.CUTFILL_COMPUTATION,R.CUTFILL_COLOR,R.LASERLINES,R.FOCUSAREA_COLOR,R.OCCLUDED,R.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0),t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=s,this._hasHighlights&&(t.highlights.forEach((e,s)=>{t.highlightLevel=s,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(t.hasOpaqueEmission,R.HIGHLIGHT_COLOR)),t.highlightMixTexture=null,this._nodes.precompile(t.hasOpaqueEmission,O.COMPOSITE,R.MAGNIFIER),this._shadowAccumulator.precompile(),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),--this._plugins.context.techniques.precompiling}_renderFocusAreaGeometry(){const e=this._nodes.produce(R.FOCUSAREA,this._pluginInput);return e&&this.performanceInfo.advance(ue.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(R.OBJECT_AND_LAYER_ID_COLOR))return null;const e=this._bindParameters.output;++this._techniques.precompiling;const{width:t,height:s}=this._framebuffer.size;let i=this.fboCache.acquire(t,s,R.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return i=this._renderNodes(R.OBJECT_AND_LAYER_ID_COLOR,i),--this._techniques.precompiling,this._bindParameters.output=e,i}finish(e){this._hasAnimations||this._animationTimestep.clear();const t=this.performanceInfo.gpuSamplingEnabled,s=0===e;if(s||t){const e=s?this.performanceInfo.elapsedTime:0;let i=0;t?i=this.performanceInfo.totalGPUTimeSampler.last:this._rctx.gl.finish();const r=Math.max(e,i);this._animationTimestep.frame(r,s)}}readAccumulatedShadow(e){return this._shadowAccumulator.readAccumulatedShadow(e[0],e[1])}readMainDepth(e,t){const{mainDepth:s,camera:i}=this._bindParameters;if(!s)return;const r=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,"linear depth");this._rctx.bindFramebuffer(r.fbo),i.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(C),this._compositor.blitDepthToLinearDepth(this._bindParameters,s),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),r.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,_e.UNSIGNED_BYTE,t),r.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){const t=this._needsEdges;if(!t)return;const{width:s,height:i}=this._framebuffer.size,r=this.fboCache.acquire(s,i,"edges");r.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(C),t.render(this._bindParameters,e),r.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,r.getTexture()),r.release(),this.performanceInfo.advance(1===e?ue.OPAQUE_EDGES:ue.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(ue.OVERLAY)}_renderShadowMap(e,t,s,i){if(!this.shadowsEnabled)return;const r=this._bindParameters.shadowMap;if(r.start(e,s,i,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,r),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);const s=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(R.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=s,r.disposeOutput(6),r.clear(),this._renderShadowCascades(7,r)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=h(this._bindParameters.depth)),this.performanceInfo.advance(R.SHADOWMAP)}_precompileShadowCascades(e){0!==this._bindParameters.shadowMap.cascades.length&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){const s=this._bindParameters.output,i=t===this._bindParameters.shadowMap&&6!==e;t.bindFramebuffer();for(const r of t.cascades)r.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(r.camera,r.camera),this.renderAllGeometry(e),i&&this._renderShadowNodes();t.finish(e),this._bindParameters.output=s}_renderShadowNodes(){const e=this._bindParameters.shadowMap.renderTarget;e&&(this._renderNodes(R.SHADOWMAP,e),this._pluginInput.set(R.SHADOWMAP,null))}get _needsLastFrameColor(){return+this.hasReflections+ +this.hasGlobalIllumination}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._shadowAccumulator.requiresDepth+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){this._bindParameters.depth=n(this._bindParameters.depth);const e=this._pluginInput.get("normals");if(e){this._pluginInput.set(R.AMBIENT_ILLUMINATION,this._hasGlobalIlluminationFlag?this._renderGlobalIllumination():this._renderSSAO());const t=this._needsDepth;t?(this._rctx.bindFramebuffer(e.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),this._bindParameters.depth=e.obtainDepthTexture(),this._bindParameters.depth?.retain(t-1),this.performanceInfo.advance(ue.DEPTH)):e.detachDepth(),this.hasAmbientIllumination&&this._pluginInput.release("normals")}else this._hasGlobalIlluminationFlag&&(this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){const e=this._needsDepth;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"geometry depth",14);this._rctx.bindFramebuffer(i.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._bindParameters.depth=i.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),i.release(),this.performanceInfo.advance(ue.DEPTH)}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||this._shadowAccumulator.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return J.Zero;const t=X(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),this._bindParameters.shadowMap.enabled&&t.union(this._nodes.queryDepthRange(R.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal)return void(this.sceneDepthRange.value=J.Infinite);if((this.stage.view.renderCoordsHelper?.getAltitude(e.eye)??0)<j)return void(this.sceneDepthRange.value=J.Infinite);const t=e.clone();t.near=N,t.far=1e10;const s=X(t,this._plugins.plugins,this.stage.layers,1);s.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(s)||(this.sceneDepthRange.value=s)}get _normalsRequired(){return this._nodes.require("normals",...S,R.VIEWSHED,R.LASERLINES)+(this.hasAmbientIllumination?1:0)}_precompilePrepasses(){this._normalsRequired?(this._precompilePlugins(4,Ie),this._needsDepth&&this._precompilePlugins(3,Ae)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(this._bindParameters.hasEmission,R.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5)),this._shadowAccumulator.active&&(this._shadowAccumulator.precompilePrepass(),this._precompileAllGeometry(5)),this.hasAmbientIllumination&&this._normalsRequired&&this._nodes.precompile(this._bindParameters.hasEmission,R.AMBIENT_ILLUMINATION)}_renderNormals(){const e=this._normalsRequired;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"normals",5);i.acquireDepth(14),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(C,!0,!0),this._bindParameters.output=4,this._plugins.render(...Ie);const r=this._nodes.optional("normals",...S,R.VIEWSHED);return i.retain(e+r-1),this.performanceInfo.advance(ue.NORMALS),i}_renderSSAO(){this._bindParameters.globalIlluminationEnabled=!1;const e=this._pluginInput.get("normals");return this.hasAmbientIllumination&&e?(this._bindParameters.ssao=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput),this._bindParameters.ssao&&this.performanceInfo.advance(ue.AMBIENT_ILLUMINATION),this._bindParameters.ssao):null}_renderGlobalIllumination(){if(!this.hasGlobalIllumination)return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive,null;const e=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput);return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIllumination=e,this._bindParameters.globalIlluminationEnabled=!0,this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?ue.AMBIENT_ILLUMINATION_HIGH_QUALITY:ue.AMBIENT_ILLUMINATION),e}_releaseGlobalIlluminationBuffers(){const e=this._bindParameters;e.reprojection.lastFrameColor=h(e.reprojection.lastFrameColor),e.reprojection.lastFrameDepth=h(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=h(e.reprojection.lastFrameEmission),e.globalIllumination=h(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){const t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...Ee),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(const s of t)this._renderContext.renderOccludedMask=s,this.precompileSlots(e,...Ce);this._renderContext.renderOccludedMask=te}renderSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.forAll(e=>{const t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...Ce),this._renderContext.renderOccludedMask=te}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...Se[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){this._precompileAllGeometry(8)}precompileCutFillOrthographicReferenceDepth(){this._precompilePlugins(9,De)}_precompilePlugins(e,t){const s=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=s}renderViewshedShadowMap(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._ensureBindParametersCamera(t,s),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillOrthographicReferenceDepth(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...De),this._ensureBindParametersCamera(t,s),t.setGLViewport(this._rctx),this._bindParameters.output=i}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;const{width:e,height:t}=this._framebuffer.size,s=this.fboCache.acquire(e,t,R.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,256),this._framebuffer.bind(),s}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...Ae)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...Pe),this._nodes.precompile(this._bindParameters.hasEmission,"opaque-color"))}_renderOpaqueGeometry(){this._plugins.render(...Pe)}_renderTransparentGeometry(){this._plugins.render(...we),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...Ee)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;const t=this._bindParameters.output,s=this._bindParameters.hudRenderStyle,i=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...Te),this._bindParameters.output=2,this._plugins.precompile(...Te),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...Te)),this._bindParameters.emissions=i,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=s}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;const s=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);const i=!!t.getTexture(me);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,s.getTexture(),i),s.release(),this.performanceInfo.advance(0===e?ue.HUD_OCCLUDED:ue.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;const{fboCache:e,_rctx:t,_bindParameters:s}=this,{width:i,height:r}=this._framebuffer.size,{highlights:a}=s,n=a.length>B?3:1,h=e.acquire(i,r,"highlights",n);h.acquireDepth(14);const o=this._plugins.produces(10,0);return o&&this._framebuffer.color.fbo&&h.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,h.fbo,1024),t.bindFramebuffer(h.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),o||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(h.fbo),V(t,e,i,r,s,()=>this._renderHighlightGeometries()),h.detachDepth(),this.performanceInfo.advance(ue.HIGHLIGHTS),h.retain(this._nodes.require("highlights",...D)+this._nodes.optional("highlights",...D)-1),h}_renderHighlightGeometries(){this._plugins.render(...Oe),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){this._shadowAccumulator.updateDepthRange(e);const t=this._shadowAccumulator.requiresDepth;this._bindParameters.output=0,this._shadowAccumulator.renderAccumulation(this._bindParameters)&&this.performanceInfo.advance(ue.ACCUMULATED_SHADOWS),this._shadowAccumulator.updateMask(),t&&(this._bindParameters.depth=h(this._bindParameters.depth))}_precompileTransparentGeometry(){y(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...we)}_renderOIT(e,t=2){const s=1===e,{width:i,height:r}=this._framebuffer.size,a=s?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),h=this._bindParameters,o=h.useFloatBlend.value?8:5,d=h.output;h.output=1;const l=s?"oit hud":"oit",u=this.fboCache.acquire(i,r,l,o).acquireColor(me,this.hasFloatBlend?7:0,"oit alpha"),m=h.hasEmission&&(0===e||1!==t);m&&u.acquireColor(pe,o,"oit emissive"),s||u.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(u.fbo),this._rctx.clearFramebuffer(Z),m&&this._rctx.clearBuffer(2,Z),a(),u.detachDepth(),h.output=2;const _=this.fboCache.acquire(i,r,s?"oit front hud":"oit front");m&&_.acquireColor(me,o,"oit front emissive"),s?_.acquireDepth(this._hudDepthFormat):_.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(_.fbo),this._rctx.clearFramebuffer(C,s),a(),_.detachDepth();const p=this._pluginsHas.occludedHudElements&&!s,c=p&&0!==h.emissions?pe:me;let f;return h.hudOcclusion=n(this._bindParameters.hudOcclusion),h.output=0,s?(f=this.fboCache.acquire(i,r,"oit composite hud"),this._rctx.bindFramebuffer(f.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(0!==h.emissions&&this._framebuffer.ensureEmissionAttachment(),p&&(this._framebuffer.color.acquireColor(c,0,"hud occlusion"),this._rctx.clearBuffer(c-ce,C)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,u,_,h,p,e,this._fboCache.debugCallback),f?.detachDepth(),s||(m&&(this._bindParameters.emissions=3),p&&(h.hudOcclusion=this._framebuffer.color.obtainAttachment(c))),_.release(),u.release(),h.output=d,f}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...Pe)||this.plugins.produces(5,...Pe)||this.plugins.produces(3,3)}_renderOpaque(){const e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(R.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));const t=this._framebuffer;t.update(t=>this._renderNodes(O.OPAQUE,t,e)),this.fboCache.debugCallback?.(O.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(R.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(R.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(R.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(R.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(R.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.VOXEL,e)),this.fboCache.debugCallback?.(R.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){const e=this._framebuffer;this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(O.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(O.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=n(this._bindParameters.ssao),e.update(e=>this._renderNodes(R.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(R.TRANSPARENT_NO_DEPTH,e.color.fbo),this._renderTransparentMaterialWithoutDepth()}_renderTransparentMaterialWithoutDepth(){if(this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){const e=this._rctx.setDrawBuffers([fe,me]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(ue.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,s=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return s&&this.performanceInfo.advance(e),t;const i=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,i.fbo),i}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){1===this.stage.viewingMode&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){const{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){null==this._ssrEnableTime&&(this._ssrEnableTime=e);const s=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=s>0?Math.min(s,e-this._ssrEnableTime)/s:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination))return void(this._reprojectionMatrix=w);const{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:s}=e,i=!s.equals(t);if(i?(b(Ge,t.viewMatrix),b(Fe,t.projectionMatrix),g(xe,Ge,Fe),g(xe,s.viewMatrix,xe),g(xe,s.projectionMatrix,xe),this._reprojectionMatrix=xe):this._reprojectionMatrix=w,this.hasGlobalIllumination){const{viewMatrix:t}=e;i?(g(He,s.viewMatrix,Ge),P(t,He)):P(t,w)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,s,i){this._bindParameters.updateLighting(e,t,s,i),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([p()],ge.prototype,"_inGlobeView",void 0),e([p({readOnly:!0})],ge.prototype,"highResolutionAtmosphere",null),e([p()],ge.prototype,"_edgeView",void 0),e([p()],ge.prototype,"updating",null),ge=e([c("esri.views.3d.webgl-engine.lib.Renderer")],ge);const Pe=[0,1,2,3],we=[7,6,4,5],Ee=[7,6],Ie=[0,1,2,4,...Ee],Ae=[3,5],Ce=[2,4,8],Te=[16,12,14,13],Oe=[4,5,2,3,0,1,...Ee],Re=[4,8,5,11],Se={0:[13],1:[12],2:[13,12],3:[13,12]},De=[0,1,...Ee],Ne=["normals","highlights"],Fe=E(),Ge=E(),xe=E(),He=E();function ye(e){return t=>e.immediate.schedule(t)}export{ge as Renderer};
|
|
2
|
+
import{__decorate as e}from"tslib";import{update as t}from"../../../../core/arrayUtils.js";import{createTask as s}from"../../../../core/asyncUtils.js";import has from"../../../../core/has.js";import{removeMaybe as i,abortMaybe as r,destroyMaybe as a,releaseMaybe as n,releaseReferencedMaybe as h}from"../../../../core/maybe.js";import{throwIfAborted as o}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as l,initial as u,sync as m}from"../../../../core/reactiveUtils.js";import{signal as _}from"../../../../core/signal.js";import{property as p,subclass as c}from"../../../../core/accessorSupport/decorators.js";import{equals as f,invert as b,multiply as g,copy as P}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as w,create as E}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as I}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{fromValues as A,ZEROS as C}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{pruneIndexArrays as T}from"../../../../geometry/support/Indices.js";import{RenderNodeOutput as O,InternalRenderCategory as R,AllRenderNodeOutputs as S,AllInternalRenderNodeOutputs as D}from"../../webgl.js";import{minNearDistanceInMeters as N}from"../../state/NearFarHeuristic.js";import{debugFlags as F}from"../../support/debugFlags.js";import{computeShadowsEnabled as G}from"../../support/sunUtils.js";import{FBOCache as x}from"../core/FBOCache.js";import{RenderPassManager as H}from"../core/renderPasses/RenderPassManager.js";import{isColor as y}from"../core/shaderLibrary/ShaderOutput.js";import{distanceFadeEnd as v}from"../core/shaderLibrary/shading/ScreenSpaceConstants.js";import{RenderNodes as M}from"../effects/RenderNodes.js";import{RenderPluginManager as L}from"../effects/RenderPluginManager.js";import{WeatherFader as q}from"../effects/WeatherFader.js";import{innerAtmosphereFadeStart as j}from"../effects/atmosphere/atmosphereUtils.js";import{Blit as U}from"../effects/blit/Blit.js";import{maxHighlightsPerChannel as B,renderHighlightBuffer as V}from"../effects/highlight/Highlight.js";import{OITBlend as k}from"../effects/transparency/OITBlend.js";import{AnimationTimer as W}from"./AnimationTimer.js";import{AnimationTimeStep as Q}from"./AnimationTimeStep.js";import{BoundingInfo as z}from"./BoundingInfo.js";import{Compositor as Y}from"./Compositor.js";import{DepthRange as J}from"./DepthRange.js";import{depthRangeFromScene as X}from"./depthRangeUtils.js";import{MainFramebuffer as $}from"./MainFramebuffer.js";import{NavigationDepthCache as K}from"./NavigationDepthCache.js";import{blendingColorAlphaClear as Z}from"./OrderIndependentTransparency.js";import{RenderContext as ee,defaultRenderOccludedMask as te}from"./RenderContext.js";import{RendererBase as se}from"./RendererBase.js";import{setupFeatureDefaults as ie}from"./RenderFeature.js";import{RenderPluginInput as re}from"./RenderPluginInput.js";import{ShadowAccumulator as ae}from"./ShadowAccumulator.js";import{ShadowMap as ne}from"./ShadowMap.js";import he from"./SliceHelper.js";import{MergedRenderer as oe}from"../materials/renderers/MergedRenderer.js";import{RenderSceneResult as de}from"../parts/renderUtils.js";import{RendererPerformanceInfo as le,PerformanceCategory as ue}from"../statistics/RendererPerformanceInfo.js";import{ColorAttachment1 as me,PixelType as _e,ColorAttachment2 as pe,ColorAttachment0 as ce,DrawBufferNone as fe}from"../../../webgl/enums.js";const be=has("disable-feature:async-navigation-3d-depth-readback");let ge=class extends se{constructor(e,t,s,i,r){super({stage:e}),this._techniques=s,this._rctx=i,this._requestRender=r,this._pluginsHas={occludedHudElements:!1,hudElements:!1,water:!1},this.renderPassManager=new H,this._isRendering=!1,this._inGlobeView=!1,this._backgroundColor=A(0,0,0,1),this._sliceHelper=new he,this.sceneDepthRange=_(J.Infinite),this._state=_(2),this._hasGlobalIlluminationFlag=!!has("enable-feature:global-illumination"),this._hasAnimations=!1,this._animationTimestep=new Q,this._loadEdgeViewTask=null,this._edgeViewCallbacks=[],this._reprojectionMatrixVersion=_(0),this._renderHiddenTransparentEdges=()=>{},this._pluginInput=new re,this._hasTransparentGeometry=!1,this._releaseNodeInputs=e=>{for(const t of Ne)e.some(({name:e})=>e===t)&&this._pluginInput.release(t)},this._testsNeedsDepth=!1,this._fboCache=new x(i),this._compositor=new Y(i,s),this._renderStateFeatures=_(ie(e.view.qualityProfile));const a=new ne(this._fboCache,e.viewingMode);this._renderContext=new ee(this._rctx,a,s),this._framebuffer=new $(this._fboCache,this._bindParameters),this._performanceInfo=new le(this._rctx),this._blit=new U(s),this.navigationDepthCache=new K(this._rctx,this._fboCache,s,()=>this._requestRender(0)),this._shadowAccumulator=new ae(this.fboCache,s,e,(t,s,i)=>{const r=e.view.qualitySettings.maximumPixelRatio;t.shadowMap.start(t.camera,s,i,!0,r),this._renderShadowCascades(5,t.shadowMap),t.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(t.camera,t.contentCamera)},r),this._nodes=new M(this._renderContext),this._plugins=new L({renderContext:this._renderContext,techniques:s,materials:t,requestRender:r,controller:e}),this._plugins.add(this.renderPassManager),this.weatherFader=new q({view:e.view,context:this._renderContext}),this.addHandles([d(()=>e.view.state.camera,()=>r(),l),d(()=>F.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES,e=>{this._renderHiddenTransparentEdges=e?()=>this._renderEdges(0):()=>{},r()},u),d(()=>e.view.environment.background?.color,e=>{const t=e?e.toUnitRGBA():C;I(this._backgroundColor,t[0]*t[3],t[1]*t[3],t[2]*t[3],t[3]),r()},l),d(()=>e.view.state.camera.relativeElevation,e=>this._inGlobeView=(e??1/0)>=v,l),d(()=>this._bindParameters.clouds.fadeFactor,()=>{this._bindParameters.fadeLighting(),this._requestRender(2)},m),d(()=>this._bindParameters.clouds.data?.state,()=>r(),m),d(()=>e.view.state.highlights,e=>{this._bindParameters.highlights=e,r()},u),d(()=>"sun"===e.view.environment.lighting?.type,e=>{this._bindParameters.enableFillLights=e,this._requestRender()},l)])}destroy(){this._gpuTimerHandle=i(this._gpuTimerHandle),this._nodes.destroy(),this._framebuffer.dispose(),this._shadowAccumulator.destroy(),this._shadowAccumulator=null,this._loadEdgeViewTask=r(this._loadEdgeViewTask),this._edgeView=a(this._edgeView),this.renderPassManager.dispose(),this.weatherFader=a(this.weatherFader),this._releaseFBOs(),this._disposeOffscreenBuffers(),this.navigationDepthCache.destroy(),this._fboCache.destroy(),this._fboCache=null,this._renderContext.destroy(),this._plugins.destroy(),this._pluginInput=null,this._oitBlendOrNil=null,this._nodes=null,this._framebuffer=null,this._performanceInfo=null,z.prune(),oe.prune(),T()}get renderContext(){return this._renderContext}get _bindParameters(){return this._renderContext.bind}get _oitBlend(){return this._oitBlendOrNil??=new k(this._techniques),this._oitBlendOrNil}get performanceInfo(){return this._performanceInfo}updateRenderFeatures(e){this._renderStateFeatures.value=ie(e),this._requestRender()}isFeatureEnabled(e,t=this._state.value){return this._renderStateFeatures.value.get(t,e)??!1}setFeatureEnabled(e,t,s){this._renderStateFeatures.mutate(i=>i.set(t,e,s)),this._requestRender()}setTime(e){this._renderContext.time=e}get hasReflections(){return this._bindParameters.screenSpaceReflections.enabled=this._pluginsHas.water&&this.isFeatureEnabled(4),this._bindParameters.screenSpaceReflections.enabled}get _hasHighlights(){return this._plugins.produces(10,2,4,18,12,13,14)}hasHighlight(e){return this._plugins.hasHighlight(e)}get _hasHUDHighlights(){return this._plugins.produces(10,12,13,14)}get hasAmbientIllumination(){return this.isFeatureEnabled(3)&&!this._inGlobeView}get hasGlobalIllumination(){return this._hasGlobalIlluminationFlag&&this.hasAmbientIllumination}get hasGlobalIlluminationHighQuality(){return this.hasGlobalIllumination&&this.isFeatureEnabled(10)}get _keepGlobalIlluminationShadingAlive(){return this._hasGlobalIlluminationFlag&&!this._inGlobeView}get hasSMAA(){return this.isFeatureEnabled(0)}get _emissions(){return this._plugins.emissions}get hasFloatBlend(){return this._rctx.driverTest.floatBufferBlend.result&&this.isFeatureEnabled(9)}get highResolutionAtmosphere(){return this.isFeatureEnabled(2)}get fboCache(){return this._fboCache}_releaseFBOs(){this._bindParameters.hudOcclusion=n(this._bindParameters.hudOcclusion),this._bindParameters.depth=null}_disposeOffscreenBuffers(){this._framebuffer.dispose(),this._bindParameters.globalIllumination=n(this._bindParameters.globalIllumination),this._bindParameters.reprojection.lastFrameDepth=n(this._bindParameters.reprojection.lastFrameDepth),this._bindParameters.reprojection.lastFrameEmission=n(this._bindParameters.reprojection.lastFrameEmission),this._disposeBindBuffers()}_disposeBindBuffers(){this._bindParameters.shadowMap.disposeOutputs()}get updating(){return this._loadEdgeViewTask&&!this._loadEdgeViewTask.finished||this._edgeView?.updating||this._plugins.updating||this.weatherFader?.readyToRun||!this.isCameraFinal}loadEdgeView(){return this._loadEdgeViewTask||(this._loadEdgeViewTask=s(async e=>{const{EdgeView:t}=await import("./edgeRendering/EdgeView.js");o(e);const s=this._edgeView=new t({rctx:this._rctx,renderSR:this.stage.view.renderSpatialReference,viewingMode:this.stage.view.stage.viewingMode,techniques:this._techniques,setNeedsRender:()=>this._requestRender(),schedule:ye(this.stage.view.resourceController)});return this.addHandles(d(()=>s.updating,()=>this._requestRender(),m)),this._requestRender(),this._edgeViewCallbacks.forEach(e=>e(s)),this._edgeViewCallbacks.length=0,s})),this._loadEdgeViewTask.promise}withEdgeView(e){this.loadEdgeView(),null==this._edgeView?this._edgeViewCallbacks.push(e):e(this._edgeView)}get edgeView(){return this._edgeView}get isCameraFinal(){return this._reprojectionMatrixVersion.value>=0&&f(this._bindParameters.reprojection.matrix,w)}set _reprojectionMatrix(e){t(this._bindParameters.reprojection.matrix,e)&&this._reprojectionMatrixVersion.value++}modifyShadowsEnabled(){const e=this.stage.view.environmentManager.referencePositionGeographic,t=null==e||G(e[2],this.stage.viewingMode),s=this.stage.view.environment.lighting.directShadowsEnabled&&t;this._bindParameters.shadowMap.enabled!==s&&(this._bindParameters.shadowMap.enabled=s,this._requestRender(1))}get shadowsEnabled(){return!!this._bindParameters.shadowMap.enabled}setParameters(e){e.shadowCast&&this._shadowAccumulator.setParameters(e.shadowCast)}set slice(e){this._sliceHelper.update(e)&&this._requestRender()}get plugins(){return this._plugins}commit(e,t){return this._isRendering&&console.warn("Renderer.modify called while rendering"),!!super.commit(e,t,this._plugins.context)&&(this.updateHasFlags(),!0)}addRenderer(e){this._plugins.add(e)}removeRenderer(e){this._plugins.remove(e)}get occludedRequiresStencil(){return this._occludedRequiresOccludeeStencil||this.occludedRequiresIntegratedMeshStencil}get _occludedRequiresOccludeeStencil(){return this._bindParameters.hasOccludees&&!!(8&this.plugins.renderOccludedFlags)}get occludedRequiresIntegratedMeshStencil(){return this._plugins.produces(0,0)&&this._plugins.produces(0,9)}updateHasFlags(){const has=this._pluginsHas;has.occludedHudElements=this._plugins.produces(0,13),has.hudElements=has.occludedHudElements||this._plugins.produces(0,...Te),has.water=this._plugins.produces(4,19),this._bindParameters.hasOccludees=this._plugins.hasOccludees,this._requestRender()}updateAnimation(e,t){this._animationTimer??=new W(e.camera,t),this._animationTimer.advance(e.camera,t,this._animationTimeDilation);const s=this._hasAnimations;return this._hasAnimations=this._plugins.updateAnimation(this._animationTimer),this._hasAnimations=this._nodes.updateAnimation(this._animationTimer)||this._hasAnimations,this._hasAnimations!==s&&(this._gpuTimerHandle=s?i(this._gpuTimerHandle):this.performanceInfo.enableGPUPerformanceInfo()),this._hasAnimations}get animationTimestep(){return this._animationTimestep.value}get _animationTimeDilation(){return this._animationTimestep.timeDilation}resetAnimation(){this._animationTimestep.clear()}tick(){this.fboCache.clean()}render(e,t,s=!1){try{return this._isRendering=!0,this._render(e,t,s)}catch(i){console.error(`Exception during rendering: ${i}:\n${i.stack}`)}finally{this._isRendering=!1}return new de(this._pluginInput.get(O.FINAL),null)}_render(e,t,s){const i=0===t;this.performanceInfo.startFrame(),this.fboCache.frameStart(),this.fboCache.interactive=i,this._disposeBindBuffers();const{camera:r,contentCamera:a,mode:o,alignPixelEnabled:d}=e;this._state.value=o,this._bindParameters.output=0,this._bindParameters.emissions=this._emissions,this._bindParameters.alignPixelEnabled=d,this._bindParameters.decorations=!s,this._bindParameters.mainDepth=null,this._bindParameters.useFloatBlend.value=this.hasFloatBlend;const l=!s||!this._sliceHelper.isDecoration;this._bindParameters.slicePlane=l?this._sliceHelper.plane:null,this._bindParameters.viewshedEnabled=this._nodes.produces(R.VIEWSHED),this._bindParameters.cutFillComputationEnabled=this._nodes.produces(R.CUTFILL_COMPUTATION),this._bindParameters.cutFillVisualizationEnabled=this._nodes.produces(R.CUTFILL_COLOR),this._renderOverlay(),r.setGLViewport(this._rctx);const u=this._framebuffer,m=u.initialize(r.fullWidth,r.fullHeight,this._backgroundColor),_=this._needsLastFrameColor;_?(m?.retain(_-1),m?.setName("last frame color"),this._bindParameters.reprojection.lastFrameColor=m):m?.release(),this._ensureBindParameters(r,a),this._plugins.sortTestsTransparentOrderedSlots(Re),this._plugins.prepareRender(),this._bindParameters.hasShadowHighlights=this._needsShadowHighlight&&!s,this._shadowAccumulator.fullyRecompute=!i,this._shadowAccumulator.updateCamera(r),this._hasTransparentGeometry=this._plugins.produces(0,...we),this._precompilePrepasses(),this.performanceInfo.advance(ue.PREPARE);const p=this._computeShadowDepthRange(r);this._pluginInput.set("normals",this._renderNormals()),this._renderAmbientIlluminationAndDepth(),this._renderShadowMap(r,a,this._bindParameters.lighting.mainLight.direction,p),this._renderShadowAccumulation(p),u.bind(),this._bindParameters.mainDepth=u.depth.attachment,this._precompileShaders(i),this._bindParameters.output=0,this._renderOpaque(),this._renderPreTransparent(),this._renderTransparent(),this.hasReflections&&(this._bindParameters.depth=h(this._bindParameters.depth),this._bindParameters.reprojection.lastFrameColor=h(this._bindParameters.reprojection.lastFrameColor)),this._bindParameters.shadowMap.disposeOutput(5),u.update(e=>this._renderNodes(R.CUTFILL_COMPUTATION,e)),this._pluginInput.set(R.FOCUSAREA,this._renderFocusAreaGeometry()),u.update(e=>this._renderNodes(R.TRANSPARENT_ENVIRONMENT,e)),u.update(e=>this._renderNodes(R.VIEWSHED,e)),u.update(e=>this._renderNodes(R.LASERLINES,e)),this._nodes.requireGeometryDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),u.update(e=>this._renderNodes(R.FOCUSAREA_COLOR,e)),u.update(e=>this._renderNodes(R.CUTFILL_COLOR,e)),this._pluginInput.release(R.FOCUSAREA),this._pluginInput.release(R.GROUND_DEPTH),u.update(e=>this._renderNodes(R.OCCLUDED,e)),this._pluginInput.set("highlights",this._renderHighlightPrepass());const c=2===t?this._renderObjectAndLayerIdColor():null;u.update(e=>this._renderNodes(O.COMPOSITE,e)),this._bindParameters.shadowMap.disposeOutputs(),this._bindParameters.shadowHighlight=n(this._bindParameters.shadowHighlight),u.update(e=>this._renderNodes(R.ANTIALIASING,e));const f=this._hasTransparentGeometry?2:1,b=this._bindParameters.emissions;let g;return this._bindParameters.emissions=0,this._hasHUDHighlights&&u.update(e=>this._renderHUD(f,e)),u.update(e=>this._renderNodes(R.HIGHLIGHT_COLOR,e)),this._hasHUDHighlights||u.update(e=>this._renderHUD(f,e)),this._bindParameters.emissions=b,u.update(e=>this._renderNodes(R.MAGNIFIER,e)),u.update(e=>this._renderNodes(O.FINAL,e)),i&&(this._blit.toFramebuffer(u.color,this._bindParameters),be||2!==o&&0!==o||this.navigationDepthCache.update(this._bindParameters,u.depth.attachment,this._renderContext.time)),this.hasGlobalIllumination&&(this._bindParameters.reprojection.lastFrameDepth=this._bindParameters.depth,0!==this._emissions&&(this._bindParameters.reprojection.lastFrameEmission=u.color.obtainAttachment(me))),this._testsNeedsDepth&&(this._bindParameters.depth=h(this._bindParameters.depth)),this._releaseFBOs(),u.releaseDepth(),this._bindParameters.reprojection.lastFrameCamera.copyFrom(this._bindParameters.camera),this.fboCache.frameEnd(),i||(g=u.color,g.retain(),this._releaseFBOs(),this._disposeOffscreenBuffers()),this.performanceInfo.finishFrame(),new de(g,c)}_precompileShaders(e){++this._plugins.context.techniques.precompiling;const t=this._bindParameters;t.output=0;const s=t.emissions;if(this._precompileOpaqueGeometry(),this._nodes.precompile(t.hasOpaqueEmission,R.OPAQUE_ENVIRONMENT,R.GAUSSIAN_SPLAT,R.OPAQUE_OCCLUSION_QUERY,R.VOXEL),this._precompileOpaqueGeometry(),t.output=3,this._plugins.precompile(...Ee),t.output=0,this._plugins.precompile(...Ee),this._hasTransparentGeometry){const e=this._pluginsHas.occludedHudElements;this._oitBlend.precompile(t,e,0),this._pluginsHas.hudElements&&this._oitBlend.precompile(t,!1,1),this._precompileTransparentGeometry(),t.hasTransparentEmission&&(t.emissions=3)}this._nodes.precompile(t.hasOpaqueEmission,R.FOCUSAREA),this._compositor.precompile(this._usesPremultipliedAlphaBlit,!!this._needsEdges,t),this._hasTransparentGeometry||this._plugins.precompile(15),this._nodes.precompile(t.hasOpaqueEmission,R.TRANSPARENT_ENVIRONMENT,R.VIEWSHED,R.CUTFILL_COMPUTATION,R.CUTFILL_COLOR,R.LASERLINES,R.FOCUSAREA_COLOR,R.OCCLUDED,R.ANTIALIASING),t.highlightMixTexture=t.highlights.length>1?this._rctx.emptyTexture:null,this._precompileHUD(0),t.emissions=0,this._precompileHUD(0),this._precompileHUD(1),t.emissions=s,this._hasHighlights&&(t.highlights.forEach((e,s)=>{t.highlightLevel=s,this._precompileAllGeometry(10),this._hasHUDHighlights&&this._plugins.precompile(13,12)}),t.highlightLevel=null,this._nodes.precompile(t.hasOpaqueEmission,R.HIGHLIGHT_COLOR)),t.highlightMixTexture=null,this._nodes.precompile(t.hasOpaqueEmission,O.COMPOSITE,R.MAGNIFIER),this._shadowAccumulator.precompile(),this._plugins.precompile(8),t.hasOpaqueEmission&&(t.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.precompile(8),t.transparentWithoutDepthEmissionDimmingPass=!1),e&&this._blit.precompile(),--this._plugins.context.techniques.precompiling}_renderFocusAreaGeometry(){const e=this._nodes.produce(R.FOCUSAREA,this._pluginInput);return e&&this.performanceInfo.advance(ue.FOCUS_AREA_MASK),e}_renderObjectAndLayerIdColor(){if(!this._nodes.produces(R.OBJECT_AND_LAYER_ID_COLOR))return null;const e=this._bindParameters.output;++this._techniques.precompiling;const{width:t,height:s}=this._framebuffer.size;let i=this.fboCache.acquire(t,s,R.OBJECT_AND_LAYER_ID_COLOR).acquireDepth(14);return i=this._renderNodes(R.OBJECT_AND_LAYER_ID_COLOR,i),--this._techniques.precompiling,this._bindParameters.output=e,i}finish(e){this._hasAnimations||this._animationTimestep.clear();const t=this.performanceInfo.gpuSamplingEnabled,s=0===e;if(s||t){const e=s?this.performanceInfo.elapsedTime:0;let i=0;t?i=this.performanceInfo.totalGPUTimeSampler.last:this._rctx.gl.finish();const r=Math.max(e,i);this._animationTimestep.frame(r,s)}}readAccumulatedShadow(e){return this._shadowAccumulator.readAccumulatedShadow(e[0],e[1])}readMainDepth(e,t){const{mainDepth:s,camera:i}=this._bindParameters;if(!s)return;const r=this.fboCache.acquire(this._framebuffer.size.width,this._framebuffer.size.height,"linear depth");this._rctx.bindFramebuffer(r.fbo),i.setGLViewport(this._rctx),this._rctx.setScissorRect(e[0],e[1],e[2],e[3]),this._rctx.setScissorTestEnabled(!0),this._rctx.clearFramebuffer(C),this._compositor.blitDepthToLinearDepth(this._bindParameters,s),this._rctx.setScissorTestEnabled(!1),this._rctx.setScissorRect(0,0,this._rctx.gl.canvas.width,this._rctx.gl.canvas.width),r.fbo?.readPixels(e[0],e[1],e[2],e[3],6408,_e.UNSIGNED_BYTE,t),r.release()}get _needsEdges(){return this._edgeView?.shouldRender()?this._edgeView:null}_renderEdges(e){const t=this._needsEdges;if(!t)return;const{width:s,height:i}=this._framebuffer.size,r=this.fboCache.acquire(s,i,"edges");r.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(r.fbo),this._rctx.clearFramebuffer(C),t.render(this._bindParameters,e),r.detachDepth(),this._framebuffer.bind(),this._compositor.composite(this._bindParameters,r.getTexture()),r.release(),this.performanceInfo.advance(1===e?ue.OPAQUE_EDGES:ue.TRANSPARENT_EDGES)}_renderOverlay(){this._bindParameters.overlay=this.overlay?.render(this._renderContext.time),this._bindParameters.overlay&&this.performanceInfo.advance(ue.OVERLAY)}_renderShadowMap(e,t,s,i){if(!this.shadowsEnabled)return;const r=this._bindParameters.shadowMap;if(r.start(e,s,i,this.isFeatureEnabled(5),this.stage.view.qualitySettings.maximumPixelRatio),this._needsShadowHighlight){this._renderShadowCascades(6,r),e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,t);const s=this._bindParameters.output;this._bindParameters.output=0,this._bindParameters.shadowHighlight=this._nodes.produce(R.SHADOW_HIGHLIGHT,this._pluginInput),this._bindParameters.output=s,r.disposeOutput(6),r.clear(),this._renderShadowCascades(7,r)}else this._renderShadowCascades(5);e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,this._bindParameters.contentCamera),this._needsShadowHighlight&&(this._bindParameters.depth=h(this._bindParameters.depth)),this.performanceInfo.advance(R.SHADOWMAP)}_precompileShadowCascades(e){0!==this._bindParameters.shadowMap.cascades.length&&this._precompileAllGeometry(e)}_renderShadowCascades(e,t=this._bindParameters.shadowMap){const s=this._bindParameters.output,i=t===this._bindParameters.shadowMap&&6!==e;t.bindFramebuffer();for(const r of t.cascades)r.camera.setGLViewport(this._rctx),this._ensureBindParametersCamera(r.camera,r.camera),this.renderAllGeometry(e),i&&this._renderShadowNodes();t.finish(e),this._bindParameters.output=s}_renderShadowNodes(){const e=this._bindParameters.shadowMap.renderTarget;e&&(this._renderNodes(R.SHADOWMAP,e),this._pluginInput.set(R.SHADOWMAP,null))}get _needsLastFrameColor(){return+this.hasReflections+ +this.hasGlobalIllumination}get _needsDepth(){return+this._nodes.requireGeometryDepth+ +this.hasReflections+ +this.hasGlobalIllumination+ +this._shadowAccumulator.requiresDepth+ +this._testsNeedsDepth+ +this._needsShadowHighlight}get _usesPremultipliedAlphaBlit(){return this._pluginsHas.hudElements}_renderAmbientIlluminationAndDepth(){this._bindParameters.depth=n(this._bindParameters.depth);const e=this._pluginInput.get("normals");if(e){this._pluginInput.set(R.AMBIENT_ILLUMINATION,this._hasGlobalIlluminationFlag?this._renderGlobalIllumination():this._renderSSAO());const t=this._needsDepth;t?(this._rctx.bindFramebuffer(e.fbo),this._rctx.clear(1024),this._renderGeometryWithoutNormals(3),this._bindParameters.depth=e.obtainDepthTexture(),this._bindParameters.depth?.retain(t-1),this.performanceInfo.advance(ue.DEPTH)):e.detachDepth(),this.hasAmbientIllumination&&this._pluginInput.release("normals")}else this._hasGlobalIlluminationFlag&&(this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive),this._renderAllGeometryDepth()}_renderAllGeometryDepth(){const e=this._needsDepth;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"geometry depth",14);this._rctx.bindFramebuffer(i.fbo),this._rctx.clear(1280),this.renderAllGeometry(3),this._bindParameters.depth=i.obtainDepthTexture(),this._bindParameters.depth?.retain(e-1),i.release(),this.performanceInfo.advance(ue.DEPTH)}get _needsShadowDepthRange(){return this._bindParameters.shadowMap.enabled||this._shadowAccumulator.active}_computeShadowDepthRange(e){if(!this._needsShadowDepthRange)return J.Zero;const t=X(e,this._plugins.plugins,this.stage.layers,0);return t.union(this._plugins.queryDepthRange(e)),this._bindParameters.shadowMap.enabled&&t.union(this._nodes.queryDepthRange(R.SHADOWMAP,e)),t.near=Math.max(e.near,t.near),t.far=Math.min(e.far,t.far),t}updateSceneDepthRange(e){if(!this.stage.view.state.isGlobal)return void(this.sceneDepthRange.value=J.Infinite);if((this.stage.view.renderCoordsHelper?.getAltitude(e.eye)??0)<j)return void(this.sceneDepthRange.value=J.Infinite);const t=e.clone();t.near=N,t.far=1e10;const s=X(t,this._plugins.plugins,this.stage.layers,1);s.union(this._plugins.queryDepthRange(t)),this.sceneDepthRange.value.equals(s)||(this.sceneDepthRange.value=s)}get _normalsRequired(){return this._nodes.require("normals",...S,R.VIEWSHED,R.LASERLINES)+(this.hasAmbientIllumination?1:0)}_precompilePrepasses(){this._normalsRequired?(this._precompilePlugins(4,Ie),this._needsDepth&&this._precompilePlugins(3,Ae)):this._needsDepth&&this._precompileAllGeometry(3),this.shadowsEnabled&&(this._needsShadowHighlight?(this._nodes.precompile(this._bindParameters.hasEmission,R.SHADOW_HIGHLIGHT),this._precompileShadowCascades(6),this._precompileShadowCascades(7)):this._precompileShadowCascades(5)),this._shadowAccumulator.active&&(this._shadowAccumulator.precompilePrepass(),this._precompileAllGeometry(5)),this.hasAmbientIllumination&&this._normalsRequired&&this._nodes.precompile(this._bindParameters.hasEmission,R.AMBIENT_ILLUMINATION)}_renderNormals(){const e=this._normalsRequired;if(0===e)return;const{width:t,height:s}=this._framebuffer.size,i=this.fboCache.acquire(t,s,"normals",5);i.acquireDepth(14),this._rctx.bindFramebuffer(i.fbo),this._rctx.clearFramebuffer(C,!0,!0),this._bindParameters.output=4,this._plugins.render(...Ie);const r=this._nodes.optional("normals",...S,R.VIEWSHED);return i.retain(e+r-1),this.performanceInfo.advance(ue.NORMALS),i}_renderSSAO(){this._bindParameters.globalIlluminationEnabled=!1;const e=this._pluginInput.get("normals");return this.hasAmbientIllumination&&e?(this._bindParameters.ssao=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput),this._bindParameters.ssao&&this.performanceInfo.advance(ue.AMBIENT_ILLUMINATION),this._bindParameters.ssao):null}_renderGlobalIllumination(){if(!this.hasGlobalIllumination)return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIlluminationEnabled=this._keepGlobalIlluminationShadingAlive,null;const e=this._nodes.produce(R.AMBIENT_ILLUMINATION,this._pluginInput);return this._releaseGlobalIlluminationBuffers(),this._bindParameters.globalIllumination=e,this._bindParameters.globalIlluminationEnabled=!0,this.performanceInfo.advance(this.hasGlobalIlluminationHighQuality?ue.AMBIENT_ILLUMINATION_HIGH_QUALITY:ue.AMBIENT_ILLUMINATION),e}_releaseGlobalIlluminationBuffers(){const e=this._bindParameters;e.reprojection.lastFrameColor=h(e.reprojection.lastFrameColor),e.reprojection.lastFrameDepth=h(e.reprojection.lastFrameDepth),e.reprojection.lastFrameEmission=h(e.reprojection.lastFrameEmission),e.globalIllumination=h(e.globalIllumination),e.globalIlluminationEnabled=!1}_precompileAllGeometry(e){const t=this._bindParameters.output;this._bindParameters.output=e,this._precompileOpaqueGeometry(),this._precompileTransparentGeometry(),this._plugins.precompile(...Ee),this._bindParameters.output=t}renderAllGeometry(e){this._bindParameters.output=e,this._renderOpaqueAndTransparentGeometry(e),this._renderTransparentGround()}precompileSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.precompile(this._renderContext)}precompileOccludedSlots(e,t){for(const s of t)this._renderContext.renderOccludedMask=s,this.precompileSlots(e,...Ce);this._renderContext.renderOccludedMask=te}renderSlots(e,...t){for(const s of t)this._bindParameters.slot=s,e.forAll(e=>{const t=e.acquireTechniques(this._renderContext);t&&e.render(this._renderContext,t)})}renderOccludedSlots(e,t){this._renderContext.renderOccludedMask=t,this.plugins.renderOccludedFlags>1&&this._plugins.render(9),this.renderSlots(e,...Ce),this._renderContext.renderOccludedMask=te}renderHUD(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(...Se[e])}_renderHUDElements(e){this._bindParameters.hudRenderStyle=e,this._plugins.render(16),this.renderHUD(e),this._bindParameters.hudRenderStyle=e,this._plugins.render(14)}precompileViewshedShadowMap(){this._precompileAllGeometry(8)}precompileCutFillOrthographicReferenceDepth(){this._precompilePlugins(9,De)}_precompilePlugins(e,t){const s=this._bindParameters.output;this._bindParameters.output=e,this._plugins.precompile(...t),this._bindParameters.output=s}renderViewshedShadowMap(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this.renderAllGeometry(8),this._ensureBindParametersCamera(t,s),this._bindParameters.camera.setGLViewport(this._rctx),this._bindParameters.output=i}renderCutFillOrthographicReferenceDepth(e){const{camera:t,contentCamera:s}=this._bindParameters,i=this._bindParameters.output;e.setGLViewport(this._rctx),this._ensureBindParametersCamera(e,e),this._bindParameters.output=9,this._plugins.render(...De),this._ensureBindParametersCamera(t,s),t.setGLViewport(this._rctx),this._bindParameters.output=i}get _needsGroundDepth(){return this._bindParameters.cutFillVisualizationEnabled}_blitGroundDepth(){if(!this._needsGroundDepth)return null;const{width:e,height:t}=this._framebuffer.size,s=this.fboCache.acquire(e,t,R.GROUND_DEPTH,14);return this._rctx.blitFramebuffer(this._framebuffer.color.fbo,s.fbo,256),this._framebuffer.bind(),s}_renderOpaqueAndTransparentGeometry(e){this._bindParameters.output=e,this._renderOpaqueGeometry(),this._renderTransparentGeometry()}_renderGeometryWithoutNormals(e){this._bindParameters.output=e,this._plugins.render(...Ae)}_precompileOpaqueGeometry(){this._needsOpaquePass&&(this._plugins.precompile(...Pe),this._nodes.precompile(this._bindParameters.hasEmission,"opaque-color"))}_renderOpaqueGeometry(){this._plugins.render(...Pe)}_renderTransparentGeometry(){this._plugins.render(...we),this._hasTransparentGeometry&&this._plugins.render(15)}_renderTransparentGround(){this._plugins.render(...Ee)}_precompileHUD(e){if(!this._pluginsHas.hudElements)return;const t=this._bindParameters.output,s=this._bindParameters.hudRenderStyle,i=this._bindParameters.emissions;this._bindParameters.emissions=0,this._bindParameters.hudRenderStyle=e,this._bindParameters.output=1,this._plugins.precompile(...Te),this._bindParameters.output=2,this._plugins.precompile(...Te),this._bindParameters.output=0,this._oitBlend.precompile(this._bindParameters,!1,1),this._hasHighlights&&(this._bindParameters.output=10,this._plugins.precompile(...Te)),this._bindParameters.emissions=i,this._bindParameters.output=t,this._bindParameters.hudRenderStyle=s}_renderHUD(e,t){if(!this._pluginsHas.hudElements)return t;const s=this._renderOIT(1,e);this._rctx.bindFramebuffer(t.fbo);const i=!!t.getTexture(me);return this._compositor.compositePreMultipliedAlpha(this._bindParameters,s.getTexture(),i),s.release(),this.performanceInfo.advance(0===e?ue.HUD_OCCLUDED:ue.HUD),t}get _needsShadowHighlight(){return this.shadowsEnabled&&this._plugins.produces(6,2)}_renderHighlightPrepass(){if(!this._hasHighlights)return;const{fboCache:e,_rctx:t,_bindParameters:s}=this,{width:i,height:r}=this._framebuffer.size,{highlights:a}=s,n=a.length>B?3:1,h=e.acquire(i,r,"highlights",n);h.acquireDepth(14);const o=this._plugins.produces(10,0);return o&&this._framebuffer.color.fbo&&h.fbo&&t.blitFramebuffer(this._framebuffer.color.fbo,h.fbo,1024),t.bindFramebuffer(h.fbo),t.gl.clearBufferuiv(6144,0,[0,0,0,0]),o||t.clear(1024),this._bindParameters.output=10,t.bindFramebuffer(h.fbo),V(t,e,i,r,s,()=>this._renderHighlightGeometries()),h.detachDepth(),this.performanceInfo.advance(ue.HIGHLIGHTS),h.retain(this._nodes.require("highlights",...D)+this._nodes.optional("highlights",...D)-1),h}_renderHighlightGeometries(){this._plugins.render(...Oe),this._rctx.clear(256),this._renderHUDElements(2)}_renderShadowAccumulation(e){this._shadowAccumulator.updateDepthRange(e);const t=this._shadowAccumulator.requiresDepth;this._bindParameters.output=0,this._shadowAccumulator.renderAccumulation(this._bindParameters)&&this.performanceInfo.advance(ue.ACCUMULATED_SHADOWS),this._shadowAccumulator.updateMask(),t&&(this._bindParameters.depth=h(this._bindParameters.depth))}_precompileTransparentGeometry(){y(this._bindParameters.output)?(this._bindParameters.output=1,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=2,this._plugins.precompile(...we),this._hasTransparentGeometry&&this._plugins.precompile(15),this._bindParameters.output=0):this._plugins.precompile(...we)}_renderOIT(e,t=2){const s=1===e,{width:i,height:r}=this._framebuffer.size,a=s?()=>this._renderHUDElements(t):()=>this._renderTransparentGeometry(),h=this._bindParameters,o=h.useFloatBlend.value?8:5,d=h.output;h.output=1;const l=s?"oit hud":"oit",u=this.fboCache.acquire(i,r,l,o).acquireColor(me,this.hasFloatBlend?7:0,"oit alpha"),m=h.hasEmission&&(0===e||1!==t);m&&u.acquireColor(pe,o,"oit emissive"),s||u.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(u.fbo),this._rctx.clearFramebuffer(Z),m&&this._rctx.clearBuffer(2,Z),a(),u.detachDepth(),h.output=2;const _=this.fboCache.acquire(i,r,s?"oit front hud":"oit front");m&&_.acquireColor(me,o,"oit front emissive"),s?_.acquireDepth(this._hudDepthFormat):_.attachDepth(this._framebuffer.depth),this._rctx.bindFramebuffer(_.fbo),this._rctx.clearFramebuffer(C,s),a(),_.detachDepth();const p=this._pluginsHas.occludedHudElements&&!s,c=p&&0!==h.emissions?pe:me;let f;return h.hudOcclusion=n(this._bindParameters.hudOcclusion),h.output=0,s?(f=this.fboCache.acquire(i,r,"oit composite hud"),this._rctx.bindFramebuffer(f.fbo),this._rctx.setClearColor(0,0,0,1e-13),this._rctx.clear(16384)):(0!==h.emissions&&this._framebuffer.ensureEmissionAttachment(),p&&(this._framebuffer.color.acquireColor(c,0,"hud occlusion"),this._rctx.clearBuffer(c-ce,C)),this._framebuffer.bind()),this._oitBlend.blend(this._rctx,u,_,h,p,e,this._fboCache.debugCallback),f?.detachDepth(),s||(m&&(this._bindParameters.emissions=3),p&&(h.hudOcclusion=this._framebuffer.color.obtainAttachment(c))),_.release(),u.release(),h.output=d,f}get _hudDepthFormat(){return this.isFeatureEnabled(7)?14:13}get _needsOpaquePass(){return this.plugins.produces(0,...Pe)||this.plugins.produces(5,...Pe)||this.plugins.produces(3,3)}_renderOpaque(){const e=this._needsOpaquePass;e&&(this._plugins.render(0,1),this._pluginInput.set(R.GROUND_DEPTH,this._blitGroundDepth()),this._plugins.render(2,3));const t=this._framebuffer;t.update(t=>this._renderNodes(O.OPAQUE,t,e)),this.fboCache.debugCallback?.(O.OPAQUE,t.color.fbo),t.update(e=>this._renderNodes(R.OPAQUE_ENVIRONMENT,e)),this.fboCache.debugCallback?.(R.OPAQUE_ENVIRONMENT,t.color.fbo),this._renderEdges(1)}_renderPreTransparent(){this._framebuffer.update(e=>this._renderNodes(R.GAUSSIAN_SPLAT,e)),this.fboCache.debugCallback?.(R.GAUSSIAN_SPLAT,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.OPAQUE_OCCLUSION_QUERY,e)),this.fboCache.debugCallback?.(R.OPAQUE_OCCLUSION_QUERY,this._framebuffer.color.fbo),this._framebuffer.update(e=>this._renderNodes(R.VOXEL,e)),this.fboCache.debugCallback?.(R.VOXEL,this._framebuffer.color.fbo)}_renderTransparent(){const e=this._framebuffer;this._renderHiddenTransparentEdges(),this._hasTransparentGeometry&&this._renderOIT(0),e.update(e=>this._renderNodes(O.TRANSPARENT,e,this._hasTransparentGeometry)),this.fboCache.debugCallback?.(O.TRANSPARENT,e.color.fbo),this._hasTransparentGeometry||this._plugins.render(15),this._renderEdges(0),this._bindParameters.ssao=n(this._bindParameters.ssao),e.update(e=>this._renderNodes(R.TRANSPARENT_NO_DEPTH,e)),this.fboCache.debugCallback?.(R.TRANSPARENT_NO_DEPTH,e.color.fbo),this._renderTransparentMaterialWithoutDepth()}_renderTransparentMaterialWithoutDepth(){if(this._framebuffer.bind(),this._plugins.render(8),this._bindParameters.hasEmission){const e=this._rctx.setDrawBuffers([fe,me]);this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!0,this._plugins.render(8),this._bindParameters.transparentWithoutDepthEmissionDimmingPass=!1,this._rctx.setDrawBuffers(e)}this.performanceInfo.advance(ue.TRANSPARENT_MATERIAL_WITHOUT_DEPTH)}_renderNodes(e,t,s=!1){if(t.setName(e),this._pluginInput.set(e,t),!this._nodes.produces(e))return s&&this.performanceInfo.advance(e),t;const i=this._nodes.render(t,this._pluginInput,this._releaseNodeInputs);return this.performanceInfo.advance(e),this._fboCache.debugCallback?.(e,i.fbo),i}_ensureBindParameters(e,t){this._ensureBindParametersCamera(e,t),this._ensureBindParametersWeatherFader(),this._ensureBindParametersScreenSpaceReflections(),this._ensureBindParametersReprojection()}_ensureBindParametersCamera(e,t){this._bindParameters.camera=e,this._bindParameters.contentCamera=t}_ensureBindParametersWeatherFader(){1===this.stage.viewingMode&&(this._bindParameters.clouds.data&&(this._bindParameters.clouds.fade(this._bindParameters.camera,this.renderContext.time,this.stage.view.qualitySettings.fadeDuration,this.stage.view.state.stationary),this.weatherFader?.cleanupCubemap()),this._bindParameters.snowCover=this.weatherFader?.snowCover??0)}_ensureBindParametersScreenSpaceReflections(){const{time:e}=this.renderContext,{screenSpaceReflections:t}=this._bindParameters;if(this.hasReflections){null==this._ssrEnableTime&&(this._ssrEnableTime=e);const s=this.stage.view.qualitySettings.fadeDuration;t.fadeFactor=s>0?Math.min(s,e-this._ssrEnableTime)/s:1,t.fadeFactor<1&&this._requestRender()}else this._ssrEnableTime=null}_ensureBindParametersReprojection(){if(!(this.hasReflections||this.hasGlobalIllumination))return void(this._reprojectionMatrix=w);const{reprojection:e,camera:t}=this._bindParameters,{lastFrameCamera:s}=e,i=!s.equals(t);if(i?(b(Ge,t.viewMatrix),b(Fe,t.projectionMatrix),g(xe,Ge,Fe),g(xe,s.viewMatrix,xe),g(xe,s.projectionMatrix,xe),this._reprojectionMatrix=xe):this._reprojectionMatrix=w,this.hasGlobalIllumination){const{viewMatrix:t}=e;i?(g(He,s.viewMatrix,Ge),P(t,He)):P(t,w)}}addRenderNode(e){this._nodes.add(e),this._requestRender()}removeRenderNode(e){this._nodes.remove(e),this._requestRender()}updateLighting(e,t,s,i){this._bindParameters.updateLighting(e,t,s,i),this._requestRender(1)}get usedMemory(){return{fbos:this.fboCache.usedMemory,plugins:this._plugins.usedMemory,edges:this.edgeView?.usedMemory??0,clouds:this.weatherFader?.usedMemory??0}}get test(){}};e([p()],ge.prototype,"_inGlobeView",void 0),e([p({readOnly:!0})],ge.prototype,"highResolutionAtmosphere",null),e([p()],ge.prototype,"_edgeView",void 0),e([p()],ge.prototype,"updating",null),ge=e([c("esri.views.3d.webgl-engine.lib.Renderer")],ge);const Pe=[0,1,2,3],we=[7,6,4,5],Ee=[7,6],Ie=[0,1,2,4,...Ee],Ae=[3,5],Ce=[2,4,8],Te=[16,12,14,13],Oe=[4,5,2,3,0,1,...Ee],Re=[4,8,5,11],Se={0:[13],1:[12],2:[13,12],3:[13,12]},De=[0,1,...Ee],Ne=["normals","highlights"],Fe=E(),Ge=E(),xe=E(),He=E();function ye(e){return t=>e.immediate.schedule(t)}export{ge as Renderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{copy as e,distance as n,squaredDistance as o,set as r,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as l,setMax as u,getMax as
|
|
2
|
+
import{createScreenPointArray as t}from"../../../../core/screenUtils.js";import{copy as e,distance as n,squaredDistance as o,set as r,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as s}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{setMin as l,setMax as u,getMax as a,getMin as c,create as f}from"../../../../geometry/support/aaBoundingBox.js";import{clipPolygon as m}from"../../../../geometry/support/plane.js";import{normalFromValues as p,closestPointFromValues as d}from"../../../../geometry/support/triangle.js";import{boundingInfoSubdivisionThreshold as I}from"./intersectionConstants.js";import{projectAabbToScreenBounds as h,projectBoundingInfoToScreenBounds as g,screenPolygonIntersectsBounds as b,screenPolygonIntersectsTriangle as y}from"./screenPolygonOverlapUtils.js";class v{constructor(t){this.type=t,this.distance=Number.POSITIVE_INFINITY,this.primitiveIndex=0,this.hasNormal=!1,this.point=s(),this.normal=s()}reset(){this.distance=Number.POSITIVE_INFINITY,this.hasNormal=!1}update(t,n,o,r){this.distance=t,this.primitiveIndex=n,e(this.point,o),this.hasNormal=null!=r,null!=r&&e(this.normal,r)}updateIfCloserFromValues(t,e,n,o){t<this.distance&&this.update(t,e,n,o)}updateIfCloser(t){const{distance:e,primitiveIndex:n,point:o,normal:r}=t;this.updateIfCloserFromValues(e,n,o,t.hasNormal?r:null)}get valid(){return Number.isFinite(this.distance)}}function N(t,e,n,o,r){if(!t.visible||0!==t.type)return null;const i=new v(4);let s;if(t.boundingInfo)s=P(t.boundingInfo,e,n,o,r);else{const i=t.positionAttribute,l=t.primitivePositionIndices;s=x(e,n,o,0,l.length/3,l,i.data,i.stride,r,null,0)}for(const l of s)i.updateIfCloser(l);return i.valid?i:null}function T(t,e,n,o,r,i,s,l,u){const a=new v(4);for(const c of x(t,e,n,o,r,i,s,l,u,null,0))a.updateIfCloser(c);return a.valid?a:null}function j(t,e,n,o,r){const i=new v(4);for(const s of C(t,e,n,o,r))i.updateIfCloser(s);return i.valid?i:null}function*x(t,e,n,o,r,i,s,l,u,a=null,c=0){const f=(t,n,o,r)=>{const f=(a?.[r]??r)+c,m=null==a?f:r,p=3*f;return F(t,i,s,l,p+0,u,m,e),F(n,i,s,l,p+1,u,m,e),F(o,i,s,l,p+2,u,m,e),f};return yield*C(t,n,o,r,f)}function*C(t,e,o,r,i){if(null==t.camera)return;const{camera:s,screenPolygonPrimitiveProcessor:l}=t;for(let u=o;u<r;++u){const t=i(S[0],S[1],S[2],u),o=B;let r;U.reset();for(const{list:i,count:u}of l.processTriangle(k,S)){const l=m(s.frustum[4],i,u,E,!1);if(!(l<3)){for(let t=0;t<l;t++)s.projectToScreen(E[t],Y[t]);V(e,Y,l)&&(w(s.eye,E,l,_),null==r&&(r=p(B,S[0],S[1],S[2])),U.updateIfCloserFromValues(n(s.eye,_),t,_,r?o:null))}}U.valid&&(yield U)}}function*P(t,e,n,o,r){const i=e.camera,s=null!=r?(l(A,t.bbMin),u(A,t.bbMax),r.applyToAabb(A),h(i,c(A,S[0]),a(A,S[1]),n)):g(i,t,n);if(null==s||!b(o,s.bounds))return;const{primitiveIndices:f,position:m}=t,p=f?f.length:m.indices.length/3;if(p>I){const i=t.getChildren();if(void 0!==i){for(const t of i)yield*P(t,e,n,o,r);return}}yield*x(e,n,o,0,p,m.indices,m.data,m.stride,r,f,0)}function F(t,e,n,o,s,l,u,a){const c=o*e[s],f=n[c+0],m=n[c+1],p=n[c+2];null!=l?l.applyToVertex(t,f,m,p,u):r(t,f,m,p),a&&i(t,t,a)}function V(t,e,n){for(let o=1;o<n-1;o++)if(y(t,e[0],e[o],e[o+1]))return!0;return!1}function w(t,n,r,i){let s=Number.POSITIVE_INFINITY;for(let l=1;l<r-1;l++){d(M,t,n[0],n[l],n[l+1]);const r=o(t,M);r<s&&(s=r,e(i,M))}}const A=f(),O=12,S=[s(),s(),s()],E=Array.from({length:O},()=>s()),Y=Array.from({length:O},()=>t()),_=s(),B=s(),M=s(),U=new v(4),k={list:[],count:0};export{v as Hit,x as forEachTriangleRangeScreenPolygonHit,C as forEachTriangleReaderRangeScreenPolygonHit,N as intersectTriangleGeometryScreenPolygon,T as intersectTriangleRangeScreenPolygon,j as intersectTriangleReaderRangeScreenPolygon};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{writeAttributes as t}from"./internal/bufferWriterUtils.js";class e{constructor(t){this.layout=t}elementCount(t){return t.get("position").indices.length}write(e,r,i,o
|
|
2
|
+
import{writeAttributes as t}from"./internal/bufferWriterUtils.js";class e{constructor(t){this.layout=t}elementCount(t){return t.get("position").indices.length}write(e,r,i,n,o){null!=o&&t(i,n,this.layout,e,r,o)}}export{e as DefaultBufferWriter};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{clamp as e,deg2rad as t}from"../../../../core/mathUtils.js";import{fromMat4 as s}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{invert as i}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as n,rotate as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{ONES as l,fromValues as c,create as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as f,transformMat4 as u,normalize as h,subtract as m,scale as d,transformMat3 as g,scaleAndAdd as b,copy as v,length as x,distance as S,sub as O,dot as z}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y,fromValues as V}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromArray as P,ONES as C,create as j}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as R}from"../../../../geometry/support/aaBoundingRect.js";import{BufferViewVec4u8 as D}from"../../../../geometry/support/buffer/BufferView.js";import{evaluateModelTransformScale as w}from"../../layers/support/FastSymbolUpdates.js";import{debugFlags as A}from"../../support/debugFlags.js";import{isColorHighlightOrOLID as M,isColor as F,isOIT as U}from"../core/shaderLibrary/ShaderOutput.js";import{HUDVerticalPixelOffset as _}from"../core/shaderLibrary/hud/HUD.glsl.js";import{GLTextureMaterialBindParameters as L,GLTextureMaterial as T}from"../lib/GLTextureMaterial.js";import{Material as B}from"../lib/Material.js";import{SeparateScreenSizePerspectiveEvaluators as E}from"../lib/screenSizePerspectiveUtils.js";import{assert as I}from"../lib/Util.js";import{writePosition as W,writeNormal as H,writeColor as N,writeBufferVec2 as G,writeBufferFloat as q,writeBufferVec3 as X,writeBufferZeros as Y,writeBufferVec4 as k,writeOlidColor as J}from"./internal/bufferWriterUtils.js";import{verticalOffsetAtDistance as K}from"./internal/MaterialUtil.js";import{a as Q}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as Z,getInstanceLayout as $,HUDMaterialTechnique as ee}from"../shaders/HUDMaterialTechnique.js";import{HUDMaterialTechniqueConfiguration as te}from"../shaders/HUDMaterialTechniqueConfiguration.js";import{alphaCutoff as se}from"../../../../webscene/support/AlphaCutoff.js";class re extends B{constructor(e,t,s=!1){super(e,Ce),this.produces=new Map([[12,e=>M(e)&&!this.parameters.drawAsLabel&&!this._configuration.transparentOccluded],[13,e=>M(e)&&!this.parameters.drawAsLabel&&this._configuration.transparentOccluded],[14,e=>M(e)&&this.parameters.drawAsLabel],[18,e=>this.parameters.draped&&M(e)]]),this._visible=!0,this._configuration=new te(t,s)}updateConfiguration(e){super.updateConfiguration(e);const{parameters:t,_configuration:s}=this,r=t.draped;s.enableOITOffset=e.enableOITOffset,s.hasSlicePlane=this.parameters.hasSlicePlane,s.hasVerticalOffset=!!this.parameters.verticalOffset,s.hasScreenSizePerspective=!!this.parameters.screenSizePerspective,s.screenCenterOffsetUnitsEnabled="screen"===this.parameters.centerOffsetUnits,s.polygonOffset=this.parameters.polygonOffset,s.draped=r,s.pixelSnappingEnabled=this.parameters.pixelSnappingEnabled,s.signedDistanceFieldEnabled=this.parameters.textureIsSignedDistanceField,s.sampleSignedDistanceFieldTexelCenter=this.parameters.sampleSignedDistanceFieldTexelCenter,s.hasRotation=this.parameters.hasRotation,s.hasVVSize=!!this.parameters.vvSize,s.hasVVColor=!!this.parameters.vvColor,s.occludedFragmentFade=!r&&!!this.parameters.occludedFragmentOpacity,s.hasFocusAreaStyle=null!=this.parameters.focusAreaStyle,s.depthTestEnabled=this.parameters.depthEnabled,s.hasVertexColor=this.parameters.hasVertexColor,s.hasVertexSize=this.parameters.hasVertexSize,s.hasVertexRotation=this.parameters.hasVertexRotation,s.hasVertexUVi=this.parameters.hasVertexUVi,s.hasVertexCenterOffset=this.parameters.hasVertexCenterOffset,F(e.output)&&(s.debugDrawLabelBorder=!!A.LABELS_SHOW_BORDER),s.hasOcclusionTexture=!t.drawAsLabel&&s.transparentOccluded&&U(e.output)}intersectRay(e,t,r,a,n,o){const{options:{selectionMode:l,hud:c,excludeLabels:p},point:O,camera:z}=r,{parameters:V}=this;if(!l||!c||p&&V.isLabel||!e.visible||!O||!z)return;const C=e.attributes.get("featureAttribute"),j=null==C?null:P(C.data,Se),{scaleX:R,scaleY:D}=Re(j,V,z.pixelRatio),w=e.attributes.get("position"),A=e.attributes.get("size"),M=e.attributes.get("normal"),F=e.attributes.get("rotation"),U=e.attributes.get("centerOffset"),_=this.parameters.size;I(w.size>=3);const L="screen"===this.parameters.centerOffsetUnits;for(let P=0;P<w.data.length/w.size;P++){const e=P*w.size;if(f(ce,w.data[e],w.data[e+1],w.data[e+2]),u(ce,ce,t),u(ce,ce,z.viewMatrix),U){const e=P*U.size;f(ve,U.data[e],U.data[e+1],U.data[e+2])}else f(ve,0,0,0);if(!L&&(ce[0]+=ve[0],ce[1]+=ve[1],0!==ve[2])){const e=ve[2];h(ve,ce),m(ce,ce,d(ve,ve,e))}const a=P*M.size;f(pe,M.data[a],M.data[a+1],M.data[a+2]),g(pe,pe,s(ge,t));const{normal:n,cosAngle:l}=ne(pe,z,Oe),c=we(this.parameters,ce,l,z,le);if(b(ce,ce,n,c),z.applyProjection(ce,fe),fe[0]>-1){if(L&&(ve[0]||ve[1])&&(fe[0]+=ve[0]*z.pixelRatio,0!==ve[1]&&(fe[1]+=le.alignmentEvaluator.apply(ve[1])*z.pixelRatio),z.unapplyProjection(fe,ce)),fe[0]+=this.parameters.screenOffset[0]*z.pixelRatio,fe[1]+=this.parameters.screenOffset[1]*z.pixelRatio,fe[0]=Math.floor(fe[0]),fe[1]=Math.floor(fe[1]),Ve[0]=_[0],Ve[1]=_[1],null!=A){const e=P*A.size;Ve[0]*=A.data[e],Ve[1]*=A.data[e+1]}le.evaluator.applyVec2(Ve,Ve);const e=ze*z.pixelRatio;let t=0;if(V.textureIsSignedDistanceField){t=Math.min(V.outlineSize,.5*Ve[0])*z.pixelRatio/2}Ve[0]*=R,Ve[1]*=D;const s=V.rotation+(null!=F?F.data[P*F.size]:0),a=Q(V);if(oe(O,fe[0],fe[1],Ve,e,t,s,V,a)){const e=r.ray;if(u(he,ce,i(be,z.viewMatrix)),fe[0]=O[0],fe[1]=O[1],z.unprojectFromRenderScreen(fe,ce)){const t=y();v(t,e.direction);const s=1/x(t);d(t,t,s);o(S(e.origin,ce)*s,t,-1,he)}}}}}intersectScreenPolygon(){return null}intersectRayDraped(e,t,s,r,i){const a=e.attributes.get("position"),n=e.attributes.get("size"),o=e.attributes.get("rotation"),l=this.parameters,c=l.size,p=e.attributes.get("featureAttribute"),f=null==p?null:P(p.data,Se),{scaleX:u,scaleY:h}=Re(f,l,e.screenToWorldRatio),m=ye*e.screenToWorldRatio;for(let d=0;d<a.data.length/a.size;d++){const t=d*a.size,p=a.data[t],f=a.data[t+1];if(Ve[0]=c[0],Ve[1]=c[1],null!=n){const e=d*n.size;Ve[0]*=n.data[e],Ve[1]*=n.data[e+1]}let g=0;if(l.textureIsSignedDistanceField){g=Math.min(l.outlineSize,.5*Ve[0])*e.screenToWorldRatio/2}Ve[0]*=u,Ve[1]*=h;const b=l.rotation+(null!=o?o.data[d*o.size]:0),v=Q(l);oe(s,p,f,Ve,m,g,b,l,v)&&r(i.distance,i.normal,-1)}}createBufferWriter(){return new je(this.parameters)}applyShaderOffsets(e,t,r,i,a,n,o,l){g(ue,r,s(ge,i));const c=ne(ue,o,Oe),p=De(x(t),o),f=we(this.parameters,t,c.cosAngle,o,l);b(t,t,c.normal,f+p),b(e,e,ue,f+p);const u=n+f;this._applyPolygonOffsetView(t,c,u,o,t),this._applyCenterOffsetView(t,a,t)}applyShaderOffsetsNDC(e,t,s,r,i,a){return this._applyCenterOffsetNDC(e,t,r,i),null!=a&&v(a,i),this._applyPolygonOffsetNDC(i,s,r,i),i}_applyPolygonOffsetView(t,s,r,i,a){const n=i.aboveGround?1:-1;let o=Math.sign(r);0===o&&(o=n);const l=n*o;if(this.parameters.shaderPolygonOffset<=0)return v(a,t);const c=e(Math.abs(s.cosAngle),.01,1),p=1-Math.sqrt(1-c*c)/c/i.viewport[2];return d(a,t,l>0?p:1/p),a}_applyCenterOffsetView(e,t,s){const r="screen"!==this.parameters.centerOffsetUnits;return s!==e&&v(s,e),r&&(s[0]+=t[0],s[1]+=t[1],t[2]&&(h(pe,s),O(s,s,d(pe,pe,t[2])))),s}_applyCenterOffsetNDC(e,t,s,r){const i="screen"!==this.parameters.centerOffsetUnits;return r!==e&&v(r,e),i||(r[0]+=t[0]/s.fullWidth*2,r[1]+=t[1]/s.fullHeight*2),r}_applyPolygonOffsetNDC(e,t,s,r){const i=this.parameters.shaderPolygonOffset;if(e!==r&&v(r,e),i){const e=s.aboveGround?1:-1,a=e*Math.sign(t);r[2]-=(a||e)*i}return r}set visible(e){this._visible=e}get visible(){const{color:e,outlineSize:t,outlineColor:s}=this.parameters,r=e[3]>=se||t>=se&&s[3]>=se;return this._visible&&r}createGLMaterial(e){return new ie(e)}calculateRelativeScreenBounds(e,t,s=R()){return ae(this.parameters,e,t,s),s[2]=s[0]+e[0],s[3]=s[1]+e[1],s}}class ie extends T{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.getTechnique(ee,e)}}function ae(e,t,s,r){r[0]=e.anchorPosition[0]*-t[0]+e.screenOffset[0]*s,r[1]=e.anchorPosition[1]*-t[1]+e.screenOffset[1]*s}function ne(e,t,s){return u(s.normal,e,t.viewInverseTransposeMatrix),s.cosAngle=z(s.normal,Pe),s}function oe(e,s,r,i,a,l,c,p,f){let u=s-a-i[0]*f[0],h=u+i[0]+2*a,m=r-a-i[1]*f[1],d=m+i[1]+2*a;const g=p.distanceFieldBoundingBox;return p.textureIsSignedDistanceField&&null!=g&&(u+=i[0]*g[0],m+=i[1]*g[1],h-=i[0]*(1-g[2]),d-=i[1]*(1-g[3]),u-=l,h+=l,m-=l,d+=l),n(de,s,r),o(me,e,de,t(c)),me[0]>u&&me[0]<h&&me[1]>m&&me[1]<d}const le=new E,ce=y(),pe=y(),fe=j(),ue=y(),he=y(),me=p(),de=p(),ge=r(),be=a(),ve=y(),xe=y(),Se=j(),Oe={normal:y(),cosAngle:0},ze=1,ye=2,Ve=c(0,0),Pe=V(0,0,1);class Ce extends L{constructor(){super(...arguments),this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1,this.color=C,this.size=l,this.polygonOffset=0,this.anchorPosition=c(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=C,this.outlineSize=0,this.distanceFieldBoundingBox=j(),this.rotation=0,this.hasRotation=!1,this.vvSizeEnabled=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.hasVertexColor=!1,this.hasVertexSize=!1,this.hasVertexRotation=!1,this.hasVertexUVi=!1,this.hasVertexCenterOffset=!1,this.hasSlicePlane=!1,this.pixelSnappingEnabled=!0,this.centerOffsetUnits="world",this.drawAsLabel=!1,this.depthEnabled=!0,this.focusAreaStyle=null,this.draped=!1,this.isLabel=!1}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class je{constructor(e){this.baseInstanceLayout=Z,this.layout=$(e)}elementCount(e){return e.get("position").indices.length}elementCountBaseInstance(e){return e.get("uv0").indices.length}write(e,t,s,r,i){const{buffer:a,offset:n}=i,{position:o,normal:l,color:c,size:p,rotation:f,centerOffset:u,groundDistance:h,featureAttribute:m,uvi:d}=a;W(s.get("position"),e,o,n),H(s.get("normal"),t,l,n);const g=s.get("position").indices.length;if(d){const e=s.get("uvi")?.data;if(e&&e.length>=4){const[t,s,r,i]=e;for(let e=0;e<g;++e){const a=n+e;d.setValues(a,t,s,r,i)}}}if(c&&N(s.get("color"),4,c,n),p&&G(s.get("size"),p,n),f&&q(s.get("rotation"),f,n),u&&(s.get("centerOffset")?X(s.get("centerOffset"),u,n):Y(u,n,g)),s.get("groundDistance")?q(s.get("groundDistance"),h,n):Y(h,n,g),m&&(s.get("featureAttribute")?k(s.get("featureAttribute"),m,n):Y(m,n,g)),null!=r){const e=s.get("position")?.indices;if(e){const t=e.length,s=a.getField("olidColor",D);J(r,s,t,n)}}}writeBaseInstance(e,t){const{uv0:s}=t;G(e.get("uv0"),s,0)}}function Re(e,t,s){return null==e||null==t.vvSize?{scaleX:s,scaleY:s}:(w(xe,t,e),{scaleX:xe[0]*s,scaleY:xe[1]*s})}function De(e,t){const s=t.computeRenderPixelSizeAtDist(e)*_;return(t.aboveGround?1:-1)*s}function we(e,t,s,r,i){if(!e.verticalOffset?.screenLength){const r=x(t);return i.update(s,r,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),0}const a=x(t),n=e.screenSizePerspectiveAlignment??e.screenSizePerspective,o=K(r,a,e.verticalOffset,s,n,e.screenSizePerspectiveMinPixelReferenceSize);return i.update(s,a,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),o}export{re as HUDMaterial,Ce as Parameters};
|
|
2
|
+
import{clamp as e,deg2rad as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{fromMat4 as i}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{copy as a,set as n,rotate as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{ONES as l,fromValues as c,create as f}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as h,length as p,scale as u,distance as d,transformMat4 as m,set as g,normalize as S,subtract as b,transformMat3 as x,scaleAndAdd as v,sub as O,dot as z}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as y,fromValues as P}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromArray as V,ONES as R,create as C}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as D,empty as w,expandPointInPlace as A}from"../../../../geometry/support/aaBoundingRect.js";import{BufferViewVec4u8 as j}from"../../../../geometry/support/buffer/BufferView.js";import{evaluateModelTransformScale as U}from"../../layers/support/FastSymbolUpdates.js";import{debugFlags as M}from"../../support/debugFlags.js";import{isColorHighlightOrOLID as T,isColor as _,isOIT as F}from"../core/shaderLibrary/ShaderOutput.js";import{HUDVerticalPixelOffset as I}from"../core/shaderLibrary/hud/HUD.glsl.js";import{GLTextureMaterialBindParameters as L,GLTextureMaterial as E}from"../lib/GLTextureMaterial.js";import{Material as B}from"../lib/Material.js";import{screenPolygonIntersectsBounds as H,screenPolygonIntersectsTriangle as W}from"../lib/screenPolygonOverlapUtils.js";import{Hit as N}from"../lib/screenPolygonTriangleIntersections.js";import{SeparateScreenSizePerspectiveEvaluators as G}from"../lib/screenSizePerspectiveUtils.js";import{assert as q}from"../lib/Util.js";import{writePosition as X,writeNormal as Y,writeColor as k,writeBufferVec2 as J,writeBufferFloat as K,writeBufferVec3 as Q,writeBufferZeros as Z,writeBufferVec4 as $,writeOlidColor as ee}from"./internal/bufferWriterUtils.js";import{verticalOffsetAtDistance as te}from"./internal/MaterialUtil.js";import{a as se}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as ie,getInstanceLayout as re,HUDMaterialTechnique as ae}from"../shaders/HUDMaterialTechnique.js";import{HUDMaterialTechniqueConfiguration as ne}from"../shaders/HUDMaterialTechniqueConfiguration.js";import{alphaCutoff as oe}from"../../../../webscene/support/AlphaCutoff.js";class le extends B{constructor(e,t,s=!1){super(e,We),this.produces=new Map([[12,e=>T(e)&&!this.parameters.drawAsLabel&&!this._configuration.transparentOccluded],[13,e=>T(e)&&!this.parameters.drawAsLabel&&this._configuration.transparentOccluded],[14,e=>T(e)&&this.parameters.drawAsLabel],[18,e=>this.parameters.draped&&T(e)]]),this._visible=!0,this._configuration=new ne(t,s)}updateConfiguration(e){super.updateConfiguration(e);const{parameters:t,_configuration:s}=this,i=t.draped;s.enableOITOffset=e.enableOITOffset,s.hasSlicePlane=this.parameters.hasSlicePlane,s.hasVerticalOffset=!!this.parameters.verticalOffset,s.hasScreenSizePerspective=!!this.parameters.screenSizePerspective,s.screenCenterOffsetUnitsEnabled="screen"===this.parameters.centerOffsetUnits,s.polygonOffset=this.parameters.polygonOffset,s.draped=i,s.pixelSnappingEnabled=this.parameters.pixelSnappingEnabled,s.signedDistanceFieldEnabled=this.parameters.textureIsSignedDistanceField,s.sampleSignedDistanceFieldTexelCenter=this.parameters.sampleSignedDistanceFieldTexelCenter,s.hasRotation=this.parameters.hasRotation,s.hasVVSize=!!this.parameters.vvSize,s.hasVVColor=!!this.parameters.vvColor,s.occludedFragmentFade=!i&&!!this.parameters.occludedFragmentOpacity,s.hasFocusAreaStyle=null!=this.parameters.focusAreaStyle,s.depthTestEnabled=this.parameters.depthEnabled,s.hasVertexColor=this.parameters.hasVertexColor,s.hasVertexSize=this.parameters.hasVertexSize,s.hasVertexRotation=this.parameters.hasVertexRotation,s.hasVertexUVi=this.parameters.hasVertexUVi,s.hasVertexCenterOffset=this.parameters.hasVertexCenterOffset,_(e.output)&&(s.debugDrawLabelBorder=!!M.LABELS_SHOW_BORDER),s.hasOcclusionTexture=!t.drawAsLabel&&s.transparentOccluded&&F(e.output)}intersectRay(e,t,s,i,r,a){const{options:{selectionMode:n,hud:o,excludeLabels:l},point:c,camera:f}=s,{parameters:g}=this;if(n&&o&&(!l||!g.isLabel)&&e.visible&&c&&f)for(const{renderScreenPosition:S,screenSize:b,pixelRatioTolerance:x,halfOutlineSize:v,rotationAngle:O,anchor:z,centerView:P}of this._forEachScreenSpaceHUDInstance(_e,e,t,f))if(pe(c,S[0],S[1],b,x,v,O,g,z)){const e=s.ray;if(xe[0]=c[0],xe[1]=c[1],xe[2]=S[2],f.unprojectFromRenderScreen(xe,ge)){const t=y();h(t,e.direction);const s=1/p(t);u(t,t,s);const i=d(e.origin,ge)*s,r=y();m(r,P,f.inverseViewMatrix),a(i,t,-1,r)}}}*_forEachScreenSpaceHUDInstance(e,t,s,r){const{parameters:n}=this,o=t.attributes.get("featureAttribute"),l=null==o?null:V(o.data,Re),{scaleX:c,scaleY:f}=Ge(l,n,r.pixelRatio),p=t.attributes.get("position"),d=t.attributes.get("size"),O=t.attributes.get("normal"),z=t.attributes.get("rotation"),y=t.attributes.get("centerOffset"),P=n.size,R=i(ye,s);q(p.size>=3);const C="screen"===n.centerOffsetUnits;for(let i=0;i<p.data.length/p.size;i++){const t=i*p.size;if(g(ge,p.data[t],p.data[t+1],p.data[t+2]),m(ge,ge,s),m(ge,ge,r.viewMatrix),y){const e=i*y.size;g(Pe,y.data[e],y.data[e+1],y.data[e+2])}else g(Pe,0,0,0);if(!C&&(ge[0]+=Pe[0],ge[1]+=Pe[1],0!==Pe[2])){const e=Pe[2];S(Pe,ge),b(ge,ge,u(Pe,Pe,e))}const o=i*O.size;g(Se,O.data[o],O.data[o+1],O.data[o+2]),x(Se,Se,R);const{normal:l,cosAngle:V}=he(Se,r,Ie),D=Xe(n,ge,V,r,me);if(v(ge,ge,l,D),r.applyProjection(ge,be),be[0]>-1){if(C&&(Pe[0]||Pe[1])&&(be[0]+=Pe[0]*r.pixelRatio,0!==Pe[1]&&(be[1]+=me.alignmentEvaluator.apply(Pe[1])*r.pixelRatio),r.unapplyProjection(be,ge)),be[0]+=n.screenOffset[0]*r.pixelRatio,be[1]+=n.screenOffset[1]*r.pixelRatio,be[0]=Math.floor(be[0]),be[1]=Math.floor(be[1]),Be[0]=P[0],Be[1]=P[1],null!=d){const e=i*d.size;Be[0]*=d.data[e],Be[1]*=d.data[e+1]}me.evaluator.applyVec2(Be,Be);let t=0;if(n.textureIsSignedDistanceField){t=Math.min(n.outlineSize,.5*Be[0])*r.pixelRatio/2}Be[0]*=c,Be[1]*=f,h(e.centerView,ge),g(e.renderScreenPosition,be[0],be[1],be[2]),a(e.screenSize,Be),e.pixelRatioTolerance=Le*r.pixelRatio,e.halfOutlineSize=t,e.rotationAngle=n.rotation+(null!=z?z.data[i*z.size]:0),e.anchor=se(n),yield e}}}*_forEachDrapedHUDInstance(e,t){const s=t.attributes.get("position"),i=t.attributes.get("size"),r=t.attributes.get("rotation"),n=this.parameters,o=n.size,l=t.attributes.get("featureAttribute"),c=null==l?null:V(l.data,Re),{scaleX:f,scaleY:h}=Ge(c,n,t.screenToWorldRatio);e.pixelRatioTolerance=Ee*t.screenToWorldRatio,e.anchor=se(n);for(let p=0;p<s.data.length/s.size;p++){const l=p*s.size;if(e.x=s.data[l],e.y=s.data[l+1],Be[0]=o[0],Be[1]=o[1],null!=i){const e=p*i.size;Be[0]*=i.data[e],Be[1]*=i.data[e+1]}if(e.halfOutlineSize=0,n.textureIsSignedDistanceField){const s=Math.min(n.outlineSize,.5*Be[0]);e.halfOutlineSize=s*t.screenToWorldRatio/2}Be[0]*=f,Be[1]*=h,a(e.screenSize,Be),e.rotationAngle=n.rotation+(null!=r?r.data[p*r.size]:0),yield e}}intersectRayDraped(e,t,s,i,r){const a=this.parameters;for(const{x:n,y:o,screenSize:l,pixelRatioTolerance:c,halfOutlineSize:f,rotationAngle:h,anchor:p}of this._forEachDrapedHUDInstance(Fe,e))pe(s,n,o,l,c,f,h,a,p)&&i(r.distance,r.normal,-1)}intersectScreenPolygon(e,t,s,i){const{options:{selectionMode:r,hud:a,excludeLabels:n},camera:o}=s,{parameters:l}=this;if(!r||!a||n&&l.isLabel||!e.visible||null==t)return null;const c=new N(1),f=1/o.pixelRatio;for(const{renderScreenPosition:h,screenSize:p,pixelRatioTolerance:u,halfOutlineSize:g,rotationAngle:S,anchor:b,centerView:x}of this._forEachScreenSpaceHUDInstance(_e,e,t,o)){const e=m(ge,x,o.inverseViewMatrix);if(!s.screenPolygonPrimitiveProcessor?.validatePoint(e))continue;const t=h[0]*f,r=(o.fullHeight-h[1])*f;if(Ue[0]=p[0]*f,Ue[1]=p[1]*f,ue(i,t,r,Ue,u*f,g*f,S,l,b)){const t=d(o.eye,e);c.updateIfCloserFromValues(t,-1,e,null)}}return c.valid?c:null}createBufferWriter(){return new Ne(this.parameters)}applyShaderOffsets(e,t,s,r,a,n,o,l){x(ve,s,i(ye,r));const c=he(ve,o,Ie),f=qe(p(t),o),h=Xe(this.parameters,t,c.cosAngle,o,l);v(t,t,c.normal,h+f),v(e,e,ve,h+f);const u=n+h;this._applyPolygonOffsetView(t,c,u,o,t),this._applyCenterOffsetView(t,a,t)}applyShaderOffsetsNDC(e,t,s,i,r,a){return this._applyCenterOffsetNDC(e,t,i,r),null!=a&&h(a,r),this._applyPolygonOffsetNDC(r,s,i,r),r}_applyPolygonOffsetView(t,s,i,r,a){const n=r.aboveGround?1:-1;let o=Math.sign(i);0===o&&(o=n);const l=n*o;if(this.parameters.shaderPolygonOffset<=0)return h(a,t);const c=e(Math.abs(s.cosAngle),.01,1),f=1-Math.sqrt(1-c*c)/c/r.viewport[2];return u(a,t,l>0?f:1/f),a}_applyCenterOffsetView(e,t,s){const i="screen"!==this.parameters.centerOffsetUnits;return s!==e&&h(s,e),i&&(s[0]+=t[0],s[1]+=t[1],t[2]&&(S(Se,s),O(s,s,u(Se,Se,t[2])))),s}_applyCenterOffsetNDC(e,t,s,i){const r="screen"!==this.parameters.centerOffsetUnits;return i!==e&&h(i,e),r||(i[0]+=t[0]/s.fullWidth*2,i[1]+=t[1]/s.fullHeight*2),i}_applyPolygonOffsetNDC(e,t,s,i){const r=this.parameters.shaderPolygonOffset;if(e!==i&&h(i,e),r){const e=s.aboveGround?1:-1,a=e*Math.sign(t);i[2]-=(a||e)*r}return i}set visible(e){this._visible=e}get visible(){const{color:e,outlineSize:t,outlineColor:s}=this.parameters,i=e[3]>=oe||t>=oe&&s[3]>=oe;return this._visible&&i}createGLMaterial(e){return new ce(e)}calculateRelativeScreenBounds(e,t,s=D()){return fe(this.parameters,e,t,s),s[2]=s[0]+e[0],s[3]=s[1]+e[1],s}}class ce extends E{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.getTechnique(ae,e)}}function fe(e,t,s,i){i[0]=e.anchorPosition[0]*-t[0]+e.screenOffset[0]*s,i[1]=e.anchorPosition[1]*-t[1]+e.screenOffset[1]*s}function he(e,t,s){return m(s.normal,e,t.viewInverseTransposeMatrix),s.cosAngle=z(s.normal,He),s}function pe(e,s,i,r,a,l,c,f,h){const p=de(s,i,r,a,l,f,h,Ce);return n(ze,s,i),o(Oe,e,ze,t(c)),Oe[0]>p[0]&&Oe[0]<p[2]&&Oe[1]>p[1]&&Oe[1]<p[3]}function ue(e,s,i,r,a,l,c,f,h){const p=de(s,i,r,a,l,f,h,Ce,!0);if(n(De,p[0],p[1]),n(we,p[2],p[1]),n(Ae,p[2],p[3]),n(je,p[0],p[3]),0!==c){const e=t(c);n(ze,s,i),o(De,De,ze,e),o(we,we,ze,e),o(Ae,Ae,ze,e),o(je,je,ze,e),w(p),A(p,De),A(p,we),A(p,Ae),A(p,je)}return!!H(e,p)&&(W(e,De,we,Ae)||W(e,De,Ae,je))}function de(e,t,s,i,r,a,n,o,l=!1){let c=e-i-s[0]*n[0],f=c+s[0]+2*i;const h=l?1-n[1]:n[1];let p=t-i-s[1]*h,u=p+s[1]+2*i;const d=a.distanceFieldBoundingBox;return a.textureIsSignedDistanceField&&null!=d&&(c+=s[0]*d[0],p+=s[1]*(l?1-d[3]:d[1]),f-=s[0]*(1-d[2]),u-=s[1]*(l?d[1]:1-d[3]),c-=r,f+=r,p-=r,u+=r),o[0]=c,o[1]=p,o[2]=f,o[3]=u,o}const me=new G,ge=y(),Se=y(),be=C(),xe=s(),ve=y(),Oe=f(),ze=f(),ye=r(),Pe=y(),Ve=y(),Re=C(),Ce=D(),De=f(),we=f(),Ae=f(),je=f(),Ue=f();class Me{constructor(){this.renderScreenPosition=y(),this.screenSize=f(),this.centerView=y(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=f()}}class Te{constructor(){this.x=0,this.y=0,this.screenSize=f(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=f()}}const _e=new Me,Fe=new Te,Ie={normal:y(),cosAngle:0},Le=1,Ee=2,Be=c(0,0),He=P(0,0,1);class We extends L{constructor(){super(...arguments),this.renderOccluded=1,this.testsTransparentRenderOrder=0,this.isDecoration=!1,this.color=R,this.size=l,this.polygonOffset=0,this.anchorPosition=c(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=R,this.outlineSize=0,this.distanceFieldBoundingBox=C(),this.rotation=0,this.hasRotation=!1,this.vvSizeEnabled=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.hasVertexColor=!1,this.hasVertexSize=!1,this.hasVertexRotation=!1,this.hasVertexUVi=!1,this.hasVertexCenterOffset=!1,this.hasSlicePlane=!1,this.pixelSnappingEnabled=!0,this.centerOffsetUnits="world",this.drawAsLabel=!1,this.depthEnabled=!0,this.focusAreaStyle=null,this.draped=!1,this.isLabel=!1}get hasVVSize(){return!!this.vvSize}get hasVVColor(){return!!this.vvColor}get hasVVOpacity(){return!!this.vvOpacity}}class Ne{constructor(e){this.baseInstanceLayout=ie,this.layout=re(e)}elementCount(e){return e.get("position").indices.length}elementCountBaseInstance(e){return e.get("uv0").indices.length}write(e,t,s,i,r){if(null==r)return;const{buffer:a,offset:n}=r,{position:o,normal:l,color:c,size:f,rotation:h,centerOffset:p,groundDistance:u,featureAttribute:d,uvi:m}=a;X(s.get("position"),e,o,n),Y(s.get("normal"),t,l,n);const g=s.get("position").indices.length;if(m){const e=s.get("uvi")?.data;if(e&&e.length>=4){const[t,s,i,r]=e;for(let e=0;e<g;++e){const a=n+e;m.setValues(a,t,s,i,r)}}}if(c&&k(s.get("color"),4,c,n),f&&J(s.get("size"),f,n),h&&K(s.get("rotation"),h,n),p&&(s.get("centerOffset")?Q(s.get("centerOffset"),p,n):Z(p,n,g)),s.get("groundDistance")?K(s.get("groundDistance"),u,n):Z(u,n,g),d&&(s.get("featureAttribute")?$(s.get("featureAttribute"),d,n):Z(d,n,g)),null!=i){const e=s.get("position")?.indices;if(e){const t=e.length,s=a.getField("olidColor",j);ee(i,s,t,n)}}}writeBaseInstance(e,t){const{uv0:s}=t;J(e.get("uv0"),s,0)}}function Ge(e,t,s){return null==e||null==t.vvSize?{scaleX:s,scaleY:s}:(U(Ve,t,e),{scaleX:Ve[0]*s,scaleY:Ve[1]*s})}function qe(e,t){const s=t.computeRenderPixelSizeAtDist(e)*I;return(t.aboveGround?1:-1)*s}function Xe(e,t,s,i,r){if(!e.verticalOffset?.screenLength){const i=p(t);return r.update(s,i,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),0}const a=p(t),n=e.screenSizePerspectiveAlignment??e.screenSizePerspective,o=te(i,a,e.verticalOffset,s,n,e.screenSizePerspectiveMinPixelReferenceSize);return r.update(s,a,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),o}export{le as HUDMaterial,We as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{set as t,squaredDistance as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isColor as s}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{Material as a}from"../lib/Material.js";import{writePosition as n,writeBufferFloat as o}from"./internal/bufferWriterUtils.js";import{attributeDrivenInstanceLayout as u,instanceLayout as c,HeatmapDensityPassParameters as l,HeatmapDensityTechnique as f,baseLayout as m}from"../shaders/HeatmapDensityTechnique.js";import{HeatmapDensityTechniqueConfiguration as p}from"../shaders/HeatmapDensityTechniqueConfiguration.js";const h=2;class b extends l{constructor(){super(...arguments),this.isAttributeDriven=!1,this.usesHalfFloats=!1}}class d extends a{constructor(t){super(t,b),this.visible=!0,this.produces=new Map([[18,t=>s(t)]]),this._configuration=new p}updateConfiguration(t){super.updateConfiguration(t),this._configuration.isAttributeDriven=this.parameters.isAttributeDriven,this._configuration.usesHalfFloat=this.parameters.usesHalfFloats}createGLMaterial(t){return new g(t)}intersectRay(){}intersectRayDraped(r,s,i,a,n){const o=r.attributes.get("position"),{parameters:u}=this,{searchRadius:c}=u,{screenToWorldRatio:l}=r,f=c*l+h*l,m=f*f,p=o.data.length/o.size;for(let h=0;h<p;h++){const r=h*o.size,s=t(v,o.data[r],o.data[r+1]);e(s,i)<m&&a(n.distance,n.normal,-1)}}intersectScreenPolygon(){return null}createBufferWriter(){return new j(this.parameters.isAttributeDriven?u:c)}}class g extends i{beginSlot(t){return this.getTechnique(f,t)}}class j{constructor(t){this.layout=t,this.baseInstanceLayout=m}elementCount(t){return t.get("position").indices.length}elementCountBaseInstance(){return 4}write(t,e,r,s,i){const{buffer:a,offset:u}=i;n(r.get("position"),t,a.position,u);const c="featureAttribute"in a?a.featureAttribute:null;c&&o(r.get("featureAttribute"),c,u)}writeBaseInstance(t,e){const r=e.uv0;r.setValues(0,-1,-1),r.setValues(1,-1,1),r.setValues(2,1,-1),r.setValues(3,1,1)}}const v=r();export{d as HeatmapDensityMaterial,b as Parameters};
|
|
2
|
+
import{set as t,squaredDistance as e}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isColor as s}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{Material as a}from"../lib/Material.js";import{writePosition as n,writeBufferFloat as o}from"./internal/bufferWriterUtils.js";import{attributeDrivenInstanceLayout as u,instanceLayout as c,HeatmapDensityPassParameters as l,HeatmapDensityTechnique as f,baseLayout as m}from"../shaders/HeatmapDensityTechnique.js";import{HeatmapDensityTechniqueConfiguration as p}from"../shaders/HeatmapDensityTechniqueConfiguration.js";const h=2;class b extends l{constructor(){super(...arguments),this.isAttributeDriven=!1,this.usesHalfFloats=!1}}class d extends a{constructor(t){super(t,b),this.visible=!0,this.produces=new Map([[18,t=>s(t)]]),this._configuration=new p}updateConfiguration(t){super.updateConfiguration(t),this._configuration.isAttributeDriven=this.parameters.isAttributeDriven,this._configuration.usesHalfFloat=this.parameters.usesHalfFloats}createGLMaterial(t){return new g(t)}intersectRay(){}intersectRayDraped(r,s,i,a,n){const o=r.attributes.get("position"),{parameters:u}=this,{searchRadius:c}=u,{screenToWorldRatio:l}=r,f=c*l+h*l,m=f*f,p=o.data.length/o.size;for(let h=0;h<p;h++){const r=h*o.size,s=t(v,o.data[r],o.data[r+1]);e(s,i)<m&&a(n.distance,n.normal,-1)}}intersectScreenPolygon(){return null}createBufferWriter(){return new j(this.parameters.isAttributeDriven?u:c)}}class g extends i{beginSlot(t){return this.getTechnique(f,t)}}class j{constructor(t){this.layout=t,this.baseInstanceLayout=m}elementCount(t){return t.get("position").indices.length}elementCountBaseInstance(){return 4}write(t,e,r,s,i){if(null==i)return;const{buffer:a,offset:u}=i;n(r.get("position"),t,a.position,u);const c="featureAttribute"in a?a.featureAttribute:null;c&&o(r.get("featureAttribute"),c,u)}writeBaseInstance(t,e){const r=e.uv0;r.setValues(0,-1,-1),r.setValues(1,-1,1),r.setValues(2,1,-1),r.setValues(3,1,1)}}const v=r();export{d as HeatmapDensityMaterial,b as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{BufferViewFloat as e}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as t,isColor as r}from"../core/shaderLibrary/ShaderOutput.js";import s from"../lib/GLMaterial.js";import{isUpdatableTexture as i}from"../lib/IManagedTexture.js";import{assert as a}from"../lib/Util.js";import{DefaultBufferWriter as o}from"./DefaultBufferWriter.js";import{TriangleMaterialParameters as n,TriangleMaterial as u}from"./TriangleMaterial.js";import{writeBufferFloat as p,writeAttribute as c}from"./internal/bufferWriterUtils.js";import{getLayout as l,ImageMaterialTechnique as m}from"../shaders/ImageMaterialTechnique.js";import{ImageMaterialTechniqueConfiguration as f}from"../shaders/ImageMaterialTechniqueConfiguration.js";class h extends u{constructor(e){super(e,x),this.supportsEdges=!0,this.transparent=!0,this.visible=!0,this.produces=new Map([[2,e=>t(e)],[8,e=>r(e)],[18,e=>r(e)||t(e)]]),this._configuration=new f(e.draped)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.cullFace=this.parameters.cullFace,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasOccludees=e.hasOccludees,this._configuration.perspectiveInterpolation=this.parameters.perspectiveInterpolation}createGLMaterial(e){return new d(e)}createBufferWriter(){return new g(l(this.parameters))}}class d extends s{constructor(e){super({...e,...e.material.parameters}),this.parameters=e;const t=this._material.parameters.managedTexture;i(t)&&e.textures.updater.add(t)}dispose(){this.parameters.textures.updater.remove(this._material.parameters.managedTexture)}beginSlot(e){return this.getTechnique(m,e)}}class g extends o{write(t,r,s,i,o){const{buffer:n,offset:u}=o;for(const l of this.layout.fields.keys()){const i=s.get(l);if(i)if("perspectiveDivide"===l){a(1===i.size);const t=n.getField(l,e);t&&p(i,t,u)}else c(l,i,t,r,n,u)}}}class x extends n{constructor(e,t){super(),this.managedTexture=e,this.draped=t,this.hasSlicePlane=!1,this.cullFace=0,this.opacity=1,this.perspectiveInterpolation=!1}get texture(){return this.managedTexture.texture}}export{h as ImageMaterial,x as Parameters};
|
|
2
|
+
import{BufferViewFloat as e}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as t,isColor as r}from"../core/shaderLibrary/ShaderOutput.js";import s from"../lib/GLMaterial.js";import{isUpdatableTexture as i}from"../lib/IManagedTexture.js";import{assert as a}from"../lib/Util.js";import{DefaultBufferWriter as o}from"./DefaultBufferWriter.js";import{TriangleMaterialParameters as n,TriangleMaterial as u}from"./TriangleMaterial.js";import{writeBufferFloat as p,writeAttribute as c}from"./internal/bufferWriterUtils.js";import{getLayout as l,ImageMaterialTechnique as m}from"../shaders/ImageMaterialTechnique.js";import{ImageMaterialTechniqueConfiguration as f}from"../shaders/ImageMaterialTechniqueConfiguration.js";class h extends u{constructor(e){super(e,x),this.supportsEdges=!0,this.transparent=!0,this.visible=!0,this.produces=new Map([[2,e=>t(e)],[8,e=>r(e)],[18,e=>r(e)||t(e)]]),this._configuration=new f(e.draped)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.cullFace=this.parameters.cullFace,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasOccludees=e.hasOccludees,this._configuration.perspectiveInterpolation=this.parameters.perspectiveInterpolation}createGLMaterial(e){return new d(e)}createBufferWriter(){return new g(l(this.parameters))}}class d extends s{constructor(e){super({...e,...e.material.parameters}),this.parameters=e;const t=this._material.parameters.managedTexture;i(t)&&e.textures.updater.add(t)}dispose(){this.parameters.textures.updater.remove(this._material.parameters.managedTexture)}beginSlot(e){return this.getTechnique(m,e)}}class g extends o{write(t,r,s,i,o){if(null==o)return;const{buffer:n,offset:u}=o;for(const l of this.layout.fields.keys()){const i=s.get(l);if(i)if("perspectiveDivide"===l){a(1===i.size);const t=n.getField(l,e);t&&p(i,t,u)}else c(l,i,t,r,n,u)}}}class x extends n{constructor(e,t){super(),this.managedTexture=e,this.draped=t,this.hasSlicePlane=!1,this.cullFace=0,this.opacity=1,this.perspectiveInterpolation=!1}get texture(){return this.managedTexture.texture}}export{h as ImageMaterial,x as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{safeToString as e}from"../../../../core/string.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isColor as r}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{Material as s,MaterialParameters as n}from"../lib/Material.js";import{writeBufferVec2 as a,writePosition as o,writeNormal as
|
|
2
|
+
import{safeToString as e}from"../../../../core/string.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isColor as r}from"../core/shaderLibrary/ShaderOutput.js";import i from"../lib/GLMaterial.js";import{Material as s,MaterialParameters as n}from"../lib/Material.js";import{writeBufferVec2 as a,writePosition as o,writeNormal as l,writeBufferVec3 as c,writeBufferFloat as u}from"./internal/bufferWriterUtils.js";import{LineCalloutTechnique as h,layout as f,baseLayout as p}from"../shaders/LineCalloutTechnique.js";import{LineCalloutTechniqueConfiguration as d}from"../shaders/LineCalloutTechniqueConfiguration.js";import{alphaCutoff as g}from"../../../../webscene/support/AlphaCutoff.js";class m extends s{constructor(e,t){super(e,$),this.intersectRayDraped=void 0,this.produces=new Map([[15,e=>r(e)],[16,e=>r(e)]]),this._configuration=new d(t),this._uniqueMaterialIdentifier=S(this.parameters)}passParameters(){return this.parameters}updateConfiguration(e){super.updateConfiguration(e),this._configuration.hasVerticalOffset=null!=this.parameters.verticalOffset,this._configuration.hasScreenSizePerspective=null!=this.parameters.screenSizePerspective,this._configuration.hudDepth=16===e.slot,this._configuration.hudDepthAlignStart=!!this.parameters.hudDepthAlignStart,this._configuration.screenCenterOffsetUnitsEnabled="screen"===this.parameters.centerOffsetUnits,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane}get visible(){return this.parameters.color[3]>=g||(this.parameters.borderColor?.[3]??0)>=g}intersectRay(){}intersectScreenPolygon(){return null}createGLMaterial(e){return new O(e)}createBufferWriter(){return new b}validateParameters(e){this._uniqueMaterialIdentifier=S(e)}get uniqueMaterialIdentifier(){return this._uniqueMaterialIdentifier}}function S({renderOccluded:t,isDecoration:r,horizontalScreenOffset:i,color:s,size:n,shaderPolygonOffset:a,hudDepthAlignStart:o,centerOffsetUnits:l,hasSlicePlane:c,screenSizePerspective:u,verticalOffset:h,borderColor:f}){return e`${t}:${r}:${i}:[${s}]:${n}:${a}:${o}:${l}:${c}:${null!=u}:{${h?.screenLength}:${h?.minWorldLength}:${h?.maxWorldLength}}:[${f}]`}class O extends i{beginSlot(e){return this.getTechnique(h,e)}}class $ extends n{constructor(){super(...arguments),this.horizontalScreenOffset=0,this.color=t(0,0,0,1),this.size=1,this.shaderPolygonOffset=1e-5,this.hudDepthAlignStart=!1,this.centerOffsetUnits="world",this.hasSlicePlane=!1}}class b{constructor(){this.layout=f,this.baseInstanceLayout=p}elementCount(e){return e.get("position").indices.length}elementCountBaseInstance(e){return e.get("uv0").indices.length}writeBaseInstance(e,t){const{uv0:r}=t;a(e.get("uv0"),r,0)}write(e,t,r,i,s){if(null==s)return;const{buffer:n,offset:a}=s;o(r.get("position"),e,n.position,a),l(r.get("normal"),t,n.normal,a),c(r.get("centerOffset"),n.centerOffset,a),u(r.get("groundDistance"),n.groundDistance,a)}}export{m as LineCalloutMaterial,$ as Parameters,S as uniqueMaterialIdentifier};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{set as e,equals as t,transformMat4 as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{makeFloat16Array as s}from"../../../../geometry/support/float16.js";import{isColor as a,isDepth as o,isColorHighlightOLIDOrDepth as n}from"../core/shaderLibrary/ShaderOutput.js";import h from"../lib/GLMaterial.js";import{Material as c}from"../lib/Material.js";import{VisualVariablePassParameters as l}from"./VisualVariablePassParameters.js";import{writeDeltaF16Vector as m}from"./internal/bufferWriterUtils.js";import{getLayout as p,LineMarkerTechnique as u}from"../shaders/LineMarkerTechnique.js";import{LineMarkerTechniqueConfiguration as d}from"../shaders/LineMarkerTechniqueConfiguration.js";import{alphaCutoff as f}from"../../../../webscene/support/AlphaCutoff.js";class g extends c{constructor(e,t){super(e,v),this.produces=new Map([[2,e=>10===e||a(e)&&8===this.parameters.renderOccluded],[3,e=>o(e)],[10,e=>n(e)&&8===this.parameters.renderOccluded],[11,e=>n(e)&&8===this.parameters.renderOccluded],[4,e=>a(e)],[18,e=>a(e)||10===e]]),this.intersectRayDraped=void 0,this._configuration=new d(t)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.space=18===e.slot?0:this.parameters.worldSpace?2:1,this._configuration.hideOnShortSegments=this.parameters.hideOnShortSegments,this._configuration.hasCap=0!==this.parameters.cap,this._configuration.anchor=this.parameters.anchor,this._configuration.hasTip=this.parameters.hasTip,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasOccludees=e.hasOccludees,this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.occluder=8===this.parameters.renderOccluded,this._configuration.hasScreenSizePerspective=null!=this.parameters.screenSizePerspective}get visible(){return this.parameters.color[3]>=f}intersectRay(){}intersectScreenPolygon(){return null}createBufferWriter(){return new S(p(this.parameters),this.parameters)}createGLMaterial(e){return new _(e)}}class _ extends h{dispose(){super.dispose(),this._markerTextures?.release(this._markerPrimitive),this._markerPrimitive=null}beginSlot(e){const t=this._material.parameters.markerPrimitive;return t!==this._markerPrimitive&&(this._material.setParameters({markerTexture:this._markerTextures.swap(t,this._markerPrimitive)}),this._markerPrimitive=t),this.getTechnique(u,e)}}class v extends l{constructor(){super(...arguments),this.width=0,this.color=[1,1,1,1],this.markerPrimitive="arrow",this.placement="end",this.cap=0,this.anchor=0,this.hasTip=!1,this.worldSpace=!1,this.hideOnShortSegments=!1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.stipplePattern=null,this.markerTexture=null}}class S{constructor(e,t){this.layout=e,this._parameters=t}elementCount(){return"begin-end"===this._parameters.placement?12:6}write(i,a,o,n,h){const{buffer:c,offset:l}=h,p=o.get("position").data,u=p.length/3;let d=[1,0,0];const f=o.get("normal");this._parameters.worldSpace&&null!=f&&(d=f.data);let g=1,_=0;this._parameters.vvSize?_=o.get("sizeFeatureAttribute").data[0]:o.has("size")&&(g=o.get("size").data[0]);let v=[1,1,1,1],S=0;this._parameters.vvColor?S=o.get("colorFeatureAttribute").data[0]:o.has("color")&&(v=o.get("color").data);let w=0;this._parameters.vvOpacity&&(w=o.get("opacityFeatureAttribute").data[0]);const y=new Float32Array(c.buffer),O=s(c.buffer),T=new Uint8Array(c.buffer);let V=l*(this.layout.stride/4);const k=y.BYTES_PER_ELEMENT/O.BYTES_PER_ELEMENT,j=4/k,M=(e,t,r,i)=>{y[V++]=e[0],y[V++]=e[1],y[V++]=e[2],m(t,e,O,V*k),V+=j;let s=V*k;if(O[s++]=r[0],O[s++]=r[1],V=Math.ceil(s/k),this._parameters.vvColor)y[V++]=S;else{const e=Math.min(4*i,v.length-4),t=4*V++;T[t]=255*v[e],T[t+1]=255*v[e+1],T[t+2]=255*v[e+2],T[t+3]=255*v[e+3]}this._parameters.vvOpacity&&(y[V++]=w),s=V*k,this._parameters.vvSize?(y[V++]=_,s+=2):O[s++]=g,this._parameters.worldSpace&&(O[s++]=d[0],O[s++]=d[1],O[s++]=d[2]),V=Math.ceil(s/k)},x=(s,a)=>{const o=e(b,p[3*s],p[3*s+1],p[3*s+2]),n=P;let h=s+a;do{e(n,p[3*h],p[3*h+1],p[3*h+2]),h+=a}while(t(o,n)&&h>=0&&h<u);i&&(r(o,o,i),r(n,n,i)),M(o,n,[-1,-1],s),M(o,n,[1,-1],s),M(o,n,[1,1],s),M(o,n,[-1,-1],s),M(o,n,[1,1],s),M(o,n,[-1,1],s)},C=this._parameters.placement;"begin"!==C&&"begin-end"!==C||x(0,1),"end"!==C&&"begin-end"!==C||x(u-1,-1)}}const b=i(),P=i();export{g as LineMarkerMaterial,v as Parameters};
|
|
2
|
+
import{set as e,equals as t,transformMat4 as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{makeFloat16Array as s}from"../../../../geometry/support/float16.js";import{isColor as a,isDepth as o,isColorHighlightOLIDOrDepth as n}from"../core/shaderLibrary/ShaderOutput.js";import h from"../lib/GLMaterial.js";import{Material as c}from"../lib/Material.js";import{VisualVariablePassParameters as l}from"./VisualVariablePassParameters.js";import{writeDeltaF16Vector as m}from"./internal/bufferWriterUtils.js";import{getLayout as p,LineMarkerTechnique as u}from"../shaders/LineMarkerTechnique.js";import{LineMarkerTechniqueConfiguration as d}from"../shaders/LineMarkerTechniqueConfiguration.js";import{alphaCutoff as f}from"../../../../webscene/support/AlphaCutoff.js";class g extends c{constructor(e,t){super(e,v),this.produces=new Map([[2,e=>10===e||a(e)&&8===this.parameters.renderOccluded],[3,e=>o(e)],[10,e=>n(e)&&8===this.parameters.renderOccluded],[11,e=>n(e)&&8===this.parameters.renderOccluded],[4,e=>a(e)],[18,e=>a(e)||10===e]]),this.intersectRayDraped=void 0,this._configuration=new d(t)}updateConfiguration(e){super.updateConfiguration(e),this._configuration.space=18===e.slot?0:this.parameters.worldSpace?2:1,this._configuration.hideOnShortSegments=this.parameters.hideOnShortSegments,this._configuration.hasCap=0!==this.parameters.cap,this._configuration.anchor=this.parameters.anchor,this._configuration.hasTip=this.parameters.hasTip,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasOccludees=e.hasOccludees,this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.occluder=8===this.parameters.renderOccluded,this._configuration.hasScreenSizePerspective=null!=this.parameters.screenSizePerspective}get visible(){return this.parameters.color[3]>=f}intersectRay(){}intersectScreenPolygon(){return null}createBufferWriter(){return new S(p(this.parameters),this.parameters)}createGLMaterial(e){return new _(e)}}class _ extends h{dispose(){super.dispose(),this._markerTextures?.release(this._markerPrimitive),this._markerPrimitive=null}beginSlot(e){const t=this._material.parameters.markerPrimitive;return t!==this._markerPrimitive&&(this._material.setParameters({markerTexture:this._markerTextures.swap(t,this._markerPrimitive)}),this._markerPrimitive=t),this.getTechnique(u,e)}}class v extends l{constructor(){super(...arguments),this.width=0,this.color=[1,1,1,1],this.markerPrimitive="arrow",this.placement="end",this.cap=0,this.anchor=0,this.hasTip=!1,this.worldSpace=!1,this.hideOnShortSegments=!1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.stipplePattern=null,this.markerTexture=null}}class S{constructor(e,t){this.layout=e,this._parameters=t}elementCount(){return"begin-end"===this._parameters.placement?12:6}write(i,a,o,n,h){if(null==h)return;const{buffer:c,offset:l}=h,p=o.get("position").data,u=p.length/3;let d=[1,0,0];const f=o.get("normal");this._parameters.worldSpace&&null!=f&&(d=f.data);let g=1,_=0;this._parameters.vvSize?_=o.get("sizeFeatureAttribute").data[0]:o.has("size")&&(g=o.get("size").data[0]);let v=[1,1,1,1],S=0;this._parameters.vvColor?S=o.get("colorFeatureAttribute").data[0]:o.has("color")&&(v=o.get("color").data);let w=0;this._parameters.vvOpacity&&(w=o.get("opacityFeatureAttribute").data[0]);const y=new Float32Array(c.buffer),O=s(c.buffer),T=new Uint8Array(c.buffer);let V=l*(this.layout.stride/4);const k=y.BYTES_PER_ELEMENT/O.BYTES_PER_ELEMENT,j=4/k,M=(e,t,r,i)=>{y[V++]=e[0],y[V++]=e[1],y[V++]=e[2],m(t,e,O,V*k),V+=j;let s=V*k;if(O[s++]=r[0],O[s++]=r[1],V=Math.ceil(s/k),this._parameters.vvColor)y[V++]=S;else{const e=Math.min(4*i,v.length-4),t=4*V++;T[t]=255*v[e],T[t+1]=255*v[e+1],T[t+2]=255*v[e+2],T[t+3]=255*v[e+3]}this._parameters.vvOpacity&&(y[V++]=w),s=V*k,this._parameters.vvSize?(y[V++]=_,s+=2):O[s++]=g,this._parameters.worldSpace&&(O[s++]=d[0],O[s++]=d[1],O[s++]=d[2]),V=Math.ceil(s/k)},x=(s,a)=>{const o=e(b,p[3*s],p[3*s+1],p[3*s+2]),n=P;let h=s+a;do{e(n,p[3*h],p[3*h+1],p[3*h+2]),h+=a}while(t(o,n)&&h>=0&&h<u);i&&(r(o,o,i),r(n,n,i)),M(o,n,[-1,-1],s),M(o,n,[1,-1],s),M(o,n,[1,1],s),M(o,n,[-1,-1],s),M(o,n,[1,1],s),M(o,n,[-1,1],s)},C=this._parameters.placement;"begin"!==C&&"begin-end"!==C||x(0,1),"end"!==C&&"begin-end"!==C||x(u-1,-1)}}const b=i(),P=i();export{g as LineMarkerMaterial,v as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{set as t,normalize as e,subtract as r,cross as s,distance as o,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isColor as c}from"../core/shaderLibrary/ShaderOutput.js";import l from"../lib/GLMaterial.js";import{Material as u,MaterialParameters as p}from"../lib/Material.js";import{MeasurementArrowTechnique as f,layout as h}from"../shaders/MeasurementArrowTechnique.js";import{MeasurementArrowTechniqueConfiguration as m}from"../shaders/MeasurementArrowTechniqueConfiguration.js";import{alphaCutoff as d}from"../../../../webscene/support/AlphaCutoff.js";class g extends u{constructor(t){super(t,b),this._configuration=new m,this.intersectRayDraped=void 0,this.produces=new Map([[2,t=>!this._transparent&&c(t)],[8,t=>this._transparent&&c(t)]])}updateConfiguration(t){super.updateConfiguration(t),this._configuration.enableOITOffset=t.enableOITOffset,this._configuration.transparent=this._transparent,this._configuration.writeDepth=2===t.slot}get visible(){const{outlineColor:t,stripeEvenColor:e,stripeOddColor:r}=this.parameters;return t[3]>=d||e[3]>=d||r[3]>=d}intersectRay(){}intersectScreenPolygon(){return null}createGLMaterial(t){return new C(t)}createBufferWriter(){return new _}get _transparent(){const{parameters:t}=this;return t.outlineColor[3]<1||t.stripeEvenColor[3]<1||t.stripeOddColor[3]<1}}class C extends l{beginSlot(t){return this.getTechnique(f,t)}}class b extends p{constructor(){super(...arguments),this.width=32,this.outlineSize=.2,this.outlineColor=a(1,.5,0,1),this.stripeEvenColor=a(1,1,1,1),this.stripeOddColor=a(1,.5,0,1),this.stripeLength=1}}const w=n(),j=n(),v=n(),M=n(),O=n();class _{constructor(){this.layout=h}elementCount(t){return 2*(t.get("position").indices.length/2+1)}write(n,a,c,l,u){const{buffer:p,offset:f}=u,{data:h,indices:m}=c.get("position"),d=c.get("normal").data,g=h.length/3;m&&m.length!==2*(g-1)&&console.warn("MeasurementArrowMaterial does not support indices");const C=w,b=j,_=v,x=M,y=O,T=p.position,A=p.normal,L=p.uv0;let S=0;for(let w=0;w<g;++w){const c=3*w;if(t(C,h[c],h[c+1],h[c+2]),w<g-1){const o=3*(w+1);t(b,h[o],h[o+1],h[o+2]),t(y,d[o],d[o+1],d[o+2]),e(y,y),r(_,b,C),e(_,_),s(x,y,_),e(x,x)}const l=o(C,b);n&&a&&(i(C,C,n),i(b,b,n),i(x,x,a));const u=f+2*w,p=u+1;T.setVec(u,C),T.setVec(p,C),A.setVec(u,x),A.setVec(p,x),L.set(u,0,S),L.set(u,1,-1),L.set(p,0,S),L.set(p,1,1),w<g-1&&(S+=l)}const V=p.length;for(let t=0;t<2*g;++t)V.set(f+t,S)}}export{g as MeasurementArrowMaterial,b as Parameters};
|
|
2
|
+
import{set as t,normalize as e,subtract as r,cross as s,distance as o,transformMat4 as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{isColor as c}from"../core/shaderLibrary/ShaderOutput.js";import l from"../lib/GLMaterial.js";import{Material as u,MaterialParameters as p}from"../lib/Material.js";import{MeasurementArrowTechnique as f,layout as h}from"../shaders/MeasurementArrowTechnique.js";import{MeasurementArrowTechniqueConfiguration as m}from"../shaders/MeasurementArrowTechniqueConfiguration.js";import{alphaCutoff as d}from"../../../../webscene/support/AlphaCutoff.js";class g extends u{constructor(t){super(t,b),this._configuration=new m,this.intersectRayDraped=void 0,this.produces=new Map([[2,t=>!this._transparent&&c(t)],[8,t=>this._transparent&&c(t)]])}updateConfiguration(t){super.updateConfiguration(t),this._configuration.enableOITOffset=t.enableOITOffset,this._configuration.transparent=this._transparent,this._configuration.writeDepth=2===t.slot}get visible(){const{outlineColor:t,stripeEvenColor:e,stripeOddColor:r}=this.parameters;return t[3]>=d||e[3]>=d||r[3]>=d}intersectRay(){}intersectScreenPolygon(){return null}createGLMaterial(t){return new C(t)}createBufferWriter(){return new _}get _transparent(){const{parameters:t}=this;return t.outlineColor[3]<1||t.stripeEvenColor[3]<1||t.stripeOddColor[3]<1}}class C extends l{beginSlot(t){return this.getTechnique(f,t)}}class b extends p{constructor(){super(...arguments),this.width=32,this.outlineSize=.2,this.outlineColor=a(1,.5,0,1),this.stripeEvenColor=a(1,1,1,1),this.stripeOddColor=a(1,.5,0,1),this.stripeLength=1}}const w=n(),j=n(),v=n(),M=n(),O=n();class _{constructor(){this.layout=h}elementCount(t){return 2*(t.get("position").indices.length/2+1)}write(n,a,c,l,u){if(null==u)return;const{buffer:p,offset:f}=u,{data:h,indices:m}=c.get("position"),d=c.get("normal").data,g=h.length/3;m&&m.length!==2*(g-1)&&console.warn("MeasurementArrowMaterial does not support indices");const C=w,b=j,_=v,x=M,y=O,T=p.position,A=p.normal,L=p.uv0;let S=0;for(let w=0;w<g;++w){const c=3*w;if(t(C,h[c],h[c+1],h[c+2]),w<g-1){const o=3*(w+1);t(b,h[o],h[o+1],h[o+2]),t(y,d[o],d[o+1],d[o+2]),e(y,y),r(_,b,C),e(_,_),s(x,y,_),e(x,x)}const l=o(C,b);n&&a&&(i(C,C,n),i(b,b,n),i(x,x,a));const u=f+2*w,p=u+1;T.setVec(u,C),T.setVec(p,C),A.setVec(u,x),A.setVec(p,x),L.set(u,0,S),L.set(u,1,-1),L.set(p,0,S),L.set(p,1,1),w<g-1&&(S+=l)}const V=p.length;for(let t=0;t<2*g;++t)V.set(f+t,S)}}export{g as MeasurementArrowMaterial,b as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../../core/Logger.js";import{clamp as r}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as t,createScreenPointArray as o}from"../../../../core/screenUtils.js";import{copy as i}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{set as s,subtract as n,dot as a,scale as c,add as l,copy as m,length as u,distance as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as g}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{distance2 as h,fromPoints as d,closestLineSegmentPoint as j,projectPoint as b,create as y}from"../../../../geometry/support/lineSegment.js";import{fromPoints as v,signedDistance as x,getNormal as L,create as S}from"../../../../geometry/support/plane.js";import{isColorHighlightOrOLID as w}from"../core/shaderLibrary/ShaderOutput.js";import M from"../lib/GLMaterial.js";import{Material as T,MaterialParameters as P}from"../lib/Material.js";import{projectWorldLineSegmentToRenderScreen as C,screenPolygonIntersectsBufferedSegment as R}from"../lib/screenPolygonOverlapUtils.js";import{Hit as V}from"../lib/screenPolygonTriangleIntersections.js";import{isTranslationMatrix as _}from"../lib/Util.js";import{DefaultBufferWriter as A}from"./DefaultBufferWriter.js";import{PositionColorLayout as N,PositionLayout as U}from"./DefaultLayouts.js";import{NativeLineTechnique as E}from"../shaders/NativeLineTechnique.js";import{NativeLineTechniqueConfiguration as O}from"../shaders/NativeLineTechniqueConfiguration.js";import{alphaCutoff as q}from"../../../../webscene/support/AlphaCutoff.js";class B extends T{constructor(e){super(e,X),this._configuration=new O,this.produces=new Map([[2,e=>w(e)]])}updateConfiguration(e){super.updateConfiguration(e),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasVertexColors=this.parameters.hasVertexColors,this._configuration.transparent=this.parameters.color[3]<1||this.parameters.width<1,this._configuration.hasOccludees=e.hasOccludees}get visible(){return this.parameters.color[3]>=q}intersectRay(r,t,o,p,g,b){const{options:y,camera:S,rayBegin:w,rayEnd:M}=o;if(!y.selectionMode||!r.visible||!S)return;if(!_(t))return void e.getLogger("esri.views.3d.webgl-engine.materials.NativeLineMaterial").error("intersection assumes a translation-only matrix");const T=r.attributes.get("position").data,P=Z;i(P,o.point);const C=ae*S.pixelRatio;s(re[0],P[0]-C,P[1]+C,0),s(re[1],P[0]+C,P[1]+C,0),s(re[2],P[0]+C,P[1]-C,0),s(re[3],P[0]-C,P[1]-C,0);for(let e=0;e<4;e++)if(!S.unprojectFromRenderScreen(re[e],te[e]))return;v(S.eye,te[0],te[1],oe),v(S.eye,te[1],te[2],ie),v(S.eye,te[2],te[3],se),v(S.eye,te[3],te[0],ne);let R=Number.MAX_VALUE,V=0;for(const e of W(F,G,T,t)){if(x(oe,F)<0&&x(oe,G)<0||x(ie,F)<0&&x(ie,G)<0||x(se,F)<0&&x(se,G)<0||x(ne,F)<0&&x(ne,G)<0)continue;const r=S.projectToRenderScreen(F,k),t=S.projectToRenderScreen(G,H);if(null==r||null==t)continue;if(r[2]<0&&t[2]>0){n(I,F,G);const e=S.frustum,t=-x(e[4],F)/a(I,L(e[4]));if(c(I,I,t),l(F,F,I),!S.projectToRenderScreen(F,r))continue}else if(r[2]>0&&t[2]<0){n(I,G,F);const e=S.frustum,r=-x(e[4],G)/a(I,L(e[4]));if(c(I,I,r),l(G,G,I),!S.projectToRenderScreen(G,t))continue}else if(r[2]<0&&t[2]<0)continue;r[2]=0,t[2]=0;const o=h(d(r,t,Q),P);o<R&&(R=o,m(J,F),m(K,G),V=e)}if(R<C*C){let e=Number.MAX_VALUE;if(j(d(J,K,Q),d(w,M,Y),z)){n(z,z,w);const r=u(z);c(z,z,1/r),e=r/f(w,M)}b(e,z,V)}}intersectScreenPolygon(r,t,o,i){const{options:s,camera:n,screenPolygonPrimitiveProcessor:a}=o;if(!s.selectionMode||!r.visible)return null;if(!_(t))return e.getLogger("esri.views.3d.webgl-engine.materials.NativeLineMaterial").error("intersection assumes a translation-only matrix"),null;const c=r.attributes.get("position").data,l=new V;for(const e of W(F,G,c,t))for(const[r,t]of a.processLineSegment(ce,F,G))C(n,r,t,k,H)&&(n.renderToScreen(k,$),n.renderToScreen(H,ee),R(i,$,ee,ae)&&(b(d(r,t,Y),n.eye,Z),l.updateIfCloserFromValues(f(n.eye,Z),e,Z,null)));return l}intersectRayDraped(e,t,o,i,s){if(!t.options.selectionMode)return;const n=e.attributes.get("position").data,a=e.attributes.get("size"),c=a?a.data[0]:0,l=o[0],m=o[1],u=((c+1)/2+4)*e.screenToWorldRatio;let f=Number.MAX_VALUE,p=0;for(let g=0;g<n.length-5;g+=3){const e=n[g],t=n[g+1],o=l-e,i=m-t,s=n[g+3]-e,a=n[g+4]-t,c=r((s*o+a*i)/(s*s+a*a),0,1),u=s*c-o,h=a*c-i,d=u*u+h*h;d<f&&(f=d,p=g/3)}f<u*u&&i(s.distance,s.normal,p)}createGLMaterial(e){return new D(e)}createBufferWriter(){const e=this.parameters.hasVertexColors?N:U;return new A(e)}}class D extends M{beginSlot(e){return this.getTechnique(E,e)}}function*W(e,r,t,o){for(let i=0;i<t.length-5;i+=3)e[0]=t[i]+o[12],e[1]=t[i+1]+o[13],e[2]=t[i+2]+o[14],r[0]=t[i+3]+o[12],r[1]=t[i+4]+o[13],r[2]=t[i+5]+o[14],yield i/3}class X extends P{constructor(){super(...arguments),this.color=g,this.hasVertexColors=!1,this.hasSlicePlane=!1,this.width=1}}const F=p(),G=p(),I=p(),z=p(),k=t(),H=t(),J=p(),K=p(),Q=y(),Y=y(),Z=p(),$=o(),ee=o(),re=[t(),t(),t(),t()],te=[p(),p(),p(),p()],oe=S(),ie=S(),se=S(),ne=S(),ae=2,ce=[p(),p()];export{B as NativeLineMaterial,X as Parameters};
|
|
2
|
+
import e from"../../../../core/Logger.js";import{clamp as r}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as t,createScreenPointArray as o}from"../../../../core/screenUtils.js";import{copy as i}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{set as s,subtract as n,dot as a,scale as c,add as l,copy as m,length as u,distance as f}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as g}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{distance2 as h,fromPoints as d,closestLineSegmentPoint as j,projectPoint as b,create as y}from"../../../../geometry/support/lineSegment.js";import{fromPoints as v,signedDistance as x,getNormal as L,create as S}from"../../../../geometry/support/plane.js";import{isColorHighlightOrOLID as w}from"../core/shaderLibrary/ShaderOutput.js";import M from"../lib/GLMaterial.js";import{Material as T,MaterialParameters as P}from"../lib/Material.js";import{projectWorldLineSegmentToRenderScreen as C,screenPolygonIntersectsBufferedSegment as R}from"../lib/screenPolygonOverlapUtils.js";import{Hit as V}from"../lib/screenPolygonTriangleIntersections.js";import{isTranslationMatrix as _}from"../lib/Util.js";import{DefaultBufferWriter as A}from"./DefaultBufferWriter.js";import{PositionColorLayout as N,PositionLayout as U}from"./DefaultLayouts.js";import{NativeLineTechnique as E}from"../shaders/NativeLineTechnique.js";import{NativeLineTechniqueConfiguration as O}from"../shaders/NativeLineTechniqueConfiguration.js";import{alphaCutoff as q}from"../../../../webscene/support/AlphaCutoff.js";class B extends T{constructor(e){super(e,X),this._configuration=new O,this.produces=new Map([[2,e=>w(e)]])}updateConfiguration(e){super.updateConfiguration(e),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasVertexColors=this.parameters.hasVertexColors,this._configuration.transparent=this.parameters.color[3]<1||this.parameters.width<1,this._configuration.hasOccludees=e.hasOccludees}get visible(){return this.parameters.color[3]>=q}intersectRay(r,t,o,p,g,b){const{options:y,camera:S,rayBegin:w,rayEnd:M}=o;if(!y.selectionMode||!r.visible||!S)return;if(!_(t))return void e.getLogger("esri.views.3d.webgl-engine.materials.NativeLineMaterial").error("intersection assumes a translation-only matrix");const T=r.attributes.get("position").data,P=Z;i(P,o.point);const C=ae*S.pixelRatio;s(re[0],P[0]-C,P[1]+C,0),s(re[1],P[0]+C,P[1]+C,0),s(re[2],P[0]+C,P[1]-C,0),s(re[3],P[0]-C,P[1]-C,0);for(let e=0;e<4;e++)if(!S.unprojectFromRenderScreen(re[e],te[e]))return;v(S.eye,te[0],te[1],oe),v(S.eye,te[1],te[2],ie),v(S.eye,te[2],te[3],se),v(S.eye,te[3],te[0],ne);let R=Number.MAX_VALUE,V=0;for(const e of W(F,G,T,t)){if(x(oe,F)<0&&x(oe,G)<0||x(ie,F)<0&&x(ie,G)<0||x(se,F)<0&&x(se,G)<0||x(ne,F)<0&&x(ne,G)<0)continue;const r=S.projectToRenderScreen(F,k),t=S.projectToRenderScreen(G,H);if(null==r||null==t)continue;if(r[2]<0&&t[2]>0){n(I,F,G);const e=S.frustum,t=-x(e[4],F)/a(I,L(e[4]));if(c(I,I,t),l(F,F,I),!S.projectToRenderScreen(F,r))continue}else if(r[2]>0&&t[2]<0){n(I,G,F);const e=S.frustum,r=-x(e[4],G)/a(I,L(e[4]));if(c(I,I,r),l(G,G,I),!S.projectToRenderScreen(G,t))continue}else if(r[2]<0&&t[2]<0)continue;r[2]=0,t[2]=0;const o=h(d(r,t,Q),P);o<R&&(R=o,m(J,F),m(K,G),V=e)}if(R<C*C){let e=Number.MAX_VALUE;if(j(d(J,K,Q),d(w,M,Y),z)){n(z,z,w);const r=u(z);c(z,z,1/r),e=r/f(w,M)}b(e,z,V)}}intersectScreenPolygon(r,t,o,i){const{options:s,camera:n,screenPolygonPrimitiveProcessor:a}=o;if(!s.selectionMode||!r.visible)return null;if(!_(t))return e.getLogger("esri.views.3d.webgl-engine.materials.NativeLineMaterial").error("intersection assumes a translation-only matrix"),null;const c=r.attributes.get("position").data,l=new V(4);for(const e of W(F,G,c,t))for(const[r,t]of a.processLineSegment(ce,F,G))C(n,r,t,k,H)&&(n.renderToScreen(k,$),n.renderToScreen(H,ee),R(i,$,ee,ae)&&(b(d(r,t,Y),n.eye,Z),l.updateIfCloserFromValues(f(n.eye,Z),e,Z,null)));return l}intersectRayDraped(e,t,o,i,s){if(!t.options.selectionMode)return;const n=e.attributes.get("position").data,a=e.attributes.get("size"),c=a?a.data[0]:0,l=o[0],m=o[1],u=((c+1)/2+4)*e.screenToWorldRatio;let f=Number.MAX_VALUE,p=0;for(let g=0;g<n.length-5;g+=3){const e=n[g],t=n[g+1],o=l-e,i=m-t,s=n[g+3]-e,a=n[g+4]-t,c=r((s*o+a*i)/(s*s+a*a),0,1),u=s*c-o,h=a*c-i,d=u*u+h*h;d<f&&(f=d,p=g/3)}f<u*u&&i(s.distance,s.normal,p)}createGLMaterial(e){return new D(e)}createBufferWriter(){const e=this.parameters.hasVertexColors?N:U;return new A(e)}}class D extends M{beginSlot(e){return this.getTechnique(E,e)}}function*W(e,r,t,o){for(let i=0;i<t.length-5;i+=3)e[0]=t[i]+o[12],e[1]=t[i+1]+o[13],e[2]=t[i+2]+o[14],r[0]=t[i+3]+o[12],r[1]=t[i+4]+o[13],r[2]=t[i+5]+o[14],yield i/3}class X extends P{constructor(){super(...arguments),this.color=g,this.hasVertexColors=!1,this.hasSlicePlane=!1,this.width=1}}const F=p(),G=p(),I=p(),z=p(),k=t(),H=t(),J=p(),K=p(),Q=y(),Y=y(),Z=p(),$=o(),ee=o(),re=[t(),t(),t(),t()],te=[p(),p(),p(),p()],oe=S(),ie=S(),se=S(),ne=S(),ae=2,ce=[p(),p()];export{B as NativeLineMaterial,X as Parameters};
|