@arcgis/core 5.2.0-next.43 → 5.2.0-next.45

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 (207) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/0115681a3de6df0aebdf.js +1 -0
  3. package/assets/esri/core/workers/chunks/025caafc70ac26f0a4ed.js +1 -0
  4. package/assets/esri/core/workers/chunks/{9de18cea5780319302cb.js → 04a167c110fb7811169d.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{72fe7fb03c156f26a589.js → 08e18fb12533fc76e49c.js} +1 -1
  6. package/assets/esri/core/workers/chunks/{60e8524d324fd14444d7.js → 0a0732ba8271d7dc985c.js} +1 -1
  7. package/assets/esri/core/workers/chunks/0e64e20fedfe01a1985f.js +1 -0
  8. package/assets/esri/core/workers/chunks/{e6b5c015205d38abe037.js → 127b111ee53e4b9184f8.js} +1 -1
  9. package/assets/esri/core/workers/chunks/15351354afcbf840a23d.js +29 -0
  10. package/assets/esri/core/workers/chunks/{2d7cfc68a38dabd8898a.js → 176c5eaaa23a479c88e0.js} +1 -1
  11. package/assets/esri/core/workers/chunks/1d1f5578c7d8619f7a46.js +1 -0
  12. package/assets/esri/core/workers/chunks/268637fd6c50264acfc3.js +1 -0
  13. package/assets/esri/core/workers/chunks/296fa9fb80e521c30cb1.js +1 -0
  14. package/assets/esri/core/workers/chunks/{d7775ed1402946e414ef.js → 2974cddb0b0f67df7d2d.js} +1 -1
  15. package/assets/esri/core/workers/chunks/2c0d92c0e3511775401a.js +29 -0
  16. package/assets/esri/core/workers/chunks/{ce2320e7b9c4ca96ff27.js → 3252da57b800356116af.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{fd47ee8598e37fea03fe.js → 384b619854ef8a3f6e94.js} +1 -1
  18. package/assets/esri/core/workers/chunks/3af923abeb6e65c4468f.js +1 -0
  19. package/assets/esri/core/workers/chunks/{20fefb9278501781de14.js → 3f4f1595c8a77d072b04.js} +1 -1
  20. package/assets/esri/core/workers/chunks/4f09f208ece2ec1db727.js +1 -0
  21. package/assets/esri/core/workers/chunks/{f1f3fe9d2d96578f4f6b.js → 52efa4ded11c1e71f04f.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{57a1e2b716b74f0124f7.js → 549295a5db9bf1536491.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{284e88805184334396fe.js → 57374213084bef59b776.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{2a8d791aef3123e6a3c4.js → 57970d43cdcc5cf57a30.js} +1 -1
  25. package/assets/esri/core/workers/chunks/5f9c4dad6952c4c58ebf.js +1 -0
  26. package/assets/esri/core/workers/chunks/706230b70a36d2e038f7.js +1 -0
  27. package/assets/esri/core/workers/chunks/{4063ea53cba3dd897e53.js → 728ea88e7d4733230e1f.js} +71 -72
  28. package/assets/esri/core/workers/chunks/{e2f45990d8459d14cb90.js → 76713b700e053f8bad29.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{d082de5dd83bd73d209b.js → 8026cc0065f6520c4161.js} +1 -1
  30. package/assets/esri/core/workers/chunks/93e705c1147cc8ceca02.js +1 -0
  31. package/assets/esri/core/workers/chunks/a8033e606b2db1ee332d.js +1 -0
  32. package/assets/esri/core/workers/chunks/{7684f0c771d312e05bb4.js → ad5c2b0de6713d0a93a4.js} +58 -58
  33. package/assets/esri/core/workers/chunks/{9b1199104a6822ab7340.js → ae9f9e975d7a9d442fa5.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{6f408397e2c8a2ea9805.js → aea247138617e12b699b.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{26e7884d8639df4d994b.js → b03dcf3d55266745f3d1.js} +1 -1
  36. package/assets/esri/core/workers/chunks/b3cd17daf5a297b96705.js +29 -0
  37. package/assets/esri/core/workers/chunks/{c0637d1c9337a6ba46b0.js → b3cefc1895bfd62fc440.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{89682d9d4f606f82056b.js → bac4d4a9f3a9b7f6864d.js} +2 -2
  39. package/assets/esri/core/workers/chunks/{2f29f08cddd5add9388e.js → c01a121ebe571a848452.js} +1 -1
  40. package/assets/esri/core/workers/chunks/c3cd38ca8690286d40d7.js +1 -0
  41. package/assets/esri/core/workers/chunks/{c1845682cc9a5aac8703.js → c4b13124a9cfc78c42a6.js} +6 -6
  42. package/assets/esri/core/workers/chunks/c5e36544b2d1792e4c5f.js +1 -0
  43. package/assets/esri/core/workers/chunks/c6042825f61cd70d54d8.js +1 -0
  44. package/assets/esri/core/workers/chunks/{0646524250bb9fe82935.js → d8b67ca02cdc1e8191e3.js} +1 -1
  45. package/assets/esri/core/workers/chunks/db416ba3132034e20642.js +1 -0
  46. package/assets/esri/core/workers/chunks/{96d5fed0235558c0e348.js → e9c48630757bea465b7e.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{e9511627418c6864148a.js → ed988360264574cd8f6b.js} +1 -1
  48. package/assets/esri/core/workers/chunks/f9b2727b41943d83d4ca.js +1 -0
  49. package/assets/esri/core/workers/chunks/{d45e30f15142b5861111.js → fc880b275f5eaf42171e.js} +1 -1
  50. package/assets/esri/libs/basisu/basis_encoder.wasm +0 -0
  51. package/assets/esri/libs/dxtEncoder/dxt_encoder.wasm +0 -0
  52. package/chunks/CutFillComposition.glsl.js +2 -2
  53. package/chunks/CutFillReduction.glsl.js +1 -1
  54. package/chunks/EmissionComposite.glsl.js +2 -0
  55. package/chunks/FocusAreaColor.glsl.js +1 -1
  56. package/chunks/Fog.glsl.js +20 -20
  57. package/chunks/GlobalIllumination.glsl.js +25 -25
  58. package/chunks/GlobalIlluminationBlur.glsl.js +1 -1
  59. package/chunks/GlowBlur.glsl.js +16 -18
  60. package/chunks/GlowComposite.glsl.js +35 -0
  61. package/chunks/Laserline.glsl.js +13 -13
  62. package/chunks/LaserlinePath.glsl.js +11 -10
  63. package/chunks/OITAddEmission.glsl.js +1 -1
  64. package/chunks/Precipitation.glsl.js +6 -6
  65. package/chunks/ShadowCastVisualize.glsl.js +2 -2
  66. package/chunks/ShadowHighlight.glsl.js +3 -3
  67. package/chunks/Viewshed.glsl.js +3 -3
  68. package/chunks/basis_encoder.js +1 -1
  69. package/chunks/dxt_encoder.js +1 -1
  70. package/config.js +1 -1
  71. package/core/screenUtils.js +1 -1
  72. package/core/types.d.ts +7 -0
  73. package/geometry/support/aaBoundingBox.js +1 -1
  74. package/geometry/support/frustum.js +1 -1
  75. package/kernel.js +1 -1
  76. package/layers/VoxelWasmPerSceneView.js +1 -1
  77. package/package.json +2 -2
  78. package/support/revision.js +1 -1
  79. package/views/2d/engine/webgl/Painter.js +1 -1
  80. package/views/2d/webglDeps.js +1 -1
  81. package/views/3d/environment/CloudyWeather.js +1 -1
  82. package/views/3d/environment/FoggyWeather.js +1 -1
  83. package/views/3d/environment/RainyWeather.js +1 -1
  84. package/views/3d/environment/SnowyWeather.js +1 -1
  85. package/views/3d/environment/SunnyWeather.js +1 -1
  86. package/views/3d/input/SceneInputManager.js +1 -1
  87. package/views/3d/layers/I3SMeshView3D.js +1 -1
  88. package/views/3d/layers/i3s/I3SGeometryUtil.js +1 -1
  89. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  90. package/views/3d/layers/i3s/I3SIntersectionHandler.js +1 -1
  91. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  92. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  93. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  94. package/views/3d/layers/support/Tiles3DMeshIntersectionHandler.js +1 -1
  95. package/views/3d/support/debugFlags.js +1 -1
  96. package/views/3d/support/gaussianSplatting/GaussianSplatIntersectionHandler.js +1 -1
  97. package/views/3d/support/hitTest.js +1 -1
  98. package/views/3d/support/intersectionHitUtils.js +2 -0
  99. package/views/3d/terrain/TerrainRenderer.js +1 -1
  100. package/views/3d/webgl-engine/Stage.js +1 -1
  101. package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
  102. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  103. package/views/3d/webgl-engine/collections/Component/ComponentObjectElevationAgnosticBVH.js +1 -1
  104. package/views/3d/webgl-engine/collections/Component/ComponentObjectElevationAgnosticComponentGeometryBVH.js +1 -1
  105. package/views/3d/webgl-engine/collections/Component/ComponentObjectFixedBVH.js +1 -1
  106. package/views/3d/webgl-engine/collections/Component/ElevationAgnosticBVH.js +1 -1
  107. package/views/3d/webgl-engine/collections/Component/IntersectionGeometry.js +1 -1
  108. package/views/3d/webgl-engine/collections/Component/Material/ComponentData.glsl.js +12 -12
  109. package/views/3d/webgl-engine/collections/Component/Transform.js +1 -1
  110. package/views/3d/webgl-engine/collections/Component/UniformComponentParameters.js +1 -1
  111. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  112. package/views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js +2 -2
  113. package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +8 -0
  114. package/views/3d/webgl-engine/core/shaderLibrary/util/blendEmission.glsl.js +2 -0
  115. package/views/3d/webgl-engine/effects/atmosphere/ChapmanAtmosphere.js +1 -1
  116. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  117. package/views/3d/webgl-engine/effects/focusArea/FocusAreaVisualization.js +1 -1
  118. package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
  119. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  120. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  121. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  122. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationBlur.glsl.js +1 -1
  123. package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
  124. package/views/3d/webgl-engine/effects/glow/GlowBlur.glsl.js +1 -1
  125. package/views/3d/webgl-engine/effects/glow/GlowComposite.glsl.js +2 -0
  126. package/views/3d/webgl-engine/effects/glow/GlowCompositeTechnique.js +2 -0
  127. package/views/3d/webgl-engine/effects/haze/Haze.js +1 -1
  128. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +1 -1
  129. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  130. package/views/3d/webgl-engine/effects/laserlines/LaserLineRenderer.js +1 -1
  131. package/views/3d/webgl-engine/effects/laserlines/Laserline.glsl.js +1 -1
  132. package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +1 -1
  133. package/views/3d/webgl-engine/effects/laserlines/LaserlinePathTechniqueConfiguration.js +1 -1
  134. package/views/3d/webgl-engine/effects/precipitation/Precipitation.js +1 -1
  135. package/views/3d/webgl-engine/effects/precipitation/PrecipitationTechniqueConfiguration.js +1 -1
  136. package/views/3d/webgl-engine/effects/transparency/OITAddEmission.glsl.js +1 -1
  137. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  138. package/views/3d/webgl-engine/effects/transparency/OITBlendFragmentTechniqueConfiguration.js +1 -1
  139. package/views/3d/webgl-engine/effects/transparency/oitBlendFragment.glsl.js +1 -1
  140. package/views/3d/webgl-engine/lib/CutFillComputation.js +1 -1
  141. package/views/3d/webgl-engine/lib/CutFillVisualization.js +1 -1
  142. package/views/3d/webgl-engine/lib/EmissionComposite.glsl.js +2 -0
  143. package/views/3d/webgl-engine/lib/EmissionComposite.js +2 -0
  144. package/views/3d/webgl-engine/lib/EmissionCompositeTechnique.js +2 -0
  145. package/views/3d/webgl-engine/lib/HUDIntersectorResult.js +1 -1
  146. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  147. package/views/3d/webgl-engine/lib/IntersectorResult.js +1 -1
  148. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  149. package/views/3d/webgl-engine/lib/PolygonIntersectionResults.js +1 -1
  150. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  151. package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
  152. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  153. package/views/3d/webgl-engine/lib/TriangleIntersectionData.js +1 -1
  154. package/views/3d/webgl-engine/lib/Viewshed.js +1 -1
  155. package/views/3d/webgl-engine/lib/intersectorUtilsConversions.js +1 -1
  156. package/views/3d/webgl-engine/lib/lodRendering/LodResources.js +1 -1
  157. package/views/3d/webgl-engine/lib/screenPolygonOverlapUtils.js +1 -1
  158. package/views/3d/webgl-engine/lib/screenPolygonTriangleIntersections.js +1 -1
  159. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  160. package/views/3d/webgl-engine/shaders/CutFillComposition.glsl.js +1 -1
  161. package/views/3d/webgl-engine/shaders/EmissiveTechniqueConfiguration.js +2 -0
  162. package/views/3d/webgl-engine/shaders/GaussianSplatCompositionTechniqueConfiguration.js +1 -1
  163. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +2 -2
  164. package/views/3d/webgl-engine/shaders/ViewshedTechnique.js +1 -1
  165. package/views/3d/webgl-engine/shaders/{oitResolution.glsl.js → floatBlendScale.glsl.js} +1 -1
  166. package/views/SceneView.d.ts +4 -3
  167. package/views/SceneView.js +1 -1
  168. package/views/input/BrowserEventSource.js +1 -1
  169. package/views/input/InputManager.js +1 -1
  170. package/views/support/TextureCompressionWorker.js +1 -1
  171. package/views/support/TextureCompressionWorkerHandle.js +1 -1
  172. package/views/support/imageReprojection.js +1 -1
  173. package/views/webgl/Texture.js +1 -1
  174. package/widgets/Sketch/SketchViewModel.js +1 -1
  175. package/assets/esri/core/workers/chunks/0d6afba80d2f8dcb5cf7.js +0 -1
  176. package/assets/esri/core/workers/chunks/1276df03201c1b855fee.js +0 -1
  177. package/assets/esri/core/workers/chunks/23570397304969f724b3.js +0 -1
  178. package/assets/esri/core/workers/chunks/34fcb776e4de1d870bbd.js +0 -30
  179. package/assets/esri/core/workers/chunks/474ea8c97d101e41b3f5.js +0 -1
  180. package/assets/esri/core/workers/chunks/7cb0681cc6a5e956cb15.js +0 -1
  181. package/assets/esri/core/workers/chunks/8b73694d5a97638a3a61.js +0 -1
  182. package/assets/esri/core/workers/chunks/8dee03779b569f233daf.js +0 -1
  183. package/assets/esri/core/workers/chunks/9ebc98746b1f085b82b7.js +0 -1
  184. package/assets/esri/core/workers/chunks/9ee3741eef73f3edb18b.js +0 -1
  185. package/assets/esri/core/workers/chunks/af97e19516dbbcfb5286.js +0 -1
  186. package/assets/esri/core/workers/chunks/b4047333265a2665aef9.js +0 -1
  187. package/assets/esri/core/workers/chunks/ca419858910af5505d3d.js +0 -1
  188. package/assets/esri/core/workers/chunks/cce83896093279c70449.js +0 -1
  189. package/assets/esri/core/workers/chunks/d5561dff043789494845.js +0 -1
  190. package/assets/esri/core/workers/chunks/dedf678490572c500a19.js +0 -30
  191. package/assets/esri/core/workers/chunks/e2c9393bec747f7876bb.js +0 -1
  192. package/assets/esri/core/workers/chunks/e94f2d6037fba042dc6e.js +0 -1
  193. package/assets/esri/core/workers/chunks/ec1a2e68957fae48e60b.js +0 -30
  194. package/assets/esri/core/workers/chunks/f5d7f69047e1b1116202.js +0 -1
  195. package/chunks/GlowComposition.glsl.js +0 -39
  196. package/views/2d/engine/webgl/MaterialManager.js +0 -2
  197. package/views/2d/engine/webgl/shaders/MaterialPrograms.js +0 -2
  198. package/views/2d/engine/webgl/shaders/sources/resolver.js +0 -2
  199. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +0 -2
  200. package/views/3d/webgl-engine/core/shaderLibrary/output/Emissions.glsl.js +0 -9
  201. package/views/3d/webgl-engine/effects/fog/FogTechniqueConfiguration.js +0 -2
  202. package/views/3d/webgl-engine/effects/glow/GlowBlurTechniqueConfiguration.js +0 -2
  203. package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +0 -2
  204. package/views/3d/webgl-engine/effects/glow/GlowCompositionTechnique.js +0 -2
  205. package/views/3d/webgl-engine/effects/glow/GlowCompositionTechniqueConfiguration.js +0 -2
  206. package/views/webgl/ShaderCompiler.js +0 -2
  207. /package/assets/esri/core/workers/chunks/{89682d9d4f606f82056b.js.LICENSE.txt → bac4d4a9f3a9b7f6864d.js.LICENSE.txt} +0 -0
@@ -1,28 +1,28 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as n,If as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as u}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{ColorAttachment1 as d}from"../views/webgl/enums.js";import{NoParameters as p}from"../views/webgl/NoParameters.js";import{ShaderBuilder as g}from"../views/webgl/ShaderBuilder.js";const f=.01,x=.008,v=.002,M=.5,y=.02,b=.1,w=.008,W=.012,D=.008,S=40,R=.095,F=.008,j=60,I=2,B=.0039,C=.25,z=.15,G=25,P=.15,T=.5,E=1,$=1,L=16;class O extends p{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.temporalSampleFrame=0,this.rayMarchMinReach=P,this.rayMarchMaxReach=T,this.rayMarchWorldReach=G,this.rayMarchMinReachEmissionWeight=E,this.rayMarchMaxReachEmissionWeight=$,this.rayMarchMaxSteps=L,this.colorBleedWeight=z}}function V(p){const z=new g,G=z.fragment;return z.include(e),z.include(i),r(G),G.include(a),G.include(t),G.include(u),z.include(o,p),G.uniforms.add(new h("normalMap",e=>e.normalTexture),new h("depthMap",e=>e.depthTexture),new m("lastFrameColorTexture",e=>e.reprojection.lastFrameColor?.getTexture()),new m("lastFrameDepthTexture",e=>e.reprojection.lastFrameDepth?.attachment),new m("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new m("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(d)),new c("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new c("view",e=>e.camera.viewMatrix),new l("accumulatedFrames",e=>e.accumulatedFrames),new l("temporalSampleFrame",e=>e.temporalSampleFrame),new l("scaleGlobalIllumination",e=>e.scaleGlobalIllumination)),G.uniforms.add(new l("rayMarchMinReach",e=>e.rayMarchMinReach),new l("rayMarchMaxReach",e=>e.rayMarchMaxReach),new l("rayMarchWorldReach",e=>e.rayMarchWorldReach),new l("rayMarchMinReachEmissionWeight",e=>e.rayMarchMinReachEmissionWeight),new l("rayMarchMaxReachEmissionWeight",e=>e.rayMarchMaxReachEmissionWeight),new l("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new l("colorBleedWeight",e=>e.colorBleedWeight)),p.hasEmission&&G.uniforms.add(new m("lastFrameEmissionTexture",e=>e.reprojection.lastFrameEmission?.attachment)),G.code.add(n`
2
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepthLastFrame as a}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js";import{Gamma as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{ScreenSpaceRayMarching as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js";import{CameraSpace as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{FloatBindUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as s,If as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DBindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as u}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{floatBlendReductionFactor as p}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ColorAttachment1 as g,SizedPixelFormat as f}from"../views/webgl/enums.js";import{NoParameters as x}from"../views/webgl/NoParameters.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";const M=.01,b=.008,y=.002,w=.5,S=.02,W=.1,D=.008,F=.012,R=.008,j=40,B=.095,I=.008,C=60,z=2,G=.0039,P=.25,T=.15,E=25,$=.15,L=.5,O=1,V=1,U=16;class N extends x{constructor(){super(...arguments),this.projScale=1,this.scaleGlobalIllumination=1,this.accumulatedFrames=0,this.temporalSampleFrame=0,this.rayMarchMinReach=$,this.rayMarchMaxReach=L,this.rayMarchWorldReach=E,this.rayMarchMinReachEmissionWeight=O,this.rayMarchMaxReachEmissionWeight=V,this.rayMarchMaxSteps=U,this.colorBleedWeight=T}}function k(x){const T=new v,E=T.fragment;T.include(e),T.include(i),r(E),E.include(a),E.include(t),E.include(u),T.include(o,x),E.uniforms.add(new d("normalMap",e=>e.normalTexture),new d("depthMap",e=>e.depthTexture),new h("lastFrameColorTexture",e=>e.reprojection.lastFrameColor?.getTexture()),new h("lastFrameDepthTexture",e=>e.reprojection.lastFrameDepth?.attachment),new h("lastFrameGlobalIlluminationTexture",e=>e.globalIllumination?.getTexture()),new h("lastFrameGlobalIlluminationWeightTexture",e=>e.globalIllumination?.getTexture(g)),new m("reprojectionViewMatrix",e=>e.reprojection.viewMatrix),new m("view",e=>e.camera.viewMatrix),new n("accumulatedFrames",e=>e.accumulatedFrames),new n("temporalSampleFrame",e=>e.temporalSampleFrame),new n("scaleGlobalIllumination",e=>e.scaleGlobalIllumination)),E.uniforms.add(new n("rayMarchMinReach",e=>e.rayMarchMinReach),new n("rayMarchMaxReach",e=>e.rayMarchMaxReach),new n("rayMarchWorldReach",e=>e.rayMarchWorldReach),new n("rayMarchMinReachEmissionWeight",e=>e.rayMarchMinReachEmissionWeight),new n("rayMarchMaxReachEmissionWeight",e=>e.rayMarchMaxReachEmissionWeight),new n("rayMarchMaxSteps",e=>e.rayMarchMaxSteps),new n("colorBleedWeight",e=>e.colorBleedWeight));const{hasEmission:$,hasColor:L}=x;return $&&E.uniforms.add(new l("inputScale",e=>e.reprojection.lastFrameEmission?.attachment.descriptor.internalFormat===f.RGBA8?p:1),new h("lastFrameEmissionTexture",e=>e.reprojection.lastFrameEmission?.attachment)),E.code.add(s`
3
3
  float computeIdleColorBlendWeight(float accumulatedFrames) {
4
4
  float idleColorBlendProgress = clamp(
5
- accumulatedFrames / ${n.float(S)},
5
+ accumulatedFrames / ${s.float(j)},
6
6
  0.0,
7
7
  1.0
8
8
  );
9
9
  return mix(
10
- ${n.float(W)},
11
- ${n.float(D)},
10
+ ${s.float(F)},
11
+ ${s.float(R)},
12
12
  idleColorBlendProgress
13
13
  );
14
14
  }
15
15
 
16
16
  float computeIdleOcclusionBlendWeight(float accumulatedFrames) {
17
17
  float idleOcclusionBlendProgress = clamp(
18
- accumulatedFrames / ${n.float(j)},
18
+ accumulatedFrames / ${s.float(C)},
19
19
  0.0,
20
20
  1.0
21
21
  );
22
22
  return mix(
23
- ${n.float(R)},
24
- ${n.float(F)},
25
- pow(idleOcclusionBlendProgress, ${n.float(I)})
23
+ ${s.float(B)},
24
+ ${s.float(I)},
25
+ pow(idleOcclusionBlendProgress, ${s.float(z)})
26
26
  );
27
27
  }
28
28
 
@@ -77,7 +77,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
77
77
 
78
78
  return value * 2.0 - 1.0;
79
79
  }
80
- `),z.outputs.add("fragGlobalIllumination","vec4",0),z.outputs.add("fragWeight","float",1),G.main.add(n`
80
+ `),T.outputs.add("fragGlobalIllumination","vec4",0),T.outputs.add("fragWeight","float",1),E.main.add(s`
81
81
  float depth = depthFromTexture(depthMap, uv);
82
82
 
83
83
  // Early out if depth is out of range, such as in the sky
@@ -117,7 +117,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
117
117
  float idleColorBlendWeight = computeIdleColorBlendWeight(accumulatedFrames);
118
118
  float idleOcclusionBlendWeight = computeIdleOcclusionBlendWeight(accumulatedFrames);
119
119
  float reprojectionDepthMismatch = abs((lastFrameDepthViewPos + reprojectedViewPos.z) / max(lastFrameDepthViewPos, reprojectedViewPos.z));
120
- bool hasReprojectionMismatch = reprojectionDepthMismatch > ${n.float(f)};
120
+ bool hasReprojectionMismatch = reprojectionDepthMismatch > ${s.float(M)};
121
121
  bool isScaledGlobalIllumination = scaleGlobalIllumination < 1.0;
122
122
  bool isLowQualityEdgePixel = isScaledGlobalIllumination && isEdgeDepth(currentPixelDepth, uv);
123
123
  bool resetColorHistory = false;
@@ -126,7 +126,7 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
126
126
  if (hasReprojectionMismatch) {
127
127
  if (isLowQualityEdgePixel) {
128
128
  steps = 1;
129
- occlusionBlendWeight = ${n.float(x)};
129
+ occlusionBlendWeight = ${s.float(b)};
130
130
  resetColorHistory = true;
131
131
  } else {
132
132
  steps = 6;
@@ -135,15 +135,15 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
135
135
  }
136
136
  } else {
137
137
  steps = 1;
138
- if (historyOcclusionBlendWeight > ${n.float(M)}) {
139
- occlusionBlendWeight = ${n.float(b)};
140
- colorBlendWeight = ${n.float(w)};
141
- } else if (historyOcclusionBlendWeight > ${n.float(y)}) {
138
+ if (historyOcclusionBlendWeight > ${s.float(w)}) {
139
+ occlusionBlendWeight = ${s.float(W)};
140
+ colorBlendWeight = ${s.float(D)};
141
+ } else if (historyOcclusionBlendWeight > ${s.float(S)}) {
142
142
  occlusionBlendWeight = historyOcclusionBlendWeight - 0.05;
143
- colorBlendWeight = ${n.float(w)};
143
+ colorBlendWeight = ${s.float(D)};
144
144
  } else {
145
- occlusionBlendWeight = isScaledGlobalIllumination ? ${n.float(x)} : idleOcclusionBlendWeight;
146
- colorBlendWeight = isScaledGlobalIllumination ? ${n.float(v)} : idleColorBlendWeight;
145
+ occlusionBlendWeight = isScaledGlobalIllumination ? ${s.float(b)} : idleOcclusionBlendWeight;
146
+ colorBlendWeight = isScaledGlobalIllumination ? ${s.float(y)} : idleColorBlendWeight;
147
147
  }
148
148
  }
149
149
 
@@ -173,14 +173,14 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
173
173
  );
174
174
 
175
175
  if (hit.z > 0.0) {
176
- ${s(p.hasColor,n`
176
+ ${c(L,s`
177
177
  // Emission and color bleed - Reproject the current receiver and sampled hit to estimate bounced color
178
178
  vec3 receiverColor = texture(lastFrameColorTexture, reprojectedCoordinate.xy).rgb;
179
179
 
180
180
  vec2 hitReprojectedCoordinate = reprojectionCoordinate(hit);
181
181
  vec3 sourceColor = texture(lastFrameColorTexture, hitReprojectedCoordinate).rgb;
182
182
  vec3 sourceColorLinear = linearizeGamma(sourceColor);
183
- vec3 sourceEmission = ${s(p.hasEmission,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz","vec3(0.0)")};
183
+ vec3 sourceEmission = ${c($,"texture(lastFrameEmissionTexture, hitReprojectedCoordinate).xyz * inputScale","vec3(0.0)")};
184
184
 
185
185
  float emissionWeight = mix(
186
186
  rayMarchMinReachEmissionWeight,
@@ -201,17 +201,17 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
201
201
 
202
202
  // Rendering trick add noise to reduce accumulation artifacts
203
203
  float accumulationDither = occlusionBlendWeight < 1.0
204
- ? randomDirectionSample.b * ${n.float(B)}
204
+ ? randomDirectionSample.b * ${s.float(G)}
205
205
  : 0.0;
206
206
 
207
- ${s(p.hasColor,n`
207
+ ${c(L,s`
208
208
  // Accumulate color
209
209
  vec3 lastFrameColor = lastFrameGlobalIllumination.rgb;
210
- float colorDitherScale = isScaledGlobalIllumination ? ${n.float(C)} : 1.0;
210
+ float colorDitherScale = isScaledGlobalIllumination ? ${s.float(P)} : 1.0;
211
211
  fragGlobalIllumination.rgb = resetColorHistory
212
212
  ? vec3(0.0)
213
213
  : mix(lastFrameColor + accumulationDither * colorDitherScale, fragGlobalIllumination.rgb, colorBlendWeight);
214
- `,n`
214
+ `,s`
215
215
  fragGlobalIllumination.rgb = vec3(0.0);
216
216
  `)}
217
217
  fragGlobalIllumination.rgb = quantizeGlobalIlluminationColor(fragGlobalIllumination.rgb);
@@ -220,4 +220,4 @@ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/Scr
220
220
  fragGlobalIllumination.a = mix(lastFrameGlobalIllumination.a + accumulationDither, fragGlobalIllumination.a, occlusionBlendWeight);
221
221
 
222
222
  fragWeight = occlusionBlendWeight;
223
- `),z}const U=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:O,build:V,defaultColorBleedWeight:z,defaultRayMarchMaxReach:T,defaultRayMarchMaxReachEmissionWeight:$,defaultRayMarchMaxSteps:L,defaultRayMarchMinReach:P,defaultRayMarchMinReachEmissionWeight:E,defaultRayMarchWorldReach:G},Symbol.toStringTag,{value:"Module"}));export{O as G,U as a,L as b,V as c,T as d,z as e,$ as f,P as g,E as h,G as i};
223
+ `),T}const H=Object.freeze(Object.defineProperty({__proto__:null,GlobalIlluminationPassParameters:N,build:k,defaultColorBleedWeight:T,defaultRayMarchMaxReach:L,defaultRayMarchMaxReachEmissionWeight:V,defaultRayMarchMaxSteps:U,defaultRayMarchMinReach:$,defaultRayMarchMinReachEmissionWeight:O,defaultRayMarchWorldReach:E},Symbol.toStringTag,{value:"Module"}));export{N as G,H as a,U as b,k as c,L as d,T as e,V as f,$ as g,O as h,E as i};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{BooleanBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/BooleanBindUniform.js";import{Float2DrawUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as c}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{ditherNoise as p}from"../views/3d/webgl-engine/shaders/ditherNoise.glsl.js";import{OITResolutionConfiguration as d}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{NoParameters as h}from"../views/webgl/NoParameters.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";const g=4;class b extends h{constructor(){super(...arguments),this.blurSize=e()}}function S(){const e=new f,d=e.fragment;e.include(l),e.include(t),e.include(i);const h=(g+3)/2,b=1/(2*h*h);d.include(o),d.include(p,w),d.include(c);const S=5e4;d.uniforms.add(new a("hasEmission",e=>e.hasEmission),new m("depthMap",e=>e.depthTexture),new m("normalMap",e=>e.normalTexture),new u("globalIlluminationTexture",e=>e.texture),new u("globalIlluminationWeightTexture",e=>e.weightTexture),new n("blurSize",e=>e.blurSize),new s("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new s("projScale",(e,l)=>{const o=l.camera.distance;return o>S?Math.max(0,e.projScale-(o-S)):e.projScale}));const v=.1,W=400,I=.03,O=.08,x=1.5,D=1/32768,j=.85;return d.code.add(r`
2
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as l}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{GlobalIlluminationWeights as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/GlobalIlluminationWeights.glsl.js";import{CameraSpace as t}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{BooleanBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/BooleanBindUniform.js";import{Float2DrawUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{GlobalIlluminationColorQuantization as c}from"../views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js";import{ditherNoise as p}from"../views/3d/webgl-engine/shaders/ditherNoise.glsl.js";import{FloatBlendScaleConfiguration as d}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{NoParameters as h}from"../views/webgl/NoParameters.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";const g=4;class b extends h{constructor(){super(...arguments),this.blurSize=e()}}function S(){const e=new f,d=e.fragment;e.include(l),e.include(t),e.include(i);const h=(g+3)/2,b=1/(2*h*h);d.include(o),d.include(p,w),d.include(c);const S=5e4;d.uniforms.add(new a("hasEmission",e=>e.hasEmission),new u("depthMap",e=>e.depthTexture),new u("normalMap",e=>e.normalTexture),new m("globalIlluminationTexture",e=>e.texture),new m("globalIlluminationWeightTexture",e=>e.weightTexture),new n("blurSize",e=>e.blurSize),new s("scaleGlobalIllumination",e=>e.scaleGlobalIllumination),new s("projScale",(e,l)=>{const o=l.camera.distance;return o>S?Math.max(0,e.projScale-(o-S)):e.projScale}));const v=.1,W=400,I=.03,O=.08,x=1.5,D=1/32768,j=.85;return d.code.add(r`
3
3
  void accumulateBlurSample(
4
4
  vec2 sampleUv,
5
5
  float sampleOffset,
@@ -1,23 +1,21 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{normalize as e}from"../core/arrayUtils.js";import{gauss as r}from"../core/mathUtils.js";import{create as o}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as s}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Gamma as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{Float2PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as a,glsl as n}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as u}from"../views/webgl/NoParameters.js";import{ShaderBuilder as d}from"../views/webgl/ShaderBuilder.js";class f extends u{constructor(){super(...arguments),this.blurRadius=0,this.level=0,this.inputScale=1,this.size=o()}}function m({glowStage:o,useFloatBlend:u}){const f=new d,m=f.fragment;f.include(s),m.include(i);const v=0===o;m.uniforms.add(new c("colorTexture",e=>e.input),new l("blurRadius",({blurRadius:e})=>e),new l("level",({level:e})=>e),new l("inputScale",({inputScale:e})=>u?1:e),new t("size",({size:e})=>e));const p=7;let w="float locations1D["+p+"] = float["+p+"](";for(let e=0;e<p;e++){w+=`${0===e?"":","} ${(e/(p-1)*2-1).toFixed(15)}`}w+=");";const g=2,b=new Array(p).fill(0).map((e,o)=>r(o-Math.floor(p/2),g));e(b);const h=b.reduce((e,r,o)=>`${e}${0===o?"":","} ${r.toFixed(15)}`,"float locations1DWeights["+p+"] = float["+p+"](")+");";return m.code.add(n`
3
- ${w}
4
- ${h}
2
+ import{normalize as e}from"../core/arrayUtils.js";import{gauss as r}from"../core/mathUtils.js";import{create as o,ONES as i}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Gamma as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{BooleanDrawUniform as s}from"../views/3d/webgl-engine/core/shaderModules/BooleanDrawUniform.js";import{Float2DrawUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatDrawUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatDrawUniform.js";import{glsl as m}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{NoParameters as u}from"../views/webgl/NoParameters.js";import{ShaderBuilder as d}from"../views/webgl/ShaderBuilder.js";class f extends u{constructor(){super(...arguments),this.inputScale=1,this.isHorizontal=!0,this.level=0,this.size=o()}}function w(){const e=new d,r=e.fragment;e.include(t),r.include(l);const o=7,u=2;return r.uniforms.add(new c("colorTexture",e=>e.input),new s("isHorizontal",({isHorizontal:e})=>e),new n("level",({isHorizontal:e,level:r})=>e?Math.max(0,r-1):0),new n("inputScale",({inputScale:e})=>e),new a("size",({isHorizontal:e,size:r})=>e?i:r)).constants.add("sampleCount","int",o).code.add(m`
3
+ ${v(o,u)}
5
4
 
6
- vec3 blurUniformSamples() {
7
- vec2 aspectCorrection = vec2(1.0, size.x / size.y);
5
+ vec3 blurUniformSamples() {
6
+ vec2 uv = uv * size;
7
+ vec2 texelSize = 1.0 / vec2(textureSize(colorTexture, int(level)));
8
+ vec2 offset = isHorizontal ? vec2(2.0 * texelSize.x, 0.0) : vec2(0.0, 2.0 * texelSize.y);
8
9
 
9
- ${a(v,"float viewportScale = 1.0;","float viewportScale = 1.0 / pow(2.0, level);")}
10
- vec2 uv = uv * viewportScale;
11
- vec2 pixelCenterShift = 0.5 / size;
10
+ float middle = float(sampleCount - 1) * 0.5;
11
+ vec3 result = vec3(0.0);
12
12
 
13
- vec3 res = vec3(0.0);
14
- for(int i = 0; i < ${n.int(p)}; ++i) {
15
- float uv1D = locations1D[i] * viewportScale + ${v?"pixelCenterShift.x":"pixelCenterShift.y"};
16
- vec2 uvOffset = ${v?"vec2(uv1D, 0.0)":"vec2(0.0, uv1D)"};
17
- vec2 uvDistorted = uv + uvOffset * blurRadius * aspectCorrection;
18
- vec3 sampleColor = texture(colorTexture, uvDistorted, -1.0).rgb * inputScale;
19
- res += sampleColor * locations1DWeights[i];
13
+ for(int i = 0; i < sampleCount; ++i) {
14
+ vec2 suv = clamp(uv + offset * (float(i) - middle), texelSize, size - texelSize);
15
+ result += textureLod(colorTexture, suv, level).rgb * inputScale * weights1D[i];
16
+ }
17
+
18
+ // for the mipmap, we double the energy at each level to preserve small feature information better
19
+ return result * (isHorizontal ? 1.0 : 2.0);
20
20
  }
21
- return res;
22
- }
23
- `).main.add(n`fragColor = vec4(blurUniformSamples(), 0.0);`),f}const v=Object.freeze(Object.defineProperty({__proto__:null,GlowBlurPassParameters:f,build:m},Symbol.toStringTag,{value:"Module"}));export{f as G,v as a,m as b};
21
+ `).main.add(m`fragColor = vec4(blurUniformSamples(), 0.0);`),e}function v(o,i){const t=new Array(o).fill(0).map((e,t)=>r(t-Math.floor(o/2),i));return e(t),t.reduce((e,r,o)=>`${e}${0===o?"":","} ${r.toFixed(15)}`,"float weights1D["+o+"] = float["+o+"](")+");"}const p=Object.freeze(Object.defineProperty({__proto__:null,GlowBlurDrawParameters:f,build:w,weights:v},Symbol.toStringTag,{value:"Module"}));export{f as G,p as a,w as b,v as w};
@@ -0,0 +1,35 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{ReadDepth as e}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{FloatPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{DistanceFalloffPassParameters as o,getDistanceFalloff as r}from"../views/3d/webgl-engine/effects/raymarching/DistanceFalloff.glsl.js";import{floatBlendScale as n}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ScreenSpacePassAtmosphere as m}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{ToneMapping as d}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as p}from"../views/webgl/ShaderBuilder.js";class g extends o{constructor(){super(...arguments),this.mipmapLevels=1,this.boost=1,this.scattering=1e-4}}function c(o){const g=new p,c=g.fragment;g.include(m,{needUVs:!0,needEyeDirection:!0}),c.include(s),c.include(r),c.include(e),c.include(d),c.include(n,o),g.outputs.add("fragEmission","vec3",1);const f=1.5;return c.uniforms.add(new l("emissionTexture",({emission:e})=>e?.attachment),new a("depthTexture",({mainDepth:e})=>e),new i("scattering",({scattering:e})=>e),new i("boost",({boost:e})=>e),new i("levels",({mipmapLevels:e})=>e),new l("mipmapTexture",({mipmapTexture:e})=>e?.getTexture())).constants.add("sigmaSq","float",f).constants.add("weightEpsilon","float",.001).constants.add("gaussCoefficient","float",1/Math.sqrt(2*Math.PI*f)).code.add(t`vec3 readEmission(float level) {
3
+ return (level < 1.0 ?
4
+ texture(emissionTexture, uv).rgb * floatBlendInputScale * (1.0 - level) +
5
+ textureLod(mipmapTexture, uv, 0.0).rgb * level * 0.5 :
6
+ textureLod(mipmapTexture, uv, level - 1.0).rgb) / pow(2.0, level);
7
+ }
8
+ float gauss(float x) {
9
+ float expon = -(pow(x, 2.0) / (2.0 * sigmaSq));
10
+ return gaussCoefficient * exp(expon);
11
+ }`).main.add(t`float mainDepth = -1.0;
12
+ float depthSample = depthFromTexture(depthTexture, uv);
13
+ if(depthSample < 1.0 && depthSample > 0.0){
14
+ vec3 cameraSpaceRay = normalize(eyeDir);
15
+ cameraSpaceRay /= cameraSpaceRay.z;
16
+ cameraSpaceRay *= linearizeDepth(depthSample);
17
+ mainDepth = max(0.0, length(cameraSpaceRay));
18
+ }
19
+ vec3 rayDir = normalize(worldRay);
20
+ float dispersionPerPixel = getDistanceFalloff(mainDepth, rayDir, scattering);
21
+ float mainLevel = pow(dispersionPerPixel, 16.0) * levels;
22
+ float weights = 0.0;
23
+ vec3 emission = vec3(0.0);
24
+ for(float level = 0.0; level < levels; level += 1.0) {
25
+ float dist = (level - mainLevel) / levels;
26
+ float scale = (sign(dist) > 0.0 ? 1.0 : -5.0) /
27
+ (1.0 + boost * 0.5);
28
+ float weight = gauss(scale * dist * 10.0 / (10.0 * dispersionPerPixel + 0.6));
29
+ weight = (dist > 0.2 ? weight * dist * 5.0 : weight);
30
+ if(weight > weightEpsilon) {
31
+ emission += readEmission(level) * weight;
32
+ weights += weight;
33
+ }
34
+ }
35
+ fragEmission = emission * (1.0 + boost * 0.3) / weights;`),g}const f=Object.freeze(Object.defineProperty({__proto__:null,GlowCompositePassParameters:g,build:c},Symbol.toStringTag,{value:"Module"}));export{g as G,f as a,c as b};
@@ -1,10 +1,10 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{deg2rad as e}from"../core/mathUtils.js";import{set as i}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as n,normalize as a,length as o,distance as r,transformMat4 as l,copy as s,cross as c,add as d}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as f}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as p}from"../core/libs/gl-matrix-2/math/vec4.js";import{create as g}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{pointAt as h}from"../geometry/support/lineSegment.js";import{fromPositionAndNormal as m,create as u}from"../geometry/support/plane.js";import{Laserline as w}from"../views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js";import{ScreenSpacePass as x}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Float2PassUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as P}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as M}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as C}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{ShaderBuilder as L}from"../views/webgl/ShaderBuilder.js";const A=e(6);function j(e){const i=new L;i.include(x),i.include(w,e);const t=i.fragment;if(e.lineVerticalPlaneEnabled||e.heightManifoldEnabled)if(t.uniforms.add(new S("maxPixelDistance",(i,t)=>e.heightManifoldEnabled?2*t.camera.computeScreenPixelSizeAt(i.heightManifoldTarget):2*t.camera.computeScreenPixelSizeAt(i.lineVerticalPlaneSegment.origin))),t.code.add(C`float planeDistancePixels(vec4 plane, vec3 pos) {
2
+ import{deg2rad as e}from"../core/mathUtils.js";import{set as i}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{subtract as n,normalize as a,length as o,distance as r,transformMat4 as l,copy as s,cross as c,add as d}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as f}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{transformMat4 as p}from"../core/libs/gl-matrix-2/math/vec4.js";import{create as g}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{pointAt as m}from"../geometry/support/lineSegment.js";import{fromPositionAndNormal as h,create as u}from"../geometry/support/plane.js";import{Laserline as w}from"../views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js";import{ScreenSpacePass as x}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{blendEmission as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/blendEmission.glsl.js";import{Float2PassUniform as P}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as b}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as M}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as C}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as L}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{ShaderBuilder as A}from"../views/webgl/ShaderBuilder.js";const j=e(6);function y(e){const i=new A;i.include(x),i.include(w,e);const{fragment:t,outputs:c}=i;c.add("fragColor","vec4",0);const{lineVerticalPlaneEnabled:d,heightManifoldEnabled:f,pointDistanceEnabled:g,intersectsLineEnabled:m,spherical:h}=e;if(d||f)if(t.uniforms.add(new C("maxPixelDistance",(e,i)=>f?2*i.camera.computeScreenPixelSizeAt(e.heightManifoldTarget):2*i.camera.computeScreenPixelSizeAt(e.lineVerticalPlaneSegment.origin))),t.code.add(L`float planeDistancePixels(vec4 plane, vec3 pos) {
3
3
  float dist = dot(plane.xyz, pos) + plane.w;
4
4
  float width = fwidth(dist);
5
5
  dist /= min(width, maxPixelDistance);
6
6
  return abs(dist);
7
- }`),e.spherical){const e=(e,i,t)=>l(e,i.heightManifoldTarget,t.camera.viewMatrix),i=(e,i)=>l(e,[0,0,0],i.camera.viewMatrix);t.uniforms.add(new D("heightManifoldOrigin",(t,r)=>(e(R,t,r),i(G,r),n(G,G,R),a(U,G),U[3]=o(G),U)),new v("globalOrigin",e=>i(R,e)),new S("cosSphericalAngleThreshold",(e,i)=>1-Math.max(2,r(i.camera.eye,e.heightManifoldTarget)*i.camera.perRenderPixelRatio)/o(e.heightManifoldTarget))),t.code.add(C`float globeDistancePixels(float posInGlobalOriginLength) {
7
+ }`),h){const e=(e,i,t)=>l(e,i.heightManifoldTarget,t.camera.viewMatrix),i=(e,i)=>l(e,[0,0,0],i.camera.viewMatrix);t.uniforms.add(new M("heightManifoldOrigin",(t,r)=>(e(U,t,r),i(W,r),n(W,W,U),a(F,W),F[3]=o(W),F)),new b("globalOrigin",e=>i(U,e)),new C("cosSphericalAngleThreshold",(e,i)=>1-Math.max(2,r(i.camera.eye,e.heightManifoldTarget)*i.camera.perRenderPixelRatio)/o(e.heightManifoldTarget))),t.code.add(L`float globeDistancePixels(float posInGlobalOriginLength) {
8
8
  float dist = abs(posInGlobalOriginLength - heightManifoldOrigin.w);
9
9
  float width = fwidth(dist);
10
10
  dist /= min(width, maxPixelDistance);
@@ -18,22 +18,22 @@ float posInGlobalOriginLength = length(posInGlobalOrigin);
18
18
  float sphericalDistance = globeDistancePixels(posInGlobalOriginLength);
19
19
  float planarDistance = planeDistancePixels(heightPlane, pos);
20
20
  return cosAngle < cosSphericalAngleThreshold ? sphericalDistance : planarDistance;
21
- }`)}else t.code.add(C`float heightManifoldDistancePixels(vec4 heightPlane, vec3 pos) {
21
+ }`)}else t.code.add(L`float heightManifoldDistancePixels(vec4 heightPlane, vec3 pos) {
22
22
  return planeDistancePixels(heightPlane, pos);
23
- }`);if(e.pointDistanceEnabled&&(t.uniforms.add(new S("maxPixelDistance",(e,i)=>2*i.camera.computeScreenPixelSizeAt(e.pointDistanceTarget))),t.code.add(C`float sphereDistancePixels(vec4 sphere, vec3 pos) {
23
+ }`);if(g&&(t.uniforms.add(new C("maxPixelDistance",(e,i)=>2*i.camera.computeScreenPixelSizeAt(e.pointDistanceTarget))),t.code.add(L`float sphereDistancePixels(vec4 sphere, vec3 pos) {
24
24
  float dist = distance(sphere.xyz, pos) - sphere.w;
25
25
  float width = fwidth(dist);
26
26
  dist /= min(width, maxPixelDistance);
27
27
  return abs(dist);
28
- }`)),e.intersectsLineEnabled&&t.uniforms.add(new M("perScreenPixelRatio",e=>e.camera.perScreenPixelRatio)).code.add(C`float lineDistancePixels(vec3 start, vec3 dir, float radius, vec3 pos) {
28
+ }`)),m&&t.uniforms.add(new S("perScreenPixelRatio",e=>e.camera.perScreenPixelRatio)).code.add(L`float lineDistancePixels(vec3 start, vec3 dir, float radius, vec3 pos) {
29
29
  float dist = length(cross(dir, pos - start)) / (length(pos) * perScreenPixelRatio);
30
30
  return abs(dist) - radius;
31
- }`),(e.lineVerticalPlaneEnabled||e.intersectsLineEnabled)&&t.code.add(C`bool pointIsWithinLine(vec3 pos, vec3 start, vec3 end) {
31
+ }`),(d||m)&&t.code.add(L`bool pointIsWithinLine(vec3 pos, vec3 start, vec3 end) {
32
32
  vec3 dir = end - start;
33
33
  float t2 = dot(dir, pos - start);
34
34
  float l2 = dot(dir, dir);
35
35
  return t2 >= 0.0 && t2 <= l2;
36
- }`),t.main.add(C`vec3 pos;
36
+ }`),t.main.add(L`vec3 pos;
37
37
  vec3 normal;
38
38
  float angleCutoffAdjust;
39
39
  float depthDiscontinuityAlpha;
@@ -41,22 +41,22 @@ if (!laserlineReconstructFromDepth(pos, normal, angleCutoffAdjust, depthDisconti
41
41
  fragColor = vec4(0.0);
42
42
  return;
43
43
  }
44
- vec4 color = vec4(0.0);`),e.heightManifoldEnabled){t.uniforms.add(new b("angleCutoff",e=>V(e)),new D("heightPlane",(e,i)=>I(e.heightManifoldTarget,e.renderCoordsHelper.worldUpAtPosition(e.heightManifoldTarget,R),i.camera.viewMatrix)));const i=e.spherical?C`normalize(globalOrigin - pos)`:C`heightPlane.xyz`;t.main.add(C`
44
+ vec4 color = vec4(0.0);`),f){t.uniforms.add(new P("angleCutoff",e=>V(e)),new M("heightPlane",(e,i)=>E(e.heightManifoldTarget,e.renderCoordsHelper.worldUpAtPosition(e.heightManifoldTarget,U),i.camera.viewMatrix)));const e=h?L`normalize(globalOrigin - pos)`:L`heightPlane.xyz`;t.main.add(L`
45
45
  vec2 angleCutoffAdjusted = angleCutoff - angleCutoffAdjust;
46
46
  // Fade out laserlines on flat surfaces
47
- float heightManifoldAlpha = 1.0 - smoothstep(angleCutoffAdjusted.x, angleCutoffAdjusted.y, abs(dot(normal, ${i})));
47
+ float heightManifoldAlpha = 1.0 - smoothstep(angleCutoffAdjusted.x, angleCutoffAdjusted.y, abs(dot(normal, ${e})));
48
48
  vec4 heightManifoldColor = laserlineProfile(heightManifoldDistancePixels(heightPlane, pos));
49
- color = max(color, heightManifoldColor * heightManifoldAlpha);`)}return e.pointDistanceEnabled&&(t.uniforms.add(new b("angleCutoff",e=>V(e)),new D("pointDistanceSphere",(e,i)=>y(e,i))),t.main.add(C`float pointDistanceSphereDistance = sphereDistancePixels(pointDistanceSphere, pos);
49
+ color = max(color, heightManifoldColor * heightManifoldAlpha);`)}return g&&(t.uniforms.add(new P("angleCutoff",e=>V(e)),new M("pointDistanceSphere",(e,i)=>O(e,i))),t.main.add(L`float pointDistanceSphereDistance = sphereDistancePixels(pointDistanceSphere, pos);
50
50
  vec4 pointDistanceSphereColor = laserlineProfile(pointDistanceSphereDistance);
51
51
  float pointDistanceSphereAlpha = 1.0 - smoothstep(angleCutoff.x, angleCutoff.y, abs(dot(normal, normalize(pos - pointDistanceSphere.xyz))));
52
- color = max(color, pointDistanceSphereColor * pointDistanceSphereAlpha);`)),e.lineVerticalPlaneEnabled&&(t.uniforms.add(new b("angleCutoff",e=>V(e)),new D("lineVerticalPlane",(e,i)=>O(e,i)),new P("lineVerticalStart",(e,i)=>E(e,i)),new P("lineVerticalEnd",(e,i)=>z(e,i))),t.main.add(C`if (pointIsWithinLine(pos, lineVerticalStart, lineVerticalEnd)) {
52
+ color = max(color, pointDistanceSphereColor * pointDistanceSphereAlpha);`)),d&&(t.uniforms.add(new P("angleCutoff",e=>V(e)),new M("lineVerticalPlane",(e,i)=>z(e,i)),new D("lineVerticalStart",(e,i)=>I(e,i)),new D("lineVerticalEnd",(e,i)=>T(e,i))),t.main.add(L`if (pointIsWithinLine(pos, lineVerticalStart, lineVerticalEnd)) {
53
53
  float lineVerticalDistance = planeDistancePixels(lineVerticalPlane, pos);
54
54
  vec4 lineVerticalColor = laserlineProfile(lineVerticalDistance);
55
55
  float lineVerticalAlpha = 1.0 - smoothstep(angleCutoff.x, angleCutoff.y, abs(dot(normal, lineVerticalPlane.xyz)));
56
56
  color = max(color, lineVerticalColor * lineVerticalAlpha);
57
- }`)),e.intersectsLineEnabled&&(t.uniforms.add(new b("angleCutoff",e=>V(e)),new P("intersectsLineStart",(e,i)=>l(R,e.lineStartWorld,i.camera.viewMatrix)),new P("intersectsLineEnd",(e,i)=>l(R,e.lineEndWorld,i.camera.viewMatrix)),new P("intersectsLineDirection",(e,i)=>(s(U,e.intersectsLineSegment.vector),U[3]=0,a(R,p(U,U,i.camera.viewMatrix)))),new S("intersectsLineRadius",e=>e.intersectsLineRadius)),t.main.add(C`if (pointIsWithinLine(pos, intersectsLineStart, intersectsLineEnd)) {
57
+ }`)),m&&(t.uniforms.add(new P("angleCutoff",e=>V(e)),new D("intersectsLineStart",(e,i)=>l(U,e.lineStartWorld,i.camera.viewMatrix)),new D("intersectsLineEnd",(e,i)=>l(U,e.lineEndWorld,i.camera.viewMatrix)),new D("intersectsLineDirection",(e,i)=>(s(F,e.intersectsLineSegment.vector),F[3]=0,a(U,p(F,F,i.camera.viewMatrix)))),new C("intersectsLineRadius",e=>e.intersectsLineRadius)),t.main.add(L`if (pointIsWithinLine(pos, intersectsLineStart, intersectsLineEnd)) {
58
58
  float intersectsLineDistance = lineDistancePixels(intersectsLineStart, intersectsLineDirection, intersectsLineRadius, pos);
59
59
  vec4 intersectsLineColor = laserlineProfile(intersectsLineDistance);
60
60
  float intersectsLineAlpha = 1.0 - smoothstep(angleCutoff.x, angleCutoff.y, 1.0 - abs(dot(normal, intersectsLineDirection)));
61
61
  color = max(color, intersectsLineColor * intersectsLineAlpha);
62
- }`)),t.main.add(C`fragColor = laserlineOutput(color * depthDiscontinuityAlpha);`),i}function V(t){return i(T,Math.cos(t.angleCutoff),Math.cos(Math.max(0,t.angleCutoff-e(2))))}function y(e,i){return l(_,e.pointDistanceOrigin,i.camera.viewMatrix),_[3]=r(e.pointDistanceOrigin,e.pointDistanceTarget),_}function O(e,i){const t=h(e.lineVerticalPlaneSegment,.5,R),n=e.renderCoordsHelper.worldUpAtPosition(t,F),o=a(G,e.lineVerticalPlaneSegment.vector),r=c(R,n,o);return a(r,r),I(e.lineVerticalPlaneSegment.origin,r,i.camera.viewMatrix)}function E(e,i){const t=s(R,e.lineVerticalPlaneSegment.origin);return e.renderCoordsHelper.setAltitude(t,0),l(t,t,i.camera.viewMatrix)}function z(e,i){const t=d(R,e.lineVerticalPlaneSegment.origin,e.lineVerticalPlaneSegment.vector);return e.renderCoordsHelper.setAltitude(t,0),l(t,t,i.camera.viewMatrix)}function I(e,i,t){return l(W,e,t),s(U,i),U[3]=0,p(U,U,t),m(W,U,H)}const T=t(),R=f(),U=g(),F=f(),G=f(),W=f(),H=u(),_=g(),B=Object.freeze(Object.defineProperty({__proto__:null,build:j,defaultAngleCutoff:A},Symbol.toStringTag,{value:"Module"}));export{B as L,j as b,A as d};
62
+ }`)),t.main.add("fragColor = laserlineOutput(color * depthDiscontinuityAlpha);"),i.include(v,e),i}function V(t){return i(R,Math.cos(t.angleCutoff),Math.cos(Math.max(0,t.angleCutoff-e(2))))}function O(e,i){return l(B,e.pointDistanceOrigin,i.camera.viewMatrix),B[3]=r(e.pointDistanceOrigin,e.pointDistanceTarget),B}function z(e,i){const t=m(e.lineVerticalPlaneSegment,.5,U),n=e.renderCoordsHelper.worldUpAtPosition(t,G),o=a(W,e.lineVerticalPlaneSegment.vector),r=c(U,n,o);return a(r,r),E(e.lineVerticalPlaneSegment.origin,r,i.camera.viewMatrix)}function I(e,i){const t=s(U,e.lineVerticalPlaneSegment.origin);return e.renderCoordsHelper.setAltitude(t,0),l(t,t,i.camera.viewMatrix)}function T(e,i){const t=d(U,e.lineVerticalPlaneSegment.origin,e.lineVerticalPlaneSegment.vector);return e.renderCoordsHelper.setAltitude(t,0),l(t,t,i.camera.viewMatrix)}function E(e,i,t){return l(H,e,t),s(F,i),F[3]=0,p(F,F,t),h(H,F,_)}const R=t(),U=f(),F=g(),G=f(),W=f(),H=f(),_=u(),B=g(),N=Object.freeze(Object.defineProperty({__proto__:null,build:y,defaultAngleCutoff:j},Symbol.toStringTag,{value:"Module"}));export{N as L,y as b,j as d};
@@ -1,21 +1,23 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as o}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Laserline as a}from"../views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js";import{Float2BindUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{FloatBindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as l,glsl as d}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Matrix4PassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";function p(t){const r=new v;r.include(a,t);const{vertex:p,fragment:f}=r;p.uniforms.add(new m("modelView",(t,{camera:o})=>e(g,o.viewMatrix,t.origin)),new c("proj",({camera:e})=>e.projectionMatrix),new s("glowWidth",(e,{camera:t})=>e.glowWidth*t.pixelRatio),new i("pixelToNDC",({camera:e})=>o(w,2/e.fullViewport[2],2/e.fullViewport[3]))),r.attributes.add("start","vec3"),r.attributes.add("end","vec3"),t.spherical&&(r.attributes.add("startUp","vec3"),r.attributes.add("endUp","vec3")),r.attributes.add("extrude","vec2"),r.varyings.add("uv","vec2"),r.varyings.add("vViewStart","vec3"),r.varyings.add("vViewEnd","vec3"),r.varyings.add("vViewSegmentNormal","vec3"),r.varyings.add("vViewStartNormal","vec3"),r.varyings.add("vViewEndNormal","vec3");const u=!t.spherical;return p.main.add(d`
2
+ import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as t}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as o}from"../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{Laserline as a}from"../views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js";import{blendEmission as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/blendEmission.glsl.js";import{Float2BindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{FloatBindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{FloatPassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{If as l,glsl as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as p}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Matrix4PassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";function w(t){const r=new v;r.include(a,t);const{outputs:w,vertex:u,fragment:h,attributes:x,varyings:j}=r;w.add("fragColor","vec4",0),u.uniforms.add(new m("modelView",(t,{camera:o})=>e(f,o.viewMatrix,t.origin)),new p("proj",({camera:e})=>e.projectionMatrix),new d("glowWidth",(e,{camera:t})=>e.glowWidth*t.pixelRatio),new n("pixelToNDC",({camera:e})=>o(g,2/e.fullViewport[2],2/e.fullViewport[3]))),x.add("start","vec3"),x.add("end","vec3"),t.spherical&&(x.add("startUp","vec3"),x.add("endUp","vec3")),x.add("extrude","vec2"),j.add("uv","vec2"),j.add("vViewStart","vec3"),j.add("vViewEnd","vec3"),j.add("vViewSegmentNormal","vec3"),j.add("vViewStartNormal","vec3"),j.add("vViewEndNormal","vec3");const P=!t.spherical;return u.main.add(c`
3
3
  vec3 pos = mix(start, end, extrude.x);
4
-
5
4
  vec4 viewPos = modelView * vec4(pos, 1);
6
5
  vec4 projPos = proj * viewPos;
7
6
  vec2 ndcPos = projPos.xy / projPos.w;
8
7
 
9
8
  // in planar we hardcode the up vectors to be Z-up */
10
- ${l(u,d`vec3 startUp = vec3(0, 0, 1);`)}
11
- ${l(u,d`vec3 endUp = vec3(0, 0, 1);`)}
9
+ ${l(P,c`vec3 startUp = vec3(0, 0, 1);`)}
10
+ ${l(P,c`vec3 endUp = vec3(0, 0, 1);`)}
12
11
 
13
12
  // up vector corresponding to the location of the vertex, selecting either startUp or endUp */
14
13
  vec3 up = extrude.y * mix(startUp, endUp, extrude.x);
15
14
  vec3 viewUp = (modelView * vec4(up, 0)).xyz;
16
15
 
17
- vec4 projPosUp = proj * vec4(viewPos.xyz + viewUp, 1);
18
- vec2 projUp = normalize(projPosUp.xy / projPosUp.w - ndcPos);
16
+ // Use the projection differential to avoid subtracting two nearly identical NDC positions.
17
+ vec4 projViewUp = proj * vec4(viewUp, 0);
18
+ vec2 projectedUp = projPos.w * projViewUp.xy - projPos.xy * projViewUp.w;
19
+ float projectedUpLengthSq = dot(projectedUp, projectedUp);
20
+ vec2 projUp = projectedUpLengthSq == 0.0 ? vec2(0.0, 1.0) : projectedUp * inversesqrt(projectedUpLengthSq);
19
21
 
20
22
  // extrude ndcPos along projUp to the edge of the screen
21
23
  vec2 lxy = abs(sign(projUp) - ndcPos);
@@ -25,7 +27,6 @@ import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create
25
27
  vViewEnd = (modelView * vec4(end, 1)).xyz;
26
28
 
27
29
  vec3 viewStartEndDir = vViewEnd - vViewStart;
28
-
29
30
  vec3 viewStartUp = (modelView * vec4(startUp, 0)).xyz;
30
31
 
31
32
  // the normal of the plane that aligns with the segment and the up vector
@@ -46,7 +47,7 @@ import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create
46
47
  uv = ndcPos * 0.5 + 0.5;
47
48
 
48
49
  gl_Position = vec4(ndcPos, 0, 1);
49
- `),f.uniforms.add(new n("perScreenPixelRatio",e=>e.camera.perScreenPixelRatio)),f.code.add(d`float planeDistance(vec3 planeNormal, vec3 planeOrigin, vec3 pos) {
50
+ `),h.uniforms.add(new s("perScreenPixelRatio",e=>e.camera.perScreenPixelRatio)),h.code.add(c`float planeDistance(vec3 planeNormal, vec3 planeOrigin, vec3 pos) {
50
51
  return dot(planeNormal, pos - planeOrigin);
51
52
  }
52
53
  float segmentDistancePixels(vec3 segmentNormal, vec3 startNormal, vec3 endNormal, vec3 pos, vec3 start, vec3 end) {
@@ -58,7 +59,7 @@ float width = fwidth(distSegmentPlane);
58
59
  float maxPixelDistance = length(pos) * perScreenPixelRatio * 2.0;
59
60
  float pixelDist = dist / min(width, maxPixelDistance);
60
61
  return abs(pixelDist);
61
- }`),f.main.add(d`fragColor = vec4(0.0);
62
+ }`),h.main.add(c`fragColor = vec4(0.0);
62
63
  vec3 dEndStart = vViewEnd - vViewStart;
63
64
  if (dot(dEndStart, dEndStart) < 1e-5) {
64
65
  return;
@@ -80,4 +81,4 @@ vViewEnd
80
81
  );
81
82
  vec4 color = laserlineProfile(distance);
82
83
  float alpha = (1.0 - smoothstep(0.995 - angleCutoffAdjust, 0.999 - angleCutoffAdjust, abs(dot(normal, vViewSegmentNormal))));
83
- fragColor = laserlineOutput(color * alpha * depthDiscontinuityAlpha);`),r}const w=r(),g=t(),f=Object.freeze(Object.defineProperty({__proto__:null,build:p},Symbol.toStringTag,{value:"Module"}));export{f as L,p as b};
84
+ fragColor = laserlineOutput(color * alpha * depthDiscontinuityAlpha);`),r.include(i,t),r}const g=r(),f=t(),u=Object.freeze(Object.defineProperty({__proto__:null,build:w},Symbol.toStringTag,{value:"Module"}));export{u as L,w as b};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ColorConversion as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{emissionFilter as i}from"../views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{OITBlendFragmentPassParameters as o,oitBlendFragment as t}from"../views/3d/webgl-engine/effects/transparency/oitBlendFragment.glsl.js";import{oitResolution as l}from"../views/3d/webgl-engine/shaders/oitResolution.glsl.js";import{ToneMapping as a}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as d}from"../views/webgl/ShaderBuilder.js";class m extends o{}function g(o){const m=new d;m.include(e);const{fragment:g,outputs:c}=m;return c.add("fragEmission","vec4",1),g.include(l,o),g.include(t,o),g.include(i,o),g.include(a),g.include(s),g.uniforms.add(new n("emissionTexture",e=>e.emissionTexture),new n("frontFaceEmissionTexture",e=>e.frontFaceEmissionTexture)),g.main.add(r`vec4 emission = oitBlendFragment(emissionTexture, frontFaceEmissionTexture, floatBlendInputScale);
2
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ColorConversion as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{emissionFilter as r}from"../views/3d/webgl-engine/core/shaderLibrary/util/emissionFilter.glsl.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{OITBlendFragmentPassParameters as o,oitBlendFragment as t}from"../views/3d/webgl-engine/effects/transparency/oitBlendFragment.glsl.js";import{floatBlendScale as l}from"../views/3d/webgl-engine/shaders/floatBlendScale.glsl.js";import{ToneMapping as a}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{ShaderBuilder as d}from"../views/webgl/ShaderBuilder.js";class m extends o{}function g(o){const m=new d;m.include(e);const{fragment:g,outputs:c}=m;return c.add("fragEmission","vec4",1),g.include(l,o),g.include(t,o),g.include(r,o),g.include(a),g.include(s),g.uniforms.add(new n("emissionTexture",e=>e.emissionTexture),new n("frontFaceEmissionTexture",e=>e.frontFaceEmissionTexture)),g.main.add(i`vec4 emission = oitBlendFragment(emissionTexture, frontFaceEmissionTexture, floatBlendInputScale);
3
3
  vec4 transparentColor = oitBlendFragment();
4
4
  vec3 dim = emissionFilter(transparentColor.rgb, transparentColor.a);
5
5
  fragEmission.rgb = emission.rgb * dim * pow(emission.a, 0.5) * floatBlendOutputScale;
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{floor as e,set as t,sub as o,scale as i,normalize as a,dot as r,lerp as n}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as s,fromValues as d}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Float3BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as p}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";function u(e){const t=new f;return t.attributes.add("position","vec3"),t.attributes.add("instanceFeatureAttribute","float"),t.vertex.uniforms.add(new c("cameraPosition",e=>e.camera.eye),new l("offset",(e,t)=>h(e,t)),new m("width",e=>e.width),new m("time",e=>e.time),new v("proj",e=>e.camera.projectionMatrix),new v("view",e=>e.camera.viewMatrix)),t.varyings.add("vUv","vec2"),t.vertex.code.add(p`vec3 hash31(float p){
2
+ import{floor as e,set as t,sub as o,scale as a,normalize as i,dot as r,lerp as n}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as s,fromValues as d}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Float3BindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as p,If as v}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{ShaderBuilder as u}from"../views/webgl/ShaderBuilder.js";function h(e){const t=new u,{attributes:o,outputs:a,vertex:i,varyings:r,fragment:n}=t;o.add("position","vec3"),o.add("instanceFeatureAttribute","float"),a.add("fragColor","vec4",0),i.uniforms.add(new c("cameraPosition",e=>e.camera.eye),new m("offset",(e,t)=>g(e,t)),new l("width",e=>e.width),new l("time",e=>e.time),new f("proj",e=>e.camera.projectionMatrix),new f("view",e=>e.camera.viewMatrix)),r.add("vUv","vec2"),i.code.add(p`vec3 hash31(float p){
3
3
  vec3 p3 = fract(vec3(p) * vec3(0.1031, 0.1030, 0.0973));
4
4
  p3 += dot(p3, p3.yzx + 33.33);
5
5
  return fract((p3.xxy + p3.yzz) * p3.zyx);
@@ -12,7 +12,7 @@ return fract(p);
12
12
  }
13
13
  vec3 rotateVectorByQuaternion(vec3 v, vec4 q){
14
14
  return 2.0 * cross(q.xyz, v * q.w + cross(q.xyz, v)) + v;
15
- }`),t.vertex.main.add(p`
15
+ }`);const s=0===e.type;return i.main.add(p`
16
16
  vUv = position.xz;
17
17
  vec3 rand = hash31(instanceFeatureAttribute);
18
18
 
@@ -37,7 +37,7 @@ return 2.0 * cross(q.xyz, v * q.w + cross(q.xyz, v)) + v;
37
37
 
38
38
  // Rain particles fall straight down and are randomly oriented
39
39
  // Snow particles have random sinusoid trajectories and are rotated to face the camera
40
- ${0===e.type?p`
40
+ ${s?p`
41
41
  // Random rotation for particle
42
42
  vec3 rotationAxis = up;
43
43
  vec4 quat = vec4(rotationAxis * sin(angle), cos(angle));
@@ -61,9 +61,9 @@ return 2.0 * cross(q.xyz, v * q.w + cross(q.xyz, v)) + v;
61
61
  vec4 pos = mat4(mat3(view)) * vec4((mod(width * animatedPos - offset, width) - 0.5 * width), 1.0);
62
62
  gl_Position = proj * (0.5 * vec4(position.xzy, 0.0) + pos);
63
63
  `}
64
- `),t.fragment.uniforms.add(new m("opacity",e=>e.opacity),new c("particleColor",t=>g(t,e))),t.fragment.main.add(p`
64
+ `),n.uniforms.add(new l("opacity",e=>e.opacity),new c("particleColor",t=>w(t,e))),n.main.add(p`
65
65
  float d = length(vUv - vec2(0.5));
66
66
 
67
- ${0===e.type?p`d = 0.35 * smoothstep(0.5, 0.0, d);`:p`d = smoothstep(0.5, 0.1, d);`}
67
+ ${v(s,"d = 0.35 * smoothstep(0.5, 0.0, d);","d = smoothstep(0.5, 0.1, d);")}
68
68
  fragColor = opacity * vec4(particleColor * d, d);
69
- `),t}function h(a,r){const n=r.camera.eye,s=.5*a.width,d=1/a.width,c=e(w,t(w,(n[0]+s)*d,(n[1]+s)*d,(n[2]+s)*d));return o(c,n,i(c,c,a.width))}function g(e,t){const o=0===t.type?b:x,s=i(w,o,P),d=e.camera.eye;a(y,d);const c=Math.max(0,r(y,e.lighting.mainLight.direction));return n(s,s,o,c)}const w=s(),y=s(),x=d(1,1,1),b=d(.85,.85,.85),P=.7,j=Object.freeze(Object.defineProperty({__proto__:null,build:u},Symbol.toStringTag,{value:"Module"}));export{j as P,u as b};
69
+ `),e.hasEmissive&&(t.outputs.add("fragEmission","vec4",1),t.fragment.main.add("fragEmission = vec4(vec3(0.0), fragColor.a * 0.75);")),t}function g(i,r){const n=r.camera.eye,s=.5*i.width,d=1/i.width,c=e(y,t(y,(n[0]+s)*d,(n[1]+s)*d,(n[2]+s)*d));return o(c,n,a(c,c,i.width))}function w(e,{type:t}){const o=0===t?P:b,s=a(y,o,j),d=e.camera.eye;i(x,d);const c=Math.max(0,r(x,e.lighting.mainLight.direction));return n(s,s,o,c)}const y=s(),x=s(),b=d(1,1,1),P=d(.85,.85,.85),j=.7,z=Object.freeze(Object.defineProperty({__proto__:null,build:h},Symbol.toStringTag,{value:"Module"}));export{z as P,h as b};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{clone as o,fromValues as r,create as a}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{BlendColorsPremultiplied as l,premultiplyAlpha as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/BlendColorsPremultiplied.glsl.js";import{CameraSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{Float2PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float4PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{Float4sPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float4sPassUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as u,If as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{maxColorRampSize as w}from"../views/3d/webgl-engine/shaders/colorRampParameters.js";import{S as C}from"./ShadowCastAccumulate.glsl.js";import{NoParameters as f}from"../views/webgl/NoParameters.js";import{ShaderBuilder as b}from"../views/webgl/ShaderBuilder.js";class S extends f{constructor(){super(...arguments),this.sampleScale=e(),this.opacityFromElevation=1,this.gradientColorRamp=y,this.thresholdColor=o($),this.bandedGradientColorRamp=M,this.bandSize=.1,this.threshold=.5,this.data=null}get shadowCastMap(){return this.data?.shadowCastTexture??null}}const R=.7,j=50/255,y=[[0,r(0,0,1,0)],[1,r(0,0,1,R)]],$=r(1,0,0,R),M=[[0,r(j,j,j,0)],[1,r(j,j,j,R)]];function z(e){const o=new b,r=o.fragment;o.include(n),o.include(t);const{rendersSunlight:a,visualization:f}=e;r.constants.add("inverseSampleValue","float",C),r.uniforms.add(new v("shadowCastMap",e=>e.shadowCastMap),new i("sampleScale",e=>e.sampleScale),new h("opacityFromElevation",e=>e.opacityFromElevation));const S=2===f,R=3===f,j=1===f;R&&r.include(l);const y=!S;switch(y&&r.code.add(u`vec4 evaluateColorRamp(float value) {
2
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{clone as o,fromValues as r,create as a}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{BlendColorsPremultiplied as s,premultiplyAlpha as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/BlendColorsPremultiplied.glsl.js";import{CameraSpace as n}from"../views/3d/webgl-engine/core/shaderLibrary/util/CameraSpace.glsl.js";import{Float2PassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float4PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{Float4sPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Float4sPassUniform.js";import{FloatPassUniform as h}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{FloatsPassUniform as p}from"../views/3d/webgl-engine/core/shaderModules/FloatsPassUniform.js";import{glsl as u,If as c}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{maxColorRampSize as w}from"../views/3d/webgl-engine/shaders/colorRampParameters.js";import{S as C}from"./ShadowCastAccumulate.glsl.js";import{NoParameters as f}from"../views/webgl/NoParameters.js";import{ShaderBuilder as b}from"../views/webgl/ShaderBuilder.js";class S extends f{constructor(r){super(),this.data=r,this.sampleScale=e(),this.opacityFromElevation=1,this.gradientColorRamp=y,this.thresholdColor=o($),this.bandedGradientColorRamp=M,this.bandSize=.1,this.threshold=.5}get shadowCastMap(){return this.data.shadowCastTexture}}const R=.7,j=50/255,y=[[0,r(0,0,1,0)],[1,r(0,0,1,R)]],$=r(1,0,0,R),M=[[0,r(j,j,j,0)],[1,r(j,j,j,R)]];function z(e){const o=new b,r=o.fragment;o.include(n),o.include(t);const{rendersSunlight:a,visualization:f}=e;r.constants.add("inverseSampleValue","float",C),r.uniforms.add(new v("shadowCastMap",e=>e.shadowCastMap),new i("sampleScale",e=>e.sampleScale),new h("opacityFromElevation",e=>e.opacityFromElevation));const S=2===f,R=3===f,j=1===f;R&&r.include(s);const y=!S;switch(y&&r.code.add(u`vec4 evaluateColorRamp(float value) {
3
3
  if (value <= vvColorValues[0]) {
4
4
  return vvColorColors[0];
5
5
  }
@@ -10,7 +10,7 @@ return mix(vvColorColors[i-1], vvColorColors[i], f);
10
10
  }
11
11
  }
12
12
  return vvColorColors[colorRampSize - 1];
13
- }`),f){case 0:r.uniforms.add(new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>s(P,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 1:r.uniforms.add(new m("vvColorColors",w,e=>e.bandedGradientColorRamp.flatMap(([e,o])=>s(P,o))),new g("colorRampSize",e=>e.bandedGradientColorRamp.length),new p("vvColorValues",w,e=>e.bandedGradientColorRamp.map(([e,o])=>e)),new h("bandSize",e=>e.bandSize));break;case 3:r.uniforms.add(new d("uColor",e=>s(P,e.thresholdColor)),new h("threshold",e=>e.threshold),new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>s(P,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 2:r.uniforms.add(new d("uColor",e=>s(P,e.thresholdColor)),new h("threshold",e=>e.threshold))}const{type:$,selector:M,thresholdStrengthSelector:z}=R?{type:"vec2",selector:"rg",thresholdStrengthSelector:"strength.x"}:{type:"float",selector:"r",thresholdStrengthSelector:"strength"},V=!a;return r.main.add(u`
13
+ }`),f){case 0:r.uniforms.add(new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>l(P,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 1:r.uniforms.add(new m("vvColorColors",w,e=>e.bandedGradientColorRamp.flatMap(([e,o])=>l(P,o))),new g("colorRampSize",e=>e.bandedGradientColorRamp.length),new p("vvColorValues",w,e=>e.bandedGradientColorRamp.map(([e,o])=>e)),new h("bandSize",e=>e.bandSize));break;case 3:r.uniforms.add(new d("uColor",e=>l(P,e.thresholdColor)),new h("threshold",e=>e.threshold),new m("vvColorColors",w,e=>e.gradientColorRamp.flatMap(([e,o])=>l(P,o))),new g("colorRampSize",e=>e.gradientColorRamp.length),new p("vvColorValues",w,e=>e.gradientColorRamp.map(([e,o])=>e)));break;case 2:r.uniforms.add(new d("uColor",e=>l(P,e.thresholdColor)),new h("threshold",e=>e.threshold))}const{type:$,selector:M,thresholdStrengthSelector:z}=R?{type:"vec2",selector:"rg",thresholdStrengthSelector:"strength.x"}:{type:"float",selector:"r",thresholdStrengthSelector:"strength"},V=!a;return r.main.add(u`
14
14
  ${$} numSamples = texture(shadowCastMap, uv).${M} * inverseSampleValue;
15
15
 
16
16
  fragColor = vec4(0.0);
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{normalize as e,transformMat4 as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{NormalFromDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/NormalFromDepth.glsl.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{calculateUVZShadowFromDepthPass as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js";import{ShadowmapFiltering as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ShadowmapFiltering.glsl.js";import{Float3BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float4PassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as d}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DShadowBindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DShadowBindUniform.js";import{Texture2DUintPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{ShaderBuilder as m}from"../views/webgl/ShaderBuilder.js";const w=.025;function p(r){const p=new m;p.include(a),p.fragment.include(l),p.include(t),p.include(o);const v=p.fragment;return v.uniforms.add(new c("shadowMapExcludingHighlight",({shadowMap:e})=>e.getOutput(7)),new s("shadowHighlight",({shadowHighlight:e})=>e?.getTexture()),new s("depthMap",e=>e.mainDepth),new u("highlightTexture",e=>e.highlightTexture),new g("uColor",e=>e.shadowColor),new n("opacity",e=>e.shadowOpacity),new n("occludedOpacity",e=>e.occludedShadowOpacity),new n("terminationFactor",e=>e.opacityElevation*e.dayNightTerminator),new h("lightingMainDirectionView",({lighting:r,camera:o})=>e(f,i(f,r.mainLight.direction,o.viewInverseTransposeMatrix)))),v.main.add(d`
2
+ import{normalize as e,transformMat4 as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as r}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{NormalFromDepth as o}from"../views/3d/webgl-engine/core/shaderLibrary/NormalFromDepth.glsl.js";import{ScreenSpacePass as t}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{calculateUVZShadowFromDepthPass as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js";import{ShadowmapFiltering as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ShadowmapFiltering.glsl.js";import{blendEmission as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/blendEmission.glsl.js";import{Float3BindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float4PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as s}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DShadowBindUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DShadowBindUniform.js";import{Texture2DUintPassUniform as m}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{ShaderBuilder as w}from"../views/webgl/ShaderBuilder.js";const p=.025;function f(r){const f=new w;f.include(a),f.fragment.include(l),f.include(t),f.include(o);const{fragment:x,outputs:b}=f;return b.add("fragColor","vec4",0),x.uniforms.add(new u("shadowMapExcludingHighlight",({shadowMap:e})=>e.getOutput(7)),new c("shadowHighlight",({shadowHighlight:e})=>e?.getTexture()),new c("depthMap",e=>e.mainDepth),new m("highlightTexture",e=>e.highlightTexture),new d("uColor",e=>e.shadowColor),new n("opacity",e=>e.shadowOpacity),new n("occludedOpacity",e=>e.occludedShadowOpacity),new n("terminationFactor",e=>e.opacityElevation*e.dayNightTerminator),new g("lightingMainDirectionView",({lighting:r,camera:o})=>e(v,i(v,r.mainLight.direction,o.viewInverseTransposeMatrix)))),x.main.add(s`
3
3
  ivec2 highlightTextureSize = textureSize(highlightTexture, 0);
4
4
  ivec2 highlightIUV = ivec2(uv * vec2(highlightTextureSize));
5
5
  uvec2 highlightInfo = texelFetch(highlightTexture, highlightIUV, 0).rg;
@@ -35,9 +35,9 @@ import{normalize as e,transformMat4 as i}from"../core/libs/gl-matrix-2/math/vec3
35
35
  float shadowExcludingHighlightFactor = readShadowMapUVZ(uvzShadow, shadowMapExcludingHighlight);
36
36
 
37
37
  vec3 normal = normalFromDepth(depthMap, currentPixelPos.xyz, gl_FragCoord.xy, uv);
38
- bool shaded = dot(normal, lightingMainDirectionView) < ${d.float(w)};
38
+ bool shaded = dot(normal, lightingMainDirectionView) < ${s.float(p)};
39
39
 
40
40
  float occludedFactor = max(shadowExcludingHighlightFactor, shaded ? 1.0 : 0.0);
41
41
  float fragOpacity = mix(opacity, occludedOpacity, occludedFactor);
42
42
  fragColor = vec4(uColor.rgb, uColor.a * fragOpacity * terminationFactor);
43
- `),p}const f=r(),v=Object.freeze(Object.defineProperty({__proto__:null,build:p},Symbol.toStringTag,{value:"Module"}));export{v as S,p as b};
43
+ `),f.include(h,r),f}const v=r(),x=Object.freeze(Object.defineProperty({__proto__:null,build:f},Symbol.toStringTag,{value:"Module"}));export{x as S,f as b};