@arcgis/core 5.2.0-next.63 → 5.2.0-next.65
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/arcade/Feature.js +1 -1
- package/arcade/ImmutableArray.js +1 -1
- package/arcade/ImmutablePathArray.js +1 -1
- package/arcade/ImmutablePointArray.js +1 -1
- package/arcade/Pixel.js +1 -1
- package/arcade/Voxel.js +1 -1
- package/arcade/arcadeAsyncRuntime.js +1 -1
- package/arcade/arcadeCompiler.js +1 -1
- package/arcade/arcadeRuntime.js +1 -1
- package/arcade/containerUtils.js +1 -1
- package/arcade/debug.js +1 -1
- package/arcade/deepClone.js +1 -1
- package/arcade/functions/convertdirection.js +1 -1
- package/arcade/functions/date.js +1 -1
- package/arcade/functions/feature.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/arcade/functions/featuresetgeom.js +1 -1
- package/arcade/functions/featuresetstats.js +1 -1
- package/arcade/functions/featuresetstring.js +1 -1
- package/arcade/functions/fieldStats.js +1 -1
- package/arcade/functions/geomasync.js +1 -1
- package/arcade/functions/geometry.js +1 -1
- package/arcade/functions/geomsync.js +1 -1
- package/arcade/functions/knowledgegraph.js +1 -1
- package/arcade/functions/maths.js +1 -1
- package/arcade/functions/stats.js +1 -1
- package/arcade/functions/string.js +1 -1
- package/arcade/functions/track.js +1 -1
- package/arcade/geometry/functions.js +1 -1
- package/arcade/languageUtils.js +1 -1
- package/arcade.js +1 -1
- package/arcgisGlobal.d.ts +9 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{bb95922cd4631d6f17fb.js → 04ac5ac6f592d8c34bbd.js} +1 -1
- package/assets/esri/core/workers/chunks/{44e64186318728d1be51.js → 067b00498ae85f635f60.js} +1 -1
- package/assets/esri/core/workers/chunks/{62f3ca0719ac6bc76512.js → 09c43bcb09aad02e83a9.js} +1 -1
- package/assets/esri/core/workers/chunks/0b20f92bae2b4c40d299.js +1 -0
- package/assets/esri/core/workers/chunks/0c3c311400ee352187ea.js +1 -0
- package/assets/esri/core/workers/chunks/0c582abc8d25249eb530.js +1 -0
- package/assets/esri/core/workers/chunks/0d6776055e9b34c14151.js +1 -0
- package/assets/esri/core/workers/chunks/0d7d54e74b5639a0be6e.js +1 -0
- package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +1 -0
- package/assets/esri/core/workers/chunks/0e6b6fcc55cc43ede1fc.js +1 -0
- package/assets/esri/core/workers/chunks/{bcb5017500d144b73908.js → 126f1f6b355723db6c4f.js} +1 -1
- package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +1 -0
- package/assets/esri/core/workers/chunks/{b2c0262c4a76b8a86200.js → 149284464115981694ff.js} +1 -1
- package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +1 -0
- package/assets/esri/core/workers/chunks/1840d74ebae777a0200b.js +1 -0
- package/assets/esri/core/workers/chunks/19bf6826e7d9a4d52035.js +1 -0
- package/assets/esri/core/workers/chunks/1bfbdec791e19f5a2534.js +1 -0
- package/assets/esri/core/workers/chunks/1d8280f63a6698e74f20.js +1 -0
- package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js → 242cad472fbc38b24dbc.js} +2 -2
- package/assets/esri/core/workers/chunks/25197ecb324d6f08e03e.js +1 -0
- package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +1 -0
- package/assets/esri/core/workers/chunks/25999b6f96ec305a7679.js +1 -0
- package/assets/esri/core/workers/chunks/259bdacfb7b0f866a8d0.js +1 -0
- package/assets/esri/core/workers/chunks/28565756f884d0851003.js +1 -0
- package/assets/esri/core/workers/chunks/2a5a165848413764381b.js +1 -0
- package/assets/esri/core/workers/chunks/2e7a5bb740281ef59199.js +1 -0
- package/assets/esri/core/workers/chunks/{285a5bd708f0fe1c620c.js → 2ea3ca68cfa4d34e8f3b.js} +1 -1
- package/assets/esri/core/workers/chunks/2f87a49bdd00f899d81d.js +1 -0
- package/assets/esri/core/workers/chunks/{37a95f097533bad1b338.js → 302d91b7c480c6c9304b.js} +1 -1
- package/assets/esri/core/workers/chunks/{3d6d2b42ba2ad7086d5d.js → 3b493e8043ec1a2a5d96.js} +1 -1
- package/assets/esri/core/workers/chunks/3ddd717ea12d9823eee2.js +1 -0
- package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +1 -0
- package/assets/esri/core/workers/chunks/{a833fc9250635eb4152f.js → 41f7f3615d3ecb87c59a.js} +1 -1
- package/assets/esri/core/workers/chunks/{95b3b8fe45ef4ac6b277.js → 450bc48a7389607bce1e.js} +1 -1
- package/assets/esri/core/workers/chunks/465a050fd838ee8eddf3.js +1 -0
- package/assets/esri/core/workers/chunks/{0d61c8d348b09179777a.js → 46d8a1d6f7341ad20749.js} +1 -1
- package/assets/esri/core/workers/chunks/4710f21b138a2c9a0345.js +1 -0
- package/assets/esri/core/workers/chunks/48a0dfaabb9b4bce4191.js +1 -0
- package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +1 -0
- package/assets/esri/core/workers/chunks/{4ee900e5dbb130fa0c7b.js → 4a40b894ec89b0a4f9bf.js} +1 -1
- package/assets/esri/core/workers/chunks/{d847c3cb2043a983145b.js → 4addea2e35b0c845743e.js} +1 -1
- package/assets/esri/core/workers/chunks/{e0a4d0288abd334b0673.js → 4ae626868e14bedd7fc5.js} +1 -1
- package/assets/esri/core/workers/chunks/529ee4670940720e888b.js +1 -0
- package/assets/esri/core/workers/chunks/{a3c882fe7599dc0f4f27.js → 59d1708ae13c6e7e6e55.js} +1 -1
- package/assets/esri/core/workers/chunks/59dd83e5aee2908c7eca.js +1 -0
- package/assets/esri/core/workers/chunks/{b5c7813495657f844171.js → 5adf16c034a590b5e9f5.js} +1 -1
- package/assets/esri/core/workers/chunks/{b8bdacebd4d24ba90f3f.js → 5fde1234c5cccaee6763.js} +1 -1
- package/assets/esri/core/workers/chunks/60f9b37dd738d884c48d.js +1 -0
- package/assets/esri/core/workers/chunks/62c8413f3bbc1378273d.js +1 -0
- package/assets/esri/core/workers/chunks/6501ee40bf25f9f75d02.js +1 -0
- package/assets/esri/core/workers/chunks/663cf8bff17c894cd5f8.js +1 -0
- package/assets/esri/core/workers/chunks/6d1371b521c7f94fd77e.js +1 -0
- package/assets/esri/core/workers/chunks/6d5038d4351fe29e2718.js +1 -0
- package/assets/esri/core/workers/chunks/6f102c90908c9900cdaa.js +1 -0
- package/assets/esri/core/workers/chunks/6f39545710d1b35d922c.js +1 -0
- package/assets/esri/core/workers/chunks/7278fdf6bfcdffa10a7f.js +1 -0
- package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +1 -0
- package/assets/esri/core/workers/chunks/73cb499d7d68c59ba34e.js +1 -0
- package/assets/esri/core/workers/chunks/{b8d788e110c212a879ab.js → 73f228d966b89c73c9e9.js} +1 -1
- package/assets/esri/core/workers/chunks/76bccc318d7cc33829a7.js +1 -0
- package/assets/esri/core/workers/chunks/777eafdb86b26b35c803.js +1 -0
- package/assets/esri/core/workers/chunks/7821aeba3e414b318a75.js +1 -0
- package/assets/esri/core/workers/chunks/7b531feba4fd662575f9.js +1 -0
- package/assets/esri/core/workers/chunks/7c57354d026e27e056d4.js +1 -0
- package/assets/esri/core/workers/chunks/7d163d9d90393e491ee5.js +1 -0
- package/assets/esri/core/workers/chunks/7d4c65311064a5c2e0b1.js +1 -0
- package/assets/esri/core/workers/chunks/{0474af7687466d8befd2.js → 7e2794705b4e679fcb3f.js} +1 -1
- package/assets/esri/core/workers/chunks/7ebbb90d80600d9ba889.js +1 -0
- package/assets/esri/core/workers/chunks/7f125963555dc1ce63ad.js +1 -0
- package/assets/esri/core/workers/chunks/{763cbb6716e398436a6d.js → 7f6eee102871769fdf8f.js} +1 -1
- package/assets/esri/core/workers/chunks/805c97b875d3066fb8df.js +1 -0
- package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +1 -0
- package/assets/esri/core/workers/chunks/86ed75b7169b8ee43025.js +1 -0
- package/assets/esri/core/workers/chunks/{9482a6d7baa24bbf5693.js → 89132395eca329b9ab92.js} +1 -1
- package/assets/esri/core/workers/chunks/{28bc5e8e82f188b30eb9.js → 894343e415639df88243.js} +1 -1
- package/assets/esri/core/workers/chunks/8b4759cef5ae5e43253b.js +1 -0
- package/assets/esri/core/workers/chunks/8ba4175f5e9a24ffecf7.js +1 -0
- package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +1 -0
- package/assets/esri/core/workers/chunks/{bd862382f72ebd446b46.js → 8d2cac1952e817daaf1f.js} +1 -1
- package/assets/esri/core/workers/chunks/8e38c5e63aae42bdf5a4.js +29 -0
- package/assets/esri/core/workers/chunks/{02ab09285a5c4ca98066.js → 8f785b722b1a131bf370.js} +1 -1
- package/assets/esri/core/workers/chunks/8f9874f42f21a4cb3acd.js +1 -0
- package/assets/esri/core/workers/chunks/{57824ecc10b25e3ad794.js → 903e1cd8b76eff19ebdf.js} +1 -1
- package/assets/esri/core/workers/chunks/90f4b81c6034253b70d7.js +1 -0
- package/assets/esri/core/workers/chunks/917c11cb40a7742d7f98.js +1 -0
- package/assets/esri/core/workers/chunks/93ab247ff34694ac60eb.js +1 -0
- package/assets/esri/core/workers/chunks/93c0a620a147cbf4a0ba.js +1 -0
- package/assets/esri/core/workers/chunks/{6e45d0db97ffa4509177.js → 94bf7f0da6ad3f7ea277.js} +1 -1
- package/assets/esri/core/workers/chunks/9be6827e5756031a56c1.js +1 -0
- package/assets/esri/core/workers/chunks/9c57161ad48d8d546dc7.js +1 -0
- package/assets/esri/core/workers/chunks/{b2cf1d3f0d48eac23a84.js → 9c5dff4f13102871786e.js} +1 -1
- package/assets/esri/core/workers/chunks/9d0bda096cdbd7e22f4b.js +1 -0
- package/assets/esri/core/workers/chunks/9dfb7d120195991e9672.js +1 -0
- package/assets/esri/core/workers/chunks/9ed5e6b06afea6c85330.js +1 -0
- package/assets/esri/core/workers/chunks/{79b857bb301f9c4169d6.js → 9fee8441fbac9f723f77.js} +1 -1
- package/assets/esri/core/workers/chunks/a108f276659d5f25352c.js +1 -0
- package/assets/esri/core/workers/chunks/{b32ede7805c7c6644e4c.js → a3bf8aa81ee398da5b52.js} +1 -1
- package/assets/esri/core/workers/chunks/{5b30231ae0a8f4b8435f.js → a504fa17d83facf1c01f.js} +1 -1
- package/assets/esri/core/workers/chunks/a52c88e2d837b525ff6c.js +1 -0
- package/assets/esri/core/workers/chunks/{23a3d8f91caf3136b2aa.js → a5fdb02b1714e93fa69e.js} +1 -1
- package/assets/esri/core/workers/chunks/{538fe46dfd685a490e23.js → a7f42ada0aa69873a938.js} +1 -1
- package/assets/esri/core/workers/chunks/a97e0b9b057664911c14.js +1 -0
- package/assets/esri/core/workers/chunks/{cb58aff1ff186fa18345.js → a9f616f22042b0dce8b9.js} +1 -1
- package/assets/esri/core/workers/chunks/afd63c18ce4656271c8e.js +1 -0
- package/assets/esri/core/workers/chunks/{f04cb48fc73635d0572f.js → b059dabb1c732829487c.js} +1 -1
- package/assets/esri/core/workers/chunks/b313464b987db8a3987a.js +1 -0
- package/assets/esri/core/workers/chunks/b318823aefcefad6fad5.js +1 -0
- package/assets/esri/core/workers/chunks/b378e504a5b1afc8d0ce.js +1 -0
- package/assets/esri/core/workers/chunks/{9fb87a7dba62b527c0ba.js → b3a1a93c6dc9247cb048.js} +1 -1
- package/assets/esri/core/workers/chunks/b4e5ee81b9eb171499a6.js +1 -0
- package/assets/esri/core/workers/chunks/b5397dc03fa0bd654ba6.js +1 -0
- package/assets/esri/core/workers/chunks/b5b698008b8f3f4d5d61.js +1 -0
- package/assets/esri/core/workers/chunks/b7bcb31737b01d7736d0.js +1 -0
- package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +1 -0
- package/assets/esri/core/workers/chunks/{cda04571d7623c17ada2.js → b9c7aa04861f545a559c.js} +1 -1
- package/assets/esri/core/workers/chunks/{7df795bc4fa1d433463b.js → ba030767cf935f967454.js} +1 -1
- package/assets/esri/core/workers/chunks/{53d165b4f30fd64e5d8a.js → bd311c85437743cf7d2f.js} +1 -1
- package/assets/esri/core/workers/chunks/bd88228f781a0399d8bd.js +1 -0
- package/assets/esri/core/workers/chunks/bece22668622a9a6bfe2.js +1 -0
- package/assets/esri/core/workers/chunks/bfb626805405646a0419.js +1 -0
- package/assets/esri/core/workers/chunks/c02ae1d40c1fe95ae6c5.js +1 -0
- package/assets/esri/core/workers/chunks/c203df41f9d2e4b80889.js +1 -0
- package/assets/esri/core/workers/chunks/{278409028bc5af45b507.js → c4c83b5129c279c3615b.js} +1 -1
- package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +1 -0
- package/assets/esri/core/workers/chunks/c7e391df714839484cd1.js +1 -0
- package/assets/esri/core/workers/chunks/cded485ad893a7dd2948.js +1 -0
- package/assets/esri/core/workers/chunks/{1cf8fb704c48ac3d3b15.js → cf360767310fb45660a8.js} +1 -1
- package/assets/esri/core/workers/chunks/{8f2fecd8a0a972d68590.js → cf8ce63711488f2e677c.js} +1 -1
- package/assets/esri/core/workers/chunks/d214ac457ac970479536.js +1 -0
- package/assets/esri/core/workers/chunks/d4058352db1e8255b52e.js +1 -0
- package/assets/esri/core/workers/chunks/d4d385d19e62ef1c286f.js +1 -0
- package/assets/esri/core/workers/chunks/d4f005dadba75422b401.js +1 -0
- package/assets/esri/core/workers/chunks/d583bcea4d1a21da9147.js +1 -0
- package/assets/esri/core/workers/chunks/{52c4b4dabcb0d162be72.js → d5e15021928e95c11463.js} +1 -1
- package/assets/esri/core/workers/chunks/{fc639c730115e07a4a1a.js → d6500f6b2ff115d9eb09.js} +1 -1
- package/assets/esri/core/workers/chunks/{3f775deea48e268411f1.js → d7267f429a051943187b.js} +1 -1
- package/assets/esri/core/workers/chunks/d9c78c2db04a06ee83ed.js +1 -0
- package/assets/esri/core/workers/chunks/{e65ee26feca0564aeb9b.js → dc7e4f7879debf557e46.js} +145 -97
- package/assets/esri/core/workers/chunks/e1492d2404c3ed82931e.js +1 -0
- package/assets/esri/core/workers/chunks/e34ed3b818b2eb4116c5.js +1 -0
- package/assets/esri/core/workers/chunks/e7149d23615fee31ab7e.js +1 -0
- package/assets/esri/core/workers/chunks/ec774f5d6ea5c29536e5.js +1 -0
- package/assets/esri/core/workers/chunks/ed71a4e353715db0a6e9.js +1 -0
- package/assets/esri/core/workers/chunks/{1e342d532925569daadb.js → f475672ff4c2ec9367c2.js} +1 -1
- package/assets/esri/core/workers/chunks/{cc414fd2e313d89d524d.js → f54eba484f40d5eeb590.js} +1 -1
- package/assets/esri/core/workers/chunks/{04ffe788d2efc0a076dd.js → f5c9659fc5d571d501c9.js} +1 -1
- package/assets/esri/core/workers/chunks/f622b27ebdf1c918fd6d.js +1 -0
- package/assets/esri/core/workers/chunks/{dd95f50dac3f33cdb6d2.js → f6a13f07a5f7b781a9a8.js} +1 -1
- package/assets/esri/core/workers/chunks/{d849bdaf5bdfdc37531a.js → f6f7d885b4d6080e3f58.js} +1 -1
- package/assets/esri/core/workers/chunks/f8b8d3d2710c83acccf3.js +1 -0
- package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +1 -0
- package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +1 -0
- package/assets/esri/core/workers/chunks/faa55265020591fd2224.js +1 -0
- package/assets/esri/core/workers/chunks/fc827f58db3194922056.js +1 -0
- package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
- package/chunks/Component.glsl.js +60 -62
- package/chunks/DefaultMaterial.glsl.js +27 -28
- package/chunks/GaussianSplat.glsl.js +7 -7
- package/chunks/GaussianSplatShadow.glsl.js +9 -9
- package/chunks/GlobalIllumination.glsl.js +35 -15
- package/chunks/Path.glsl.js +7 -6
- package/chunks/RealisticTree.glsl.js +22 -24
- package/chunks/SSAO.glsl.js +1 -1
- package/chunks/Terrain.glsl.js +3 -2
- package/chunks/Water.glsl.js +20 -11
- package/chunks/aiServices.js +1 -1
- package/chunks/array.js +1 -1
- package/chunks/bundle2.js +1 -1
- package/chunks/languageUtils.js +1 -1
- package/config.js +1 -1
- package/form/ExpressionInfo.d.ts +1 -1
- package/form/ExpressionInfo.js +1 -1
- package/form/elements/FieldElement.d.ts +3 -2
- package/form/elements/inputs/ComboBoxInput.d.ts +4 -15
- package/form/elements/inputs/ComboBoxInput.js +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +31 -0
- package/form/elements/inputs/DynamicChoiceInput.js +2 -0
- package/form/elements/inputs/Input.d.ts +1 -1
- package/form/elements/inputs/RadioButtonsInput.d.ts +4 -15
- package/form/elements/inputs/RadioButtonsInput.js +1 -1
- package/form/elements/inputs/SingleChoiceInput.d.ts +18 -0
- package/form/elements/inputs/SingleChoiceInput.js +2 -0
- package/form/elements/inputs.d.ts +11 -2
- package/form/elements/inputs.js +1 -1
- package/geometry/support/normalizeUtils.d.ts +1 -1
- package/kernel.js +1 -1
- package/layers/ImageryTileLayer.d.ts +1 -1
- package/layers/RouteLayer.d.ts +1 -1
- package/layers/graphics/sources/ParquetSource.js +1 -1
- package/layers/graphics/sources/parquet/FileProvider.js +1 -1
- package/layers/graphics/sources/parquet/ParquetFileInfo.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/ArcGISImageService.d.ts +24 -24
- package/layers/mixins/TiledImagery.d.ts +1 -1
- package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
- package/layers/raster/datasets/EphemeralBlockCache.js +1 -1
- package/layers/raster/datasets/RawBlockCache.js +1 -1
- package/layers/support/KMLSublayer.js +1 -1
- package/libs/parquet/parquet.js +1 -1
- package/networks/support/CircuitExportJobInfo.d.ts +1 -1
- package/networks/support/CircuitVerifyJobInfo.d.ts +1 -1
- package/networks/support/TopologyValidationJobInfo.d.ts +1 -1
- package/networks/support/TraceJobInfo.d.ts +1 -1
- package/package.json +2 -2
- package/portal/jsonTypes.d.ts +1 -1
- package/rest/closestFacility.d.ts +1 -1
- package/rest/find.d.ts +1 -1
- package/rest/geometryService.d.ts +21 -21
- package/rest/geoprocessor.d.ts +2 -2
- package/rest/identify.d.ts +1 -1
- package/rest/imageService.d.ts +19 -19
- package/rest/lastMileDelivery.d.ts +8 -8
- package/rest/locator.d.ts +4 -4
- package/rest/networkService.d.ts +1 -1
- package/rest/networks/queryAssociations.d.ts +1 -1
- package/rest/networks/synthesizeAssociationGeometries.d.ts +1 -1
- package/rest/networks/trace.d.ts +1 -1
- package/rest/networks/traverseAssociations.d.ts +1 -1
- package/rest/places.d.ts +3 -3
- package/rest/print.d.ts +1 -1
- package/rest/query.d.ts +11 -11
- package/rest/route.d.ts +1 -1
- package/rest/serviceArea.d.ts +1 -1
- package/rest/support/JobInfo.d.ts +5 -5
- package/rest/support/Query.js +1 -1
- package/rest/symbolService.d.ts +1 -1
- package/support/revision.js +1 -1
- package/symbols/LabelSymbol3D.js +1 -1
- package/symbols/LineSymbol3D.js +1 -1
- package/symbols/MeshSymbol3D.js +1 -1
- package/symbols/PointSymbol3D.js +1 -1
- package/symbols/PolygonSymbol3D.js +1 -1
- package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
- package/views/3d/interactive/editingTools/transform/TransformTool3D.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
- package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
- package/views/3d/state/controllers/RotateController.js +1 -1
- package/views/3d/state/utils/navigationUtils.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathEvaluate.glsl.js +49 -32
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +23 -23
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +24 -16
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js +25 -0
- package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +2 -0
- package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
- package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
- package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
- package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPassParameters.js +2 -0
- package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatShadowTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/draw/support/InteractiveHandle.js +1 -1
- package/views/draw/support/managers/SurfaceManager.js +1 -1
- package/views/interactive/Tooltip.d.ts +3 -3
- package/views/interactive/Tooltip.js +1 -1
- package/views/interactive/options/ElevationOptions.d.ts +20 -0
- package/views/interactive/options/ElevationOptions.js +2 -0
- package/views/interactive/options/LabelOptions.d.ts +74 -0
- package/views/interactive/options/LabelOptions.js +2 -0
- package/views/interactive/options/SnappingOptions.d.ts +157 -0
- package/views/interactive/options/SnappingOptions.js +2 -0
- package/views/interactive/options/TooltipOptions.d.ts +152 -0
- package/views/interactive/options/TooltipOptions.js +2 -0
- package/views/interactive/options/TooltipVisibleElements.d.ts +105 -0
- package/views/interactive/options/TooltipVisibleElements.js +2 -0
- package/views/interactive/options/ValueOptions.d.ts +63 -0
- package/views/interactive/options/ValueOptions.js +2 -0
- package/views/interactive/sketch/SketchLabelOptions.d.ts +7 -9
- package/views/interactive/sketch/SketchLabelOptions.js +1 -1
- package/views/interactive/sketch/SketchTooltipElevationOptions.js +1 -1
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +8 -50
- package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
- package/views/interactive/sketch/SketchTooltipVisibleElements.d.ts +10 -95
- package/views/interactive/sketch/SketchTooltipVisibleElements.js +1 -1
- package/views/interactive/sketch/SketchValueOptions.d.ts +7 -45
- package/views/interactive/sketch/SketchValueOptions.js +1 -1
- package/views/interactive/sketch/Units.d.ts +10 -29
- package/views/interactive/sketch/Units.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +7 -78
- package/views/interactive/snapping/SnappingOptions.js +1 -1
- package/views/interactive/support/Units.d.ts +33 -0
- package/views/interactive/support/Units.js +2 -0
- package/views/interactive/support/types.d.ts +33 -0
- package/views/interactive/tooltip/types.d.ts +6 -2
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
- package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
- package/widgets/LayerList/ListItem.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
- package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
- package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/TableList/ListItem.js +1 -1
- package/assets/esri/core/workers/chunks/02dd79beb13eff6be85e.js +0 -1
- package/assets/esri/core/workers/chunks/0623acb2bd14a61b65c9.js +0 -29
- package/assets/esri/core/workers/chunks/069b6d8bdb34ee88d437.js +0 -1
- package/assets/esri/core/workers/chunks/0790bf0eb276cd9166f6.js +0 -1
- package/assets/esri/core/workers/chunks/08c2bf9defcece9e049a.js +0 -1
- package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +0 -1
- package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +0 -1
- package/assets/esri/core/workers/chunks/10b367563f894ceb9864.js +0 -1
- package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +0 -1
- package/assets/esri/core/workers/chunks/13033178de9f637a2356.js +0 -1
- package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +0 -1
- package/assets/esri/core/workers/chunks/14cd8bb1ad4da8d1d2ca.js +0 -1
- package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +0 -1
- package/assets/esri/core/workers/chunks/246cd372d4184233f48e.js +0 -1
- package/assets/esri/core/workers/chunks/268ab65afc3fce775ad2.js +0 -1
- package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +0 -1
- package/assets/esri/core/workers/chunks/2a1c6df073e6ca6a6365.js +0 -1
- package/assets/esri/core/workers/chunks/3406a01dad6338e3c548.js +0 -1
- package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +0 -1
- package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +0 -1
- package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +0 -1
- package/assets/esri/core/workers/chunks/3f1a7f8a9ead64bf0b7b.js +0 -1
- package/assets/esri/core/workers/chunks/41e821ce229bc56dc1a1.js +0 -1
- package/assets/esri/core/workers/chunks/43b39abd49c4a8ce891f.js +0 -1
- package/assets/esri/core/workers/chunks/456e616f32e7de696d38.js +0 -1
- package/assets/esri/core/workers/chunks/478540265c86436da05e.js +0 -1
- package/assets/esri/core/workers/chunks/479f486ec1797629ec70.js +0 -1
- package/assets/esri/core/workers/chunks/484b3e2a220c440ccbb4.js +0 -1
- package/assets/esri/core/workers/chunks/4a340836ddbc856993f2.js +0 -1
- package/assets/esri/core/workers/chunks/54b9667450d066c6f6ce.js +0 -1
- package/assets/esri/core/workers/chunks/57b07448da06d0302a46.js +0 -1
- package/assets/esri/core/workers/chunks/5a9ff50fdcc99ae28cce.js +0 -1
- package/assets/esri/core/workers/chunks/5dbd8ca7e7b8eb9a0bf7.js +0 -1
- package/assets/esri/core/workers/chunks/5dc17b76c6ecc24e7b9a.js +0 -1
- package/assets/esri/core/workers/chunks/5e3d5347223f0111f40f.js +0 -1
- package/assets/esri/core/workers/chunks/5eb6f37c74a217772eca.js +0 -1
- package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +0 -1
- package/assets/esri/core/workers/chunks/638ed1297efdb24f4711.js +0 -1
- package/assets/esri/core/workers/chunks/63ede7295938f7010808.js +0 -1
- package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +0 -1
- package/assets/esri/core/workers/chunks/687cf21e027f49b44d22.js +0 -1
- package/assets/esri/core/workers/chunks/6c2b5087a9df65267f4e.js +0 -1
- package/assets/esri/core/workers/chunks/6c98a64d92c9bca78203.js +0 -1
- package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +0 -1
- package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +0 -1
- package/assets/esri/core/workers/chunks/70452f6d63e9be8d03dd.js +0 -1
- package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +0 -1
- package/assets/esri/core/workers/chunks/7659391f952d134164cf.js +0 -1
- package/assets/esri/core/workers/chunks/7889f4a17cf249f2acc5.js +0 -1
- package/assets/esri/core/workers/chunks/7a2dcd57849048c6e00d.js +0 -1
- package/assets/esri/core/workers/chunks/7a2dfa42610fe8414ed7.js +0 -1
- package/assets/esri/core/workers/chunks/7ce52b850dd785bfa33f.js +0 -1
- package/assets/esri/core/workers/chunks/7d85048c6cd6ad84faf9.js +0 -1
- package/assets/esri/core/workers/chunks/7fdd6a5fa062778be55d.js +0 -1
- package/assets/esri/core/workers/chunks/81accb1820e2735fa376.js +0 -1
- package/assets/esri/core/workers/chunks/8210fc9e072209e26fa9.js +0 -1
- package/assets/esri/core/workers/chunks/8369edafab7bdc59b95a.js +0 -1
- package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +0 -1
- package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +0 -1
- package/assets/esri/core/workers/chunks/8722e2790272e90a1897.js +0 -1
- package/assets/esri/core/workers/chunks/8a1970e68bc1e833cb7f.js +0 -1
- package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +0 -1
- package/assets/esri/core/workers/chunks/8c535c6a39d2be2ed655.js +0 -1
- package/assets/esri/core/workers/chunks/9008090a5d8431ddfa22.js +0 -1
- package/assets/esri/core/workers/chunks/92696cce2b980373f9ad.js +0 -1
- package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +0 -1
- package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +0 -1
- package/assets/esri/core/workers/chunks/a09ce34fc7c8abe64ed5.js +0 -1
- package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +0 -1
- package/assets/esri/core/workers/chunks/a5f058567419ea70dff6.js +0 -1
- package/assets/esri/core/workers/chunks/a965d151515b76dd7566.js +0 -1
- package/assets/esri/core/workers/chunks/afeeb11b39e140303b5a.js +0 -1
- package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +0 -1
- package/assets/esri/core/workers/chunks/b8e5d7aefddddbd0a10c.js +0 -1
- package/assets/esri/core/workers/chunks/b958f87f23f984131d09.js +0 -1
- package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +0 -1
- package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +0 -1
- package/assets/esri/core/workers/chunks/c85ba0700eafdc8d6f9e.js +0 -1
- package/assets/esri/core/workers/chunks/c97451f75c23be979476.js +0 -1
- package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +0 -1
- package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +0 -1
- package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +0 -1
- package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +0 -1
- package/assets/esri/core/workers/chunks/d37a72111dffc4c4db70.js +0 -1
- package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +0 -1
- package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +0 -1
- package/assets/esri/core/workers/chunks/d83ea3e4e9ab45334068.js +0 -1
- package/assets/esri/core/workers/chunks/d9b83d7dd7d1f7729a91.js +0 -1
- package/assets/esri/core/workers/chunks/dbcec48c4ba104a6d0b5.js +0 -1
- package/assets/esri/core/workers/chunks/dc24e80d061f7b063608.js +0 -1
- package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +0 -1
- package/assets/esri/core/workers/chunks/e5bb7ee670a3ba5ba3fe.js +0 -1
- package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +0 -1
- package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +0 -1
- package/assets/esri/core/workers/chunks/f1299b4fc760ccca1518.js +0 -1
- package/assets/esri/core/workers/chunks/f65adaaa33d9f3b131f6.js +0 -1
- package/assets/esri/core/workers/chunks/f6715b8765cd36d81ec8.js +0 -1
- package/assets/esri/core/workers/chunks/f7fa932ade85cb2847b6.js +0 -1
- package/assets/esri/core/workers/chunks/f9a4f4efd63b8189a4eb.js +0 -1
- package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +0 -1
- package/assets/esri/core/workers/chunks/fa1c58e5b582d61a03ab.js +0 -1
- package/assets/esri/core/workers/chunks/fdec3a2e100688c42e41.js +0 -1
- package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +0 -1
- /package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js.LICENSE.txt → 242cad472fbc38b24dbc.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{unique as r}from"../../../core/arrayUtils.js";import{EventEmitter as t}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as s,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as n}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as a,syncAndInitial as h,on as d,initial as l}from"../../../core/reactiveUtils.js";import{someSet as c}from"../../../core/SetUtils.js";import{property as u,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as _,fromTranslation as g}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as m}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as y}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as f}from"../support/debugFlags.js";import{Overlay as R}from"./Overlay.js";import{OverlayRenderTargets as v}from"./OverlayRenderTargets.js";import w from"../webgl/RenderCamera.js";import{SyncRenderPlugin as x}from"../webgl-engine/effects/RenderPlugin.js";import{trackHighlightOptions as T,renderHighlightBuffer as S}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as b}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as O}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as D,defaultRenderOccludedMask as C}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as P}from"../webgl-engine/lib/ShadowMap.js";import{T as j}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as E}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as F}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as M}from"../webgl-engine/lighting/Lightsources.js";import{O as W}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as V}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as q}from"../../support/Scheduler.js";import A from"../../webgl/Texture.js";import{TextureDescriptor as G}from"../../webgl/TextureDescriptor.js";let k=class extends x{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new W,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new j,this._screenToWorldRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new w,this.events=new t,this.longitudeCyclical=null,this.produces=new Map([[18,e=>10!==e||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;const{state:r,stage:s}=e.parent.view,i=s.renderer.fboCache,n=s.renderView.renderingContext,a=s.renderView.techniques;this._renderContext=new D(n,new P(i,r.viewingMode),a)}initialize(){const e=this._view,r=e.stage.renderView.waterTextures;this.addHandles([a(()=>r.updating,()=>this.events.emit("content-changed"),h),a(()=>this._spatialReference,e=>this._localOriginFactory=new O(e),h),d(()=>e.allLayerViews,"after-changes",()=>this._sortedDrapeSourceRenderersDirty=!0),a(()=>T(e.state.highlights),()=>this._sortedDrapeSourceRenderersDirty=!0,l),a(()=>e.state.highlights,e=>{this._bindParameters.highlights=e},l),e.resourceController.scheduler.registerTask(q.OVERLAY_RENDERER,this)]);const t=this._camera;t.near=1,t.far=1e4,t.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=t,this._bindParameters.updateLighting(new M(y()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=n(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){const r=new b(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit("content-changed"),this.notifyChange("updating"),this.notifyChange("isEmpty")},()=>this.events.emit("content-changed"));this._pluginContext={...e,materials:r},this._techniques.precompile(V)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||s(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return null!=this._overlays&&null!=this._renderTargets}getMaterialRenderer(e){for(const r of this._renderers.values()){const t=r.getMaterialRenderer(e);if(t)return t}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),r(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,r){const t=this._renderers.get(e);null!=t&&t.destroy(),this._renderers.set(e,r),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this.addHandles(a(()=>e.fullOpacity,()=>this.events.emit("content-changed")),e)}removeDrapeSourceRenderer(e){if(null==e)return;const r=this._renderers.get(e);null!=r&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),r.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=!!this._overlays&&c(e,e=>1===e.drapeTargetType)}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=c(e,e=>1===e.drapeSourceType),this._hasDrapedRasterSource=c(e,e=>0===e.drapeSourceType),this._hasDrapedFlowSource=c(e,e=>2===e.drapeSourceType)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,r,t=this._bindParameters.overlayStretch){null==this._overlays&&(this._renderTargets=new v(this._stage.renderer.fboCache),this._overlays=[new R,new R]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r),this._bindParameters.overlayStretch=t}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit("textures-disposed")}_useOverlayColorInsteadOfColorNoRasterImage(e){return 1===e&&!this._needsColorWithoutRasterImage&&this._hasDrapedFeatureSource}getTexture(e){const r=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(r?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=s(this._renderers,e=>e.hasOccluders)?H:1}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(r?.done)break;(s.destroyed||e(s))&&(i.commitChanges()&&(t=!0,r?.madeProgress()))}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,t=!0,this._updateSortedDrapeSourceRenderers(),r?.madeProgress()),r&&this.compact(r),t&&(null!=this._overlays&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.notifyChange("isEmpty"),this._onMaterialOrContentChanged(),this.hasHighlights=s(this._renderers,e=>e.hasHighlights),this.events.emit("content-changed"))}compact(e){let r=!1;for(const t of this._renderers.values()){if(e.done)break;r=t.compact(e)||r}return r&&this.notifyChange("updating"),r}hasHighlight(e){return s(this._renderers,r=>r.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>1===e.updatePolicy)}get isEmpty(){return!f.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){const e=s(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water")),this._hasWater}renders(e){if(f.OVERLAY_DRAW_DEBUG_TEXTURE&&4!==e&&2!==e)return!0;if(!this._overlays)return!1;const r=this._overlays[0];for(const i of this._overlays)i.setupGeometryViews(this.longitudeCyclical);if(!r.hasSomeSizedView())return!1;const t=this._setOutput(this._renderTargets?.targets.find(r=>r.content===e)?.output??0);++this._techniques.precompiling;const s=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,this._setOutput(t),s}_setOutput(e){const r=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=4===e?19:18,r}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:this._renderTargets?.getTexture(0)?1:0}updateAnimation(e){let r=!1;return this._renderers.forEach(t=>r=t.updateAnimation(e)||r),r&&this.parent.requestRender(0),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;const r=this._bindParameters;r.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(const t of this._renderTargets.targets){if(1===t.content&&!this._needsColorWithoutRasterImage)continue;const{output:e}=t;this._setOutput(e),10===e&&(r.highlightMixTexture=r.highlights.length>1?this._rctx.emptyTexture:null);const s=this._renderContext.renderOccludedMask;4===t.content&&(this._renderContext.renderOccludedMask=H),this._sortedRenderers.forAll(({drapeSource:e,renderer:r})=>{1===t.content&&0===e.drapeSourceType||4===t.content&&r.hasOnlyOccluders||r.precompile(this._renderContext)}),this._renderContext.renderOccludedMask=s,r.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,r){if(!this._overlays||!this._renderTargets)return;for(const s of this._overlays)s.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;const t=this.allSourcesOccluders;for(const s of this._renderTargets.targets){if(!(0===s.content&&this._hasDrapedFlowSource)&&!s.handleRenderRequest(r)||1===s.content&&!this._needsColorWithoutRasterImage||4===s.content&&t)continue;const e=this._drawTarget(0,s),i=this._drawTarget(1,s);(e||i)&&s.fbo.generateMipMap()}}_drawTarget(e,r){const t=this._overlays[e],s=t.canvasGeometries;if(0===s.numViews)return!1;const i=this._view.state.contentPixelRatio;this._screenToWorldRatio=i*t.mapUnitsPerPixel/this._bindParameters.overlayStretch;const{output:n,content:o}=r;if(this.isEmpty||4===n&&!this.hasWater||!t.hasSomeSizedView())return!1;const{_rctx:a,_camera:h,_renderContext:d,_bindParameters:l}=this;if(h.pixelRatio=t.pixelRatio*i,this._setOutput(n),l.screenToWorldRatio=this._screenToWorldRatio,l.screenToPCSRatio=this._screenToWorldRatio*this.parent.worldToPCSRatio,4===o&&(d.renderOccludedMask=H),!this.renders(o))return d.renderOccludedMask=C,!1;const{resolution:c}=t,u=0===e,p=u?0:c;a.setViewport(p,0,c,c),this._bindTargetFBO(r),u&&(10===n?a.gl.clearBufferuiv(a.gl.COLOR,0,[0,0,0,0]):(a.setClearColor(0,0,0,0),a.clear(16384)));if(f.OVERLAY_DRAW_DEBUG_TEXTURE&&4!==o&&2!==o){this._techniques.precompile(E,L);const r=this._techniques.get(E,L);for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],t),this._ensureDebugPatternResources(t.resolution,U[e]),a.bindTechnique(r,l,this._passParameters),a.screen.draw()}if(10===n){const{fboCache:t}=this._stage.renderer,s=this._resolution;this._bindTargetFBO(r),S(a,t,s,s,l,()=>this._renderAllGeometry(e,r),p)}else this._renderAllGeometry(e,r);return a.bindFramebuffer(null),d.renderOccludedMask=C,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,r){const t=this._overlays[e],s=t.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:n})=>{if(1===r.content&&0===i.drapeSourceType)return;const{fullOpacity:o}=i,a=null!=o&&o<1&&0===r.output&&this._bindTemporaryFBO();for(let e=0;e<s.numViews;e++)this._setViewParameters(s.extents[e],t),n.render(this._renderContext);if(a){this._bindTargetFBO(r),this._overlayParameters.texture=a.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;const t=this._techniques.get(V);this._rctx.bindTechnique(t,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),a.release()}})}_bindTargetFBO(e){const r=this._resolution,t=2*r;e.fbo.ensureFramebuffer(t,r),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){const e=this._resolution,r=2*e,t=this._stage.renderer.fboCache,s=t.acquire(r,e,"overlay tmp");return t.rctx.bindFramebuffer(s.fbo),t.rctx.clear(16384),s}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit("content-changed")}intersectRay(e,r,t,s){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(const{renderer:n}of this._sortedRenderers)i=n.intersectRay?.(e,r,t,s,i)??i}*intersectScreenPolygon(e,r,t){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let s=0;for(const{renderer:i}of this._sortedRenderers)s=yield*i.intersectScreenPolygon(e,r,t,s)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this._view.map.allLayers.map(e=>e.uid),r=e.length;this._renderers.forEach((t,s)=>{const i=e.indexOf(s.layer?.uid),n=i>=0,o=s.renderGroup??(n?0:1),a=s.drapeSourcePriorityOffset??0,h=r*o+(n?i:0)+a;this._sortedRenderers.push(new I(s,t,h))}),this._sortedRenderers.sort((e,r)=>e.index-r.index)}_setViewParameters(e,r){const t=this._camera;t.viewport=[0,0,r.resolution,r.resolution],_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),g(t.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,r){if(m(this._passParameters.color,r[0],r[1],r[2]),this._passParameters.texture)return;const t=new Uint8Array(e*e*4);let s=0;for(let n=0;n<e;n++)for(let r=0;r<e;r++){const i=Math.floor(r/10),o=Math.floor(n/10);i<2||o<2||10*i>e-20||10*o>e-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&i&&1&o?1&r^1&n?0:255:1&i^1&o?0:128)}const i=new G(e);i.samplingMode=9728,this._passParameters.texture=new A(this._rctx,i,t)}get test(){}};e([u()],k.prototype,"hasHighlights",void 0),e([u()],k.prototype,"renderOccludedFlags",void 0),e([u()],k.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([u({constructOnly:!0})],k.prototype,"parent",void 0),e([u({readOnly:!0})],k.prototype,"_techniques",null),e([u({type:Boolean,readOnly:!0})],k.prototype,"updating",null),e([u()],k.prototype,"isEmpty",null),k=e([p("esri.views.3d.terrain.OverlayRenderer")],k);class I{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const U=[[1,.5,.5],[.5,.5,1]],B=-2,H=4,L=new F;L.hasAlpha=!0;export{k as OverlayRenderer,B as drapedZ,H as overlayRenderOccludedFlag};
|
|
2
|
+
import{__decorate as e}from"tslib";import{unique as r}from"../../../core/arrayUtils.js";import{EventEmitter as t}from"../../../core/Evented.js";import"../../../core/has.js";import{someMap as s,everyMap as i}from"../../../core/MapUtils.js";import{disposeMaybe as n}from"../../../core/maybe.js";import o from"../../../core/PooledArray.js";import{watch as a,syncAndInitial as h,on as d,initial as l}from"../../../core/reactiveUtils.js";import{someSet as c}from"../../../core/SetUtils.js";import{property as u,subclass as p}from"../../../core/accessorSupport/decorators.js";import{ortho as _,fromTranslation as g}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{set as m}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{ones as y}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{debugFlags as f}from"../support/debugFlags.js";import{Overlay as R}from"./Overlay.js";import{OverlayRenderTargets as v}from"./OverlayRenderTargets.js";import w from"../webgl/RenderCamera.js";import{SyncRenderPlugin as x}from"../webgl-engine/effects/RenderPlugin.js";import{trackHighlightOptions as S,renderHighlightBuffer as T}from"../webgl-engine/effects/highlight/Highlight.js";import{GLMaterialRepository as b}from"../webgl-engine/lib/GLMaterialRepository.js";import{GridLocalOriginFactory as D}from"../webgl-engine/lib/GridLocalOriginFactory.js";import{RenderContext as O,defaultRenderOccludedMask as C}from"../webgl-engine/lib/RenderContext.js";import{ShadowMap as P}from"../webgl-engine/lib/ShadowMap.js";import{T as j}from"../../../chunks/Texture.glsl.js";import{TextureTechnique as E}from"../webgl-engine/lib/TextureTechnique.js";import{TextureTechniqueConfiguration as F}from"../webgl-engine/lib/TextureTechniqueConfiguration.js";import{AmbientLight as M}from"../webgl-engine/lighting/Lightsources.js";import{O as W}from"../../../chunks/OverlayCompositing.glsl.js";import{OverlayCompositingTechnique as V}from"../webgl-engine/shaders/OverlayCompositingTechnique.js";import{TaskPriority as q}from"../../support/Scheduler.js";import A from"../../webgl/Texture.js";import{TextureDescriptor as G}from"../../webgl/TextureDescriptor.js";let k=class extends x{constructor(e){super(e),this._overlays=null,this._renderTargets=null,this._overlayParameters=new W,this.hasHighlights=!1,this.renderOccludedFlags=1,this._hasWater=!1,this._renderers=new Map,this._sortedDrapeSourceRenderersDirty=!1,this._sortedRenderers=new o,this._passParameters=new j,this._screenToWorldRatio=1,this._localOriginFactory=null,this.unloadedMemory=0,this.ignoresMemoryFactor=!1,this._camera=new w,this.events=new t,this.longitudeCyclical=null,this.produces=new Map([[18,e=>10!==e||this.hasHighlights],[19,()=>this._hasWater]]),this._hasTargetWithoutRasterImage=!1,this._hasDrapedFeatureSource=!1,this._hasDrapedRasterSource=!1,this._hasDrapedFlowSource=!1;const{state:r,stage:s}=e.parent.view,i=s.renderer.fboCache,n=s.renderView.renderingContext,a=s.renderView.techniques;this._renderContext=new O(n,new P(i,r.viewingMode),a)}initialize(){const e=this._view,r=e.stage.renderView.waterTextures;this.addHandles([a(()=>r.updating,()=>this.events.emit("content-changed"),h),a(()=>this._spatialReference,e=>this._localOriginFactory=new D(e),h),d(()=>e.allLayerViews,"after-changes",()=>this._sortedDrapeSourceRenderersDirty=!0),a(()=>S(e.state.highlights),()=>this._sortedDrapeSourceRenderersDirty=!0,l),a(()=>e.state.highlights,e=>{this._bindParameters.highlights=e},l),e.resourceController.scheduler.registerTask(q.OVERLAY_RENDERER,this)]);const t=this._camera;t.near=1,t.far=1e4,t.relativeElevation=null,this._bindParameters.slot=18,this._bindParameters.camera=t,this._bindParameters.updateLighting(new M(y()),0,0,0)}destroy(){this._renderers.forEach(e=>e.destroy()),this._renderers.clear(),this._passParameters.texture=n(this._passParameters.texture),this.disposeOverlays(),this._renderContext.destroy(),this._sortedRenderers.prune()}get _bindParameters(){return this._renderContext.bind}get _rctx(){return this._stage.renderView.renderingContext}get _view(){return this.parent.view}get _stage(){return this.parent.view.stage}get _spatialReference(){return this.parent.spatialReference}get _techniques(){return this._stage.renderView.techniques}get rctx(){return this._rctx}get materials(){return this._pluginContext.materials}get screenToWorldRatio(){return this._screenToWorldRatio}get localOriginFactory(){return this._localOriginFactory}set time(e){this._renderContext.time=e}get pluginContext(){return this._pluginContext}initializeRenderContext(e){const r=new b(this._view.stage.renderView.textures,this._techniques,()=>{this._onMaterialOrContentChanged(),this.events.emit("content-changed"),this.notifyChange("updating"),this.notifyChange("isEmpty")},()=>this.events.emit("content-changed"));this._pluginContext={...e,materials:r},this._techniques.precompile(V)}uninitializeRenderContext(){}acquireTechniques(){return[]}render(){}get updating(){return this._sortedDrapeSourceRenderersDirty||s(this._renderers,e=>e.updating||e.canCompact)}get hasOverlays(){return null!=this._overlays&&null!=this._renderTargets}getMaterialRenderer(e){for(const r of this._renderers.values()){const t=r.getMaterialRenderer(e);if(t)return t}return null}get layers(){return this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers(),r(this._sortedRenderers.map(e=>e.drapeSource.layer).filter(e=>!!e))}registerDrapeSource(e,r){const t=this._renderers.get(e);null!=t&&t.destroy(),this._renderers.set(e,r),this._sortedDrapeSourceRenderersDirty=!0,"fullOpacity"in e&&this.addHandles(a(()=>e.fullOpacity,()=>this.events.emit("content-changed")),e)}removeDrapeSourceRenderer(e){if(null==e)return;const r=this._renderers.get(e);null!=r&&(this._sortedDrapeSourceRenderersDirty=!0,this._renderers.delete(e),this.removeHandles(e),r.destroy())}computeValidity(){return this._renderTargets?.computeValidity()??0}releaseRenderTargets(e){this._renderTargets?.dispose(e)}get overlays(){return this._overlays??[]}ensureDrapeTargets(e){this._hasTargetWithoutRasterImage=!!this._overlays&&c(e,e=>1===e.drapeTargetType)}ensureDrapeSources(e){this._overlays?(this._hasDrapedFeatureSource=c(e,e=>1===e.drapeSourceType),this._hasDrapedRasterSource=c(e,e=>0===e.drapeSourceType),this._hasDrapedFlowSource=c(e,e=>2===e.drapeSourceType)):this._hasDrapedFeatureSource=this._hasDrapedRasterSource=this._hasDrapedFlowSource=!1}get _needsColorWithoutRasterImage(){return this._hasDrapedRasterSource&&this._hasDrapedFeatureSource&&this._hasTargetWithoutRasterImage}ensureOverlays(e,r,t=this._bindParameters.overlayStretch){null==this._overlays&&(this._renderTargets=new v(this._stage.renderer.fboCache),this._overlays=[new R,new R]),this.ensureDrapeTargets(e),this.ensureDrapeSources(r),this._bindParameters.overlayStretch=t}disposeOverlays(){this._overlays=null,this._renderTargets?.dispose(1),this._renderTargets=null,this.events.emit("textures-disposed")}_useOverlayColorInsteadOfColorNoRasterImage(e){return 1===e&&!this._needsColorWithoutRasterImage&&(this._hasDrapedFeatureSource||this._hasDrapedRasterSource)}getTexture(e){const r=this._useOverlayColorInsteadOfColorNoRasterImage(e);return this._renderTargets?.getTexture(r?0:e)}get readyToRun(){return this.updating}runTask(e){this._processDrapeSources(()=>!0,e)}_onMaterialOrContentChanged(){this.renderOccludedFlags=s(this._renderers,e=>e.hasOccluders)?H:1}_processDrapeSources(e,r){let t=!1;for(const[s,i]of this._renderers){if(r?.done)break;(s.destroyed||e(s))&&(i.commitChanges()&&(t=!0,r?.madeProgress()))}this._sortedDrapeSourceRenderersDirty&&(this._sortedDrapeSourceRenderersDirty=!1,t=!0,this._updateSortedDrapeSourceRenderers(),r?.madeProgress()),r&&this.compact(r),t&&(null!=this._overlays&&0===this._renderers.size&&this.disposeOverlays(),this.notifyChange("updating"),this.notifyChange("isEmpty"),this._onMaterialOrContentChanged(),this.hasHighlights=s(this._renderers,e=>e.hasHighlights),this.events.emit("content-changed"))}compact(e){let r=!1;for(const t of this._renderers.values()){if(e.done)break;r=t.compact(e)||r}return r&&this.notifyChange("updating"),r}hasHighlight(e){return s(this._renderers,r=>r.hasHighlight(e))}processSyncDrapeSources(){this._processDrapeSources(e=>1===e.updatePolicy)}get isEmpty(){return!f.OVERLAY_DRAW_DEBUG_TEXTURE&&i(this._renderers,e=>e.isEmpty)}get hasWater(){const e=s(this._renderers,({hasWater:e})=>e);return e!==this._hasWater&&(this._hasWater=e,this.events.emit("has-water")),this._hasWater}renders(e){if(f.OVERLAY_DRAW_DEBUG_TEXTURE&&4!==e&&2!==e)return!0;if(!this._overlays)return!1;const r=this._overlays[0];for(const i of this._overlays)i.setupGeometryViews(this.longitudeCyclical);if(!r.hasSomeSizedView())return!1;const t=this._setOutput(this._renderTargets?.targets.find(r=>r.content===e)?.output??0);++this._techniques.precompiling;const s=this._sortedRenderers.some(({renderer:e})=>e.precompile(this._renderContext));return--this._techniques.precompiling,this._setOutput(t),s}_setOutput(e){const r=this._bindParameters.output;return this._bindParameters.output=e,this._bindParameters.slot=4===e?19:18,r}get mode(){return this.isEmpty?0:this.hasWater&&this.renders(3)?2:this._renderTargets?.getTexture(0)?1:0}updateAnimation(e){let r=!1;return this._renderers.forEach(t=>r=t.updateAnimation(e)||r),r&&this.parent.requestRender(0),r}updateDrapeSourceOrder(){this._sortedDrapeSourceRenderersDirty=!0}precompileShaders(e){if(!this._overlays||!this._renderTargets)return!1;const r=this._bindParameters;r.alignPixelEnabled=e.alignPixelEnabled,++this._techniques.precompiling;for(const t of this._renderTargets.targets){if(1===t.content&&!this._needsColorWithoutRasterImage)continue;const{output:e}=t;this._setOutput(e),10===e&&(r.highlightMixTexture=r.highlights.length>1?this._rctx.emptyTexture:null);const s=this._renderContext.renderOccludedMask;4===t.content&&(this._renderContext.renderOccludedMask=H),this._sortedRenderers.forAll(({drapeSource:e,renderer:r})=>{1===t.content&&0===e.drapeSourceType||4===t.content&&r.hasOnlyOccluders||r.precompile(this._renderContext)}),this._renderContext.renderOccludedMask=s,r.highlightMixTexture=null}return--this._techniques.precompiling,!0}drawOverlays(e,r){if(!this._overlays||!this._renderTargets)return;for(const s of this._overlays)s.setupGeometryViews(this.longitudeCyclical);this._bindParameters.alignPixelEnabled=e.alignPixelEnabled;const t=this.allSourcesOccluders;for(const s of this._renderTargets.targets){if(!(0===s.content&&this._hasDrapedFlowSource)&&!s.handleRenderRequest(r)||1===s.content&&!this._needsColorWithoutRasterImage||4===s.content&&t)continue;const e=this._drawTarget(0,s),i=this._drawTarget(1,s);(e||i)&&s.fbo.generateMipMap()}}_drawTarget(e,r){const t=this._overlays[e],s=t.canvasGeometries;if(0===s.numViews)return!1;const i=this._view.state.contentPixelRatio;this._screenToWorldRatio=i*t.mapUnitsPerPixel/this._bindParameters.overlayStretch;const{output:n,content:o}=r;if(this.isEmpty||4===n&&!this.hasWater||!t.hasSomeSizedView())return!1;const{_rctx:a,_camera:h,_renderContext:d,_bindParameters:l}=this;if(h.pixelRatio=t.pixelRatio*i,this._setOutput(n),l.screenToWorldRatio=this._screenToWorldRatio,l.screenToPCSRatio=this._screenToWorldRatio*this.parent.worldToPCSRatio,4===o&&(d.renderOccludedMask=H),!this.renders(o))return d.renderOccludedMask=C,!1;const{resolution:c}=t,u=0===e,p=u?0:c;a.setViewport(p,0,c,c),this._bindTargetFBO(r),u&&(10===n?a.gl.clearBufferuiv(a.gl.COLOR,0,[0,0,0,0]):(a.setClearColor(0,0,0,0),a.clear(16384)));if(f.OVERLAY_DRAW_DEBUG_TEXTURE&&4!==o&&2!==o){this._techniques.precompile(E,L);const r=this._techniques.get(E,L);for(let i=0;i<s.numViews;i++)this._setViewParameters(s.extents[i],t),this._ensureDebugPatternResources(t.resolution,U[e]),a.bindTechnique(r,l,this._passParameters),a.screen.draw()}if(10===n){const{fboCache:t}=this._stage.renderer,s=this._resolution;this._bindTargetFBO(r),T(a,t,s,s,l,()=>this._renderAllGeometry(e,r),p)}else this._renderAllGeometry(e,r);return a.bindFramebuffer(null),d.renderOccludedMask=C,!0}get allSourcesOccluders(){return i(this._renderers,e=>e.hasOnlyOccluders)}_renderAllGeometry(e,r){const t=this._overlays[e],s=t.canvasGeometries;this._sortedRenderers.forAll(({drapeSource:i,renderer:n})=>{if(1===r.content&&0===i.drapeSourceType)return;const{fullOpacity:o}=i,a=null!=o&&o<1&&0===r.output&&this._bindTemporaryFBO();for(let e=0;e<s.numViews;e++)this._setViewParameters(s.extents[e],t),n.render(this._renderContext);if(a){this._bindTargetFBO(r),this._overlayParameters.texture=a.getTexture(),this._overlayParameters.opacity=o,this._overlayParameters.overlayIndex=e;const t=this._techniques.get(V);this._rctx.bindTechnique(t,this._bindParameters,this._overlayParameters),this._rctx.screen.draw(),a.release()}})}_bindTargetFBO(e){const r=this._resolution,t=2*r;e.fbo.ensureFramebuffer(t,r),e.fbo.bind(this._rctx)}_bindTemporaryFBO(){const e=this._resolution,r=2*e,t=this._stage.renderer.fboCache,s=t.acquire(r,e,"overlay tmp");return t.rctx.bindFramebuffer(s.fbo),t.rctx.clear(16384),s}get _resolution(){return this._overlays?.[0].resolution??0}notifyContentChanged(){this.events.emit("content-changed")}intersectRay(e,r,t,s){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let i=0;for(const{renderer:n}of this._sortedRenderers)i=n.intersectRay?.(e,r,t,s,i)??i}*intersectScreenPolygon(e,r,t){this._sortedDrapeSourceRenderersDirty&&this._updateSortedDrapeSourceRenderers();let s=0;for(const{renderer:i}of this._sortedRenderers)s=yield*i.intersectScreenPolygon(e,r,t,s)}_updateSortedDrapeSourceRenderers(){if(this._sortedRenderers.clear(),0===this._renderers.size)return;const e=this._view.map.allLayers.map(e=>e.uid),r=e.length;this._renderers.forEach((t,s)=>{const i=e.indexOf(s.layer?.uid),n=i>=0,o=s.renderGroup??(n?0:1),a=s.drapeSourcePriorityOffset??0,h=r*o+(n?i:0)+a;this._sortedRenderers.push(new I(s,t,h))}),this._sortedRenderers.sort((e,r)=>e.index-r.index)}_setViewParameters(e,r){const t=this._camera;t.viewport=[0,0,r.resolution,r.resolution],_(t.projectionMatrix,0,e[2]-e[0],0,e[3]-e[1],t.near,t.far),g(t.viewMatrix,[-e[0],-e[1],0])}_ensureDebugPatternResources(e,r){if(m(this._passParameters.color,r[0],r[1],r[2]),this._passParameters.texture)return;const t=new Uint8Array(e*e*4);let s=0;for(let n=0;n<e;n++)for(let r=0;r<e;r++){const i=Math.floor(r/10),o=Math.floor(n/10);i<2||o<2||10*i>e-20||10*o>e-20?(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=255):(t[s++]=255,t[s++]=255,t[s++]=255,t[s++]=1&i&&1&o?1&r^1&n?0:255:1&i^1&o?0:128)}const i=new G(e);i.samplingMode=9728,this._passParameters.texture=new A(this._rctx,i,t)}get test(){}};e([u()],k.prototype,"hasHighlights",void 0),e([u()],k.prototype,"renderOccludedFlags",void 0),e([u()],k.prototype,"_sortedDrapeSourceRenderersDirty",void 0),e([u({constructOnly:!0})],k.prototype,"parent",void 0),e([u({readOnly:!0})],k.prototype,"_techniques",null),e([u({type:Boolean,readOnly:!0})],k.prototype,"updating",null),e([u()],k.prototype,"isEmpty",null),k=e([p("esri.views.3d.terrain.OverlayRenderer")],k);class I{constructor(e,r,t){this.drapeSource=e,this.renderer=r,this.index=t}}const U=[[1,.5,.5],[.5,.5,1]],B=-2,H=4,L=new F;L.hasAlpha=!0;export{k as OverlayRenderer,B as drapedZ,H as overlayRenderOccludedFlag};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{freeze as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{pathNumRoundCapExtrusionSubdivisions as
|
|
2
|
+
import{freeze as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{pathNumJoinSubdivisions as t,pathNumRoundCapExtrusionSubdivisions as r}from"../../../../layers/graphics/Graphics3DPathSymbolLayerConstants.js";import{PathVertexInfo as o}from"./PathVertexInfo.glsl.js";import{PiUtils as a}from"../shading/PiUtils.glsl.js";import{Float2sPassUniform as i}from"../../shaderModules/Float2sPassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as n}from"../../shaderModules/FloatPassUniform.js";import{glsl as l,If as p}from"../../shaderModules/glsl.js";import{IntegersPassUniform as f}from"../../shaderModules/IntegersPassUniform.js";import{pathProfileUniformLayout as c}from"../../../lib/PathProfile.js";function d(e,d){const{vertex:x}=e;e.include(o,d);const u=1===d.upVectorAlignment;x.uniforms.add(new n("angleCutoff",e=>e.cutoffAngle)),x.code.add(l`float reciprocalClamped(float value) {
|
|
3
3
|
float signValue = value < 0.0 ? -1.0 : 1.0;
|
|
4
4
|
return signValue / max(abs(value), 1e-6);
|
|
5
|
-
}`),u?
|
|
5
|
+
}`),u?x.code.add(l`vec2 applyMiterStretch(vec2 vertex, float rotationAngle, vec2 rotationRight) {
|
|
6
6
|
if (rotationAngle == 0.0) {
|
|
7
7
|
return vertex;
|
|
8
8
|
}
|
|
@@ -14,13 +14,13 @@ mat2 miterStretch = mat2(
|
|
|
14
14
|
1. + (k - 1.) * rotationRight.y * rotationRight.y
|
|
15
15
|
);
|
|
16
16
|
return miterStretch * vertex;
|
|
17
|
-
}`):
|
|
17
|
+
}`):x.code.add(l`vec2 applyMiterStretch(vec2 vertex, float rotationAngle) {
|
|
18
18
|
if (rotationAngle == 0.0) {
|
|
19
19
|
return vertex;
|
|
20
20
|
}
|
|
21
21
|
float k = reciprocalClamped(cos(0.5 * rotationAngle));
|
|
22
22
|
return vec2(k, 1.) * vertex;
|
|
23
|
-
}`);const{vertexCount:v,indexCount:h,poleCount:g}=c[d.pathProfileType];switch(
|
|
23
|
+
}`);const{vertexCount:v,indexCount:h,poleCount:g}=c[d.pathProfileType];switch(x.uniforms.add(new i("pathProfileVertices",v,e=>e.profile.vertices.flat()),new i("pathProfileNormals",v,e=>e.profile.normals.flat())),x.code.add(l`mat3 mat3FromRotation(float angle, vec3 axis) {
|
|
24
24
|
float x = axis.x;
|
|
25
25
|
float y = axis.y;
|
|
26
26
|
float z = axis.z;
|
|
@@ -32,12 +32,13 @@ x * x * t + c, y * x * t + z * s, z * x * t - y * s,
|
|
|
32
32
|
x * y * t - z * s, y * y * t + c, z * y * t + x * s,
|
|
33
33
|
x * z * t + y * s, y * z * t - x * s, z * z * t + c
|
|
34
34
|
);
|
|
35
|
-
}`),
|
|
35
|
+
}`),x.code.add(l`struct ExtrusionFrame {
|
|
36
36
|
vec3 up;
|
|
37
37
|
vec3 right;
|
|
38
38
|
};
|
|
39
39
|
struct ExtrudedVertex {
|
|
40
|
-
ExtrusionFrame
|
|
40
|
+
ExtrusionFrame positionFrame;
|
|
41
|
+
ExtrusionFrame normalFrame;
|
|
41
42
|
vec2 profileVertex;
|
|
42
43
|
vec2 profileNormal;
|
|
43
44
|
vec2 rotationRight;
|
|
@@ -45,20 +46,22 @@ float maxDistance;
|
|
|
45
46
|
float capPositionOffset;
|
|
46
47
|
float capNormalOffset;
|
|
47
48
|
bool isCap;
|
|
48
|
-
};`),u?
|
|
49
|
+
};`),u?x.code.add(l`vec2 getPathRotationRight(ExtrusionFrame frame) {
|
|
49
50
|
vec3 rotationUp = getFrameRotationUp();
|
|
50
51
|
float a = dot(rotationUp, frame.up);
|
|
51
52
|
float b = dot(rotationUp, frame.right);
|
|
52
53
|
vec3 vertex = normalize(frame.up * -b + frame.right * a);
|
|
53
54
|
return vec2(dot(vertex, frame.right), dot(vertex, frame.up));
|
|
54
|
-
}`):
|
|
55
|
+
}`):x.code.add(l`vec2 getPathRotationRight() {
|
|
55
56
|
return vec2(1., 0.);
|
|
56
|
-
}`),
|
|
57
|
+
}`),2===d.pathJoinType&&x.constants.add("numJoinSubdivisions","float",t),x.code.add(l`
|
|
57
58
|
ExtrudedVertex evaluateJoinVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
|
|
59
|
+
ExtrusionFrame positionFrame = frame;
|
|
60
|
+
ExtrusionFrame subdivisionFrame = frame;
|
|
58
61
|
vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
|
|
59
62
|
vec2 profileNormal = pathProfileNormals[vertexDescriptor.sourceIndex];
|
|
60
63
|
float profileRotation = getProfileRotation();
|
|
61
|
-
vec2 rotationRight = getPathRotationRight(${
|
|
64
|
+
vec2 rotationRight = getPathRotationRight(${p(u,l`frame`)});
|
|
62
65
|
bool isBevel = abs(profileRotation) >= angleCutoff;
|
|
63
66
|
|
|
64
67
|
// determine if the current profile vertex is on the inside or outside of the rotationAxis
|
|
@@ -68,32 +71,41 @@ return vec2(1., 0.);
|
|
|
68
71
|
|
|
69
72
|
bool isBevelBend = isBevel && isBend;
|
|
70
73
|
|
|
74
|
+
float subdivisionRotation = ${p(2===d.pathJoinType,l`(-0.5 + float(vertexDescriptor.subdivision) / numJoinSubdivisions) * profileRotation`,l`(-0.5 + float(vertexDescriptor.subdivision / 2u)) * profileRotation`)};
|
|
75
|
+
if (subdivisionRotation != 0.) {
|
|
76
|
+
mat3 subdivisionTransform = mat3FromRotation(subdivisionRotation, getFrameRotationUp());
|
|
77
|
+
${p(u,l`subdivisionFrame.up = normalize(subdivisionTransform * subdivisionFrame.up);`)}
|
|
78
|
+
subdivisionFrame.right = normalize(subdivisionTransform * subdivisionFrame.right);
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
if (isBevelBend) {
|
|
72
|
-
|
|
73
|
-
// rotate half rotation angle backwards to where the rotation starts
|
|
74
|
-
// and then rotate a couple of times depending on the current subdivision segment
|
|
75
|
-
float bendRotation = -profileRotation * 0.5 + (k * profileRotation) / float(numJoinSubdivisions);
|
|
76
|
-
if (bendRotation != 0.) {
|
|
77
|
-
vec3 rotationUp = getFrameRotationUp();
|
|
78
|
-
mat3 transform = mat3FromRotation(bendRotation, rotationUp);
|
|
79
|
-
${s(u,n`frame.up = normalize(transform * frame.up);`)}
|
|
80
|
-
frame.right = normalize(transform * frame.right);
|
|
81
|
-
}
|
|
82
|
+
positionFrame = subdivisionFrame;
|
|
82
83
|
} else {
|
|
83
84
|
profileVertex = applyMiterStretch(
|
|
84
85
|
profileVertex,
|
|
85
|
-
profileRotation${
|
|
86
|
+
profileRotation${p(u,l`,
|
|
86
87
|
rotationRight`)}
|
|
87
88
|
);
|
|
88
89
|
}
|
|
89
90
|
|
|
91
|
+
${p(2===d.pathJoinType,l`
|
|
92
|
+
ExtrusionFrame normalFrame = subdivisionFrame;
|
|
93
|
+
`,l`
|
|
94
|
+
ExtrusionFrame normalFrame;
|
|
95
|
+
if (isBevelBend && (vertexDescriptor.subdivision == 1u || vertexDescriptor.subdivision == 2u)) {
|
|
96
|
+
normalFrame = frame;
|
|
97
|
+
} else {
|
|
98
|
+
normalFrame = subdivisionFrame;
|
|
99
|
+
}`)};
|
|
100
|
+
|
|
90
101
|
rotationRight = isBend ? vec2(0.) : rotationRight;
|
|
91
102
|
float maxDistance = isBend
|
|
92
103
|
? 0.
|
|
93
104
|
: getMaxStretchDistance();
|
|
94
105
|
|
|
95
106
|
return ExtrudedVertex(
|
|
96
|
-
|
|
107
|
+
positionFrame,
|
|
108
|
+
normalFrame,
|
|
97
109
|
profileVertex,
|
|
98
110
|
profileNormal,
|
|
99
111
|
rotationRight,
|
|
@@ -103,14 +115,15 @@ return vec2(1., 0.);
|
|
|
103
115
|
false
|
|
104
116
|
);
|
|
105
117
|
}
|
|
106
|
-
`),
|
|
118
|
+
`),x.code.add(l`
|
|
107
119
|
ExtrudedVertex evaluateConnectingVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
|
|
108
120
|
vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
|
|
109
121
|
vec2 profileNormal = pathProfileNormals[vertexDescriptor.sourceIndex];
|
|
110
122
|
|
|
111
|
-
float profilePlaneVertexOffset = ${
|
|
123
|
+
float profilePlaneVertexOffset = ${p(2===d.pathCapType,l`vertexDescriptor.isEnd ? 0.5 : -0.5`,l`0.`)};
|
|
112
124
|
|
|
113
125
|
return ExtrudedVertex(
|
|
126
|
+
frame,
|
|
114
127
|
frame,
|
|
115
128
|
profileVertex,
|
|
116
129
|
profileNormal,
|
|
@@ -121,15 +134,16 @@ return vec2(1., 0.);
|
|
|
121
134
|
true
|
|
122
135
|
);
|
|
123
136
|
}
|
|
124
|
-
`),d.pathCapType){case 1:case 2:
|
|
137
|
+
`),d.pathCapType){case 1:case 2:x.code.add(l`
|
|
125
138
|
ExtrudedVertex evaluateFlatCapVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
|
|
126
139
|
vec2 profileVertex = pathProfileVertices[vertexDescriptor.sourceIndex];
|
|
127
140
|
bool isEnd = vertexDescriptor.isEnd;
|
|
128
141
|
float normalOffset = isEnd ? 1. : -1.;
|
|
129
|
-
float profilePlaneOffset = ${
|
|
142
|
+
float profilePlaneOffset = ${p(2===d.pathCapType,l`isEnd ? 0.5 : -0.5`,l`0.0`)};
|
|
130
143
|
vec2 normal = vec2(0.);
|
|
131
144
|
|
|
132
145
|
return ExtrudedVertex(
|
|
146
|
+
frame,
|
|
133
147
|
frame,
|
|
134
148
|
profileVertex,
|
|
135
149
|
normal,
|
|
@@ -140,7 +154,7 @@ return vec2(1., 0.);
|
|
|
140
154
|
true
|
|
141
155
|
);
|
|
142
156
|
}
|
|
143
|
-
`);break;case 3:
|
|
157
|
+
`);break;case 3:x.uniforms.add(new s("pathProfilePoles",g,e=>e.profile.poles.flatMap(({position:e,normal:t})=>[...e,...t??m]),{supportsNaN:!0}),new f("pathProfilePoleIndices",h,e=>e.profile.poleIndices)),x.include(a),x.constants.add("pathNumRoundCapExtrusionSubdivisions","float",r),x.code.add(l`ExtrudedVertex evaluateRoundCapPoleVertex(PathVertexDescriptor vertexDescriptor, ExtrusionFrame frame) {
|
|
144
158
|
bool isEnd = vertexDescriptor.isEnd;
|
|
145
159
|
float capSign = isEnd ? 1. : -1.;
|
|
146
160
|
float offsetScale = capSign * 0.5;
|
|
@@ -151,6 +165,7 @@ vec2 poleNormal = hasPoleNormal ? pole.zw : vec2(0.);
|
|
|
151
165
|
float normalOffset = hasPoleNormal ? 0. : capSign;
|
|
152
166
|
return ExtrudedVertex(
|
|
153
167
|
frame,
|
|
168
|
+
frame,
|
|
154
169
|
polePosition,
|
|
155
170
|
poleNormal,
|
|
156
171
|
vec2(0.),
|
|
@@ -164,7 +179,7 @@ ExtrudedVertex evaluateRoundCapInnerVertex(PathVertexDescriptor vertexDescriptor
|
|
|
164
179
|
bool isEnd = vertexDescriptor.isEnd;
|
|
165
180
|
float capSign = isEnd ? 1. : -1.;
|
|
166
181
|
float offsetScale = capSign * 0.5;
|
|
167
|
-
float subdivision = vertexDescriptor.subdivision;
|
|
182
|
+
float subdivision = float(vertexDescriptor.subdivision);
|
|
168
183
|
float t = 1. - (subdivision + 1.) / pathNumRoundCapExtrusionSubdivisions;
|
|
169
184
|
float theta = t * HALF_PI;
|
|
170
185
|
float t1 = sin(theta);
|
|
@@ -182,6 +197,7 @@ vec2 profileNormal = hasPoleNormal
|
|
|
182
197
|
float normalOffset = hasPoleNormal ? 0. : capSign * t2;
|
|
183
198
|
return ExtrudedVertex(
|
|
184
199
|
frame,
|
|
200
|
+
frame,
|
|
185
201
|
poleVertex,
|
|
186
202
|
profileNormal,
|
|
187
203
|
vec2(0.),
|
|
@@ -190,7 +206,7 @@ offsetScale * t2,
|
|
|
190
206
|
normalOffset,
|
|
191
207
|
true
|
|
192
208
|
);
|
|
193
|
-
}`)}
|
|
209
|
+
}`)}x.code.add(l`
|
|
194
210
|
ExtrudedVertex evaluateVertex() {
|
|
195
211
|
PathVertexDescriptor vertexDescriptor = getDescriptor();
|
|
196
212
|
ExtrusionFrame frame = ExtrusionFrame(
|
|
@@ -205,12 +221,12 @@ true
|
|
|
205
221
|
case pathVertexTypeCapConnectingProfile:
|
|
206
222
|
return evaluateConnectingVertex(vertexDescriptor, frame);
|
|
207
223
|
|
|
208
|
-
${
|
|
224
|
+
${p(1===d.pathCapType||2===d.pathCapType,l`
|
|
209
225
|
case pathVertexTypeCapProfile:
|
|
210
226
|
return evaluateFlatCapVertex(vertexDescriptor, frame);
|
|
211
227
|
`)}
|
|
212
228
|
|
|
213
|
-
${
|
|
229
|
+
${p(3===d.pathCapType,l`
|
|
214
230
|
case pathVertexTypeCapProfile:
|
|
215
231
|
return evaluateRoundCapPoleVertex(vertexDescriptor, frame);
|
|
216
232
|
case pathVertexTypeRoundCapInnerProfile:
|
|
@@ -219,6 +235,7 @@ true
|
|
|
219
235
|
|
|
220
236
|
default:
|
|
221
237
|
return ExtrudedVertex(
|
|
238
|
+
frame,
|
|
222
239
|
frame,
|
|
223
240
|
vec2(0.),
|
|
224
241
|
vec2(0.),
|
|
@@ -230,4 +247,4 @@ true
|
|
|
230
247
|
);
|
|
231
248
|
}
|
|
232
249
|
}
|
|
233
|
-
`)}const
|
|
250
|
+
`)}const m=e(NaN,NaN);export{d as PathEvaluate};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMask as
|
|
2
|
+
import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMask as r,descriptorDataShift as a,descriptorDataMask as i,descriptorTypeShift as n,descriptorCapSideShift as p,descriptorCapSubdivisionMask as s,descriptorShift as o,frameIndexMask as d}from"../../../lib/PathVertexInfo.js";function c(c,h){const{attributes:u,vertex:x}=c;u.add("pathVertexInfo","uint"),x.constants.add("pathVertexDescriptorSourceIndexMask","uint",r),x.constants.add("pathVertexDescriptorDataShift","uint",a),x.constants.add("pathVertexDescriptorDataMask","uint",i),x.constants.add("pathVertexDescriptorTypeShift","uint",n),x.constants.add("pathVertexDescriptorCapSideShift","uint",p),x.constants.add("pathVertexDescriptorCapSubdivisionMask","uint",s),x.constants.add("pathVertexInfoDescriptorShift","uint",o),x.constants.add("pathVertexInfoFrameIndexMask","uint",d),x.constants.add("pathVertexCapSideEnd","uint",1),x.constants.add("pathVertexTypeJoin","uint",0),x.constants.add("pathVertexTypeCapConnectingProfile","uint",1),x.constants.add("pathVertexTypeCapProfile","uint",2),3===h.pathCapType&&x.constants.add("pathVertexTypeRoundCapInnerProfile","uint",3),x.code.add(e`
|
|
3
3
|
struct PathVertexDescriptor {
|
|
4
4
|
uint sourceIndex;
|
|
5
|
-
|
|
5
|
+
uint subdivision;
|
|
6
6
|
uint type;
|
|
7
7
|
bool isEnd;
|
|
8
8
|
};
|
|
@@ -16,17 +16,17 @@ import{If as t,glsl as e}from"../../shaderModules/glsl.js";import{sourceIndexMas
|
|
|
16
16
|
uint sourceIndex = descriptor & pathVertexDescriptorSourceIndexMask;
|
|
17
17
|
uint descriptorData = (descriptor >> pathVertexDescriptorDataShift) & pathVertexDescriptorDataMask;
|
|
18
18
|
uint type = descriptor >> pathVertexDescriptorTypeShift;
|
|
19
|
-
|
|
19
|
+
uint subdivision = 0u;
|
|
20
20
|
bool isEnd = false;
|
|
21
21
|
|
|
22
22
|
switch (type) {
|
|
23
23
|
case pathVertexTypeJoin:
|
|
24
|
-
subdivision =
|
|
24
|
+
subdivision = descriptorData;
|
|
25
25
|
break;
|
|
26
26
|
|
|
27
27
|
${t(3===h.pathCapType,e`
|
|
28
28
|
case pathVertexTypeRoundCapInnerProfile:
|
|
29
|
-
subdivision =
|
|
29
|
+
subdivision = descriptorData & pathVertexDescriptorCapSubdivisionMask;
|
|
30
30
|
`)}
|
|
31
31
|
case pathVertexTypeCapConnectingProfile:
|
|
32
32
|
${t(0!==h.pathCapType,e`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{TextureBackedBufferModule as t}from"../TextureBackedBuffer.glsl.js";import{PathEvaluate as r}from"./PathEvaluate.glsl.js";import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{Float2PassUniform as i}from"../../shaderModules/Float2PassUniform.js";import{Float3PassUniform as a}from"../../shaderModules/Float3PassUniform.js";import{Float4PassUniform as l}from"../../shaderModules/Float4PassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as v}from"../../shaderModules/FloatsPassUniform.js";import{glsl as u,If as n}from"../../shaderModules/glsl.js";import{Texture2DUintDrawUniform as d}from"../../shaderModules/Texture2DUintDrawUniform.js";import{circleProfiles as
|
|
2
|
+
import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{TextureBackedBufferModule as t}from"../TextureBackedBuffer.glsl.js";import{PathEvaluate as r}from"./PathEvaluate.glsl.js";import{PiUtils as o}from"../shading/PiUtils.glsl.js";import{Float2PassUniform as i}from"../../shaderModules/Float2PassUniform.js";import{Float3PassUniform as a}from"../../shaderModules/Float3PassUniform.js";import{Float4PassUniform as l}from"../../shaderModules/Float4PassUniform.js";import{Float4sPassUniform as s}from"../../shaderModules/Float4sPassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as v}from"../../shaderModules/FloatsPassUniform.js";import{glsl as u,If as n}from"../../shaderModules/glsl.js";import{Texture2DUintDrawUniform as d}from"../../shaderModules/Texture2DUintDrawUniform.js";import{circleProfiles as p}from"../../../lib/PathProfile.js";import{getTextureLayout as f}from"../../../materials/PathLayouts.js";import{VisualVariablePassParameters as m,vvColorNumber as x}from"../../../materials/VisualVariablePassParameters.js";const g=8;function h(e,p){const{vertex:m}=e,h=new d("componentTextureBuffer",e=>e.textureBuffer),y=new t({layout:f(p),itemIndexExpression:"getFrameIndex()",bufferUniform:h}).createBuilder(e,p);m.uniforms.add(new i("size",e=>e.size));const{hasVVSize:V,hasVVColor:b,hasVVOpacity:z,hasPathSize:O,hasPathColor:C,hasPathOpacity:S}=p;V?(m.uniforms.add(new a("vvSizeMinSize",e=>e.vvSize.minSize),new a("vvSizeMaxSize",e=>e.vvSize.maxSize),new a("vvSizeOffset",e=>e.vvSize.offset),new a("vvSizeFactor",e=>e.vvSize.factor),new a("vvSizeFallback",e=>e.vvSize.fallback)),m.code.add(u`
|
|
3
3
|
vec2 getSize() {
|
|
4
4
|
float value = ${y.getTextureAttribute("sizeFeatureAttribute")};
|
|
5
5
|
if (isnan(value)) {
|
|
@@ -7,13 +7,13 @@ import{fromValues as e}from"../../../../../../core/libs/gl-matrix-2/factories/ve
|
|
|
7
7
|
}
|
|
8
8
|
return size * clamp(vvSizeOffset + value * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).xz;
|
|
9
9
|
}
|
|
10
|
-
`)):O?
|
|
10
|
+
`)):O?m.code.add(u`
|
|
11
11
|
vec2 getSize(){
|
|
12
12
|
return ${y.getTextureAttribute("size")};
|
|
13
13
|
}
|
|
14
|
-
`):
|
|
14
|
+
`):m.code.add(u`vec2 getSize(){
|
|
15
15
|
return size;
|
|
16
|
-
}`),z?(
|
|
16
|
+
}`),z?(m.constants.add("vvOpacityNumber","int",g),m.uniforms.add(new v("vvOpacityValues",g,e=>e.vvOpacity.values),new v("vvOpacityOpacities",g,e=>e.vvOpacity.opacityValues),new c("vvOpacityFallback",e=>e.vvOpacity.fallback,{supportsNaN:!0})),m.code.add(u`
|
|
17
17
|
vec4 applyOpacity(vec4 color) {
|
|
18
18
|
// if we encounter NaN in the color it means the color is in the fallback case where the symbol color
|
|
19
19
|
// is not defined and there is no valid color visual variable override. In this case just return a fully
|
|
@@ -26,7 +26,7 @@ return size;
|
|
|
26
26
|
|
|
27
27
|
if (isnan(value)) {
|
|
28
28
|
// If there is a color vv then it will already have taken care of applying the fallback
|
|
29
|
-
return ${n(
|
|
29
|
+
return ${n(b,"color","vec4(color.rgb, vvOpacityFallback)")};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
if (value <= vvOpacityValues[0]) {
|
|
@@ -42,13 +42,13 @@ return size;
|
|
|
42
42
|
|
|
43
43
|
return vec4(color.rgb, vvOpacityOpacities[vvOpacityNumber - 1]);
|
|
44
44
|
}
|
|
45
|
-
`)):S?
|
|
45
|
+
`)):S?m.code.add(u`
|
|
46
46
|
vec4 applyOpacity(vec4 color){
|
|
47
47
|
return vec4(color.rgb, ${y.getTextureAttribute("opacity")});
|
|
48
48
|
}
|
|
49
|
-
`):
|
|
49
|
+
`):m.code.add(u`vec4 applyOpacity(vec4 color){
|
|
50
50
|
return color;
|
|
51
|
-
}`),
|
|
51
|
+
}`),b?(m.constants.add("vvColorNumber","int",x),m.uniforms.add(new v("vvColorValues",x,e=>e.vvColor.values),new s("vvColorColors",x,e=>e.vvColor.colors),new l("vvColorFallback",e=>e.vvColor.fallback)),m.code.add(u`
|
|
52
52
|
vec4 getColor() {
|
|
53
53
|
float value = ${y.getTextureAttribute("colorFeatureAttribute")};
|
|
54
54
|
if (isnan(value)) {
|
|
@@ -68,13 +68,13 @@ return color;
|
|
|
68
68
|
|
|
69
69
|
return applyOpacity(vvColorColors[vvColorNumber - 1]);
|
|
70
70
|
}
|
|
71
|
-
`)):C?
|
|
71
|
+
`)):C?m.code.add(u`
|
|
72
72
|
vec4 getColor(){
|
|
73
73
|
return applyOpacity(${y.getTextureAttribute("color")});
|
|
74
74
|
}
|
|
75
|
-
`):
|
|
75
|
+
`):m.code.add(u`vec4 getColor(){
|
|
76
76
|
return applyOpacity(vec4(1, 1, 1, 1));
|
|
77
|
-
}`),
|
|
77
|
+
}`),m.include(o),m.code.add(u`
|
|
78
78
|
vec3 decompressAxis(vec2 axis) {
|
|
79
79
|
float z = 1.0 - abs(axis.x) - abs(axis.y);
|
|
80
80
|
return normalize(vec3(axis + sign(axis) * min(z, 0.0), z));
|
|
@@ -95,29 +95,29 @@ return applyOpacity(vec4(1, 1, 1, 1));
|
|
|
95
95
|
vec3 getFrameRight() {
|
|
96
96
|
return decompressAxis(${y.getTextureAttribute("profileRight")});
|
|
97
97
|
}
|
|
98
|
-
`),11===
|
|
98
|
+
`),11===p.output&&m.code.add(u`
|
|
99
99
|
vec4 getOlidColor() {
|
|
100
100
|
return ${y.getTextureAttribute("olidColor")};
|
|
101
101
|
}
|
|
102
|
-
`),
|
|
102
|
+
`),m.code.add(u`
|
|
103
103
|
vec3 getFrameRotationUp() {
|
|
104
|
-
return ${1===
|
|
104
|
+
return ${1===p.upVectorAlignment?u`decompressAxis(${y.getTextureAttribute("pathRotationUp")})`:u`getFrameUp()`};
|
|
105
105
|
}
|
|
106
|
-
`),e.include(r,
|
|
106
|
+
`),e.include(r,p),m.code.add(u`
|
|
107
107
|
vec3 calculateVPos(ExtrudedVertex extrudedVertex) {
|
|
108
108
|
vec2 size = getSize();
|
|
109
109
|
vec3 origin = ${y.getTextureAttribute("position")};
|
|
110
|
-
vec3 right = extrudedVertex.
|
|
111
|
-
vec3 up = extrudedVertex.
|
|
110
|
+
vec3 right = extrudedVertex.positionFrame.right;
|
|
111
|
+
vec3 up = extrudedVertex.positionFrame.up;
|
|
112
112
|
vec2 profileVertex = extrudedVertex.profileVertex * size;
|
|
113
|
-
`),
|
|
113
|
+
`),m.code.add(u`if(extrudedVertex.isCap) {
|
|
114
114
|
float positionOffsetAlongProfilePlaneNormal = extrudedVertex.capPositionOffset * size[0];
|
|
115
115
|
vec3 forward = cross(up, right);
|
|
116
116
|
vec3 offset = right * profileVertex.x + up * profileVertex.y + forward * positionOffsetAlongProfilePlaneNormal;
|
|
117
117
|
return origin + offset;
|
|
118
118
|
}
|
|
119
119
|
vec2 rotationRight = extrudedVertex.rotationRight;
|
|
120
|
-
float maxDistance = extrudedVertex.maxDistance;`),
|
|
120
|
+
float maxDistance = extrudedVertex.maxDistance;`),m.code.add(u`rotationRight *= size;
|
|
121
121
|
rotationRight = length(rotationRight) > 0.0 ? normalize(rotationRight) : vec2(0, 0);
|
|
122
122
|
float rx = dot(profileVertex, rotationRight);
|
|
123
123
|
if (abs(rx) > maxDistance) {
|
|
@@ -127,9 +127,9 @@ profileVertex = rotationRight * maxDistance * sign(rx) + rotationUp * ry;
|
|
|
127
127
|
}
|
|
128
128
|
vec3 offset = right * profileVertex.x + up * profileVertex.y;
|
|
129
129
|
return origin + offset;
|
|
130
|
-
}`),
|
|
131
|
-
vec3 right = extrudedVertex.
|
|
132
|
-
vec3 up = extrudedVertex.
|
|
130
|
+
}`),m.code.add(u`vec3 localNormal(ExtrudedVertex extrudedVertex) {
|
|
131
|
+
vec3 right = extrudedVertex.normalFrame.right;
|
|
132
|
+
vec3 up = extrudedVertex.normalFrame.up;
|
|
133
133
|
vec2 profileNormal = extrudedVertex.profileNormal;
|
|
134
134
|
vec3 normal = right * profileNormal.x + up * profileNormal.y;
|
|
135
135
|
if(extrudedVertex.isCap) {
|
|
@@ -137,4 +137,4 @@ vec3 forward = cross(up, right);
|
|
|
137
137
|
normal += forward * extrudedVertex.capNormalOffset;
|
|
138
138
|
}
|
|
139
139
|
return normal;
|
|
140
|
-
}`)}class y extends
|
|
140
|
+
}`)}class y extends m{constructor(){super(...arguments),this.size=e(1,1),this.cutoffAngle=0,this.profile=p.center,this.hasPathSize=!1,this.hasPathColor=!1,this.hasPathOpacity=!1}}export{h as PathVertexPosition,y as PathVertexPositionPassParameters};
|
package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js
CHANGED
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{addNearFar as o}from"../ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as
|
|
2
|
+
import{addNearFar as o}from"../ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as e}from"../Slice.glsl.js";import{Transform as r}from"../Transform.glsl.js";import{NormalAttribute as t}from"../attributes/NormalAttribute.glsl.js";import{ObjectAndLayerIdColor as i}from"../attributes/ObjectAndLayerIdColor.glsl.js";import{TextureCoordinateAttribute as a}from"../attributes/TextureCoordinateAttribute.glsl.js";import{VertexNormal as l}from"../attributes/VertexNormal.glsl.js";import{DefaultMaterialExternalColor as s}from"./DefaultMaterialExternalColor.glsl.js";import{outputDepth as d}from"../output/OutputDepth.glsl.js";import{OutputHighlight as n}from"../output/OutputHighlight.glsl.js";import{VisualVariables as c}from"../shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as u}from"../util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as p}from"../util/View.glsl.js";import{glsl as v,If as m}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as f}from"../../shaderModules/Texture2DPassUniform.js";function g(g,x){const{vertex:O,fragment:j,varyings:h}=g,{hasColorTexture:C,alphaDiscardMode:w}=x,V=C&&1!==w,{output:b,normalType:A,hasColorTextureTransform:y}=x;switch(b){case 3:p(O,x),g.include(r),j.include(e,x),g.include(a,x),V&&j.uniforms.add(new f("tex",o=>o.texture)),O.main.add(v`vpos = getVertexInLocalOriginSpace();
|
|
3
3
|
vpos = subtractOrigin(vpos);
|
|
4
4
|
vpos = addVerticalOffset(vpos, localOrigin);
|
|
5
5
|
gl_Position = transformPosition(proj, view, vpos);
|
|
6
|
-
forwardTextureCoordinates();`),
|
|
6
|
+
forwardTextureCoordinates();`),g.include(u,x),j.main.add(v`
|
|
7
7
|
discardBySlice(vpos);
|
|
8
|
-
${
|
|
9
|
-
discardOrAdjustAlpha(texColor);`)}`);break;case 5:case 6:case 7:case 8:case 11:
|
|
8
|
+
${m(V,v`vec4 texColor = texture(tex, ${y?"colorUV":"vuv0"});
|
|
9
|
+
discardOrAdjustAlpha(texColor);`)}`);break;case 5:case 6:case 7:case 8:case 11:p(O,x),g.include(r),g.include(a,x),g.include(c,x),g.include(d,x),j.include(e,x),g.include(i,x),o(g),h.add("depth","float",{invariant:!0}),V&&j.uniforms.add(new f("tex",o=>o.texture)),O.main.add(v`vpos = getVertexInLocalOriginSpace();
|
|
10
10
|
vpos = subtractOrigin(vpos);
|
|
11
11
|
vpos = addVerticalOffset(vpos, localOrigin);
|
|
12
12
|
gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);
|
|
13
13
|
forwardTextureCoordinates();
|
|
14
|
-
forwardObjectAndLayerIdColor();`),
|
|
14
|
+
forwardObjectAndLayerIdColor();`),g.include(u,x),j.main.add(v`
|
|
15
15
|
discardBySlice(vpos);
|
|
16
|
-
${
|
|
16
|
+
${m(V,v`vec4 texColor = texture(tex, ${y?"colorUV":"vuv0"});
|
|
17
17
|
discardOrAdjustAlpha(texColor);`)}
|
|
18
|
-
${11===
|
|
18
|
+
${11===b?v`outputObjectAndLayerIdColor();`:v`outputDepth(depth);`}`);break;case 4:{p(O,x),g.include(r),g.include(t,x),g.include(l,x),g.include(a,x),g.include(c,x),g.include(s,x),V&&j.uniforms.add(new f("tex",o=>o.texture)),2===A&&h.add("vPositionView","vec3",{invariant:!0});const o=0===A||1===A;O.main.add(v`
|
|
19
|
+
forwardDefaultMaterialExternalColor();
|
|
20
|
+
|
|
21
|
+
if (shouldCullByOpacity()) {
|
|
22
|
+
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
vpos = getVertexInLocalOriginSpace();
|
|
20
|
-
${o?
|
|
27
|
+
${o?v`vNormalWorld = dpNormalView(vvLocalNormal(normalModel()));`:v`vPositionView = (view * vec4(vpos, 1.0)).xyz;`}
|
|
21
28
|
vpos = subtractOrigin(vpos);
|
|
22
29
|
vpos = addVerticalOffset(vpos, localOrigin);
|
|
23
30
|
gl_Position = transformPosition(proj, view, vpos);
|
|
24
|
-
forwardTextureCoordinates();`),
|
|
31
|
+
forwardTextureCoordinates();`),j.include(e,x),g.include(u,x),j.main.add(v`
|
|
25
32
|
discardBySlice(vpos);
|
|
26
|
-
${
|
|
27
|
-
discardOrAdjustAlpha(texColor);`)}
|
|
33
|
+
${m(V,v`vec4 texColor = texture(tex, ${y?"colorUV":"vuv0"});
|
|
34
|
+
discardOrAdjustAlpha(texColor);`,v`vec4 texColor = vec4(1.0);`)}
|
|
35
|
+
float opacity = getDefaultMaterialOpacity(texColor.a);
|
|
28
36
|
|
|
29
|
-
${2===
|
|
37
|
+
${2===A?v`vec3 normal = screenDerivativeNormal(vPositionView);`:v`vec3 normal = normalize(vNormalWorld);
|
|
30
38
|
if (gl_FrontFacing == false){
|
|
31
39
|
normal = -normal;
|
|
32
40
|
}`}
|
|
33
|
-
fragColor = vec4(0.5 + 0.5 * normal,
|
|
41
|
+
fragColor = vec4(0.5 + 0.5 * normal, opacity);`);break}case 10:p(O,x),g.include(r),g.include(a,x),g.include(c,x),V&&j.uniforms.add(new f("tex",o=>o.texture)),O.main.add(v`vpos = getVertexInLocalOriginSpace();
|
|
34
42
|
vpos = subtractOrigin(vpos);
|
|
35
43
|
vpos = addVerticalOffset(vpos, localOrigin);
|
|
36
44
|
gl_Position = transformPosition(proj, view, vpos);
|
|
37
|
-
forwardTextureCoordinates();`),
|
|
45
|
+
forwardTextureCoordinates();`),j.include(e,x),g.include(u,x),g.include(n,x),j.main.add(v`
|
|
38
46
|
discardBySlice(vpos);
|
|
39
|
-
${
|
|
47
|
+
${m(V,v`vec4 texColor = texture(tex, ${y?"colorUV":"vuv0"});
|
|
40
48
|
discardOrAdjustAlpha(texColor);`)}
|
|
41
|
-
calculateOcclusionAndOutputHighlight();`)}}export{
|
|
49
|
+
calculateOcclusionAndOutputHighlight();`)}}export{g as DefaultMaterialAuxiliaryPasses};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{InstanceColor as o}from"../attributes/InstanceColor.glsl.js";import{MaskedColorDefinition as r,CreateMaskedFromNaNColor as l}from"../attributes/MaskedColor.glsl.js";import{SymbolColor as a}from"../attributes/SymbolColor.glsl.js";import{VertexColor as t}from"../attributes/VertexColor.glsl.js";import{MixExternalColor as e}from"../util/MixExternalColor.glsl.js";import{Float4PassUniform as i}from"../../shaderModules/Float4PassUniform.js";import{FloatPassUniform as s}from"../../shaderModules/FloatPassUniform.js";import{glsl as d,If as n}from"../../shaderModules/glsl.js";import{colorMixModes as m}from"../../../materials/internal/MaterialUtil.js";import{alphaCutoff as p}from"../../../shaders/alphaCutoff.glsl.js";function c(c,u){const{vertex:C,fragment:f,varyings:y}=c;c.include(o,u),c.include(a,u),c.include(t,u),C.include(r),C.include(l),C.include(p),C.uniforms.add(new i("externalColor",o=>o.externalColor,{supportsNaN:!0})),y.add("vExternalColor","vec4"),C.code.add(d`
|
|
3
|
+
void forwardDefaultMaterialExternalColor() {
|
|
4
|
+
forwardVertexColor();
|
|
5
|
+
|
|
6
|
+
MaskedColor maskedColor =
|
|
7
|
+
applySymbolColor(applyVVColor(applyInstanceColor(createMaskedFromNaNColor(externalColor))));
|
|
8
|
+
|
|
9
|
+
vExternalColor = maskedColor.color;
|
|
10
|
+
forwardColorMixMode(maskedColor.mask);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
bool shouldCullByOpacity() {
|
|
14
|
+
return opacityMixMode != ${d.int(m.ignore)} && vExternalColor.a < alphaCutoff;
|
|
15
|
+
}
|
|
16
|
+
`),f.include(e),f.uniforms.add(new s("opacity",o=>o.opacity),new s("layerOpacity",o=>o.layerOpacity)),f.code.add(d`
|
|
17
|
+
float getDefaultMaterialOpacity(float textureOpacity) {
|
|
18
|
+
return layerOpacity * mixExternalOpacity(
|
|
19
|
+
${n(u.hasVertexColors,"vColor.a * ")} opacity,
|
|
20
|
+
textureOpacity,
|
|
21
|
+
vExternalColor.a,
|
|
22
|
+
opacityMixMode
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
`)}export{c as DefaultMaterialExternalColor};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{set as t}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as e,scale as a,floor as i,subtract as l,set as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{positiveInfinity as n}from"../../../../geometry/support/aaBoundingBox.js";function o(t){return t.visibleGaussians>0&&null!=t.orderTexture.texture&&null!=t.textureAtlas.texture&&null!=t.headerTexture.texture}function s(a,i,l){u(a,i,l,l.eye),a.splatFading=i.data.fadingTexture.texture;const{fullHeight:r,fullWidth:n}=l,o=Math.tan(.5*l.fovY),s=o/r*n;t(a.tanFov,s,o),a.focalLength=r/(2*o),e(a.origin,l.eye)}function u(t,e,o,s){const u=e.data;t.splatOrder=u.orderTexture.texture,t.splatAtlas=u.textureAtlas.texture,t.splatHeader=u.headerTexture.texture;const{fullHeight:x,fullWidth:c}=o,d=e.view.qualitySettings.gaussianSplat,p=2===e.view.state.mode?d.idleMinimumSplatPixelRadius:d.nonIdleMinimumSplatPixelRadius;t.minSplatRadius=p*Math.sqrt(c*x)/Math.sqrt(2073600),a(t.tileCameraPosition,s,1/m),i(t.tileCameraPosition,t.tileCameraPosition),a(t.cameraDelta,t.tileCameraPosition,m),l(t.cameraDelta,s,t.cameraDelta),t.slicePlaneLocalOrigin=s;const g=e.clippingBox||n,[f,h,v,M,P,C]=g,[R,S,T]=s;r(t.clipMinCameraRelative,f-R,h-S,v-T),r(t.clipMaxCameraRelative,M-R,P-S,C-T)}const m=2.048;export{o as canRenderGaussianSplats,m as gaussianSplatTileSize,s as prepareGaussianSplatPerspectiveParameters,u as prepareGaussianSplatRenderParameters};
|