@arcgis/core 6.0.0-next.27 → 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 (421) hide show
  1. package/Map.d.ts +6 -0
  2. package/analysis/AreaMeasurementAnalysis.d.ts +4 -2
  3. package/analysis/DirectLineMeasurementAnalysis.d.ts +8 -4
  4. package/arcgisGlobal.d.ts +0 -2
  5. package/assets/esri/core/workers/RemoteClient.js +1 -1
  6. package/assets/esri/core/workers/chunks/131185d26343a997495e.js +1 -0
  7. package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +1 -0
  8. package/assets/esri/core/workers/chunks/176d0a06ebff5a29dedf.js +1 -0
  9. package/assets/esri/core/workers/chunks/{b0ca81a07cff25df19d2.js → 176d75e76318bfc25a53.js} +1 -1
  10. package/assets/esri/core/workers/chunks/18776a130d96879a68b1.js +1 -0
  11. package/assets/esri/core/workers/chunks/{e35641a3a4da8cfbcf54.js → 189321d88026bd7e6d3e.js} +1 -1
  12. package/assets/esri/core/workers/chunks/18e7fa4d3e0b1a084cc6.js +1 -0
  13. package/assets/esri/core/workers/chunks/{1168bc5c9f0a7e1f63a2.js → 1989410a618865f02dec.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{2c0cb214fedb29487eef.js → 199a7f97916679e0257c.js} +1 -1
  15. package/assets/esri/core/workers/chunks/1c406ab2bf99ac563316.js +1 -0
  16. package/assets/esri/core/workers/chunks/1d96fbad881a7d14a950.js +1 -0
  17. package/assets/esri/core/workers/chunks/{42d44c7d532df5ee70e9.js → 1deca3de77b1a9a07da4.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{45f826554499c38968c6.js → 1ee4df0fd61440cb5f02.js} +1 -1
  19. package/assets/esri/core/workers/chunks/22e73501e1435a896826.js +1 -0
  20. package/assets/esri/core/workers/chunks/25657f70c5f04a4ed978.js +1 -0
  21. package/assets/esri/core/workers/chunks/276a0b549acf048e8673.js +1 -0
  22. package/assets/esri/core/workers/chunks/{56e903ccef66cbe18f92.js → 2cd60fd062d954322c1f.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{ad96132bc89671e595f3.js → 2d3e0e4442dbc6ec6def.js} +1 -1
  24. package/assets/esri/core/workers/chunks/2de4296590bf9f9e9add.js +1 -0
  25. package/assets/esri/core/workers/chunks/2f5d014d6a72108b0b3a.js +1 -0
  26. package/assets/esri/core/workers/chunks/{0363d29fc665d169ebc4.js → 3105336a05f38a95ebea.js} +1 -1
  27. package/assets/esri/core/workers/chunks/379ef56f6b32494832a6.js +1 -0
  28. package/assets/esri/core/workers/chunks/3aafdb905c697bc9b1ad.js +1 -0
  29. package/assets/esri/core/workers/chunks/40c2674dae73f0942751.js +1 -0
  30. package/assets/esri/core/workers/chunks/418addce122dbb8897b4.js +1 -0
  31. package/assets/esri/core/workers/chunks/4419732baf3459a80e6d.js +1 -0
  32. package/assets/esri/core/workers/chunks/4976f5567fc7f1b63d10.js +1 -0
  33. package/assets/esri/core/workers/chunks/4e17665dd9048c300d87.js +1 -0
  34. package/assets/esri/core/workers/chunks/5396b6e99a0546a25d19.js +1 -0
  35. package/assets/esri/core/workers/chunks/53c7510df09b71ab5646.js +1 -0
  36. package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
  37. package/assets/esri/core/workers/chunks/{d90a3bfd45b5ed4092e0.js → 590fe0f56bc4c33a50e7.js} +1 -1
  38. package/assets/esri/core/workers/chunks/5bb6c255bdc8aa9ba23e.js +1 -0
  39. package/assets/esri/core/workers/chunks/5f1cb79aec9c4a9b7ddc.js +29 -0
  40. package/assets/esri/core/workers/chunks/{23a4806b4cdf7cc32e4d.js → 5f787809b74eed7b9a91.js} +1 -1
  41. package/assets/esri/core/workers/chunks/636e9c4ac1f9ae98f9d1.js +1 -0
  42. package/assets/esri/core/workers/chunks/654f5441227579d2b6b4.js +1 -0
  43. package/assets/esri/core/workers/chunks/692f0093c444fcc752b5.js +1 -0
  44. package/assets/esri/core/workers/chunks/69627b2634da64dd885f.js +1 -0
  45. package/assets/esri/core/workers/chunks/6a7de221cea4426cb490.js +1 -0
  46. package/assets/esri/core/workers/chunks/7030a4d0714a35995a58.js +1 -0
  47. package/assets/esri/core/workers/chunks/72d20d3957d612f86431.js +1 -0
  48. package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +1 -0
  49. package/assets/esri/core/workers/chunks/7a0b4dc0cda190367a39.js +1 -0
  50. package/assets/esri/core/workers/chunks/{ab1660f5f8a5268c2fac.js → 84038dd85005fea413eb.js} +1 -1
  51. package/assets/esri/core/workers/chunks/849f446c718e892f39ce.js +1 -0
  52. package/assets/esri/core/workers/chunks/{8ac2098ecdc40ad41055.js → 8502274806ea52308822.js} +1 -1
  53. package/assets/esri/core/workers/chunks/865cebc5c982c040ab6f.js +1 -0
  54. package/assets/esri/core/workers/chunks/{76196c414e48834f7b92.js → 8f008eedb11685ee2048.js} +1 -1
  55. package/assets/esri/core/workers/chunks/90d797ab82d4a68ba32f.js +1 -0
  56. package/assets/esri/core/workers/chunks/9184c947cdefe06bf551.js +1 -0
  57. package/assets/esri/core/workers/chunks/9976eaa81085c0d17e14.js +1 -0
  58. package/assets/esri/core/workers/chunks/{177f353ce72133e2eeed.js → 9c2436464b7dfd666678.js} +1 -1
  59. package/assets/esri/core/workers/chunks/a125650edbed802e419a.js +1 -0
  60. package/assets/esri/core/workers/chunks/{23fd4de56de352f63e2d.js → a2196a49f89d57a0a1c7.js} +1 -1
  61. package/assets/esri/core/workers/chunks/ad21757d78e372fa2ed6.js +1 -0
  62. package/assets/esri/core/workers/chunks/b01688ccc29d33bfc82d.js +1 -0
  63. package/assets/esri/core/workers/chunks/b5eff28cf482d920b9ea.js +1 -0
  64. package/assets/esri/core/workers/chunks/{04ecf15524ff3838c01c.js → ba4520ddcb6a49988da6.js} +1 -1
  65. package/assets/esri/core/workers/chunks/be55771758e4bcef0976.js +1 -0
  66. package/assets/esri/core/workers/chunks/bead830a677690eeb6fb.js +1 -0
  67. package/assets/esri/core/workers/chunks/c131e0dd180a4c10e12e.js +1 -0
  68. package/assets/esri/core/workers/chunks/c1cf3edce15f09648eb4.js +1 -0
  69. package/assets/esri/core/workers/chunks/c4f78a481f43cfae7b63.js +1 -0
  70. package/assets/esri/core/workers/chunks/c570b90995c65bbb2e14.js +1 -0
  71. package/assets/esri/core/workers/chunks/c576bef77e34920af188.js +1 -0
  72. package/assets/esri/core/workers/chunks/c9feffb9884cfed52c4b.js +1 -0
  73. package/assets/esri/core/workers/chunks/cc97e4fd0dacad970a23.js +1 -0
  74. package/assets/esri/core/workers/chunks/ce324dde6d7daea33638.js +1 -0
  75. package/assets/esri/core/workers/chunks/d1d6154b4af1c9cc497b.js +1 -0
  76. package/assets/esri/core/workers/chunks/d3c3fb079ad97970f834.js +1 -0
  77. package/assets/esri/core/workers/chunks/daae21cf77864f3293ef.js +1 -0
  78. package/assets/esri/core/workers/chunks/dc2f93453dfa40f623ab.js +1 -0
  79. package/assets/esri/core/workers/chunks/dcf6024dc19428ff2b9d.js +1 -0
  80. package/assets/esri/core/workers/chunks/dd30b02c5978c1c5f511.js +1 -0
  81. package/assets/esri/core/workers/chunks/de3f140058aa0b907b65.js +1 -0
  82. package/assets/esri/core/workers/chunks/df375d1b0dab5ecbd1be.js +1 -0
  83. package/assets/esri/core/workers/chunks/{ef2c3febcceedc44b3ac.js → dfd4782b11d6fdca0492.js} +1 -1
  84. package/assets/esri/core/workers/chunks/{48cc58890fddbcf69cef.js → e121d15b883184ee83e7.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{67e06d606c7fd2064adf.js → e2c6cd8dac01e129ccfe.js} +1 -1
  86. package/assets/esri/core/workers/chunks/e3b212f8af448ec29eef.js +1 -0
  87. package/assets/esri/core/workers/chunks/e4042e43f0081fe49f7b.js +1 -0
  88. package/assets/esri/core/workers/chunks/e480e7d5f40049a2053b.js +1 -0
  89. package/assets/esri/core/workers/chunks/eaab787a5f2445be5e5a.js +1 -0
  90. package/assets/esri/core/workers/chunks/edd36a1fc80b1d29907e.js +1 -0
  91. package/assets/esri/core/workers/chunks/ee0dc906cc7979080329.js +1 -0
  92. package/assets/esri/core/workers/chunks/f07fb9b3fa30d7ee1681.js +1 -0
  93. package/assets/esri/core/workers/chunks/f09bc86cd52224febfcb.js +1 -0
  94. package/assets/esri/core/workers/chunks/{037c67ef5c4398d5954d.js → f2dab9fcd90ce38ae3d1.js} +1 -1
  95. package/assets/esri/core/workers/chunks/f39c700f3db7db52b522.js +1 -0
  96. package/assets/esri/core/workers/chunks/f3b4159c0722df8ffe13.js +1 -0
  97. package/assets/esri/core/workers/chunks/f3dc0bc0e00635855a7a.js +1 -0
  98. package/assets/esri/core/workers/chunks/f45064066e1ab041a0b2.js +1 -0
  99. package/assets/esri/core/workers/chunks/f7398cfd8bbd041bd635.js +1 -0
  100. package/assets/esri/core/workers/chunks/f9dc38761b314d33890f.js +1 -0
  101. package/assets/esri/core/workers/chunks/fe6dcb21570395e46ce8.js +1 -0
  102. package/assets/esri/core/workers/chunks/{00580a68835aac653038.js → fefdd10bdd5a4c8d8ed0.js} +45 -48
  103. package/assets/esri/core/workers/chunks/ffe49d9e7df081bef4a5.js +1 -0
  104. package/assets/esri/themes/base/_core.scss +0 -2
  105. package/assets/esri/themes/dark/main.css +1 -1
  106. package/assets/esri/themes/light/main.css +1 -1
  107. package/assets/esri/themes/light/view.css +1 -1
  108. package/chunks/BlendLayers.glsl.js +1 -1
  109. package/chunks/Component.glsl.js +51 -54
  110. package/chunks/EmissionComposite.glsl.js +1 -1
  111. package/chunks/Fog.glsl.js +1 -1
  112. package/chunks/GaussianSplat.glsl.js +65 -21
  113. package/chunks/GaussianSplatDepth.glsl.js +53 -4
  114. package/chunks/GaussianSplatShadow.glsl.js +83 -19
  115. package/chunks/GlobalIllumination.glsl.js +2 -17
  116. package/chunks/LineMarker.glsl.js +32 -31
  117. package/chunks/OITAddEmission.glsl.js +1 -1
  118. package/chunks/RasterColorizer.glsl.js +1 -1
  119. package/chunks/RibbonLine.glsl.js +34 -34
  120. package/chunks/Terrain.glsl.js +3 -4
  121. package/chunks/Water.glsl.js +22 -23
  122. package/config.d.ts +12 -9
  123. package/config.js +1 -1
  124. package/form/FormTemplate.d.ts +1 -1
  125. package/form/elements/AttachmentElement.d.ts +2 -0
  126. package/form/elements/FieldElement.d.ts +2 -2
  127. package/form/elements/FieldElement.js +1 -1
  128. package/form/elements/RelationshipElement.d.ts +1 -1
  129. package/form/elements/TextElement.d.ts +2 -2
  130. package/form/elements/UtilityNetworkAssociationsElement.d.ts +1 -1
  131. package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
  132. package/form/elements/inputs/inputUtils.js +1 -1
  133. package/form/elements/inputs/types.d.ts +19 -0
  134. package/form/elements/inputs.d.ts +3 -2
  135. package/form/elements/inputs.js +1 -1
  136. package/geometry/operators/containsOperator.d.ts +1 -1
  137. package/geometry/operators/densifyOperator.d.ts +1 -1
  138. package/geometry/operators/differenceOperator.d.ts +6 -4
  139. package/geometry/operators/distanceOperator.d.ts +1 -1
  140. package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
  141. package/geometry/operators/graphicBufferOperator.d.ts +6 -6
  142. package/geometry/operators/integrateOperator.d.ts +2 -2
  143. package/geometry/operators/intersectsOperator.d.ts +3 -3
  144. package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
  145. package/geometry/operators/locateBetweenOperator.d.ts +2 -2
  146. package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
  147. package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
  148. package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
  149. package/geometry/operators/projectOperator.d.ts +2 -2
  150. package/geometry/operators/proximityOperator.d.ts +15 -15
  151. package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
  152. package/geometry/operators/simplifyOperator.d.ts +2 -2
  153. package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
  154. package/geometry/operators/support/Transformation.d.ts +8 -8
  155. package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
  156. package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
  157. package/geometry/operators/withinOperator.d.ts +3 -3
  158. package/interfaces.d.ts +0 -14
  159. package/kernel.js +1 -1
  160. package/layers/GeospatialPDFLayer.d.ts +2 -2
  161. package/layers/ParquetLayer.d.ts +1 -1
  162. package/layers/VideoLayer.d.ts +5 -5
  163. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  164. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  165. package/layers/orientedImagery/transformations/rotationUtils.js +2 -0
  166. package/layers/orientedImagery/transformations/utils.js +1 -1
  167. package/layers/save/parquetLayerUtils.js +1 -1
  168. package/layers/support/vectorTileLayerLoader.js +1 -1
  169. package/package.json +2 -2
  170. package/popup/FeaturesModel.js +1 -1
  171. package/popup/support/featureUtils.js +1 -1
  172. package/rest/featureService/FeatureService.d.ts +0 -5
  173. package/rest/networks/support/TraceLocation.d.ts +2 -1
  174. package/rest/networks/support/TraceResult.d.ts +0 -4
  175. package/rest/support/OutDistance.d.ts +0 -1
  176. package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
  177. package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
  178. package/smartMapping/support/adapters/support/histogramUtils.js +1 -1
  179. package/support/BasemapStyle.d.ts +2 -2
  180. package/symbols/cim/types.d.ts +7 -9
  181. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  182. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSource.js +1 -1
  183. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSourceWorker.js +1 -1
  184. package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +2 -0
  185. package/views/2d/engine/webgl/animations/instructions.js +1 -1
  186. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  187. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  188. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  189. package/views/2d/layers/features/FeatureContainer.js +1 -1
  190. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  191. package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
  192. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
  193. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  194. package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
  195. package/views/3d/analysis/support/projectionUtils.js +1 -1
  196. package/views/3d/environment/SunLighting.d.ts +15 -2
  197. package/views/3d/environment/VirtualLighting.d.ts +15 -2
  198. package/views/3d/input/SceneInputManager.js +1 -1
  199. package/views/3d/input/handlers/ground/GroundMouseWheelMove.js +2 -0
  200. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  201. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  202. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
  203. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  204. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  205. package/views/3d/navigation/Navigation3D.js +1 -1
  206. package/views/3d/state/controllers/GroundMouseWheelController.js +2 -0
  207. package/views/3d/state/controllers/PointToPointAnimationController.js +1 -1
  208. package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
  209. package/views/3d/state/utils/groundNavigationUtils.js +1 -1
  210. package/views/3d/support/ResourceController.js +1 -1
  211. package/views/3d/terrain/BlendLayers.glsl.js +1 -1
  212. package/views/3d/terrain/RasterColorizer.glsl.js +1 -1
  213. package/views/3d/terrain/TerrainRenderer.js +1 -1
  214. package/views/3d/terrain/TerrainSurface.js +1 -1
  215. package/views/3d/terrain/TileAgent.js +1 -1
  216. package/views/3d/terrain/TileCompositor.js +1 -1
  217. package/views/3d/terrain/TileRenderer.js +1 -1
  218. package/views/3d/webgl-engine/Stage.js +1 -1
  219. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  220. package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -26
  221. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +18 -21
  222. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js +7 -8
  223. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js +5 -5
  224. package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js +10 -12
  225. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +22 -25
  226. package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -5
  227. package/views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js +6 -0
  228. package/views/3d/webgl-engine/core/shaderLibrary/shading/getLocalUp.glsl.js +4 -0
  229. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
  230. package/views/3d/webgl-engine/core/shaderLibrary/terrain/{TileBackground.glsl.js → blendLayers.glsl.js} +10 -11
  231. package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +8 -2
  232. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
  233. package/views/3d/webgl-engine/effects/RenderPluginContext.js +2 -0
  234. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  235. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  236. package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +3 -3
  237. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  238. package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
  239. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  240. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  241. package/views/3d/webgl-engine/lib/edgeRendering/EdgeUtil.glsl.js +30 -35
  242. package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
  243. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  244. package/views/3d/webgl-engine/shaders/EmissiveTechniqueConfiguration.js +1 -1
  245. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  246. package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +1 -1
  247. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +70 -108
  248. package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
  249. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  250. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  251. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  252. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  253. package/views/VideoView.d.ts +10 -0
  254. package/views/VideoView.js +1 -1
  255. package/views/draw/DrawOperation.js +1 -1
  256. package/views/draw/DrawScreenTool.js +1 -1
  257. package/views/input/types.d.ts +2 -4
  258. package/views/interactive/options/LabelOptions.d.ts +5 -5
  259. package/views/interactive/options/SnappingOptions.d.ts +2 -2
  260. package/views/layers/LayerView.d.ts +10 -2
  261. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +2 -3
  262. package/widgets/Editor/EditorViewModel.d.ts +10 -12
  263. package/widgets/Editor/VisibleElements.d.ts +4 -0
  264. package/widgets/Editor.d.ts +2 -0
  265. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  266. package/widgets/FeatureTable/support/EditableColumnTemplateMixin.js +1 -1
  267. package/widgets/FeatureTable.js +1 -1
  268. package/widgets/Features/FeaturesViewModel.js +1 -1
  269. package/widgets/OrientedImageryViewer/ImageMeasurementWorker.js +1 -1
  270. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  271. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  272. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  273. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  274. package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +2 -0
  275. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  276. package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
  277. package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
  278. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  279. package/widgets/PanoramicViewer/utils.js +1 -1
  280. package/widgets/Search/LayerSearchSource.d.ts +1 -1
  281. package/widgets/Sketch/VisibleElements.d.ts +4 -0
  282. package/widgets/Sketch.d.ts +2 -0
  283. package/widgets/support/iconUtils.js +1 -1
  284. package/assets/esri/core/workers/chunks/010f57ec7fdbedf78d02.js +0 -1
  285. package/assets/esri/core/workers/chunks/0487e1d7a7cecf7c1c25.js +0 -1
  286. package/assets/esri/core/workers/chunks/09300e74e5b014ce6269.js +0 -1
  287. package/assets/esri/core/workers/chunks/0bd04bcd4b2710838d48.js +0 -1
  288. package/assets/esri/core/workers/chunks/0d9c4c6c571ce26d356b.js +0 -1
  289. package/assets/esri/core/workers/chunks/112ed86f812e4400a7e0.js +0 -1
  290. package/assets/esri/core/workers/chunks/151e5799ede763a03ee2.js +0 -1
  291. package/assets/esri/core/workers/chunks/173f89c55a5c79ff065b.js +0 -1
  292. package/assets/esri/core/workers/chunks/2447d2e2a4a3ab8fcf94.js +0 -1
  293. package/assets/esri/core/workers/chunks/2a36fe3f3f257a779a1b.js +0 -1
  294. package/assets/esri/core/workers/chunks/2a97268000c6d03ef720.js +0 -1
  295. package/assets/esri/core/workers/chunks/2cf8172be83b10b11bdc.js +0 -1
  296. package/assets/esri/core/workers/chunks/2df37a9a95ceebb87a5f.js +0 -1
  297. package/assets/esri/core/workers/chunks/2e00c155e447e4930442.js +0 -1
  298. package/assets/esri/core/workers/chunks/2f91fd61019d2a37476d.js +0 -1
  299. package/assets/esri/core/workers/chunks/30af63b3b750142faadb.js +0 -1
  300. package/assets/esri/core/workers/chunks/3a47fc97c400fca2c736.js +0 -1
  301. package/assets/esri/core/workers/chunks/3cd04d23b73beaf79650.js +0 -1
  302. package/assets/esri/core/workers/chunks/426b4eb500fdfe9df325.js +0 -1
  303. package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +0 -1
  304. package/assets/esri/core/workers/chunks/47c97640ec525676918b.js +0 -1
  305. package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +0 -1
  306. package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +0 -1
  307. package/assets/esri/core/workers/chunks/4cb751dc8d00bdaeb04c.js +0 -1
  308. package/assets/esri/core/workers/chunks/518ab22f80c3300bcfff.js +0 -1
  309. package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +0 -1
  310. package/assets/esri/core/workers/chunks/58609bf94f72bc4f1952.js +0 -1
  311. package/assets/esri/core/workers/chunks/586a929bc037e23857af.js +0 -1
  312. package/assets/esri/core/workers/chunks/5c7780f804d789cb37f5.js +0 -1
  313. package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +0 -1
  314. package/assets/esri/core/workers/chunks/603fdbbe9534c614928f.js +0 -1
  315. package/assets/esri/core/workers/chunks/611e3cdf67283c11576f.js +0 -1
  316. package/assets/esri/core/workers/chunks/6431480ba0fa8c8d487f.js +0 -1
  317. package/assets/esri/core/workers/chunks/652faf4359ac072c5dde.js +0 -1
  318. package/assets/esri/core/workers/chunks/65c98f3449044fa4fd79.js +0 -1
  319. package/assets/esri/core/workers/chunks/6b9961261241fdce0e94.js +0 -1
  320. package/assets/esri/core/workers/chunks/6dfe96b056bec30068df.js +0 -1
  321. package/assets/esri/core/workers/chunks/6f897b4e7ddd1dd1672b.js +0 -1
  322. package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +0 -1
  323. package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +0 -29
  324. package/assets/esri/core/workers/chunks/7393f63043a1da3d05a6.js +0 -1
  325. package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +0 -1
  326. package/assets/esri/core/workers/chunks/75d551a449bba61ce238.js +0 -1
  327. package/assets/esri/core/workers/chunks/7748c2886d0122b40eeb.js +0 -1
  328. package/assets/esri/core/workers/chunks/78643f116677950ea29a.js +0 -1
  329. package/assets/esri/core/workers/chunks/78fbe330f16bdbdb886e.js +0 -1
  330. package/assets/esri/core/workers/chunks/7e0f04a5038e2a4f6e4b.js +0 -1
  331. package/assets/esri/core/workers/chunks/7f16ae01ccd9b6114d1c.js +0 -1
  332. package/assets/esri/core/workers/chunks/90153b5230b3a4985c14.js +0 -1
  333. package/assets/esri/core/workers/chunks/9189dfe19a2a2ccd5173.js +0 -1
  334. package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +0 -1
  335. package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +0 -1
  336. package/assets/esri/core/workers/chunks/99f51d5d9da6e9bfc430.js +0 -1
  337. package/assets/esri/core/workers/chunks/9aebe876b1a2fb075f9c.js +0 -1
  338. package/assets/esri/core/workers/chunks/9b6929faf649e81265fb.js +0 -1
  339. package/assets/esri/core/workers/chunks/9dd1fc56eb1ea6eb705e.js +0 -1
  340. package/assets/esri/core/workers/chunks/9dd48e75b4e8d9811d81.js +0 -1
  341. package/assets/esri/core/workers/chunks/a163c6005aba3378edaa.js +0 -1
  342. package/assets/esri/core/workers/chunks/a8286febe371dc186aaa.js +0 -1
  343. package/assets/esri/core/workers/chunks/acb265a22be5e12f38e5.js +0 -1
  344. package/assets/esri/core/workers/chunks/b12acf1f694f82e00df9.js +0 -1
  345. package/assets/esri/core/workers/chunks/b83cef2d3f528726d492.js +0 -1
  346. package/assets/esri/core/workers/chunks/b9596d862da1ec342cd3.js +0 -1
  347. package/assets/esri/core/workers/chunks/bc1fcc9c897461e68e29.js +0 -1
  348. package/assets/esri/core/workers/chunks/bdc221d94300c225665a.js +0 -1
  349. package/assets/esri/core/workers/chunks/be97a629e2ae4d13ceb3.js +0 -1
  350. package/assets/esri/core/workers/chunks/bfb39590c548188f5052.js +0 -1
  351. package/assets/esri/core/workers/chunks/c2318c014e97ba519be8.js +0 -1
  352. package/assets/esri/core/workers/chunks/c29091fe157564cffcf7.js +0 -1
  353. package/assets/esri/core/workers/chunks/c62237c344e341619341.js +0 -1
  354. package/assets/esri/core/workers/chunks/c8eae00b0ec87d8b2ff3.js +0 -1
  355. package/assets/esri/core/workers/chunks/cdb5c26fed7d9a97db49.js +0 -1
  356. package/assets/esri/core/workers/chunks/cdf0c7706d3e1221f49b.js +0 -1
  357. package/assets/esri/core/workers/chunks/cea0db3ee326f60610eb.js +0 -1
  358. package/assets/esri/core/workers/chunks/d7f2f1708d2a2668676c.js +0 -1
  359. package/assets/esri/core/workers/chunks/daf9b691817e83a11f3c.js +0 -1
  360. package/assets/esri/core/workers/chunks/db41490bd39d863305bf.js +0 -1
  361. package/assets/esri/core/workers/chunks/ddc95cdac6c06fc4794c.js +0 -1
  362. package/assets/esri/core/workers/chunks/df26ec0b508cf4716e0a.js +0 -1
  363. package/assets/esri/core/workers/chunks/e11159e3dc3353b27c57.js +0 -1
  364. package/assets/esri/core/workers/chunks/e4a57a0a9629faafd6c6.js +0 -1
  365. package/assets/esri/core/workers/chunks/ebc1a2ef3aed8aa29424.js +0 -1
  366. package/assets/esri/core/workers/chunks/ec1c4d66142b6efb0e8b.js +0 -1
  367. package/assets/esri/core/workers/chunks/ef12fa3574d4cbf8b084.js +0 -1
  368. package/assets/esri/core/workers/chunks/f2d56f5c15d5977e1d19.js +0 -1
  369. package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +0 -1
  370. package/assets/esri/core/workers/chunks/f905f1a1aa4c123cbe83.js +0 -1
  371. package/assets/esri/core/workers/chunks/fc139f251dc0523074e7.js +0 -1
  372. package/assets/esri/themes/base/widgets/_VideoPlayer.scss +0 -129
  373. package/assets/esri/widgets/VideoPlayer/t9n/messages.ar.json +0 -1
  374. package/assets/esri/widgets/VideoPlayer/t9n/messages.bg.json +0 -1
  375. package/assets/esri/widgets/VideoPlayer/t9n/messages.bs.json +0 -1
  376. package/assets/esri/widgets/VideoPlayer/t9n/messages.ca.json +0 -1
  377. package/assets/esri/widgets/VideoPlayer/t9n/messages.cs.json +0 -1
  378. package/assets/esri/widgets/VideoPlayer/t9n/messages.da.json +0 -1
  379. package/assets/esri/widgets/VideoPlayer/t9n/messages.de.json +0 -1
  380. package/assets/esri/widgets/VideoPlayer/t9n/messages.el.json +0 -1
  381. package/assets/esri/widgets/VideoPlayer/t9n/messages.en.json +0 -1
  382. package/assets/esri/widgets/VideoPlayer/t9n/messages.es.json +0 -1
  383. package/assets/esri/widgets/VideoPlayer/t9n/messages.et.json +0 -1
  384. package/assets/esri/widgets/VideoPlayer/t9n/messages.fi.json +0 -1
  385. package/assets/esri/widgets/VideoPlayer/t9n/messages.fr.json +0 -1
  386. package/assets/esri/widgets/VideoPlayer/t9n/messages.he.json +0 -1
  387. package/assets/esri/widgets/VideoPlayer/t9n/messages.hr.json +0 -1
  388. package/assets/esri/widgets/VideoPlayer/t9n/messages.hu.json +0 -1
  389. package/assets/esri/widgets/VideoPlayer/t9n/messages.id.json +0 -1
  390. package/assets/esri/widgets/VideoPlayer/t9n/messages.it.json +0 -1
  391. package/assets/esri/widgets/VideoPlayer/t9n/messages.ja.json +0 -1
  392. package/assets/esri/widgets/VideoPlayer/t9n/messages.ko.json +0 -1
  393. package/assets/esri/widgets/VideoPlayer/t9n/messages.lt.json +0 -1
  394. package/assets/esri/widgets/VideoPlayer/t9n/messages.lv.json +0 -1
  395. package/assets/esri/widgets/VideoPlayer/t9n/messages.nl.json +0 -1
  396. package/assets/esri/widgets/VideoPlayer/t9n/messages.no.json +0 -1
  397. package/assets/esri/widgets/VideoPlayer/t9n/messages.pl.json +0 -1
  398. package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-BR.json +0 -1
  399. package/assets/esri/widgets/VideoPlayer/t9n/messages.pt-PT.json +0 -1
  400. package/assets/esri/widgets/VideoPlayer/t9n/messages.ro.json +0 -1
  401. package/assets/esri/widgets/VideoPlayer/t9n/messages.ru.json +0 -1
  402. package/assets/esri/widgets/VideoPlayer/t9n/messages.sk.json +0 -1
  403. package/assets/esri/widgets/VideoPlayer/t9n/messages.sl.json +0 -1
  404. package/assets/esri/widgets/VideoPlayer/t9n/messages.sr.json +0 -1
  405. package/assets/esri/widgets/VideoPlayer/t9n/messages.sv.json +0 -1
  406. package/assets/esri/widgets/VideoPlayer/t9n/messages.th.json +0 -1
  407. package/assets/esri/widgets/VideoPlayer/t9n/messages.tr.json +0 -1
  408. package/assets/esri/widgets/VideoPlayer/t9n/messages.uk.json +0 -1
  409. package/assets/esri/widgets/VideoPlayer/t9n/messages.vi.json +0 -1
  410. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-CN.json +0 -1
  411. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-HK.json +0 -1
  412. package/assets/esri/widgets/VideoPlayer/t9n/messages.zh-TW.json +0 -1
  413. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +0 -232
  414. package/widgets/VideoPlayer/VideoPlayerViewModel.js +0 -2
  415. package/widgets/VideoPlayer/components/MetadataSection.js +0 -2
  416. package/widgets/VideoPlayer/components/PlayerActionsGroup.js +0 -2
  417. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +0 -2
  418. package/widgets/VideoPlayer/components/SettingsButton.js +0 -2
  419. package/widgets/VideoPlayer/css.js +0 -2
  420. package/widgets/VideoPlayer.d.ts +0 -119
  421. package/widgets/VideoPlayer.js +0 -2
@@ -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};
@@ -1,12 +1,10 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{glsl as e}from"../../shaderModules/glsl.js";function t(t,{spherical:n}){t.code.add(n?`vec3 getLocalUp(in vec3 pos, in vec3 origin) { return normalize(pos + origin); }
3
- vec3 getLocalUp(in vec3 pos) { return normalize(pos); }`:`vec3 getLocalUp(in vec3 pos, in vec3 origin) { return vec3(0.0, 0.0, 1.0); }
4
- vec3 getLocalUp(in vec3 pos) { return vec3(0.0, 0.0, 1.0); }`),n?t.code.add(e`mat3 getTBNMatrix(in vec3 n) {
2
+ import{getLocalUp as e}from"./getLocalUp.glsl.js";import{glsl as t}from"../../shaderModules/glsl.js";function n(n,r){n.include(e,r),r.spherical?n.code.add(t`mat3 getTBNMatrix(in vec3 n) {
5
3
  vec3 t = normalize(cross(vec3(0.0, 0.0, 1.0), n));
6
4
  vec3 b = normalize(cross(n, t));
7
5
  return mat3(t, b, n);
8
- }`):t.code.add(e`mat3 getTBNMatrix(in vec3 n) {
6
+ }`):n.code.add(t`mat3 getTBNMatrix(in vec3 n) {
9
7
  vec3 t = vec3(1.0, 0.0, 0.0);
10
8
  vec3 b = normalize(cross(n, t));
11
9
  return mat3(t, b, n);
12
- }`)}export{t as NormalUtils};
10
+ }`)}export{n as NormalUtils};
@@ -0,0 +1,6 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ import{UNIT_Z as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getLocalUp as t}from"./getLocalUp.glsl.js";import{If as n,glsl as r}from"../../shaderModules/glsl.js";function i(i,a){let{vertex:o,fragment:s,varyings:c}=i,{spherical:l}=a;l?(o.include(t,a),c.add(`upNormal`,`vec3`)):s.constants.add(`upNormal`,`vec3`,e),o.code.add(r`
3
+ void forwardLocalUp(vec3 pos, vec3 origin) {
4
+ ${n(l,r`upNormal = getLocalUp(pos, origin);`)}
5
+ }
6
+ `)}export{i as forwardLocalUp};
@@ -0,0 +1,4 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
+ function e(e,{spherical:t}){e.code.add(t?`vec3 getLocalUp(in vec3 pos, in vec3 origin) { return normalize(pos + origin); }
3
+ vec3 getLocalUp(in vec3 pos) { return normalize(pos); }`:`vec3 getLocalUp(in vec3 pos, in vec3 origin) { return vec3(0.0, 0.0, 1.0); }
4
+ vec3 getLocalUp(in vec3 pos) { return vec3(0.0, 0.0, 1.0); }`)}export{e as getLocalUp};
@@ -9,7 +9,7 @@ import{ReadShadowMapPassParameters as e}from"../shading/readShadow.glsl.js";impo
9
9
  if (opacities.y <= 0.0) {
10
10
  return color * opacities.z * opacities.x;
11
11
  }
12
- vec4 bg = vec4(${_?r`backgroundColor`:r`gridColor(uv)`} * opacities.y, opacities.y);
12
+ vec4 bg = vec4(${_?`backgroundColor`:`gridColor(uv)`} * opacities.y, opacities.y);
13
13
  vec4 layer = color * opacities.z;
14
14
  return (bg * (1.0 - layer.a) + layer) * opacities.x;
15
15
  `,`return color;`)}
@@ -1,17 +1,16 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{ZEROS as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{BackgroundGrid as t}from"./BackgroundGrid.glsl.js";import{BlendModes as n}from"../util/BlendModes.glsl.js";import{Float3PassUniform as r}from"../../shaderModules/Float3PassUniform.js";import{FloatPassUniform as i}from"../../shaderModules/FloatPassUniform.js";import{glsl as a,If as o}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../../shaderModules/Texture2DPassUniform.js";import{NoParameters as c}from"../../../../../webgl/NoParameters.js";class l extends c{constructor(){super(...arguments),this.baseOpacity=1,this.backgroundColor=e,this.fboTexture=null}}function u(e,c){let{output:l,blendMode:u,applyBaseOpacity:d,premultipliedAlphaSource:f}=c,p=e.fragment;d&&p.uniforms.add(new i(`baseOpacity`,e=>e.baseOpacity));let m=u!==0,h=!m&&!f&&(l===1&&!d||l===4);p.include(n,c);let g=``;switch(l){case 4:case 0:g=a`vec4(0.0)`;break;case 2:p.uniforms.add(new r(`backgroundColor`,e=>e.backgroundColor)),g=a`vec4(backgroundColor, 1.0)`;break;case 3:p.include(t),g=a`vec4(gridColor(uv), 1.0)`;break;case 1:p.uniforms.add(new s(`fboColor`,e=>e.fboTexture)),g=a`texelFetch(fboColor, ivec2(gl_FragCoord.xy), 0)`}p.code.add(a`
2
+ import{ZEROS as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{BackgroundGrid as t}from"./BackgroundGrid.glsl.js";import{BlendModes as n}from"../util/BlendModes.glsl.js";import{Float3PassUniform as r}from"../../shaderModules/Float3PassUniform.js";import{FloatPassUniform as i}from"../../shaderModules/FloatPassUniform.js";import{If as a,glsl as o}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../../shaderModules/Texture2DPassUniform.js";import{NoParameters as c}from"../../../../../webgl/NoParameters.js";class l extends c{constructor(){super(...arguments),this.baseOpacity=1,this.backgroundColor=e,this.fboTexture=null}}function u(e,c){let{output:l,blendMode:u,applyBaseOpacity:d,premultipliedAlphaSource:f}=c,p=e.fragment;d&&p.uniforms.add(new i(`baseOpacity`,e=>e.baseOpacity)),p.include(n,c);let m=``;switch(l){case 4:case 0:m=`vec4(0.0)`;break;case 2:p.uniforms.add(new r(`backgroundColor`,e=>e.backgroundColor)),m=`vec4(backgroundColor, 1.0)`;break;case 3:p.include(t),m=`vec4(gridColor(uv), 1.0)`;break;case 1:p.uniforms.add(new s(`fboColor`,e=>e.fboTexture)),m=`texelFetch(fboColor, ivec2(gl_FragCoord.xy), 0)`}p.code.add(o`
3
3
  vec4 getBackground(vec2 uv) {
4
- return ${o(d,a`baseOpacity *`)} ${g};
5
- }`),m?p.code.add(a`vec4 blendLayers(vec2 bgUV, vec4 colorLayer, float opacity) {
4
+ return ${a(d,`baseOpacity *`)} ${m};
5
+ }`),u===0?!f&&(l===1&&!d||l===4)?p.code.add(o`vec4 blendLayers(vec2 bgUV, vec4 colorLayer, float opacity) {
6
+ return colorLayer * opacity;
7
+ }`):p.code.add(o`vec4 blendLayers(vec2 bgUV, vec4 colorLayer, float opacity) {
8
+ float composeAlpha = colorLayer.a * opacity;
9
+ vec4 bgColor = getBackground(bgUV);
10
+ return bgColor * (1.0 - composeAlpha) + colorLayer * opacity;
11
+ }`):p.code.add(o`vec4 blendLayers(vec2 bgUV, vec4 colorLayer, float opacity) {
6
12
  vec3 cl = colorLayer.a == 0.0 ? colorLayer.rgb : colorLayer.rgb / colorLayer.a;
7
13
  vec4 bgColor = getBackground(bgUV);
8
14
  vec3 cb = bgColor.a == 0.0 ? bgColor.rgb : bgColor.rgb / bgColor.a;
9
15
  return applyBlendMode(clamp(cl, vec3(0.0), vec3(1.0)), colorLayer.a * opacity, cb, bgColor.a);
10
- }`):p.code.add(a`
11
- vec4 blendLayers(vec2 bgUV, vec4 colorLayer, float opacity) {
12
- float composeAlpha = colorLayer.a * opacity;
13
- ${o(h,a`return colorLayer * opacity;`,a`
14
- vec4 bgColor = getBackground(bgUV);
15
- return bgColor * (1.0 - composeAlpha) + colorLayer * opacity;
16
- `)}
17
- }`)}export{u as TileBackground,l as TileBackgroundPassParameters};
16
+ }`)}export{l as TileBackgroundPassParameters,u as blendLayers};
@@ -7,8 +7,8 @@ float mid = 0.5 * (covariance2D.x + covariance2D.z);
7
7
  float radius = length(vec2((covariance2D.x - covariance2D.z) * 0.5, covariance2D.y));
8
8
  return vec2(mid + radius, mid - radius);
9
9
  }
10
- float computeGaussianEllipseThreshold(float gaussianLogAlphaCutoff) {
11
- return max(0.0, -2.0 * gaussianLogAlphaCutoff);
10
+ float computeGaussianEllipseThreshold(float logFalloffCutoff) {
11
+ return max(0.0, -2.0 * logFalloffCutoff);
12
12
  }
13
13
  bool rejectGaussianByMinimumRadius(float maxRadius, float opacity, float minSplatRadius) {
14
14
  return minSplatRadius > 0.0 && maxRadius * opacity < minSplatRadius;
@@ -23,6 +23,12 @@ return any(greaterThan(abs(ndcPosition) - radiusNDC, vec2(1.0)));
23
23
  vec2 computeGaussianUnitQuadCorner(int vertexID) {
24
24
  return vec2((vertexID << 1) & 2, vertexID & 2) - 1.0;
25
25
  }
26
+ vec2 computeGaussianQuadOffset(vec3 covariance2D, float determinant, vec2 coordinates) {
27
+ float inverseRadiusX = inversesqrt(covariance2D.x);
28
+ vec2 choleskyAxisX = covariance2D.xy * inverseRadiusX;
29
+ vec2 choleskyAxisY = vec2(0.0, sqrt(determinant) * inverseRadiusX);
30
+ return coordinates.x * choleskyAxisX + coordinates.y * choleskyAxisY;
31
+ }
26
32
  float evaluateGaussianExponent(vec2 canonicalCoordinates) {
27
33
  return -0.5 * dot(canonicalCoordinates, canonicalCoordinates);
28
34
  }`)}export{t as GaussianSplatEvaluation};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{set as e}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{Float2BindUniform as n}from"../../shaderModules/Float2BindUniform.js";import{Float3BindUniform as r}from"../../shaderModules/Float3BindUniform.js";import{Float4BindUniform as i}from"../../shaderModules/Float4BindUniform.js";import{FloatBindUniform as a}from"../../shaderModules/FloatBindUniform.js";import{Matrix4BindUniform as o}from"../../shaderModules/Matrix4BindUniform.js";const s=new o(`view`,({camera:e})=>e.viewMatrix),c=new o(`inverseViewMatrix`,({camera:e})=>e.inverseViewMatrix),l=new o(`proj`,({camera:e})=>e.projectionMatrix),u=new o(`inverseProjectionMatrix`,({camera:e})=>e.inverseProjectionMatrix),d=new r(`cameraPosition`,({camera:e})=>e.eye),f=new o(`viewNormal`,({camera:e})=>e.viewInverseTransposeMatrix),p=new n(`nearFar`,({camera:e})=>e.nearFar),m=new i(`viewport`,({camera:e})=>e.fullViewport),h=new a(`pixelRatio`,e=>e.camera.pixelRatio/e.overlayStretch),g=new a(`screenPixelSizePerDistance`,({camera:e})=>e.screenPixelSizePerDistance),_=new a(`worldToScreenPerDistanceRatio`,({camera:e})=>1/e.screenPixelSizePerDistance),v=new a(`renderPixelSizePerDistance`,({camera:e})=>e.renderPixelSizePerDistance),y=new a(`metersPerRenderUnit`,e=>e.metersPerRenderUnit),b=new n(`inverseScreenSize`,({camera:t})=>e(S,1/t.fullWidth,1/t.fullHeight)),x=new n(`pixelToNDC`,({camera:t})=>e(S,2/t.fullViewport[2],2/t.fullViewport[3])),S=t();export{d as cameraPosition,u as inverseProjectionMatrix,b as inverseScreenSize,c as inverseViewMatrix,y as metersPerRenderUnit,p as nearFar,h as pixelRatio,x as pixelToNDC,l as projMatrix,v as renderPixelSizePerDistance,g as screenPixelSizePerDistance,s as viewMatrix,f as viewNormal,m as viewport,_ as worldToScreenPerDistanceRatio};
2
+ import{set as e}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{normalize as n,set as r}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as i}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Float2BindUniform as a}from"../../shaderModules/Float2BindUniform.js";import{Float3BindUniform as o}from"../../shaderModules/Float3BindUniform.js";import{Float4BindUniform as s}from"../../shaderModules/Float4BindUniform.js";import{FloatBindUniform as c}from"../../shaderModules/FloatBindUniform.js";import{Matrix4BindUniform as l}from"../../shaderModules/Matrix4BindUniform.js";const u=new l(`view`,({camera:e})=>e.viewMatrix),d=new l(`inverseViewMatrix`,({camera:e})=>e.inverseViewMatrix),f=new l(`proj`,({camera:e})=>e.projectionMatrix),p=new l(`inverseProjectionMatrix`,({camera:e})=>e.inverseProjectionMatrix),m=new o(`cameraPosition`,({camera:e})=>e.eye),h=new l(`viewNormal`,({camera:e})=>e.viewInverseTransposeMatrix),g=new o(`localUpView`,({camera:e})=>{let t=e.viewInverseTransposeMatrix;return n(D,r(D,t[8],t[9],t[10]))}),_=new a(`nearFar`,({camera:e})=>e.nearFar),v=new s(`viewport`,({camera:e})=>e.fullViewport),y=new c(`pixelRatio`,e=>e.camera.pixelRatio/e.overlayStretch),b=new c(`screenPixelSizePerDistance`,({camera:e})=>e.screenPixelSizePerDistance),x=new c(`worldToScreenPerDistanceRatio`,({camera:e})=>1/e.screenPixelSizePerDistance),S=new c(`renderPixelSizePerDistance`,({camera:e})=>e.renderPixelSizePerDistance),C=new c(`metersPerRenderUnit`,e=>e.metersPerRenderUnit),w=new a(`inverseScreenSize`,({camera:t})=>e(E,1/t.fullWidth,1/t.fullHeight)),T=new a(`pixelToNDC`,({camera:t})=>e(E,2/t.fullViewport[2],2/t.fullViewport[3])),E=t(),D=i();export{m as cameraPosition,p as inverseProjectionMatrix,w as inverseScreenSize,d as inverseViewMatrix,g as localUpView,C as metersPerRenderUnit,_ as nearFar,y as pixelRatio,T as pixelToNDC,f as projMatrix,S as renderPixelSizePerDistance,b as screenPixelSizePerDistance,u as viewMatrix,h as viewNormal,v as viewport,x as worldToScreenPerDistanceRatio};
@@ -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};