@arcgis/core 6.0.0-next.28 → 6.0.0-next.29

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 (321) hide show
  1. package/arcgisGlobal.d.ts +0 -2
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/131185d26343a997495e.js +1 -0
  4. package/assets/esri/core/workers/chunks/{dbda982485d3fe26c729.js → 13c64087be3b2985a21b.js} +1 -1
  5. package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +1 -0
  6. package/assets/esri/core/workers/chunks/176d0a06ebff5a29dedf.js +1 -0
  7. package/assets/esri/core/workers/chunks/{b0ca81a07cff25df19d2.js → 176d75e76318bfc25a53.js} +1 -1
  8. package/assets/esri/core/workers/chunks/18776a130d96879a68b1.js +1 -0
  9. package/assets/esri/core/workers/chunks/{e35641a3a4da8cfbcf54.js → 189321d88026bd7e6d3e.js} +1 -1
  10. package/assets/esri/core/workers/chunks/18e7fa4d3e0b1a084cc6.js +1 -0
  11. package/assets/esri/core/workers/chunks/{1168bc5c9f0a7e1f63a2.js → 1989410a618865f02dec.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{2c0cb214fedb29487eef.js → 199a7f97916679e0257c.js} +1 -1
  13. package/assets/esri/core/workers/chunks/1c406ab2bf99ac563316.js +1 -0
  14. package/assets/esri/core/workers/chunks/1d96fbad881a7d14a950.js +1 -0
  15. package/assets/esri/core/workers/chunks/{42d44c7d532df5ee70e9.js → 1deca3de77b1a9a07da4.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{45f826554499c38968c6.js → 1ee4df0fd61440cb5f02.js} +1 -1
  17. package/assets/esri/core/workers/chunks/22e73501e1435a896826.js +1 -0
  18. package/assets/esri/core/workers/chunks/25657f70c5f04a4ed978.js +1 -0
  19. package/assets/esri/core/workers/chunks/276a0b549acf048e8673.js +1 -0
  20. package/assets/esri/core/workers/chunks/{56e903ccef66cbe18f92.js → 2cd60fd062d954322c1f.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{ad96132bc89671e595f3.js → 2d3e0e4442dbc6ec6def.js} +1 -1
  22. package/assets/esri/core/workers/chunks/2de4296590bf9f9e9add.js +1 -0
  23. package/assets/esri/core/workers/chunks/2f5d014d6a72108b0b3a.js +1 -0
  24. package/assets/esri/core/workers/chunks/{0363d29fc665d169ebc4.js → 3105336a05f38a95ebea.js} +1 -1
  25. package/assets/esri/core/workers/chunks/379ef56f6b32494832a6.js +1 -0
  26. package/assets/esri/core/workers/chunks/3aafdb905c697bc9b1ad.js +1 -0
  27. package/assets/esri/core/workers/chunks/40c2674dae73f0942751.js +1 -0
  28. package/assets/esri/core/workers/chunks/418addce122dbb8897b4.js +1 -0
  29. package/assets/esri/core/workers/chunks/4419732baf3459a80e6d.js +1 -0
  30. package/assets/esri/core/workers/chunks/4976f5567fc7f1b63d10.js +1 -0
  31. package/assets/esri/core/workers/chunks/4e17665dd9048c300d87.js +1 -0
  32. package/assets/esri/core/workers/chunks/5396b6e99a0546a25d19.js +1 -0
  33. package/assets/esri/core/workers/chunks/53c7510df09b71ab5646.js +1 -0
  34. package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
  35. package/assets/esri/core/workers/chunks/{d90a3bfd45b5ed4092e0.js → 590fe0f56bc4c33a50e7.js} +1 -1
  36. package/assets/esri/core/workers/chunks/5bb6c255bdc8aa9ba23e.js +1 -0
  37. package/assets/esri/core/workers/chunks/5f1cb79aec9c4a9b7ddc.js +29 -0
  38. package/assets/esri/core/workers/chunks/{23a4806b4cdf7cc32e4d.js → 5f787809b74eed7b9a91.js} +1 -1
  39. package/assets/esri/core/workers/chunks/636e9c4ac1f9ae98f9d1.js +1 -0
  40. package/assets/esri/core/workers/chunks/654f5441227579d2b6b4.js +1 -0
  41. package/assets/esri/core/workers/chunks/692f0093c444fcc752b5.js +1 -0
  42. package/assets/esri/core/workers/chunks/69627b2634da64dd885f.js +1 -0
  43. package/assets/esri/core/workers/chunks/6a7de221cea4426cb490.js +1 -0
  44. package/assets/esri/core/workers/chunks/7030a4d0714a35995a58.js +1 -0
  45. package/assets/esri/core/workers/chunks/72d20d3957d612f86431.js +1 -0
  46. package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +1 -0
  47. package/assets/esri/core/workers/chunks/7a0b4dc0cda190367a39.js +1 -0
  48. package/assets/esri/core/workers/chunks/{5eec1c1162779574f46e.js → 7c75a8ee266c36baa902.js} +1 -1
  49. package/assets/esri/core/workers/chunks/{ab1660f5f8a5268c2fac.js → 84038dd85005fea413eb.js} +1 -1
  50. package/assets/esri/core/workers/chunks/849f446c718e892f39ce.js +1 -0
  51. package/assets/esri/core/workers/chunks/{8ac2098ecdc40ad41055.js → 8502274806ea52308822.js} +1 -1
  52. package/assets/esri/core/workers/chunks/865cebc5c982c040ab6f.js +1 -0
  53. package/assets/esri/core/workers/chunks/{76196c414e48834f7b92.js → 8f008eedb11685ee2048.js} +1 -1
  54. package/assets/esri/core/workers/chunks/90d797ab82d4a68ba32f.js +1 -0
  55. package/assets/esri/core/workers/chunks/9184c947cdefe06bf551.js +1 -0
  56. package/assets/esri/core/workers/chunks/9976eaa81085c0d17e14.js +1 -0
  57. package/assets/esri/core/workers/chunks/{177f353ce72133e2eeed.js → 9c2436464b7dfd666678.js} +1 -1
  58. package/assets/esri/core/workers/chunks/a125650edbed802e419a.js +1 -0
  59. package/assets/esri/core/workers/chunks/{23fd4de56de352f63e2d.js → a2196a49f89d57a0a1c7.js} +1 -1
  60. package/assets/esri/core/workers/chunks/ad21757d78e372fa2ed6.js +1 -0
  61. package/assets/esri/core/workers/chunks/b01688ccc29d33bfc82d.js +1 -0
  62. package/assets/esri/core/workers/chunks/b5eff28cf482d920b9ea.js +1 -0
  63. package/assets/esri/core/workers/chunks/{04ecf15524ff3838c01c.js → ba4520ddcb6a49988da6.js} +1 -1
  64. package/assets/esri/core/workers/chunks/be55771758e4bcef0976.js +1 -0
  65. package/assets/esri/core/workers/chunks/bead830a677690eeb6fb.js +1 -0
  66. package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +1 -0
  67. package/assets/esri/core/workers/chunks/c1cf3edce15f09648eb4.js +1 -0
  68. package/assets/esri/core/workers/chunks/c4f78a481f43cfae7b63.js +1 -0
  69. package/assets/esri/core/workers/chunks/c570b90995c65bbb2e14.js +1 -0
  70. package/assets/esri/core/workers/chunks/c576bef77e34920af188.js +1 -0
  71. package/assets/esri/core/workers/chunks/c9feffb9884cfed52c4b.js +1 -0
  72. package/assets/esri/core/workers/chunks/cc97e4fd0dacad970a23.js +1 -0
  73. package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +1 -0
  74. package/assets/esri/core/workers/chunks/d1d6154b4af1c9cc497b.js +1 -0
  75. package/assets/esri/core/workers/chunks/d3c3fb079ad97970f834.js +1 -0
  76. package/assets/esri/core/workers/chunks/daae21cf77864f3293ef.js +1 -0
  77. package/assets/esri/core/workers/chunks/dc2f93453dfa40f623ab.js +1 -0
  78. package/assets/esri/core/workers/chunks/dcf6024dc19428ff2b9d.js +1 -0
  79. package/assets/esri/core/workers/chunks/dd30b02c5978c1c5f511.js +1 -0
  80. package/assets/esri/core/workers/chunks/de3f140058aa0b907b65.js +1 -0
  81. package/assets/esri/core/workers/chunks/df375d1b0dab5ecbd1be.js +1 -0
  82. package/assets/esri/core/workers/chunks/{ef2c3febcceedc44b3ac.js → dfd4782b11d6fdca0492.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{48cc58890fddbcf69cef.js → e121d15b883184ee83e7.js} +1 -1
  84. package/assets/esri/core/workers/chunks/{67e06d606c7fd2064adf.js → e2c6cd8dac01e129ccfe.js} +1 -1
  85. package/assets/esri/core/workers/chunks/e3b212f8af448ec29eef.js +1 -0
  86. package/assets/esri/core/workers/chunks/e4042e43f0081fe49f7b.js +1 -0
  87. package/assets/esri/core/workers/chunks/e480e7d5f40049a2053b.js +1 -0
  88. package/assets/esri/core/workers/chunks/eaab787a5f2445be5e5a.js +1 -0
  89. package/assets/esri/core/workers/chunks/edd36a1fc80b1d29907e.js +1 -0
  90. package/assets/esri/core/workers/chunks/ee0dc906cc7979080329.js +1 -0
  91. package/assets/esri/core/workers/chunks/f07fb9b3fa30d7ee1681.js +1 -0
  92. package/assets/esri/core/workers/chunks/f09bc86cd52224febfcb.js +1 -0
  93. package/assets/esri/core/workers/chunks/{037c67ef5c4398d5954d.js → f2dab9fcd90ce38ae3d1.js} +1 -1
  94. package/assets/esri/core/workers/chunks/f39c700f3db7db52b522.js +1 -0
  95. package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +1 -0
  96. package/assets/esri/core/workers/chunks/f3dc0bc0e00635855a7a.js +1 -0
  97. package/assets/esri/core/workers/chunks/f45064066e1ab041a0b2.js +1 -0
  98. package/assets/esri/core/workers/chunks/{dc7aa0a1eb6c6e361f9f.js → f7398cfd8bbd041bd635.js} +1 -1
  99. package/assets/esri/core/workers/chunks/f9dc38761b314d33890f.js +1 -0
  100. package/assets/esri/core/workers/chunks/fe6dcb21570395e46ce8.js +1 -0
  101. package/assets/esri/core/workers/chunks/{9c4961213ac6ec283dd9.js → fefdd10bdd5a4c8d8ed0.js} +44 -47
  102. package/assets/esri/core/workers/chunks/ffe49d9e7df081bef4a5.js +1 -0
  103. package/assets/esri/themes/base/_core.scss +0 -2
  104. package/assets/esri/themes/dark/main.css +1 -1
  105. package/assets/esri/themes/light/main.css +1 -1
  106. package/assets/esri/themes/light/view.css +1 -1
  107. package/chunks/Component.glsl.js +48 -48
  108. package/chunks/EmissionComposite.glsl.js +1 -1
  109. package/chunks/Fog.glsl.js +1 -1
  110. package/chunks/GaussianSplatDepth.glsl.js +15 -7
  111. package/chunks/GaussianSplatShadow.glsl.js +14 -4
  112. package/config.d.ts +12 -9
  113. package/config.js +1 -1
  114. package/form/FormTemplate.d.ts +1 -1
  115. package/form/elements/AttachmentElement.d.ts +2 -0
  116. package/form/elements/FieldElement.d.ts +2 -2
  117. package/form/elements/FieldElement.js +1 -1
  118. package/form/elements/RelationshipElement.d.ts +1 -1
  119. package/form/elements/TextElement.d.ts +2 -2
  120. package/form/elements/UtilityNetworkAssociationsElement.d.ts +1 -1
  121. package/form/elements/inputs/inputUtils.js +1 -1
  122. package/form/elements/inputs/types.d.ts +19 -0
  123. package/form/elements/inputs.d.ts +3 -2
  124. package/form/elements/inputs.js +1 -1
  125. package/interfaces.d.ts +0 -14
  126. package/kernel.js +1 -1
  127. package/layers/VideoLayer.d.ts +5 -5
  128. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  129. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  130. package/layers/orientedImagery/transformations/rotationUtils.js +2 -0
  131. package/layers/orientedImagery/transformations/utils.js +1 -1
  132. package/layers/save/parquetLayerUtils.js +1 -1
  133. package/layers/support/vectorTileLayerLoader.js +1 -1
  134. package/package.json +2 -2
  135. package/smartMapping/support/adapters/support/histogramUtils.js +1 -1
  136. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  137. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSource.js +1 -1
  138. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSourceWorker.js +1 -1
  139. package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +2 -0
  140. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  141. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  142. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  143. package/views/2d/layers/features/FeatureContainer.js +1 -1
  144. package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
  145. package/views/3d/state/controllers/PointToPointAnimationController.js +1 -1
  146. package/views/3d/support/ResourceController.js +1 -1
  147. package/views/3d/terrain/TerrainRenderer.js +1 -1
  148. package/views/3d/terrain/TerrainSurface.js +1 -1
  149. package/views/3d/terrain/TileAgent.js +1 -1
  150. package/views/3d/webgl-engine/Stage.js +1 -1
  151. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  152. package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -26
  153. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +18 -21
  154. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js +5 -5
  155. package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js +10 -12
  156. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +22 -25
  157. package/views/3d/webgl-engine/effects/RenderPluginContext.js +2 -0
  158. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  159. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  160. package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +3 -3
  161. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  162. package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
  163. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  164. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  165. package/views/3d/webgl-engine/lib/edgeRendering/EdgeUtil.glsl.js +30 -35
  166. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  167. package/views/3d/webgl-engine/shaders/EmissiveTechniqueConfiguration.js +1 -1
  168. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +62 -53
  169. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  170. package/views/VideoView.d.ts +10 -0
  171. package/views/VideoView.js +1 -1
  172. package/views/layers/LayerView.d.ts +10 -2
  173. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +2 -2
  174. package/widgets/Editor/EditorViewModel.d.ts +10 -12
  175. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  176. package/widgets/FeatureTable/support/EditableColumnTemplateMixin.js +1 -1
  177. package/widgets/OrientedImageryViewer/ImageMeasurementWorker.js +1 -1
  178. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  179. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  180. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  181. package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +2 -0
  182. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  183. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  184. package/widgets/support/iconUtils.js +1 -1
  185. package/assets/esri/core/workers/chunks/010f57ec7fdbedf78d02.js +0 -1
  186. package/assets/esri/core/workers/chunks/03f33cb78b5405ab7e23.js +0 -1
  187. package/assets/esri/core/workers/chunks/0487e1d7a7cecf7c1c25.js +0 -1
  188. package/assets/esri/core/workers/chunks/09300e74e5b014ce6269.js +0 -1
  189. package/assets/esri/core/workers/chunks/0d9c4c6c571ce26d356b.js +0 -1
  190. package/assets/esri/core/workers/chunks/112ed86f812e4400a7e0.js +0 -1
  191. package/assets/esri/core/workers/chunks/151e5799ede763a03ee2.js +0 -1
  192. package/assets/esri/core/workers/chunks/173f89c55a5c79ff065b.js +0 -1
  193. package/assets/esri/core/workers/chunks/2447d2e2a4a3ab8fcf94.js +0 -1
  194. package/assets/esri/core/workers/chunks/2a36fe3f3f257a779a1b.js +0 -1
  195. package/assets/esri/core/workers/chunks/2a97268000c6d03ef720.js +0 -1
  196. package/assets/esri/core/workers/chunks/2cf8172be83b10b11bdc.js +0 -1
  197. package/assets/esri/core/workers/chunks/2df37a9a95ceebb87a5f.js +0 -1
  198. package/assets/esri/core/workers/chunks/2e00c155e447e4930442.js +0 -1
  199. package/assets/esri/core/workers/chunks/2f91fd61019d2a37476d.js +0 -1
  200. package/assets/esri/core/workers/chunks/30af63b3b750142faadb.js +0 -1
  201. package/assets/esri/core/workers/chunks/3a47fc97c400fca2c736.js +0 -1
  202. package/assets/esri/core/workers/chunks/3cd04d23b73beaf79650.js +0 -1
  203. package/assets/esri/core/workers/chunks/426b4eb500fdfe9df325.js +0 -1
  204. package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +0 -1
  205. package/assets/esri/core/workers/chunks/47c97640ec525676918b.js +0 -1
  206. package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +0 -1
  207. package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +0 -1
  208. package/assets/esri/core/workers/chunks/4cb751dc8d00bdaeb04c.js +0 -1
  209. package/assets/esri/core/workers/chunks/518ab22f80c3300bcfff.js +0 -1
  210. package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +0 -1
  211. package/assets/esri/core/workers/chunks/58609bf94f72bc4f1952.js +0 -1
  212. package/assets/esri/core/workers/chunks/586a929bc037e23857af.js +0 -1
  213. package/assets/esri/core/workers/chunks/5c7780f804d789cb37f5.js +0 -1
  214. package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +0 -1
  215. package/assets/esri/core/workers/chunks/603fdbbe9534c614928f.js +0 -1
  216. package/assets/esri/core/workers/chunks/611e3cdf67283c11576f.js +0 -1
  217. package/assets/esri/core/workers/chunks/6431480ba0fa8c8d487f.js +0 -1
  218. package/assets/esri/core/workers/chunks/652faf4359ac072c5dde.js +0 -1
  219. package/assets/esri/core/workers/chunks/65c98f3449044fa4fd79.js +0 -1
  220. package/assets/esri/core/workers/chunks/6b9961261241fdce0e94.js +0 -1
  221. package/assets/esri/core/workers/chunks/6dfe96b056bec30068df.js +0 -1
  222. package/assets/esri/core/workers/chunks/6f897b4e7ddd1dd1672b.js +0 -1
  223. package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +0 -1
  224. package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +0 -29
  225. package/assets/esri/core/workers/chunks/7393f63043a1da3d05a6.js +0 -1
  226. package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +0 -1
  227. package/assets/esri/core/workers/chunks/75d551a449bba61ce238.js +0 -1
  228. package/assets/esri/core/workers/chunks/76e27e36050a3dd9d249.js +0 -1
  229. package/assets/esri/core/workers/chunks/76f877e2d2493d56afab.js +0 -1
  230. package/assets/esri/core/workers/chunks/7748c2886d0122b40eeb.js +0 -1
  231. package/assets/esri/core/workers/chunks/78643f116677950ea29a.js +0 -1
  232. package/assets/esri/core/workers/chunks/78fbe330f16bdbdb886e.js +0 -1
  233. package/assets/esri/core/workers/chunks/7e0f04a5038e2a4f6e4b.js +0 -1
  234. package/assets/esri/core/workers/chunks/7f16ae01ccd9b6114d1c.js +0 -1
  235. package/assets/esri/core/workers/chunks/90153b5230b3a4985c14.js +0 -1
  236. package/assets/esri/core/workers/chunks/9189dfe19a2a2ccd5173.js +0 -1
  237. package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +0 -1
  238. package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +0 -1
  239. package/assets/esri/core/workers/chunks/99f51d5d9da6e9bfc430.js +0 -1
  240. package/assets/esri/core/workers/chunks/9aebe876b1a2fb075f9c.js +0 -1
  241. package/assets/esri/core/workers/chunks/9b6929faf649e81265fb.js +0 -1
  242. package/assets/esri/core/workers/chunks/9dd48e75b4e8d9811d81.js +0 -1
  243. package/assets/esri/core/workers/chunks/a163c6005aba3378edaa.js +0 -1
  244. package/assets/esri/core/workers/chunks/a8286febe371dc186aaa.js +0 -1
  245. package/assets/esri/core/workers/chunks/acb265a22be5e12f38e5.js +0 -1
  246. package/assets/esri/core/workers/chunks/b12acf1f694f82e00df9.js +0 -1
  247. package/assets/esri/core/workers/chunks/b83cef2d3f528726d492.js +0 -1
  248. package/assets/esri/core/workers/chunks/b9596d862da1ec342cd3.js +0 -1
  249. package/assets/esri/core/workers/chunks/bc1fcc9c897461e68e29.js +0 -1
  250. package/assets/esri/core/workers/chunks/bdc221d94300c225665a.js +0 -1
  251. package/assets/esri/core/workers/chunks/be97a629e2ae4d13ceb3.js +0 -1
  252. package/assets/esri/core/workers/chunks/bfb39590c548188f5052.js +0 -1
  253. package/assets/esri/core/workers/chunks/c2318c014e97ba519be8.js +0 -1
  254. package/assets/esri/core/workers/chunks/c62237c344e341619341.js +0 -1
  255. package/assets/esri/core/workers/chunks/cdb5c26fed7d9a97db49.js +0 -1
  256. package/assets/esri/core/workers/chunks/cdf0c7706d3e1221f49b.js +0 -1
  257. package/assets/esri/core/workers/chunks/cea0db3ee326f60610eb.js +0 -1
  258. package/assets/esri/core/workers/chunks/d7f2f1708d2a2668676c.js +0 -1
  259. package/assets/esri/core/workers/chunks/daf9b691817e83a11f3c.js +0 -1
  260. package/assets/esri/core/workers/chunks/db41490bd39d863305bf.js +0 -1
  261. package/assets/esri/core/workers/chunks/ddc95cdac6c06fc4794c.js +0 -1
  262. package/assets/esri/core/workers/chunks/df26ec0b508cf4716e0a.js +0 -1
  263. package/assets/esri/core/workers/chunks/e11159e3dc3353b27c57.js +0 -1
  264. package/assets/esri/core/workers/chunks/e4a57a0a9629faafd6c6.js +0 -1
  265. package/assets/esri/core/workers/chunks/ebc1a2ef3aed8aa29424.js +0 -1
  266. package/assets/esri/core/workers/chunks/ec1c4d66142b6efb0e8b.js +0 -1
  267. package/assets/esri/core/workers/chunks/ef12fa3574d4cbf8b084.js +0 -1
  268. package/assets/esri/core/workers/chunks/f2d56f5c15d5977e1d19.js +0 -1
  269. package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +0 -1
  270. package/assets/esri/core/workers/chunks/f905f1a1aa4c123cbe83.js +0 -1
  271. package/assets/esri/core/workers/chunks/fc139f251dc0523074e7.js +0 -1
  272. package/assets/esri/themes/base/widgets/_VideoPlayer.scss +0 -129
  273. package/assets/esri/widgets/VideoPlayer/t9n/messages.ar.json +0 -1
  274. package/assets/esri/widgets/VideoPlayer/t9n/messages.bg.json +0 -1
  275. package/assets/esri/widgets/VideoPlayer/t9n/messages.bs.json +0 -1
  276. package/assets/esri/widgets/VideoPlayer/t9n/messages.ca.json +0 -1
  277. package/assets/esri/widgets/VideoPlayer/t9n/messages.cs.json +0 -1
  278. package/assets/esri/widgets/VideoPlayer/t9n/messages.da.json +0 -1
  279. package/assets/esri/widgets/VideoPlayer/t9n/messages.de.json +0 -1
  280. package/assets/esri/widgets/VideoPlayer/t9n/messages.el.json +0 -1
  281. package/assets/esri/widgets/VideoPlayer/t9n/messages.en.json +0 -1
  282. package/assets/esri/widgets/VideoPlayer/t9n/messages.es.json +0 -1
  283. package/assets/esri/widgets/VideoPlayer/t9n/messages.et.json +0 -1
  284. package/assets/esri/widgets/VideoPlayer/t9n/messages.fi.json +0 -1
  285. package/assets/esri/widgets/VideoPlayer/t9n/messages.fr.json +0 -1
  286. package/assets/esri/widgets/VideoPlayer/t9n/messages.he.json +0 -1
  287. package/assets/esri/widgets/VideoPlayer/t9n/messages.hr.json +0 -1
  288. package/assets/esri/widgets/VideoPlayer/t9n/messages.hu.json +0 -1
  289. package/assets/esri/widgets/VideoPlayer/t9n/messages.id.json +0 -1
  290. package/assets/esri/widgets/VideoPlayer/t9n/messages.it.json +0 -1
  291. package/assets/esri/widgets/VideoPlayer/t9n/messages.ja.json +0 -1
  292. package/assets/esri/widgets/VideoPlayer/t9n/messages.ko.json +0 -1
  293. package/assets/esri/widgets/VideoPlayer/t9n/messages.lt.json +0 -1
  294. package/assets/esri/widgets/VideoPlayer/t9n/messages.lv.json +0 -1
  295. package/assets/esri/widgets/VideoPlayer/t9n/messages.nl.json +0 -1
  296. package/assets/esri/widgets/VideoPlayer/t9n/messages.no.json +0 -1
  297. package/assets/esri/widgets/VideoPlayer/t9n/messages.pl.json +0 -1
  298. package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-BR.json +0 -1
  299. package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-PT.json +0 -1
  300. package/assets/esri/widgets/VideoPlayer/t9n/messages.ro.json +0 -1
  301. package/assets/esri/widgets/VideoPlayer/t9n/messages.ru.json +0 -1
  302. package/assets/esri/widgets/VideoPlayer/t9n/messages.sk.json +0 -1
  303. package/assets/esri/widgets/VideoPlayer/t9n/messages.sl.json +0 -1
  304. package/assets/esri/widgets/VideoPlayer/t9n/messages.sr.json +0 -1
  305. package/assets/esri/widgets/VideoPlayer/t9n/messages.sv.json +0 -1
  306. package/assets/esri/widgets/VideoPlayer/t9n/messages.th.json +0 -1
  307. package/assets/esri/widgets/VideoPlayer/t9n/messages.tr.json +0 -1
  308. package/assets/esri/widgets/VideoPlayer/t9n/messages.uk.json +0 -1
  309. package/assets/esri/widgets/VideoPlayer/t9n/messages.vi.json +0 -1
  310. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-CN.json +0 -1
  311. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-HK.json +0 -1
  312. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-TW.json +0 -1
  313. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +0 -232
  314. package/widgets/VideoPlayer/VideoPlayerViewModel.js +0 -2
  315. package/widgets/VideoPlayer/components/MetadataSection.js +0 -2
  316. package/widgets/VideoPlayer/components/PlayerActionsGroup.js +0 -2
  317. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +0 -2
  318. package/widgets/VideoPlayer/components/SettingsButton.js +0 -2
  319. package/widgets/VideoPlayer/css.js +0 -2
  320. package/widgets/VideoPlayer.d.ts +0 -119
  321. package/widgets/VideoPlayer.js +0 -2
@@ -1,29 +1,26 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{invert as e,translate as t}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{VisualVariables as r}from"../shading/VisualVariables.glsl.js";import{ScreenSizePerspective as i,addScreenSizePerspective as a}from"../util/ScreenSizePerspective.glsl.js";import{addCameraPosition as o}from"../util/View.glsl.js";import{Float3PassUniform as s}from"../../shaderModules/Float3PassUniform.js";import{FloatPassUniform as c}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as l}from"../../shaderModules/FloatsPassUniform.js";import{glsl as u,If as d}from"../../shaderModules/glsl.js";import{Matrix4DrawUniform as f}from"../../shaderModules/Matrix4DrawUniform.js";function p(n,p){let{vertex:h}=n;h.uniforms.add(new c(`intrinsicWidth`,e=>e.width));let{hasScreenSizePerspective:g,spherical:_}=p;g?(n.include(i,p),a(h),o(h,p),h.uniforms.add(new f(`inverseViewMatrix`,(n,r)=>e(m,t(m,r.camera.viewMatrix,n.origin)))),h.code.add(u`
3
- float applyLineSizeScreenSizePerspective(float size, vec3 pos) {
4
- vec3 worldPos = (inverseViewMatrix * vec4(pos, 1)).xyz;
5
- vec3 groundUp = ${_?u`normalize(worldPos + localOrigin)`:u`vec3(0.0, 0.0, 1.0)`};
6
- float absCosAngle = abs(dot(groundUp, normalize(worldPos - cameraPosition)));
7
-
8
- return screenSizePerspectiveScaleFloat(size, absCosAngle, length(pos), screenSizePerspective);
9
- }
10
- `)):h.code.add(u`float applyLineSizeScreenSizePerspective(float size, vec3 pos) {
2
+ import{invert as e,translate as t}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as n}from"../../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{getLocalUp as r}from"../shading/getLocalUp.glsl.js";import{VisualVariables as i}from"../shading/VisualVariables.glsl.js";import{ScreenSizePerspective as a,addScreenSizePerspective as o}from"../util/ScreenSizePerspective.glsl.js";import{addCameraPosition as s}from"../util/View.glsl.js";import{Float3PassUniform as c}from"../../shaderModules/Float3PassUniform.js";import{FloatPassUniform as l}from"../../shaderModules/FloatPassUniform.js";import{FloatsPassUniform as u}from"../../shaderModules/FloatsPassUniform.js";import{glsl as d,If as f}from"../../shaderModules/glsl.js";import{Matrix4DrawUniform as p}from"../../shaderModules/Matrix4DrawUniform.js";function m(n,m){let{vertex:g}=n;g.uniforms.add(new l(`intrinsicWidth`,e=>e.width));let{hasScreenSizePerspective:_}=m;_?(g.include(r,m),n.include(a,m),o(g),s(g,m),g.uniforms.add(new p(`inverseViewMatrix`,(n,r)=>e(h,t(h,r.camera.viewMatrix,n.origin)))),g.code.add(d`float applyLineSizeScreenSizePerspective(float size, vec3 pos) {
3
+ vec3 worldPos = (inverseViewMatrix * vec4(pos, 1)).xyz;
4
+ vec3 groundUp = getLocalUp(worldPos, localOrigin);
5
+ float absCosAngle = abs(dot(groundUp, normalize(worldPos - cameraPosition)));
6
+ return screenSizePerspectiveScaleFloat(size, absCosAngle, length(pos), screenSizePerspective);
7
+ }`)):g.code.add(d`float applyLineSizeScreenSizePerspective(float size, vec3 pos) {
11
8
  return size;
12
- }`),p.hasVVSize?(h.uniforms.add(new s(`vvSizeMinSize`,e=>e.vvSize.minSize),new s(`vvSizeMaxSize`,e=>e.vvSize.maxSize),new s(`vvSizeOffset`,e=>e.vvSize.offset),new s(`vvSizeFactor`,e=>e.vvSize.factor),new s(`vvSizeFallback`,e=>e.vvSize.fallback)),h.code.add(u`
13
- float getSize(${d(g,`vec3 pos`)}) {
14
- float value = ${h.inputs.get(`sizeFeatureAttribute`)};
9
+ }`),m.hasVVSize?(g.uniforms.add(new c(`vvSizeMinSize`,e=>e.vvSize.minSize),new c(`vvSizeMaxSize`,e=>e.vvSize.maxSize),new c(`vvSizeOffset`,e=>e.vvSize.offset),new c(`vvSizeFactor`,e=>e.vvSize.factor),new c(`vvSizeFallback`,e=>e.vvSize.fallback)),g.code.add(d`
10
+ float getSize(${f(_,`vec3 pos`)}) {
11
+ float value = ${g.inputs.get(`sizeFeatureAttribute`)};
15
12
  float size = isnan(value)
16
13
  ? vvSizeFallback.x
17
14
  : intrinsicWidth * clamp(vvSizeOffset + value * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).x;
18
15
 
19
- return ${d(g,`applyLineSizeScreenSizePerspective(size, pos)`,`size`)};
16
+ return ${f(_,`applyLineSizeScreenSizePerspective(size, pos)`,`size`)};
20
17
  }
21
- `)):h.code.add(u`
22
- float getSize(${d(g,`vec3 pos`)}) {
23
- float fullSize = intrinsicWidth * ${h.inputs.get(`size`)};
24
- return ${d(g,`applyLineSizeScreenSizePerspective(fullSize, pos)`,`fullSize`)};
18
+ `)):g.code.add(d`
19
+ float getSize(${f(_,`vec3 pos`)}) {
20
+ float fullSize = intrinsicWidth * ${g.inputs.get(`size`)};
21
+ return ${f(_,`applyLineSizeScreenSizePerspective(fullSize, pos)`,`fullSize`)};
25
22
  }
26
- `),p.hasVVOpacity?(h.constants.add(`vvOpacityNumber`,`int`,8),h.uniforms.add(new l(`vvOpacityValues`,8,e=>e.vvOpacity.values),new l(`vvOpacityOpacities`,8,e=>e.vvOpacity.opacityValues),new c(`vvOpacityFallback`,e=>e.vvOpacity.fallback,{supportsNaN:!0})),h.code.add(u`
23
+ `),m.hasVVOpacity?(g.constants.add(`vvOpacityNumber`,`int`,8),g.uniforms.add(new u(`vvOpacityValues`,8,e=>e.vvOpacity.values),new u(`vvOpacityOpacities`,8,e=>e.vvOpacity.opacityValues),new l(`vvOpacityFallback`,e=>e.vvOpacity.fallback,{supportsNaN:!0})),g.code.add(d`
27
24
  float interpolateOpacity(float value) {
28
25
  if (value <= vvOpacityValues[0]) {
29
26
  return vvOpacityOpacities[0];
@@ -40,19 +37,19 @@ return size;
40
37
  }
41
38
 
42
39
  vec4 applyOpacity(vec4 color) {
43
- float value = ${h.inputs.get(`opacityFeatureAttribute`)};
40
+ float value = ${g.inputs.get(`opacityFeatureAttribute`)};
44
41
  if (isnan(value)) {
45
42
  // If there is a color vv then it will already have taken care of applying the fallback
46
- return ${d(p.hasVVColor,`color`,`vec4(color.rgb, vvOpacityFallback)`)};
43
+ return ${f(m.hasVVColor,`color`,`vec4(color.rgb, vvOpacityFallback)`)};
47
44
  }
48
45
 
49
46
  return vec4(color.rgb, interpolateOpacity(value));
50
47
  }
51
- `)):h.code.add(u`vec4 applyOpacity(vec4 color) {
48
+ `)):g.code.add(d`vec4 applyOpacity(vec4 color) {
52
49
  return color;
53
- }`),p.hasVVColor?(n.include(r,p),h.code.add(u`
50
+ }`),m.hasVVColor?(n.include(i,m),g.code.add(d`
54
51
  vec4 getColor() {
55
- vec4 color = interpolateVVColor(${h.inputs.get(`colorFeatureAttribute`)});
52
+ vec4 color = interpolateVVColor(${g.inputs.get(`colorFeatureAttribute`)});
56
53
 
57
54
  // if we encounter NaN in the color it means the color is in the fallback case where the symbol color
58
55
  // is not defined and there is no valid color visual variable override. In this case just return a fully
@@ -63,8 +60,8 @@ return color;
63
60
 
64
61
  return applyOpacity(color);
65
62
  }
66
- `)):h.code.add(u`
63
+ `)):g.code.add(d`
67
64
  vec4 getColor() {
68
- return applyOpacity(${h.inputs.get(`color`)});
65
+ return applyOpacity(${g.inputs.get(`color`)});
69
66
  }
70
- `)}const m=n();export{p as RibbonVertexPosition};
67
+ `)}const h=n();export{m as RibbonVertexPosition};
@@ -1,27 +1,27 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as t}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{projMatrix as n}from"../util/cameraUniforms.js";import{DoublePrecision as r}from"../util/DoublePrecision.glsl.js";import{Float3DrawUniform as i}from"../../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as a}from"../../shaderModules/Float3PassUniform.js";import{If as o,glsl as s}from"../../shaderModules/glsl.js";import{IntegerDrawUniform as c}from"../../shaderModules/IntegerDrawUniform.js";import{Matrix3DrawUniform as l}from"../../shaderModules/Matrix3DrawUniform.js";import{Matrix3PassUniform as u}from"../../shaderModules/Matrix3PassUniform.js";import{Texture2DPassUniform as d}from"../../shaderModules/Texture2DPassUniform.js";import{ViewingModeConfiguration as f}from"../../../materials/ViewingModeConfiguration.js";import{NoParameters as p}from"../../../../../webgl/NoParameters.js";class m extends f{}function h(e,t){let{attributes:f,vertex:p,varyings:m,fragment:h}=e;p.include(r),f.add(`position`,`vec3`),m.add(`vPositionWorldCameraRelative`,`vec3`),m.add(`vPosition_view`,`vec3`,{invariant:!0}),p.uniforms.add(new a(`transformWorldFromViewTH`,e=>e.transformWorldFromViewTH),new a(`transformWorldFromViewTL`,e=>e.transformWorldFromViewTL),new u(`transformViewFromCameraRelativeRS`,e=>e.transformViewFromCameraRelativeRS),n);let{vertexPositionRotationType:g,useTransformationTexture:_}=t,v=g===1,y=g===2,b=v||y;_?p.uniforms.add(new c(`transformationDrawId`,e=>e.transformationDrawId),new d(`transformationTexture`,e=>e.transformationTexture)):(p.uniforms.add(new i(`transformWorldFromModelTH`,e=>e.transformWorldFromModelTH),new i(`transformWorldFromModelTL`,e=>e.transformWorldFromModelTL)),b&&p.uniforms.add(new l(`transformWorldFromModelRS`,e=>e.transformWorldFromModelRS))),p.code.add(s`
3
- ${o(b,s`
2
+ import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{create as t}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getLocalUp as n}from"../shading/getLocalUp.glsl.js";import{projMatrix as r}from"../util/cameraUniforms.js";import{DoublePrecision as i}from"../util/DoublePrecision.glsl.js";import{Float3DrawUniform as a}from"../../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as o}from"../../shaderModules/Float3PassUniform.js";import{If as s,glsl as c}from"../../shaderModules/glsl.js";import{IntegerDrawUniform as l}from"../../shaderModules/IntegerDrawUniform.js";import{Matrix3DrawUniform as u}from"../../shaderModules/Matrix3DrawUniform.js";import{Matrix3PassUniform as d}from"../../shaderModules/Matrix3PassUniform.js";import{Texture2DPassUniform as f}from"../../shaderModules/Texture2DPassUniform.js";import{ViewingModeConfiguration as p}from"../../../materials/ViewingModeConfiguration.js";import{NoParameters as m}from"../../../../../webgl/NoParameters.js";class h extends p{}function g(e,t){let{attributes:p,vertex:m,varyings:h,fragment:g}=e;m.include(i),m.include(n,t),p.add(`position`,`vec3`),h.add(`vPositionWorldCameraRelative`,`vec3`),h.add(`vPosition_view`,`vec3`,{invariant:!0}),m.uniforms.add(new o(`transformWorldFromViewTH`,e=>e.transformWorldFromViewTH),new o(`transformWorldFromViewTL`,e=>e.transformWorldFromViewTL),new d(`transformViewFromCameraRelativeRS`,e=>e.transformViewFromCameraRelativeRS),r);let{vertexPositionRotationType:_,useTransformationTexture:v}=t,y=_===1,b=_===2,x=y||b;v?m.uniforms.add(new l(`transformationDrawId`,e=>e.transformationDrawId),new f(`transformationTexture`,e=>e.transformationTexture)):(m.uniforms.add(new a(`transformWorldFromModelTH`,e=>e.transformWorldFromModelTH),new a(`transformWorldFromModelTL`,e=>e.transformWorldFromModelTL)),x&&m.uniforms.add(new u(`transformWorldFromModelRS`,e=>e.transformWorldFromModelRS))),m.code.add(c`
3
+ ${s(x,c`
4
4
  mat3 modelTransformation() {
5
- ${o(_,s`
5
+ ${s(v,c`
6
6
  return mat3(
7
7
  texelFetch(transformationTexture, ivec2(2, transformationDrawId), 0).xyz,
8
8
  texelFetch(transformationTexture, ivec2(3, transformationDrawId), 0).xyz,
9
9
  texelFetch(transformationTexture, ivec2(4, transformationDrawId), 0).xyz
10
- );`,s`return transformWorldFromModelRS;`)}
10
+ );`,c`return transformWorldFromModelRS;`)}
11
11
  }
12
12
  `)}
13
13
 
14
14
  vec3 originL() {
15
- return ${o(_,s`texelFetch(transformationTexture, ivec2(0, transformationDrawId), 0).xyz;`,s`transformWorldFromModelTL;`)}
15
+ return ${s(v,c`texelFetch(transformationTexture, ivec2(0, transformationDrawId), 0).xyz;`,c`transformWorldFromModelTL;`)}
16
16
  }
17
17
 
18
18
  vec3 originH() {
19
- return ${o(_,s`texelFetch(transformationTexture, ivec2(1, transformationDrawId), 0).xyz;`,s`transformWorldFromModelTH;`)};
19
+ return ${s(v,c`texelFetch(transformationTexture, ivec2(1, transformationDrawId), 0).xyz;`,c`transformWorldFromModelTH;`)};
20
20
  }
21
21
 
22
22
  vec3 positionWorldCameraRelative() {
23
23
 
24
- vec3 rotatedModelPosition = ${o(v,s`modelTransformation() *`)} position;
24
+ vec3 rotatedModelPosition = ${s(y,c`modelTransformation() *`)} position;
25
25
 
26
26
  vec3 transform_CameraRelativeFromModel = dpAdd(
27
27
  originL(),
@@ -34,20 +34,17 @@ import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/mat3f6
34
34
  }
35
35
 
36
36
  vec3 positionForDraping() {
37
- return ${o(y,s`modelTransformation() *`)} position;
37
+ return ${s(b,c`modelTransformation() *`)} position;
38
38
  }
39
- `),p.code.add(s`
40
- void forwardPosition(float fOffset) {
41
- vPositionWorldCameraRelative = positionWorldCameraRelative();
42
- if (fOffset != 0.0) {
43
- vPositionWorldCameraRelative += fOffset * ${t.spherical?s`normalize(transformWorldFromViewTL + vPositionWorldCameraRelative)`:s`vec3(0.0, 0.0, 1.0)`};
44
- }
45
-
46
- vPosition_view = transformViewFromCameraRelativeRS * vPositionWorldCameraRelative;
47
- gl_Position = proj * vec4(vPosition_view, 1.0);
48
- }
49
- `),h.uniforms.add(new a(`transformWorldFromViewTL`,e=>e.transformWorldFromViewTL)),p.code.add(s`vec3 positionWorld() {
39
+ `),m.code.add(c`void forwardPosition(float fOffset) {
40
+ vPositionWorldCameraRelative = positionWorldCameraRelative();
41
+ if (fOffset != 0.0) {
42
+ vPositionWorldCameraRelative += fOffset * getLocalUp(vPositionWorldCameraRelative, transformWorldFromViewTL);
43
+ }
44
+ vPosition_view = transformViewFromCameraRelativeRS * vPositionWorldCameraRelative;
45
+ gl_Position = proj * vec4(vPosition_view, 1.0);
46
+ }`),g.uniforms.add(new o(`transformWorldFromViewTL`,e=>e.transformWorldFromViewTL)),m.code.add(c`vec3 positionWorld() {
50
47
  return transformWorldFromViewTL + vPositionWorldCameraRelative;
51
- }`),h.code.add(s`vec3 positionWorld() {
48
+ }`),g.code.add(c`vec3 positionWorld() {
52
49
  return transformWorldFromViewTL + vPositionWorldCameraRelative;
53
- }`)}class g extends p{constructor(){super(...arguments),this.transformWorldFromViewTH=t(),this.transformWorldFromViewTL=t(),this.transformViewFromCameraRelativeRS=e()}}class _ extends p{constructor(){super(...arguments),this.transformWorldFromModelRS=e(),this.transformWorldFromModelTH=t(),this.transformWorldFromModelTL=t(),this.transformationDrawId=0}}export{h as VertexPosition,m as VertexPositionConfiguration,_ as VertexPositionDrawParameters,g as VertexPositionPassParameters};
50
+ }`)}class _ extends m{constructor(){super(...arguments),this.transformWorldFromViewTH=t(),this.transformWorldFromViewTL=t(),this.transformViewFromCameraRelativeRS=e()}}class v extends m{constructor(){super(...arguments),this.transformWorldFromModelRS=e(),this.transformWorldFromModelTH=t(),this.transformWorldFromModelTL=t(),this.transformationDrawId=0}}export{g as VertexPosition,h as VertexPositionConfiguration,v as VertexPositionDrawParameters,_ as VertexPositionPassParameters};
@@ -1,11 +1,11 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{pt2px as e}from"../../../../../../core/screenUtils.js";import{set as t}from"../../../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as n}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSizePerspective as r,addScreenSizePerspectiveAlignment as i}from"../util/ScreenSizePerspective.glsl.js";import{addCameraPosition as a}from"../util/View.glsl.js";import{Float4PassUniform as o}from"../../shaderModules/Float4PassUniform.js";import{glsl as s}from"../../shaderModules/glsl.js";class c{constructor(t){this.screenLength=e(t.screenLength),this.minWorldLength=t.minWorldLength??0,this.maxWorldLength=t.maxWorldLength??1/0}}function l(e,t){let n=e.vertex;t.hasVerticalOffset?(d(n),t.hasScreenSizePerspective&&(e.include(r),i(n),a(e.vertex,t)),n.code.add(s`
2
+ import{pt2px as e}from"../../../../../../core/screenUtils.js";import{set as t}from"../../../../../../core/libs/gl-matrix-2/math/vec4.js";import{create as n}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{getLocalUp as r}from"../shading/getLocalUp.glsl.js";import{ScreenSizePerspective as i,addScreenSizePerspectiveAlignment as a}from"../util/ScreenSizePerspective.glsl.js";import{addCameraPosition as o}from"../util/View.glsl.js";import{Float4PassUniform as s}from"../../shaderModules/Float4PassUniform.js";import{glsl as c}from"../../shaderModules/glsl.js";class l{constructor(t){this.screenLength=e(t.screenLength),this.minWorldLength=t.minWorldLength??0,this.maxWorldLength=t.maxWorldLength??1/0}}function u(e,t){let n=e.vertex;t.hasVerticalOffset?(n.include(r,t),f(n),t.hasScreenSizePerspective&&(e.include(i),a(n),o(e.vertex,t)),n.code.add(c`
3
3
  vec3 calculateVerticalOffset(vec3 worldPos, vec3 localOrigin) {
4
4
  float viewDistance = length((view * vec4(worldPos, 1.0)).xyz);
5
- ${t.spherical?s`vec3 worldNormal = normalize(worldPos + localOrigin);`:s`vec3 worldNormal = vec3(0.0, 0.0, 1.0);`}
6
- ${t.hasScreenSizePerspective?s`
5
+ vec3 worldNormal = getLocalUp(worldPos, localOrigin);
6
+ ${t.hasScreenSizePerspective?c`
7
7
  float cosAngle = dot(worldNormal, normalize(worldPos - cameraPosition));
8
- float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);`:s`
8
+ float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);`:c`
9
9
  float verticalOffsetScreenHeight = verticalOffset.x;`}
10
10
  // Screen sized offset in world space, used for example for line callouts
11
11
  float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * viewDistance, verticalOffset.z, verticalOffset.w);
@@ -15,4 +15,4 @@ import{pt2px as e}from"../../../../../../core/screenUtils.js";import{set as t}fr
15
15
  vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) {
16
16
  return worldPos + calculateVerticalOffset(worldPos, localOrigin);
17
17
  }
18
- `)):n.code.add(s`vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) { return worldPos; }`)}const u=n();function d(e){e.uniforms.add(new o(`verticalOffset`,(e,n)=>{let{minWorldLength:r,maxWorldLength:i,screenLength:a}=e.verticalOffset,o=Math.tan(.5*n.camera.fovY)/(n.camera.fullViewport[3]*.5),s=n.camera.pixelRatio||1;return t(u,a*s,o,r,i)}))}export{l as VerticalOffset,c as VerticalOffsetParameters,d as addVerticalOffset};
18
+ `)):n.code.add(c`vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) { return worldPos; }`)}const d=n();function f(e){e.uniforms.add(new s(`verticalOffset`,(e,n)=>{let{minWorldLength:r,maxWorldLength:i,screenLength:a}=e.verticalOffset,o=Math.tan(.5*n.camera.fovY)/(n.camera.fullViewport[3]*.5),s=n.camera.pixelRatio||1;return t(d,a*s,o,r,i)}))}export{u as VerticalOffset,l as VerticalOffsetParameters,f as addVerticalOffset};
@@ -1,16 +1,14 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{clamp as e}from"../../../../../../core/mathUtils.js";import{VertexNormal as t}from"../attributes/VertexNormal.glsl.js";import{VertexPosition as n}from"../attributes/VertexPosition.glsl.js";import{FloatBindUniform as r}from"../../shaderModules/FloatBindUniform.js";import{glsl as i,If as a}from"../../shaderModules/glsl.js";function o(o,s){let c=o.fragment;switch(s.doubleSidedMode){case 0:c.code.add(i`vec3 _adjustDoublesided(vec3 normal) {
2
+ import{clamp as e}from"../../../../../../core/mathUtils.js";import{VertexNormal as t}from"../attributes/VertexNormal.glsl.js";import{VertexPosition as n}from"../attributes/VertexPosition.glsl.js";import{getLocalUp as r}from"./getLocalUp.glsl.js";import{FloatBindUniform as i}from"../../shaderModules/FloatBindUniform.js";import{glsl as a}from"../../shaderModules/glsl.js";function o(o,s){let c=o.fragment;switch(s.doubleSidedMode){case 0:c.code.add(a`vec3 _adjustDoublesided(vec3 normal) {
3
3
  return normal;
4
- }`);break;case 1:o.include(n,s),c.code.add(i`vec3 _adjustDoublesided(vec3 normal) {
4
+ }`);break;case 1:o.include(n,s),c.code.add(a`vec3 _adjustDoublesided(vec3 normal) {
5
5
  return dot(normal, vPositionWorldCameraRelative) > 0.0 ? -normal : normal;
6
- }`);break;case 2:c.code.add(i`vec3 _adjustDoublesided(vec3 normal) {
6
+ }`);break;case 2:c.code.add(a`vec3 _adjustDoublesided(vec3 normal) {
7
7
  return gl_FrontFacing ? normal : -normal;
8
- }`);break;default:s.doubleSidedMode;case 3:}switch(s.normalType){case 0:case 1:o.include(t,s),c.main.add(i`vec3 fragmentFaceNormal = _adjustDoublesided(normalize(vNormalWorld));
9
- vec3 fragmentFaceNormalView = gl_FrontFacing ? normalize(vNormalView) : -normalize(vNormalView);`);break;case 2:o.include(n,s),c.main.add(i`vec3 fragmentFaceNormal = normalize(cross(dFdx(vPositionWorldCameraRelative), dFdy(vPositionWorldCameraRelative)));
10
- vec3 fragmentFaceNormalView = normalize(cross(dFdx(vPosition_view), dFdy(vPosition_view)));`)}switch(s.shadeNormals){case 3:case 1:c.main.add(i`vec3 fragmentShadingNormal = fragmentFaceNormal;`);break;case 2:o.include(n,s),c.uniforms.add(new r(`worldUpShading`,t=>e((t.lighting.noonFactor-.9)*20,0,1))).main.add(i`
11
- vec3 fragmentShadingNormal = fragmentFaceNormal;
12
- if (worldUpShading > 0.0){
13
- vec3 worldUpNormal = ${a(s.spherical,`normalize(positionWorld())`,`vec3(0.0, 0.0, 1.0)`)};
14
- fragmentShadingNormal = mix(fragmentShadingNormal, worldUpNormal, worldUpShading);
15
- }
16
- `);break;case 0:s.spherical?(o.include(n,s),c.main.add(i`vec3 fragmentShadingNormal = normalize(positionWorld());`)):c.main.add(i`vec3 fragmentShadingNormal = vec3(0.0, 0.0, 1.0);`);break;default:s.shadeNormals}}export{o as computeFragmentNormals};
8
+ }`);break;default:s.doubleSidedMode;case 3:}switch(s.normalType){case 0:case 1:o.include(t,s),c.main.add(a`vec3 fragmentFaceNormal = _adjustDoublesided(normalize(vNormalWorld));
9
+ vec3 fragmentFaceNormalView = gl_FrontFacing ? normalize(vNormalView) : -normalize(vNormalView);`);break;case 2:o.include(n,s),c.main.add(a`vec3 fragmentFaceNormal = normalize(cross(dFdx(vPositionWorldCameraRelative), dFdy(vPositionWorldCameraRelative)));
10
+ vec3 fragmentFaceNormalView = normalize(cross(dFdx(vPosition_view), dFdy(vPosition_view)));`)}switch(s.shadeNormals){case 3:case 1:c.main.add(a`vec3 fragmentShadingNormal = fragmentFaceNormal;`);break;case 2:o.include(n,s),c.include(r,s),c.uniforms.add(new i(`worldUpShading`,t=>e((t.lighting.noonFactor-.9)*20,0,1))).main.add(a`vec3 fragmentShadingNormal = fragmentFaceNormal;
11
+ if (worldUpShading > 0.0){
12
+ vec3 worldUpNormal = getLocalUp(positionWorld());
13
+ fragmentShadingNormal = mix(fragmentShadingNormal, worldUpNormal, worldUpShading);
14
+ }`);break;case 0:s.spherical?(o.include(n,s),c.include(r,s),c.main.add(a`vec3 fragmentShadingNormal = getLocalUp(positionWorld());`)):c.main.add(a`vec3 fragmentShadingNormal = vec3(0.0, 0.0, 1.0);`);break;default:s.shadeNormals}}export{o as computeFragmentNormals};
@@ -1,27 +1,24 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{EvaluateAmbientLighting as e}from"./EvaluateAmbientLighting.glsl.js";import{EvaluateAmbientOcclusion as t}from"./EvaluateAmbientOcclusion.glsl.js";import{Gamma as n}from"./Gamma.glsl.js";import{mainLightDirection as r,lightingGlobalFactor as i,mainLightIntensity as a,lightingSpecularStrength as o,lightingEnvironmentStrength as s}from"./lightingUniforms.js";import{applyShading as c}from"./MainLighting.glsl.js";import{PhysicallyBasedRendering as l}from"./PhysicallyBasedRendering.glsl.js";import{PiUtils as u}from"./PiUtils.glsl.js";import{ReadGlobalIllumination as d}from"./ReadGlobalIllumination.glsl.js";import{BooleanBindUniform as f}from"../../shaderModules/BooleanBindUniform.js";import{glsl as p,If as m}from"../../shaderModules/glsl.js";import{ambientBoost as h}from"../../../lighting/SceneLighting.js";import{BlackLevelLightSoftCompression as g}from"../../../shaders/BlackLevelLightSoftCompression.glsl.js";import{ToneMapping as _}from"../../../shaders/ToneMapping.glsl.js";function v(e){e.constants.add(`ambientBoostFactor`,`float`,h)}function y(h,y){let{pbrMode:b,spherical:x,hasColorTexture:S,receiveGlobalIllumination:C}=y;h.include(n),h.include(d,y),h.include(t,y),b!==0&&h.include(l,y),h.include(e),h.include(u),h.include(_,y);let w=!(b===2&&!S);w&&h.include(g),v(h),h.uniforms.add(r,i).code.add(p`
3
- float additionalDirectedAmbientLight(float lightAlignment) {
4
- return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
5
- }
6
-
7
- float additionalDirectedAmbientLight(vec3 vPosWorld) {
8
- float lightAlignment = dot(${x?p`normalize(vPosWorld)`:p`vec3(0.0, 0.0, 1.0)`}, mainLightDirection);
9
- return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
10
- }
11
- `),h.uniforms.add(a).code.add(p`vec3 evaluateAdditionalLighting(float ambientOcclusion, vec3 vPosWorld) {
2
+ import{EvaluateAmbientLighting as e}from"./EvaluateAmbientLighting.glsl.js";import{EvaluateAmbientOcclusion as t}from"./EvaluateAmbientOcclusion.glsl.js";import{Gamma as n}from"./Gamma.glsl.js";import{getLocalUp as r}from"./getLocalUp.glsl.js";import{mainLightDirection as i,lightingGlobalFactor as a,mainLightIntensity as o,lightingSpecularStrength as s,lightingEnvironmentStrength as c}from"./lightingUniforms.js";import{applyShading as l}from"./MainLighting.glsl.js";import{PhysicallyBasedRendering as u}from"./PhysicallyBasedRendering.glsl.js";import{PiUtils as d}from"./PiUtils.glsl.js";import{ReadGlobalIllumination as f}from"./ReadGlobalIllumination.glsl.js";import{BooleanBindUniform as p}from"../../shaderModules/BooleanBindUniform.js";import{glsl as m,If as h}from"../../shaderModules/glsl.js";import{ambientBoost as g}from"../../../lighting/SceneLighting.js";import{BlackLevelLightSoftCompression as _}from"../../../shaders/BlackLevelLightSoftCompression.glsl.js";import{ToneMapping as v}from"../../../shaders/ToneMapping.glsl.js";function y(e){e.constants.add(`ambientBoostFactor`,`float`,g)}function b(g,b){let{pbrMode:x,hasColorTexture:S,receiveGlobalIllumination:C}=b;g.include(r,b),g.include(n),g.include(f,b),g.include(t,b),x!==0&&g.include(u,b),g.include(e),g.include(d),g.include(v,b);let w=!(x===2&&!S);w&&g.include(_),y(g),g.uniforms.add(i,a).code.add(m`float additionalDirectedAmbientLight(float lightAlignment) {
3
+ return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
4
+ }
5
+ float additionalDirectedAmbientLight(vec3 vPosWorld) {
6
+ float lightAlignment = dot(getLocalUp(vPosWorld), mainLightDirection);
7
+ return smoothstep(0.0, 1.0, clamp(lightAlignment * 2.5, 0.0, 1.0));
8
+ }`),g.uniforms.add(o).code.add(m`vec3 evaluateAdditionalLighting(float ambientOcclusion, vec3 vPosWorld) {
12
9
  float additionalAmbientScale = additionalDirectedAmbientLight(vPosWorld);
13
10
  return (1.0 - ambientOcclusion) * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor * mainLightIntensity;
14
- }`);let T=C?`globalIlluminationOcclusion`:`ssao`;switch(h.constants.add(`globalIlluminationDirectFactor`,`float`,C?.55:0),h.constants.add(`globalIlluminationAmbientFactor`,`float`,C?.85:1),h.constants.add(`mainLightIrradianceScale`,`float`,C?.75:1),h.constants.add(`ambientIrradianceScale`,`float`,C?1.5:1),C?(h.constants.add(`globalIlluminationOcclusionBoost`,`float`,1.2),h.constants.add(`globalIlluminationEmissionBoost`,`float`,2.25),h.constants.add(`globalIlluminationEmissionCompressionWeight`,`float`,.75),h.code.add(p`vec3 evaluateGlobalIlluminationOcclusion() {
11
+ }`);let T=C?`globalIlluminationOcclusion`:`ssao`;switch(g.constants.add(`globalIlluminationDirectFactor`,`float`,C?.55:0),g.constants.add(`globalIlluminationAmbientFactor`,`float`,C?.85:1),g.constants.add(`mainLightIrradianceScale`,`float`,C?.75:1),g.constants.add(`ambientIrradianceScale`,`float`,C?1.5:1),C?(g.constants.add(`globalIlluminationOcclusionBoost`,`float`,1.2),g.constants.add(`globalIlluminationEmissionBoost`,`float`,2.25),g.constants.add(`globalIlluminationEmissionCompressionWeight`,`float`,.75),g.code.add(m`vec3 evaluateGlobalIlluminationOcclusion() {
15
12
  return min(globalIlluminationOcclusionBoost * readGlobalIlluminationOcclusion(), 1.0);
16
13
  }
17
14
  vec3 evaluateGlobalIlluminationEmission(vec3 albedoLinear) {
18
15
  vec3 emission = globalIlluminationEmissionBoost * (0.75 * albedoLinear + 0.25) * readGlobalIlluminationEmission().rgb;
19
16
  vec3 compressedEmission = emission / (emission + 1.0);
20
17
  return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWeight);
21
- }`)):(h.constants.add(`factorDirect`,`float`,0),h.constants.add(`factorAmbient`,`float`,1)),b){case 0:case 4:case 3:h.include(c),h.code.add(p`
18
+ }`)):(g.constants.add(`factorDirect`,`float`,0),g.constants.add(`factorAmbient`,`float`,1)),x){case 0:case 4:case 3:g.include(l),g.code.add(m`
22
19
  vec3 evaluateSceneLighting(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight,
23
20
  vec3 viewDirection, vec3 upDirection) {
24
- ${m(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
21
+ ${h(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
25
22
 
26
23
  vec3 mainLighting = mainLightIrradianceScale * applyShading(normal, shadow);
27
24
  vec3 ambientLighting = ambientIrradianceScale * calculateAmbientIrradiance(normal) * (1.0 - ${T});
@@ -30,10 +27,10 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
30
27
  vec3 totalLight = mainLighting + ambientLighting + additionalLight;
31
28
  totalLight = min(totalLight, vec3(PI));
32
29
  vec3 linearColor = vec3((albedoLinear / PI) * totalLight);
33
- ${m(C,`linearColor += evaluateGlobalIlluminationEmission(albedoLinear);`)}
30
+ ${h(C,`linearColor += evaluateGlobalIlluminationEmission(albedoLinear);`)}
34
31
  return delinearizeGamma(linearColor);
35
32
  }
36
- `);break;case 1:case 2:h.constants.add(`groundReflectance`,`float`,C?.35:.2),h.code.add(p`
33
+ `);break;case 1:case 2:g.constants.add(`groundReflectance`,`float`,C?.35:.2),g.code.add(m`
37
34
  const float fillLightIntensity = 0.25;
38
35
  const float horizonLightDiffusion = 0.4;
39
36
 
@@ -41,8 +38,8 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
41
38
  vec3 viewDirection, vec3 upDirection) {
42
39
  PBRShadingInfo inputs;
43
40
  calculatePBRInputs(inputs, normal, viewDirection, upDirection, albedo);
44
- ${m(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
45
- `),y.useFillLights?h.uniforms.add(new f(`hasFillLights`,e=>e.enableFillLights)):h.constants.add(`hasFillLights`,`bool`,!1),h.code.add(p`
41
+ ${h(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
42
+ `),b.useFillLights?g.uniforms.add(new p(`hasFillLights`,e=>e.enableFillLights)):g.constants.add(`hasFillLights`,`bool`,!1),g.code.add(m`
46
43
  vec3 ambientDir = vec3( 5.0 * upDirection[1] - upDirection[0] * upDirection[2],
47
44
  -5.0 * upDirection[0] - upDirection[2] * upDirection[1],
48
45
  upDirection[1] * upDirection[1] + upDirection[0] * upDirection[0]);
@@ -64,7 +61,7 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
64
61
  inputs.skyIrradianceToSurface = ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;
65
62
  // Assemble the overall irradiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky irradiance by the groundReflectance
66
63
  inputs.groundIrradianceToSurface = groundReflectance * ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;
67
- `),h.uniforms.add(o,s).code.add(p`
64
+ `),g.uniforms.add(s,c).code.add(m`
68
65
  vec3 horizonRingDir = inputs.RdotUP * upDirection - inputs.reflectedView;
69
66
  vec3 horizonRingH = normalize(horizonRingDir - viewDirection);
70
67
  inputs.NdotH_Horizon = dot(normal, horizonRingH);
@@ -84,19 +81,19 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
84
81
 
85
82
  // Calculate average ambient radiance - This is used in the gamut mapping process to determine the black level for compression
86
83
  inputs.averageAmbientRadiance = ambientLightIrradianceComponent[1] * (1.0 + groundReflectance);
87
- `),h.constants.add(`additionalAmbientIrradianceFactor`,`float`,.02),h.code.add(p`
84
+ `),g.constants.add(`additionalAmbientIrradianceFactor`,`float`,.02),g.code.add(m`
88
85
  vec3 reflectedColorComponent = evaluateEnvironmentIllumination(inputs);
89
86
  float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
90
87
  vec3 additionalMaterialReflectanceComponent = inputs.albedoLinear * additionalAmbientIrradiance;
91
88
  vec3 linearColor = reflectedColorComponent + additionalMaterialReflectanceComponent;
92
89
 
93
- ${m(C,`linearColor += evaluateGlobalIlluminationEmission(inputs.albedoLinear);`)}
90
+ ${h(C,`linearColor += evaluateGlobalIlluminationEmission(inputs.albedoLinear);`)}
94
91
 
95
92
  ${w?`linearColor = blackLevelSoftCompression(linearColor, inputs.averageAmbientRadiance);`:`linearColor = max(vec3(0.0), linearColor - 0.005 * inputs.averageAmbientRadiance);`}
96
93
 
97
94
  return delinearizeGamma(linearColor);
98
95
  }
99
- `);break;case 5:case 6:h.constants.add(`terrainSpecularity`,`float`,C?.35:.5),h.uniforms.add(r,a).code.add(p`
96
+ `);break;case 5:case 6:g.constants.add(`terrainSpecularity`,`float`,C?.35:.5),g.uniforms.add(i,o).code.add(m`
100
97
  const float roughnessTerrain = 0.5;
101
98
 
102
99
  vec3 evaluateSceneLighting(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight,
@@ -104,7 +101,7 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
104
101
  PBRShadingInfo inputs;
105
102
  calculateSimplifiedInputs(inputs, normal, viewDirection, upDirection, albedo);
106
103
 
107
- ${m(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
104
+ ${h(C,`vec3 globalIlluminationOcclusion = evaluateGlobalIlluminationOcclusion();`)}
108
105
 
109
106
  // Applying AO to both direct and ambient lighting enhances depth perception.
110
107
  // This is an artistic choice; physically, AO should only attenuate ambient lighting.
@@ -124,11 +121,11 @@ return mix(emission, compressedEmission, globalIlluminationEmissionCompressionWe
124
121
 
125
122
  vec3 linearColor = diffuseColor + specularComponent;
126
123
 
127
- ${m(C,`linearColor += evaluateGlobalIlluminationEmission(inputs.albedoLinear);`)}
124
+ ${h(C,`linearColor += evaluateGlobalIlluminationEmission(inputs.albedoLinear);`)}
128
125
 
129
126
  return delinearizeGamma(linearColor);
130
127
  }
131
- `);break;case 7:h.code.add(p`vec3 evaluateSceneLighting(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight,
128
+ `);break;case 7:g.code.add(m`vec3 evaluateSceneLighting(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight,
132
129
  vec3 viewDirection, vec3 upDirection) {
133
130
  return albedo;
134
- }`)}}export{y as EvaluateSceneLighting,v as addAmbientBoostFactor};
131
+ }`)}}export{b as EvaluateSceneLighting,y as addAmbientBoostFactor};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ class e{constructor(e,t,n,r,i){this.renderContext=e,this.techniques=t,this.materials=n,this.controller=r,this.requestRender=i}}export{e as RenderPluginContext};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{smoothstep as t,lerp as n}from"../../../../../core/mathUtils.js";import{releaseMaybe as r}from"../../../../../core/maybe.js";import{watch as i,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{signal as o}from"../../../../../core/signal.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{add as c,normalize as l,length as u,dot as d,scale as f,lerp as p}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as m,fromValues as h}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ZEROS as g}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{heightLimit as _}from"../../../environment/weather.js";import{betaRayleigh as v,betaCombined as y}from"../atmosphere/atmosphereUtils.js";import{F as b}from"../../../../../chunks/Fog.glsl.js";import{FogTechnique as x}from"./FogTechnique.js";import{BlurEmission as S}from"../glow/BlurEmission.js";import{EmissiveTechniqueConfiguration as C}from"../../shaders/EmissiveTechniqueConfiguration.js";import{floatBlendReductionFactor as w}from"../../shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as T,SizedPixelFormat as E,ColorAttachment0 as D,DepthStencilAttachment as O}from"../../../../webgl/enums.js";const k=.9*_,A=1.1*_;let j=class extends S{constructor(){super(...arguments),this._configuration=new C,this._newParameters=new M,this._oldParameters=new M,this._fadedParameters=new M,this._parameters=this._newParameters,this._passParameters=new b}initialize(){this.addHandles([i(()=>this.view.environmentView.weather!=null,e=>e?this._enable():this._disable(),a),i(()=>this._updateFogParameters(),()=>{},a),i(()=>this._fadeFactor,e=>this._fade(e),a)])}get _fadeFactor(){return this.view.stage?.renderer.renderContext.bind.clouds.fadeFactor??1}_fade(e){let{_newParameters:t,_oldParameters:n}=this;e>=1?(this._parameters=t,this._oldParameters.copy(this._newParameters)):e<=0?this._parameters=n:(this._fadedParameters.lerp(n,t,e),this._parameters=this._fadedParameters)}_updateFogParameters(){let{weather:e}=this.view.environmentView,t=e?.type===`foggy`||e?.type===`snowy`||e?.type===`rainy`;this._newParameters.strength.value=e?.scattering??0,this._newParameters.amount.value=+!!t,(e?.type===`foggy`||e?.type===`snowy`)&&(this._newParameters.fogBrightness=z),e?.type===`rainy`&&(this._newParameters.fogBrightness=R),this._fadeFactor>=1&&this._oldParameters.copy(this._newParameters),this.requestRender(2)}get strength(){return this._parameters.strength.value*this._heightFade}get amount(){return this._parameters.amount.value*this._heightFade}get _heightFade(){let e=u(this.bindParameters.camera.eye);return 1-t(k,A,Math.abs(e-this._ellipsoid.radius))}precompile(){this._update(),this._passParameters.amount>0&&(super.precompile(),this.techniques.precompile(x,this._configuration))}get _needsEmissionBlur(){return this._configuration.hasEmissive}render(){let e=this.input,t=this._getTechnique();if(!t)return e;this._passParameters.emission=e.obtainAttachment(T),this._passParameters.inputScale=this._passParameters.emission?.attachment.descriptor.internalFormat===E.RGBA8?w:1;let n=this.renderingContext;this._passParameters.emission&&(this._renderEmissionMipMap(),this._configuration.useFloatBlend?(e.acquireColor(T,8,`emissive`),n.clearBuffer(1,g)):(this._passParameters.color=e.obtainAttachment(D),e.acquireColor(D,5),e.acquireColor(T,8,`emissive`)));let i=e.getAttachment(O);return e.attachDepth(null),n.bindFramebuffer(e.fbo),n.bindTechnique(t,this.bindParameters,this._passParameters),n.screen.draw(),this._passParameters.color=r(this._passParameters.color),this._passParameters.emission=r(this._passParameters.emission),this._passParameters.mipmapTexture=r(this._passParameters.mipmapTexture),e.attachDepth(i),this.fboCache.debugCallback?.(`fog-color`,e.fbo),e}_getTechnique(){return this.renders?this.techniques.get(x,this._configuration):null}get renders(){return this._update(),this._passParameters.amount>0}_update(){let e=this.bindParameters.camera;l(N,e.eye);let t=Math.max(0,d(N,this.bindParameters.lighting.mainLight.direction)),n=this._parameters.fogBrightness;f(this._passParameters.fogColor,I,n),f(P,I,n*.1),p(this._passParameters.fogColor,P,this._passParameters.fogColor,t);let r=u(e.eye);this._passParameters.atmosphereC=r**2-this._atmosphereRadius**2,this._passParameters.amount=this.amount,this._passParameters.strength=this._passParameters.scattering=this.strength,this._configuration.hasEmissive=this.bindParameters.hasEmission,this._configuration.useFloatBlend=this.bindParameters.useFloatBlend.value}get test(){return{parameters:this._passParameters}}};j=e([s(`esri.views.3d.webgl-engine.effects.fog.Fog`)],j);class M{constructor(){this.fogBrightness=0,this.strength=o(0),this.amount=o(0)}copy(e){this.fogBrightness=e.fogBrightness,this.strength.value=e.strength.value,this.amount.value=e.amount.value}lerp(e,t,r){this.fogBrightness=n(e.fogBrightness,t.fogBrightness,r),this.strength.value=n(e.strength.value,t.strength.value,r),this.amount.value=n(e.amount.value,t.amount.value,r)}}const N=m(),P=m(),F=h(3e-4,3e-4,3e-4),I=m();c(I,y,v),c(I,I,F),l(I,I);const L=I.reduce((e,t)=>e+t,0)/3,R=.5/L,z=1.5/L;export{j as Fog,M as FogParameters};
2
+ import{__decorate as e}from"tslib";import{smoothstep as t,lerp as n}from"../../../../../core/mathUtils.js";import{releaseMaybe as r}from"../../../../../core/maybe.js";import{watch as i,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{signal as o}from"../../../../../core/signal.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{property as c}from"../../../../../core/accessorSupport/decorators/property.js";import{add as l,normalize as u,length as d,dot as f,scale as p,lerp as m}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as h,fromValues as g}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{ZEROS as _}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{heightLimit as v}from"../../../environment/weather.js";import{betaRayleigh as y,betaCombined as b}from"../atmosphere/atmosphereUtils.js";import{F as x}from"../../../../../chunks/Fog.glsl.js";import{FogTechnique as S}from"./FogTechnique.js";import{BlurEmission as C}from"../glow/BlurEmission.js";import{EmissiveTechniqueConfiguration as w}from"../../shaders/EmissiveTechniqueConfiguration.js";import{floatBlendReductionFactor as T}from"../../shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as E,SizedPixelFormat as D,ColorAttachment0 as O,DepthStencilAttachment as k}from"../../../../webgl/enums.js";const A=.9*v,j=1.1*v;let M=class extends C{constructor(){super(...arguments),this._configuration=new w,this._newParameters=new N,this._oldParameters=new N,this._fadedParameters=new N,this._parameters=this._newParameters,this._passParameters=new x}initialize(){this._configuration.hasFog=!0,this.addHandles([i(()=>this.view.environmentView.weather!=null,e=>e?this._enable():this._disable(),a),i(()=>this._fogParameters,e=>this._updateFogParameters(e),a),i(()=>this._fadeFactor,e=>this._fade(e),a)])}get _fadeFactor(){return this.view.stage?.renderer.renderContext.bind.clouds.fadeFactor??1}_fade(e){let{_newParameters:t,_oldParameters:n}=this;e>=1?(this._parameters=t,this._oldParameters.copy(this._newParameters)):e<=0?this._parameters=n:(this._fadedParameters.lerp(n,t,e),this._parameters=this._fadedParameters)}get _fogParameters(){let e=new N,{weather:t}=this.view.environmentView,n=t?.type===`foggy`||t?.type===`snowy`||t?.type===`rainy`;switch(e.strength.value=t?.scattering??0,e.amount.value=+!!n,e.fogBrightness=this._newParameters.fogBrightness,t?.type){case`foggy`:case`snowy`:e.fogBrightness=B;break;case`rainy`:e.fogBrightness=z}let r=this._get(`_fogParameters`);return e.equals(r)?r:e}_updateFogParameters(e){this._newParameters.copy(e),this._fadeFactor>=1&&this._oldParameters.copy(this._newParameters),this.requestRender(2)}get strength(){return this._parameters.strength.value*this._heightFade}get amount(){return this._parameters.amount.value*this._heightFade}get _heightFade(){let e=d(this.bindParameters.camera.eye);return 1-t(A,j,Math.abs(e-this._ellipsoid.radius))}precompile(){this._update(),this._passParameters.amount>0&&(super.precompile(),this.techniques.precompile(S,this._configuration))}get _needsEmissionBlur(){return this._configuration.hasEmissive}render(){let e=this.input,t=this._getTechnique();if(!t)return e;this._passParameters.emission=e.obtainAttachment(E),this._passParameters.inputScale=this._passParameters.emission?.attachment.descriptor.internalFormat===D.RGBA8?T:1;let n=this.renderingContext;this._passParameters.emission&&(this._renderEmissionMipMap(),this._configuration.useFloatBlend?(e.acquireColor(E,8,`emissive`),n.clearBuffer(1,_)):(this._passParameters.color=e.obtainAttachment(O),e.acquireColor(O,5),e.acquireColor(E,8,`emissive`)));let i=e.getAttachment(k);return e.attachDepth(null),n.bindFramebuffer(e.fbo),n.bindTechnique(t,this.bindParameters,this._passParameters),n.screen.draw(),this._passParameters.color=r(this._passParameters.color),this._passParameters.emission=r(this._passParameters.emission),this._passParameters.mipmapTexture=r(this._passParameters.mipmapTexture),e.attachDepth(i),this.fboCache.debugCallback?.(`fog-color`,e.fbo),e}_getTechnique(){return this.renders?this.techniques.get(S,this._configuration):null}get renders(){return this._update(),this._passParameters.amount>0}_update(){let e=this.bindParameters.camera;u(P,e.eye);let t=Math.max(0,f(P,this.bindParameters.lighting.mainLight.direction)),n=this._parameters.fogBrightness;p(this._passParameters.fogColor,L,n),p(F,L,n*.1),m(this._passParameters.fogColor,F,this._passParameters.fogColor,t);let r=d(e.eye);this._passParameters.atmosphereC=r**2-this._atmosphereRadius**2,this._passParameters.amount=this.amount,this._passParameters.strength=this._passParameters.scattering=this.strength,this._configuration.hasEmissive=this.bindParameters.hasEmission,this._configuration.useFloatBlend=this.bindParameters.useFloatBlend.value}get test(){return{parameters:this._passParameters}}};e([c()],M.prototype,`_fogParameters`,null),M=e([s(`esri.views.3d.webgl-engine.effects.fog.Fog`)],M);class N{constructor(){this.fogBrightness=0,this.strength=o(0),this.amount=o(0)}equals(e){return e!=null&&this.fogBrightness===e.fogBrightness&&this.strength.value===e.strength.value&&this.amount.value===e.amount.value}copy(e){this.fogBrightness=e.fogBrightness,this.strength.value=e.strength.value,this.amount.value=e.amount.value}lerp(e,t,r){this.fogBrightness=n(e.fogBrightness,t.fogBrightness,r),this.strength.value=n(e.strength.value,t.strength.value,r),this.amount.value=n(e.amount.value,t.amount.value,r)}}const P=h(),F=h(),I=g(3e-4,3e-4,3e-4),L=h();l(L,b,y),l(L,L,I),u(L,L);const R=L.reduce((e,t)=>e+t,0)/3,z=.5/R,B=1.5/R;export{M as Fog,N as FogParameters};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{releaseMaybe as t}from"../../../../../core/maybe.js";import{watch as n,syncAndInitial as r}from"../../../../../core/reactiveUtils.js";import{waitRender as i}from"../../../../../core/scheduling.js";import{subclass as a}from"../../../../../core/accessorSupport/decorators.js";import{set as o}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_W as s,ZEROS as c}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{InternalRenderCategory as l}from"../../../webgl.js";import{AmbientIllumination as u}from"../AmbientIllumination.js";import{G as d}from"../../../../../chunks/GlobalIllumination.glsl.js";import{G as f}from"../../../../../chunks/GlobalIlluminationBlur.glsl.js";import{GlobalIlluminationBlurTechnique as p}from"./GlobalIlluminationBlurTechnique.js";import{GlobalIlluminationTechnique as m}from"./GlobalIlluminationTechnique.js";import{GlobalIlluminationTechniqueConfiguration as h}from"./GlobalIlluminationTechniqueConfiguration.js";import{G as g}from"../../../../../chunks/GlobalIlluminationUpscale.glsl.js";import{GlobalIlluminationUpscaleTechnique as _}from"./GlobalIlluminationUpscaleTechnique.js";import{DepthStencilAttachment as v,ColorAttachment1 as y}from"../../../../webgl/enums.js";let b=class extends u{constructor(e){super(e),this._passParameters=new d,this._drawParameters=new f,this._drawParametersUpscale=new g,this._configuration=new h,this._lastOutput=null,this._isGlobalIlluminationUpdate=!1,this._lowQualityResolutionScale=.35,this._maxFrames=256}initialize(){this.addHandles(n(()=>this._mode,e=>{e===0?this._disable():this._enable()},r))}destroy(){this._lastOutput=t(this._lastOutput)}_disable(){super._disable(),this._resetAccumulation(),this._passParameters.temporalSampleFrame=0}get hasHighQuality(){return this._mode===2}resetAccumulation(){!this._isGlobalIlluminationUpdate&&(this._passParameters.accumulatedFrames>100||!this._configuration.hasEmission)&&this._resetAccumulation()}_resetAccumulation(){this._passParameters.accumulatedFrames=0,this._lastOutput=t(this._lastOutput)}get isAccumulating(){return this.enabled&&this._passParameters.accumulatedFrames<this._maxFrames}precompile(){this.techniques.getCompiled(_)}render(e){if(this.bindParameters.frameRendererTarget===3)return null;let t=this.bindParameters.frameRendererTarget!==0;if(this._passParameters.accumulatedFrames>=this._maxFrames&&!t)return this._lastOutput?.retain(),this._lastOutput;let n=e.find(({name:e})=>e===`normals`),r=n?.getTexture(),i=n?.getTexture(v);return!r||!i||this._mode===0?this._emptyOutput:(this._configuration.hasEmission=!!this.bindParameters.reprojection.lastFrameEmission,t?this._renderOffscreen(r,i):this._renderInteractive(r,i))}_renderOffscreen(e,t){let n=this._emptyOutput,r=this._passParameters.accumulatedFrames,i=this._passParameters.temporalSampleFrame;this._passParameters.accumulatedFrames=0,this._passParameters.temporalSampleFrame=0;let a=this.techniques.get(m,this._configuration),o=this.techniques.get(p);for(;this._passParameters.accumulatedFrames<this._maxFrames;){this._passParameters.globalIllumination=n.getTexture(),this._passParameters.globalIlluminationWeights=n.getTexture(y);let r=this._renderAccumulationFrame(e,t,a,o);++this._passParameters.accumulatedFrames,n.release(),n=r}return this._passParameters.globalIllumination=null,this._passParameters.globalIlluminationWeights=null,this._passParameters.accumulatedFrames=r,this._passParameters.temporalSampleFrame=i,n}_renderInteractive(e,t){if(!this._canRender)return this._requestRender(),this._emptyOutput;let n=this._mode===1?this._lowQualityResolutionScale:1,r=this.techniques.getCompiled(m,this._configuration),i=this.techniques.getCompiled(p),a=n<1,o=a?this.techniques.getCompiled(_):null;if(!r||!i||a&&!o)return this._requestRender(),this._emptyOutput;let s=this._renderAccumulationFrame(e,t,r,i,o,n);return++this._passParameters.accumulatedFrames,this._passParameters.accumulatedFrames<this._maxFrames&&this._requestRender(),this._storeOutput(s),s}_renderAccumulationFrame(e,t,n,r,i,a=1){let s=this.bindParameters,c=this.renderingContext,{camera:u}=s;this._passParameters.normalTexture=e,this._passParameters.depthTexture=t,this._passParameters.projScale=1/u.computeScreenPixelSizeAtDistance(1),this._passParameters.resolutionScale=a,this._passParameters.glowBoost=this._glowBoost;let{fullWidth:d,fullHeight:f}=u,p=Math.max(1,Math.floor(d*a)),m=Math.max(1,Math.floor(f*a)),h=this.fboCache.acquire(p,m,`global illumination input`).acquireColor(y,2);c.bindFramebuffer(h.fbo),c.setViewport(0,0,p,m),c.bindTechnique(n,s,this._passParameters,this._drawParameters),c.screen.draw();let g=Math.max(1,Math.round(p)),_=Math.max(1,Math.round(m)),v=this.fboCache.acquire(g,_,`global illumination blur horizontal`);c.bindFramebuffer(v.fbo);let b=h.obtainAttachment(y);this._drawParameters.texture=h.getTexture(),this._drawParameters.weightTexture=b.attachment,o(this._drawParameters.blurSize,0,1/m),c.bindTechnique(r,s,this._passParameters,this._drawParameters),c.setViewport(0,0,g,_),c.screen.draw(),h.release();let x=this.fboCache.acquire(g,_,i?`global illumination blur vertical`:l.AMBIENT_ILLUMINATION);c.bindFramebuffer(x.fbo),c.setViewport(0,0,g,_),c.setClearColor(1,1,1,0),c.clear(16384),this._drawParameters.texture=v.getTexture(),this._drawParameters.weightTexture=b.attachment,o(this._drawParameters.blurSize,1/g,0),c.bindTechnique(r,s,this._passParameters,this._drawParameters),c.setViewport(0,0,g,_),c.screen.draw(),v.release(),x.attachColor(b,y),b.release();let S=x;return i&&(S=this.fboCache.acquire(d,f,l.AMBIENT_ILLUMINATION).acquireColor(y,2),c.bindFramebuffer(S.fbo),c.setViewport(0,0,d,f),c.setClearColor(1,1,1,0),c.clear(16384),this._drawParametersUpscale.colorTexture=x.getTexture(),this._drawParametersUpscale.weightTexture=x.getTexture(y),c.bindTechnique(i,s,this._passParameters,this._drawParametersUpscale),c.screen.draw(),x.release()),c.setViewport4fv(u.fullViewport),this._passParameters.temporalSampleFrame=(this._passParameters.temporalSampleFrame+1)%64,S}_requestRender(){this._isGlobalIlluminationUpdate=!0,this.requestRender(1),this._isGlobalIlluminationUpdate=!1}_storeOutput(e){this._lastOutput!==e&&(this._lastOutput=t(this._lastOutput),this._lastOutput=e,this._lastOutput.retain())}get _emptyOutput(){let e=this.renderingContext,{fullWidth:t,fullHeight:n}=this.bindParameters.camera,r=this.fboCache.acquire(t,n,l.AMBIENT_ILLUMINATION).acquireColor(y,2);return e.bindFramebuffer(r.fbo),e.setViewport(0,0,t,n),e.clearBuffer(0,s),e.clearBuffer(1,c),r}get _canRender(){let{reprojection:e,hasEmission:t,globalIllumination:n}=this.bindParameters;return(!t||!!e.lastFrameEmission)&&!!e.lastFrameDepth&&!!n}get _glowBoost(){let e=this.view.environment.lighting.glow;return e==null?0:2+3*e.intensity}get _mode(){return this._useGlobalIllumination?this.view.stage.renderer.isFeatureEnabled(10)?2:1:0}get test(){let e=this;return{get maxFrames(){return e._maxFrames},set maxFrames(t){e._maxFrames=t},get lowQualityResolutionScale(){return e._lowQualityResolutionScale},set lowQualityResolutionScale(t){e._lowQualityResolutionScale=t},passParameters:this._passParameters,configuration:this._configuration,get mode(){return e._mode},async restartAccumulation(){e.produces!==`disabled`&&(e._disable(),await i(),e._enable())}}}};b=e([a(`esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIllumination`)],b);export{b as GlobalIllumination};
2
+ import{__decorate as e}from"tslib";import{releaseMaybe as t}from"../../../../../core/maybe.js";import{watch as n,syncAndInitial as r}from"../../../../../core/reactiveUtils.js";import{waitRender as i}from"../../../../../core/scheduling.js";import{subclass as a}from"../../../../../core/accessorSupport/decorators.js";import{set as o}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{UNIT_W as s,ZEROS as c}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{InternalRenderCategory as l}from"../../../webgl.js";import{AmbientIllumination as u}from"../AmbientIllumination.js";import{G as d}from"../../../../../chunks/GlobalIllumination.glsl.js";import{G as f}from"../../../../../chunks/GlobalIlluminationBlur.glsl.js";import{GlobalIlluminationBlurTechnique as p}from"./GlobalIlluminationBlurTechnique.js";import{GlobalIlluminationTechnique as m}from"./GlobalIlluminationTechnique.js";import{GlobalIlluminationTechniqueConfiguration as h}from"./GlobalIlluminationTechniqueConfiguration.js";import{G as g}from"../../../../../chunks/GlobalIlluminationUpscale.glsl.js";import{GlobalIlluminationUpscaleTechnique as _}from"./GlobalIlluminationUpscaleTechnique.js";import{DepthStencilAttachment as v,ColorAttachment1 as y}from"../../../../webgl/enums.js";let b=class extends u{constructor(e){super(e),this._passParameters=new d,this._drawParameters=new f,this._drawParametersUpscale=new g,this._configuration=new h,this._lastOutput=null,this._isGlobalIlluminationUpdate=!1,this._lowQualityResolutionScale=.35,this._maxFrames=256}initialize(){this.addHandles(n(()=>this._mode,e=>{e===0?this._disable():this._enable()},r))}destroy(){this._lastOutput=t(this._lastOutput)}_disable(){super._disable(),this._resetAccumulation(),this._passParameters.temporalSampleFrame=0}get hasHighQuality(){return this._mode===2}resetAccumulation(){!this._isGlobalIlluminationUpdate&&(this._passParameters.accumulatedFrames>100||!this._configuration.hasEmission)&&this._resetAccumulation()}_resetAccumulation(){this._passParameters.accumulatedFrames=0,this._lastOutput=t(this._lastOutput)}get isAccumulating(){return this.enabled&&this._passParameters.accumulatedFrames<this._maxFrames}precompile(){this.techniques.getCompiled(_)}render(e){if(this.bindParameters.frameRendererTarget===3)return null;let t=this.bindParameters.frameRendererTarget!==0;if(this._passParameters.accumulatedFrames>=this._maxFrames&&!t)return this._lastOutput?.retain(),this._lastOutput;let n=e.find(({name:e})=>e===`normals`),r=n?.getTexture(),i=n?.getTexture(v);return!r||!i||this._mode===0?this._emptyOutput:(this._configuration.hasEmission=!!this.bindParameters.reprojection.lastFrameEmission,t?this._renderOffscreen(r,i):this._renderInteractive(r,i))}_renderOffscreen(e,t){let n=this._emptyOutput,r=this._passParameters.accumulatedFrames,i=this._passParameters.temporalSampleFrame;this._passParameters.accumulatedFrames=0,this._passParameters.temporalSampleFrame=0;let a=this.techniques.get(m,this._configuration),o=this.techniques.get(p);for(;this._passParameters.accumulatedFrames<this._maxFrames;){this._passParameters.globalIllumination=n.getTexture(),this._passParameters.globalIlluminationWeights=n.getTexture(y);let r=this._renderAccumulationFrame(e,t,a,o);++this._passParameters.accumulatedFrames,n.release(),n=r}return this._passParameters.globalIllumination=null,this._passParameters.globalIlluminationWeights=null,this._passParameters.accumulatedFrames=r,this._passParameters.temporalSampleFrame=i,n}_renderInteractive(e,t){if(!this._canRender)return this._requestRender(),this._emptyOutput;let n=this._mode===1?this._lowQualityResolutionScale*this.bindParameters.camera.pixelScale:1,r=n>=.99?1:n,i=this.techniques.getCompiled(m,this._configuration),a=this.techniques.getCompiled(p),o=r<1,s=o?this.techniques.getCompiled(_):null;if(!i||!a||o&&!s)return this._requestRender(),this._emptyOutput;let c=this._renderAccumulationFrame(e,t,i,a,s,r);return++this._passParameters.accumulatedFrames,this._passParameters.accumulatedFrames<this._maxFrames&&this._requestRender(),this._storeOutput(c),c}_renderAccumulationFrame(e,t,n,r,i,a=1){let s=this.bindParameters,c=this.renderingContext,{camera:u}=s;this._passParameters.normalTexture=e,this._passParameters.depthTexture=t,this._passParameters.projScale=1/u.computeScreenPixelSizeAtDistance(1),this._passParameters.resolutionScale=a,this._passParameters.glowBoost=this._glowBoost;let{fullWidth:d,fullHeight:f}=u,p=Math.max(1,Math.floor(d*a)),m=Math.max(1,Math.floor(f*a)),h=this.fboCache.acquire(p,m,`global illumination input`).acquireColor(y,2);c.bindFramebuffer(h.fbo),c.setViewport(0,0,p,m),c.bindTechnique(n,s,this._passParameters,this._drawParameters),c.screen.draw();let g=Math.max(1,Math.round(p)),_=Math.max(1,Math.round(m)),v=this.fboCache.acquire(g,_,`global illumination blur horizontal`);c.bindFramebuffer(v.fbo);let b=h.obtainAttachment(y);this._drawParameters.texture=h.getTexture(),this._drawParameters.weightTexture=b.attachment,o(this._drawParameters.blurSize,0,1/m),c.bindTechnique(r,s,this._passParameters,this._drawParameters),c.setViewport(0,0,g,_),c.screen.draw(),h.release();let x=this.fboCache.acquire(g,_,i?`global illumination blur vertical`:l.AMBIENT_ILLUMINATION);c.bindFramebuffer(x.fbo),c.setViewport(0,0,g,_),c.setClearColor(1,1,1,0),c.clear(16384),this._drawParameters.texture=v.getTexture(),this._drawParameters.weightTexture=b.attachment,o(this._drawParameters.blurSize,1/g,0),c.bindTechnique(r,s,this._passParameters,this._drawParameters),c.setViewport(0,0,g,_),c.screen.draw(),v.release(),x.attachColor(b,y),b.release();let S=x;return i&&(S=this.fboCache.acquire(d,f,l.AMBIENT_ILLUMINATION).acquireColor(y,2),c.bindFramebuffer(S.fbo),c.setViewport(0,0,d,f),c.setClearColor(1,1,1,0),c.clear(16384),this._drawParametersUpscale.colorTexture=x.getTexture(),this._drawParametersUpscale.weightTexture=x.getTexture(y),c.bindTechnique(i,s,this._passParameters,this._drawParametersUpscale),c.screen.draw(),x.release()),c.setViewport4fv(u.fullViewport),this._passParameters.temporalSampleFrame=(this._passParameters.temporalSampleFrame+1)%64,S}_requestRender(){this._isGlobalIlluminationUpdate=!0,this.requestRender(1),this._isGlobalIlluminationUpdate=!1}_storeOutput(e){this._lastOutput!==e&&(this._lastOutput=t(this._lastOutput),this._lastOutput=e,this._lastOutput.retain())}get _emptyOutput(){let e=this.renderingContext,{fullWidth:t,fullHeight:n}=this.bindParameters.camera,r=this.fboCache.acquire(t,n,l.AMBIENT_ILLUMINATION).acquireColor(y,2);return e.bindFramebuffer(r.fbo),e.setViewport(0,0,t,n),e.clearBuffer(0,s),e.clearBuffer(1,c),r}get _canRender(){let{reprojection:e,hasEmission:t,globalIllumination:n}=this.bindParameters;return(!t||!!e.lastFrameEmission)&&!!e.lastFrameDepth&&!!n}get _glowBoost(){let e=this.view.environment.lighting.glow;return e==null?0:2+3*e.intensity}get _mode(){return this._useGlobalIllumination?this.view.stage.renderer.isFeatureEnabled(10)?2:1:0}get test(){let e=this;return{get maxFrames(){return e._maxFrames},set maxFrames(t){e._maxFrames=t},get lowQualityResolutionScale(){return e._lowQualityResolutionScale},set lowQualityResolutionScale(t){e._lowQualityResolutionScale=t},passParameters:this._passParameters,configuration:this._configuration,get mode(){return e._mode},async restartAccumulation(){e.produces!==`disabled`&&(e._disable(),await i(),e._enable())}}}};b=e([a(`esri.views.3d.webgl-engine.effects.globalIllumination.GlobalIllumination`)],b);export{b as GlobalIllumination};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../environment/FoggyWeather.js";import{mainDepth as t}from"../../core/shaderLibrary/bindUniforms.js";import{ReadDepth as n}from"../../core/shaderLibrary/output/ReadDepth.glsl.js";import{FloatBindUniform as r}from"../../core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as i}from"../../core/shaderModules/FloatPassUniform.js";import{glsl as a}from"../../core/shaderModules/glsl.js";import{Texture2DPassUniform as o}from"../../core/shaderModules/Texture2DPassUniform.js";import{DistanceFalloffPassParameters as s,getDistanceFalloff as c}from"../raymarching/DistanceFalloff.glsl.js";import{floatBlendScale as l}from"../../shaders/floatBlendScale.glsl.js";import{ToneMapping as u}from"../../shaders/ToneMapping.glsl.js";class d extends s{constructor(){super(...arguments),this.mipmapLevels=1,this.boost=1,this.scattering=1e-4}}function f(s,d){s.include(l,d),s.include(c),s.include(n),s.include(u),s.uniforms.add(new o(`emissionTexture`,({emission:e})=>e?.attachment),t,new i(`scattering`,({scattering:e})=>e),new i(`boost`,({boost:e})=>1+e*.5),new i(`levels`,({mipmapLevels:e},{camera:t})=>e+1+Math.log2(t.pixelScale)),new r(`pixelRatioCorrection`,({camera:e})=>Math.log2(e.pixelScale)),new o(`mipmapTexture`,({mipmapTexture:e})=>e?.getTexture())).constants.add(`maxScattering`,`float`,e.maxScattering).constants.add(`weightEpsilon`,`float`,.005).code.add(a`vec3 readEmission(float level) {
2
+ import{__decorate as e}from"tslib";import t from"../../../environment/FoggyWeather.js";import{mainDepth as n}from"../../core/shaderLibrary/bindUniforms.js";import{ReadDepth as r}from"../../core/shaderLibrary/output/ReadDepth.glsl.js";import{FloatBindUniform as i}from"../../core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as a}from"../../core/shaderModules/FloatPassUniform.js";import{glsl as o}from"../../core/shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../../core/shaderModules/Texture2DPassUniform.js";import{parameter as c}from"../../core/shaderTechnique/ShaderTechniqueConfiguration.js";import{DistanceFalloffPassParameters as l,getDistanceFalloff as u}from"../raymarching/DistanceFalloff.glsl.js";import{FloatBlendScaleConfiguration as d,floatBlendScale as f}from"../../shaders/floatBlendScale.glsl.js";import{ToneMapping as p}from"../../shaders/ToneMapping.glsl.js";class m extends l{constructor(){super(...arguments),this.mipmapLevels=1,this.boost=1,this.scattering=1e-4}}class h extends d{constructor(){super(...arguments),this.hasFog=!1}}e([c()],h.prototype,`hasFog`,void 0);function g(e,c){e.include(f,c),e.include(u),e.include(r),e.include(p),e.uniforms.add(new s(`emissionTexture`,({emission:e})=>e?.attachment),n,new a(`scattering`,({scattering:e})=>e),new a(`boost`,({boost:e})=>1+e*.5),new a(`levels`,({mipmapLevels:e},{camera:t})=>e+1+Math.log2(t.pixelScale)),new i(`pixelRatioCorrection`,({camera:e})=>Math.log2(e.pixelScale)),new s(`mipmapTexture`,({mipmapTexture:e})=>e?.getTexture())).constants.add(`maxScattering`,`float`,t.maxScattering).constants.add(`maxDispersion`,`float`,c.hasFog?1:.1).code.add(o`vec3 readEmission(float level) {
3
3
  level *= levels;
4
4
  level = max(0.0, level - pixelRatioCorrection);
5
5
  return level < 1.0 ?
@@ -22,7 +22,7 @@ depth = max(0.0, length(cameraSpaceRay));
22
22
  }
23
23
  vec3 rayDir = normalize(worldRay);
24
24
  float dispersionPerPixel = getDistanceFalloff(depth, rayDir, scattering * 0.5);
25
- float mainPoint = pow(dispersionPerPixel, 2.0);
25
+ float mainPoint = pow(dispersionPerPixel, 4.0) * maxDispersion;
26
26
  vec3 emission = vec3(0.0);
27
27
  float weights = 0.0;
28
28
  float baseSigmaSq = 0.003 + 0.03 * (boost - 1.0);
@@ -39,4 +39,4 @@ weights += weight;
39
39
  }
40
40
  }
41
41
  return emission * boost / weights;
42
- }`)}export{d as BlurEmissionPassParameters,f as applyEmissiveGlow};
42
+ }`)}export{h as EmissiveGlowConfiguration,m as EmissiveGlowPassParameters,g as applyEmissiveGlow};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{releaseMaybe as t,disposeMaybe as n}from"../../../../../core/maybe.js";import{watch as r,initial as i}from"../../../../../core/reactiveUtils.js";import{property as a,subclass as o}from"../../../../../core/accessorSupport/decorators.js";import{set as s}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as c}from"../../../webgl.js";import l from"../../../webgl/RenderNode.js";import{HighlightApplyTechnique as u}from"./HighlightApplyTechnique.js";import{H as d}from"../../../../../chunks/HighlightBlur.glsl.js";import{HighlightBlurTechnique as f}from"./HighlightBlurTechnique.js";import{H as p,g as m}from"../../../../../chunks/HighlightDownsample.glsl.js";import{HighlightDownsampleTechnique as h}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as g}from"./HighlightPassParameters.js";import{m as _}from"../../../../../chunks/HighlightSharpApply.glsl.js";import{HighlightSharpApplyTechnique as v}from"./HighlightSharpApplyTechnique.js";import{HighlightToSingleTechnique as y}from"./HighlightToSingleTechnique.js";import{Compositor as b}from"../../lib/Compositor.js";import{NoVertex as x}from"../../lib/DefaultVertexBufferLayouts.js";import{VertexArrayObject as S}from"../../lib/VertexArrayObject.js";import{BufferObject as C}from"../../../../webgl/BufferObject.js";import{ColorAttachment0 as w,PrimitiveType as T,DataType as E}from"../../../../webgl/enums.js";import D from"../../../../webgl/Texture.js";import{TextureDescriptor as O}from"../../../../webgl/TextureDescriptor.js";import{VertexBuffer as k}from"../../../../webgl/VertexBuffer.js";let A=class extends l{constructor(e){super(e),this.consumes={required:[c.HIGHLIGHT,`highlights`]},this.produces=c.HIGHLIGHT,this._renderSharpHighlights=(e,t,n)=>{let{techniques:r}=this,i=r.getCompiled(v);if(!i||!this._compositor.isPremultipliedAlphaReady(!1))return!1;let a=this._prepareAndDownSample(t),{fullWidth:o,fullHeight:s,pixelRatio:c,fullViewport:l}=this.bindParameters.camera,u=this.fboCache.acquire(o,s,`highlight overlay`,5);this._clearHighlightOverlay(u),this._passParameters.pixelRatio=Math.min(c,_);let{renderingContext:d,bindParameters:f,_passParameters:p}=this,m=this.view.stage.renderView.renderer;for(let e=0;e<n.length;++e){let{name:t}=n[e];m.hasHighlight(t)&&(p.highlightLevel=e,d.bindFramebuffer(u.fbo),d.setViewport4fv(f.camera.fullViewport),d.bindTechnique(i,f,p),this._renderGrid(a))}let h=this.antialias.isEnabled()?this.antialias.renderTo(u,`highlight antialiasing`,{coverageTexture:a.coverage.getTexture(),horizontalCellCount:a.horizontalCellCount,verticalCellCount:a.verticalCellCount,draw:()=>this._renderGrid(a)}):u;h!==u&&u.release();let{_compositor:g}=this;return d.bindFramebuffer(e.fbo),d.setDrawBuffers([w]),d.setViewport4fv(l),g.compositePreMultipliedAlpha(this.bindParameters,h.getTexture(),!1),h.release(),!0},this._renderGaussianHighlights=(e,t,n)=>{let{renderingContext:r,bindParameters:i,fboCache:a,_passParameters:o,techniques:c}=this,l=c.getCompiled(y),d=c.getCompiled(f),p=c.getCompiled(u);if(!l||!d||!p)return!1;let m=this._prepareAndDownSample(t),{width:h,height:g}=t.descriptor,{fullWidth:_,fullHeight:v,pixelRatio:b,fullViewport:x}=i.camera,S=Math.ceil(_/b),C=Math.ceil(v/b),{_highlightBlurDrawParameters:T}=this,E=this.view.stage.renderView.renderer;for(let t=0;t<n.length;++t){let{name:c}=n[t];if(!E.hasHighlight(c))continue;o.highlightLevel=t,r.setClearColor(0,0,0,0);let u=a.acquire(h,g,`single highlight`,2);r.bindFramebuffer(u.fbo),r.setViewport(0,0,h,g),r.clear(16384),r.bindTechnique(l,i,o),this._renderGrid(m),T.blurInput=u.getTexture(),s(T.blurSize,1/S,0);let f=a.acquire(S,C,`single highlight blur`,2);r.unbindTexture(f.fbo?.colorTexture),r.bindFramebuffer(f.fbo),r.setViewport(0,0,S,C),r.clear(16384),r.bindTechnique(d,i,o,T),this._renderGrid(m),u.release(),s(T.blurSize,0,1/C),o.highlightBlurTexture=f.getTexture(),r.bindFramebuffer(e.fbo),r.setDrawBuffers([w]),r.setViewport4fv(x),r.bindTechnique(p,i,o,T),this._renderGrid(m),f.release()}return!0},this._downsampleDrawParameters=new p,this._passParameters=new g,this._highlightBlurDrawParameters=new d,this._compositor=null,this._grid=new j}initialize(){this._compositor=new b(this.renderingContext,this.techniques),this.addHandles([r(()=>this._updateOptionsTexture(),()=>{},i)])}destroy(){this._grid.coverage=t(this._grid.coverage),this._grid.vao=n(this._grid.vao),this._passParameters.highlightOptionsTexture=t(this._passParameters.highlightOptionsTexture)}_updateOptionsTexture(){if(this._passParameters.highlightOptionsTexture==null){let e=new O(16,2);e.internalFormat=6408,e.samplingMode=9728,this._passParameters.highlightOptionsTexture=new D(this.renderingContext,e,null)}this._passParameters.highlightOptionsTexture.setData(M(this.view.state.highlights)),this.requestRender(1)}render(e){let t=e.find(({name:e})=>e===c.HIGHLIGHT),{techniques:n,bindParameters:r,_passParameters:i}=this;if(!r.decorations)return t;if(!n.getCompiled(h))return this.requestRender(1),t;let a=this.view.stage.renderer.isFeatureEnabled(13),o=e.find(({name:e})=>e===`highlights`).getTexture(),s=a?this._renderSharpHighlights:this._renderGaussianHighlights,l=a?this._renderGaussianHighlights:this._renderSharpHighlights;return!s(t,o,r.highlights)&&(this.requestRender(1),!l(t,o,r.highlights))||(i.coverageTexture=null,i.highlightTexture=null),t}_clearHighlightOverlay(e){let{renderingContext:t}=this;t.bindFramebuffer(e.fbo),t.setViewport4fv(this.bindParameters.camera.fullViewport),t.setClearColor(0,0,0,0),t.clear(16384)}_prepareAndDownSample(e){this._passParameters.highlightTexture=e,this._gridUpdateResources(e);let t=this.techniques.get(h),n=this._gridComputeCoverage(t,e),{horizontalCellCount:r,verticalCellCount:i}=n,a=this._passParameters;return a.horizontalCellCount=r,a.verticalCellCount=i,a.coverageTexture=n.coverage?.getTexture(),n}_renderGrid(e){let t=e.verticalCellCount*e.horizontalCellCount;this.renderingContext.bindVAO(e.vao),this.renderingContext.drawElementsInstanced(T.TRIANGLES,6,E.UNSIGNED_BYTE,0,t)}_gridUpdateResources(e){let t=this._grid,{width:n,height:r}=e.descriptor;if(t.horizontalCellCount=Math.ceil(n/m),t.verticalCellCount=Math.ceil(r/m),t.vao)return;let i=this.renderingContext,a=C.createIndex(i,35044,F);t.vao=new S(i,new k(i,x),a)}_gridComputeCoverage(e,t){let n=this.renderingContext,r=this._grid,i=t.descriptor,a=Math.ceil(i.width/m),o=Math.ceil(i.height/m);this._downsampleDrawParameters.input=t;let{highlights:s}=this.bindParameters;r.coverage?.release();let c=this.fboCache.acquire(a,o,`highlight coverage`,s.length>L?3:1);return r.coverage=c,n.bindFramebuffer(c.fbo),n.bindTechnique(e,this.bindParameters,this._passParameters,this._downsampleDrawParameters),n.setViewport(0,0,a,o),n.screen.draw(),r}get test(){}};e([a()],A.prototype,`consumes`,void 0),e([a()],A.prototype,`produces`,void 0),e([a({constructOnly:!0})],A.prototype,`antialias`,void 0),A=e([o(`esri.views.3d.webgl-engine.effects.highlight.Highlight`)],A);class j{constructor(){this.coverage=null,this.vao=null,this.verticalCellCount=0,this.horizontalCellCount=0,this.viewportWidth=0,this.viewportHeight=0}}function M(e){let t=new Uint8Array(128),n=0;for(let r of e){let e=n*4,i=n*4+64;++n;let{color:a}=r,o=r.haloColor??a;t[e+0]=a.r,t[e+1]=a.g,t[e+2]=a.b,t[e+3]=r.fillOpacity*a.a*255,t[i+0]=o.r,t[i+1]=o.g,t[i+2]=o.b,t[i+3]=r.haloOpacity*o.a*255}return t}let N=0;function P(e){let t=0;for(let n of e){let{name:e}=n;t+=e.length;let{color:r,fillOpacity:i,haloColor:a,haloOpacity:o}=n;t+=r.r+r.g+r.b+r.a+i,t+=a?a.r+a.g+a.b+a.a+o:0}let n=e.at(0);if(n){let{shadowOpacity:e,shadowDifference:r,shadowColor:i}=n;t+=e+r+i.r+i.g+i.b+i.a}return N+++(t>=0?0:1)}const F=new Uint8Array([0,1,2,2,1,3]);function I(e,t,n,r,i,a,o=0){let{highlights:c}=i,l=c.length>1?t.acquire(n,r,`highlight mix`,c.length>L?3:1):null,{gl:u}=e;if(l){let t=e.boundFramebuffer;e.bindFramebuffer(l.fbo),u.clearBufferuiv(u.COLOR,0,[0,0,0,0]),e.bindFramebuffer(t)}let d=l?.getTexture();i.highlightMixTexture=d,s(i.highlightMixOrigin,o,0),c.forEach((t,s)=>{if(s>0){let t=D.TEXTURE_UNIT_FOR_UPDATES;e.bindTexture(d,t),e.setActiveTexture(t),u.copyTexSubImage2D(3553,0,0,0,o,0,n,r),e.bindTexture(null,t)}e.clear(256),i.highlightLevel=s,a()}),i.highlightLevel=null,i.highlightMixTexture=null,l?.release()}const L=4;export{A as Highlight,L as maxHighlightsPerChannel,I as renderHighlightBuffer,P as trackHighlightOptions};
2
+ import{__decorate as e}from"tslib";import{equals as t}from"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{releaseMaybe as n,disposeMaybe as r}from"../../../../../core/maybe.js";import{watch as i,initial as a}from"../../../../../core/reactiveUtils.js";import{property as o,subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{set as c}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{InternalRenderCategory as l}from"../../../webgl.js";import u from"../../../webgl/RenderNode.js";import{HighlightApplyTechnique as d}from"./HighlightApplyTechnique.js";import{H as f}from"../../../../../chunks/HighlightBlur.glsl.js";import{HighlightBlurTechnique as p}from"./HighlightBlurTechnique.js";import{H as m,g as h}from"../../../../../chunks/HighlightDownsample.glsl.js";import{HighlightDownsampleTechnique as g}from"./HighlightDownsampleTechnique.js";import{HighlightPassParameters as _}from"./HighlightPassParameters.js";import{m as v}from"../../../../../chunks/HighlightSharpApply.glsl.js";import{HighlightSharpApplyTechnique as y}from"./HighlightSharpApplyTechnique.js";import{HighlightToSingleTechnique as b}from"./HighlightToSingleTechnique.js";import{Compositor as x}from"../../lib/Compositor.js";import{NoVertex as S}from"../../lib/DefaultVertexBufferLayouts.js";import{VertexArrayObject as C}from"../../lib/VertexArrayObject.js";import{BufferObject as w}from"../../../../webgl/BufferObject.js";import{ColorAttachment0 as T,PrimitiveType as E,DataType as D}from"../../../../webgl/enums.js";import O from"../../../../webgl/Texture.js";import{TextureDescriptor as k}from"../../../../webgl/TextureDescriptor.js";import{VertexBuffer as A}from"../../../../webgl/VertexBuffer.js";let j=class extends u{constructor(e){super(e),this.consumes={required:[l.HIGHLIGHT,`highlights`]},this.produces=l.HIGHLIGHT,this._renderSharpHighlights=(e,t,n)=>{let{techniques:r}=this,i=r.getCompiled(y);if(!i||!this._compositor.isPremultipliedAlphaReady(!1))return!1;let a=this._prepareAndDownSample(t),{fullWidth:o,fullHeight:s,pixelRatio:c,fullViewport:l}=this.bindParameters.camera,u=this.fboCache.acquire(o,s,`highlight overlay`,5);this._clearHighlightOverlay(u),this._passParameters.pixelRatio=Math.min(c,v);let{renderingContext:d,bindParameters:f,_passParameters:p}=this,m=this.view.stage.renderView.renderer;for(let e=0;e<n.length;++e){let{name:t}=n[e];m.hasHighlight(t)&&(p.highlightLevel=e,d.bindFramebuffer(u.fbo),d.setViewport4fv(f.camera.fullViewport),d.bindTechnique(i,f,p),this._renderGrid(a))}let h=this.antialias.isEnabled()?this.antialias.renderTo(u,`highlight antialiasing`,{coverageTexture:a.coverage.getTexture(),horizontalCellCount:a.horizontalCellCount,verticalCellCount:a.verticalCellCount,draw:()=>this._renderGrid(a)}):u;h!==u&&u.release();let{_compositor:g}=this;return d.bindFramebuffer(e.fbo),d.setDrawBuffers([T]),d.setViewport4fv(l),g.compositePreMultipliedAlpha(this.bindParameters,h.getTexture(),!1),h.release(),!0},this._renderGaussianHighlights=(e,t,n)=>{let{renderingContext:r,bindParameters:i,fboCache:a,_passParameters:o,techniques:s}=this,l=s.getCompiled(b),u=s.getCompiled(p),f=s.getCompiled(d);if(!l||!u||!f)return!1;let m=this._prepareAndDownSample(t),{width:h,height:g}=t.descriptor,{fullWidth:_,fullHeight:v,pixelRatio:y,fullViewport:x}=i.camera,S=Math.ceil(_/y),C=Math.ceil(v/y),{_highlightBlurDrawParameters:w}=this,E=this.view.stage.renderView.renderer;for(let t=0;t<n.length;++t){let{name:s}=n[t];if(!E.hasHighlight(s))continue;o.highlightLevel=t,r.setClearColor(0,0,0,0);let d=a.acquire(h,g,`single highlight`,2);r.bindFramebuffer(d.fbo),r.setViewport(0,0,h,g),r.clear(16384),r.bindTechnique(l,i,o),this._renderGrid(m),w.blurInput=d.getTexture(),c(w.blurSize,1/S,0);let p=a.acquire(S,C,`single highlight blur`,2);r.unbindTexture(p.fbo?.colorTexture),r.bindFramebuffer(p.fbo),r.setViewport(0,0,S,C),r.clear(16384),r.bindTechnique(u,i,o,w),this._renderGrid(m),d.release(),c(w.blurSize,0,1/C),o.highlightBlurTexture=p.getTexture(),r.bindFramebuffer(e.fbo),r.setDrawBuffers([T]),r.setViewport4fv(x),r.bindTechnique(f,i,o,w),this._renderGrid(m),p.release()}return!0},this._downsampleDrawParameters=new m,this._passParameters=new _,this._highlightBlurDrawParameters=new f,this._compositor=null,this._grid=new M}initialize(){this._compositor=new x(this.renderingContext,this.techniques),this.addHandles([i(()=>this._optionsData,e=>this._updateOptionsTexture(e),a)])}destroy(){this._grid.coverage=n(this._grid.coverage),this._grid.vao=r(this._grid.vao),this._passParameters.highlightOptionsTexture=n(this._passParameters.highlightOptionsTexture)}get _optionsData(){let e=new Uint8Array(128),n=0;for(let t of this.view.state.highlights){let r=n*4,i=n*4+64;++n;let{color:a}=t,o=t.haloColor??a;e[r+0]=a.r,e[r+1]=a.g,e[r+2]=a.b,e[r+3]=t.fillOpacity*a.a*255,e[i+0]=o.r,e[i+1]=o.g,e[i+2]=o.b,e[i+3]=t.haloOpacity*o.a*255}let r=this._get(`_optionsData`);return t(e,r)?r:e}_updateOptionsTexture(e){if(this._passParameters.highlightOptionsTexture==null){let e=new k(16,2);e.internalFormat=6408,e.samplingMode=9728,this._passParameters.highlightOptionsTexture=new O(this.renderingContext,e,null)}this._passParameters.highlightOptionsTexture.setData(e),this.requestRender(1)}render(e){let t=e.find(({name:e})=>e===l.HIGHLIGHT),{techniques:n,bindParameters:r,_passParameters:i}=this;if(!r.decorations)return t;if(!n.getCompiled(g))return this.requestRender(1),t;let a=this.view.stage.renderer.isFeatureEnabled(13),o=e.find(({name:e})=>e===`highlights`).getTexture(),s=a?this._renderSharpHighlights:this._renderGaussianHighlights,c=a?this._renderGaussianHighlights:this._renderSharpHighlights;return!s(t,o,r.highlights)&&(this.requestRender(1),!c(t,o,r.highlights))||(i.coverageTexture=null,i.highlightTexture=null),t}_clearHighlightOverlay(e){let{renderingContext:t}=this;t.bindFramebuffer(e.fbo),t.setViewport4fv(this.bindParameters.camera.fullViewport),t.setClearColor(0,0,0,0),t.clear(16384)}_prepareAndDownSample(e){this._passParameters.highlightTexture=e,this._gridUpdateResources(e);let t=this.techniques.get(g),n=this._gridComputeCoverage(t,e),{horizontalCellCount:r,verticalCellCount:i}=n,a=this._passParameters;return a.horizontalCellCount=r,a.verticalCellCount=i,a.coverageTexture=n.coverage?.getTexture(),n}_renderGrid(e){let t=e.verticalCellCount*e.horizontalCellCount;this.renderingContext.bindVAO(e.vao),this.renderingContext.drawElementsInstanced(E.TRIANGLES,6,D.UNSIGNED_BYTE,0,t)}_gridUpdateResources(e){let t=this._grid,{width:n,height:r}=e.descriptor;if(t.horizontalCellCount=Math.ceil(n/h),t.verticalCellCount=Math.ceil(r/h),t.vao)return;let i=this.renderingContext,a=w.createIndex(i,35044,F);t.vao=new C(i,new A(i,S),a)}_gridComputeCoverage(e,t){let n=this.renderingContext,r=this._grid,i=t.descriptor,a=Math.ceil(i.width/h),o=Math.ceil(i.height/h);this._downsampleDrawParameters.input=t;let{highlights:s}=this.bindParameters;r.coverage?.release();let c=this.fboCache.acquire(a,o,`highlight coverage`,s.length>L?3:1);return r.coverage=c,n.bindFramebuffer(c.fbo),n.bindTechnique(e,this.bindParameters,this._passParameters,this._downsampleDrawParameters),n.setViewport(0,0,a,o),n.screen.draw(),r}get test(){}};e([o()],j.prototype,`consumes`,void 0),e([o()],j.prototype,`produces`,void 0),e([o({constructOnly:!0})],j.prototype,`antialias`,void 0),e([o()],j.prototype,`_optionsData`,null),j=e([s(`esri.views.3d.webgl-engine.effects.highlight.Highlight`)],j);class M{constructor(){this.coverage=null,this.vao=null,this.verticalCellCount=0,this.horizontalCellCount=0,this.viewportWidth=0,this.viewportHeight=0}}let N=0;function P(e){let t=0;for(let n of e){let{name:e}=n;t+=e.length;let{color:r,fillOpacity:i,haloColor:a,haloOpacity:o}=n;t+=r.r+r.g+r.b+r.a+i,t+=a?a.r+a.g+a.b+a.a+o:0}let n=e.at(0);if(n){let{shadowOpacity:e,shadowDifference:r,shadowColor:i}=n;t+=e+r+i.r+i.g+i.b+i.a}return N+++(t>=0?0:1)}const F=new Uint8Array([0,1,2,2,1,3]);function I(e,t,n,r,i,a,o=0){let{highlights:s}=i,l=s.length>1?t.acquire(n,r,`highlight mix`,s.length>L?3:1):null,{gl:u}=e;if(l){let t=e.boundFramebuffer;e.bindFramebuffer(l.fbo),u.clearBufferuiv(u.COLOR,0,[0,0,0,0]),e.bindFramebuffer(t)}let d=l?.getTexture();i.highlightMixTexture=d,c(i.highlightMixOrigin,o,0),s.forEach((t,s)=>{if(s>0){let t=O.TEXTURE_UNIT_FOR_UPDATES;e.bindTexture(d,t),e.setActiveTexture(t),u.copyTexSubImage2D(3553,0,0,0,o,0,n,r),e.bindTexture(null,t)}e.clear(256),i.highlightLevel=s,a()}),i.highlightLevel=null,i.highlightMixTexture=null,l?.release()}const L=4;export{j as Highlight,L as maxHighlightsPerChannel,I as renderHighlightBuffer,P as trackHighlightOptions};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{property as t,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{InternalRenderCategory as r}from"../../webgl.js";import i from"../../webgl/RenderNode.js";import{prepareGaussianSplatPerspectiveParameters as a,canRenderGaussianSplats as o,requiresPreciseDepth as s}from"./GaussianSplatRenderUtils.js";import{GaussianSplatDepthTechnique as c}from"../shaders/GaussianSplatDepthTechnique.js";import{GaussianSplatPassParameters as l}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechniqueConfiguration as u}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as d}from"../../../webgl/enums.js";let f=class extends i{constructor(e){super(e),this.consumes={required:[r.GAUSSIAN_SPLAT_DEPTH]},this.produces=r.GAUSSIAN_SPLAT_DEPTH,this.layerView=null,this._passParameters=new l,this._configuration=new u(e.view.state.isGlobal)}precompile(){this._canRender&&(this._updateConfiguration(),this.techniques.precompile(c,this._configuration))}render(){let e=this.bindRenderTarget();if(this.layerView.fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;this._updateConfiguration(),a(this._passParameters,this.layerView,this.bindParameters.camera);let t=this.techniques.get(c,this._configuration);return this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(d.TRIANGLE_STRIP,0,4,this.layerView.data.visibleGaussians),e}get _canRender(){return o(this.layerView.data)}_updateConfiguration(){this._configuration.preciseDepth=s(this.bindParameters),this._configuration.fadingEnabled=this.layerView.fadeHelper.fadingEnabled,this._configuration.clippingEnabled=this.layerView.clippingBox!=null,this._configuration.hasSlicePlane=this.layerView.slicePlaneEnabled&&this.bindParameters.slicePlane!=null,this._configuration.writeNormals=this.bindParameters.output===4}};e([t()],f.prototype,`consumes`,void 0),e([t()],f.prototype,`produces`,void 0),e([t({constructOnly:!0})],f.prototype,`layerView`,void 0),f=e([n(`esri.views.3d.webgl-engine.lib.GaussianSplatDepthRenderer`)],f);export{f as GaussianSplatDepthRenderer};
2
+ import{__decorate as e}from"tslib";import{property as t,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{InternalRenderCategory as r}from"../../webgl.js";import i from"../../webgl/RenderNode.js";import{prepareGaussianSplatPerspectiveParameters as a,canRenderGaussianSplats as o,requiresPreciseDepth as s}from"./GaussianSplatRenderUtils.js";import{GaussianSplatDepthTechnique as c}from"../shaders/GaussianSplatDepthTechnique.js";import{GaussianSplatPassParameters as l}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechniqueConfiguration as u}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as d}from"../../../webgl/enums.js";let f=class extends i{constructor(e){super(e),this.consumes={required:[r.GAUSSIAN_SPLAT_DEPTH]},this.produces=r.GAUSSIAN_SPLAT_DEPTH,this.layerView=null,this._passParameters=new l,this._configuration=new u(e.view.state.isGlobal)}precompile(){this._canRender&&(this._updateConfiguration(),this.techniques.precompile(c,this._configuration))}render(){let e=this.bindRenderTarget();if(this.layerView.fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;this._updateConfiguration(),a(this._passParameters,this.layerView,this.bindParameters.camera);let t=this.techniques.get(c,this._configuration);return this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(d.TRIANGLE_STRIP,0,4,this.layerView.data.visibleGaussians),e}get _canRender(){return o(this.layerView.data)}_updateConfiguration(){this._configuration.preciseDepth=s(this.bindParameters),this._configuration.fadingEnabled=this.layerView.fadeHelper.fadingEnabled,this._configuration.clippingEnabled=this.layerView.clippingBox!=null,this._configuration.hasSlicePlane=this.layerView.slicePlaneEnabled&&this.bindParameters.slicePlane!=null,this._configuration.output=this.bindParameters.output,this._configuration.writeNormals=this.bindParameters.output===4}};e([t()],f.prototype,`consumes`,void 0),e([t()],f.prototype,`produces`,void 0),e([t({constructOnly:!0})],f.prototype,`layerView`,void 0),f=e([n(`esri.views.3d.webgl-engine.lib.GaussianSplatDepthRenderer`)],f);export{f as GaussianSplatDepthRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{copy as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as s,positiveInfinity as c,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as u}from"../../webgl.js";import{addWraparound as d}from"../../layers/i3s/I3SUtil.js";import f from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as p,requiresPreciseColorDepth as m,prepareGaussianSplatPerspectiveParameters as h}from"./GaussianSplatRenderUtils.js";import{G as g}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as _}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as v}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as y}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as b}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatPassParameters as x}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as S}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as C}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as w,DepthStencilAttachment as T,PrimitiveType as E}from"../../../webgl/enums.js";let D=class extends f{constructor(e){super(e),this.consumes={required:[u.GAUSSIAN_SPLAT]},this.produces=u.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new x,this._compositionPassParameters=new g,this._depthCompositionPassParameters=new y,this._compositionConfiguration=new v,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new C(e.view.state.isGlobal),s(this._clipBox,c)}async initialize(){this.addHandles([t(()=>this.view.state.camera,()=>this._onCameraChange()),t(()=>this.view.state.mode===2,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(S,this._configuration),this.techniques.precompile(_,this._compositionConfiguration),this.techniques.precompile(b))}render(){let e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;let t=e.getAttachment(w);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=t!=null;let{fullWidth:n,fullHeight:r}=this.bindParameters.camera;this._prepareParameters();let i=this.renderingContext,a=this.fboCache,o=a.acquire(n,r,`gaussian color output`),s=e.getAttachment(T);o.attachDepth(s);let c=this.techniques.get(S,this._configuration);this._renderGaussianColorAndDepth(o,c);let l=a.acquire(n,r,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(w),l.attachDepth(e.getAttachment(T)),i.bindFramebuffer(l.fbo);let u=this.techniques.get(b);i.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),i.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),t?(l.acquireColor(w,8,`emissive`),this._compositionPassParameters.emission=e.getTexture(w)):this._compositionPassParameters.emission=null,i.bindFramebuffer(l.fbo);let d=this.techniques.get(_,this._compositionConfiguration);return i.bindTechnique(d,this.bindParameters,this._compositionPassParameters),i.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){let t=e||c;this._hasSameClipBox(t)||(s(this._clipBox,t),this._tileCullingRevision=d(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,c,(e,t)=>e===t)}get _isIdle(){return this.view.state.mode===2}get _data(){return this.layerView.data}get _canRender(){return p(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.fragmentShading=this._configuration.receiveShadows&&this.view.stage.renderer.isFeatureEnabled(12),this._configuration.preciseDepth=m(this.bindParameters),this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&this.bindParameters.slicePlane!=null}_onCameraChange(){this._tileCullingRevision=d(this._tileCullingRevision,1);let e=this.view.state.camera.ray.direction;this._cameraSortDirty=!0,(this._isIdle||this._shouldRequestSort(e))&&this._requestCameraSort(e)}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_requestCameraSort(e){this._data.requestSort(),i(this._previousSortRequestCameraDirection,e),this._cameraSortDirty=!1}_prepareParameters(){h(this._passParameters,this.layerView,this.camera)}_hasSameClipBox(e){return l(this._clipBox,e,(e,t)=>e===t)}_renderGaussianColorAndDepth(e,t){let n=this.renderingContext;e.acquireColor(w,5,`gaussian depth output`),n.bindFramebuffer(e.fbo),n.setClearColor(0,0,0,0),n.clear(16384),this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(E.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}};e([n()],D.prototype,`consumes`,void 0),e([n()],D.prototype,`produces`,void 0),e([n({constructOnly:!0})],D.prototype,`layerView`,void 0),D=e([r(`esri.views.3d.webgl-engine.lib.GaussianSplatRenderer`)],D);export{D as GaussianSplatRenderer};
2
+ import{__decorate as e}from"tslib";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{copy as i}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as s,positiveInfinity as c,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as u}from"../../webgl.js";import{addWraparound as d}from"../../layers/i3s/I3SUtil.js";import f from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as p,requiresPreciseColorDepth as m,prepareGaussianSplatPerspectiveParameters as h}from"./GaussianSplatRenderUtils.js";import{G as g}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as _}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as v}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as y}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as b}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatPassParameters as x}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as S}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as C}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as w,DepthStencilAttachment as T,PrimitiveType as E}from"../../../webgl/enums.js";let D=class extends f{constructor(e){super(e),this.consumes={required:[u.GAUSSIAN_SPLAT]},this.produces=u.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new x,this._compositionPassParameters=new g,this._depthCompositionPassParameters=new y,this._compositionConfiguration=new v,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new C(e.view.state.isGlobal),s(this._clipBox,c)}async initialize(){this.addHandles([t(()=>this.view.state.camera,()=>this._onCameraChange()),t(()=>this.view.state.mode===2,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(S,this._configuration),this.techniques.precompile(_,this._compositionConfiguration),this.techniques.precompile(b))}render(){let e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;let t=e.getAttachment(w);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=t!=null;let{fullWidth:n,fullHeight:r}=this.bindParameters.camera;this._prepareParameters();let i=this.renderingContext,a=this.fboCache,o=a.acquire(n,r,`gaussian color output`),s=e.getAttachment(T);o.attachDepth(s);let c=this.techniques.get(S,this._configuration);this._renderGaussianColorAndDepth(o,c);let l=a.acquire(n,r,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(w),l.attachDepth(e.getAttachment(T)),i.bindFramebuffer(l.fbo);let u=this.techniques.get(b);i.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),i.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),t?(l.acquireColor(w,8,`emissive`),this._compositionPassParameters.emission=e.getTexture(w)):this._compositionPassParameters.emission=null,i.bindFramebuffer(l.fbo);let d=this.techniques.get(_,this._compositionConfiguration);return i.bindTechnique(d,this.bindParameters,this._compositionPassParameters),i.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){let t=e||c;this._hasSameClipBox(t)||(s(this._clipBox,t),this._tileCullingRevision=d(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,c,(e,t)=>e===t)}get _isIdle(){return this.view.state.mode===2}get _data(){return this.layerView.data}get _canRender(){return p(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.fragmentShading=this._configuration.receiveShadows&&this.view.stage.renderer.isFeatureEnabled(12),this._configuration.preciseDepth=m(this.bindParameters),this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&this.bindParameters.slicePlane!=null}_onCameraChange(){this._tileCullingRevision=d(this._tileCullingRevision,1);let e=this.view.state.camera.ray.direction;this._cameraSortDirty=!0,(this._isIdle||this._shouldRequestSort(e))&&this._requestCameraSort(e)}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_requestCameraSort(e){this._data.requestSort(),i(this._previousSortRequestCameraDirection,e),this._cameraSortDirty=!1}_prepareParameters(){h(this._passParameters,this.layerView,this.bindParameters.camera)}_hasSameClipBox(e){return l(this._clipBox,e,(e,t)=>e===t)}_renderGaussianColorAndDepth(e,t){let n=this.renderingContext;e.acquireColor(w,5,`gaussian depth output`),n.bindFramebuffer(e.fbo),n.setClearColor(0,0,0,0),n.clear(16384),this.renderingContext.bindTechnique(t,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(E.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}};e([n()],D.prototype,`consumes`,void 0),e([n()],D.prototype,`produces`,void 0),e([n({constructOnly:!0})],D.prototype,`layerView`,void 0),D=e([r(`esri.views.3d.webgl-engine.lib.GaussianSplatRenderer`)],D);export{D as GaussianSplatRenderer};