@arcgis/core 4.33.0-next.20250311 → 4.33.0-next.20250313

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 (162) hide show
  1. package/Basemap.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/025f8b72d7d8b5cccb0f.js +1 -0
  4. package/assets/esri/core/workers/chunks/{5b1b93665c93955491c4.js → 08bfceab05b5ea02bb4e.js} +106 -107
  5. package/assets/esri/core/workers/chunks/{bc988b9d3990380be907.js → 0a98dc3ea67ce97a6e7b.js} +1 -1
  6. package/assets/esri/core/workers/chunks/0e5c77d043ed4641556f.js +1 -0
  7. package/assets/esri/core/workers/chunks/10fc47b441ae49ef4db8.js +1 -0
  8. package/assets/esri/core/workers/chunks/{eacab4bd6eb58e545f73.js → 11f9d7cd95891596b716.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{4263eee3247aaf4e64bf.js → 147e412de9972da16a1d.js} +1 -1
  10. package/assets/esri/core/workers/chunks/4908b36ef448bfe1f448.js +1 -0
  11. package/assets/esri/core/workers/chunks/4d95cc85f4b73e857b1f.js +1 -0
  12. package/assets/esri/core/workers/chunks/54ace3e4802934f3f9f2.js +1 -0
  13. package/assets/esri/core/workers/chunks/5820808c7659460969d4.js +1 -0
  14. package/assets/esri/core/workers/chunks/6388fdacb434a266b039.js +314 -0
  15. package/assets/esri/core/workers/chunks/add0770399a63b7635b5.js +1 -0
  16. package/assets/esri/core/workers/chunks/b2f8702a9f54fff23ad9.js +1 -0
  17. package/assets/esri/core/workers/chunks/b8b8425e8b1246cdc86d.js +1 -0
  18. package/assets/esri/core/workers/chunks/d0fbd4c6bffe0cb98d14.js +1 -0
  19. package/assets/esri/core/workers/chunks/{2c227d97d00b3849f441.js → d459c790a3b89ac53d2d.js} +1 -1
  20. package/assets/esri/core/workers/chunks/dd6f18bbab50be139d20.js +1 -0
  21. package/assets/esri/core/workers/chunks/de6864e120243cf0bee8.js +1 -0
  22. package/assets/esri/core/workers/chunks/fc7ce48c7b31a4665a9b.js +1 -0
  23. package/assets/esri/core/workers/chunks/fe6e7ac83cd2293d576e.js +1 -0
  24. package/chunks/ComponentShader.glsl.js +7 -8
  25. package/chunks/DefaultMaterial.glsl.js +21 -21
  26. package/chunks/HighlightApply.glsl.js +27 -132
  27. package/chunks/{SingleHighlightBlur.glsl.js → HighlightBlur.glsl.js} +4 -4
  28. package/chunks/HighlightDownsample.glsl.js +8 -8
  29. package/chunks/HighlightToSingle.glsl.js +2 -2
  30. package/chunks/Pattern.glsl.js +23 -25
  31. package/chunks/RealisticTree.glsl.js +12 -12
  32. package/chunks/ShadowHighlight.glsl.js +5 -6
  33. package/chunks/Terrain.glsl.js +30 -31
  34. package/core/LRUCache.js +1 -1
  35. package/core/MemCache.js +1 -1
  36. package/core/has.js +1 -1
  37. package/geometry/support/ShortArray.js +5 -0
  38. package/interfaces.d.ts +18 -4
  39. package/layers/support/layerUtils.js +1 -1
  40. package/layers/video/VideoController.js +1 -1
  41. package/package.json +1 -1
  42. package/support/revision.js +1 -1
  43. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  44. package/views/2d/engine/webgl/Painter.js +1 -1
  45. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  46. package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
  47. package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
  48. package/views/2d/engine/webgl/effects/HittestEffect.js +1 -1
  49. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  50. package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
  51. package/views/2d/layers/imagery/VectorFieldTileView2D.js +1 -1
  52. package/views/3d/analysis/Viewshed/ViewshedComputedData.js +1 -1
  53. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  54. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  55. package/views/3d/environment/CloudsRenderer.js +1 -1
  56. package/views/3d/environment/EnvironmentManager.js +1 -1
  57. package/views/3d/environment/Fog.js +1 -1
  58. package/views/3d/environment/Precipitation.js +1 -1
  59. package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayer.js +1 -1
  60. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  61. package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
  62. package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
  63. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  64. package/views/3d/layers/graphics/LabelInfo.js +1 -1
  65. package/views/3d/layers/graphics/pipeline/Feature3DPipeline.js +1 -1
  66. package/views/3d/layers/graphics/pipeline/Feature3DPipelineWorker.js +1 -1
  67. package/views/3d/layers/graphics/pipeline/Feature3DPipelineWorkerHandle.js +1 -1
  68. package/views/3d/layers/graphics/pipeline/featureData/processingUtils.js +1 -1
  69. package/views/3d/layers/graphics/pipeline/rendering/DirectRenderer.js +1 -1
  70. package/views/3d/layers/graphics/pipeline/rendering/FeaturePipelineRenderManager.js +1 -1
  71. package/views/3d/layers/graphics/pipeline/rendering/LodRenderer.js +1 -1
  72. package/views/3d/layers/graphics/pipeline/rendering/RenderCommandContext.js +1 -1
  73. package/views/3d/layers/graphics/pipeline/symbolization/TestObjectSymbol.js +1 -1
  74. package/views/3d/layers/graphics/pipeline/symbolization/TestSymbol.js +1 -1
  75. package/views/3d/layers/graphics/pipeline/utils.js +1 -1
  76. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  77. package/views/3d/support/flowUtils.js +5 -0
  78. package/views/3d/terrain/OverlayRenderTargets.js +1 -1
  79. package/views/3d/terrain/OverlayRenderer.js +1 -1
  80. package/views/3d/terrain/TileRenderer.js +1 -1
  81. package/views/3d/webgl/ManagedFBO.js +1 -1
  82. package/views/3d/webgl/formats.js +1 -1
  83. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  84. package/views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js +2 -2
  85. package/views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.glsl.js +3 -3
  86. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +63 -77
  87. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +6 -6
  88. package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +7 -8
  89. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +18 -18
  90. package/views/3d/webgl-engine/core/shaderModules/UintTexture2DBindUniform.js +5 -0
  91. package/views/3d/webgl-engine/core/shaderModules/UintTexture2DDrawUniform.js +5 -0
  92. package/views/3d/webgl-engine/core/shaderModules/UintTexture2DPassUniform.js +5 -0
  93. package/views/3d/webgl-engine/effects/bloom/BloomRenderNode.js +1 -1
  94. package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
  95. package/views/3d/webgl-engine/effects/focusArea/FocusAreaColorNode.js +1 -1
  96. package/views/3d/webgl-engine/effects/focusArea/FocusAreaMaskNode.js +1 -1
  97. package/views/3d/webgl-engine/effects/haze/Haze.js +1 -1
  98. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  99. package/views/3d/webgl-engine/effects/highlight/HighlightBlurTechnique.js +5 -0
  100. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  101. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  102. package/views/3d/webgl-engine/effects/transparency/OITBlendTechnique.js +1 -1
  103. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  104. package/views/3d/webgl-engine/lib/Normals.js +1 -1
  105. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  106. package/views/3d/webgl-engine/lib/OrderIndependentTransparency.js +1 -1
  107. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  108. package/views/3d/webgl-engine/lib/PathGeometryData.js +1 -1
  109. package/views/3d/webgl-engine/lib/Program.js +1 -1
  110. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  111. package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
  112. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  113. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  114. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  115. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  116. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  117. package/views/3d/webgl-engine/parts/Model.js +1 -1
  118. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  119. package/views/3d/webgl-engine/shaders/HighlightApply.glsl.js +1 -1
  120. package/views/3d/webgl-engine/shaders/{SingleHighlightBlur.glsl.js → HighlightBlur.glsl.js} +1 -1
  121. package/views/3d/webgl-engine/shaders/HighlightDownsample.glsl.js +1 -1
  122. package/views/3d/webgl-engine/shaders/HighlightToSingle.glsl.js +1 -1
  123. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  124. package/views/3d/webgl-engine/shaders/ShadowHighlight.glsl.js +1 -1
  125. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  126. package/views/FocusAreas.js +1 -1
  127. package/views/animation/easing.js +1 -1
  128. package/views/support/imageReprojection.js +1 -1
  129. package/views/support/projectionUtils.js +1 -1
  130. package/views/webgl/FramebufferObject.js +1 -1
  131. package/views/webgl/RenderingContext.js +1 -1
  132. package/views/webgl/ShaderBuilder.js +1 -1
  133. package/views/webgl/ShaderTranspiler.js +1 -1
  134. package/views/webgl/ValidatedTextureDescriptor.js +1 -1
  135. package/views/webgl/enums.js +1 -1
  136. package/widgets/Editor/EditorViewModel.js +1 -1
  137. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  138. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  139. package/widgets/OrientedImageryViewer.js +1 -1
  140. package/widgets/support/GoTo.js +1 -1
  141. package/widgets/support/goToUtils.js +1 -1
  142. package/assets/esri/core/workers/chunks/0137c17f15d79134b4ca.js +0 -314
  143. package/assets/esri/core/workers/chunks/15fe629cd4da1bb2169f.js +0 -1
  144. package/assets/esri/core/workers/chunks/3bbf7f89bc37c01b453b.js +0 -1
  145. package/assets/esri/core/workers/chunks/40f2c8022fd583c43f42.js +0 -1
  146. package/assets/esri/core/workers/chunks/4f2bb248dd258b493663.js +0 -1
  147. package/assets/esri/core/workers/chunks/5295e685ae839087c568.js +0 -1
  148. package/assets/esri/core/workers/chunks/54b115ecf446b4095d3e.js +0 -1
  149. package/assets/esri/core/workers/chunks/5a536de1ecae424bad05.js +0 -1
  150. package/assets/esri/core/workers/chunks/7ca9230681d05ef89059.js +0 -1
  151. package/assets/esri/core/workers/chunks/8196ff250c0de00104f7.js +0 -1
  152. package/assets/esri/core/workers/chunks/840c02610d845114ace7.js +0 -1
  153. package/assets/esri/core/workers/chunks/a4228101f709f0bb9a3d.js +0 -1
  154. package/assets/esri/core/workers/chunks/be883ebdbaf11647b718.js +0 -1
  155. package/assets/esri/core/workers/chunks/d374d2a1487faee3672d.js +0 -1
  156. package/assets/esri/core/workers/chunks/dbdca19978fbee8dc106.js +0 -1
  157. package/assets/esri/core/workers/chunks/ffd28a9b1d8db3a731f4.js +0 -1
  158. package/chunks/SingleHighlightApply.glsl.js +0 -32
  159. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js +0 -5
  160. package/views/3d/webgl-engine/effects/highlight/SingleHighlightApplyTechnique.js +0 -5
  161. package/views/3d/webgl-engine/effects/highlight/SingleHighlightBlurTechnique.js +0 -5
  162. package/views/3d/webgl-engine/shaders/SingleHighlightApply.glsl.js +0 -5
@@ -2,7 +2,7 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{earth as e,mars as o,moon as r}from"../geometry/support/Ellipsoid.js";import{OverlayContent as a}from"../views/3d/terrain/OverlayContent.js";import{IntegratedMeshMode as i}from"../views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js";import{ComponentData as l,ComponentDataType as t}from"../views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js";import{VertexDiscardMode as n}from"../views/3d/webgl-engine/collections/Component/Material/shader/VertexDiscardMode.js";import{ForwardLinearDepth as d}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{ShaderOutput as s,isColorOrColorEmission as g}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SlicePass as m}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexColor as v}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{VertexNormal as h}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VertexPosition as u}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js";import{OutputDepth as w}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{computeFragmentNormals as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js";import{ComputeMaterialColor as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeMaterialColor.glsl.js";import{ComputeNormalTexture as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateSceneLighting as y,addLightingGlobalFactor as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as L}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{PBRMode as j,PhysicallyBasedRenderingParameters as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadBaseColorTexture as S}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadBaseColorTexture.glsl.js";import{ReadShadowMapPass as M}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{terrainDepthTest as N}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{OverlayIM as T,getIMColorTexture as $}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{DiscardOrAdjustAlphaDraw as A}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{EllipsoidMode as D}from"../views/3d/webgl-engine/core/shaderLibrary/util/EllipsoidMode.js";import{If as W,glsl as P}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as B}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as R}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{outputColorHighlightOID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as E}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as H}from"../webscene/support/AlphaCutoff.js";function I(I){const V=new E,{vertex:F,fragment:_}=V;V.include(u,I),V.include(h,I),V.include(v,I),V.include(c,I),V.include(d,I),V.include(l,I),V.include(A,I),_.include(m,I),V.include(S,I),V.include(N,I);const{output:G,pbrMode:k,hasNormalTexture:q,snowCover:U,receiveShadows:J,spherical:K,ellipsoidMode:Q}=I,X=k===j.Normal||k===j.Schematic;X&&(V.include(O,I),q&&V.include(f,I));const Y=G===s.Shadow||G===s.ShadowHighlight||G===s.ShadowExcludeHighlight,Z=Y&&I.componentData===t.Varying,ee=I.integratedMeshMode===i.ColorOverlay||I.integratedMeshMode===i.ColorOverlayWithWater;if(ee){V.include(y,I),V.include(T,I);const a=Q===D.Earth,i=Q===D.Earth,l=a?e.radius:i?o.radius:r.radius;F.code.add(`\n ${W(K,`const float invRadius = ${P.float(1/l)};`)}\n vec2 projectOverlay(vec3 pos) { return pos.xy ${W(K,"/ (1.0 + invRadius * pos.z);")}; }`)}const oe=ee&&g(G)&&k===j.WaterOnIntegratedMesh;oe&&(V.varyings.add("tbnTangent","vec3"),V.varyings.add("tbnBiTangent","vec3"),V.varyings.add("groundNormal","vec3"));const re=I.vertexDiscardMode===n.None,ae=I.vertexDiscardMode===n.Opaque,ie=1-1/255;if(F.main.add(P`
5
+ import{earth as e,mars as o,moon as r}from"../geometry/support/Ellipsoid.js";import{OverlayContent as a}from"../views/3d/terrain/OverlayContent.js";import{IntegratedMeshMode as i}from"../views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js";import{ComponentData as t,ComponentDataType as l}from"../views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js";import{VertexDiscardMode as n}from"../views/3d/webgl-engine/collections/Component/Material/shader/VertexDiscardMode.js";import{ForwardLinearDepth as d}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{ShaderOutput as s,isColorOrColorEmission as g}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SlicePass as m}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexColor as v}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{VertexNormal as u}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VertexPosition as h}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js";import{OutputDepth as w}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as p}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{computeFragmentNormals as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeFragmentNormals.glsl.js";import{ComputeMaterialColor as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeMaterialColor.glsl.js";import{ComputeNormalTexture as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateSceneLighting as y,addLightingGlobalFactor as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as L}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{PBRMode as j,PhysicallyBasedRenderingParameters as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadBaseColorTexture as S}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadBaseColorTexture.glsl.js";import{ReadShadowMapPass as M}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{terrainDepthTest as N}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{OverlayIM as T,getIMColorTexture as $}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{DiscardOrAdjustAlphaDraw as A}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{EllipsoidMode as D}from"../views/3d/webgl-engine/core/shaderLibrary/util/EllipsoidMode.js";import{If as W,glsl as P}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as B}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{Texture2DPassUniform as R}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{outputColorHighlightOID as z}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as E}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as I}from"../webscene/support/AlphaCutoff.js";function V(V){const F=new E,{vertex:H,fragment:_}=F;F.include(h,V),F.include(u,V),F.include(v,V),F.include(c,V),F.include(d,V),F.include(t,V),F.include(A,V),_.include(m,V),F.include(S,V),F.include(N,V);const{output:G,pbrMode:k,hasNormalTexture:q,snowCover:U,receiveShadows:J,spherical:K,ellipsoidMode:Q}=V,X=k===j.Normal||k===j.Schematic;X&&(F.include(O,V),q&&F.include(f,V));const Y=G===s.Shadow||G===s.ShadowHighlight||G===s.ShadowExcludeHighlight,Z=Y&&V.componentData===l.Varying,ee=V.integratedMeshMode===i.ColorOverlay||V.integratedMeshMode===i.ColorOverlayWithWater;if(ee){F.include(y,V),F.include(T,V);const a=Q===D.Earth,i=Q===D.Earth,t=a?e.radius:i?o.radius:r.radius;H.code.add(`\n ${W(K,`const float invRadius = ${P.float(1/t)};`)}\n vec2 projectOverlay(vec3 pos) { return pos.xy ${W(K,"/ (1.0 + invRadius * pos.z);")}; }`)}const oe=ee&&g(G)&&k===j.WaterOnIntegratedMesh;oe&&(F.varyings.add("tbnTangent","vec3"),F.varyings.add("tbnBiTangent","vec3"),F.varyings.add("groundNormal","vec3"));const re=V.vertexDiscardMode===n.None,ae=V.vertexDiscardMode===n.Opaque,ie=1-1/255;if(H.main.add(P`
6
6
  bool castShadows;
7
7
  vec4 externalColor = forwardExternalColor(castShadows);
8
8
  ${W(Z,"if(!castShadows) { gl_Position = vec4(vec3(1e38), 1.0); return; }")}
@@ -27,12 +27,12 @@ import{earth as e,mars as o,moon as r}from"../geometry/support/Ellipsoid.js";imp
27
27
  tbnBiTangent = vec3(0.0, 1.0, 0.0);`)}
28
28
  ${W(ee,"setOverlayVTC(projectOverlay(position));")}
29
29
 
30
- if (externalColor.a < ${P.float(H)}) {
30
+ if (externalColor.a < ${P.float(I)}) {
31
31
  // Discard this vertex
32
32
  gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
33
33
  return;
34
34
  }
35
- `),g(G))return V.include(C,I),V.include(b,I),V.include(y,I),V.include(z,I),J&&V.include(M,I),_.code.add(P`
35
+ `),g(G))return F.include(C,V),F.include(b,V),F.include(y,V),F.include(z,V),J&&F.include(M,V),_.code.add(P`
36
36
  float evaluateShadow() {
37
37
  return ${J?"readShadowMap(vPositionWorldCameraRelative, linearDepth)":"0.0"};
38
38
  }`),ee&&_.uniforms.add(new R("ovColorTex",((e,o)=>$(e,o)))),_.main.add(P`
@@ -94,15 +94,14 @@ import{earth as e,mars as o,moon as r}from"../geometry/support/Ellipsoid.js";imp
94
94
  // un-gamma the ground color to mix in linear space
95
95
  shadedColor = mix(shadedColor, waterColorNonLinear, waterColorLinear.w);
96
96
  }`)}
97
- `)),_.main.add("outputColorHighlightOID(shadedColor, vPositionWorldCameraRelative);"),V;const le=G===s.Normal,te=G===s.ObjectAndLayerIdColor,ne=G===s.Highlight,de=Y||G===s.ViewshedShadow;return de&&V.include(w,I),le&&V.include(b,I),V.include(p,I),_.main.add(P`
97
+ `)),_.main.add("outputColorHighlightOID(shadedColor, vPositionWorldCameraRelative);"),F;const te=G===s.Normal,le=G===s.ObjectAndLayerIdColor,ne=G===s.Highlight,de=Y||G===s.ViewshedShadow;return de&&F.include(w,V),te&&F.include(b,V),F.include(p,V),_.main.add(P`
98
98
  discardBySlice(vPositionWorldCameraRelative);
99
99
 
100
100
  vec4 textureColor = readBaseColorTexture();
101
101
  discardOrAdjustAlpha(textureColor);
102
102
 
103
103
  ${W(de,"outputDepth(linearDepth);")}
104
- ${W(le,P`fragColor = vec4(vec3(0.5) + 0.5 * fragmentFaceNormalView, 1.0);`)}
105
- ${W(te,ee?"fragColor = getOverlayColorTexel();":"outputObjectAndLayerIdColor();")}
104
+ ${W(te,P`fragColor = vec4(vec3(0.5) + 0.5 * fragmentFaceNormalView, 1.0);`)}
105
+ ${W(le,ee?"fragColor = getOverlayColorTexel();":"outputObjectAndLayerIdColor();")}
106
106
  ${W(ne,P`${W(ee,P`
107
- vec2 overlayHighlightTexel = getAllOverlayHighlightValuesEncoded();
108
- calculateOcclusionAndOutputHighlightOverlay(overlayHighlightTexel);`,P`calculateOcclusionAndOutputHighlight();`)}`)}`),V}const V=Object.freeze(Object.defineProperty({__proto__:null,build:I},Symbol.toStringTag,{value:"Module"}));export{V as C,I as b};
107
+ calculateOcclusionAndOutputHighlightOverlay(getAllOverlayHighlightValuesEncoded());`,P`calculateOcclusionAndOutputHighlight();`)}`)}`),F}const F=Object.freeze(Object.defineProperty({__proto__:null,build:V},Symbol.toStringTag,{value:"Module"}));export{F as C,V as b};
@@ -2,10 +2,10 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ForwardLinearDepth as r}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{Offset as o}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColorOrColorEmission as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as a}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as l}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as n,NormalType as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{PositionAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js";import{SymbolColor as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js";import{TextureCoordinateAttribute as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexColor as g}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{VertexNormal as v}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VerticalOffset as b}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as u}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{ComputeNormalTexture as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateAmbientOcclusion as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as p,addAmbientBoostFactor as f,addLightingGlobalFactor as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as L}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{PhysicallyBasedRendering as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as j,PBRMode as P}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPass as O,ReadShadowMapDraw as N}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{terrainDepthTest as S}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{colorTextureUV as T,normalTextureUV as A,emissiveTextureUV as V,occlusionTextureUV as M,metallicRoughnessTextureUV as $}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as D}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as E}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{MixExternalColor as U}from"../views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js";import{addProjViewLocalOrigin as B,addCameraPosition as I}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as F}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as _}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as R}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as z,If as G}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as W}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{VertexAttribute as k}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{outputColorHighlightOID as H}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as q}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as J}from"../webscene/support/AlphaCutoff.js";function K(K){const Q=new q,{vertex:X,fragment:Y,varyings:Z}=Q,{output:ee,normalType:re,offsetBackfaces:oe,instancedColor:ie,spherical:ae,receiveShadows:le,snowCover:se,pbrMode:ne,textureAlphaPremultiplied:te,instancedDoublePrecision:de,hasVertexColors:ce,hasVertexTangents:me,hasColorTexture:ge,hasNormalTexture:ve,hasNormalTextureTransform:be,hasColorTextureTransform:ue}=K;if(B(X,K),Q.include(d),Z.add("vpos","vec3",{invariant:!0}),Q.include(D,K),Q.include(s,K),Q.include(b,K),Q.include(T,K),!i(ee))return Q.include(u,K),Q;Q.include(A,K),Q.include(V,K),Q.include(M,K),Q.include($,K),I(X,K),Q.include(n,K),Q.include(l,K);const we=re===t.Attribute||re===t.Compressed;return we&&oe&&Q.include(o),Q.include(w,K),Q.include(v,K),ie&&Q.attributes.add(k.INSTANCECOLOR,"vec4"),Z.add("vPositionLocal","vec3"),Q.include(m,K),Q.include(r,K),Q.include(c,K),Q.include(g,K),X.uniforms.add(new _("externalColor",(r=>"ignore"===r.colorMixMode?e:r.externalColor))),Z.add("vcolorExt","vec4"),Q.include(S,K),X.main.add(z`
5
+ import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ForwardLinearDepth as r}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{Offset as o}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColorOrColorEmission as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as a}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as l}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as n,NormalType as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{SymbolColor as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexColor as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{VertexNormal as g}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js";import{VerticalOffset as v}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as u}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{ComputeNormalTexture as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js";import{EvaluateAmbientOcclusion as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as h,addAmbientBoostFactor as p,addLightingGlobalFactor as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightIntensity as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Normals as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js";import{PhysicallyBasedRendering as L}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as C,PBRMode as j}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPass as P,ReadShadowMapDraw as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{terrainDepthTest as N}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{colorTextureUV as S,normalTextureUV as T,emissiveTextureUV as V,occlusionTextureUV as A,metallicRoughnessTextureUV as M}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as $}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as D}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{MixExternalColor as E}from"../views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js";import{addProjViewLocalOrigin as I,addCameraPosition as U}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as B}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as F}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as _}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as R,If as z}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as G}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{VertexAttribute as W}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{outputColorHighlightOID as k}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as H}from"../views/webgl/ShaderBuilder.js";import{alphaCutoff as q}from"../webscene/support/AlphaCutoff.js";function J(J){const K=new H,{attributes:Q,vertex:X,fragment:Y,varyings:Z}=K,{output:ee,normalType:re,offsetBackfaces:oe,instancedColor:ie,spherical:ae,receiveShadows:le,snowCover:se,pbrMode:ne,textureAlphaPremultiplied:te,instancedDoublePrecision:de,hasVertexColors:ce,hasVertexTangents:me,hasColorTexture:ge,hasNormalTexture:ve,hasNormalTextureTransform:ue,hasColorTextureTransform:be}=J;if(I(X,J),Q.add(W.POSITION,"vec3"),Z.add("vpos","vec3",{invariant:!0}),K.include($,J),K.include(s,J),K.include(v,J),K.include(S,J),!i(ee))return K.include(u,J),K;K.include(T,J),K.include(V,J),K.include(A,J),K.include(M,J),U(X,J),K.include(n,J),K.include(l,J);const we=re===t.Attribute||re===t.Compressed;return we&&oe&&K.include(o),K.include(b,J),K.include(g,J),ie&&K.attributes.add(W.INSTANCECOLOR,"vec4"),Z.add("vPositionLocal","vec3"),K.include(c,J),K.include(r,J),K.include(d,J),K.include(m,J),X.uniforms.add(new F("externalColor",(r=>"ignore"===r.colorMixMode?e:r.externalColor))),Z.add("vcolorExt","vec4"),K.include(N,J),X.main.add(R`
6
6
  forwardNormalizedVertexColor();
7
7
  vcolorExt = externalColor;
8
- ${G(ie,"vcolorExt *= instanceColor * 0.003921568627451;")}
8
+ ${z(ie,"vcolorExt *= instanceColor * 0.003921568627451;")}
9
9
  vcolorExt *= vvColor();
10
10
  vcolorExt *= getSymbolColor();
11
11
  forwardColorMixMode();
@@ -13,11 +13,11 @@ import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{Forw
13
13
  vpos = getVertexInLocalOriginSpace();
14
14
  vPositionLocal = vpos - view[3].xyz;
15
15
  vpos = subtractOrigin(vpos);
16
- ${G(we,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
16
+ ${z(we,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
17
17
  vpos = addVerticalOffset(vpos, localOrigin);
18
- ${G(me,"vTangent = dpTransformVertexTangent(tangent);")}
18
+ ${z(me,"vTangent = dpTransformVertexTangent(tangent);")}
19
19
  gl_Position = transformPosition(proj, view, vpos);
20
- ${G(we&&oe,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
20
+ ${z(we&&oe,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
21
21
 
22
22
  forwardViewPosDepth((view * vec4(vpos, 1.0)).xyz);
23
23
  forwardLinearDepth();
@@ -28,18 +28,18 @@ import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{Forw
28
28
  forwardOcclusionUV();
29
29
  forwardMetallicRoughnessUV();
30
30
 
31
- if (vcolorExt.a < ${z.float(J)}) {
31
+ if (vcolorExt.a < ${R.float(q)}) {
32
32
  gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
33
33
  }
34
- `),Q.include(p,K),Q.include(h,K),Q.include(E,K),Q.include(de?O:N,K),Q.fragment.include(a,K),Q.include(H,K),I(Y,K),Y.uniforms.add(X.uniforms.get("localOrigin"),new F("ambient",(e=>e.ambient)),new F("diffuse",(e=>e.diffuse)),new R("opacity",(e=>e.opacity)),new R("layerOpacity",(e=>e.layerOpacity))),ge&&Y.uniforms.add(new W("tex",(e=>e.texture))),Q.include(j,K),Q.include(C,K),Y.include(U),Q.include(L,K),f(Y),x(Y),y(Y),Y.main.add(z`
34
+ `),K.include(h,J),K.include(w,J),K.include(D,J),K.include(de?P:O,J),K.fragment.include(a,J),K.include(k,J),U(Y,J),Y.uniforms.add(X.uniforms.get("localOrigin"),new B("ambient",(e=>e.ambient)),new B("diffuse",(e=>e.diffuse)),new _("opacity",(e=>e.opacity)),new _("layerOpacity",(e=>e.layerOpacity))),ge&&Y.uniforms.add(new G("tex",(e=>e.texture))),K.include(C,J),K.include(L,J),Y.include(E),K.include(y,J),p(Y),f(Y),x(Y),Y.main.add(R`
35
35
  discardBySlice(vpos);
36
36
  discardByTerrainDepth();
37
- ${ge?z`
38
- vec4 texColor = texture(tex, ${ue?"colorUV":"vuv0"});
39
- ${G(te,"texColor.rgb /= texColor.a;")}
40
- discardOrAdjustAlpha(texColor);`:z`vec4 texColor = vec4(1.0);`}
37
+ ${ge?R`
38
+ vec4 texColor = texture(tex, ${be?"colorUV":"vuv0"});
39
+ ${z(te,"texColor.rgb /= texColor.a;")}
40
+ discardOrAdjustAlpha(texColor);`:R`vec4 texColor = vec4(1.0);`}
41
41
  shadingParams.viewDirection = normalize(vpos - cameraPosition);
42
- ${re===t.ScreenDerivative?z`vec3 normal = screenDerivativeNormal(vPositionLocal);`:z`shadingParams.normalView = vNormalWorld;
42
+ ${re===t.ScreenDerivative?R`vec3 normal = screenDerivativeNormal(vPositionLocal);`:R`shadingParams.normalView = vNormalWorld;
43
43
  vec3 normal = shadingNormal(shadingParams);`}
44
44
  applyPBRFactors();
45
45
  float ssao = evaluateAmbientOcclusionInverse() * getBakedOcclusion();
@@ -47,15 +47,15 @@ import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{Forw
47
47
  vec3 posWorld = vpos + localOrigin;
48
48
 
49
49
  float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
50
- float shadow = ${le?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":G(ae,"lightingGlobalFactor * (1.0 - additionalAmbientScale)","0.0")};
50
+ float shadow = ${le?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":z(ae,"lightingGlobalFactor * (1.0 - additionalAmbientScale)","0.0")};
51
51
 
52
52
  vec3 matColor = max(ambient, diffuse);
53
- vec3 albedo = mixExternalColor(${G(ce,"vColor.rgb *")} matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));
54
- float opacity_ = layerOpacity * mixExternalOpacity(${G(ce,"vColor.a * ")} opacity, texColor.a, vcolorExt.a, int(colorMixMode));
55
- ${ve?`mat3 tangentSpace = computeTangentSpace(${me?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${be?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
53
+ vec3 albedo = mixExternalColor(${z(ce,"vColor.rgb *")} matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));
54
+ float opacity_ = layerOpacity * mixExternalOpacity(${z(ce,"vColor.a * ")} opacity, texColor.a, vcolorExt.a, int(colorMixMode));
55
+ ${ve?`mat3 tangentSpace = computeTangentSpace(${me?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${ue?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
56
56
  vec3 normalGround = ${ae?"normalize(posWorld);":"vec3(0.0, 0.0, 1.0);"}
57
57
 
58
- ${G(se,z`
58
+ ${z(se,R`
59
59
  float snow = smoothstep(0.5, 0.55, dot(normal, normalGround));
60
60
  albedo = mix(albedo, vec3(1), snow);
61
61
  shadingNormal = mix(shadingNormal, normal, snow);
@@ -63,11 +63,11 @@ import{ONES as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{Forw
63
63
 
64
64
  vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
65
65
 
66
- ${ne===P.Normal||ne===P.Schematic?z`
66
+ ${ne===j.Normal||ne===j.Schematic?R`
67
67
  float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
68
- ${G(se,z`mrr = mix(mrr, vec3(0.0, 1.0, 0.04), snow);`)}
68
+ ${z(se,R`mrr = mix(mrr, vec3(0.0, 1.0, 0.04), snow);`)}
69
69
  vec4 emission = ${se?"mix(getEmissions(), vec4(0.0), snow)":"getEmissions()"};
70
- vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, emission, additionalAmbientIrradiance);`:z`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
70
+ vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, emission, additionalAmbientIrradiance);`:R`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
71
71
  vec4 finalColor = vec4(shadedColor, opacity_);
72
72
  outputColorHighlightOID(finalColor, vpos);
73
- `),Q}const Q=Object.freeze(Object.defineProperty({__proto__:null,build:K},Symbol.toStringTag,{value:"Module"}));export{Q as D,K as b};
73
+ `),K}const K=Object.freeze(Object.defineProperty({__proto__:null,build:J},Symbol.toStringTag,{value:"Module"}));export{K as D,J as b};
@@ -2,136 +2,31 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{HighlightCellGridScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{HighlightReadBitmap as l}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.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{IntegerBindUniform as o}from"../views/3d/webgl-engine/core/shaderModules/IntegerBindUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ShaderBuilder as r}from"../views/webgl/ShaderBuilder.js";function a(){const a=new r;a.include(e);const{fragment:c}=a;return c.uniforms.add(new n("highlightTexture",(e=>e.highlightTexture)),new n("highlightOptionsTexture",(e=>e.highlightOptionsTexture)),new i("pixelRatio",(e=>e.pixelRatio)),new i("occludedIntensityFactor",(e=>e.occludedFactor)),new o("maxHighlightLevel",(e=>e.highlights.length-1))),c.constants.add("pixelSampleScale","float",1),a.include(l),c.code.add(t`const float pascal17[9] = float[9](12870.0, 11440.0, 8008.0, 4368.0, 1820.0, 560.0, 120.0, 16.0, 1.0);
6
- const float denom17 = 65536.0;
7
- float colorWeight[16] = float[16](0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
8
- float colorOcclusion[16] = float[16](0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
9
- float weights[16] = float[16](0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
10
- void applyTexel(vec2 texel, float weight) {
11
- if (texel != vec2(0.0)){
12
- int maxChannel = (maxHighlightLevel >> 2) & 1;
13
- for (int channelIndex = 0; channelIndex <= maxChannel; ++channelIndex){
14
- uint channel = readChannel(texel, channelIndex << 2);
15
- int firstIndex = channelIndex << 2;
16
- int maxIndex = min(firstIndex + 3, maxHighlightLevel);
17
- for (int highlightIndex = firstIndex; highlightIndex <= maxIndex; ++highlightIndex ) {
18
- uint v = readChannelBits(channel, highlightIndex);
19
- if ((v & 1u) == 1u){
20
- colorWeight[highlightIndex] += weight;
21
- if ((v & 2u) == 2u){
22
- colorOcclusion[highlightIndex] += weight;
23
- }
24
- }
25
- }
26
- }
27
- }
28
- }
29
- vec2 readTexel(ivec2 iuv, int du, int dv) {
30
- return texelFetch(highlightTexture, iuv + ivec2(du, dv), 0).rg;
31
- }
32
- void readAndApplyTexel(ivec2 iuv, int du, int dv, float weight) {
33
- vec2 texel = readTexel(iuv, du, dv);
34
- applyTexel(texel, weight);
35
- }
36
- void readAndApply2TexelsU(ivec2 iuv, int du, int dv, float weight) {
37
- readAndApplyTexel(iuv, -du, dv, weight);
38
- readAndApplyTexel(iuv, +du, dv, weight);
39
- }
40
- float getWeight(int pixelDistance) {
41
- float scaledDistance = float(pixelDistance) * pixelSampleScale / pixelRatio;
42
- float d0f = floor(scaledDistance);
43
- int d0 = int(d0f);
44
- if (d0 >= 8){
45
- return 0.0;
46
- }
47
- float w0 = pascal17[d0];
48
- float w1 = pascal17[d0+1];
49
- float f = scaledDistance - d0f;
50
- return mix(w0, w1, f);
51
- }`),c.main.add(t`vec2 highlightTextureSize = vec2(textureSize(highlightTexture,0));
52
- ivec2 iuv = ivec2(sUV * highlightTextureSize);
53
- vec2 centerTexel = texelFetch(highlightTexture, iuv, 0).rg;
54
- bool outlinePossible = false;
55
- if (vOutlinePossible > 0.0){
56
- for (int highlightLevel=0; highlightLevel<= maxHighlightLevel; ++highlightLevel) {
57
- if ((readLevelBits(centerTexel,highlightLevel) & 1u) == 0u) {
58
- outlinePossible = true;
59
- break;
60
- }
61
- }
62
- }
63
- if (outlinePossible) {
64
- int maxPixelDistance = clamp(int(8.0 * pixelRatio / pixelSampleScale), 2, 16);
65
- float weightSum = 0.0;
66
- for(int y = 0; y <= maxPixelDistance; ++y) {
67
- float w = getWeight(y);
68
- weights[y] = w;
69
- weightSum += w * (y == 0 ? 1.0 : 2.0);
70
- }
71
- for(int y = 0; y <= maxPixelDistance; ++y) {
72
- weights[y] = weights[y] / weightSum;
73
- }
74
- float weight0 = weights[0];
75
- applyTexel(centerTexel, weight0 * weight0);
76
- for(int y = 0; y <= maxPixelDistance; y += 1) {
77
- float yFactor = weights[y];
78
- if (y != 0) {
79
- float xFactor = weight0;
80
- float weight = xFactor * yFactor;
81
- if (weight > 0.0) {
82
- readAndApplyTexel(iuv, 0, +y, weight);
83
- readAndApplyTexel(iuv, 0, -y, weight);
84
- }
85
- }
86
- for(int x = 1; x <= maxPixelDistance; x += 1) {
87
- float xFactor = weights[x];
88
- float weight = xFactor * yFactor;
89
- if (weight > 0.0) {
90
- readAndApply2TexelsU(iuv, x, +y, weight);
91
- if (y != 0){
92
- readAndApply2TexelsU(iuv, x, -y, weight);
93
- }
94
- }
95
- }
96
- }
97
- } else {
98
- applyTexel(centerTexel, 1.0);
99
- }
100
- int frontColorIndex = 999;
101
- int maxColorIndex = 0;
102
- for (int i = 0; i <= maxHighlightLevel; ++i) {
103
- if (colorWeight[i] > 0.0){
104
- frontColorIndex = min(frontColorIndex, i);
105
- maxColorIndex = max(maxColorIndex, i);
106
- }
107
- }
108
- if (frontColorIndex == 999){
109
- fragColor = vec4(0.0);
110
- return;
111
- }
112
- vec4 accumulatedColor = vec4(0.0);
113
- for (int curColorIndex = frontColorIndex; curColorIndex <= maxColorIndex; ++curColorIndex) {
114
- float curColorWeight = colorWeight[curColorIndex];
115
- if (curColorWeight <= 0.01){
116
- continue;
117
- }
118
- uint vc = readLevelBits(centerTexel, curColorIndex);
119
- bool centerFilled = (vc & 1u) == 1u;
120
- bool centerOccluded = (vc & 3u) == 3u;
121
- float curColorOcclusion = colorOcclusion[curColorIndex];
122
- bool occluded = centerFilled ? centerOccluded : curColorOcclusion > 0.5 * curColorWeight;
123
- int colorChannel = centerFilled ? 0 : 1;
124
- vec4 colorBase = texelFetch(highlightOptionsTexture, ivec2(curColorIndex, colorChannel), 0);
5
+ import{HighlightCellGridScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{HighlightReadBitmap as t}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.glsl.js";import{Float2DrawUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{UintTexture2DPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/UintTexture2DPassUniform.js";import{o as g,b as h}from"./HighlightDownsample.glsl.js";import{ShaderBuilder as s}from"../views/webgl/ShaderBuilder.js";function c(){const c=new s;c.include(e);const{fragment:a}=c;return a.uniforms.add(new n("blurInput",(e=>e.highlightBlurTexture)),new i("blurSize",(e=>e.blurSize)),new u("highlightTexture",(e=>e.highlightTexture)),new n("highlightOptionsTexture",(e=>e.highlightOptionsTexture)),new o("highlightLevel",(e=>e.highlightLevel)),new l("occludedIntensityFactor",(e=>e.occludedFactor))),a.constants.add("inner","float",1-(g-h)/g),c.include(t),a.main.add(r`vec2 highlightTextureSize = vec2(textureSize(highlightTexture,0));
6
+ vec2 uv = sUV;
7
+ vec2 center = texture(blurInput, uv).rg;
8
+ vec2 blurredHighlightValue = (vOutlinePossible == 0.0)
9
+ ? center
10
+ : center * 0.204164
11
+ + texture(blurInput, uv + blurSize * 1.407333).rg * 0.304005
12
+ + texture(blurInput, uv - blurSize * 1.407333).rg * 0.304005
13
+ + texture(blurInput, uv + blurSize * 3.294215).rg * 0.093913
14
+ + texture(blurInput, uv - blurSize * 3.294215).rg * 0.093913;
15
+ float highlightIntensity = blurredHighlightValue.r;
16
+ float occlusionWeight = blurredHighlightValue.g;
17
+ if (highlightIntensity <= 0.01) {
18
+ discard;
19
+ }
20
+ vec4 fillColor = texelFetch(highlightOptionsTexture, ivec2(highlightLevel, 0), 0);
21
+ vec4 outlineColor = texelFetch(highlightOptionsTexture, ivec2(highlightLevel, 1), 0);
22
+ uvec2 centerTexel = texelFetch(highlightTexture, ivec2(uv * highlightTextureSize), 0).rg;
23
+ uint centerBits = readLevelBits(centerTexel, highlightLevel);
24
+ bool centerFilled = (centerBits & 1u) == 1u;
25
+ bool centerOccluded = (centerBits & 3u) == 3u;
26
+ bool occluded = centerOccluded || (0.5 * highlightIntensity < occlusionWeight);
125
27
  float occlusionFactor = occluded ? occludedIntensityFactor : 1.0;
126
- float outlineFactor = centerFilled ? 1.0 : smoothstep(0.0, 0.03, curColorWeight);
127
- float intensity = colorBase.a * occlusionFactor * outlineFactor;
128
- vec3 currentColor = colorBase.rgb;
129
- float a0 = accumulatedColor.a;
130
- float a1 = intensity;
131
- float alpha = clamp(a0 + a1 - a0 * a1, 0.0, 1.0);
132
- if (alpha > 0.001){
133
- vec3 blendedColor = ((1.0 - a1) * a0 * accumulatedColor.rgb + a1 * currentColor) / alpha;
134
- accumulatedColor = vec4(blendedColor, alpha);
135
- }
136
- }
137
- fragColor = accumulatedColor;`),a}const c=Object.freeze(Object.defineProperty({__proto__:null,build:a},Symbol.toStringTag,{value:"Module"}));export{c as H,a as b};
28
+ float outlineFactor = centerFilled ? 1.0 : smoothstep(0.0, inner, highlightIntensity);
29
+ float fillFactor = centerFilled ? 1.0 : 0.0;
30
+ vec4 baseColor = mix(outlineColor, fillColor, fillFactor);
31
+ float intensity = baseColor.a * occlusionFactor * outlineFactor;
32
+ fragColor = vec4(baseColor.rgb, intensity);`),c}const a=Object.freeze(Object.defineProperty({__proto__:null,build:c},Symbol.toStringTag,{value:"Module"}));export{a as H,c as b};
@@ -2,15 +2,15 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{HighlightCellGridScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{Float2DrawUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{NoParameters as s}from"../views/webgl/NoParameters.js";import{ShaderBuilder as u}from"../views/webgl/ShaderBuilder.js";class n extends s{constructor(){super(...arguments),this.blurSize=e()}}function o(){const e=new u;return e.include(r),e.outputs.add("fragSingleHighlight","vec2",0),e.fragment.uniforms.add(new t("blurSize",(e=>e.blurSize)),new l("blurInput",(e=>e.blurInput))).main.add(i`vec2 highlightTextureSize = vec2(textureSize(blurInput,0));
5
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{HighlightCellGridScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{Float2DrawUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{NoParameters as u}from"../views/webgl/NoParameters.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class o extends u{constructor(){super(...arguments),this.blurSize=e()}}function n(){const e=new l;return e.include(r),e.outputs.add("fragHighlight","vec2",0),e.fragment.uniforms.add(new t("blurSize",(e=>e.blurSize)),new s("blurInput",(e=>e.blurInput))).main.add(i`vec2 highlightTextureSize = vec2(textureSize(blurInput,0));
6
6
  vec2 center = texture(blurInput, sUV).rg;
7
7
  if (vOutlinePossible == 0.0) {
8
- fragSingleHighlight = center;
8
+ fragHighlight = center;
9
9
  } else {
10
10
  vec2 sum = center * 0.204164;
11
11
  sum += texture(blurInput, sUV + blurSize * 1.407333).rg * 0.304005;
12
12
  sum += texture(blurInput, sUV - blurSize * 1.407333).rg * 0.304005;
13
13
  sum += texture(blurInput, sUV + blurSize * 3.294215).rg * 0.093913;
14
14
  sum += texture(blurInput, sUV - blurSize * 3.294215).rg * 0.093913;
15
- fragSingleHighlight = sum;
16
- }`),e}const g=Object.freeze(Object.defineProperty({__proto__:null,SingleHighlightBlurDrawParameters:n,build:o},Symbol.toStringTag,{value:"Module"}));export{n as S,g as a,o as b};
15
+ fragHighlight = sum;
16
+ }`),e}const g=Object.freeze(Object.defineProperty({__proto__:null,HighlightBlurDrawParameters:o,build:n},Symbol.toStringTag,{value:"Module"}));export{o as H,g as a,n as b};
@@ -2,10 +2,10 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{NoParameters as r}from"../views/webgl/NoParameters.js";import{ShaderBuilder as l}from"../views/webgl/ShaderBuilder.js";class u extends r{}function o(){const r=new l,{outputs:u,fragment:o}=r;return r.include(e),o.uniforms.add(new i("textureInput",(e=>e.input))),o.constants.add("outlineWidth","int",Math.ceil(n)),o.constants.add("cellSize","int",c),u.add("fragGrid","vec2"),o.main.add(t`ivec2 inputTextureSize = textureSize(textureInput, 0);
6
- ivec2 cellBottomLeftCornerInput = ivec2(floor(gl_FragCoord.xy) * vec2(cellSize));
5
+ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{UintTexture2DPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/UintTexture2DPassUniform.js";import{NoParameters as l}from"../views/webgl/NoParameters.js";import{ShaderBuilder as r}from"../views/webgl/ShaderBuilder.js";class o extends l{}function c(){const l=new r,{outputs:o,fragment:c}=l;return l.include(e),c.uniforms.add(new i("highlightTexture",(e=>e.highlightTexture))),c.constants.add("outlineWidth","int",Math.ceil(n)),c.constants.add("cellSize","int",u),o.add("fragGrid","uvec2"),c.main.add(t`ivec2 inputTextureSize = textureSize(highlightTexture, 0);
6
+ ivec2 cellBottomLeftCornerInput = ivec2(ivec2(floor(gl_FragCoord.xy) * vec2(cellSize)));
7
7
  ivec2 coordMid = cellBottomLeftCornerInput + ivec2(cellSize >> 1);
8
- uvec2 centreTexel = uvec2( texelFetch(textureInput, coordMid, 0).rg * 255.0) & uvec2(0x55u);
8
+ uvec2 centreTexel = texelFetch(highlightTexture, coordMid, 0).rg & uvec2(0x55u);
9
9
  float marginSquare = float(outlineWidth*outlineWidth);
10
10
  uvec2 outputValue = centreTexel & uvec2(0x55u);
11
11
  for(int y = -outlineWidth; y <= cellSize + outlineWidth; y+=2) {
@@ -14,10 +14,10 @@ int xMargin = dy > 0 ? int(ceil(sqrt(marginSquare - float(dy*dy)))) : outlineWid
14
14
  for(int x = -xMargin; x <= cellSize + xMargin; x+=2) {
15
15
  ivec2 coord = cellBottomLeftCornerInput + ivec2(x, y);
16
16
  uvec2[4] texels = uvec2[4] (
17
- uvec2(texelFetch(textureInput,coord+ivec2(0,0),0).rg * 255.0) & uvec2(0x55u),
18
- uvec2(texelFetch(textureInput,coord+ivec2(1,0),0).rg * 255.0) & uvec2(0x55u),
19
- uvec2(texelFetch(textureInput,coord+ivec2(0,1),0).rg * 255.0) & uvec2(0x55u),
20
- uvec2(texelFetch(textureInput,coord+ivec2(1,1),0).rg * 255.0) & uvec2(0x55u)
17
+ texelFetch(highlightTexture,coord+ivec2(0,0),0).rg & uvec2(0x55u),
18
+ texelFetch(highlightTexture,coord+ivec2(1,0),0).rg & uvec2(0x55u),
19
+ texelFetch(highlightTexture,coord+ivec2(0,1),0).rg & uvec2(0x55u),
20
+ texelFetch(highlightTexture,coord+ivec2(1,1),0).rg & uvec2(0x55u)
21
21
  );
22
22
  if (texels[0] == texels[1] && texels[1] == texels[2] && texels[2] == texels[3] && texels[3] == centreTexel) {
23
23
  continue;
@@ -28,4 +28,4 @@ outputValue |= texels[i];
28
28
  }
29
29
  }
30
30
  }
31
- fragGrid = vec2(outputValue) / 255.0;`),r}const c=32,n=9,a=.4,s=Object.freeze(Object.defineProperty({__proto__:null,HighlightDownsampleDrawParameters:u,blurSize:a,build:o,gridCellPixelSize:c,outlineSize:n},Symbol.toStringTag,{value:"Module"}));export{u as H,s as a,a as b,o as c,c as g,n as o};
31
+ fragGrid = outputValue;`),l}const u=32,n=9,s=.4,a=Object.freeze(Object.defineProperty({__proto__:null,HighlightDownsampleDrawParameters:o,blurSize:s,build:c,gridCellPixelSize:u,outlineSize:n},Symbol.toStringTag,{value:"Module"}));export{o as H,a,s as b,c,u as g,n as o};
@@ -2,8 +2,8 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{HighlightCellGridScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{HighlightReadBitmap as i}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.glsl.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ShaderBuilder as t}from"../views/webgl/ShaderBuilder.js";function s(){const s=new t;s.include(e),s.include(i);const{fragment:h}=s;return s.outputs.add("fragSingleHighlight","vec2",0),h.uniforms.add(new g("highlightTexture",(e=>e.highlightTexture)),new l("highlightLevel",(e=>e.highlightLevel))),h.main.add(r`ivec2 iuv = ivec2(gl_FragCoord.xy);
6
- vec2 inputTexel = texelFetch(highlightTexture, iuv, 0).rg;
5
+ import{HighlightCellGridScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{HighlightReadBitmap as i}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.glsl.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{UintTexture2DPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/UintTexture2DPassUniform.js";import{ShaderBuilder as t}from"../views/webgl/ShaderBuilder.js";function s(){const s=new t;s.include(e),s.include(i);const{fragment:h}=s;return s.outputs.add("fragSingleHighlight","vec2",0),h.uniforms.add(new g("highlightTexture",(e=>e.highlightTexture)),new l("highlightLevel",(e=>e.highlightLevel))),h.main.add(r`ivec2 iuv = ivec2(gl_FragCoord.xy);
6
+ uvec2 inputTexel = texelFetch(highlightTexture, iuv, 0).rg;
7
7
  uint bits = readLevelBits(inputTexel, highlightLevel);
8
8
  bool hasHighlight = (bits & 1u) == 1u;
9
9
  bool hasOccluded = (bits & 2u) == 2u;
@@ -2,17 +2,17 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.33/esri/copyright.txt for details.
4
4
  */
5
- import{ShaderOutput as e}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as r}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{ObjectAndLayerIdColor as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{VertexColor as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{terrainDepthTest as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{VisualVariables as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as c,addCameraPosition as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as g}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{VertexAttribute as p}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{Style as m}from"../views/3d/webgl-engine/materials/PatternStyle.js";import{outputColorHighlightOID as f}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as u}from"../views/webgl/ShaderBuilder.js";const w=.70710678118,b=w,h=.08715574274,y=10,S=1;function j(j){const C=new u,{vertex:T,fragment:P,attributes:R,varyings:V}=C,D=j.output===e.Highlight;c(T,j),C.include(r,j),C.include(a,j),C.include(n,j),C.include(t,j),C.fragment.include(o,j),C.include(f,j),C.include(i,j),j.draped?T.uniforms.add(new v("worldToScreenRatio",(e=>1/e.screenToPCSRatio))):R.add(p.BOUNDINGRECT,"mat3"),R.add(p.POSITION,"vec3"),R.add(p.UVMAPSPACE,"vec4"),j.vvColor&&R.add(p.COLORFEATUREATTRIBUTE,"float"),j.hasVertexColors||V.add("vColor","vec4"),V.add("vpos","vec3",{invariant:!0}),V.add("vuv","vec2"),T.uniforms.add(new s("uColor",(e=>e.color)));const O=j.style===m.ForwardDiagonal||j.style===m.BackwardDiagonal||j.style===m.DiagonalCross;return O&&T.code.add(g`
6
- const mat2 rotate45 = mat2(${g.float(w)}, ${g.float(-.70710678118)},
7
- ${g.float(b)}, ${g.float(w)});
8
- `),j.draped||(d(T,j),T.uniforms.add(new v("worldToScreenPerDistanceRatio",(e=>1/e.camera.perScreenPixelRatio))),T.code.add(g`vec3 projectPointToLineSegment(vec3 center, vec3 halfVector, vec3 point) {
5
+ import{ShaderOutput as e}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as r}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{ObjectAndLayerIdColor as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/ObjectAndLayerIdColor.glsl.js";import{VertexColor as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js";import{terrainDepthTest as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{VisualVariables as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as c,addCameraPosition as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatBindUniform as v}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as g,If as p}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{VertexAttribute as m}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{Style as f}from"../views/3d/webgl-engine/materials/PatternStyle.js";import{outputColorHighlightOID as u}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as w}from"../views/webgl/ShaderBuilder.js";const b=.70710678118,h=b,y=.08715574274,S=10,j=1;function x(x){const T=new w,{vertex:P,fragment:R,attributes:V,varyings:D}=T,O=x.output===e.Highlight;c(P,x),T.include(r,x),T.include(a,x),T.include(n,x),T.include(t,x),T.fragment.include(o,x),T.include(u,x),T.include(i,x),x.draped?P.uniforms.add(new v("worldToScreenRatio",(e=>1/e.screenToPCSRatio))):V.add(m.BOUNDINGRECT,"mat3"),V.add(m.POSITION,"vec3"),V.add(m.UVMAPSPACE,"vec4"),x.vvColor&&V.add(m.COLORFEATUREATTRIBUTE,"float"),x.hasVertexColors||D.add("vColor","vec4"),D.add("vpos","vec3",{invariant:!0}),D.add("vuv","vec2"),P.uniforms.add(new s("uColor",(e=>e.color)));const A=x.style===f.ForwardDiagonal||x.style===f.BackwardDiagonal||x.style===f.DiagonalCross;return A&&P.code.add(g`
6
+ const mat2 rotate45 = mat2(${g.float(b)}, ${g.float(-.70710678118)},
7
+ ${g.float(h)}, ${g.float(b)});
8
+ `),x.draped||(d(P,x),P.uniforms.add(new v("worldToScreenPerDistanceRatio",(e=>1/e.camera.perScreenPixelRatio))),P.code.add(g`vec3 projectPointToLineSegment(vec3 center, vec3 halfVector, vec3 point) {
9
9
  float projectedLength = dot(halfVector, point - center) / dot(halfVector, halfVector);
10
10
  return center + halfVector * clamp(projectedLength, -1.0, 1.0);
11
- }`),T.code.add(g`vec3 intersectRayPlane(vec3 rayDir, vec3 rayOrigin, vec3 planeNormal, vec3 planePoint) {
11
+ }`),P.code.add(g`vec3 intersectRayPlane(vec3 rayDir, vec3 rayOrigin, vec3 planeNormal, vec3 planePoint) {
12
12
  float d = dot(planeNormal, planePoint);
13
13
  float t = (d - dot(planeNormal, rayOrigin)) / dot(planeNormal, rayDir);
14
14
  return rayOrigin + t * rayDir;
15
- }`),T.code.add(g`
15
+ }`),P.code.add(g`
16
16
  float boundingRectDistanceToCamera() {
17
17
  vec3 center = vec3(boundingRect[0][0], boundingRect[0][1], boundingRect[0][2]);
18
18
  vec3 halfU = vec3(boundingRect[1][0], boundingRect[1][1], boundingRect[1][2]);
@@ -22,7 +22,7 @@ return rayOrigin + t * rayDir;
22
22
  vec3 viewDir = - vec3(view[0][2], view[1][2], view[2][2]);
23
23
 
24
24
  float viewAngle = dot(viewDir, n);
25
- float minViewAngle = ${g.float(h)};
25
+ float minViewAngle = ${g.float(y)};
26
26
 
27
27
  if (abs(viewAngle) < minViewAngle) {
28
28
  // view direction is (almost) parallel to plane -> clamp it to min angle
@@ -42,15 +42,13 @@ return rayOrigin + t * rayDir;
42
42
 
43
43
  return length(closestPoint - cameraPosition);
44
44
  }
45
- `)),T.code.add(g`
45
+ `)),P.code.add(g`
46
46
  vec2 scaledUV() {
47
- vec2 uv = uvMapSpace.xy ${O?" * rotate45":""};
48
- vec2 uvCellOrigin = uvMapSpace.zw ${O?" * rotate45":""};
47
+ vec2 uv = uvMapSpace.xy ${p(A," * rotate45")};
48
+ vec2 uvCellOrigin = uvMapSpace.zw ${p(A," * rotate45")};
49
49
 
50
- ${j.draped?"":g`
51
- float distanceToCamera = boundingRectDistanceToCamera();
52
- float worldToScreenRatio = worldToScreenPerDistanceRatio / distanceToCamera;
53
- `}
50
+ ${p(!x.draped,g`float distanceToCamera = boundingRectDistanceToCamera();
51
+ float worldToScreenRatio = worldToScreenPerDistanceRatio / distanceToCamera;`)}
54
52
 
55
53
  // Logarithmically discretize ratio to avoid jittering
56
54
  float step = 0.1;
@@ -58,21 +56,21 @@ return rayOrigin + t * rayDir;
58
56
  discreteWorldToScreenRatio = ceil(discreteWorldToScreenRatio / step) * step;
59
57
  discreteWorldToScreenRatio = exp(discreteWorldToScreenRatio);
60
58
 
61
- vec2 uvOffset = mod(uvCellOrigin * discreteWorldToScreenRatio, ${g.float(y)});
59
+ vec2 uvOffset = mod(uvCellOrigin * discreteWorldToScreenRatio, ${g.float(S)});
62
60
  return uvOffset + (uv * discreteWorldToScreenRatio);
63
61
  }
64
- `),T.main.add(g`
62
+ `),P.main.add(g`
65
63
  vuv = scaledUV();
66
64
  vpos = position;
67
65
  forwardViewPosDepth((view * vec4(vpos, 1.0)).xyz);
68
66
  forwardNormalizedVertexColor();
69
67
  forwardObjectAndLayerIdColor();
70
- ${j.hasVertexColors?"vColor *= uColor;":j.vvColor?"vColor = uColor * interpolateVVColor(colorFeatureAttribute);":"vColor = uColor;"}
68
+ ${x.hasVertexColors?"vColor *= uColor;":x.vvColor?"vColor = uColor * interpolateVVColor(colorFeatureAttribute);":"vColor = uColor;"}
71
69
  gl_Position = transformPosition(proj, view, vpos);
72
- `),P.include(l),j.draped&&P.uniforms.add(new v("texelSize",(e=>1/e.camera.pixelRatio))),D||(P.code.add(g`
73
- const float lineWidth = ${g.float(S)};
74
- const float spacing = ${g.float(y)};
75
- const float spacingINV = ${g.float(1/y)};
70
+ `),R.include(l),x.draped&&R.uniforms.add(new v("texelSize",(e=>1/e.camera.pixelRatio))),O||(R.code.add(g`
71
+ const float lineWidth = ${g.float(j)};
72
+ const float spacing = ${g.float(S)};
73
+ const float spacingINV = ${g.float(1/S)};
76
74
 
77
75
  float coverage(float p, float txlSize) {
78
76
  p = mod(p, spacing);
@@ -88,7 +86,7 @@ return rayOrigin + t * rayDir;
88
86
 
89
87
  return coverage / txlSize;
90
88
  }
91
- `),j.draped||P.code.add(g`const int maxSamples = 5;
89
+ `),x.draped||R.code.add(g`const int maxSamples = 5;
92
90
  float sampleAA(float p) {
93
91
  vec2 dxdy = abs(vec2(dFdx(p), dFdy(p)));
94
92
  float fwidth = dxdy.x + dxdy.y;
@@ -109,10 +107,10 @@ accumulator += coverage(p + step.x * dxdy.x + step.y * dxdy.y, fwidth);
109
107
  }
110
108
  accumulator /= float(samples.x * samples.y);
111
109
  return accumulator;
112
- }`)),P.main.add(g`
110
+ }`)),R.main.add(g`
113
111
  discardBySlice(vpos);
114
112
  discardByTerrainDepth();
115
113
  vec4 color = vColor;
116
- ${D?"":g`color.a *= ${x(j)};`}
114
+ ${p(!O,g`color.a *= ${C(x)};`)}
117
115
  outputColorHighlightOID(color, vpos);
118
- `),C}function x(e){function o(o){return e.draped?g`coverage(vuv.${o}, texelSize)`:g`sampleAA(vuv.${o})`}switch(e.style){case m.ForwardDiagonal:case m.Horizontal:return o("y");case m.BackwardDiagonal:case m.Vertical:return o("x");case m.DiagonalCross:case m.Cross:return g`1.0 - (1.0 - ${o("x")}) * (1.0 - ${o("y")})`;default:return"0.0"}}const C=Object.freeze(Object.defineProperty({__proto__:null,build:j},Symbol.toStringTag,{value:"Module"}));export{C as P,j as b};
116
+ `),T}function C(e){function o(o){return e.draped?g`coverage(vuv.${o}, texelSize)`:g`sampleAA(vuv.${o})`}switch(e.style){case f.ForwardDiagonal:case f.Horizontal:return o("y");case f.BackwardDiagonal:case f.Vertical:return o("x");case f.DiagonalCross:case f.Cross:return g`1.0 - (1.0 - ${o("x")}) * (1.0 - ${o("y")})`;default:return"0.0"}}const T=Object.freeze(Object.defineProperty({__proto__:null,build:x},Symbol.toStringTag,{value:"Module"}));export{T as P,x as b};