@arcgis/core 5.2.0-next.40 → 5.2.0-next.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- 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/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/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/321dbc60f44819c2b4de.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/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/399e23d777a043efa9f1.js +1 -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/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/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/5133083222588799493f.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/590e977f8eeb379b86c8.js +1398 -0
- 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/67468c50ecb1fbedda87.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/7684f0c771d312e05bb4.js +680 -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/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/934044f2ef6ce199b399.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/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/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/c1845682cc9a5aac8703.js +261 -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/d66d58ed5d66520ab1bf.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/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/{757982a73174aa7ab0d1.js → e6b5c015205d38abe037.js} +1 -1
- 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/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/{57c003c6745d450558a7.js → f4aed2b6e92bd0474069.js} +1 -1
- package/assets/esri/core/workers/chunks/f4eda59ec1e816ecc827.js +1 -0
- 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/f8f0de841be17cd05c8f.js +1 -0
- 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/assets/esri/themes/base/_core.scss +0 -6
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/CutFillMinMaxDepth.glsl.js +2 -0
- package/chunks/CutFillTotalDepth.glsl.js +2 -0
- package/chunks/EdgeShader.glsl.js +9 -9
- package/chunks/GaussianSplat.glsl.js +1 -1
- package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
- package/chunks/arcgis-knowledge-client-core.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/config.js +1 -1
- package/editing/geometry/coordUtils.js +1 -1
- package/geohash/geohashUtils.js +1 -1
- package/geometry/support/aaBoundingRect.js +1 -1
- package/geometry/support/quantizationUtils.js +1 -1
- package/geometry/support/sphere.js +1 -1
- package/interfaces.d.ts +5 -0
- package/intl/date.js +1 -1
- package/kernel.js +1 -1
- package/layers/AnnotationFeatureLayer.d.ts +13 -3
- package/layers/DimensionFeatureLayer.d.ts +10 -3
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/layers/graphics/sources/support/sourceUtils.js +1 -1
- package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
- package/layers/raster/formats/Lerc.js +1 -1
- package/layers/raster/formats/RasterCodec.js +1 -1
- package/layers/support/fieldUtils.js +1 -1
- package/package.json +3 -3
- package/support/revision.js +1 -1
- package/views/2d/engine/vectorTiles/GeometryUtils.js +1 -1
- package/views/2d/engine/webgl/Painter.js +1 -1
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
- package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
- package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/TextureStatisticsTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/BitBlitShader.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/DebugOverlayShader.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HighlightShader.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/WorldExtentStencilShader.js +2 -0
- 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/shaderGraph/techniques/utility/BitBlitTechnique.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/utility/DebugOverlayTechnique.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/utility/HighlightTechnique.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/utility/WorldExtentClipTechnique.js +2 -0
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/support/DebugOverlay.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.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/layers/i3s/I3SNode.js +1 -1
- package/views/3d/layers/i3s/SphereCone.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/support/cameraUtilsSpherical.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianTile.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/webgl/RenderCamera.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.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/effects/debug/RenderNodeVisualizerNode.js +1 -1
- package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
- package/views/3d/webgl-engine/effects/laserlines/LaserLineRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillComputation.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
- package/views/3d/webgl-engine/lib/Intersector.js +1 -1
- package/views/3d/webgl-engine/lib/IntersectorInterfaces.js +1 -1
- package/views/3d/webgl-engine/lib/Octree.js +1 -1
- package/views/3d/webgl-engine/lib/PolygonIntersections2D.js +2 -0
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/AdjustProjectedPosition.glsl.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/DiscardNonSilhouetteEdges.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/EdgeUtil.glsl.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/LineAmplitude.glsl.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/LineOffset.glsl.js +1 -1
- package/views/3d/webgl-engine/{shaders/sources/edgeRenderer → lib/edgeRendering}/UnpackAttributes.glsl.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/DefaultMaterial.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/TriangleMaterial.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/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/CutFillMinMaxDepth.glsl.js +2 -0
- package/views/3d/webgl-engine/shaders/CutFillMinMaxDepthTechnique.js +2 -0
- package/views/3d/webgl-engine/shaders/{CutFillDepth.glsl.js → CutFillTotalDepth.glsl.js} +1 -1
- package/views/3d/webgl-engine/shaders/CutFillTotalDepthTechnique.js +2 -0
- package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
- package/views/Viewport2DMixin.js +1 -1
- package/views/input/BrowserEventSource.js +1 -1
- package/views/input/InputManager.js +1 -1
- package/views/interactive/snapping/snappingUtils.js +1 -1
- package/views/support/euclideanLengthMeasurementUtils.js +1 -1
- package/views/webgl/VertexAttributeLayouts.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/inputs/support/multipleChoiceInputUtils.js +1 -1
- package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/Legend/support/relationshipRampUtils.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/utils.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/themes/base/_colorVariables.scss +0 -1
- package/assets/esri/themes/base/widgets/_DatePicker.scss +0 -170
- package/assets/esri/themes/base/widgets/_FeatureUtilityNetworkAssociationList.scss +0 -13
- package/assets/esri/themes/base/widgets/_TimePicker.scss +0 -15
- package/chunks/CutFillDepth.glsl.js +0 -2
- package/core/PLRUCache.js +0 -2
- package/views/2d/engine/webgl/BitBlitRenderer.js +0 -2
- package/views/2d/engine/webgl/WorldExtentClipRenderer.js +0 -2
- package/views/2d/engine/webgl/effects/highlight/HighlightRenderer.js +0 -2
- package/views/2d/engine/webgl/shaders/BitBlitPrograms.js +0 -2
- package/views/2d/engine/webgl/shaders/HighlightPrograms.js +0 -2
- package/views/2d/engine/webgl/shaders/StencilPrograms.js +0 -2
- package/views/3d/webgl-engine/shaders/CutFillDepthTechnique.js +0 -2
- package/views/3d/webgl-engine/shaders/CutFillDepthTechniqueConfiguration.js +0 -2
- package/views/support/euclideanAreaMeasurementUtils.js +0 -2
- package/widgets/ShadowCast/ShadowVisualizationType.js +0 -2
- /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{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 r}from"../../../../core/libs/gl-matrix-2/math/mat3.js";import{create as i}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 x,transformMat3 as b,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 D}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{create as C,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 L}from"../core/shaderLibrary/ShaderOutput.js";import{HUDVerticalPixelOffset as F}from"../core/shaderLibrary/hud/HUD.glsl.js";import{GLTextureMaterialBindParameters as I,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{DrapedHit as N,Hit as G}from"../lib/screenPolygonTriangleIntersections.js";import{SeparateScreenSizePerspectiveEvaluators as q}from"../lib/screenSizePerspectiveUtils.js";import{assert as X}from"../lib/Util.js";import{writePosition as Y,writeNormal as k,writeColor as J,writeBufferVec2 as K,writeBufferFloat as Q,writeBufferVec3 as Z,writeBufferZeros as $,writeBufferVec4 as ee,writeOlidColor as te}from"./internal/bufferWriterUtils.js";import{verticalOffsetAtDistance as se}from"./internal/MaterialUtil.js";import{a as re}from"../../../../chunks/HUDMaterial.glsl.js";import{baseLayout as ie,getInstanceLayout as ae,HUDMaterialTechnique as ne}from"../shaders/HUDMaterialTechnique.js";import{HUDMaterialTechniqueConfiguration as oe}from"../shaders/HUDMaterialTechniqueConfiguration.js";import{alphaCutoff as le}from"../../../../webscene/support/AlphaCutoff.js";class ce extends B{constructor(e,t,s=!1){super(e,Ne),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 oe(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,_(e.output)&&(s.debugDrawLabelBorder=!!M.LABELS_SHOW_BORDER),s.hasOcclusionTexture=!t.drawAsLabel&&s.transparentOccluded&&L(e.output)}intersectRay(e,t,s,r,i,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:x,pixelRatioTolerance:b,halfOutlineSize:v,rotationAngle:O,anchor:z,centerView:P}of this._forEachScreenSpaceHUDInstance(Le,e,t,f))if(ue(c,S[0],S[1],x,b,v,O,g,z)){const e=s.ray;if(ve[0]=c[0],ve[1]=c[1],ve[2]=S[2],f.unprojectFromRenderScreen(ve,Se)){const t=y();h(t,e.direction);const s=1/p(t);u(t,t,s);const r=d(e.origin,Se)*s,i=y();m(i,P,f.inverseViewMatrix),a(r,t,-1,i)}}}*_forEachScreenSpaceHUDInstance(e,t,s,i){const{parameters:n}=this,o=t.attributes.get("featureAttribute"),l=null==o?null:V(o.data,De),{scaleX:c,scaleY:f}=qe(l,n,i.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=r(Pe,s);X(p.size>=3);const D="screen"===n.centerOffsetUnits;for(let r=0;r<p.data.length/p.size;r++){const t=r*p.size;if(g(Se,p.data[t],p.data[t+1],p.data[t+2]),m(Se,Se,s),m(Se,Se,i.viewMatrix),y){const e=r*y.size;g(Ve,y.data[e],y.data[e+1],y.data[e+2])}else g(Ve,0,0,0);if(!D&&(Se[0]+=Ve[0],Se[1]+=Ve[1],0!==Ve[2])){const e=Ve[2];S(Ve,Se),x(Se,Se,u(Ve,Ve,e))}const o=r*O.size;g(xe,O.data[o],O.data[o+1],O.data[o+2]),b(xe,xe,R);const{normal:l,cosAngle:V}=pe(xe,i,Ie),C=Ye(n,Se,V,i,ge);if(v(Se,Se,l,C),i.applyProjection(Se,be),be[0]>-1){if(D&&(Ve[0]||Ve[1])&&(be[0]+=Ve[0]*i.pixelRatio,0!==Ve[1]&&(be[1]+=ge.alignmentEvaluator.apply(Ve[1])*i.pixelRatio),i.unapplyProjection(be,Se)),be[0]+=n.screenOffset[0]*i.pixelRatio,be[1]+=n.screenOffset[1]*i.pixelRatio,be[0]=Math.floor(be[0]),be[1]=Math.floor(be[1]),He[0]=P[0],He[1]=P[1],null!=d){const e=r*d.size;He[0]*=d.data[e],He[1]*=d.data[e+1]}ge.evaluator.applyVec2(He,He);let t=0;if(n.textureIsSignedDistanceField){t=Math.min(n.outlineSize,.5*He[0])*i.pixelRatio/2}He[0]*=c,He[1]*=f,h(e.centerView,Se),g(e.renderScreenPosition,be[0],be[1],be[2]),a(e.screenSize,He),e.pixelRatioTolerance=Ee*i.pixelRatio,e.halfOutlineSize=t,e.rotationAngle=n.rotation+(null!=z?z.data[r*z.size]:0),e.anchor=re(n),yield e}}}*_forEachDrapedHUDInstance(e,t){const s=t.attributes.get("position"),r=t.attributes.get("size"),i=t.attributes.get("rotation"),n=this.parameters,o=n.size,l=t.attributes.get("featureAttribute"),c=null==l?null:V(l.data,De),{scaleX:f,scaleY:h}=qe(c,n,t.screenToWorldRatio);e.pixelRatioTolerance=Be*t.screenToWorldRatio,e.anchor=re(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],He[0]=o[0],He[1]=o[1],null!=r){const e=p*r.size;He[0]*=r.data[e],He[1]*=r.data[e+1]}if(e.halfOutlineSize=0,n.textureIsSignedDistanceField){const s=Math.min(n.outlineSize,.5*He[0]);e.halfOutlineSize=s*t.screenToWorldRatio/2}He[0]*=f,He[1]*=h,a(e.screenSize,He),e.rotationAngle=n.rotation+(null!=i?i.data[p*i.size]:0),yield e}}intersectRayDraped(e,t,s,r,i){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))ue(s,n,o,l,c,f,h,a,p)&&r(i.distance,i.normal,-1)}intersectScreenPolygonDraped(e,t,s,r){if(!s.options.selectionMode||s.options.excludeLabels&&this.parameters.isLabel)return null;const i=this.parameters;for(const{x:a,y:n,screenSize:o,pixelRatioTolerance:l,halfOutlineSize:c,rotationAngle:f,anchor:h}of this._forEachDrapedHUDInstance(Fe,e))if(de(r,a+t[0],n+t[1],o,l,c,f,i,h,!1))return new N(-1);return null}intersectScreenPolygon(e,t,s,r){const{options:{selectionMode:i,hud:a,excludeLabels:n},camera:o}=s,{parameters:l}=this;if(!i||!a||n&&l.isLabel||!e.visible||null==t)return null;const c=new G(1),f=1/o.pixelRatio;for(const{renderScreenPosition:h,screenSize:p,pixelRatioTolerance:u,halfOutlineSize:g,rotationAngle:S,anchor:x,centerView:b}of this._forEachScreenSpaceHUDInstance(Le,e,t,o)){const e=m(Se,b,o.inverseViewMatrix);if(!s.screenPolygonPrimitiveProcessor?.validatePoint(e))continue;const t=h[0]*f,i=(o.fullHeight-h[1])*f;if(Me[0]=p[0]*f,Me[1]=p[1]*f,de(r,t,i,Me,u*f,g*f,S,l,x,!0)){const t=d(o.eye,e);c.updateIfCloserFromValues(t,-1,e,null)}}return c.valid?c:null}createBufferWriter(){return new Ge(this.parameters)}applyShaderOffsets(e,t,s,i,a,n,o,l){b(Oe,s,r(Pe,i));const c=pe(Oe,o,Ie),f=Xe(p(t),o),h=Ye(this.parameters,t,c.cosAngle,o,l);v(t,t,c.normal,h+f),v(e,e,Oe,h+f);const u=n+h;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&&h(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 h(a,t);const c=e(Math.abs(s.cosAngle),.01,1),f=1-Math.sqrt(1-c*c)/c/i.viewport[2];return u(a,t,l>0?f:1/f),a}_applyCenterOffsetView(e,t,s){const r="screen"!==this.parameters.centerOffsetUnits;return s!==e&&h(s,e),r&&(s[0]+=t[0],s[1]+=t[1],t[2]&&(S(xe,s),O(s,s,u(xe,xe,t[2])))),s}_applyCenterOffsetNDC(e,t,s,r){const i="screen"!==this.parameters.centerOffsetUnits;return r!==e&&h(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&&h(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]>=le||t>=le&&s[3]>=le;return this._visible&&r}createGLMaterial(e){return new fe(e)}calculateRelativeScreenBounds(e,t,s=C()){return he(this.parameters,e,t,s),s[2]=s[0]+e[0],s[3]=s[1]+e[1],s}}class fe 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(ne,e)}}function he(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 pe(e,t,s){return m(s.normal,e,t.viewInverseTransposeMatrix),s.cosAngle=z(s.normal,We),s}function ue(e,s,r,i,a,l,c,f,h){const p=me(s,r,i,a,l,f,h,Ce);return n(ye,s,r),o(ze,e,ye,t(c)),ze[0]>p[0]&&ze[0]<p[2]&&ze[1]>p[1]&&ze[1]<p[3]}function de(e,s,r,i,a,l,c,f,h,p){const u=me(s,r,i,a,l,f,h,Ce,p);if(n(we,u[0],u[1]),n(Ae,u[2],u[1]),n(je,u[2],u[3]),n(Ue,u[0],u[3]),0!==c){const e=t(c);n(ye,s,r),o(we,we,ye,e),o(Ae,Ae,ye,e),o(je,je,ye,e),o(Ue,Ue,ye,e),w(u),A(u,we),A(u,Ae),A(u,je),A(u,Ue)}return!!H(e,u)&&(W(e,we,Ae,je)||W(e,we,je,Ue))}function me(e,t,s,r,i,a,n,o,l=!1){let c=e-r-s[0]*n[0],f=c+s[0]+2*r;const h=l?1-n[1]:n[1];let p=t-r-s[1]*h,u=p+s[1]+2*r;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-=i,f+=i,p-=i,u+=i),o[0]=c,o[1]=p,o[2]=f,o[3]=u,o}const ge=new q,Se=y(),xe=y(),be=D(),ve=s(),Oe=y(),ze=f(),ye=f(),Pe=i(),Ve=y(),Re=y(),De=D(),Ce=C(),we=f(),Ae=f(),je=f(),Ue=f(),Me=f();class Te{constructor(){this.renderScreenPosition=y(),this.screenSize=f(),this.centerView=y(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=f()}}class _e{constructor(){this.x=0,this.y=0,this.screenSize=f(),this.pixelRatioTolerance=0,this.halfOutlineSize=0,this.rotationAngle=0,this.anchor=f()}}const Le=new Te,Fe=new _e,Ie={normal:y(),cosAngle:0},Ee=1,Be=2,He=c(0,0),We=P(0,0,1);class Ne extends I{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=D(),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 Ge{constructor(e){this.baseInstanceLayout=ie,this.layout=ae(e)}elementCount(e){return e.get("position").indices.length}elementCountBaseInstance(e){return e.get("uv0").indices.length}write(e,t,s,r,i){if(null==i)return;const{buffer:a,offset:n}=i,{position:o,normal:l,color:c,size:f,rotation:h,centerOffset:p,groundDistance:u,featureAttribute:d,uvi:m}=a;Y(s.get("position"),e,o,n),k(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,r,i]=e;for(let e=0;e<g;++e){const a=n+e;m.setValues(a,t,s,r,i)}}}if(c&&J(s.get("color"),4,c,n),f&&K(s.get("size"),f,n),h&&Q(s.get("rotation"),h,n),p&&(s.get("centerOffset")?Z(s.get("centerOffset"),p,n):$(p,n,g)),s.get("groundDistance")?Q(s.get("groundDistance"),u,n):$(u,n,g),d&&(s.get("featureAttribute")?ee(s.get("featureAttribute"),d,n):$(d,n,g)),null!=r){const e=s.get("position")?.indices;if(e){const t=e.length,s=a.getField("olidColor",j);te(r,s,t,n)}}}writeBaseInstance(e,t){const{uv0:s}=t;K(e.get("uv0"),s,0)}}function qe(e,t,s){return null==e||null==t.vvSize?{scaleX:s,scaleY:s}:(U(Re,t,e),{scaleX:Re[0]*s,scaleY:Re[1]*s})}function Xe(e,t){const s=t.computeRenderPixelSizeAtDist(e)*F;return(t.aboveGround?1:-1)*s}function Ye(e,t,s,r,i){if(!e.verticalOffset?.screenLength){const r=p(t);return i.update(s,r,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),0}const a=p(t),n=e.screenSizePerspectiveAlignment??e.screenSizePerspective,o=se(r,a,e.verticalOffset,s,n,e.screenSizePerspectiveMinPixelReferenceSize);return i.update(s,a,e.screenSizePerspective,e.screenSizePerspectiveMinPixelReferenceSize,e.screenSizePerspectiveAlignment,null),o}export{ce as HUDMaterial,Ne 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
|
|
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 p}from"../shaders/HeatmapDensityTechnique.js";import{HeatmapDensityTechniqueConfiguration as m}from"../shaders/HeatmapDensityTechniqueConfiguration.js";const h=2;class d extends l{constructor(){super(...arguments),this.isAttributeDriven=!1,this.usesHalfFloats=!1}}class b extends a{constructor(t){super(t,d),this.visible=!0,this.produces=new Map([[18,t=>s(t)]]),this.intersectScreenPolygonDraped=void 0,this._configuration=new m}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,p=f*f,m=o.data.length/o.size;for(let h=0;h<m;h++){const r=h*o.size,s=t(y,o.data[r],o.data[r+1]);e(s,i)<p&&a(n.distance,n.normal,-1)}}intersectScreenPolygon(){return null}createBufferWriter(){return new v(this.parameters.isAttributeDriven?u:c)}}class g extends i{beginSlot(t){return this.getTechnique(f,t)}}class v{constructor(t){this.layout=t,this.baseInstanceLayout=p}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 y=r();export{b as HeatmapDensityMaterial,d 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 c,writeBufferVec3 as l,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:c,hasSlicePlane:l,screenSizePerspective:u,verticalOffset:h,borderColor:f}){return e`${t}:${r}:${i}:[${s}]:${n}:${a}:${o}:${c}:${l}:${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){const{buffer:n,offset:a}=s;o(r.get("position"),e,n.position,a),c(r.get("normal"),t,n.normal,a),l(r.get("centerOffset"),n.centerOffset,a),u(r.get("groundDistance"),n.groundDistance,a)}}export{m as LineCalloutMaterial,$ as Parameters,S as uniqueMaterialIdentifier};
|
|
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 c,writeBufferVec3 as l,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.intersectScreenPolygonDraped=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:c,hasSlicePlane:l,screenSizePerspective:u,verticalOffset:h,borderColor:f}){return e`${t}:${r}:${i}:[${s}]:${n}:${a}:${o}:${c}:${l}:${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),c(r.get("normal"),t,n.normal,a),l(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.intersectScreenPolygonDraped=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(),
|
|
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.intersectScreenPolygonDraped=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(),v=n(),j=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=v,_=j,x=M,y=O,S=p.position,T=p.normal,A=p.uv0;let L=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;S.setVec(u,C),S.setVec(p,C),T.setVec(u,x),T.setVec(p,x),A.set(u,0,L),A.set(u,1,-1),A.set(p,0,L),A.set(p,1,1),w<g-1&&(L+=l)}const V=p.length;for(let t=0;t<2*g;++t)V.set(f+t,L)}}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
|
|
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,set as s}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as a,subtract as c,dot as l,scale as f,add as m,copy as u,length as p,distance as g}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as h}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ONES as d}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{distance2 as j,fromPoints as b,closestLineSegmentPoint as y,projectPoint as v,create as x}from"../../../../geometry/support/lineSegment.js";import{fromPoints as S,signedDistance as L,getNormal as w,create as M}from"../../../../geometry/support/plane.js";import{isColorHighlightOrOLID as P}from"../core/shaderLibrary/ShaderOutput.js";import T from"../lib/GLMaterial.js";import{Material as C,MaterialParameters as R}from"../lib/Material.js";import{projectWorldLineSegmentToRenderScreen as V,screenPolygonIntersectsBufferedSegment as _}from"../lib/screenPolygonOverlapUtils.js";import{Hit as A,DrapedHit as N}from"../lib/screenPolygonTriangleIntersections.js";import{isTranslationMatrix as U}from"../lib/Util.js";import{DefaultBufferWriter as D}from"./DefaultBufferWriter.js";import{PositionColorLayout as E,PositionLayout as O}from"./DefaultLayouts.js";import{NativeLineTechnique as q}from"../shaders/NativeLineTechnique.js";import{NativeLineTechniqueConfiguration as B}from"../shaders/NativeLineTechniqueConfiguration.js";import{alphaCutoff as W}from"../../../../webscene/support/AlphaCutoff.js";class X extends C{constructor(e){super(e,k),this._configuration=new B,this.produces=new Map([[2,e=>P(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]>=W}intersectRay(r,t,o,s,n,h){const{options:d,camera:v,rayBegin:x,rayEnd:M}=o;if(!d.selectionMode||!r.visible||!v)return;if(!U(t))return void e.getLogger("esri.views.3d.webgl-engine.materials.NativeLineMaterial").error("intersection assumes a translation-only matrix");const P=r.attributes.get("position").data,T=oe;i(T,o.point);const C=ge*v.pixelRatio;a(ce[0],T[0]-C,T[1]+C,0),a(ce[1],T[0]+C,T[1]+C,0),a(ce[2],T[0]+C,T[1]-C,0),a(ce[3],T[0]-C,T[1]-C,0);for(let e=0;e<4;e++)if(!v.unprojectFromRenderScreen(ce[e],le[e]))return;S(v.eye,le[0],le[1],fe),S(v.eye,le[1],le[2],me),S(v.eye,le[2],le[3],ue),S(v.eye,le[3],le[0],pe);let R=Number.MAX_VALUE,V=0;for(const e of G(H,J,P,t)){if(L(fe,H)<0&&L(fe,J)<0||L(me,H)<0&&L(me,J)<0||L(ue,H)<0&&L(ue,J)<0||L(pe,H)<0&&L(pe,J)<0)continue;const r=v.projectToRenderScreen(H,Y),t=v.projectToRenderScreen(J,Z);if(null==r||null==t)continue;if(r[2]<0&&t[2]>0){c(K,H,J);const e=v.frustum,t=-L(e[4],H)/l(K,w(e[4]));if(f(K,K,t),m(H,H,K),!v.projectToRenderScreen(H,r))continue}else if(r[2]>0&&t[2]<0){c(K,J,H);const e=v.frustum,r=-L(e[4],J)/l(K,w(e[4]));if(f(K,K,r),m(J,J,K),!v.projectToRenderScreen(J,t))continue}else if(r[2]<0&&t[2]<0)continue;r[2]=0,t[2]=0;const o=j(b(r,t,re),T);o<R&&(R=o,u($,H),u(ee,J),V=e)}if(R<C*C){let e=Number.MAX_VALUE;if(y(b($,ee,re),b(x,M,te),Q)){c(Q,Q,x);const r=p(Q);f(Q,Q,1/r),e=r/g(x,M)}h(e,Q,V)}}intersectScreenPolygon(r,t,o,i){const{options:s,camera:n,screenPolygonPrimitiveProcessor:a}=o;if(!s.selectionMode||!r.visible)return null;if(!U(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 A(4);for(const e of G(H,J,c,t))for(const[r,t]of a.processLineSegment(he,H,J))V(n,r,t,Y,Z)&&(n.renderToScreen(Y,ie),n.renderToScreen(Z,se),_(i,ie,se,ge)&&(v(b(r,t,te),n.eye,oe),l.updateIfCloserFromValues(g(n.eye,oe),e,oe,null)));return l}intersectRayDraped(e,t,o,i,s){if(!t.options.selectionMode)return;const n=o[0],a=o[1],c=I(e);let l=Number.MAX_VALUE,f=0;for(const m of z(ne,ae,e)){const e=n-ne[0],t=a-ne[1],o=ae[0]-ne[0],i=ae[1]-ne[1],s=r((o*e+i*t)/(o*o+i*i),0,1),c=o*s-e,u=i*s-t,p=c*c+u*u;p<l&&(l=p,f=m)}l<c*c&&i(s.distance,s.normal,f)}intersectScreenPolygonDraped(e,r,t,o){if(!t.options.selectionMode)return null;const i=I(e);for(const s of z(ne,ae,e,r))if(_(o,ne,ae,i))return new N(s);return null}createGLMaterial(e){return new F(e)}createBufferWriter(){const e=this.parameters.hasVertexColors?E:O;return new D(e)}}class F extends T{beginSlot(e){return this.getTechnique(q,e)}}function*G(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}function I(e){const r=e.attributes.get("size");return(((r?r.data[0]:0)+1)/2+4)*e.screenToWorldRatio}function*z(e,r,t,o){const n=t.attributes.get("position").data,a=o?.[0]??0,c=o?.[1]??0;s(e,n[0]+a,n[1]+c);for(let l=3;l<n.length-2;l+=3){const t=l%n.length;s(r,n[t]+a,n[t+1]+c),yield l/3,i(e,r)}}class k extends R{constructor(){super(...arguments),this.color=d,this.hasVertexColors=!1,this.hasSlicePlane=!1,this.width=1}}const H=h(),J=h(),K=h(),Q=h(),Y=t(),Z=t(),$=h(),ee=h(),re=x(),te=x(),oe=h(),ie=o(),se=o(),ne=n(),ae=n(),ce=[t(),t(),t(),t()],le=[h(),h(),h(),h()],fe=M(),me=M(),ue=M(),pe=M(),ge=2,he=[h(),h()];export{X as NativeLineMaterial,k as Parameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{fromValues as t}from"../../../../
|
|
2
|
+
import{fromValues as t}from"../../../../geometry/support/aaBoundingBox.js";import{BufferViewUint32 as e,BufferViewVec3f as i,BufferViewVec2Snorm16 as r,BufferViewSnorm16 as s,BufferViewFloat16 as o,BufferViewFloat as a,BufferViewVec2f as n,BufferViewVec4Unorm8 as h,BufferViewUnorm8 as c}from"../../../../geometry/support/buffer/BufferView.js";import{maxPathFrameIndex as u}from"../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{isShadowLike as f,is3DGeometry as p,isColor as l}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as g}from"../effects/geometry/olidUtils.js";import m from"../lib/GLMaterial.js";import{isPathGeometry as d}from"../lib/PathGeometry.js";import{offsetPathVertexInfoFrameIndex as b}from"../lib/PathVertexInfo.js";import{MeshIntersectionOptions as y,intersectAabbInvDir as _}from"../lib/RayIntersections.js";import{assert as S}from"../lib/Util.js";import{applyPolygonOffsetToHit as w}from"./intersectWithPolygonOffset.js";import{getLayout as F,getTextureLayout as P}from"./PathLayouts.js";import{PathPassParameters as x,PathTechnique as V}from"./PathTechnique.js";import{PathTechniqueConfiguration as j}from"./PathTechniqueConfiguration.js";import{TriangleMaterial as C}from"./TriangleMaterial.js";import{writeAttributes as R,writePosition as z,writeBufferVec2 as B,writeBufferInt16 as M,writeBufferFloat16 as O,writeBufferFloat as v,writeColor as A,writeBufferUint8 as T,writeOlidColor as I}from"./internal/bufferWriterUtils.js";import{hasShadowHighlights as U}from"../shaders/ReceiveShadowsConfiguration.js";import{alphaCutoff as L}from"../../../../webscene/support/AlphaCutoff.js";class q extends C{constructor(t,e){super(t,G),this.supportsEdges=!0,this.produces=new Map([[2,t=>(this.parameters.castShadows&&f(t)||p(t))&&!this.transparent],[4,t=>(this.parameters.castShadows&&f(t)||p(t))&&this.transparent]]),this._configuration=new j(e.spherical)}get emissions(){return this.parameters.emissiveStrength>0?this.transparent?2:1:0}updateConfiguration(t){super.updateConfiguration(t),this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.transparent=this.transparent,this._configuration.hasOccludees=t.hasOccludees,this._configuration.cullFace=this.parameters.hasSlicePlane?0:this.parameters.cullFace,this._configuration.offsetBackfaces=this.transparent,l(t.output)?(this._configuration.receiveShadows=t.shadowMap.enabled,this._configuration.hasShadowHighlights=U(this._configuration,t),this._configuration.receiveAmbientOcclusion=null!=t.ssao):this._configuration.receiveShadows=this._configuration.hasShadowHighlights=this._configuration.receiveAmbientOcclusion=!1,this._configuration.pbrMode=this.parameters.usePBR?2:0,this._configuration.emissionSource=this.parameters.usePBR?1:0,this._configuration.snowCover=t.snowCover>0,this._configuration.upVectorAlignment=this.parameters.upVectorAlignment,this._configuration.pathCapType=this.parameters.pathCapType,this._configuration.pathProfileType=this.parameters.profile.type,this._configuration.hasPathSize=this.parameters.hasPathSize,this._configuration.hasPathColor=this.parameters.hasPathColor,this._configuration.hasPathOpacity=this.parameters.hasPathOpacity}isVisibleForOutput(t){return 5!==t&&7!==t&&6!==t||this.parameters.castShadows}get visible(){return this.parameters.opacity>=L}intersectRay(t,e,i,r,s,o){this._intersectRay(t,i,r,s,o)}intersectRayDraped(){}intersectScreenPolygonDraped(){return null}intersectScreenPolygon(t,e,i,r){return d(t)?w(t.intersectScreenPolygon(i,e,r),this._configuration,i.camera.eye):null}_intersectRay(e,i,r,s,o){if(!d(e))return;const a=new y(i.tolerance,!1,i.options.normalRequired),n=e.boundingInfo;if(null==n)return void e.intersectRay(r,s,a,o);const h=t(n.bbMin[0],n.bbMin[1],n.bbMin[2],n.bbMax[0],n.bbMax[1],n.bbMax[2]),c=[s[0]-r[0],s[1]-r[1],s[2]-r[2]],u=Math.sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]),f=[u/c[0],u/c[1],u/c[2]];_(h,r,f,i.tolerance)&&e.intersectRay(r,s,a,o)}createBufferWriter(){return new W(F(),P(this.parameters))}createGLMaterial(t){return new D(t)}get transparent(){const{parameters:t}=this;return t.drivenOpacity||t.opacity<1}}class D extends m{beginSlot(t){return this.getTechnique(V,t)}}class G extends x{constructor(){super(...arguments),this.polygonOffset=0,this.castShadows=!0,this.hasSlicePlane=!1,this.drivenOpacity=!1,this.usePBR=!1,this.upVectorAlignment=0,this.pathCapType=1,this.cullFace=2}}class W{constructor(t,e){this.layout=t,this.textureBufferLayout=e,this.maxTextureBufferItemIndex=u}elementCount(t){return t.get("pathVertexInfo")?.indices.length??0}elementCountTextureBuffer(t){return t.get("position")?.indices.length??0}write(t,e,i,r,s,o,a){null!=s&&this._writeVertexBuffer(t,e,i,s,o),null!=a&&this._writeTextureBuffer(t,i,r,a)}_writeVertexBuffer(t,i,r,s,o){R(r,null,this.layout,t,i,s);const a=o?.from??0,n=s.buffer.getField("pathVertexInfo",e),h=r.get("pathVertexInfo");if(n&&h){S(1===h.size);const{data:t,stride:e,indices:i}=h;for(let r=0;r<i.length;++r){const o=t[e*i[r]];n.set(s.offset+r,b(o,a))}}}_writeTextureBuffer(t,e,u,f){const p=f.offset,l=f.buffer.getField("position",i),m=e.get("position");l&&m&&(S(3===m.size),z(m,t,l,p));const d=f.buffer.getField("profileRight",r),b=e.get("profileRight");d&&b&&(S(2===b.size),B(b,d,p));const y=f.buffer.getField("profileUp",r),_=e.get("profileUp");y&&_&&(S(2===_.size),B(_,y,p));const w=f.buffer.getField("profileRotation",s),F=e.get("profileRotation");w&&F&&(S(1===F.size),M(F,w,p));const P=f.buffer.getField("pathRotationUp",r),x=e.get("pathRotationUp");P&&x&&(S(2===x.size),B(x,P,p));const V=f.buffer.getField("pathMaxStretchDistance",o),j=e.get("pathMaxStretchDistance");V&&j&&(S(1===j.size),O(j,V,p));const C=f.buffer.getField("sizeFeatureAttribute",a),R=e.get("sizeFeatureAttribute");C&&R&&v(R,C,p);const U=f.buffer.getField("size",n),L=e.get("size");U&&L&&(S(2===L.size),B(L,U,p));const q=f.buffer.getField("colorFeatureAttribute",a),D=e.get("colorFeatureAttribute");q&&D&&v(D,q,p);const G=f.buffer.getField("color",h),W=e.get("color");G&&W&&A(W,4,G,p);const H=f.buffer.getField("opacityFeatureAttribute",a),k=e.get("opacityFeatureAttribute");H&&k&&v(k,H,p);const E=f.buffer.getField("opacity",c),J=e.get("opacity");if(E&&J&&(S(1===J.size),T(J,E,p)),g()){const t=f.buffer.getField("olidColor",h),e=m?.indices.length??0;u&&t&&e&&I(u,t,e,p)}}}export{G as Parameters,W as PathBufferWriter,q as PathMaterial};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{IDENTITY as e}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{BufferViewVec4f as r,BufferViewUint32 as s,BufferViewMat3f as i,BufferViewVec4u8 as o,BufferViewFloat as n}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as a,isColor as u,isDepth as f,isColorHighlightOrOLID as l}from"../core/shaderLibrary/ShaderOutput.js";import c from"../lib/GLMaterial.js";import{assert as h}from"../lib/Util.js";import{DefaultBufferWriter as
|
|
2
|
+
import{IDENTITY as e}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{fromValues as t}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{BufferViewVec4f as r,BufferViewUint32 as s,BufferViewMat3f as i,BufferViewVec4u8 as o,BufferViewFloat as n}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as a,isColor as u,isDepth as f,isColorHighlightOrOLID as l}from"../core/shaderLibrary/ShaderOutput.js";import c from"../lib/GLMaterial.js";import{assert as h}from"../lib/Util.js";import{DefaultBufferWriter as m}from"./DefaultBufferWriter.js";import{TriangleMaterial as p}from"./TriangleMaterial.js";import{VisualVariablePassParameters as d}from"./VisualVariablePassParameters.js";import{writeAttributes as g,writeBufferVec4 as x,writeTextureElementIndex as b,writeConstTextureElementIndex as y,writeColor as j,writeVVFeatureAttribute as B}from"./internal/bufferWriterUtils.js";import{getLayout as w,getTextureLayout as _}from"../shaders/PatternLayouts.js";import{PatternTechnique as C}from"../shaders/PatternTechnique.js";import{PatternTechniqueConfiguration as F}from"../shaders/PatternTechniqueConfiguration.js";import{alphaCutoff as S}from"../../../../webscene/support/AlphaCutoff.js";class V extends p{constructor(e){super(e,T),this._configuration=new F,this.supportsEdges=!0,this.transparent=!0,this.produces=new Map([[2,e=>a(e)],[4,e=>u(e)],[5,e=>f(e)],[18,e=>this.parameters.draped&&l(e)]])}updateConfiguration(e){super.updateConfiguration(e),this._configuration.cullFace=this.parameters.cullFace,this._configuration.hasVertexColors=this.parameters.hasVertexColors&&!this.parameters.vvColor,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.style=this.parameters.style,this._configuration.draped=this.parameters.draped,this._configuration.hasVVColor=!!this.parameters.vvColor,this._configuration.emissionSource=this.emissions?1:0}get visible(){return this.parameters.color[3]>=S}get emissions(){return this.parameters.emissiveStrength>0?2:0}createGLMaterial(e){return new v(e)}createBufferWriter(){return new P(w(this.parameters),_(this.parameters))}}class v extends c{beginSlot(e){return this.getTechnique(C,e)}}class P extends m{constructor(e,t){super(e),this.textureBufferLayout=t}elementCountTextureBuffer(e){return e.get("boundingRect")?.indices.length??0}write(e,t,r,s,i,o,n){null!=i&&this._writeVertexBuffer(e,t,r,s,i,o),null!=n&&this._writeTextureBuffer(e,r,n)}_writeVertexBuffer(e,t,i,o,n,a){const{buffer:u,offset:f}=n;g(i,o,this.layout,e,t,n);for(const s of this.layout.fields.keys()){const e=i.get(s),t=e?.indices;if(e&&t)switch(s){case"uvMapSpace":{h(4===e.size);const t=u.getField(s,r);t&&x(e,t,f);break}}}const{textureBufferLayout:l}=this;if(null!=l&&null!=a){const e=a.from,t=u.getField("textureElementIndex",s);h(null!=t,"Missing component index field");const r=i.get("position")?.indices.length??0,o=i.get("textureElementIndex");null!=o?b(o,t,f,e):y(t,f,e,r)}}_writeTextureBuffer(t,r,s){const{textureBufferLayout:a}=this;if(null==a)return;const{buffer:u,offset:f}=s,l=u.getField("boundingRect",i),c=r.get("boundingRect");l&&c&&(h(9===c.size),L(c,t??e,l,f));const m=u.getField("color",o),p=r.get("color");m&&p&&(h(3===p.size||4===p.size),j(p,p.size,m,f));const d=u.getField("colorFeatureAttribute",n),g=r.get("colorFeatureAttribute");d&&g&&(h(1===g.size),B(g,d,f))}}function L(e,t,r,s){const{data:i,indices:o}=e,n=t,a=r.typedBuffer,u=r.typedBufferStride,f=o.length;s*=u;for(let l=0;l<f;++l){const e=9*o[l],t=i[e],r=i[e+1],f=i[e+2];a[s]=n[0]*t+n[4]*r+n[8]*f+n[12],a[s+1]=n[1]*t+n[5]*r+n[9]*f+n[13],a[s+2]=n[2]*t+n[6]*r+n[10]*f+n[14];for(let o=3;o<9;++o)a[s+o]=i[e+o];s+=u}}class T extends d{constructor(){super(...arguments),this.color=t(1,1,1,1),this.emissiveStrength=0,this.hasVertexColors=!1,this.polygonOffset=0,this.hasSlicePlane=!1,this.cullFace=0,this.hasOccludees=!1,this.style=2,this.draped=!0,this.useIndexing=!0}}export{T as Parameters,V as PatternMaterial};
|
|
@@ -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 t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as r,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{secondsFromMilliseconds as s,Seconds as a}from"../../../../core/time.js";import{copy as n}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{set as o,subtract as l,dot as p,scale as c,add as m,copy as h,length as u,distance as f,lerp as d,transformMat4 as g,normalize as b}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as S}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as _}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ONES as v,create as y}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{makeFloat16Array as P}from"../../../../geometry/support/float16.js";import{fromPoints as E,distance2 as x,closestLineSegmentPoint as w,projectPoint as z,projectPointFraction as j,create as T}from"../../../../geometry/support/lineSegment.js";import{fromPoints as L,signedDistance as A,getNormal as M,create as R}from"../../../../geometry/support/plane.js";import{BufferViewUint32 as C,BufferViewVec3f as O}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as V,isColor as F,isDepth as B,isColorHighlightOLIDOrDepth as U,is2DGeometryOutput as N}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as I}from"../effects/geometry/olidUtils.js";import k from"../lib/GLMaterial.js";import{Material as W}from"../lib/Material.js";import{projectWorldLineSegmentToRenderScreen as D,screenPolygonIntersectsBufferedSegment as Y}from"../lib/screenPolygonOverlapUtils.js";import{Hit as J}from"../lib/screenPolygonTriangleIntersections.js";import{ScreenSizePerspectiveEvaluator as q}from"../lib/screenSizePerspectiveUtils.js";import{isTranslationMatrix as X,assert as G}from"../lib/Util.js";import{isImagePattern as H}from"./lineStippleUtils.js";import{VisualVariablePassParameters as K}from"./VisualVariablePassParameters.js";import{r as Q}from"../../../../chunks/RibbonLine.glsl.js";import{getLayout as Z,getTextureBufferLayout as $}from"../shaders/RibbonLineLayouts.js";import{RibbonLineTechnique as ee}from"../shaders/RibbonLineTechnique.js";import{RibbonLineTechniqueConfiguration as te}from"../shaders/RibbonLineTechniqueConfiguration.js";import{alphaCutoff as re}from"../../../../webscene/support/AlphaCutoff.js";class ie extends W{constructor(e,t){super(e,ae),this.produces=new Map([[2,e=>V(e)||F(e)&&8===this.parameters.renderOccluded],[3,e=>B(e)],[10,e=>U(e)&&8===this.parameters.renderOccluded],[11,e=>U(e)&&8===this.parameters.renderOccluded],[4,e=>F(e)&&this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[8,e=>F(e)&&!this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[18,e=>N(e)]]),this._configuration=new te(t)}updateConfiguration(e){super.updateConfiguration(e);const t=18===e.slot,r=null!=this.parameters.stipplePattern&&null!=this.parameters.stippleTexture&&10!==e.output,i=r&&t&&this.parameters.isImagePattern();this._configuration.draped=t,this._configuration.polygonOffset=this.parameters.polygonOffset,this._configuration.stippleEnabled=r,this._configuration.stippleOffColorEnabled=r&&null!=this.parameters.stippleOffColor,this._configuration.stipplePreferContinuous=r&&this.parameters.stipplePreferContinuous,this._configuration.numJoinSubdivisions=ce(this.parameters.join,r),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.roundJoins="round"===this.parameters.join,this._configuration.capType=this.parameters.cap,this._configuration.applyMarkerOffset=null!=this.parameters.markerParameters&&pe(this.parameters.markerParameters),this._configuration.polygonOffsetIndex=this.parameters.polygonOffsetIndex,this._configuration.writeDepth=this.parameters.writeDepth,this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.innerColorEnabled=this.parameters.innerWidth>0&&null!=this.parameters.innerColor,this._configuration.falloffEnabled=this.parameters.falloff>0,this._configuration.hasOccludees=e.hasOccludees,this._configuration.occluder=8===this.parameters.renderOccluded,this._configuration.wireframe=this.parameters.wireframe,this._configuration.animation=this.parameters.animation,this._configuration.emissionSource=this.emissions?1:0,this._configuration.hasScreenSizePerspective=!!this.parameters.screenSizePerspective&&!i,this._configuration.worldSizedImagePattern=i}get visible(){return this.parameters.color[3]>=re||null!=this.parameters.stipplePattern&&(this.parameters.stippleOffColor?.[3]??0)>re}get emissions(){return this.parameters.emissiveStrength>0?8!==this.parameters.renderOccluded?2:1:0}setParameters(e,t){e.animation=this.parameters.animation,super.setParameters(e,t)}intersectRayDraped({attributes:e,screenToWorldRatio:r},i,s,a,n){if(!i.options.selectionMode)return;const o=e.get("size");let l=this.parameters.width;if(this.parameters.vvSize){const r=e.get("sizeFeatureAttribute").data[0];Number.isNaN(r)?l*=this.parameters.vvSize.fallback[0]:l*=t(this.parameters.vvSize.offset[0]+r*this.parameters.vvSize.factor[0],this.parameters.vvSize.minSize[0],this.parameters.vvSize.maxSize[0])}else o&&(l*=o.data[0]);const p=s[0],c=s[1],m=(l/2+Ue)*r;let h=Number.MAX_VALUE,u=0;const f=e.get("position").data,d=le(this.parameters,e)?f.length-2:f.length-5;for(let g=0;g<d;g+=3){const e=f[g],r=f[g+1],i=(g+3)%f.length,s=p-e,a=c-r,n=f[i]-e,o=f[i+1]-r,l=t((n*s+o*a)/(n*n+o*o),0,1),m=n*l-s,d=o*l-a,b=m*m+d*d;b<h&&(h=b,u=g/3)}h<m*m&&a(n.distance,n.normal,u)}intersectRay(t,r,i,s,a,d){const{options:g,camera:b,rayBegin:S,rayEnd:_}=i;if(!g.selectionMode||!t.visible||!b)return;if(!X(r))return void e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix");const v=t.attributes,y=v.get("position").data,P=this._getLineSize(v),z=_e;n(z,i.point);const j=P*b.pixelRatio,T=Ue*b.pixelRatio,R=j/2+T;o(Re[0],z[0]-R,z[1]+R,0),o(Re[1],z[0]+R,z[1]+R,0),o(Re[2],z[0]+R,z[1]-R,0),o(Re[3],z[0]-R,z[1]-R,0);for(let e=0;e<4;e++)if(!b.unprojectFromRenderScreen(Re[e],Ce[e]))return;L(b.eye,Ce[0],Ce[1],Oe),L(b.eye,Ce[1],Ce[2],Ve),L(b.eye,Ce[2],Ce[3],Fe),L(b.eye,Ce[3],Ce[0],Be);let C=Number.MAX_VALUE,O=0;for(const e of this._forEachTransformedLineSegment(he,ue,y,r,le(this.parameters,v))){if(A(Oe,he)<0&&A(Oe,ue)<0||A(Ve,he)<0&&A(Ve,ue)<0||A(Fe,he)<0&&A(Fe,ue)<0||A(Be,he)<0&&A(Be,ue)<0)continue;const t=b.projectToRenderScreen(he,ve),r=b.projectToRenderScreen(ue,ye);if(null==t||null==r)continue;if(t[2]<0&&r[2]>0){l(be,he,ue);const e=b.frustum,r=-A(e[4],he)/p(be,M(e[4]));if(c(be,be,r),m(he,he,be),!b.projectToRenderScreen(he,t))continue}else if(t[2]>0&&r[2]<0){l(be,ue,he);const e=b.frustum,t=-A(e[4],ue)/p(be,M(e[4]));if(c(be,be,t),m(ue,ue,be),!b.projectToRenderScreen(ue,r))continue}else if(t[2]<0&&r[2]<0)continue;t[2]=0,r[2]=0;const i=E(t,r,ze),s=x(i,z);if(!(s>=C)){if(this.parameters.screenSizePerspective){const e=this.computeScreenSizePerspectiveWidth(i,he,ue,z,b,P,T);if(s>=e*e)continue}C=s,h(xe,he),h(we,ue),O=e}}if(C<R*R){let e=Number.MAX_VALUE;if(w(E(xe,we,ze),E(S,_,je),Se)){l(Se,Se,S);const t=u(Se);c(Se,Se,1/t),e=t/f(S,_)}d(e,Se,O)}}intersectScreenPolygon(t,r,i,s){const{options:a,camera:n,screenPolygonPrimitiveProcessor:o}=i;if(!a.selectionMode||!t.visible)return null;if(!X(r))return e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix"),null;const l=t.attributes,p=l.get("position").data,c=this._getLineSize(l),m=Ue,h=m*n.pixelRatio,u=new J;for(const e of this._forEachTransformedLineSegment(he,ue,p,r,le(this.parameters,l)))for(const[t,r]of o.processLineSegment(Ne,he,ue)){if(!D(n,t,r,ve,ye))continue;const i=E(ve,ye,ze);let a=c/2+m;this.parameters.screenSizePerspective&&(d(_e,ve,ye,.5),a=Math.max(a,this.computeScreenSizePerspectiveWidth(i,t,r,_e,n,c,h)/n.pixelRatio)),n.renderToScreen(ve,Pe),n.renderToScreen(ye,Ee),Y(s,Pe,Ee,a)&&(z(E(t,r,je),n.eye,fe),u.updateIfCloserFromValues(f(n.eye,fe),e,fe,null))}return u}createBufferWriter(){return new ne(Z(this.parameters),$(this.parameters),this.parameters)}createGLMaterial(e){return new se(e)}validateParameters(e){"miter"!==e.join&&(e.miterLimit=0),null!=e.markerParameters&&(e.markerScale=e.markerParameters.width/e.width)}update(e){return!!this.parameters.hasAnimation&&(this.setParameters({timeElapsed:s(e.time)},!1),0!==e.dt)}computeScreenSizePerspectiveWidth(e,t,r,i,s,a,n){const o=j(e,i);d(fe,t,r,o),g(de,fe,s.viewMatrix);const l=u(de),p=this.computeCameraAbsCosAngle(fe,s,this._configuration.spherical);me.update(p,l,this.parameters.screenSizePerspective,this.parameters.screenSizePerspectiveMinPixelReferenceSize);return me.apply(a)*s.pixelRatio/2+n}computeCameraAbsCosAngle(e,t,r){return r?b(Se,e):o(Se,0,0,1),l(ge,e,t.eye),b(ge,ge),Math.abs(p(Se,ge))}_getLineSize(e,r=!1){let i=this.parameters.width;if(this.parameters.vvSize){const s=e.get("sizeFeatureAttribute").data[0];Number.isNaN(s)?r&&(i*=this.parameters.vvSize.fallback[0]):i*=t(this.parameters.vvSize.offset[0]+s*this.parameters.vvSize.factor[0],this.parameters.vvSize.minSize[0],this.parameters.vvSize.maxSize[0])}else e.has("size")&&(i*=e.get("size").data[0]);return i}*_forEachTransformedLineSegment(e,t,r,i,s){const a=s?r.length-2:r.length-5;for(let n=0;n<a;n+=3){e[0]=r[n]+i[12],e[1]=r[n+1]+i[13],e[2]=r[n+2]+i[14];const s=(n+3)%r.length;t[0]=r[s]+i[12],t[1]=r[s+1]+i[13],t[2]=r[s+2]+i[14],yield n/3}}}class se extends k{constructor(){super(...arguments),this._stipplePattern=null}dispose(){super.dispose(),this._stippleTextures?.release(this._stipplePattern),this._stipplePattern=null}beginSlot(e){const{stipplePattern:t}=this._material.parameters;return this._stipplePattern!==t&&(this._material.setParameters({stippleTexture:this._stippleTextures.swap(t,this._stipplePattern)}),this._stipplePattern=t),this.getTechnique(ee,e)}}class ae extends K{constructor(){super(...arguments),this._width=0,this.color=v,this.join="miter",this.cap=0,this.miterLimit=5,this.writeDepth=!0,this.polygonOffset=0,this.polygonOffsetIndex=0,this.stippleTexture=null,this.stipplePreferContinuous=!0,this.markerParameters=null,this.markerScale=1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.isClosed=!1,this.falloff=0,this.innerWidth=0,this.wireframe=!1,this.timeElapsed=a(0),this.animation=0,this.animationSpeed=1,this.trailLength=1,this.startTime=a(0),this.endTime=a(1/0),this.emissiveStrength=0}get width(){return this.isImagePattern()?this.stipplePattern.width:this._width}set width(e){this._width=e}get transparent(){return this.color[3]<1||this.hasAnimation||null!=this.stipplePattern&&(this.stippleOffColor?.[3]??0)<1}get hasAnimation(){return 0!==this.animation}isImagePattern(){return H(this.stipplePattern)&&null!=this.stippleTexture}}class ne{constructor(e,t,r){this.layout=e,this.textureBufferLayout=t,this._parameters=r,this.numJoinSubdivisions=ce(this._parameters.join,null!=this._parameters.stipplePattern)}_isClosed(e){return le(this._parameters,e)}allocate(e){return this.layout.createBuffer(e)}elementCountTextureBuffer(e){return e.get("position").data.length/3+2}elementCount(e){const t=2,r=e.get("position").indices.length/2+1,i=this._isClosed(e);let s=i?2:2*t;return s+=((i?r:r-1)-(i?0:1))*(2*this.numJoinSubdivisions+4),s+=2,this._parameters.wireframe&&(s=2+4*(s-2)),s}write(e,t,r,i,s,a){const{buffer:n,offset:l}=s,{layout:p,textureBufferLayout:c}=this,m=r.get("position"),u=m.indices,d=m.data.length/3,b=d+2,S=r.get("distanceToStart")?.data;u&&u.length!==2*(d-1)&&console.warn("RibbonLineMaterial does not support indices");const v=n.getField("textureElementIndex",C);G(null!=v,"Missing texture buffer index field"),G(null!==a,"Expected texture buffer target"),G(null!==c,"Expected valid textureBufferLayout");const{textureBufferRange:y,offset:E}=a;G(null!=y,"Using a texture layout, but the texture range for this instance was not provided");const x=y.from;G(y.numElements===b,"Expected number of elements in TextureBuffer to equal number of points");const{buffer:w}=a,z=w.getField("position",O);G(null!==z,"Expected valid position field in texture buffer");const j=p.fields.has("sizeFeatureAttribute");let T=1,L=null;if(j){const e=r.get("sizeFeatureAttribute");1===e.data.length?T=e.data[0]:L=e.data}else T=r.get("size")?.data[0]??1;let A=[1,1,1,1],M=0,R=null;const V=p.fields.has("colorFeatureAttribute");if(V){const e=r.get("colorFeatureAttribute");1===e.data.length?M=e.data[0]:R=e.data}else A=r.get("color")?.data??A;const F=r.get("timeStamps")?.data,B=F&&p.fields.has("timeStamps"),U=p.fields.has("opacityFeatureAttribute");let N=0,k=null;if(U){const e=r.get("opacityFeatureAttribute");1===e.data.length?N=e.data[0]:k=e.data}const W=new Float32Array(n.buffer),D=P(n.buffer),Y=new Uint8Array(n.buffer),J=new Uint32Array(n.buffer),q=p.stride/4;let X=l*q;const H=X;let K=0;const Q=W.BYTES_PER_ELEMENT/D.BYTES_PER_ELEMENT,Z=I(),$=this._isClosed(r),ee=(t,r)=>{const i=3*r;o(t,m.data[i+0],m.data[i+1],m.data[i+2]),e&&g(t,t,e)};for(let o=0;o<d;++o)ee(Le,o),z.setVec(E+o+1,Le);$?(w.copyItem(E+b-2,E+0),w.copyItem(E+1,E+b-1)):(w.copyItem(E+1,E+0),w.copyItem(E+b-2,E+b-1));const te=(e,t,r,s,a,n,o,l)=>{const p=o+1;J[X]=x+p,X++,W[X++]=l;let c=X*Q;if(D[c++]=a,D[c++]=n,X=Math.ceil(c/Q),V)W[X]=R?.[o]??M;else{const e=Math.min(4*o,A.length-4),t=4*X;Y[t]=255*A[e],Y[t+1]=255*A[e+1],Y[t+2]=255*A[e+2],Y[t+3]=255*A[e+3]}if(X++,W[X++]=L?.[o]??T,U&&(W[X++]=k?.[o]??N),Z){let e=4*X;i?(Y[e++]=i[0],Y[e++]=i[1],Y[e++]=i[2],Y[e++]=i[3]):(Y[e++]=0,Y[e++]=0,Y[e++]=0,Y[e++]=0),X=Math.ceil(.25*e)}B&&(c=X*Q,D[c++]=s[0],D[c++]=s[1],D[c++]=s[2],D[c++]=s[3],X=Math.ceil(c/Q))},re=()=>{h(Te,Le),h(Le,Ae)},ie=e=>{if(B){const t=4*e;_(Me,F[t+0],F[t+1],F[t+2],F[t+3])}},se=(e,t,r)=>{null!=S?K=S[r]:K+=f(e,t)};X+=q,ee(Le,0),ie(0);let ae=0,ne=0;$?(ee(Te,d-1),ae=0,ne=d):(ee(Ae,1),te(Le,Le,Ae,Me,1,-4,0,0),te(Le,Le,Ae,Me,1,4,0,0),re(),ie(1),ae=1,ne=d-1);for(let o=ae;o<ne;o++){ee(Ae,(o+1)%d),se(Te,Le,o),te(Te,Le,Ae,Me,0,-1,o,K),te(Te,Le,Ae,Me,0,1,o,K);const e=this.numJoinSubdivisions;for(let t=0;t<e;++t){const r=(t+1)/(e+1);te(Te,Le,Ae,Me,r,-1,o,K),te(Te,Le,Ae,Me,r,1,o,K)}te(Te,Le,Ae,Me,1,-2,o,K),te(Te,Le,Ae,Me,1,2,o,K),re(),ie((o+1)%d)}se(Te,Le,ne),$?(ee(Ae,1),te(Te,Le,Ae,Me,0,-1,ae,K),te(Te,Le,Ae,Me,0,1,ae,K)):(te(Te,Le,Le,Me,0,-5,ne,K),te(Te,Le,Le,Me,0,5,ne,K)),oe(W,H+q,W,H,q);X=oe(W,X-q,W,X,q),this._parameters.wireframe&&this._addWireframeVertices(n,H,X,q)}_addWireframeVertices(e,t,r,i){const s=new Uint8Array(e.buffer,r*Float32Array.BYTES_PER_ELEMENT),a=new Uint8Array(e.buffer,t*Float32Array.BYTES_PER_ELEMENT,(r-t)*Float32Array.BYTES_PER_ELEMENT),n=i*Float32Array.BYTES_PER_ELEMENT;let o=0;const l=e=>o=oe(a,e,s,o,n);for(let p=0;p<=a.length-4*n;p+=2*n)l(p),l(p+2*n),l(p+1*n),l(p+2*n),l(p+1*n),l(p+3*n)}}function oe(e,t,r,i,s){for(let a=0;a<s;a++)r[i++]=e[t++];return i}function le(e,t){if(!e.isClosed)return!1;return t.get("position").indices.length>2}function pe(e){return 1===e.anchor&&e.hideOnShortSegments&&"begin-end"===e.placement&&e.worldSpace}function ce(e,t){const r=t?1:0;switch(e){case"miter":case"bevel":return r;case"round":return Q+r}}const me=new q,he=S(),ue=S(),fe=S(),de=S(),ge=S(),be=S(),Se=S(),_e=S(),ve=r(),ye=r(),Pe=i(),Ee=i(),xe=S(),we=S(),ze=T(),je=T(),Te=S(),Le=S(),Ae=S(),Me=y(),Re=[r(),r(),r(),r()],Ce=[S(),S(),S(),S()],Oe=R(),Ve=R(),Fe=R(),Be=R(),Ue=4,Ne=[S(),S()];export{ae as Parameters,ie as RibbonLineMaterial};
|
|
2
|
+
import e from"../../../../core/Logger.js";import{clamp as t}from"../../../../core/mathUtils.js";import{createRenderScreenPointArray3 as r,createScreenPointArray as i}from"../../../../core/screenUtils.js";import{secondsFromMilliseconds as s,Seconds as a}from"../../../../core/time.js";import{copy as n,set as o}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{set as c,subtract as p,dot as m,scale as h,add as u,copy as f,length as d,distance as g,lerp as _,transformMat4 as b,normalize as S}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as P}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{set as y}from"../../../../core/libs/gl-matrix-2/math/vec4.js";import{ONES as v,create as w}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{makeFloat16Array as T}from"../../../../geometry/support/float16.js";import{fromPoints as E,distance2 as x,closestLineSegmentPoint as j,projectPoint as L,projectPointFraction as z,create as A}from"../../../../geometry/support/lineSegment.js";import{fromPoints as M,signedDistance as C,getNormal as R,create as O}from"../../../../geometry/support/plane.js";import{BufferViewVec3f as V,BufferViewUint32 as B}from"../../../../geometry/support/buffer/BufferView.js";import{isHighlightOrOLID as F,isColor as U,isDepth as I,isColorHighlightOLIDOrDepth as N,is2DGeometryOutput as k}from"../core/shaderLibrary/ShaderOutput.js";import{olidEnabled as W}from"../effects/geometry/olidUtils.js";import D from"../lib/GLMaterial.js";import{Material as Y}from"../lib/Material.js";import{projectWorldLineSegmentToRenderScreen as J,screenPolygonIntersectsBufferedSegment as q}from"../lib/screenPolygonOverlapUtils.js";import{Hit as X,DrapedHit as G}from"../lib/screenPolygonTriangleIntersections.js";import{ScreenSizePerspectiveEvaluator as H}from"../lib/screenSizePerspectiveUtils.js";import{isTranslationMatrix as K,assert as Q}from"../lib/Util.js";import{isImagePattern as Z}from"./lineStippleUtils.js";import{VisualVariablePassParameters as $}from"./VisualVariablePassParameters.js";import{r as ee}from"../../../../chunks/RibbonLine.glsl.js";import{getLayout as te,getTextureBufferLayout as re}from"../shaders/RibbonLineLayouts.js";import{RibbonLineTechnique as ie}from"../shaders/RibbonLineTechnique.js";import{RibbonLineTechniqueConfiguration as se}from"../shaders/RibbonLineTechniqueConfiguration.js";import{alphaCutoff as ae}from"../../../../webscene/support/AlphaCutoff.js";class ne extends Y{constructor(e,t){super(e,le),this.produces=new Map([[2,e=>F(e)||U(e)&&8===this.parameters.renderOccluded],[3,e=>I(e)],[10,e=>N(e)&&8===this.parameters.renderOccluded],[11,e=>N(e)&&8===this.parameters.renderOccluded],[4,e=>U(e)&&this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[8,e=>U(e)&&!this.parameters.writeDepth&&8!==this.parameters.renderOccluded],[18,e=>k(e)]]),this._configuration=new se(t)}updateConfiguration(e){super.updateConfiguration(e);const t=18===e.slot,r=null!=this.parameters.stipplePattern&&null!=this.parameters.stippleTexture&&10!==e.output,i=r&&t&&this.parameters.isImagePattern();this._configuration.draped=t,this._configuration.polygonOffset=this.parameters.polygonOffset,this._configuration.stippleEnabled=r,this._configuration.stippleOffColorEnabled=r&&null!=this.parameters.stippleOffColor,this._configuration.stipplePreferContinuous=r&&this.parameters.stipplePreferContinuous,this._configuration.numJoinSubdivisions=de(this.parameters.join,r),this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.roundJoins="round"===this.parameters.join,this._configuration.capType=this.parameters.cap,this._configuration.applyMarkerOffset=null!=this.parameters.markerParameters&&fe(this.parameters.markerParameters),this._configuration.polygonOffsetIndex=this.parameters.polygonOffsetIndex,this._configuration.writeDepth=this.parameters.writeDepth,this._configuration.hasVVSize=this.parameters.hasVVSize,this._configuration.hasVVColor=this.parameters.hasVVColor,this._configuration.hasVVOpacity=this.parameters.hasVVOpacity,this._configuration.innerColorEnabled=this.parameters.innerWidth>0&&null!=this.parameters.innerColor,this._configuration.falloffEnabled=this.parameters.falloff>0,this._configuration.hasOccludees=e.hasOccludees,this._configuration.occluder=8===this.parameters.renderOccluded,this._configuration.wireframe=this.parameters.wireframe,this._configuration.animation=this.parameters.animation,this._configuration.emissionSource=this.emissions?1:0,this._configuration.hasScreenSizePerspective=!!this.parameters.screenSizePerspective&&!i,this._configuration.worldSizedImagePattern=i}get visible(){return this.parameters.color[3]>=ae||null!=this.parameters.stipplePattern&&(this.parameters.stippleOffColor?.[3]??0)>ae}get emissions(){return this.parameters.emissiveStrength>0?8!==this.parameters.renderOccluded?2:1:0}setParameters(e,t){e.animation=this.parameters.animation,super.setParameters(e,t)}intersectRayDraped({attributes:e,screenToWorldRatio:r},i,s,a,n){if(!i.options.selectionMode)return;const o=this._getLineSize(e,!0),l=s[0],c=s[1],p=he(o,r);let m=Number.MAX_VALUE,h=0;for(const u of ue(Se,Pe,this.parameters,e)){const e=l-Se[0],r=c-Se[1],i=Pe[0]-Se[0],s=Pe[1]-Se[1],a=t((i*e+s*r)/(i*i+s*s),0,1),n=i*a-e,o=s*a-r,p=n*n+o*o;p<m&&(m=p,h=u)}m<p*p&&a(n.distance,n.normal,h)}intersectRay(t,r,i,s,a,o){const{options:l,camera:_,rayBegin:b,rayEnd:S}=i;if(!l.selectionMode||!t.visible||!_)return;if(!K(r))return void e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix");const P=t.attributes,y=P.get("position").data,v=this._getLineSize(P),w=xe;n(w,i.point);const T=v*_.pixelRatio,L=Je*_.pixelRatio,z=T/2+L;c(Ie[0],w[0]-z,w[1]+z,0),c(Ie[1],w[0]+z,w[1]+z,0),c(Ie[2],w[0]+z,w[1]-z,0),c(Ie[3],w[0]-z,w[1]-z,0);for(let e=0;e<4;e++)if(!_.unprojectFromRenderScreen(Ie[e],Ne[e]))return;M(_.eye,Ne[0],Ne[1],ke),M(_.eye,Ne[1],Ne[2],We),M(_.eye,Ne[2],Ne[3],De),M(_.eye,Ne[3],Ne[0],Ye);let A=Number.MAX_VALUE,O=0;for(const e of this._forEachTransformedLineSegment(_e,be,y,r,me(this.parameters,P))){if(C(ke,_e)<0&&C(ke,be)<0||C(We,_e)<0&&C(We,be)<0||C(De,_e)<0&&C(De,be)<0||C(Ye,_e)<0&&C(Ye,be)<0)continue;const t=_.projectToRenderScreen(_e,je),r=_.projectToRenderScreen(be,Le);if(null==t||null==r)continue;if(t[2]<0&&r[2]>0){p(Te,_e,be);const e=_.frustum,r=-C(e[4],_e)/m(Te,R(e[4]));if(h(Te,Te,r),u(_e,_e,Te),!_.projectToRenderScreen(_e,t))continue}else if(t[2]>0&&r[2]<0){p(Te,be,_e);const e=_.frustum,t=-C(e[4],be)/m(Te,R(e[4]));if(h(Te,Te,t),u(be,be,Te),!_.projectToRenderScreen(be,r))continue}else if(t[2]<0&&r[2]<0)continue;t[2]=0,r[2]=0;const i=E(t,r,Re),s=x(i,w);if(!(s>=A)){if(this.parameters.screenSizePerspective){const e=this.computeScreenSizePerspectiveWidth(i,_e,be,w,_,v,L);if(s>=e*e)continue}A=s,f(Me,_e),f(Ce,be),O=e}}if(A<z*z){let e=Number.MAX_VALUE;if(j(E(Me,Ce,Re),E(b,S,Oe),Ee)){p(Ee,Ee,b);const t=d(Ee);h(Ee,Ee,1/t),e=t/g(b,S)}o(e,Ee,O)}}intersectScreenPolygon(t,r,i,s){const{options:a,camera:n,screenPolygonPrimitiveProcessor:o}=i;if(!a.selectionMode||!t.visible)return null;if(!K(r))return e.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial").error("intersection assumes a translation-only matrix"),null;const l=t.attributes,c=l.get("position").data,p=this._getLineSize(l),m=Je,h=m*n.pixelRatio,u=new X(4);for(const e of this._forEachTransformedLineSegment(_e,be,c,r,me(this.parameters,l)))for(const[t,r]of o.processLineSegment(qe,_e,be)){if(!J(n,t,r,je,Le))continue;const i=E(je,Le,Re);let a=p/2+m;this.parameters.screenSizePerspective&&(_(xe,je,Le,.5),a=Math.max(a,this.computeScreenSizePerspectiveWidth(i,t,r,xe,n,p,h)/n.pixelRatio)),n.renderToScreen(je,ze),n.renderToScreen(Le,Ae),q(s,ze,Ae,a)&&(L(E(t,r,Oe),n.eye,ye),u.updateIfCloserFromValues(g(n.eye,ye),e,ye,null))}return u}intersectScreenPolygonDraped({attributes:e,screenToWorldRatio:t},r,i,s){if(!i.options.selectionMode)return null;const a=he(this._getLineSize(e,!0),t);for(const n of ue(Se,Pe,this.parameters,e,r))if(q(s,Se,Pe,a))return new G(n);return null}createBufferWriter(){return new ce(te(this.parameters),re(this.parameters),this.parameters)}createGLMaterial(e){return new oe(e)}validateParameters(e){"miter"!==e.join&&(e.miterLimit=0),null!=e.markerParameters&&(e.markerScale=e.markerParameters.width/e.width)}update(e){return!!this.parameters.hasAnimation&&(this.setParameters({timeElapsed:s(e.time)},!1),0!==e.dt)}computeScreenSizePerspectiveWidth(e,t,r,i,s,a,n){const o=z(e,i);_(ye,t,r,o),b(ve,ye,s.viewMatrix);const l=d(ve),c=this.computeCameraAbsCosAngle(ye,s,this._configuration.spherical);ge.update(c,l,this.parameters.screenSizePerspective,this.parameters.screenSizePerspectiveMinPixelReferenceSize);return ge.apply(a)*s.pixelRatio/2+n}computeCameraAbsCosAngle(e,t,r){return r?S(Ee,e):c(Ee,0,0,1),p(we,e,t.eye),S(we,we),Math.abs(m(Ee,we))}_getLineSize(e,r=!1){let i=this.parameters.width;if(this.parameters.vvSize){const s=e.get("sizeFeatureAttribute").data[0];Number.isNaN(s)?r&&(i*=this.parameters.vvSize.fallback[0]):i*=t(this.parameters.vvSize.offset[0]+s*this.parameters.vvSize.factor[0],this.parameters.vvSize.minSize[0],this.parameters.vvSize.maxSize[0])}else e.has("size")&&(i*=e.get("size").data[0]);return i}*_forEachTransformedLineSegment(e,t,r,i,s){const a=s?r.length-2:r.length-5;for(let n=0;n<a;n+=3){e[0]=r[n]+i[12],e[1]=r[n+1]+i[13],e[2]=r[n+2]+i[14];const s=(n+3)%r.length;t[0]=r[s]+i[12],t[1]=r[s+1]+i[13],t[2]=r[s+2]+i[14],yield n/3}}}class oe extends D{constructor(){super(...arguments),this._stipplePattern=null}dispose(){super.dispose(),this._stippleTextures?.release(this._stipplePattern),this._stipplePattern=null}beginSlot(e){const{stipplePattern:t}=this._material.parameters;return this._stipplePattern!==t&&(this._material.setParameters({stippleTexture:this._stippleTextures.swap(t,this._stipplePattern)}),this._stipplePattern=t),this.getTechnique(ie,e)}}class le extends ${constructor(){super(...arguments),this._width=0,this.color=v,this.join="miter",this.cap=0,this.miterLimit=5,this.writeDepth=!0,this.polygonOffset=0,this.polygonOffsetIndex=0,this.stippleTexture=null,this.stipplePreferContinuous=!0,this.markerParameters=null,this.markerScale=1,this.hasSlicePlane=!1,this.vvFastUpdate=!1,this.isClosed=!1,this.falloff=0,this.innerWidth=0,this.wireframe=!1,this.timeElapsed=a(0),this.animation=0,this.animationSpeed=1,this.trailLength=1,this.startTime=a(0),this.endTime=a(1/0),this.emissiveStrength=0}get width(){return this.isImagePattern()?this.stipplePattern.width:this._width}set width(e){this._width=e}get transparent(){return this.color[3]<1||this.hasAnimation||null!=this.stipplePattern&&(this.stippleOffColor?.[3]??0)<1}get hasAnimation(){return 0!==this.animation}isImagePattern(){return Z(this.stipplePattern)&&null!=this.stippleTexture}}class ce{constructor(e,t,r){this.layout=e,this.textureBufferLayout=t,this._parameters=r,this.numJoinSubdivisions=de(this._parameters.join,null!=this._parameters.stipplePattern)}_isClosed(e){return me(this._parameters,e)}allocate(e){return this.layout.createBuffer(e)}elementCountTextureBuffer(e){return e.get("position").data.length/3+2}elementCount(e){const t=2,r=e.get("position").indices.length/2+1,i=this._isClosed(e);let s=i?2:2*t;return s+=((i?r:r-1)-(i?0:1))*(2*this.numJoinSubdivisions+4),s+=2,this._parameters.wireframe&&(s=2+4*(s-2)),s}write(e,t,r,i,s,a,n){null!=n&&this._writeTextureBuffer(e,r,n),null!=s&&this._writeVertexBuffer(e,r,i,s,a)}_writeTextureBuffer(e,t,r){const i=t.get("position"),s=i.data.length/3,a=s+2,n=this._isClosed(t),{buffer:o,offset:l}=r,c=o.getField("position",V);Q(null!==c,"Expected valid position field in texture buffer");for(let p=0;p<s;++p)this._getTransformedPosition(Be,i.data,p,e),c.setVec(l+p+1,Be);n?(o.copyItem(l+a-2,l+0),o.copyItem(l+1,l+a-1)):(o.copyItem(l+1,l+0),o.copyItem(l+a-2,l+a-1))}_writeVertexBuffer(e,t,r,i,s){const{buffer:a,offset:n}=i,{layout:o}=this,l=t.get("position"),c=l.indices,p=l.data.length/3,m=p+2,h=t.get("distanceToStart")?.data;c&&c.length!==2*(p-1)&&console.warn("RibbonLineMaterial does not support indices");const u=a.getField("textureElementIndex",B);Q(null!=u,"Missing texture buffer index field"),Q(null!=s,"Using a texture layout, but the texture range for this instance was not provided");const d=s.from;Q(s.numElements===m,"Expected number of elements in TextureBuffer to equal number of points");const _=o.fields.has("sizeFeatureAttribute");let b=1,S=null;if(_){const e=t.get("sizeFeatureAttribute");1===e.data.length?b=e.data[0]:S=e.data}else b=t.get("size")?.data[0]??1;let P=[1,1,1,1],v=0,w=null;const E=o.fields.has("colorFeatureAttribute");if(E){const e=t.get("colorFeatureAttribute");1===e.data.length?v=e.data[0]:w=e.data}else P=t.get("color")?.data??P;const x=t.get("timeStamps")?.data,j=x&&o.fields.has("timeStamps"),L=o.fields.has("opacityFeatureAttribute");let z=0,A=null;if(L){const e=t.get("opacityFeatureAttribute");1===e.data.length?z=e.data[0]:A=e.data}const M=new Float32Array(a.buffer),C=T(a.buffer),R=new Uint8Array(a.buffer),O=new Uint32Array(a.buffer),V=o.stride/4;let F=n*V;const U=F;let I=0;const N=M.BYTES_PER_ELEMENT/C.BYTES_PER_ELEMENT,k=W(),D=this._isClosed(t),Y=(e,t,i,s,a,n,o,l)=>{const c=o+1;O[F]=d+c,F++,M[F++]=l;let p=F*N;if(C[p++]=a,C[p++]=n,F=Math.ceil(p/N),E)M[F]=w?.[o]??v;else{const e=Math.min(4*o,P.length-4),t=4*F;R[t]=255*P[e],R[t+1]=255*P[e+1],R[t+2]=255*P[e+2],R[t+3]=255*P[e+3]}if(F++,M[F++]=S?.[o]??b,L&&(M[F++]=A?.[o]??z),k){let e=4*F;r?(R[e++]=r[0],R[e++]=r[1],R[e++]=r[2],R[e++]=r[3]):(R[e++]=0,R[e++]=0,R[e++]=0,R[e++]=0),F=Math.ceil(.25*e)}j&&(p=F*N,C[p++]=s[0],C[p++]=s[1],C[p++]=s[2],C[p++]=s[3],F=Math.ceil(p/N))},J=()=>{f(Ve,Be),f(Be,Fe)},q=e=>{if(j){const t=4*e;y(Ue,x[t+0],x[t+1],x[t+2],x[t+3])}},X=(e,t,r)=>{null!=h?I=h[r]:I+=g(e,t)};F+=V,this._getTransformedPosition(Be,l.data,0,e),q(0);let G=0,H=0;D?(this._getTransformedPosition(Ve,l.data,p-1,e),G=0,H=p):(this._getTransformedPosition(Fe,l.data,1,e),Y(Be,Be,Fe,Ue,1,-4,0,0),Y(Be,Be,Fe,Ue,1,4,0,0),J(),q(1),G=1,H=p-1);for(let f=G;f<H;f++){this._getTransformedPosition(Fe,l.data,(f+1)%p,e),X(Ve,Be,f),Y(Ve,Be,Fe,Ue,0,-1,f,I),Y(Ve,Be,Fe,Ue,0,1,f,I);const t=this.numJoinSubdivisions;for(let e=0;e<t;++e){const r=(e+1)/(t+1);Y(Ve,Be,Fe,Ue,r,-1,f,I),Y(Ve,Be,Fe,Ue,r,1,f,I)}Y(Ve,Be,Fe,Ue,1,-2,f,I),Y(Ve,Be,Fe,Ue,1,2,f,I),J(),q((f+1)%p)}X(Ve,Be,H),D?(this._getTransformedPosition(Fe,l.data,1,e),Y(Ve,Be,Fe,Ue,0,-1,G,I),Y(Ve,Be,Fe,Ue,0,1,G,I)):(Y(Ve,Be,Be,Ue,0,-5,H,I),Y(Ve,Be,Be,Ue,0,5,H,I)),pe(M,U+V,M,U,V);F=pe(M,F-V,M,F,V),this._parameters.wireframe&&this._addWireframeVertices(a,U,F,V)}_getTransformedPosition(e,t,r,i){const s=3*r;c(e,t[s+0],t[s+1],t[s+2]),i&&b(e,e,i)}_addWireframeVertices(e,t,r,i){const s=new Uint8Array(e.buffer,r*Float32Array.BYTES_PER_ELEMENT),a=new Uint8Array(e.buffer,t*Float32Array.BYTES_PER_ELEMENT,(r-t)*Float32Array.BYTES_PER_ELEMENT),n=i*Float32Array.BYTES_PER_ELEMENT;let o=0;const l=e=>o=pe(a,e,s,o,n);for(let c=0;c<=a.length-4*n;c+=2*n)l(c),l(c+2*n),l(c+1*n),l(c+2*n),l(c+1*n),l(c+3*n)}}function pe(e,t,r,i,s){for(let a=0;a<s;a++)r[i++]=e[t++];return i}function me(e,t){if(!e.isClosed)return!1;return t.get("position").indices.length>2}function he(e,t){return(e/2+Je)*t}function*ue(e,t,r,i,s){const a=i.get("position").data,l=me(r,i)?a.length-2:a.length-5,c=s?.[0]??0,p=s?.[1]??0;o(e,a[0]+c,a[1]+p);for(let m=3;m<l+3;m+=3){const r=m%a.length;o(t,a[r]+c,a[r+1]+p),yield m/3,n(e,t)}}function fe(e){return 1===e.anchor&&e.hideOnShortSegments&&"begin-end"===e.placement&&e.worldSpace}function de(e,t){const r=t?1:0;switch(e){case"miter":case"bevel":return r;case"round":return ee+r}}const ge=new H,_e=P(),be=P(),Se=l(),Pe=l(),ye=P(),ve=P(),we=P(),Te=P(),Ee=P(),xe=P(),je=r(),Le=r(),ze=i(),Ae=i(),Me=P(),Ce=P(),Re=A(),Oe=A(),Ve=P(),Be=P(),Fe=P(),Ue=w(),Ie=[r(),r(),r(),r()],Ne=[P(),P(),P(),P()],ke=O(),We=O(),De=O(),Ye=O(),Je=4,qe=[P(),P()];export{le as Parameters,ne as RibbonLineMaterial};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{set as e,scale as t,add as r,normalize as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as i,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as n}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{center as o,scale as c}from"../../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as p}from"../../../../geometry/support/buffer/BufferView.js";import{isColorOrOLID as h}from"../core/shaderLibrary/ShaderOutput.js";import l from"../lib/GLMaterial.js";import{Material as m,MaterialParameters as f}from"../lib/Material.js";import{intersectTriangleGeometry as u}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as g}from"../lib/screenPolygonTriangleIntersections.js";import{assert as d}from"../lib/Util.js";import{applyPolygonOffsetToHit as b,intersectWithPolygonOffset as
|
|
2
|
+
import{set as e,scale as t,add as r,normalize as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as i,create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as n}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{center as o,scale as c}from"../../../../geometry/support/aaBoundingBox.js";import{BufferViewVec3f as p}from"../../../../geometry/support/buffer/BufferView.js";import{isColorOrOLID as h}from"../core/shaderLibrary/ShaderOutput.js";import l from"../lib/GLMaterial.js";import{Material as m,MaterialParameters as f}from"../lib/Material.js";import{intersectTriangleGeometry as u}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as g}from"../lib/screenPolygonTriangleIntersections.js";import{assert as d}from"../lib/Util.js";import{applyPolygonOffsetToHit as b,intersectWithPolygonOffset as S}from"./intersectWithPolygonOffset.js";import{writeAttributes as _,writePosition as y}from"./internal/bufferWriterUtils.js";import{getLayout as j,ShadedColorMaterialTechnique as x}from"../shaders/ShadedColorMaterialTechnique.js";import{ShadedColorMaterialTechniqueConfiguration as w}from"../shaders/ShadedColorMaterialTechniqueConfiguration.js";import{alphaCutoff as D}from"../../../../webscene/support/AlphaCutoff.js";class z extends m{constructor(e){super(e,T),this._configuration=new w,this.supportsEdges=!0,this.intersectScreenPolygonDraped=void 0,this._pp0=i(0,0,1),this._pp1=i(0,0,0),this.produces=new Map([[2,e=>10===e||h(e)&&!this.parameters.transparent],[4,e=>h(e)&&this.parameters.transparent&&this.parameters.writeDepth],[8,e=>h(e)&&this.parameters.transparent&&!this.parameters.writeDepth]])}updateConfiguration(e){super.updateConfiguration(e),this._configuration.cullFace=this.parameters.cullFace,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.transparent=this.parameters.transparent,this._configuration.writeDepth=this.parameters.writeDepth,this._configuration.screenSizeEnabled=this.parameters.screenSizeEnabled,this._configuration.shadingEnabled=this.parameters.shadingEnabled}get visible(){return this.parameters.color[3]>=D}intersectRay(e,t,r,s,i,a){this._intersectRay(e,r,s,i,a)}intersectRayDraped(e,t,r,s){return this._pp0[0]=this._pp1[0]=r[0],this._pp0[1]=this._pp1[1]=r[1],this._intersectRay(e,t,this._pp0,this._pp1,s)}intersectScreenPolygon(e,t,r,s){return b(g(e,r,t,s,this._createVertexDisplacement(e,r)),this._configuration,r.camera.eye)}_intersectRay(e,t,r,s,i){const a=S(i,this._configuration,r,s);u(e,t,r,s,this._createVertexDisplacement(e,t),a)}_createVertexDisplacement(s,i){if(!this.parameters.screenSizeEnabled)return;const a=s.attributes.get("offset").data;return{applyToVertex:(s,n,o,c,p)=>{const h=e(M,a[3*p],a[3*p+1],a[3*p+2]);e(s,n,o,c);const l=this.parameters.screenSizeScale*(i.camera?.computeScreenPixelSizeAt(h)??1);return t(h,h,l),r(s,s,h),s},applyToAabb:e=>{const t=o(e,M);return c(e,this.parameters.screenSizeScale*(i.camera?.computeScreenPixelSizeAt(t)??1))}}}createGLMaterial(e){return new P(e)}createBufferWriter(){return new E(j(this.parameters))}}class P extends l{beginSlot(e){return this.getTechnique(x,e)}}class T extends f{constructor(){super(...arguments),this.color=n(1,1,1,1),this.shadingTint=n(0,0,0,.25),this.shadingDirection=s(a(),[.5,-.5,-.5]),this.screenSizeScale=14,this.forceTransparentMode=!1,this.writeDepth=!0,this.hasSlicePlane=!1,this.cullFace=0,this.screenSizeEnabled=!1,this.shadingEnabled=!0}get transparent(){return this.color[3]<1||this.forceTransparentMode}}class E{constructor(e){this.layout=e}elementCount(e){return e.get("position").indices.length}write(e,t,r,s,i){if(null==i)return;const{buffer:a,offset:n}=i;_(r,s,this.layout,e,t,i);const o=a.getField("offset",p);if(o&&r.has("offset")){const e=r.get("offset");d(3===e.size),y(e,t,o,n)}}}const M=a();export{T as Parameters,z as ShadedColorMaterial};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{Material as t,MaterialParameters as e}from"../lib/Material.js";import{intersectTriangleGeometry as
|
|
2
|
+
import{Material as t,MaterialParameters as e}from"../lib/Material.js";import{intersectTriangleGeometryPolygon2D as n}from"../lib/PolygonIntersections2D.js";import{intersectTriangleGeometry as r,intersectTriangleGeometry2D as o}from"../lib/RayIntersections.js";import{intersectTriangleGeometryScreenPolygon as s,DrapedHit as i}from"../lib/screenPolygonTriangleIntersections.js";import{intersectWithPolygonOffset as a,applyPolygonOffsetToHit as l}from"./intersectWithPolygonOffset.js";class f extends t{updateConfiguration(t){super.updateConfiguration(t),this._configuration.transparent=this.transparent,this._configuration.enableOITOffset=t.enableOITOffset,this._configuration.polygonOffset=this.parameters.polygonOffset}intersectRay(t,e,n,o,s,i){return i=a(i,this._configuration,o,s),r(t,n,o,s,null,i)}intersectRayDraped(t,e,n,r){return o(n[0],n[1],t,r)}intersectScreenPolygon(t,e,n,r){return l(s(t,n,e,r,null),this._configuration,n.camera.eye)}intersectScreenPolygonDraped(t,e,r,o){const s=n(o,e,t);return null===s?null:new i(s)}}class c extends e{constructor(){super(...arguments),this.polygonOffset=0}}export{f as TriangleMaterial,c as TriangleMaterialParameters};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{removeUnordered as o}from"../../../../../core/arrayUtils.js";import t from"../../../../../core/ObjectPool.js";class r{constructor(o=0,t=0){this.from=o,this.to=t}get numElements(){return this.to-this.from}}function e(t,r=s){if(t.length<2)return;const e=new Map;for(const o of t)e.set(o.from,o);let n=!0;for(;n;){n=!1;for(const s of t){const f=e.get(s.to);f&&(s.to=f.to,e.delete(f.from),o(t,f),n=!0,r.release(f))}}}const s=new t(()=>new r,(o,t=0,r=0)=>{o.from=t,o.to=r},()=>{});export{r as BufferRange,s as bufferRangePool,e as
|
|
2
|
+
import{removeUnordered as o}from"../../../../../core/arrayUtils.js";import t from"../../../../../core/ObjectPool.js";class r{constructor(o=0,t=0){this.from=o,this.to=t}get numElements(){return this.to-this.from}}function e(o,t){return o.from<t.to&&t.from<o.to}function n(t,r=s){if(t.length<2)return;const e=new Map;for(const o of t)e.set(o.from,o);let n=!0;for(;n;){n=!1;for(const s of t){const f=e.get(s.to);f&&(s.to=f.to,e.delete(f.from),o(t,f),n=!0,r.release(f))}}}const s=new t(()=>new r,(o,t=0,r=0)=>{o.from=t,o.to=r},()=>{});export{r as BufferRange,s as bufferRangePool,n as mergeAdjacentRanges,e as rangesIntersect};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{nextHighestPowerOfTwo as e,roundUpToNearest as t}from"../../../../../core/mathUtils.js";import{maxUint32 as r}from"../../../../../core/typedArrayUtil.js";import{copy as s,invert as o,transpose as n}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as a}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{glLayout as i}from"../../../support/buffer/glUtil.js";import{assert as f}from"../../lib/Util.js";import{VertexArrayObject as u}from"../../lib/VertexArrayObject.js";import{getMaxItemCount as c,getMaxByteSize as l}from"../../lib/TextureBackedBuffer/TextureBackedBufferUtils.js";import{bufferRangePool as h}from"./BufferRange.js";import{DrawCommand as g}from"./DrawCommand.js";import{getIndexLayoutForMaxIndex as m,getIndexLayoutForDataType as d}from"./IndexLayout.js";import{BaseInstanceData as y}from"./PerBaseInstanceData.js";import{VertexBuffer as x}from"../../../../webgl/VertexBuffer.js";class _{constructor(e,t){this._rctx=t,this._vaoCacheValue=null,this._instanceVboCacheValue=null,this._textureBufferCacheValue=null,this._vboCacheValue=null;const r=e.createBufferWriter();this._bufferWriter=r;const s=["geometry"],o="textureBufferLayout"in r&&null!=r.textureBufferLayout;this.useTextureBuffer=o,o&&s.push("texture"),this.useIndexing=e.useIndexing,this.useIndexing&&s.push("index"),this.targetBuffers=s}get _vaoCache(){return this._vaoCacheValue??=this._rctx.getVaoCache(i(this._bufferWriter.layout)),this._vaoCacheValue}get _instanceVboCache(){return this._instanceVboCacheValue??=this._rctx.getVboCache(i(this._bufferWriter.layout,1)),this._instanceVboCacheValue}get _textureBufferCache(){return this.useTextureBuffer?(this._textureBufferCacheValue??=this._rctx.getTextureBufferCache(this._bufferWriter.textureBufferLayout),this._textureBufferCacheValue):null}get _vboCache(){return this._vboCacheValue??=this._rctx.getVboCache(i(this._bufferWriter.layout)),this._vboCacheValue}maxElements(e){if("texture"===e){const e=this._targetLayout("texture");return null==e?0:c(this._rctx,e,this._bufferWriter.maxTextureBufferItemIndex??r)}const t=Math.floor(T/this._targetStrideBytes("geometry"));if("index"===e){const e=m(t-1).dataType;return Math.floor(T/this._targetStrideBytes("index",e))}return t}_targetStrideBytes(e,t){return this._targetLayout(e,t)?.stride??0}_targetLayout(e,t){return"geometry"===e?this._bufferWriter.layout:"baseInstance"===e?this._bufferWriter.baseInstanceLayout:"index"===e?d(t):this._bufferWriter.textureBufferLayout}evaluateBufferAllocation(e,t,r,s){const o=this._targetStrideBytes("geometry"),n=t.reduce((e,{geometry:t})=>e+this.vertexElementCount(t),0),a=r.reduce((e,{geometry:t})=>e+this.vertexElementCount(t),0),i=Math.min((e+n-a)*o,T),f=s.vao?.buffer("geometry"),u=f?.sizeBytes??0;return i>v&&i<u/2?0:i>u?1:2}deleteBuffer(e){e.isInstanced?(e.instancedCommandVAOs?.dispose(),this._instanceVboCache.deleteVbo(e.vao?.mutableBuffer("geometry")),e.vao?.disposeVAOOnly()):this.useIndexing?(this._vboCache.deleteVbo(e.vao?.mutableBuffer("geometry")),this._rctx.indexBufferCache.deleteIndexBuffer(e.vao?.indexBuffer),e.vao?.disposeVAOOnly()):this._vaoCache.deleteVao(e.vao),this._textureBufferCache?.deleteTextureBuffer(e.textureBuffer),e.vao=null,e.textureBuffer=null,e.endElements.geometry=0,e.endElements.texture=0,e.endElements.index=0}createBaseInstanceData(e){const{_bufferWriter:t}=this;if(null==e||null==t.baseInstanceLayout||null==t.writeBaseInstance||null==t.elementCountBaseInstance)return null;const r=this._targetLayout("baseInstance"),s=t.elementCountBaseInstance(e.attributes),o=s*r.stride,n=new x(this._rctx,i(r));n.setSize(Math.ceil(o));const a=S(o),f=r.createView(a.buffer);t.writeBaseInstance(e.attributes,f),n.setSubData(a,0,0,o);const u=new g;return u.first=0,u.count=s,new y(e,n,u)}reallocateBuffer(e,t,r){if(this.deleteBuffer(t),null!=e){f(!this.useIndexing,"Instanced indexed rendering is not supported");const s=e.baseInstanceBuffer,o=r.geometry*this._targetStrideBytes("geometry"),n=this._instanceVboCache.newVbo(M(o));t.vao=new u(this._rctx,new Map([["baseInstance",s],["geometry",n]]))}else if(this.useIndexing){const e=r.geometry*this._targetStrideBytes("geometry"),s=this._vboCache.newVbo(M(e)),o=Math.floor(s.sizeBytes/this._bufferWriter.layout.stride)-1,n=m(o),a=r.index*n.stride,i=Math.ceil(M(a)/n.stride),f=this._rctx.indexBufferCache.newIndexBuffer(i,n.dataType);t.vao=new u(this._rctx,s,f)}else{const e=r.geometry*this._targetStrideBytes("geometry");t.vao=this._vaoCache.newVao(M(e))}const s=this._targetLayout("texture"),o=this._textureBufferCache;if(null!=s&&null!=o){const e=M(r.texture*s.stride),n=Math.min(Math.ceil(e/s.stride),this.maxElements("texture"));t.textureBuffer=o.newTextureBuffer(n)}t.endElements.geometry=Math.floor((t.vao?.getByteLength("geometry")??0)/this._targetStrideBytes("geometry")),t.endElements.texture=t.textureBuffer?.itemCount??0,t.endElements.index=t.vao?.indexBuffer?.size??0}elementCount(e,t){const{attributes:r}=e;switch(t){case"geometry":return this._bufferWriter.elementCount(r);case"baseInstance":return this._bufferWriter.elementCountBaseInstance?.(r)??0;case"index":return e.drawIndices?.length??0;case"texture":return this._bufferWriter.elementCountTextureBuffer?.(r)??0;default:throw new Error(`Unhandled target: ${t}`)}}vertexElementCount(e){return this._bufferWriter.elementCount(e.attributes)}canGrow(e,t){const r=this.targetBuffers.map(r=>this._evaluateTargetBufferGrowth(r,e,t));return r.every(({canGrow:e})=>e)&&r.some(({needsToGrow:e})=>e)}_evaluateTargetBufferGrowth(e,t,s){const o=this._targetLayout(e,t.indexType),n=t.getTargetBuffer(e);if(null==o||null==n)return{needsToGrow:null!=o,canGrow:!0};return{needsToGrow:s[e]*o.stride>n.sizeBytes,canGrow:"geometry"===e||"index"===e?n.sizeBytes<M(T-v):n.sizeBytes<l(this._rctx,o,this._bufferWriter.maxTextureBufferItemIndex??r)}}clearHoles(e,t){const{indexType:r}=t;for(const s of this.targetBuffers){const o=this._targetStrideBytes(s,r),n=e[s],a=n.reduce((e,t)=>Math.max(e,t.numElements),0)*o,i=S(a);i.fill(this._getTargetClearValue(t,s),0,a);for(const e of n)this._setTargetSubData(s,t,o,e,i)}}clearHolesMetal(e,t,r){const{indexType:s}=r,{targetBuffers:o}=this,n={},a={};let i=0;for(const c of o){const e=t[c].numElements*this._targetStrideBytes(c,s);n[c]=e,a[c]=i,i+=E(e)}const f=S(i);for(const c of o)f.fill(this._getTargetClearValue(r,c),a[c],a[c]+n[c]);const u={};for(const c of o)u[c]=this._targetLayout(c,s)?.createView(f.buffer,a[c]);for(const c of e){const e=c.targetRanges.geometry;if(!(e.from>=t.geometry.from&&e.to<=t.geometry.to))continue;const r={};for(const s of o)r[s]=c.targetRanges[s].from-t[s].from;this._writeGeometry(c.geometry,u,r,c.targetRanges)}for(const c of o)this._setTargetSubData(c,r,this._targetStrideBytes(c,s),t[c],f,a[c])}writeRandomInstances(e,t,r){const{indexType:s}=r,{targetBuffers:o}=this,n={},a={},i={},f={};let u=0;for(const g of o)n[g]=e[g]*this._targetStrideBytes(g,s),a[g]=u,i[g]=0,f[g]=h.acquire(0,0),u+=E(n[g]);const c=S(u),l={};for(const h of o)l[h]=this._targetLayout(h,s)?.createView(c.buffer,a[h]);for(const h of t){for(const e of o){const t=h.targetRanges[e],o=f[e];o.to===t.from||(o.numElements>0&&this._setTargetSubData(e,r,this._targetStrideBytes(e,s),f[e],c,a[e]),o.from=t.from,i[e]=0)}this._writeGeometry(h.geometry,l,i,h.targetRanges);for(const e of o){const t=h.targetRanges[e];i[e]+=t.numElements,f[e].to=t.to}}for(const g of o){const e=f[g];e.numElements>0&&this._setTargetSubData(g,r,this._targetStrideBytes(g,s),e,c,a[g]),h.release(f[g])}}writeInstanceRangeMetal(e,t,r){const{indexType:s}=r,{targetBuffers:o}=this,n={},a={};let i=0;for(const c of o)n[c]=e[c].numElements*this._targetStrideBytes(c,s),a[c]=i,i+=E(n[c]);const f=S(i),u={};for(const c of o)u[c]=this._targetLayout(c,s)?.createView(f.buffer,a[c]);for(const c of o)f.fill(this._getTargetClearValue(r,c),a[c],a[c]+n[c]);for(const c of t){const t=c.targetRanges.geometry;if(!(t.from>=e.geometry.from&&t.to<=e.geometry.to))continue;const r={},s={};for(const n of o){const t=c.targetRanges[n];r[n]=t.from-e[n].from,s[n]=t}this._writeGeometry(c.geometry,u,r,s)}for(const c of o)e[c].numElements>0&&this._setTargetSubData(c,r,this._targetStrideBytes(c,s),e[c],f,a[c])}rebuildInstances(e,t,r){const{indexType:s}=r,{targetBuffers:o}=this,n={},a={},i={};let f=0;for(const l of o)n[l]=e[l]*this._targetStrideBytes(l,s),a[l]=f,f+=E(n[l]),i[l]=0;const u=S(f),c={};for(const l of o)c[l]=this._targetLayout(l,s)?.createView(u.buffer,a[l]);for(const l of t){const e={},t={};for(const r of o){e[r]=i[r],i[r]+=this.elementCount(l.geometry.geometry,r);const s=l.targetRanges[r];s.from=e[r],s.to=i[r],t[r]=s}this._writeGeometry(l.geometry,c,e,t)}for(const l of o){const e=h.acquire(0,i[l]);this._setTargetSubData(l,r,this._targetStrideBytes(l,s),e,u,a[l]),h.release(e)}return i}updateInstance(e,t){const{indexType:r}=t,{targetBuffers:s}=this,o={},n={};let a=0;for(const c of s){const t=this._targetStrideBytes(c,r);o[c]=this.elementCount(e.geometry.geometry,c)*t,n[c]=a,a+=E(o[c])}const i=S(a),f={},u={};for(const c of s)u[c]=0,f[c]=this._targetLayout(c,r)?.createView(i.buffer,n[c]);this._writeGeometry(e.geometry,f,u,e.targetRanges);for(const c of s)this._setTargetSubData(c,t,this._targetStrideBytes(c,r),e.targetRanges[c],i,n[c])}updateInstancesMetal(e){const{targetBuffers:t}=this;for(const[r,s]of e){const e={};for(const r of t)e[r]=h.acquire(1/0,-1/0);for(const r of s)for(const s of t){const t=e[s],o=r.targetRanges[s];t.from=Math.min(t.from,o.from),t.to=Math.max(t.to,o.to)}this.writeInstanceRangeMetal(e,r.instances.values(),r);for(const r of t)h.release(e[r])}}_writeGeometry(e,t,r,a){const{_bufferWriter:i}=this;if(null==i)return;s(b,e.transformation),b[12]-=e.localOrigin.vec3[0],b[13]-=e.localOrigin.vec3[1],b[14]-=e.localOrigin.vec3[2],o(w,b),n(w,w);const u={buffer:t.geometry,offset:r.geometry},c=null!=t.texture?{buffer:t.texture,offset:r.texture,textureBufferRange:a.texture}:null;if(i.write(b,w,e.geometry.attributes,e.geometry.olidColor,u,c),this.useIndexing){const s=e.geometry.drawIndices;f(null!=t.index,"Should have an indexed view when using indexing"),f(null!=s,"Material requires vertex indices"),this._writeIndexBuffer(a.geometry,t.index,r,s)}}_writeIndexBuffer(e,t,r,s){const o=e.from,n=t,a=r.index;for(let i=0;i<s.length;++i)n[a+i]=s[i]+o}_setTargetSubData(e,t,r,s,o,n=0){if("geometry"===e){const a=t.getTargetBuffer(e);a?.setSubData(o,s.from*r,n,n+s.numElements*r)}else if("texture"===e){const r=t.getTargetBuffer(e);r?.setSubData(o.buffer,s.from,n,s.numElements)}else if("index"===e){const a=t.getTargetBuffer(e);a?.setSubData(o,s.from*r,n,n+s.numElements*r)}}_getTargetClearValue(e,t){if("index"!==t)return 0;const r=e.vao.indexBuffer?.indexType;return d(r).primitiveRestart}static prune(){I=new Uint8Array(v)}}function B(e=p,t=C){return T=e,v=t,{[Symbol.dispose]:()=>{T=p,v=C}}}const b=a(),w=a(),C=262144,V=1024,p=16777216;let v=C,T=p,I=new Uint8Array(v);function S(e){return I.byteLength<e&&(I=new Uint8Array(e)),I}function E(e){return t(e,4)}function M(t){return t<=V?V:t<v?e(t):Math.max(Math.min(Math.ceil(1.5*t/v)*v,T),t)}export{_ as VaoWriter,B as withVaoWriterSizes};
|
|
2
|
+
import{nextHighestPowerOfTwo as e,roundUpToNearest as t}from"../../../../../core/mathUtils.js";import{maxUint32 as r}from"../../../../../core/typedArrayUtil.js";import{copy as s,invert as n,transpose as o}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as a}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{glLayout as i}from"../../../support/buffer/glUtil.js";import{assert as f}from"../../lib/Util.js";import{VertexArrayObject as u}from"../../lib/VertexArrayObject.js";import{getMaxItemCount as c,getMaxByteSize as l}from"../../lib/TextureBackedBuffer/TextureBackedBufferUtils.js";import{bufferRangePool as h,rangesIntersect as g}from"./BufferRange.js";import{DrawCommand as m}from"./DrawCommand.js";import{getIndexLayoutForMaxIndex as d,getIndexLayoutForDataType as y}from"./IndexLayout.js";import{BaseInstanceData as x}from"./PerBaseInstanceData.js";import{VertexBuffer as _}from"../../../../webgl/VertexBuffer.js";class B{constructor(e,t){this._rctx=t,this._vaoCacheValue=null,this._instanceVboCacheValue=null,this._textureBufferCacheValue=null,this._vboCacheValue=null;const r=e.createBufferWriter();this._bufferWriter=r;const s=["geometry"],n="textureBufferLayout"in r&&null!=r.textureBufferLayout;this.useTextureBuffer=n,n&&s.push("texture"),this.useIndexing=e.useIndexing,this.useIndexing&&s.push("index"),this.targetBuffers=s}get _vaoCache(){return this._vaoCacheValue??=this._rctx.getVaoCache(i(this._bufferWriter.layout)),this._vaoCacheValue}get _instanceVboCache(){return this._instanceVboCacheValue??=this._rctx.getVboCache(i(this._bufferWriter.layout,1)),this._instanceVboCacheValue}get _textureBufferCache(){return this.useTextureBuffer?(this._textureBufferCacheValue??=this._rctx.getTextureBufferCache(this._bufferWriter.textureBufferLayout),this._textureBufferCacheValue):null}get _vboCache(){return this._vboCacheValue??=this._rctx.getVboCache(i(this._bufferWriter.layout)),this._vboCacheValue}maxElements(e){if("texture"===e){const e=this._targetLayout("texture");return null==e?0:c(this._rctx,e,this._bufferWriter.maxTextureBufferItemIndex??r)}const t=Math.floor(v/this._targetStrideBytes("geometry"));if("index"===e){const e=d(t-1).dataType;return Math.floor(v/this._targetStrideBytes("index",e))}return t}_targetStrideBytes(e,t){return this._targetLayout(e,t)?.stride??0}_targetLayout(e,t){return"geometry"===e?this._bufferWriter.layout:"baseInstance"===e?this._bufferWriter.baseInstanceLayout:"index"===e?y(t):this._bufferWriter.textureBufferLayout}evaluateBufferAllocation(e,t,r,s){const n=this._targetStrideBytes("geometry"),o=t.reduce((e,{geometry:t})=>e+this.vertexElementCount(t),0),a=r.reduce((e,{geometry:t})=>e+this.vertexElementCount(t),0),i=Math.min((e+o-a)*n,v),f=s.vao?.buffer("geometry"),u=f?.sizeBytes??0;return i>p&&i<u/2?0:i>u?1:2}deleteBuffer(e){e.isInstanced?(e.instancedCommandVAOs?.dispose(),this._instanceVboCache.deleteVbo(e.vao?.mutableBuffer("geometry")),e.vao?.disposeVAOOnly()):this.useIndexing?(this._vboCache.deleteVbo(e.vao?.mutableBuffer("geometry")),this._rctx.indexBufferCache.deleteIndexBuffer(e.vao?.indexBuffer),e.vao?.disposeVAOOnly()):this._vaoCache.deleteVao(e.vao),this._textureBufferCache?.deleteTextureBuffer(e.textureBuffer),e.vao=null,e.textureBuffer=null,e.endElements.geometry=0,e.endElements.texture=0,e.endElements.index=0}createBaseInstanceData(e){const{_bufferWriter:t}=this;if(null==e||null==t.baseInstanceLayout||null==t.writeBaseInstance||null==t.elementCountBaseInstance)return null;const r=this._targetLayout("baseInstance"),s=t.elementCountBaseInstance(e.attributes),n=s*r.stride,o=new _(this._rctx,i(r));o.setSize(Math.ceil(n));const a=E(n),f=r.createView(a.buffer);t.writeBaseInstance(e.attributes,f),o.setSubData(a,0,0,n);const u=new m;return u.first=0,u.count=s,new x(e,o,u)}reallocateBuffer(e,t,r){if(this.deleteBuffer(t),null!=e){f(!this.useIndexing,"Instanced indexed rendering is not supported");const s=e.baseInstanceBuffer,n=r.geometry*this._targetStrideBytes("geometry"),o=this._instanceVboCache.newVbo(L(n));t.vao=new u(this._rctx,new Map([["baseInstance",s],["geometry",o]]))}else if(this.useIndexing){const e=r.geometry*this._targetStrideBytes("geometry"),s=this._vboCache.newVbo(L(e)),n=Math.floor(s.sizeBytes/this._bufferWriter.layout.stride)-1,o=d(n),a=r.index*o.stride,i=Math.ceil(L(a)/o.stride),f=this._rctx.indexBufferCache.newIndexBuffer(i,o.dataType);t.vao=new u(this._rctx,s,f)}else{const e=r.geometry*this._targetStrideBytes("geometry");t.vao=this._vaoCache.newVao(L(e))}const s=this._targetLayout("texture"),n=this._textureBufferCache;if(null!=s&&null!=n){const e=L(r.texture*s.stride),o=Math.min(Math.ceil(e/s.stride),this.maxElements("texture"));t.textureBuffer=n.newTextureBuffer(o)}t.endElements.geometry=Math.floor((t.vao?.getByteLength("geometry")??0)/this._targetStrideBytes("geometry")),t.endElements.texture=t.textureBuffer?.itemCount??0,t.endElements.index=t.vao?.indexBuffer?.size??0}elementCount(e,t){const{attributes:r}=e;switch(t){case"geometry":return this._bufferWriter.elementCount(r);case"baseInstance":return this._bufferWriter.elementCountBaseInstance?.(r)??0;case"index":return e.drawIndices?.length??0;case"texture":return this._bufferWriter.elementCountTextureBuffer?.(r)??0;default:throw new Error(`Unhandled target: ${t}`)}}vertexElementCount(e){return this._bufferWriter.elementCount(e.attributes)}canGrow(e,t){const r=this.targetBuffers.map(r=>this._evaluateTargetBufferGrowth(r,e,t));return r.every(({canGrow:e})=>e)&&r.some(({needsToGrow:e})=>e)}_evaluateTargetBufferGrowth(e,t,s){const n=this._targetLayout(e,t.indexType),o=t.getTargetBuffer(e);if(null==n||null==o)return{needsToGrow:null!=n,canGrow:!0};return{needsToGrow:s[e]*n.stride>o.sizeBytes,canGrow:"geometry"===e||"index"===e?o.sizeBytes<L(v-p):o.sizeBytes<l(this._rctx,n,this._bufferWriter.maxTextureBufferItemIndex??r)}}clearHoles(e,t){const{indexType:r}=t;for(const s of this.targetBuffers){const n=this._targetStrideBytes(s,r),o=e[s],a=o.reduce((e,t)=>Math.max(e,t.numElements),0)*n,i=E(a);i.fill(this._getTargetClearValue(t,s),0,a);for(const e of o)this._setTargetSubData(s,t,n,e,i)}}clearHolesMetal(e,t,r){const{indexType:s}=r,{targetBuffers:n}=this,o={},a={};let i=0;for(const c of n){const e=t[c].numElements*this._targetStrideBytes(c,s);o[c]=e,a[c]=i,i+=M(e)}const f=E(i);for(const c of n)f.fill(this._getTargetClearValue(r,c),a[c],a[c]+o[c]);const u={};for(const c of n)u[c]=this._targetLayout(c,s)?.createView(f.buffer,a[c]);for(const c of e)this._writeIntersectingInstanceTargets(c,u,t);for(const c of n)this._setTargetSubData(c,r,this._targetStrideBytes(c,s),t[c],f,a[c])}writeRandomInstances(e,t,r){const{indexType:s}=r,{targetBuffers:n}=this,o={},a={},i={},f={};let u=0;for(const g of n)o[g]=e[g]*this._targetStrideBytes(g,s),a[g]=u,i[g]=0,f[g]=h.acquire(0,0),u+=M(o[g]);const c=E(u),l={};for(const h of n)l[h]=this._targetLayout(h,s)?.createView(c.buffer,a[h]);for(const h of t){for(const e of n){const t=h.targetRanges[e],n=f[e];n.to===t.from||(n.numElements>0&&this._setTargetSubData(e,r,this._targetStrideBytes(e,s),f[e],c,a[e]),n.from=t.from,i[e]=0)}this._writeGeometry(h.geometry,l,i,h.targetRanges);for(const e of n){const t=h.targetRanges[e];i[e]+=t.numElements,f[e].to=t.to}}for(const g of n){const e=f[g];e.numElements>0&&this._setTargetSubData(g,r,this._targetStrideBytes(g,s),e,c,a[g]),h.release(f[g])}}writeInstanceRangeMetal(e,t,r){const{indexType:s}=r,{targetBuffers:n}=this,o={},a={};let i=0;for(const c of n)o[c]=e[c].numElements*this._targetStrideBytes(c,s),a[c]=i,i+=M(o[c]);const f=E(i),u={};for(const c of n)u[c]=this._targetLayout(c,s)?.createView(f.buffer,a[c]);for(const c of n)f.fill(this._getTargetClearValue(r,c),a[c],a[c]+o[c]);for(const c of t)this._writeIntersectingInstanceTargets(c,u,e);for(const c of n)e[c].numElements>0&&this._setTargetSubData(c,r,this._targetStrideBytes(c,s),e[c],f,a[c])}rebuildInstances(e,t,r){const{indexType:s}=r,{targetBuffers:n}=this,o={},a={},i={};let f=0;for(const l of n)o[l]=e[l]*this._targetStrideBytes(l,s),a[l]=f,f+=M(o[l]),i[l]=0;const u=E(f),c={};for(const l of n)c[l]=this._targetLayout(l,s)?.createView(u.buffer,a[l]);for(const l of t){const e={},t={};for(const r of n){e[r]=i[r],i[r]+=this.elementCount(l.geometry.geometry,r);const s=l.targetRanges[r];s.from=e[r],s.to=i[r],t[r]=s}this._writeGeometry(l.geometry,c,e,t)}for(const l of n){const e=h.acquire(0,i[l]);this._setTargetSubData(l,r,this._targetStrideBytes(l,s),e,u,a[l]),h.release(e)}return i}updateInstance(e,t){const{indexType:r}=t,{targetBuffers:s}=this,n={},o={};let a=0;for(const c of s){const t=this._targetStrideBytes(c,r);n[c]=this.elementCount(e.geometry.geometry,c)*t,o[c]=a,a+=M(n[c])}const i=E(a),f={},u={};for(const c of s)u[c]=0,f[c]=this._targetLayout(c,r)?.createView(i.buffer,o[c]);this._writeGeometry(e.geometry,f,u,e.targetRanges);for(const c of s)this._setTargetSubData(c,t,this._targetStrideBytes(c,r),e.targetRanges[c],i,o[c])}updateInstancesMetal(e){const{targetBuffers:t}=this;for(const[r,s]of e){const e={};for(const r of t)e[r]=h.acquire(1/0,-1/0);for(const r of s)for(const s of t){const t=e[s],n=r.targetRanges[s];t.from=Math.min(t.from,n.from),t.to=Math.max(t.to,n.to)}this.writeInstanceRangeMetal(e,r.instances.values(),r);for(const r of t)h.release(e[r])}}_writeIntersectingInstanceTargets(e,t,r){const s={},n={};let o=!1;for(const a of this.targetBuffers){const i=e.targetRanges[a],f=r[a],u=g(i,f);n[a]=u?t[a]:null,s[a]=u?i.from-f.from:0,o||=u}o&&this._writeGeometry(e.geometry,n,s,e.targetRanges)}_writeGeometry(e,t,r,a){const{_bufferWriter:i}=this;if(null==i)return;s(w,e.transformation),w[12]-=e.localOrigin.vec3[0],w[13]-=e.localOrigin.vec3[1],w[14]-=e.localOrigin.vec3[2],n(C,w),o(C,C);const u=null!=t.geometry?{buffer:t.geometry,offset:r.geometry}:null,c=null!=t.texture?{buffer:t.texture,offset:r.texture}:null;if(i.write(w,C,e.geometry.attributes,e.geometry.olidColor,u,a.texture,c),this.useIndexing&&null!=t.index){const s=e.geometry.drawIndices;f(null!=s,"Material requires vertex indices"),this._writeIndexBuffer(a.geometry,t.index,r,s)}}_writeIndexBuffer(e,t,r,s){const n=e.from,o=t,a=r.index;for(let i=0;i<s.length;++i)o[a+i]=s[i]+n}_setTargetSubData(e,t,r,s,n,o=0){if("geometry"===e){const a=t.getTargetBuffer(e);a?.setSubData(n,s.from*r,o,o+s.numElements*r)}else if("texture"===e){const r=t.getTargetBuffer(e);r?.setSubData(n.buffer,s.from,o,s.numElements)}else if("index"===e){const a=t.getTargetBuffer(e);a?.setSubData(n,s.from*r,o,o+s.numElements*r)}}_getTargetClearValue(e,t){if("index"!==t)return 0;const r=e.vao.indexBuffer?.indexType;return y(r).primitiveRestart}static prune(){S=new Uint8Array(p)}}function b(e=V,t=I){return v=e,p=t,{[Symbol.dispose]:()=>{v=V,p=I}}}const w=a(),C=a(),I=262144,T=1024,V=16777216;let p=I,v=V,S=new Uint8Array(p);function E(e){return S.byteLength<e&&(S=new Uint8Array(e)),S}function M(e){return t(e,4)}function L(t){return t<=T?T:t<p?e(t):Math.max(Math.min(Math.ceil(1.5*t/p)*p,v),t)}export{B as VaoWriter,b as withVaoWriterSizes};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{toConst as r}from"../../../../core/compilerUtils.js";import{unpackFloatRGBA as i}from"../../../../core/floatRGBA.js";import has from"../../../../core/has.js";import s from"../../../../core/Logger.js";import{removeMaybe as n,destroyMaybe as o}from"../../../../core/maybe.js";import{when as a,initial as h,watch as l,syncAndInitial as d}from"../../../../core/reactiveUtils.js";import{addFrameTask as c}from"../../../../core/scheduling.js";import{Milliseconds as p}from"../../../../core/time.js";import{property as m,subclass as u}from"../../../../core/accessorSupport/decorators.js";import{isMoon as f,isMars as g}from"../../../../geometry/ellipsoidUtils.js";import{ComponentObjectCollection as w}from"../collections/Component/ComponentObjectCollection.js";import{ShaderTechniqueConstructionContext as _}from"../core/shaderTechnique/ShaderTechniqueConstructionContext.js";import{ShaderTechniqueRepository as v}from"../core/shaderTechnique/ShaderTechniqueRepository.js";import{ChapmanAtmosphere as x}from"../effects/atmosphere/ChapmanAtmosphere.js";import{LocalAtmosphere as y}from"../effects/atmosphere/LocalAtmosphere.js";import{MarsAtmosphere as j}from"../effects/atmosphere/MarsAtmosphere.js";import{CloudsComposition as b}from"../effects/clouds/CloudsComposition.js";import{Fog as R}from"../effects/fog/Fog.js";import{ObjectAndLayerID as A}from"../effects/geometry/ObjectAndLayerID.js";import{olidEnabled as C}from"../effects/geometry/olidUtils.js";import{RenderOccluded as S}from"../effects/geometry/RenderOccluded.js";import{GlobalIllumination as T}from"../effects/globalIllumination/GlobalIllumination.js";import{Glow as M}from"../effects/glow/Glow.js";import{Haze as O}from"../effects/haze/Haze.js";import{Highlight as U}from"../effects/highlight/Highlight.js";import{ShadowHighlight as q}from"../effects/highlight/ShadowHighlight.js";import{ShadowHighlightBuffer as D}from"../effects/highlight/ShadowHighlightBuffer.js";import{Magnifier as L}from"../effects/magnifier/Magnifier.js";import{SMAA as F}from"../effects/smaa/SMAA.js";import{SSAO as k}from"../effects/ssao/SSAO.js";import{Stars as W}from"../effects/stars/Stars.js";import{GLMaterialRepository as B}from"../lib/GLMaterialRepository.js";import{ObjectAndLayerIdRenderHelper as E}from"../lib/ObjectAndLayerIdRenderHelper.js";import{Renderer as H}from"../lib/Renderer.js";import{RenderingContext as I}from"../lib/RenderingContext.js";import{RenderingContextOptions as G}from"../lib/RenderingContextOptions.js";import{TextureRepository as P}from"../lib/TextureRepository.js";import{createMarkerTextureRepository as z}from"../materials/markerTextureRepository.js";import{createStippleTextureRepository as N}from"../materials/stippleTextureRepository.js";import{WaterTextureRepository as V}from"../materials/internal/WaterTextureRepository.js";import{getContextCache as X}from"./contextCache.js";import{removeLoadedShaderModules as Q}from"./renderUtils.js";import{ScreenshotManager as J,ScreenshotContext as K}from"./ScreenshotManager.js";import{contextCache as Y}from"./testUtils.js";import{noBudget as Z}from"../../../support/Scheduler.js";import{checkWebGLError as $}from"../../../webgl/checkWebGLError.js";const ee=has("disable-feature:async-navigation-3d-depth-readback");let te=class extends t{constructor(e,t){super(e),this.olidRenderHelper=C()?new E:null,this.waterTextures=new V,this._needsUpdate=!0,this._needsRender=!0,this._idleSuspend=!0,this._needsWaterReflectionUpdate=!1,this._lastAnimationUpdate=0,this.glow=null,this.fog=null,this.globalIllumination=null,this.test=null,this._initializeContext(t);const{memoryController:r}=t.view.resourceController;this.stippleTextures=N(this._rctx,r),this.markerTextures=z(this._rctx,r),this.techniques=new v(new _(this._rctx,this.stippleTextures,this.waterTextures,this.markerTextures)),this.textures=new P(t),this.addHandles(this.textures.events.on("changed",e=>this.requestRender(e)));const i=new B(this.textures,this.techniques,()=>this.requestRender(),()=>this.requestRender());this.renderer=new H(t,i,this.techniques,this._rctx,e=>this.requestRender(e)),this.addHandles([a(()=>t.view.ready,()=>this._createRenderNodes(),h),l(()=>this.waterTextures.updating,()=>this.requestRender(),h),l(()=>t.view.qualityProfile,e=>this.renderer?.updateRenderFeatures(e),d)]);const s={renderScene:(e,t,r,i)=>(this.renderer.setTime(t),this.renderer.render(e,r,i)),requestRenderScene:e=>this.requestRender(e),prepareOverlay:()=>t.options.screenshot.prepareOverlay(),renderOverlay:(e,r,i)=>t.options.screenshot.renderOverlay(e,r,i)};this._screenshotManager=new J(this._rctx,s,e=>t.view.overlayManager.updateOverlays(Z,e.camera,0)),this._registerFrameTask(t)}destroy(){const e=this.stage?.container;e?.contains(this._canvas)&&e.removeChild(this._canvas),this._frameTask=n(this._frameTask),this.techniques.destroy(),this._componentObjectCollection=o(this._componentObjectCollection),this._screenshotManager.destroy(),this.renderer.destroy(),this.textures.destroy(),this.waterTextures.destroy(),this.markerTextures.destroy(),this.stippleTextures.destroy(),this._canvas=null,this._rctx=o(this._rctx),this.test?.destroy()}_createRenderNodes(){const{view:e,viewingMode:t}=this.stage;new W({view:e}),f(e.spatialReference)||(this.glow=new M({view:e}),2===t?new y({view:e}):g(e.spatialReference)?new j({view:e}):(new x({view:e}),new b({view:e}),new O({view:e}),this.fog=new R({view:e}))),has("enable-feature:global-illumination")?this.globalIllumination=new T({view:e}):new k({view:e}),new F({view:e,isEnabled:()=>this.renderer.hasSMAA}),new L({view:e}),new U({view:e}),new D({view:e}),new q({view:e,viewingMode:t}),new S({view:e}),C()&&new A({view:e})}requestRender(e=1){switch(e){case 2:this.view.state.fading=!0;case 1:this._needsUpdate=!0,this.globalIllumination?.resetAccumulatedFrames();case 0:this._needsRender=!0}}get updating(){return this._needsUpdate||this._needsWaterReflectionUpdate||this.renderer.updating||this.textures.updating||this.waterTextures.updating}setIdleSuspend(e){this._idleSuspend!==e&&(this._idleSuspend=e,this.requestRender())}get renderingContext(){return this._rctx}get capabilities(){return this._rctx.capabilities}get canvas(){return this._canvas}takeScreenshot(e){return this._screenshotManager.takeScreenshot(r(e))}getAlpha(){return!!this._rctx.contextAttributes.alpha}getMinimalDepthForArea(e,t,r,i,s,n=s){let o=ee?this._readMainDepthSynchronously(t,r,i,s,n):this.renderer.navigationDepthCache.getMinimalDepthForArea(t,r,i,s,n)??Number.MAX_VALUE;if(e){const s=e.pickDepth(t*i.pixelRatio,r*i.pixelRatio,i);null!=s&&o>s&&s!==i.nearFar[0]&&s!==i.nearFar[1]&&(o=s)}return o===Number.MAX_VALUE?void 0:o}_readMainDepthSynchronously(e,t,r,i,s){const n=r.constrainWindowSize(e,t,i*r.pixelRatio,s*r.pixelRatio),o=this._ensureLinearDepthArrayBuffer(n);this.renderer.readMainDepth(n,o);let a=Number.MAX_VALUE;for(let h=0;h<n[2]*n[3];h++){const e=this._linearDepthFromTexture(4*h,o,r.nearFar);a>e&&e!==r.nearFar[0]&&e!==r.nearFar[1]&&(a=e)}return a}_linearDepthFromTexture(e,t,r){return i(t,e)*(r[1]-r[0])+r[0]}_ensureLinearDepthArrayBuffer(e){const t=4*e[2]*e[3];return(null==this._tmpDepthBuffer||this._tmpDepthBuffer.byteLength<t)&&(this._tmpDepthBuffer=new Uint8Array(t)),this._tmpDepthBuffer}async reloadShaders(){Q(),await this.techniques.reloadAll(),this.renderer.overlay?.reloadShaders(),this.requestRender()}_registerFrameTask(e){const t=e.view.state;let r=!1,i=0,s=!1;const n={preRender:({time:s})=>{r=this.updating,i=this._needsUpdate?1:0,this._needsRender&&this.renderer.updateSceneDepthRange(t.camera),e.commitSyncLayers(),s=this.test?.time??s;const n=p(s-this._lastAnimationUpdate);this.view.state.animationsEnabled&&(n>this.renderer.animationTimestep||r||this._needsRender)&&(this.renderer.updateAnimation(t,s)&&this.requestRender(0),this._lastAnimationUpdate=s)},render:({time:e})=>{if(e=this.test?.time??e,this.renderer.setTime(e),(this._needsRender||!this._idleSuspend||!this.renderer.isCameraFinal||this._needsWaterReflectionUpdate)&&t.camera.fullWidth>0&&t.camera.fullHeight>0){const e=this._needsUpdate&&this._idleSuspend&&this.renderer.isCameraFinal;this._needsRender=!1,this._needsUpdate=!1,this._needsWaterReflectionUpdate=!1,this.renderer.render(t,0),s=!0,e&&this.renderer.hasReflections&&(this.requestRender(0),this._needsWaterReflectionUpdate=!0)}},update:({time:e})=>{this.view.state.animationsEnabled&&this.textures.update();const r=new K(t,this.renderer.fboCache);e=this.test?.time??e,this._screenshotManager.update(r,e)},finish:()=>{s&&(this.renderer.finish(2===t.mode?i:1),s=!1)}};this._frameTask=c(n)}_initializeContext(e){const{options:t}=e,r=t.canvas??document.createElement("canvas");r.setAttribute("style","width: 100%; height:100%; display:block;"),this._canvas=r;const i={alpha:t.alpha||!1,premultipliedAlpha:!0,antialias:!1,depth:!0,stencil:t.stencil??!0,powerPreference:"high-performance",preserveDrawingBuffer:t.preserveDrawingBuffer??!1},n=r.getContext("webgl2",i);if(null==n)return void s.getLogger(this).error("A WebGL2 context could not be created.");$(n,!0),this._rctx=re(n,e),this._loadShaderOnlyExtensions(),!t.alpha&&this._rctx.contextAttributes.alpha&&s.getLogger(this).error("WebGL context has alpha channel even though no alpha channel was requested");const{container:o}=e;!this._rctx.contextAttributes.alpha&&has("safari")>=11&&(o.style.backgroundColor="black"),o.contains(r)||o.appendChild(r)}_loadShaderOnlyExtensions(){this._rctx.capabilities.enable("textureFloatLinear")}get _viewingMode(){return this.stage.viewingMode}get stage(){return this.view.stage}getObjectAndLayerIdColor(e){return this.olidRenderHelper?.getObjectAndLayerIdColor(e)}get componentObjectCollection(){return this._componentObjectCollection??=new w(this.renderer.renderPassManager,this._viewingMode,this.view.spatialReference.isWebMercator),this._componentObjectCollection}updateQualitySettings(e){null!=this.test?.time&&null!=e.fadeDuration&&(this.test.savedFadeDuration=e.fadeDuration,e.fadeDuration=p(0)),this._rctx.updateOptions({maxPreferredTexturePixels:this.view.qualitySettings.maxTexturePixels})}};function re(e,t){const r=new G(t);if(Y.enabled){let t=ie.get(e);return 1===t?.refCount?(t.configure(r),t.ref(),t):(t=new I(e,r),ie.set(e,t),t.ref(),t)}return new I(e,r)}e([m({type:Boolean,readOnly:!0})],te.prototype,"updating",null),e([m({constructOnly:!0})],te.prototype,"view",void 0),e([m({readOnly:!0})],te.prototype,"componentObjectCollection",null),e([m()],te.prototype,"_componentObjectCollection",void 0),e([m()],te.prototype,"_needsUpdate",void 0),e([m()],te.prototype,"_needsWaterReflectionUpdate",void 0),te=e([u("esri.views.3d.webgl-engine.parts.RenderView")],te);const ie=X();export{te as RenderView};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{toConst as r}from"../../../../core/compilerUtils.js";import{unpackFloatRGBA as i}from"../../../../core/floatRGBA.js";import has from"../../../../core/has.js";import s from"../../../../core/Logger.js";import{removeMaybe as n,destroyMaybe as o}from"../../../../core/maybe.js";import{when as a,initial as h,watch as l,syncAndInitial as d}from"../../../../core/reactiveUtils.js";import{addFrameTask as c}from"../../../../core/scheduling.js";import{signal as p}from"../../../../core/signal.js";import{Milliseconds as m}from"../../../../core/time.js";import{property as u,subclass as f}from"../../../../core/accessorSupport/decorators.js";import{isMoon as g,isMars as w}from"../../../../geometry/ellipsoidUtils.js";import{ComponentObjectCollection as _}from"../collections/Component/ComponentObjectCollection.js";import{ShaderTechniqueConstructionContext as v}from"../core/shaderTechnique/ShaderTechniqueConstructionContext.js";import{ShaderTechniqueRepository as x}from"../core/shaderTechnique/ShaderTechniqueRepository.js";import{ChapmanAtmosphere as y}from"../effects/atmosphere/ChapmanAtmosphere.js";import{LocalAtmosphere as j}from"../effects/atmosphere/LocalAtmosphere.js";import{MarsAtmosphere as b}from"../effects/atmosphere/MarsAtmosphere.js";import{CloudsComposition as R}from"../effects/clouds/CloudsComposition.js";import{Fog as A}from"../effects/fog/Fog.js";import{ObjectAndLayerID as C}from"../effects/geometry/ObjectAndLayerID.js";import{olidEnabled as S}from"../effects/geometry/olidUtils.js";import{RenderOccluded as T}from"../effects/geometry/RenderOccluded.js";import{GlobalIllumination as M}from"../effects/globalIllumination/GlobalIllumination.js";import{Glow as O}from"../effects/glow/Glow.js";import{Haze as U}from"../effects/haze/Haze.js";import{Highlight as q}from"../effects/highlight/Highlight.js";import{ShadowHighlight as D}from"../effects/highlight/ShadowHighlight.js";import{ShadowHighlightBuffer as L}from"../effects/highlight/ShadowHighlightBuffer.js";import{Magnifier as F}from"../effects/magnifier/Magnifier.js";import{SMAA as k}from"../effects/smaa/SMAA.js";import{SSAO as W}from"../effects/ssao/SSAO.js";import{Stars as B}from"../effects/stars/Stars.js";import{GLMaterialRepository as E}from"../lib/GLMaterialRepository.js";import{ObjectAndLayerIdRenderHelper as H}from"../lib/ObjectAndLayerIdRenderHelper.js";import{Renderer as I}from"../lib/Renderer.js";import{RenderingContext as G}from"../lib/RenderingContext.js";import{RenderingContextOptions as P}from"../lib/RenderingContextOptions.js";import{TextureRepository as z}from"../lib/TextureRepository.js";import{createMarkerTextureRepository as N}from"../materials/markerTextureRepository.js";import{createStippleTextureRepository as V}from"../materials/stippleTextureRepository.js";import{WaterTextureRepository as X}from"../materials/internal/WaterTextureRepository.js";import{getContextCache as Q}from"./contextCache.js";import{removeLoadedShaderModules as J}from"./renderUtils.js";import{ScreenshotManager as K,ScreenshotContext as Y}from"./ScreenshotManager.js";import{contextCache as Z}from"./testUtils.js";import{noBudget as $}from"../../../support/Scheduler.js";import{checkWebGLError as ee}from"../../../webgl/checkWebGLError.js";const te=has("disable-feature:async-navigation-3d-depth-readback");let re=class extends t{constructor(e,t){super(e),this.olidRenderHelper=S()?new H:null,this.waterTextures=new X,this._needsUpdate=!0,this._needsRender=!0,this._idleSuspend=!0,this._needsWaterReflectionUpdate=!1,this._lastAnimationUpdate=0,this.glow=null,this._fog=p(null),this.globalIllumination=null,this.test=null,this._initializeContext(t);const{memoryController:r}=t.view.resourceController;this.stippleTextures=V(this._rctx,r),this.markerTextures=N(this._rctx,r),this.techniques=new x(new v(this._rctx,this.stippleTextures,this.waterTextures,this.markerTextures)),this.textures=new z(t),this.addHandles(this.textures.events.on("changed",e=>this.requestRender(e)));const i=new E(this.textures,this.techniques,()=>this.requestRender(),()=>this.requestRender());this.renderer=new I(t,i,this.techniques,this._rctx,e=>this.requestRender(e)),this.addHandles([a(()=>t.view.ready,()=>this._createRenderNodes(),h),l(()=>this.waterTextures.updating,()=>this.requestRender(),h),l(()=>t.view.qualityProfile,e=>this.renderer?.updateRenderFeatures(e),d)]);const s={renderScene:(e,t,r,i)=>(this.renderer.setTime(t),this.renderer.render(e,r,i)),requestRenderScene:e=>this.requestRender(e),prepareOverlay:()=>t.options.screenshot.prepareOverlay(),renderOverlay:(e,r,i)=>t.options.screenshot.renderOverlay(e,r,i)};this._screenshotManager=new K(this._rctx,s,e=>t.view.overlayManager.updateOverlays($,e.camera,0)),this._registerFrameTask(t)}destroy(){const e=this.stage?.container;e?.contains(this._canvas)&&e.removeChild(this._canvas),this._frameTask=n(this._frameTask),this.techniques.destroy(),this._componentObjectCollection=o(this._componentObjectCollection),this._screenshotManager.destroy(),this.renderer.destroy(),this.textures.destroy(),this.waterTextures.destroy(),this.markerTextures.destroy(),this.stippleTextures.destroy(),this._canvas=null,this._rctx=o(this._rctx),this.test?.destroy()}_createRenderNodes(){const{view:e,viewingMode:t}=this.stage;new B({view:e}),g(e.spatialReference)||(this.glow=new O({view:e}),2===t?new j({view:e}):w(e.spatialReference)?new b({view:e}):(new y({view:e}),new R({view:e}),new U({view:e}),this._fog.value=new A({view:e}))),has("enable-feature:global-illumination")?this.globalIllumination=new M({view:e}):new W({view:e}),new k({view:e,isEnabled:()=>this.renderer.hasSMAA}),new F({view:e}),new q({view:e}),new L({view:e}),new D({view:e,viewingMode:t}),new T({view:e}),S()&&new C({view:e})}requestRender(e=1){switch(e){case 2:this.view.state.fading=!0;case 1:this._needsUpdate=!0,this.globalIllumination?.resetAccumulatedFrames();case 0:this._needsRender=!0}}get updating(){return this._needsUpdate||this._needsWaterReflectionUpdate||this.renderer.updating||this.textures.updating||this.waterTextures.updating}setIdleSuspend(e){this._idleSuspend!==e&&(this._idleSuspend=e,this.requestRender())}get renderingContext(){return this._rctx}get capabilities(){return this._rctx.capabilities}get canvas(){return this._canvas}takeScreenshot(e){return this._screenshotManager.takeScreenshot(r(e))}getAlpha(){return!!this._rctx.contextAttributes.alpha}getMinimalDepthForArea(e,t,r,i,s,n=s){let o=te?this._readMainDepthSynchronously(t,r,i,s,n):this.renderer.navigationDepthCache.getMinimalDepthForArea(t,r,i,s,n)??Number.MAX_VALUE;if(e){const s=e.pickDepth(t*i.pixelRatio,r*i.pixelRatio,i);null!=s&&o>s&&s!==i.nearFar[0]&&s!==i.nearFar[1]&&(o=s)}return o===Number.MAX_VALUE?void 0:o}_readMainDepthSynchronously(e,t,r,i,s){const n=r.constrainWindowSize(e,t,i*r.pixelRatio,s*r.pixelRatio),o=this._ensureLinearDepthArrayBuffer(n);this.renderer.readMainDepth(n,o);let a=Number.MAX_VALUE;for(let h=0;h<n[2]*n[3];h++){const e=this._linearDepthFromTexture(4*h,o,r.nearFar);a>e&&e!==r.nearFar[0]&&e!==r.nearFar[1]&&(a=e)}return a}_linearDepthFromTexture(e,t,r){return i(t,e)*(r[1]-r[0])+r[0]}_ensureLinearDepthArrayBuffer(e){const t=4*e[2]*e[3];return(null==this._tmpDepthBuffer||this._tmpDepthBuffer.byteLength<t)&&(this._tmpDepthBuffer=new Uint8Array(t)),this._tmpDepthBuffer}async reloadShaders(){J(),await this.techniques.reloadAll(),this.renderer.overlay?.reloadShaders(),this.requestRender()}_registerFrameTask(e){const t=e.view.state;let r=!1,i=0,s=!1;const n={preRender:({time:s})=>{r=this.updating,i=this._needsUpdate?1:0,this._needsRender&&this.renderer.updateSceneDepthRange(t.camera),e.commitSyncLayers(),s=this.test?.time??s;const n=m(s-this._lastAnimationUpdate);this.view.state.animationsEnabled&&(n>this.renderer.animationTimestep||r||this._needsRender)&&(this.renderer.updateAnimation(t,s)&&this.requestRender(0),this._lastAnimationUpdate=s)},render:({time:e})=>{if(e=this.test?.time??e,this.renderer.setTime(e),(this._needsRender||!this._idleSuspend||!this.renderer.isCameraFinal||this._needsWaterReflectionUpdate)&&t.camera.fullWidth>0&&t.camera.fullHeight>0){const e=this._needsUpdate&&this._idleSuspend&&this.renderer.isCameraFinal;this._needsRender=!1,this._needsUpdate=!1,this._needsWaterReflectionUpdate=!1,this.renderer.render(t,0),s=!0,e&&this.renderer.hasReflections&&(this.requestRender(0),this._needsWaterReflectionUpdate=!0)}},update:({time:e})=>{this.view.state.animationsEnabled&&this.textures.update();const r=new Y(t,this.renderer.fboCache);e=this.test?.time??e,this._screenshotManager.update(r,e)},finish:()=>{s&&(this.renderer.finish(2===t.mode?i:1),s=!1)}};this._frameTask=c(n)}_initializeContext(e){const{options:t}=e,r=t.canvas??document.createElement("canvas");r.setAttribute("style","width: 100%; height:100%; display:block;"),this._canvas=r;const i={alpha:t.alpha||!1,premultipliedAlpha:!0,antialias:!1,depth:!0,stencil:t.stencil??!0,powerPreference:"high-performance",preserveDrawingBuffer:t.preserveDrawingBuffer??!1},n=r.getContext("webgl2",i);if(null==n)return void s.getLogger(this).error("A WebGL2 context could not be created.");ee(n,!0),this._rctx=ie(n,e),this._loadShaderOnlyExtensions(),!t.alpha&&this._rctx.contextAttributes.alpha&&s.getLogger(this).error("WebGL context has alpha channel even though no alpha channel was requested");const{container:o}=e;!this._rctx.contextAttributes.alpha&&has("safari")>=11&&(o.style.backgroundColor="black"),o.contains(r)||o.appendChild(r)}_loadShaderOnlyExtensions(){this._rctx.capabilities.enable("textureFloatLinear")}get _viewingMode(){return this.stage.viewingMode}get stage(){return this.view.stage}getObjectAndLayerIdColor(e){return this.olidRenderHelper?.getObjectAndLayerIdColor(e)}get componentObjectCollection(){return this._componentObjectCollection??=new _(this.renderer.renderPassManager,this._viewingMode,this.view.spatialReference.isWebMercator),this._componentObjectCollection}updateQualitySettings(e){null!=this.test?.time&&null!=e.fadeDuration&&(this.test.savedFadeDuration=e.fadeDuration,e.fadeDuration=m(0)),this._rctx.updateOptions({maxPreferredTexturePixels:this.view.qualitySettings.maxTexturePixels})}get fog(){return r(this._fog.value)}};function ie(e,t){const r=new P(t);if(Z.enabled){let t=se.get(e);return 1===t?.refCount?(t.configure(r),t.ref(),t):(t=new G(e,r),se.set(e,t),t.ref(),t)}return new G(e,r)}e([u({type:Boolean,readOnly:!0})],re.prototype,"updating",null),e([u({constructOnly:!0})],re.prototype,"view",void 0),e([u({readOnly:!0})],re.prototype,"componentObjectCollection",null),e([u()],re.prototype,"_componentObjectCollection",void 0),e([u()],re.prototype,"_needsUpdate",void 0),e([u()],re.prototype,"_needsWaterReflectionUpdate",void 0),re=e([f("esri.views.3d.webgl-engine.parts.RenderView")],re);const se=Q();export{re as RenderView};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/output/ReadDepth.glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../chunks/CutFillMinMaxDepth.glsl.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{__decorate as e}from"tslib";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as i}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as s}from"../core/shaderTechnique/ShaderTechnique.js";import{C as t}from"../../../../chunks/CutFillMinMaxDepth.glsl.js";import{makePipelineState as o,defaultColorWrite as l}from"../../../webgl/renderState.js";let a=class extends s{constructor(){super(...arguments),this.shader=new i(t,()=>import("./CutFillMinMaxDepth.glsl.js"))}initializePipeline(){return o({colorWrite:l})}};a=e([r("esri.views.3d.webgl-engine.shaders.CutFillMinMaxDepthTechnique")],a);export{a as CutFillMinMaxDepthTechnique};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/output/ReadDepth.glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{C as CutFillDepthParameters,b as build}from"../../../../chunks/
|
|
2
|
+
import"../core/shaderLibrary/ScreenSpacePass.glsl.js";import"../core/shaderLibrary/output/ReadDepth.glsl.js";import"../core/shaderModules/Texture2DPassUniform.js";import"../../../webgl/NoParameters.js";import"../../../webgl/ShaderBuilder.js";export{C as CutFillDepthParameters,b as build}from"../../../../chunks/CutFillTotalDepth.glsl.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{__decorate as e}from"tslib";import{subclass as r}from"../../../../core/accessorSupport/decorators.js";import{ReloadableShader as t}from"../core/shaderTechnique/ReloadableShader.js";import{ShaderTechnique as o}from"../core/shaderTechnique/ShaderTechnique.js";import{a as s}from"../../../../chunks/CutFillTotalDepth.glsl.js";import{makePipelineState as i,defaultColorWrite as l}from"../../../webgl/renderState.js";let a=class extends o{constructor(){super(...arguments),this.shader=new t(s,()=>import("./CutFillTotalDepth.glsl.js"))}initializePipeline(){return i({colorWrite:l})}};a=e([r("esri.views.3d.webgl-engine.shaders.CutFillTotalDepthTechnique")],a);export{a as CutFillTotalDepthTechnique};
|