@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.
Files changed (447) hide show
  1. package/arcade/Feature.js +1 -1
  2. package/arcade/ImmutableArray.js +1 -1
  3. package/arcade/ImmutablePathArray.js +1 -1
  4. package/arcade/ImmutablePointArray.js +1 -1
  5. package/arcade/Pixel.js +1 -1
  6. package/arcade/Voxel.js +1 -1
  7. package/arcade/arcadeAsyncRuntime.js +1 -1
  8. package/arcade/arcadeCompiler.js +1 -1
  9. package/arcade/arcadeRuntime.js +1 -1
  10. package/arcade/containerUtils.js +1 -1
  11. package/arcade/debug.js +1 -1
  12. package/arcade/deepClone.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/functions/date.js +1 -1
  15. package/arcade/functions/feature.js +1 -1
  16. package/arcade/functions/featuresetbase.js +1 -1
  17. package/arcade/functions/featuresetgeom.js +1 -1
  18. package/arcade/functions/featuresetstats.js +1 -1
  19. package/arcade/functions/featuresetstring.js +1 -1
  20. package/arcade/functions/fieldStats.js +1 -1
  21. package/arcade/functions/geomasync.js +1 -1
  22. package/arcade/functions/geometry.js +1 -1
  23. package/arcade/functions/geomsync.js +1 -1
  24. package/arcade/functions/knowledgegraph.js +1 -1
  25. package/arcade/functions/maths.js +1 -1
  26. package/arcade/functions/stats.js +1 -1
  27. package/arcade/functions/string.js +1 -1
  28. package/arcade/functions/track.js +1 -1
  29. package/arcade/geometry/functions.js +1 -1
  30. package/arcade/languageUtils.js +1 -1
  31. package/arcade.js +1 -1
  32. package/arcgisGlobal.d.ts +9 -0
  33. package/assets/esri/core/workers/RemoteClient.js +1 -1
  34. package/assets/esri/core/workers/chunks/{bb95922cd4631d6f17fb.js → 04ac5ac6f592d8c34bbd.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{44e64186318728d1be51.js → 067b00498ae85f635f60.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{62f3ca0719ac6bc76512.js → 09c43bcb09aad02e83a9.js} +1 -1
  37. package/assets/esri/core/workers/chunks/0b20f92bae2b4c40d299.js +1 -0
  38. package/assets/esri/core/workers/chunks/0c3c311400ee352187ea.js +1 -0
  39. package/assets/esri/core/workers/chunks/0c582abc8d25249eb530.js +1 -0
  40. package/assets/esri/core/workers/chunks/0d6776055e9b34c14151.js +1 -0
  41. package/assets/esri/core/workers/chunks/0d7d54e74b5639a0be6e.js +1 -0
  42. package/assets/esri/core/workers/chunks/0da5b27b070ab780f8b3.js +1 -0
  43. package/assets/esri/core/workers/chunks/0e6b6fcc55cc43ede1fc.js +1 -0
  44. package/assets/esri/core/workers/chunks/{bcb5017500d144b73908.js → 126f1f6b355723db6c4f.js} +1 -1
  45. package/assets/esri/core/workers/chunks/12a64eca4c571926d9d4.js +1 -0
  46. package/assets/esri/core/workers/chunks/{b2c0262c4a76b8a86200.js → 149284464115981694ff.js} +1 -1
  47. package/assets/esri/core/workers/chunks/1642fa1263d8f4a45101.js +1 -0
  48. package/assets/esri/core/workers/chunks/1840d74ebae777a0200b.js +1 -0
  49. package/assets/esri/core/workers/chunks/19bf6826e7d9a4d52035.js +1 -0
  50. package/assets/esri/core/workers/chunks/1bfbdec791e19f5a2534.js +1 -0
  51. package/assets/esri/core/workers/chunks/1d8280f63a6698e74f20.js +1 -0
  52. package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js → 242cad472fbc38b24dbc.js} +2 -2
  53. package/assets/esri/core/workers/chunks/25197ecb324d6f08e03e.js +1 -0
  54. package/assets/esri/core/workers/chunks/253c231b5a52f1d2d3a5.js +1 -0
  55. package/assets/esri/core/workers/chunks/25999b6f96ec305a7679.js +1 -0
  56. package/assets/esri/core/workers/chunks/259bdacfb7b0f866a8d0.js +1 -0
  57. package/assets/esri/core/workers/chunks/28565756f884d0851003.js +1 -0
  58. package/assets/esri/core/workers/chunks/2a5a165848413764381b.js +1 -0
  59. package/assets/esri/core/workers/chunks/2e7a5bb740281ef59199.js +1 -0
  60. package/assets/esri/core/workers/chunks/{285a5bd708f0fe1c620c.js → 2ea3ca68cfa4d34e8f3b.js} +1 -1
  61. package/assets/esri/core/workers/chunks/2f87a49bdd00f899d81d.js +1 -0
  62. package/assets/esri/core/workers/chunks/{37a95f097533bad1b338.js → 302d91b7c480c6c9304b.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{3d6d2b42ba2ad7086d5d.js → 3b493e8043ec1a2a5d96.js} +1 -1
  64. package/assets/esri/core/workers/chunks/3ddd717ea12d9823eee2.js +1 -0
  65. package/assets/esri/core/workers/chunks/40e48b720d89cd067892.js +1 -0
  66. package/assets/esri/core/workers/chunks/{a833fc9250635eb4152f.js → 41f7f3615d3ecb87c59a.js} +1 -1
  67. package/assets/esri/core/workers/chunks/{95b3b8fe45ef4ac6b277.js → 450bc48a7389607bce1e.js} +1 -1
  68. package/assets/esri/core/workers/chunks/465a050fd838ee8eddf3.js +1 -0
  69. package/assets/esri/core/workers/chunks/{0d61c8d348b09179777a.js → 46d8a1d6f7341ad20749.js} +1 -1
  70. package/assets/esri/core/workers/chunks/4710f21b138a2c9a0345.js +1 -0
  71. package/assets/esri/core/workers/chunks/48a0dfaabb9b4bce4191.js +1 -0
  72. package/assets/esri/core/workers/chunks/49a3888bf9e2481642ac.js +1 -0
  73. package/assets/esri/core/workers/chunks/{4ee900e5dbb130fa0c7b.js → 4a40b894ec89b0a4f9bf.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{d847c3cb2043a983145b.js → 4addea2e35b0c845743e.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{e0a4d0288abd334b0673.js → 4ae626868e14bedd7fc5.js} +1 -1
  76. package/assets/esri/core/workers/chunks/529ee4670940720e888b.js +1 -0
  77. package/assets/esri/core/workers/chunks/{a3c882fe7599dc0f4f27.js → 59d1708ae13c6e7e6e55.js} +1 -1
  78. package/assets/esri/core/workers/chunks/59dd83e5aee2908c7eca.js +1 -0
  79. package/assets/esri/core/workers/chunks/{b5c7813495657f844171.js → 5adf16c034a590b5e9f5.js} +1 -1
  80. package/assets/esri/core/workers/chunks/{b8bdacebd4d24ba90f3f.js → 5fde1234c5cccaee6763.js} +1 -1
  81. package/assets/esri/core/workers/chunks/60f9b37dd738d884c48d.js +1 -0
  82. package/assets/esri/core/workers/chunks/62c8413f3bbc1378273d.js +1 -0
  83. package/assets/esri/core/workers/chunks/6501ee40bf25f9f75d02.js +1 -0
  84. package/assets/esri/core/workers/chunks/663cf8bff17c894cd5f8.js +1 -0
  85. package/assets/esri/core/workers/chunks/6d1371b521c7f94fd77e.js +1 -0
  86. package/assets/esri/core/workers/chunks/6d5038d4351fe29e2718.js +1 -0
  87. package/assets/esri/core/workers/chunks/6f102c90908c9900cdaa.js +1 -0
  88. package/assets/esri/core/workers/chunks/6f39545710d1b35d922c.js +1 -0
  89. package/assets/esri/core/workers/chunks/7278fdf6bfcdffa10a7f.js +1 -0
  90. package/assets/esri/core/workers/chunks/72eb0ac55026a4f5d6a7.js +1 -0
  91. package/assets/esri/core/workers/chunks/73cb499d7d68c59ba34e.js +1 -0
  92. package/assets/esri/core/workers/chunks/{b8d788e110c212a879ab.js → 73f228d966b89c73c9e9.js} +1 -1
  93. package/assets/esri/core/workers/chunks/76bccc318d7cc33829a7.js +1 -0
  94. package/assets/esri/core/workers/chunks/777eafdb86b26b35c803.js +1 -0
  95. package/assets/esri/core/workers/chunks/7821aeba3e414b318a75.js +1 -0
  96. package/assets/esri/core/workers/chunks/7b531feba4fd662575f9.js +1 -0
  97. package/assets/esri/core/workers/chunks/7c57354d026e27e056d4.js +1 -0
  98. package/assets/esri/core/workers/chunks/7d163d9d90393e491ee5.js +1 -0
  99. package/assets/esri/core/workers/chunks/7d4c65311064a5c2e0b1.js +1 -0
  100. package/assets/esri/core/workers/chunks/{0474af7687466d8befd2.js → 7e2794705b4e679fcb3f.js} +1 -1
  101. package/assets/esri/core/workers/chunks/7ebbb90d80600d9ba889.js +1 -0
  102. package/assets/esri/core/workers/chunks/7f125963555dc1ce63ad.js +1 -0
  103. package/assets/esri/core/workers/chunks/{763cbb6716e398436a6d.js → 7f6eee102871769fdf8f.js} +1 -1
  104. package/assets/esri/core/workers/chunks/805c97b875d3066fb8df.js +1 -0
  105. package/assets/esri/core/workers/chunks/8566449c39eba55147f5.js +1 -0
  106. package/assets/esri/core/workers/chunks/86ed75b7169b8ee43025.js +1 -0
  107. package/assets/esri/core/workers/chunks/{9482a6d7baa24bbf5693.js → 89132395eca329b9ab92.js} +1 -1
  108. package/assets/esri/core/workers/chunks/{28bc5e8e82f188b30eb9.js → 894343e415639df88243.js} +1 -1
  109. package/assets/esri/core/workers/chunks/8b4759cef5ae5e43253b.js +1 -0
  110. package/assets/esri/core/workers/chunks/8ba4175f5e9a24ffecf7.js +1 -0
  111. package/assets/esri/core/workers/chunks/8be707044d992ef5f1d8.js +1 -0
  112. package/assets/esri/core/workers/chunks/{bd862382f72ebd446b46.js → 8d2cac1952e817daaf1f.js} +1 -1
  113. package/assets/esri/core/workers/chunks/8e38c5e63aae42bdf5a4.js +29 -0
  114. package/assets/esri/core/workers/chunks/{02ab09285a5c4ca98066.js → 8f785b722b1a131bf370.js} +1 -1
  115. package/assets/esri/core/workers/chunks/8f9874f42f21a4cb3acd.js +1 -0
  116. package/assets/esri/core/workers/chunks/{57824ecc10b25e3ad794.js → 903e1cd8b76eff19ebdf.js} +1 -1
  117. package/assets/esri/core/workers/chunks/90f4b81c6034253b70d7.js +1 -0
  118. package/assets/esri/core/workers/chunks/917c11cb40a7742d7f98.js +1 -0
  119. package/assets/esri/core/workers/chunks/93ab247ff34694ac60eb.js +1 -0
  120. package/assets/esri/core/workers/chunks/93c0a620a147cbf4a0ba.js +1 -0
  121. package/assets/esri/core/workers/chunks/{6e45d0db97ffa4509177.js → 94bf7f0da6ad3f7ea277.js} +1 -1
  122. package/assets/esri/core/workers/chunks/9be6827e5756031a56c1.js +1 -0
  123. package/assets/esri/core/workers/chunks/9c57161ad48d8d546dc7.js +1 -0
  124. package/assets/esri/core/workers/chunks/{b2cf1d3f0d48eac23a84.js → 9c5dff4f13102871786e.js} +1 -1
  125. package/assets/esri/core/workers/chunks/9d0bda096cdbd7e22f4b.js +1 -0
  126. package/assets/esri/core/workers/chunks/9dfb7d120195991e9672.js +1 -0
  127. package/assets/esri/core/workers/chunks/9ed5e6b06afea6c85330.js +1 -0
  128. package/assets/esri/core/workers/chunks/{79b857bb301f9c4169d6.js → 9fee8441fbac9f723f77.js} +1 -1
  129. package/assets/esri/core/workers/chunks/a108f276659d5f25352c.js +1 -0
  130. package/assets/esri/core/workers/chunks/{b32ede7805c7c6644e4c.js → a3bf8aa81ee398da5b52.js} +1 -1
  131. package/assets/esri/core/workers/chunks/{5b30231ae0a8f4b8435f.js → a504fa17d83facf1c01f.js} +1 -1
  132. package/assets/esri/core/workers/chunks/a52c88e2d837b525ff6c.js +1 -0
  133. package/assets/esri/core/workers/chunks/{23a3d8f91caf3136b2aa.js → a5fdb02b1714e93fa69e.js} +1 -1
  134. package/assets/esri/core/workers/chunks/{538fe46dfd685a490e23.js → a7f42ada0aa69873a938.js} +1 -1
  135. package/assets/esri/core/workers/chunks/a97e0b9b057664911c14.js +1 -0
  136. package/assets/esri/core/workers/chunks/{cb58aff1ff186fa18345.js → a9f616f22042b0dce8b9.js} +1 -1
  137. package/assets/esri/core/workers/chunks/afd63c18ce4656271c8e.js +1 -0
  138. package/assets/esri/core/workers/chunks/{f04cb48fc73635d0572f.js → b059dabb1c732829487c.js} +1 -1
  139. package/assets/esri/core/workers/chunks/b313464b987db8a3987a.js +1 -0
  140. package/assets/esri/core/workers/chunks/b318823aefcefad6fad5.js +1 -0
  141. package/assets/esri/core/workers/chunks/b378e504a5b1afc8d0ce.js +1 -0
  142. package/assets/esri/core/workers/chunks/{9fb87a7dba62b527c0ba.js → b3a1a93c6dc9247cb048.js} +1 -1
  143. package/assets/esri/core/workers/chunks/b4e5ee81b9eb171499a6.js +1 -0
  144. package/assets/esri/core/workers/chunks/b5397dc03fa0bd654ba6.js +1 -0
  145. package/assets/esri/core/workers/chunks/b5b698008b8f3f4d5d61.js +1 -0
  146. package/assets/esri/core/workers/chunks/b7bcb31737b01d7736d0.js +1 -0
  147. package/assets/esri/core/workers/chunks/b9a1046ca2cd0cca5da5.js +1 -0
  148. package/assets/esri/core/workers/chunks/{cda04571d7623c17ada2.js → b9c7aa04861f545a559c.js} +1 -1
  149. package/assets/esri/core/workers/chunks/{7df795bc4fa1d433463b.js → ba030767cf935f967454.js} +1 -1
  150. package/assets/esri/core/workers/chunks/{53d165b4f30fd64e5d8a.js → bd311c85437743cf7d2f.js} +1 -1
  151. package/assets/esri/core/workers/chunks/bd88228f781a0399d8bd.js +1 -0
  152. package/assets/esri/core/workers/chunks/bece22668622a9a6bfe2.js +1 -0
  153. package/assets/esri/core/workers/chunks/bfb626805405646a0419.js +1 -0
  154. package/assets/esri/core/workers/chunks/c02ae1d40c1fe95ae6c5.js +1 -0
  155. package/assets/esri/core/workers/chunks/c203df41f9d2e4b80889.js +1 -0
  156. package/assets/esri/core/workers/chunks/{278409028bc5af45b507.js → c4c83b5129c279c3615b.js} +1 -1
  157. package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +1 -0
  158. package/assets/esri/core/workers/chunks/c7e391df714839484cd1.js +1 -0
  159. package/assets/esri/core/workers/chunks/cded485ad893a7dd2948.js +1 -0
  160. package/assets/esri/core/workers/chunks/{1cf8fb704c48ac3d3b15.js → cf360767310fb45660a8.js} +1 -1
  161. package/assets/esri/core/workers/chunks/{8f2fecd8a0a972d68590.js → cf8ce63711488f2e677c.js} +1 -1
  162. package/assets/esri/core/workers/chunks/d214ac457ac970479536.js +1 -0
  163. package/assets/esri/core/workers/chunks/d4058352db1e8255b52e.js +1 -0
  164. package/assets/esri/core/workers/chunks/d4d385d19e62ef1c286f.js +1 -0
  165. package/assets/esri/core/workers/chunks/d4f005dadba75422b401.js +1 -0
  166. package/assets/esri/core/workers/chunks/d583bcea4d1a21da9147.js +1 -0
  167. package/assets/esri/core/workers/chunks/{52c4b4dabcb0d162be72.js → d5e15021928e95c11463.js} +1 -1
  168. package/assets/esri/core/workers/chunks/{fc639c730115e07a4a1a.js → d6500f6b2ff115d9eb09.js} +1 -1
  169. package/assets/esri/core/workers/chunks/{3f775deea48e268411f1.js → d7267f429a051943187b.js} +1 -1
  170. package/assets/esri/core/workers/chunks/d9c78c2db04a06ee83ed.js +1 -0
  171. package/assets/esri/core/workers/chunks/{e65ee26feca0564aeb9b.js → dc7e4f7879debf557e46.js} +145 -97
  172. package/assets/esri/core/workers/chunks/e1492d2404c3ed82931e.js +1 -0
  173. package/assets/esri/core/workers/chunks/e34ed3b818b2eb4116c5.js +1 -0
  174. package/assets/esri/core/workers/chunks/e7149d23615fee31ab7e.js +1 -0
  175. package/assets/esri/core/workers/chunks/ec774f5d6ea5c29536e5.js +1 -0
  176. package/assets/esri/core/workers/chunks/ed71a4e353715db0a6e9.js +1 -0
  177. package/assets/esri/core/workers/chunks/{1e342d532925569daadb.js → f475672ff4c2ec9367c2.js} +1 -1
  178. package/assets/esri/core/workers/chunks/{cc414fd2e313d89d524d.js → f54eba484f40d5eeb590.js} +1 -1
  179. package/assets/esri/core/workers/chunks/{04ffe788d2efc0a076dd.js → f5c9659fc5d571d501c9.js} +1 -1
  180. package/assets/esri/core/workers/chunks/f622b27ebdf1c918fd6d.js +1 -0
  181. package/assets/esri/core/workers/chunks/{dd95f50dac3f33cdb6d2.js → f6a13f07a5f7b781a9a8.js} +1 -1
  182. package/assets/esri/core/workers/chunks/{d849bdaf5bdfdc37531a.js → f6f7d885b4d6080e3f58.js} +1 -1
  183. package/assets/esri/core/workers/chunks/f8b8d3d2710c83acccf3.js +1 -0
  184. package/assets/esri/core/workers/chunks/f95870bb4d8e4e13e69e.js +1 -0
  185. package/assets/esri/core/workers/chunks/fa59f10ed0f182a2a7f3.js +1 -0
  186. package/assets/esri/core/workers/chunks/faa55265020591fd2224.js +1 -0
  187. package/assets/esri/core/workers/chunks/fc827f58db3194922056.js +1 -0
  188. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  189. package/chunks/Component.glsl.js +60 -62
  190. package/chunks/DefaultMaterial.glsl.js +27 -28
  191. package/chunks/GaussianSplat.glsl.js +7 -7
  192. package/chunks/GaussianSplatShadow.glsl.js +9 -9
  193. package/chunks/GlobalIllumination.glsl.js +35 -15
  194. package/chunks/Path.glsl.js +7 -6
  195. package/chunks/RealisticTree.glsl.js +22 -24
  196. package/chunks/SSAO.glsl.js +1 -1
  197. package/chunks/Terrain.glsl.js +3 -2
  198. package/chunks/Water.glsl.js +20 -11
  199. package/chunks/aiServices.js +1 -1
  200. package/chunks/array.js +1 -1
  201. package/chunks/bundle2.js +1 -1
  202. package/chunks/languageUtils.js +1 -1
  203. package/config.js +1 -1
  204. package/form/ExpressionInfo.d.ts +1 -1
  205. package/form/ExpressionInfo.js +1 -1
  206. package/form/elements/FieldElement.d.ts +3 -2
  207. package/form/elements/inputs/ComboBoxInput.d.ts +4 -15
  208. package/form/elements/inputs/ComboBoxInput.js +1 -1
  209. package/form/elements/inputs/DynamicChoiceInput.d.ts +31 -0
  210. package/form/elements/inputs/DynamicChoiceInput.js +2 -0
  211. package/form/elements/inputs/Input.d.ts +1 -1
  212. package/form/elements/inputs/RadioButtonsInput.d.ts +4 -15
  213. package/form/elements/inputs/RadioButtonsInput.js +1 -1
  214. package/form/elements/inputs/SingleChoiceInput.d.ts +18 -0
  215. package/form/elements/inputs/SingleChoiceInput.js +2 -0
  216. package/form/elements/inputs.d.ts +11 -2
  217. package/form/elements/inputs.js +1 -1
  218. package/geometry/support/normalizeUtils.d.ts +1 -1
  219. package/kernel.js +1 -1
  220. package/layers/ImageryTileLayer.d.ts +1 -1
  221. package/layers/RouteLayer.d.ts +1 -1
  222. package/layers/graphics/sources/ParquetSource.js +1 -1
  223. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  224. package/layers/graphics/sources/parquet/ParquetFileInfo.js +1 -1
  225. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  226. package/layers/mixins/ArcGISImageService.d.ts +24 -24
  227. package/layers/mixins/TiledImagery.d.ts +1 -1
  228. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  229. package/layers/raster/datasets/EphemeralBlockCache.js +1 -1
  230. package/layers/raster/datasets/RawBlockCache.js +1 -1
  231. package/layers/support/KMLSublayer.js +1 -1
  232. package/libs/parquet/parquet.js +1 -1
  233. package/networks/support/CircuitExportJobInfo.d.ts +1 -1
  234. package/networks/support/CircuitVerifyJobInfo.d.ts +1 -1
  235. package/networks/support/TopologyValidationJobInfo.d.ts +1 -1
  236. package/networks/support/TraceJobInfo.d.ts +1 -1
  237. package/package.json +2 -2
  238. package/portal/jsonTypes.d.ts +1 -1
  239. package/rest/closestFacility.d.ts +1 -1
  240. package/rest/find.d.ts +1 -1
  241. package/rest/geometryService.d.ts +21 -21
  242. package/rest/geoprocessor.d.ts +2 -2
  243. package/rest/identify.d.ts +1 -1
  244. package/rest/imageService.d.ts +19 -19
  245. package/rest/lastMileDelivery.d.ts +8 -8
  246. package/rest/locator.d.ts +4 -4
  247. package/rest/networkService.d.ts +1 -1
  248. package/rest/networks/queryAssociations.d.ts +1 -1
  249. package/rest/networks/synthesizeAssociationGeometries.d.ts +1 -1
  250. package/rest/networks/trace.d.ts +1 -1
  251. package/rest/networks/traverseAssociations.d.ts +1 -1
  252. package/rest/places.d.ts +3 -3
  253. package/rest/print.d.ts +1 -1
  254. package/rest/query.d.ts +11 -11
  255. package/rest/route.d.ts +1 -1
  256. package/rest/serviceArea.d.ts +1 -1
  257. package/rest/support/JobInfo.d.ts +5 -5
  258. package/rest/support/Query.js +1 -1
  259. package/rest/symbolService.d.ts +1 -1
  260. package/support/revision.js +1 -1
  261. package/symbols/LabelSymbol3D.js +1 -1
  262. package/symbols/LineSymbol3D.js +1 -1
  263. package/symbols/MeshSymbol3D.js +1 -1
  264. package/symbols/PointSymbol3D.js +1 -1
  265. package/symbols/PolygonSymbol3D.js +1 -1
  266. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  267. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
  268. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  269. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  270. package/views/3d/interactive/editingTools/transform/TransformTool3D.js +1 -1
  271. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  272. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  273. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  274. package/views/3d/layers/graphics/Graphics3DPathSymbolLayerConstants.js +1 -1
  275. package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
  276. package/views/3d/state/controllers/RotateController.js +1 -1
  277. package/views/3d/state/utils/navigationUtils.js +1 -1
  278. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  279. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  280. package/views/3d/terrain/OverlayRenderer.js +1 -1
  281. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathEvaluate.glsl.js +49 -32
  282. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexInfo.glsl.js +5 -5
  283. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +23 -23
  284. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +24 -16
  285. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js +25 -0
  286. package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +2 -0
  287. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  288. package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
  289. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  290. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  291. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  292. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  293. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  294. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  295. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  296. package/views/3d/webgl-engine/shaders/GaussianSplatPassParameters.js +2 -0
  297. package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
  298. package/views/3d/webgl-engine/shaders/GaussianSplatShadowTechnique.js +1 -1
  299. package/views/3d/webgl-engine/shaders/GaussianSplatTechnique.js +1 -1
  300. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  301. package/views/draw/support/InteractiveHandle.js +1 -1
  302. package/views/draw/support/managers/SurfaceManager.js +1 -1
  303. package/views/interactive/Tooltip.d.ts +3 -3
  304. package/views/interactive/Tooltip.js +1 -1
  305. package/views/interactive/options/ElevationOptions.d.ts +20 -0
  306. package/views/interactive/options/ElevationOptions.js +2 -0
  307. package/views/interactive/options/LabelOptions.d.ts +74 -0
  308. package/views/interactive/options/LabelOptions.js +2 -0
  309. package/views/interactive/options/SnappingOptions.d.ts +157 -0
  310. package/views/interactive/options/SnappingOptions.js +2 -0
  311. package/views/interactive/options/TooltipOptions.d.ts +152 -0
  312. package/views/interactive/options/TooltipOptions.js +2 -0
  313. package/views/interactive/options/TooltipVisibleElements.d.ts +105 -0
  314. package/views/interactive/options/TooltipVisibleElements.js +2 -0
  315. package/views/interactive/options/ValueOptions.d.ts +63 -0
  316. package/views/interactive/options/ValueOptions.js +2 -0
  317. package/views/interactive/sketch/SketchLabelOptions.d.ts +7 -9
  318. package/views/interactive/sketch/SketchLabelOptions.js +1 -1
  319. package/views/interactive/sketch/SketchTooltipElevationOptions.js +1 -1
  320. package/views/interactive/sketch/SketchTooltipOptions.d.ts +8 -50
  321. package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
  322. package/views/interactive/sketch/SketchTooltipVisibleElements.d.ts +10 -95
  323. package/views/interactive/sketch/SketchTooltipVisibleElements.js +1 -1
  324. package/views/interactive/sketch/SketchValueOptions.d.ts +7 -45
  325. package/views/interactive/sketch/SketchValueOptions.js +1 -1
  326. package/views/interactive/sketch/Units.d.ts +10 -29
  327. package/views/interactive/sketch/Units.js +1 -1
  328. package/views/interactive/snapping/SnappingOptions.d.ts +7 -78
  329. package/views/interactive/snapping/SnappingOptions.js +1 -1
  330. package/views/interactive/support/Units.d.ts +33 -0
  331. package/views/interactive/support/Units.js +2 -0
  332. package/views/interactive/support/types.d.ts +33 -0
  333. package/views/interactive/tooltip/types.d.ts +6 -2
  334. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  335. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  336. package/widgets/BatchAttributeForm/expressions/ExpressionsModel.js +1 -1
  337. package/widgets/LayerList/ListItem.js +1 -1
  338. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  339. package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
  340. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  341. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  342. package/widgets/OrientedImageryViewer.js +1 -1
  343. package/widgets/TableList/ListItem.js +1 -1
  344. package/assets/esri/core/workers/chunks/02dd79beb13eff6be85e.js +0 -1
  345. package/assets/esri/core/workers/chunks/0623acb2bd14a61b65c9.js +0 -29
  346. package/assets/esri/core/workers/chunks/069b6d8bdb34ee88d437.js +0 -1
  347. package/assets/esri/core/workers/chunks/0790bf0eb276cd9166f6.js +0 -1
  348. package/assets/esri/core/workers/chunks/08c2bf9defcece9e049a.js +0 -1
  349. package/assets/esri/core/workers/chunks/0ae0483b72f5e8d00d55.js +0 -1
  350. package/assets/esri/core/workers/chunks/0d1224693a62a26a0e72.js +0 -1
  351. package/assets/esri/core/workers/chunks/10b367563f894ceb9864.js +0 -1
  352. package/assets/esri/core/workers/chunks/11e00ca5ac1b004f4ecc.js +0 -1
  353. package/assets/esri/core/workers/chunks/13033178de9f637a2356.js +0 -1
  354. package/assets/esri/core/workers/chunks/13c893e448bedc5c1cef.js +0 -1
  355. package/assets/esri/core/workers/chunks/14cd8bb1ad4da8d1d2ca.js +0 -1
  356. package/assets/esri/core/workers/chunks/15c2d9bec0455fc363a9.js +0 -1
  357. package/assets/esri/core/workers/chunks/246cd372d4184233f48e.js +0 -1
  358. package/assets/esri/core/workers/chunks/268ab65afc3fce775ad2.js +0 -1
  359. package/assets/esri/core/workers/chunks/279a9a38b04a21cdfd11.js +0 -1
  360. package/assets/esri/core/workers/chunks/2a1c6df073e6ca6a6365.js +0 -1
  361. package/assets/esri/core/workers/chunks/3406a01dad6338e3c548.js +0 -1
  362. package/assets/esri/core/workers/chunks/36781219ca9ba5d7fe52.js +0 -1
  363. package/assets/esri/core/workers/chunks/36999a2e383c8eb3c398.js +0 -1
  364. package/assets/esri/core/workers/chunks/36f8a912842181e1f0aa.js +0 -1
  365. package/assets/esri/core/workers/chunks/3f1a7f8a9ead64bf0b7b.js +0 -1
  366. package/assets/esri/core/workers/chunks/41e821ce229bc56dc1a1.js +0 -1
  367. package/assets/esri/core/workers/chunks/43b39abd49c4a8ce891f.js +0 -1
  368. package/assets/esri/core/workers/chunks/456e616f32e7de696d38.js +0 -1
  369. package/assets/esri/core/workers/chunks/478540265c86436da05e.js +0 -1
  370. package/assets/esri/core/workers/chunks/479f486ec1797629ec70.js +0 -1
  371. package/assets/esri/core/workers/chunks/484b3e2a220c440ccbb4.js +0 -1
  372. package/assets/esri/core/workers/chunks/4a340836ddbc856993f2.js +0 -1
  373. package/assets/esri/core/workers/chunks/54b9667450d066c6f6ce.js +0 -1
  374. package/assets/esri/core/workers/chunks/57b07448da06d0302a46.js +0 -1
  375. package/assets/esri/core/workers/chunks/5a9ff50fdcc99ae28cce.js +0 -1
  376. package/assets/esri/core/workers/chunks/5dbd8ca7e7b8eb9a0bf7.js +0 -1
  377. package/assets/esri/core/workers/chunks/5dc17b76c6ecc24e7b9a.js +0 -1
  378. package/assets/esri/core/workers/chunks/5e3d5347223f0111f40f.js +0 -1
  379. package/assets/esri/core/workers/chunks/5eb6f37c74a217772eca.js +0 -1
  380. package/assets/esri/core/workers/chunks/6210fb6cd31844f23964.js +0 -1
  381. package/assets/esri/core/workers/chunks/638ed1297efdb24f4711.js +0 -1
  382. package/assets/esri/core/workers/chunks/63ede7295938f7010808.js +0 -1
  383. package/assets/esri/core/workers/chunks/661a59133ae34f172174.js +0 -1
  384. package/assets/esri/core/workers/chunks/687cf21e027f49b44d22.js +0 -1
  385. package/assets/esri/core/workers/chunks/6c2b5087a9df65267f4e.js +0 -1
  386. package/assets/esri/core/workers/chunks/6c98a64d92c9bca78203.js +0 -1
  387. package/assets/esri/core/workers/chunks/6d247ff53421d27628ce.js +0 -1
  388. package/assets/esri/core/workers/chunks/700c08dd2e734c15e621.js +0 -1
  389. package/assets/esri/core/workers/chunks/70452f6d63e9be8d03dd.js +0 -1
  390. package/assets/esri/core/workers/chunks/733b2e181683d5fc7c95.js +0 -1
  391. package/assets/esri/core/workers/chunks/7659391f952d134164cf.js +0 -1
  392. package/assets/esri/core/workers/chunks/7889f4a17cf249f2acc5.js +0 -1
  393. package/assets/esri/core/workers/chunks/7a2dcd57849048c6e00d.js +0 -1
  394. package/assets/esri/core/workers/chunks/7a2dfa42610fe8414ed7.js +0 -1
  395. package/assets/esri/core/workers/chunks/7ce52b850dd785bfa33f.js +0 -1
  396. package/assets/esri/core/workers/chunks/7d85048c6cd6ad84faf9.js +0 -1
  397. package/assets/esri/core/workers/chunks/7fdd6a5fa062778be55d.js +0 -1
  398. package/assets/esri/core/workers/chunks/81accb1820e2735fa376.js +0 -1
  399. package/assets/esri/core/workers/chunks/8210fc9e072209e26fa9.js +0 -1
  400. package/assets/esri/core/workers/chunks/8369edafab7bdc59b95a.js +0 -1
  401. package/assets/esri/core/workers/chunks/84fa102a93b2144c28fb.js +0 -1
  402. package/assets/esri/core/workers/chunks/85ce7673d42526a79fd2.js +0 -1
  403. package/assets/esri/core/workers/chunks/8722e2790272e90a1897.js +0 -1
  404. package/assets/esri/core/workers/chunks/8a1970e68bc1e833cb7f.js +0 -1
  405. package/assets/esri/core/workers/chunks/8bb20ef549ec1c86b38e.js +0 -1
  406. package/assets/esri/core/workers/chunks/8c535c6a39d2be2ed655.js +0 -1
  407. package/assets/esri/core/workers/chunks/9008090a5d8431ddfa22.js +0 -1
  408. package/assets/esri/core/workers/chunks/92696cce2b980373f9ad.js +0 -1
  409. package/assets/esri/core/workers/chunks/98b27cf8acbfa4259758.js +0 -1
  410. package/assets/esri/core/workers/chunks/9a6208ab670ad74e6f7d.js +0 -1
  411. package/assets/esri/core/workers/chunks/a09ce34fc7c8abe64ed5.js +0 -1
  412. package/assets/esri/core/workers/chunks/a10f63a08d976be058be.js +0 -1
  413. package/assets/esri/core/workers/chunks/a5f058567419ea70dff6.js +0 -1
  414. package/assets/esri/core/workers/chunks/a965d151515b76dd7566.js +0 -1
  415. package/assets/esri/core/workers/chunks/afeeb11b39e140303b5a.js +0 -1
  416. package/assets/esri/core/workers/chunks/b7170816736769d3b7b0.js +0 -1
  417. package/assets/esri/core/workers/chunks/b8e5d7aefddddbd0a10c.js +0 -1
  418. package/assets/esri/core/workers/chunks/b958f87f23f984131d09.js +0 -1
  419. package/assets/esri/core/workers/chunks/b9f40681af1fa00b5bbe.js +0 -1
  420. package/assets/esri/core/workers/chunks/c4c25db769a78e677e33.js +0 -1
  421. package/assets/esri/core/workers/chunks/c85ba0700eafdc8d6f9e.js +0 -1
  422. package/assets/esri/core/workers/chunks/c97451f75c23be979476.js +0 -1
  423. package/assets/esri/core/workers/chunks/ca118c42c0f609ca7912.js +0 -1
  424. package/assets/esri/core/workers/chunks/cb17cd8aaf77238c0236.js +0 -1
  425. package/assets/esri/core/workers/chunks/d03f427442bb0c287d05.js +0 -1
  426. package/assets/esri/core/workers/chunks/d08d3c6f21e6ba8268ca.js +0 -1
  427. package/assets/esri/core/workers/chunks/d37a72111dffc4c4db70.js +0 -1
  428. package/assets/esri/core/workers/chunks/d41ab2abcfacc87809b5.js +0 -1
  429. package/assets/esri/core/workers/chunks/d4ed094962a41d756c95.js +0 -1
  430. package/assets/esri/core/workers/chunks/d83ea3e4e9ab45334068.js +0 -1
  431. package/assets/esri/core/workers/chunks/d9b83d7dd7d1f7729a91.js +0 -1
  432. package/assets/esri/core/workers/chunks/dbcec48c4ba104a6d0b5.js +0 -1
  433. package/assets/esri/core/workers/chunks/dc24e80d061f7b063608.js +0 -1
  434. package/assets/esri/core/workers/chunks/df30053a10d4930924d5.js +0 -1
  435. package/assets/esri/core/workers/chunks/e5bb7ee670a3ba5ba3fe.js +0 -1
  436. package/assets/esri/core/workers/chunks/e5c75459de85a6dd2f14.js +0 -1
  437. package/assets/esri/core/workers/chunks/e798ca23f02a2dd65bd4.js +0 -1
  438. package/assets/esri/core/workers/chunks/f1299b4fc760ccca1518.js +0 -1
  439. package/assets/esri/core/workers/chunks/f65adaaa33d9f3b131f6.js +0 -1
  440. package/assets/esri/core/workers/chunks/f6715b8765cd36d81ec8.js +0 -1
  441. package/assets/esri/core/workers/chunks/f7fa932ade85cb2847b6.js +0 -1
  442. package/assets/esri/core/workers/chunks/f9a4f4efd63b8189a4eb.js +0 -1
  443. package/assets/esri/core/workers/chunks/f9b654f801cb416e9e17.js +0 -1
  444. package/assets/esri/core/workers/chunks/fa1c58e5b582d61a03ab.js +0 -1
  445. package/assets/esri/core/workers/chunks/fdec3a2e100688c42e41.js +0 -1
  446. package/assets/esri/core/workers/chunks/fefbde2c2e527bb716ee.js +0 -1
  447. /package/assets/esri/core/workers/chunks/{a12803108c3b12808698.js.LICENSE.txt → 242cad472fbc38b24dbc.js.LICENSE.txt} +0 -0
@@ -1,21 +1,15 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as r}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstanceColor as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstanceColor.glsl.js";import{InstancedDoublePrecision as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{MaskedColorDefinition as s,CreateMaskedFromNaNColor as n}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/MaskedColor.glsl.js";import{NormalAttribute as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{SymbolColor as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexColor as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{VertexNormal as g}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VerticalOffset as u}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as v}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{ComputeNormalTexturePass as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateAmbientOcclusion as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{PhysicallyBasedRendering as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as L}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPassFragment as j,ReadShadowMapDrawFragment as P}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{colorTextureUV as M,normalTextureUV as N,emissiveTextureUV as S,occlusionTextureUV as O,metallicRoughnessTextureUV as T}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as V}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as $}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{MixExternalColor as A}from"../views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js";import{addProjViewLocalOrigin as D,addCameraPosition as U}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as I}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as E}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as k}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as B,glsl as _}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as R}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{SnowCover as F}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{colorMixModes as W}from"../views/3d/webgl-engine/materials/internal/MaterialUtil.js";import{outputColorHighlightOLID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as G}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as H}from"../webscene/support/AlphaCutoff.js";function q(q){const J=new G,{attributes:K,vertex:Q,fragment:X,varyings:Y}=J,{output:Z,normalType:ee,offsetBackfaces:re,spherical:oe,snowCover:ie,pbrMode:ae,textureAlphaPremultiplied:le,instancedDoublePrecision:se,hasVertexColors:ne,hasVertexTangents:te,hasColorTexture:de,hasNormalTexture:ce,hasNormalTextureTransform:me,hasColorTextureTransform:ge}=q;if(D(Q,q),K.add("position","vec3"),Q.inputs.add("position",()=>"position"),Y.add("vpos","vec3",{invariant:!0}),J.include(V,q),J.include(l,q),J.include(u,q),J.include(M,q),!r(Z))return J.include(v,q),J;J.include(N,q),J.include(S,q),J.include(O,q),J.include(T,q),U(Q,q),J.include(t,q),J.include(i);const ue=0===ee||1===ee;return ue&&re&&J.include(e),J.include(p,q),J.include(g,q),J.include(a,q),Y.add("vPositionLocal","vec3"),J.include(c,q),J.include(d,q),J.include(m,q),Q.uniforms.add(new E("externalColor",e=>e.externalColor,{supportsNaN:!0})),Y.add("vcolorExt","vec4"),Q.include(s),Q.include(n),J.include(se?j:P,q),Q.main.add(_`
3
- forwardVertexColor();
4
-
5
- MaskedColor maskedColor =
6
- applySymbolColor(applyVVColor(applyInstanceColor(createMaskedFromNaNColor(externalColor))));
7
-
8
- vcolorExt = maskedColor.color;
9
- forwardColorMixMode(maskedColor.mask);
2
+ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as r}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexNormal as n}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VerticalOffset as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as d}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{DefaultMaterialExternalColor as g}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js";import{ComputeNormalTexturePass as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateAmbientOcclusion as m}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as u,addAmbientBoostFactor as v,addLightingGlobalFactor as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{PhysicallyBasedRendering as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPassFragment as y,ReadShadowMapDrawFragment as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{colorTextureUV as L,normalTextureUV as j,emissiveTextureUV as C,occlusionTextureUV as P,metallicRoughnessTextureUV as S}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as T}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as O}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as N,addCameraPosition as V}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{If as M,glsl as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as $}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{SnowCover as B}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as I}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as U}from"../views/webgl/ShaderBuilder.js";function _(_){const R=new U,{attributes:E,vertex:W,fragment:F,varyings:z}=R,{output:G,normalType:k,offsetBackfaces:H,spherical:q,snowCover:J,pbrMode:K,textureAlphaPremultiplied:Q,instancedDoublePrecision:X,hasVertexColors:Y,hasVertexTangents:Z,hasColorTexture:ee,hasNormalTexture:re,hasNormalTextureTransform:oe,hasColorTextureTransform:ie}=_;if(N(W,_),E.add("position","vec3"),W.inputs.add("position",()=>"position"),z.add("vpos","vec3",{invariant:!0}),R.include(T,_),R.include(a,_),R.include(t,_),R.include(L,_),!r(G))return R.include(d,_),R;R.include(j,_),R.include(C,_),R.include(P,_),R.include(S,_),V(W,_),R.include(l,_),R.include(i);const ae=0===k||1===k;return ae&&H&&R.include(e),R.include(c,_),R.include(n,_),z.add("vPositionLocal","vec3"),R.include(s,_),R.include(g,_),R.include(X?y:x,_),W.main.add(D`
3
+ forwardDefaultMaterialExternalColor();
10
4
 
11
5
  vpos = getVertexInLocalOriginSpace();
12
6
  vPositionLocal = vpos - view[3].xyz;
13
7
  vpos = subtractOrigin(vpos);
14
- ${B(ue,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
8
+ ${M(ae,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
15
9
  vpos = addVerticalOffset(vpos, localOrigin);
16
- ${B(te,"vTangent = dpTransformVertexTangent(tangent);")}
10
+ ${M(Z,"vTangent = dpTransformVertexTangent(tangent);")}
17
11
  gl_Position = transformPosition(proj, view, vpos);
18
- ${B(ue&&re,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
12
+ ${M(ae&&H,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
19
13
 
20
14
  forwardTextureCoordinates();
21
15
  forwardColorUV();
@@ -24,18 +18,18 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
24
18
  forwardOcclusionUV();
25
19
  forwardMetallicRoughnessUV();
26
20
 
27
- if (opacityMixMode != ${_.int(W.ignore)} && vcolorExt.a < ${_.float(H)}) {
21
+ if (shouldCullByOpacity()) {
28
22
  gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
29
23
  }
30
24
  forwardLinearDepthToReadShadowMap();
31
- `),X.include(w,q),X.include(b,q),J.include($,q),X.include(o,q),J.include(z,q),U(X,q),X.uniforms.add(Q.uniforms.get("localOrigin"),new I("ambient",e=>e.ambient),new I("diffuse",e=>e.diffuse),new k("opacity",e=>e.opacity),new k("layerOpacity",e=>e.layerOpacity)),de&&X.uniforms.add(new R("tex",e=>e.texture)),J.include(L,q),X.include(C,q),X.include(A),J.include(x,q),X.include(F,q),f(X),h(X),y(X),X.main.add(_`
25
+ `),F.include(u,_),F.include(m,_),R.include(O,_),F.include(o,_),R.include(I,_),V(F,_),F.uniforms.add(W.uniforms.get("localOrigin"),new A("ambient",e=>e.ambient),new A("diffuse",e=>e.diffuse)),ee&&F.uniforms.add(new $("tex",e=>e.texture)),R.include(f,_),F.include(p,_),R.include(h,_),F.include(B,_),v(F),b(F),w(F),F.main.add(D`
32
26
  discardBySlice(vpos);
33
- ${de?_`
34
- vec4 texColor = texture(tex, ${ge?"colorUV":"vuv0"});
35
- ${B(le,"texColor.rgb /= texColor.a;")}
36
- discardOrAdjustAlpha(texColor);`:_`vec4 texColor = vec4(1.0);`}
27
+ ${ee?D`
28
+ vec4 texColor = texture(tex, ${ie?"colorUV":"vuv0"});
29
+ ${M(Q,"texColor.rgb /= texColor.a;")}
30
+ discardOrAdjustAlpha(texColor);`:D`vec4 texColor = vec4(1.0);`}
37
31
  shadingParams.viewDirection = normalize(vpos - cameraPosition);
38
- ${2===ee?_`vec3 normal = screenDerivativeNormal(vPositionLocal);`:_`shadingParams.normalView = vNormalWorld;
32
+ ${2===k?D`vec3 normal = screenDerivativeNormal(vPositionLocal);`:D`shadingParams.normalView = vNormalWorld;
39
33
  vec3 normal = shadingNormal(shadingParams);`}
40
34
  applyPBRFactors();
41
35
  float ssao = evaluateAmbientOcclusionInverse() * getBakedOcclusion();
@@ -46,13 +40,18 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
46
40
  float shadow = readShadow(additionalAmbientScale, vpos);
47
41
 
48
42
  vec3 matColor = max(ambient, diffuse);
49
- vec3 albedo = mixExternalColor(${B(ne,"vColor.rgb *")} matColor, texColor.rgb, vcolorExt.rgb, colorMixMode);
50
- float opacity_ = layerOpacity * mixExternalOpacity(${B(ne,"vColor.a * ")} opacity, texColor.a, vcolorExt.a, opacityMixMode);
43
+ vec3 albedo = mixExternalColor(
44
+ ${M(Y,"vColor.rgb *")} matColor,
45
+ texColor.rgb,
46
+ vExternalColor.rgb,
47
+ colorMixMode
48
+ );
49
+ float opacity_ = getDefaultMaterialOpacity(texColor.a);
51
50
 
52
- ${ce?`mat3 tangentSpace = computeTangentSpace(${te?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${me?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
53
- vec3 normalGround = ${oe?"normalize(posWorld);":"vec3(0.0, 0.0, 1.0);"}
51
+ ${re?`mat3 tangentSpace = computeTangentSpace(${Z?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${oe?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
52
+ vec3 normalGround = ${q?"normalize(posWorld);":"vec3(0.0, 0.0, 1.0);"}
54
53
 
55
- ${B(ie,_`
54
+ ${M(J,D`
56
55
  float snow = getSnow(normal, normalGround);
57
56
  albedo = mix(albedo, vec3(1), snow);
58
57
  shadingNormal = mix(shadingNormal, normal, snow);
@@ -60,10 +59,10 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
60
59
 
61
60
  vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
62
61
 
63
- ${1===ae||2===ae?_`
62
+ ${1===K||2===K?D`
64
63
  float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
65
- ${B(ie,"mrr = applySnowToMRR(mrr, snow);")}
66
- vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, additionalAmbientIrradiance);`:7===ae?_`vec3 shadedColor = albedo;`:_`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
64
+ ${M(J,"mrr = applySnowToMRR(mrr, snow);")}
65
+ vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, additionalAmbientIrradiance);`:7===K?D`vec3 shadedColor = albedo;`:D`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
67
66
  vec4 finalColor = vec4(shadedColor, opacity_);
68
- outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${B(ie,", snow")});
69
- `),J}const J=Object.freeze(Object.defineProperty({__proto__:null,build:q},Symbol.toStringTag,{value:"Module"}));export{J as D,q as b};
67
+ outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${M(J,", snow")});
68
+ `),R}const R=Object.freeze(Object.defineProperty({__proto__:null,build:_},Symbol.toStringTag,{value:"Module"}));export{R as D,_ as b};
@@ -1,14 +1,14 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{set as e}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{RejectBySlicePass as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{EvaluateSceneLighting as t,addAmbientBoostFactor as o,addLightingGlobalFactor as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{NormalUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ReadShadowMapPassFragment as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{GaussianSplatCovariance as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatCovariance.glsl.js";import{GaussianSplatEvaluation as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js";import{GaussianSplatTextureFetch as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js";import{GaussianSplatUnpackingPassParameters as m,GaussianSplatUnpacking as u}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js";import{QuaternionToRotationMatrix as f}from"../views/3d/webgl-engine/core/shaderLibrary/util/QuaternionToRotationMatrix.glsl.js";import{RgbNormalizedDepthEncoding as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbNormalizedDepthEncoding.glsl.js";import{Float2BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float2PassUniform as w}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as y}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as P,If as C}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintPassUniform as M}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{getGaussianSplatAlphaCutoffValue as R}from"../views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";import{ShaderBuilder as j}from"../views/webgl/ShaderBuilder.js";class L extends m{constructor(){super(...arguments),this.clipMinCameraRelative=i(),this.clipMaxCameraRelative=i(),this.focalLength=-1,this.minSplatRadius=-1,this.tanFov=a(),this.origin=i()}}function F(a){const{clippingEnabled:i,hasSlicePlane:m,receiveShadows:L,spherical:F}=a,D=new j;D.varyings.add("vColor","vec4"),D.varyings.add("conicOpacity","vec4"),D.varyings.add("gaussianLogAlphaCutoff","float"),D.varyings.add("offsetFromCenter","vec2"),G(a)&&D.varyings.add("fragmentPositionCameraRelative","vec3"),D.vertex.uniforms.add(new M("splatOrderTexture",e=>e.splatOrder),new M("splatFadingTexture",e=>e.splatFading),new M("splatAtlasTexture",e=>e.splatAtlas),new M("splatHeaderTexture",e=>e.splatHeader),new y("focalLength",e=>e.focalLength),new y("minSplatRadius",e=>e.minSplatRadius),new w("tanFov",e=>e.tanFov),new h("inverseScreenSize",({camera:a})=>e(z,1/a.fullWidth,1/a.fullHeight)),new S("proj",e=>e.camera.projectionMatrix),new S("view",e=>e.camera.viewMatrix),new h("nearFar",e=>e.camera.nearFar),new x("cameraPosition",e=>e.camera.eye)),i&&(D.vertex.uniforms.add(new b("clipMin",e=>e.clipMinCameraRelative),new b("clipMax",e=>e.clipMaxCameraRelative)),D.fragment.uniforms.add(new b("clipMin",e=>e.clipMinCameraRelative),new b("clipMax",e=>e.clipMaxCameraRelative))),D.vertex.include(u),D.vertex.include(p),D.vertex.include(f),D.vertex.include(d),D.vertex.include(g),D.vertex.include(n,a),L?(D.fragment.uniforms.add(new x("cameraPosition",e=>e.camera.eye)),D.fragment.include(t,a)):D.vertex.include(t,a),D.include(s,a),o(L?D.fragment:D.vertex),r(L?D.fragment:D.vertex),L&&D.include(c,a),D.outputs.add("fragColor","vec4",0),D.outputs.add("fragDepthColor","vec4",1);const A=R(a.alphaCutoff),T=Math.log(A),B=P`float groundLightAlignment = dot(groundNormal, mainLightDirection);
2
+ import{set as e}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{RejectBySlicePass as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{EvaluateSceneLighting as i,addAmbientBoostFactor as t,addLightingGlobalFactor as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{NormalUtils as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{positionOutsideClipSpace as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ReadShadowMapPassFragment as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{GaussianSplatCovariance as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatCovariance.glsl.js";import{GaussianSplatEvaluation as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js";import{GaussianSplatTextureFetch as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js";import{GaussianSplatUnpacking as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js";import{QuaternionToRotationMatrix as u}from"../views/3d/webgl-engine/core/shaderLibrary/util/QuaternionToRotationMatrix.glsl.js";import{RgbNormalizedDepthEncoding as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/RgbNormalizedDepthEncoding.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float2PassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as w}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as b,If as y}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as P}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintPassUniform as C}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{getGaussianSplatAlphaCutoffValue as S}from"../views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js";import{ShaderBuilder as M}from"../views/webgl/ShaderBuilder.js";function j(a){const{clippingEnabled:j,hasSlicePlane:z,receiveShadows:F,spherical:G}=a,D=new M;D.varyings.add("vColor","vec4"),D.varyings.add("conicOpacity","vec4"),D.varyings.add("gaussianLogAlphaCutoff","float"),D.varyings.add("offsetFromCenter","vec2"),R(a)&&D.varyings.add("fragmentPositionCameraRelative","vec3"),D.vertex.uniforms.add(new C("splatOrderTexture",e=>e.splatOrder),new C("splatFadingTexture",e=>e.splatFading),new C("splatAtlasTexture",e=>e.splatAtlas),new C("splatHeaderTexture",e=>e.splatHeader),new x("focalLength",e=>e.focalLength),new x("minSplatRadius",e=>e.minSplatRadius),new v("tanFov",e=>e.tanFov),new f("inverseScreenSize",({camera:a})=>e(L,1/a.fullWidth,1/a.fullHeight)),new P("proj",e=>e.camera.projectionMatrix),new P("view",e=>e.camera.viewMatrix),new f("nearFar",e=>e.camera.nearFar),new h("cameraPosition",e=>e.camera.eye)),j&&(D.vertex.uniforms.add(new w("clipMin",e=>e.clipMinCameraRelative),new w("clipMax",e=>e.clipMaxCameraRelative)),D.fragment.uniforms.add(new w("clipMin",e=>e.clipMinCameraRelative),new w("clipMax",e=>e.clipMaxCameraRelative))),D.vertex.include(p),D.vertex.include(g),D.vertex.include(u),D.vertex.include(c),D.vertex.include(d),D.vertex.include(n,a),F?(D.fragment.uniforms.add(new h("cameraPosition",e=>e.camera.eye)),D.fragment.include(i,a)):D.vertex.include(i,a),D.include(r,a),t(F?D.fragment:D.vertex),o(F?D.fragment:D.vertex),F&&D.include(l,a),D.outputs.add("fragColor","vec4",0),D.outputs.add("fragDepthColor","vec4",1);const A=S(a.alphaCutoff),T=Math.log(A),B=b`float groundLightAlignment = dot(groundNormal, mainLightDirection);
3
3
  float additionalAmbientScale = additionalDirectedAmbientLight(groundLightAlignment);
4
- vec3 additionalLight = mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;`,$=P`
5
- vec3 groundNormal = ${F?P`normalize(cameraRelativePosition + cameraPosition)`:P`vec3(0.0, 0.0, 1.0)`};
4
+ vec3 additionalLight = mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;`,$=b`
5
+ vec3 groundNormal = ${G?b`normalize(cameraRelativePosition + cameraPosition)`:b`vec3(0.0, 0.0, 1.0)`};
6
6
  ${B}
7
- float shadow = ${F?P`lightingGlobalFactor * (1.0 - additionalAmbientScale)`:P`0.0`};
7
+ float shadow = ${G?b`lightingGlobalFactor * (1.0 - additionalAmbientScale)`:b`0.0`};
8
8
  vColor.rgb = evaluateSceneLighting(groundNormal, vColor.rgb, shadow, 0.0, additionalLight);
9
- `,E=P`
10
- vec3 groundNormal = ${F?P`normalize(fragmentPositionCameraRelative + cameraPosition)`:P`vec3(0.0, 0.0, 1.0)`};
9
+ `,E=b`
10
+ vec3 groundNormal = ${G?b`normalize(fragmentPositionCameraRelative + cameraPosition)`:b`vec3(0.0, 0.0, 1.0)`};
11
11
  ${B}
12
12
  float shadow = readShadow(additionalAmbientScale, fragmentPositionCameraRelative);
13
13
  shadedColor = evaluateSceneLighting(groundNormal, vColor.rgb, shadow, 0.0, additionalLight);
14
- `;return D.vertex.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n uint pageNum = fetchGaussianPageIndex(gaussianIndex);\n\n // Unpack color first so very transparent splats can discard before fetching the page header.\n vColor = unpackColor(packedGaussian);\n\n // Apply per-page fading before the early alpha rejection.\n ${C(a.fadingEnabled,"\n uint fadingTextureWidth = uint(textureSize(splatFadingTexture, 0).x);\n uint fadeX = pageNum % fadingTextureWidth;\n uint fadeY = pageNum / fadingTextureWidth;\n uint opacityModifierByte = texelFetch(splatFadingTexture, ivec2(fadeX , fadeY), 0).r;\n float opacityModifier = float(opacityModifierByte) / 255.0;\n vColor.a *= opacityModifier;\n ")}\n\n // Set default position outside clip space for early returns.\n gl_Position = ${l};\n\n if (vColor.a < ${A}) {\n return;\n }\n\n // Delay the page header fetch until the splat survives the opacity reject.\n vec3 cameraRelativePosition = fetchGaussianCameraRelativePosition(gaussianIndex, packedGaussian);\n\n ${C(i,"\n if (cameraRelativePosition.x < clipMin.x || cameraRelativePosition.y < clipMin.y || cameraRelativePosition.z < clipMin.z ||\n cameraRelativePosition.x > clipMax.x || cameraRelativePosition.y > clipMax.y || cameraRelativePosition.z > clipMax.z) {\n return;\n }\n ")}\n\n ${C(m,"if (rejectBySlice(cameraRelativePosition)) {\n return;\n }")}\n\n vec4 viewPos = vec4(mat3(view) * cameraRelativePosition, 1);\n\n if (viewPos.z > -nearFar.x || viewPos.z < -nearFar.y) {\n return;\n }\n\n vec3 covarianceA;\n vec3 covarianceB;\n computePackedGaussianCovariance3D(packedGaussian, covarianceA, covarianceB);\n\n float covariance3D[6] = float[6](covarianceA.x, covarianceA.y, covarianceA.z, covarianceB.x, covarianceB.y, covarianceB.z);\n\n vec3 covariance2D = computeGaussianCovariance2D(viewPos.xyz, focalLength, tanFov, covariance3D, view);\n\n // Reject degenerate covariances before inverting them into conic coefficients.\n float determinant = computeGaussianCovarianceDeterminant(covariance2D);\n if (determinant <= 0.) {\n return;\n }\n\n vec2 eigenvalues = computeGaussianCovarianceEigenvalues(covariance2D);\n\n // Fold the per-splat opacity into the log cutoff so the vertex-side ellipse\n // bound matches the fragment alpha discard after fading.\n gaussianLogAlphaCutoff = ${T} - log(vColor.a);\n float gaussianEllipseThreshold = computeGaussianEllipseThreshold(gaussianLogAlphaCutoff);\n vec2 axisLengths = computeGaussianAxisLengths(eigenvalues, gaussianEllipseThreshold);\n float maxRadius = max(axisLengths.x, axisLengths.y);\n\n // Ignore Gaussians with very small contribution, with tolerance based on the quality profile.\n if (rejectGaussianByMinimumRadius(maxRadius, vColor.a, minSplatRadius)) {\n return;\n }\n\n vec4 projPos = proj * viewPos;\n float invW = 1. / (projPos.w + 1e-7);\n vec3 ndcPos = projPos.xyz * invW;\n vec2 clipSpacePixelScale = 2.0 * inverseScreenSize;\n\n // Cull splats whose screen-space ellipse cannot touch the viewport.\n if (rejectGaussianByScreenBounds(ndcPos.xy, maxRadius, clipSpacePixelScale)) {\n return;\n }\n\n offsetFromCenter = computeGaussianQuadOffset(covariance2D, eigenvalues, axisLengths, gl_VertexID);\n\n ${C(G(a),"float viewSpacePixelScale = -viewPos.z / focalLength;\n vec3 fragmentViewOffset = vec3(offsetFromCenter * viewSpacePixelScale, 0.0);\n fragmentPositionCameraRelative = cameraRelativePosition + transpose(mat3(view)) * fragmentViewOffset;")}\n\n // Store conic coefficients with opacity for fragment-side falloff.\n vec3 conic = computeGaussianConic(covariance2D, determinant);\n conicOpacity = vec4(conic, vColor.a);\n\n // Handle environment lighting per vertex when no shadow map is active.\n // When shadows are received, defer lighting to the fragment shader for crisp shadow borders.\n ${C(L,"forwardLinearDepth(-viewPos.z);",$)}\n\n // Place this quad corner in clip space around the projected splat center.\n vec2 quadClipPosition = ndcPos.xy + offsetFromCenter * clipSpacePixelScale - inverseScreenSize;\n\n gl_Position = vec4(quadClipPosition, ndcPos.z, 1.0);\n\n `),D.fragment.include(v),D.fragment.include(g),D.fragment.include(n,a),D.fragment.main.add(`\n ${C(i,"if (fragmentPositionCameraRelative.x < clipMin.x || fragmentPositionCameraRelative.y < clipMin.y || fragmentPositionCameraRelative.z < clipMin.z ||\n fragmentPositionCameraRelative.x > clipMax.x || fragmentPositionCameraRelative.y > clipMax.y || fragmentPositionCameraRelative.z > clipMax.z) {\n discard;\n }")}\n ${C(m,"if (rejectBySlice(fragmentPositionCameraRelative)) { discard; }")}\n\n float gaussianExponent = evaluateGaussianExponent(conicOpacity.xyz, offsetFromCenter);\n\n // A positive exponent indicates alpha > 1, which should not happen.\n // We also early check the opacity-aware alpha cutoff to avoid unnecessary exp().\n if (gaussianExponent > 0.0 || gaussianExponent < gaussianLogAlphaCutoff) {\n discard;\n }\n\n float gaussianFalloff = exp(gaussianExponent);\n\n // Cap at 0.99 to avoid blending issues, such as seams between overlapping Gaussians.\n float alpha = min(.99f, conicOpacity.w * gaussianFalloff);\n\n vec3 shadedColor = vColor.rgb;\n ${C(L,E)}\n fragColor = vec4(shadedColor * alpha, alpha);\n\n // We simulate first hit based depth using 0.25 as the opacity threshold.\n // This works because we render in front-to-back order,\n // i.e. the first hit that counts completely saturates the alpha channel\n // and further splats do not contribute.\n float depthHit = step(0.25, alpha);\n float normalizedDepth = gl_FragCoord.z;\n fragDepthColor = vec4(encodeNormalizedDepthToRGB(normalizedDepth) * depthHit, depthHit);\n `),D}function G({clippingEnabled:e,hasSlicePlane:a,receiveShadows:i}){return i||a||e}const z=a(),D=Object.freeze(Object.defineProperty({__proto__:null,GaussianSplatPassParameters:L,build:F},Symbol.toStringTag,{value:"Module"}));export{L as G,D as a,F as b};
14
+ `;return D.vertex.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n uint pageNum = fetchGaussianPageIndex(gaussianIndex);\n\n // Unpack color first so very transparent splats can discard before fetching the page header.\n vColor = unpackColor(packedGaussian);\n\n // Apply per-page fading before the early alpha rejection.\n ${y(a.fadingEnabled,"\n uint fadingTextureWidth = uint(textureSize(splatFadingTexture, 0).x);\n uint fadeX = pageNum % fadingTextureWidth;\n uint fadeY = pageNum / fadingTextureWidth;\n uint opacityModifierByte = texelFetch(splatFadingTexture, ivec2(fadeX , fadeY), 0).r;\n float opacityModifier = float(opacityModifierByte) / 255.0;\n vColor.a *= opacityModifier;\n ")}\n\n // Set default position outside clip space for early returns.\n gl_Position = ${s};\n\n if (vColor.a < ${A}) {\n return;\n }\n\n // Delay the page header fetch until the splat survives the opacity reject.\n vec3 cameraRelativePosition = fetchGaussianCameraRelativePosition(gaussianIndex, packedGaussian);\n\n ${y(j,"\n if (cameraRelativePosition.x < clipMin.x || cameraRelativePosition.y < clipMin.y || cameraRelativePosition.z < clipMin.z ||\n cameraRelativePosition.x > clipMax.x || cameraRelativePosition.y > clipMax.y || cameraRelativePosition.z > clipMax.z) {\n return;\n }\n ")}\n\n ${y(z,"if (rejectBySlice(cameraRelativePosition)) {\n return;\n }")}\n\n vec4 viewPos = vec4(mat3(view) * cameraRelativePosition, 1);\n\n if (viewPos.z > -nearFar.x || viewPos.z < -nearFar.y) {\n return;\n }\n\n vec3 covarianceA;\n vec3 covarianceB;\n computePackedGaussianCovariance3D(packedGaussian, covarianceA, covarianceB);\n\n float covariance3D[6] = float[6](covarianceA.x, covarianceA.y, covarianceA.z, covarianceB.x, covarianceB.y, covarianceB.z);\n\n vec3 covariance2D = computeGaussianCovariance2D(viewPos.xyz, focalLength, tanFov, covariance3D, view);\n\n // Reject degenerate covariances before inverting them into conic coefficients.\n float determinant = computeGaussianCovarianceDeterminant(covariance2D);\n if (determinant <= 0.) {\n return;\n }\n\n vec2 eigenvalues = computeGaussianCovarianceEigenvalues(covariance2D);\n\n // Fold the per-splat opacity into the log cutoff so the vertex-side ellipse\n // bound matches the fragment alpha discard after fading.\n gaussianLogAlphaCutoff = ${T} - log(vColor.a);\n float gaussianEllipseThreshold = computeGaussianEllipseThreshold(gaussianLogAlphaCutoff);\n vec2 axisLengths = computeGaussianAxisLengths(eigenvalues, gaussianEllipseThreshold);\n float maxRadius = max(axisLengths.x, axisLengths.y);\n\n // Ignore Gaussians with very small contribution, with tolerance based on the quality profile.\n if (rejectGaussianByMinimumRadius(maxRadius, vColor.a, minSplatRadius)) {\n return;\n }\n\n vec4 projPos = proj * viewPos;\n float invW = 1. / (projPos.w + 1e-7);\n vec3 ndcPos = projPos.xyz * invW;\n vec2 clipSpacePixelScale = 2.0 * inverseScreenSize;\n\n // Cull splats whose screen-space ellipse cannot touch the viewport.\n if (rejectGaussianByScreenBounds(ndcPos.xy, maxRadius, clipSpacePixelScale)) {\n return;\n }\n\n offsetFromCenter = computeGaussianQuadOffset(covariance2D, eigenvalues, axisLengths, gl_VertexID);\n\n ${y(R(a),"float viewSpacePixelScale = -viewPos.z / focalLength;\n vec3 fragmentViewOffset = vec3(offsetFromCenter * viewSpacePixelScale, 0.0);\n fragmentPositionCameraRelative = cameraRelativePosition + transpose(mat3(view)) * fragmentViewOffset;")}\n\n // Store conic coefficients with opacity for fragment-side falloff.\n vec3 conic = computeGaussianConic(covariance2D, determinant);\n conicOpacity = vec4(conic, vColor.a);\n\n // Handle environment lighting per vertex when no shadow map is active.\n // When shadows are received, defer lighting to the fragment shader for crisp shadow borders.\n ${y(F,"forwardLinearDepth(-viewPos.z);",$)}\n\n // Place this quad corner in clip space around the projected splat center.\n vec2 quadClipPosition = ndcPos.xy + offsetFromCenter * clipSpacePixelScale - inverseScreenSize;\n\n gl_Position = vec4(quadClipPosition, ndcPos.z, 1.0);\n\n `),D.fragment.include(m),D.fragment.include(d),D.fragment.include(n,a),D.fragment.main.add(`\n ${y(j,"if (fragmentPositionCameraRelative.x < clipMin.x || fragmentPositionCameraRelative.y < clipMin.y || fragmentPositionCameraRelative.z < clipMin.z ||\n fragmentPositionCameraRelative.x > clipMax.x || fragmentPositionCameraRelative.y > clipMax.y || fragmentPositionCameraRelative.z > clipMax.z) {\n discard;\n }")}\n ${y(z,"if (rejectBySlice(fragmentPositionCameraRelative)) { discard; }")}\n\n float gaussianExponent = evaluateGaussianExponent(conicOpacity.xyz, offsetFromCenter);\n\n // A positive exponent indicates alpha > 1, which should not happen.\n // We also early check the opacity-aware alpha cutoff to avoid unnecessary exp().\n if (gaussianExponent > 0.0 || gaussianExponent < gaussianLogAlphaCutoff) {\n discard;\n }\n\n float gaussianFalloff = exp(gaussianExponent);\n\n // Cap at 0.99 to avoid blending issues, such as seams between overlapping Gaussians.\n float alpha = min(.99f, conicOpacity.w * gaussianFalloff);\n\n vec3 shadedColor = vColor.rgb;\n ${y(F,E)}\n fragColor = vec4(shadedColor * alpha, alpha);\n\n // We simulate first hit based depth using 0.25 as the opacity threshold.\n // This works because we render in front-to-back order,\n // i.e. the first hit that counts completely saturates the alpha channel\n // and further splats do not contribute.\n float depthHit = step(0.25, alpha);\n float normalizedDepth = gl_FragCoord.z;\n fragDepthColor = vec4(encodeNormalizedDepthToRGB(normalizedDepth) * depthHit, depthHit);\n `),D}function R({clippingEnabled:e,hasSlicePlane:a,receiveShadows:n}){return n||a||e}const L=a(),z=Object.freeze(Object.defineProperty({__proto__:null,build:j},Symbol.toStringTag,{value:"Module"}));export{z as G,j as b};
@@ -1,7 +1,7 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{set as e}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as i}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{RejectBySlicePass as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{positionOutsideClipSpace as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{GaussianSplatCovariance as o}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatCovariance.glsl.js";import{GaussianSplatEvaluation as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js";import{GaussianSplatTextureFetch as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js";import{GaussianSplatUnpackingPassParameters as t,GaussianSplatUnpacking as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js";import{QuaternionToRotationMatrix as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/QuaternionToRotationMatrix.glsl.js";import{Float2BindUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float3PassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as m,If as f}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{ShaderBuilder as h}from"../views/webgl/ShaderBuilder.js";class w extends t{constructor(){super(...arguments),this.clipMinCameraRelative=i(),this.clipMaxCameraRelative=i(),this.minSplatRadius=-1}}function S(a){const{clippingEnabled:i,hasSlicePlane:t}=a,w=new h,{fragment:S,varyings:j,vertex:y}=w;j.add("conic","vec3"),j.add("gaussianLogAlphaCutoff","float"),j.add("offsetFromCenter","vec2"),y.uniforms.add(new g("splatOrderTexture",e=>e.splatOrder),new g("splatAtlasTexture",e=>e.splatAtlas),new g("splatHeaderTexture",e=>e.splatHeader),new u("minSplatRadius",e=>e.minSplatRadius),new d("inverseScreenSize",({camera:a})=>e(P,1/a.fullWidth,1/a.fullHeight)),new x("proj",e=>e.camera.projectionMatrix),new x("view",e=>e.camera.viewMatrix),new d("nearFar",e=>e.camera.nearFar)),i&&y.uniforms.add(new p("clipMin",e=>e.clipMinCameraRelative),new p("clipMax",e=>e.clipMaxCameraRelative)),y.include(l),y.include(s),y.include(v),y.include(o),y.include(c),y.include(n,a),y.code.add(m`float safeClipW(float clipW) {
2
+ import{set as e}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{RejectBySlicePass as i}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{positionOutsideClipSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{GaussianSplatCovariance as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatCovariance.glsl.js";import{GaussianSplatEvaluation as o}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js";import{GaussianSplatTextureFetch as c}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatTextureFetch.glsl.js";import{GaussianSplatUnpacking as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js";import{QuaternionToRotationMatrix as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/QuaternionToRotationMatrix.glsl.js";import{Float2BindUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float3PassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as p,If as u}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DUintPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{ShaderBuilder as x}from"../views/webgl/ShaderBuilder.js";function g(a){const{clippingEnabled:g,hasSlicePlane:h}=a,S=new x,{fragment:P,varyings:j,vertex:y}=S;j.add("conic","vec3"),j.add("gaussianLogAlphaCutoff","float"),j.add("offsetFromCenter","vec2"),y.uniforms.add(new m("splatOrderTexture",e=>e.splatOrder),new m("splatAtlasTexture",e=>e.splatAtlas),new m("splatHeaderTexture",e=>e.splatHeader),new d("minSplatRadius",e=>e.minSplatRadius),new l("inverseScreenSize",({camera:a})=>e(w,1/a.fullWidth,1/a.fullHeight)),new f("proj",e=>e.camera.projectionMatrix),new f("view",e=>e.camera.viewMatrix),new l("nearFar",e=>e.camera.nearFar)),g&&y.uniforms.add(new v("clipMin",e=>e.clipMinCameraRelative),new v("clipMax",e=>e.clipMaxCameraRelative)),y.include(s),y.include(c),y.include(t),y.include(r),y.include(o),y.include(i,a),y.code.add(p`float safeClipW(float clipW) {
3
3
  return abs(clipW) < 1e-7 ? (clipW < 0.0 ? -1e-7 : 1e-7) : clipW;
4
- }`),y.code.add(m`vec3 computeProjectivePixelGradient(
4
+ }`),y.code.add(p`vec3 computeProjectivePixelGradient(
5
5
  vec3 clipGradient,
6
6
  vec3 clipWGradient,
7
7
  float clipValue,
@@ -10,13 +10,13 @@ float invWSquared,
10
10
  float halfScreenSize
11
11
  ) {
12
12
  return (clipGradient * safeW - clipValue * clipWGradient) * invWSquared * halfScreenSize;
13
- }`),y.code.add(m`vec3 multiplyCovariance3D(float[6] covariance3D, vec3 value) {
13
+ }`),y.code.add(p`vec3 multiplyCovariance3D(float[6] covariance3D, vec3 value) {
14
14
  return vec3(
15
15
  covariance3D[0] * value.x + covariance3D[1] * value.y + covariance3D[2] * value.z,
16
16
  covariance3D[1] * value.x + covariance3D[3] * value.y + covariance3D[4] * value.z,
17
17
  covariance3D[2] * value.x + covariance3D[4] * value.y + covariance3D[5] * value.z
18
18
  );
19
- }`),y.code.add(m`vec3 computeProjectiveCovariance2D(vec3 pixelXGradient, vec3 pixelYGradient, float[6] covariance3D, mat4 view) {
19
+ }`),y.code.add(p`vec3 computeProjectiveCovariance2D(vec3 pixelXGradient, vec3 pixelYGradient, float[6] covariance3D, mat4 view) {
20
20
  mat3 worldToView = transpose(mat3(view));
21
21
  vec3 axisX = worldToView * pixelXGradient;
22
22
  vec3 axisY = worldToView * pixelYGradient;
@@ -27,15 +27,15 @@ float covarianceXX = dot(axisX, covarianceAxisX) + regularization;
27
27
  float covarianceXY = dot(axisX, covarianceAxisY);
28
28
  float covarianceYY = dot(axisY, covarianceAxisY) + regularization;
29
29
  return vec3(covarianceXX, covarianceXY, covarianceYY);
30
- }`),y.code.add(m`float biasDepth(float linearDepth) {
30
+ }`),y.code.add(p`float biasDepth(float linearDepth) {
31
31
  const float bias = 80.0 * .000015259;
32
32
  return min(linearDepth + bias, 1.0);
33
- }`);const G=.25,D=Math.log(G);return y.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n\n float opacity = unpackOpacity(packedGaussian);\n\n gl_Position = ${r};\n\n if (opacity < ${G}) {\n return;\n }\n\n vec3 cameraRelativePosition = fetchGaussianCameraRelativePosition(gaussianIndex, packedGaussian);\n\n ${f(i,m`if (cameraRelativePosition.x < clipMin.x || cameraRelativePosition.y < clipMin.y || cameraRelativePosition.z < clipMin.z ||
33
+ }`);const G=.25,D=Math.log(G);return y.main.add(`\n uint gaussianIndex = fetchOrderedGaussianIndex(uint(gl_InstanceID));\n uvec4 packedGaussian = fetchPackedGaussian(gaussianIndex);\n\n float opacity = unpackOpacity(packedGaussian);\n\n gl_Position = ${n};\n\n if (opacity < ${G}) {\n return;\n }\n\n vec3 cameraRelativePosition = fetchGaussianCameraRelativePosition(gaussianIndex, packedGaussian);\n\n ${u(g,p`if (cameraRelativePosition.x < clipMin.x || cameraRelativePosition.y < clipMin.y || cameraRelativePosition.z < clipMin.z ||
34
34
  cameraRelativePosition.x > clipMax.x || cameraRelativePosition.y > clipMax.y || cameraRelativePosition.z > clipMax.z) {
35
35
  return;
36
- }`)}\n\n ${f(t,m`if (rejectBySlice(cameraRelativePosition)) {
36
+ }`)}\n\n ${u(h,p`if (rejectBySlice(cameraRelativePosition)) {
37
37
  return;
38
- }`)}\n\n vec4 viewPos = vec4(mat3(view) * cameraRelativePosition, 1.0);\n\n if (viewPos.z > -nearFar.x || viewPos.z < -nearFar.y) {\n return;\n }\n\n vec3 covarianceA;\n vec3 covarianceB;\n computePackedGaussianCovariance3D(packedGaussian, covarianceA, covarianceB);\n\n float covariance3D[6] = float[6](covarianceA.x, covarianceA.y, covarianceA.z, covarianceB.x, covarianceB.y, covarianceB.z);\n\n vec4 projPos = proj * viewPos;\n float safeW = safeClipW(projPos.w);\n float invWSquared = 1.0 / (safeW * safeW);\n vec2 halfScreenSize = 0.5 / inverseScreenSize;\n float maxShadowSplatRadius = max(halfScreenSize.x, halfScreenSize.y);\n\n // Projection matrix columns are the clip-space derivatives with respect to view-space xyz.\n vec3 clipWGradient = vec3(proj[0][3], proj[1][3], proj[2][3]);\n vec3 pixelXGradient = computeProjectivePixelGradient(\n vec3(proj[0][0], proj[1][0], proj[2][0]),\n clipWGradient,\n projPos.x,\n safeW,\n invWSquared,\n halfScreenSize.x\n );\n vec3 pixelYGradient = computeProjectivePixelGradient(\n vec3(proj[0][1], proj[1][1], proj[2][1]),\n clipWGradient,\n projPos.y,\n safeW,\n invWSquared,\n halfScreenSize.y\n );\n vec3 covariance2D = computeProjectiveCovariance2D(pixelXGradient, pixelYGradient, covariance3D, view);\n\n float determinant = computeGaussianCovarianceDeterminant(covariance2D);\n if (determinant <= 0.0) {\n return;\n }\n\n vec2 eigenvalues = computeGaussianCovarianceEigenvalues(covariance2D);\n\n gaussianLogAlphaCutoff = ${D} - log(opacity);\n float gaussianEllipseThreshold = computeGaussianEllipseThreshold(gaussianLogAlphaCutoff);\n vec2 axisLengths = computeGaussianAxisLengths(eigenvalues, gaussianEllipseThreshold);\n float maxRadius = max(axisLengths.x, axisLengths.y);\n\n // Avoid invalid/extremely large footprints.\n if (maxRadius < 0.0 || maxRadius > maxShadowSplatRadius) {\n return;\n }\n\n if (rejectGaussianByMinimumRadius(maxRadius, opacity, minSplatRadius)) {\n return;\n }\n\n vec3 ndcPos = projPos.xyz / safeW;\n vec2 clipSpacePixelScale = 2.0 * inverseScreenSize;\n\n if (rejectGaussianByScreenBounds(ndcPos.xy, maxRadius, clipSpacePixelScale)) {\n return;\n }\n\n offsetFromCenter = computeGaussianQuadOffset(covariance2D, eigenvalues, axisLengths, gl_VertexID);\n conic = computeGaussianConic(covariance2D, determinant);\n float linearDepth = (-viewPos.z - nearFar.x) / (nearFar.y - nearFar.x);\n float biasedDepth = biasDepth(linearDepth);\n\n vec2 clipPos = ndcPos.xy + offsetFromCenter * clipSpacePixelScale - inverseScreenSize;\n gl_Position = vec4(clipPos, biasedDepth * 2.0 - 1.0, 1.0);\n `),S.include(c),S.main.add(m`float gaussianExponent = evaluateGaussianExponent(conic, offsetFromCenter);
38
+ }`)}\n\n vec4 viewPos = vec4(mat3(view) * cameraRelativePosition, 1.0);\n\n if (viewPos.z > -nearFar.x || viewPos.z < -nearFar.y) {\n return;\n }\n\n vec3 covarianceA;\n vec3 covarianceB;\n computePackedGaussianCovariance3D(packedGaussian, covarianceA, covarianceB);\n\n float covariance3D[6] = float[6](covarianceA.x, covarianceA.y, covarianceA.z, covarianceB.x, covarianceB.y, covarianceB.z);\n\n vec4 projPos = proj * viewPos;\n float safeW = safeClipW(projPos.w);\n float invWSquared = 1.0 / (safeW * safeW);\n vec2 halfScreenSize = 0.5 / inverseScreenSize;\n float maxShadowSplatRadius = max(halfScreenSize.x, halfScreenSize.y);\n\n // Projection matrix columns are the clip-space derivatives with respect to view-space xyz.\n vec3 clipWGradient = vec3(proj[0][3], proj[1][3], proj[2][3]);\n vec3 pixelXGradient = computeProjectivePixelGradient(\n vec3(proj[0][0], proj[1][0], proj[2][0]),\n clipWGradient,\n projPos.x,\n safeW,\n invWSquared,\n halfScreenSize.x\n );\n vec3 pixelYGradient = computeProjectivePixelGradient(\n vec3(proj[0][1], proj[1][1], proj[2][1]),\n clipWGradient,\n projPos.y,\n safeW,\n invWSquared,\n halfScreenSize.y\n );\n vec3 covariance2D = computeProjectiveCovariance2D(pixelXGradient, pixelYGradient, covariance3D, view);\n\n float determinant = computeGaussianCovarianceDeterminant(covariance2D);\n if (determinant <= 0.0) {\n return;\n }\n\n vec2 eigenvalues = computeGaussianCovarianceEigenvalues(covariance2D);\n\n gaussianLogAlphaCutoff = ${D} - log(opacity);\n float gaussianEllipseThreshold = computeGaussianEllipseThreshold(gaussianLogAlphaCutoff);\n vec2 axisLengths = computeGaussianAxisLengths(eigenvalues, gaussianEllipseThreshold);\n float maxRadius = max(axisLengths.x, axisLengths.y);\n\n // Avoid invalid/extremely large footprints.\n if (maxRadius < 0.0 || maxRadius > maxShadowSplatRadius) {\n return;\n }\n\n if (rejectGaussianByMinimumRadius(maxRadius, opacity, minSplatRadius)) {\n return;\n }\n\n vec3 ndcPos = projPos.xyz / safeW;\n vec2 clipSpacePixelScale = 2.0 * inverseScreenSize;\n\n if (rejectGaussianByScreenBounds(ndcPos.xy, maxRadius, clipSpacePixelScale)) {\n return;\n }\n\n offsetFromCenter = computeGaussianQuadOffset(covariance2D, eigenvalues, axisLengths, gl_VertexID);\n conic = computeGaussianConic(covariance2D, determinant);\n float linearDepth = (-viewPos.z - nearFar.x) / (nearFar.y - nearFar.x);\n float biasedDepth = biasDepth(linearDepth);\n\n vec2 clipPos = ndcPos.xy + offsetFromCenter * clipSpacePixelScale - inverseScreenSize;\n gl_Position = vec4(clipPos, biasedDepth * 2.0 - 1.0, 1.0);\n `),P.include(o),P.main.add(p`float gaussianExponent = evaluateGaussianExponent(conic, offsetFromCenter);
39
39
  if (gaussianExponent > 0.0 || gaussianExponent < gaussianLogAlphaCutoff) {
40
40
  discard;
41
- }`),w}const P=a(),j=Object.freeze(Object.defineProperty({__proto__:null,GaussianSplatShadowPassParameters:w,build:S},Symbol.toStringTag,{value:"Module"}));export{w as G,j as a,S as b};
41
+ }`),S}const w=a(),h=Object.freeze(Object.defineProperty({__proto__:null,build:g},Symbol.toStringTag,{value:"Module"}));export{h as G,g as b};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatBindUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as c,If as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as u}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{floatBlendReductionFactor as p}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as g,SizedPixelFormat as f}from"../views/webgl/enums.js";import{NoParameters as x}from"../views/webgl/NoParameters.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";const y=.01,M=.008,b=.002,w=.5,S=.02,W=.1,D=.008,F=.3,R=.008,B=150,j=.095,I=.008,C=60,z=2,G=.0039,P=.25,T=.012,$=0,E=6,L=.15,O=25,V=.15,U=.5,N=1,k=1,Q=16;class H extends x{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.temporalSampleFrame=0,this.rayMarchMinReach=V,this.rayMarchMaxReach=U,this.rayMarchWorldReach=O,this.rayMarchMinReachEmissionWeight=N,this.rayMarchMaxReachEmissionWeight=k,this.rayMarchMaxSteps=Q,this.colorBleedWeight=L,this.highQualityIdleColorBlendStart=F}}function _(x){const F=new v,L=F.fragment;F.include(e),F.include(l),r(L),L.include(a),L.include(t),L.include(u),F.include(o,x),L.uniforms.add(new d("normalMap",e=>e.normalTexture),new d("depthMap",e=>e.depthTexture),new h("lastFrameColorTexture",e=>e.reprojection.lastFrameColor?.getTexture()),new h("lastFrameDepthTexture",e=>e.reprojection.lastFrameDepth?.attachment),new h("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new h("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(g)),new m("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new m("view",e=>e.camera.viewMatrix),new n("accumulatedFrames",e=>e.accumulatedFrames),new n("temporalSampleFrame",e=>e.temporalSampleFrame),new n("scaleGlobalIllumination",e=>e.scaleGlobalIllumination)),L.uniforms.add(new n("rayMarchMinReach",e=>e.rayMarchMinReach),new n("rayMarchMaxReach",e=>e.rayMarchMaxReach),new n("rayMarchWorldReach",e=>e.rayMarchWorldReach),new n("rayMarchMinReachEmissionWeight",e=>e.rayMarchMinReachEmissionWeight),new n("rayMarchMaxReachEmissionWeight",e=>e.rayMarchMaxReachEmissionWeight),new n("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new n("colorBleedWeight",e=>e.colorBleedWeight),new n("highQualityIdleColorBlendStart",e=>e.highQualityIdleColorBlendStart));const{hasEmission:O,hasColor:V}=x;return O&&L.uniforms.add(new i("inputScale",e=>e.reprojection.lastFrameEmission?.attachment.descriptor.internalFormat===f.RGBA8?p:1),new h("lastFrameEmissionTexture",e=>e.reprojection.lastFrameEmission?.attachment)),L.code.add(c`
2
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as o}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatBindUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as c,If as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as u}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{floatBlendReductionFactor as p}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as g,SizedPixelFormat as f}from"../views/webgl/enums.js";import{NoParameters as x}from"../views/webgl/NoParameters.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";const y=.01,M=.008,b=.002,w=.5,S=.02,W=.1,F=.008,D=.3,R=.008,B=150,I=.095,j=.008,C=60,z=2,G=.0039,P=.25,O=.012,T=0,$=6,E=.15,L=25,V=.15,U=.5,H=1,N=1,k=16;class Q extends x{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.temporalSampleFrame=0,this.rayMarchMinReach=V,this.rayMarchMaxReach=U,this.rayMarchWorldReach=L,this.rayMarchMinReachEmissionWeight=H,this.rayMarchMaxReachEmissionWeight=N,this.rayMarchMaxSteps=k,this.colorBleedWeight=E,this.highQualityIdleColorBlendStart=D}}function _(x){const D=new v,E=D.fragment;D.include(e),D.include(o),r(E),E.include(a),E.include(t),E.include(u),D.include(i,x),E.uniforms.add(new d("normalMap",e=>e.normalTexture),new d("depthMap",e=>e.depthTexture),new h("lastFrameColorTexture",e=>e.reprojection.lastFrameColor?.getTexture()),new h("lastFrameDepthTexture",e=>e.reprojection.lastFrameDepth?.attachment),new h("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new h("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(g)),new m("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new m("view",e=>e.camera.viewMatrix),new n("accumulatedFrames",e=>e.accumulatedFrames),new n("temporalSampleFrame",e=>e.temporalSampleFrame),new n("scaleGlobalIllumination",e=>e.scaleGlobalIllumination)),E.uniforms.add(new n("rayMarchMinReach",e=>e.rayMarchMinReach),new n("rayMarchMaxReach",e=>e.rayMarchMaxReach),new n("rayMarchWorldReach",e=>e.rayMarchWorldReach),new n("rayMarchMinReachEmissionWeight",e=>e.rayMarchMinReachEmissionWeight),new n("rayMarchMaxReachEmissionWeight",e=>e.rayMarchMaxReachEmissionWeight),new n("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new n("colorBleedWeight",e=>e.colorBleedWeight),new n("highQualityIdleColorBlendStart",e=>e.highQualityIdleColorBlendStart));const{hasEmission:L,hasColor:V}=x;return L&&E.uniforms.add(new l("inputScale",e=>e.reprojection.lastFrameEmission?.attachment.descriptor.internalFormat===f.RGBA8?p:1),new h("lastFrameEmissionTexture",e=>e.reprojection.lastFrameEmission?.attachment)),E.code.add(c`
3
3
  float computeIdleColorBlendWeight(float accumulatedFrames) {
4
4
  float idleColorBlendProgress = clamp(
5
5
  accumulatedFrames / ${c.float(B)},
@@ -20,8 +20,8 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
20
20
  1.0
21
21
  );
22
22
  return mix(
23
- ${c.float(j)},
24
23
  ${c.float(I)},
24
+ ${c.float(j)},
25
25
  pow(idleOcclusionBlendProgress, ${c.float(z)})
26
26
  );
27
27
  }
@@ -77,7 +77,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
77
77
 
78
78
  return value * 2.0 - 1.0;
79
79
  }
80
- `),F.outputs.add("fragGlobalIllumination","vec4",0),F.outputs.add("fragWeight","vec2",1),L.main.add(c`
80
+ `),D.outputs.add("fragGlobalIllumination","vec4",0),D.outputs.add("fragWeight","vec2",1),E.main.add(c`
81
81
  float depth = depthFromTexture(depthMap, uv);
82
82
 
83
83
  // Early out if depth is out of range, such as in the sky
@@ -89,12 +89,17 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
89
89
 
90
90
  // Get the normal of current fragment
91
91
  ivec2 iuv = ivec2(uv * vec2(textureSize(normalMap, 0)));
92
+
92
93
  vec4 normal4 = texelFetch(normalMap, iuv, 0);
93
- if (normal4.a != 1.0) {
94
+
95
+ // 0.0 alpha excludes the surface as a receiver (e.g. water)
96
+ if (normal4.a == 0.0) {
94
97
  fragGlobalIllumination = vec4(0.0, 0.0, 0.0, 1.0);
95
98
  fragWeight = vec2(0.0);
96
99
  return;
97
100
  }
101
+
102
+ float receiverOpacity = normal4.a;
98
103
  vec3 normal = normalize(normal4.xyz * 2.0 - 1.0);
99
104
 
100
105
  // Reconstruct view space position of current fragment
@@ -137,10 +142,10 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
137
142
  steps = 1;
138
143
  if (historyOcclusionBlendWeight > ${c.float(w)}) {
139
144
  occlusionBlendWeight = ${c.float(W)};
140
- colorBlendWeight = ${c.float(D)};
145
+ colorBlendWeight = ${c.float(F)};
141
146
  } else if (historyOcclusionBlendWeight > ${c.float(S)}) {
142
147
  occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
143
- colorBlendWeight = ${c.float(D)};
148
+ colorBlendWeight = ${c.float(F)};
144
149
  } else {
145
150
  occlusionBlendWeight = isScaledGlobalIllumination ? ${c.float(M)} : idleOcclusionBlendWeight;
146
151
  colorBlendWeight = isScaledGlobalIllumination ? ${c.float(b)} : idleColorBlendWeight;
@@ -157,9 +162,9 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
157
162
  ${s(V,c`
158
163
  float colorBleedScale = mix(
159
164
  1.0,
160
- ${c.float($)},
165
+ ${c.float(T)},
161
166
  smoothstep(
162
- ${c.float(T)},
167
+ ${c.float(O)},
163
168
  highQualityIdleColorBlendStart,
164
169
  colorBlendWeight
165
170
  )
@@ -183,7 +188,15 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
183
188
  rayMarchMaxSteps
184
189
  );
185
190
 
191
+ float hitOpacity = 0.0;
186
192
  if (hit.z > 0.0) {
193
+ ivec2 normalMapSize = textureSize(normalMap, 0);
194
+ ivec2 hitIuv = clamp(ivec2(hit.xy * vec2(normalMapSize)), ivec2(0), normalMapSize - ivec2(1));
195
+ float storedHitOpacity = texelFetch(normalMap, hitIuv, 0).a;
196
+
197
+ // 0.0 alpha excludes the surface as a receiver (e.g. water), but a valid ray hit still occludes as opaque
198
+ hitOpacity = storedHitOpacity == 0.0 ? 1.0 : storedHitOpacity;
199
+
187
200
  ${s(V,c`
188
201
  // Emission and color bleed - Reproject the current receiver and sampled hit to estimate bounced color
189
202
  vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
@@ -191,28 +204,35 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
191
204
  vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
192
205
  vec3 sourceColor = texture(lastFrameColorTexture, hitReprojectedCoordinate).rgb;
193
206
  vec3 sourceColorLinear = linearizeGamma(sourceColor);
194
- vec3 sourceEmission = ${s(O,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz * inputScale","vec3(0.0)")};
207
+ vec3 sourceEmission = ${s(L,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz * inputScale","vec3(0.0)")};
195
208
 
196
209
  float emissionWeight = mix(
197
210
  rayMarchMinReachEmissionWeight,
198
211
  rayMarchMaxReachEmissionWeight,
199
212
  (rayMarchScreenReach - rayMarchMinReach) / max(rayMarchMaxReach - rayMarchMinReach, 0.00001)
200
213
  );
201
- fragGlobalIllumination.rgb += ((sourceColorLinear * colorBleedWeight * colorBleedScale) + sourceEmission * emissionWeight) * stepSize;
214
+ fragGlobalIllumination.rgb += hitOpacity * (
215
+ (sourceColorLinear * colorBleedWeight * colorBleedScale) + sourceEmission * emissionWeight
216
+ ) * stepSize;
202
217
  `)}
203
- } else {
218
+ }
219
+
220
+ if (hitOpacity < 1.0) {
204
221
  // Occlusion - heuristic modulating sky intensity based on angle to main light
205
222
  vec4 viewMainLightDirection = view * vec4(mainLightDirection, 0.0);
206
223
  float skyModulation = pow(max(dot(rayDirection, viewMainLightDirection.xyz), 0.0), 3.0) * 5.5;
207
224
  float skyFacingWeight = clamp(3.5 * dot(viewMainLightDirection.xyz, normal), 0.0, 1.0);
208
225
  skyModulation = mix(1.0, skyModulation * 0.2 + 0.8, skyFacingWeight);
209
- fragGlobalIllumination.a += skyModulation * stepSize;
226
+ fragGlobalIllumination.a += (1.0 - hitOpacity) * skyModulation * stepSize;
210
227
  }
211
228
  }
212
229
 
230
+ fragGlobalIllumination.rgb *= receiverOpacity;
231
+ fragGlobalIllumination.a = mix(1.0, fragGlobalIllumination.a, receiverOpacity);
232
+
213
233
  // Rendering trick add noise to reduce accumulation artifacts
214
234
  float accumulationDither = occlusionBlendWeight < 1.0
215
- ? randomDirectionSample.b * ${c.float(G)}
235
+ ? receiverOpacity * randomDirectionSample.b * ${c.float(G)}
216
236
  : 0.0;
217
237
 
218
238
  ${s(V,c`
@@ -230,5 +250,5 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
230
250
  // Accumulate occlusion
231
251
  fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
232
252
 
233
- fragWeight = vec2(occlusionBlendWeight, colorBlendWeight * ${c.float(E)});
234
- `),F}const q=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:H,build:_,defaultColorBleedWeight:L,defaultRayMarchMaxReach:U,defaultRayMarchMaxReachEmissionWeight:k,defaultRayMarchMaxSteps:Q,defaultRayMarchMinReach:V,defaultRayMarchMinReachEmissionWeight:N,defaultRayMarchWorldReach:O},Symbol.toStringTag,{value:"Module"}));export{H as G,q as a,Q as b,_ as c,U as d,L as e,k as f,V as g,N as h,O as i};
253
+ fragWeight = vec2(occlusionBlendWeight, colorBlendWeight * ${c.float($)});
254
+ `),D}const q=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:Q,build:_,defaultColorBleedWeight:E,defaultRayMarchMaxReach:U,defaultRayMarchMaxReachEmissionWeight:N,defaultRayMarchMaxSteps:k,defaultRayMarchMinReach:V,defaultRayMarchMinReachEmissionWeight:H,defaultRayMarchWorldReach:L},Symbol.toStringTag,{value:"Module"}));export{Q as G,q as a,k as b,_ as c,U as d,E as e,N as f,V as g,H as h,L as i};
@@ -1,9 +1,9 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{addNearFar as e}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{Offset as o}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as r}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as a}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{PathVertexPosition as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js";import{outputDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as l}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{EvaluateAmbientOcclusion as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as s,addAmbientBoostFactor as c,addLightingGlobalFactor as m}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as g}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{NormalUtils as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PhysicallyBasedRenderingParameters as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapDrawFragment as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{ColorConversion as w}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as h,addCameraPosition as f,addViewNormal as y}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as L}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as j,If as P}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{SnowCover as V}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as S}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as C}from"../views/webgl/ShaderBuilder.js";function O(O){const A=new C,{vertex:I,fragment:B,varyings:_}=A;h(I,O),_.add("vpos","vec3",{invariant:!0}),A.include(d,O);const{output:D,spherical:M,pbrMode:F,snowCover:k,offsetBackfaces:z}=O,E=11===D;switch((r(D)||E)&&(E?(A.varyings.add("objectAndLayerIdColorVarying","vec4"),A.vertex.code.add(j`void forwardObjectAndLayerIdColor() {
2
+ import{addNearFar as e}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{Offset as o}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as r}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as a}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{PathVertexPosition as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js";import{outputDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as l}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{EvaluateAmbientOcclusion as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as s,addAmbientBoostFactor as c,addLightingGlobalFactor as m}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as g}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{NormalUtils as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PhysicallyBasedRenderingParameters as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapDrawFragment as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{ColorConversion as w}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as f,addCameraPosition as h,addViewNormal as y}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as x}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as L}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as j,If as P}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{SnowCover as V}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as C}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as S}from"../views/webgl/ShaderBuilder.js";function O(O){const A=new S,{vertex:I,fragment:B,varyings:_}=A;f(I,O),_.add("vpos","vec3",{invariant:!0}),A.include(d,O);const{output:D,spherical:M,pbrMode:F,snowCover:k,offsetBackfaces:z}=O,E=11===D;switch((r(D)||E)&&(E?(A.varyings.add("objectAndLayerIdColorVarying","vec4"),A.vertex.code.add(j`void forwardObjectAndLayerIdColor() {
3
3
  objectAndLayerIdColorVarying = getOlidColor();
4
4
  }`),A.fragment.code.add(j`void outputObjectAndLayerIdColor() {
5
5
  fragColor = objectAndLayerIdColorVarying;
6
- }`)):(A.vertex.code.add(j`void forwardObjectAndLayerIdColor() {}`),A.fragment.code.add(j`void outputObjectAndLayerIdColor() {}`)),A.include(i),A.include(b,O),z&&(f(I,O),A.include(o)),_.add("vnormal","vec3"),_.add("vcolor","vec4"),I.main.add(j`
6
+ }`)):(A.vertex.code.add(j`void forwardObjectAndLayerIdColor() {}`),A.fragment.code.add(j`void outputObjectAndLayerIdColor() {}`)),A.include(i),A.include(b,O),z&&(h(I,O),A.include(o)),_.add("vnormal","vec3"),_.add("vcolor","vec4"),I.main.add(j`
7
7
  ExtrudedVertex extrudedVertex = evaluateVertex();
8
8
  vpos = calculateVPos(extrudedVertex);
9
9
  vnormal = normalize(localNormal(extrudedVertex));
@@ -12,7 +12,7 @@ fragColor = objectAndLayerIdColorVarying;
12
12
 
13
13
  forwardObjectAndLayerIdColor();
14
14
  vcolor = getColor();
15
- forwardLinearDepthToReadShadowMap();`)),D){case 0:case 1:case 2:A.include(p,O),B.include(s,O),B.include(t,O),A.include(v,O),B.include(a,O),A.include(S,O),f(B,O),c(B),m(B),B.uniforms.add(I.uniforms.get("localOrigin"),new x("ambient",e=>e.ambient),new x("diffuse",e=>e.diffuse),new L("opacity",e=>e.opacity)),B.include(w),B.include(V,O),g(B),B.main.add(j`
15
+ forwardLinearDepthToReadShadowMap();`)),D){case 0:case 1:case 2:A.include(p,O),B.include(s,O),B.include(t,O),A.include(v,O),B.include(a,O),A.include(C,O),h(B,O),c(B),m(B),B.uniforms.add(I.uniforms.get("localOrigin"),new x("ambient",e=>e.ambient),new x("diffuse",e=>e.diffuse),new L("opacity",e=>e.opacity)),B.include(w),B.include(V,O),g(B),B.main.add(j`
16
16
  discardBySlice(vpos);
17
17
 
18
18
  shadingParams.viewDirection = normalize(vpos - cameraPosition);
@@ -44,13 +44,14 @@ gl_Position = transformPosition(proj, view, vpos);`),A.fragment.include(a,O),B.m
44
44
  vpos = calculateVPos(extrudedVertex);
45
45
  gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);`),B.include(a,O),A.include(n,O),B.main.add(j`discardBySlice(vpos);
46
46
  outputDepth(depth);`);break;case 11:A.fragment.include(a,O),B.main.add(j`discardBySlice(vpos);
47
- outputObjectAndLayerIdColor();`);break;case 4:A.include(i),A.include(u,O),y(I),_.add("vnormal","vec3"),I.main.add(j`ExtrudedVertex extrudedVertex = evaluateVertex();
47
+ outputObjectAndLayerIdColor();`);break;case 4:A.include(i),A.include(u,O),y(I),_.add("vnormal","vec3"),_.add("vcolor","vec4"),I.main.add(j`ExtrudedVertex extrudedVertex = evaluateVertex();
48
48
  vpos = calculateVPos(extrudedVertex);
49
49
  vnormal = normalize((viewNormal * vec4(localNormal(extrudedVertex), 1.0)).xyz);
50
- gl_Position = transformPosition(proj, view, vpos);`),A.fragment.include(a,O),B.main.add(j`discardBySlice(vpos);
50
+ vcolor = getColor();
51
+ gl_Position = transformPosition(proj, view, vpos);`),A.fragment.include(a,O),B.uniforms.add(new L("opacity",e=>e.opacity)),B.main.add(j`discardBySlice(vpos);
51
52
  vec3 normal = normalize(vnormal);
52
53
  if (gl_FrontFacing == false) normal = -normal;
53
- fragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);`);break;case 10:A.include(i),A.include(u,O),_.add("vnormal","vec3"),I.main.add(j`ExtrudedVertex extrudedVertex = evaluateVertex();
54
+ fragColor = vec4(vec3(0.5) + 0.5 * normal, vcolor.a * opacity);`);break;case 10:A.include(i),A.include(u,O),_.add("vnormal","vec3"),I.main.add(j`ExtrudedVertex extrudedVertex = evaluateVertex();
54
55
  vpos = calculateVPos(extrudedVertex);
55
56
  gl_Position = transformPosition(proj, view, vpos);`),A.fragment.include(a,O),A.include(l,O),B.main.add(j`discardBySlice(vpos);
56
57
  calculateOcclusionAndOutputHighlight();`)}return A}const A=Object.freeze(Object.defineProperty({__proto__:null,build:O},Symbol.toStringTag,{value:"Module"}));export{A as P,O as b};