@arcgis/core 5.2.0-next.111 → 5.2.0-next.112

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 (258) hide show
  1. package/assets/components/assets/icon/alignBottom16.json +1 -0
  2. package/assets/components/assets/icon/alignBottom24.json +1 -0
  3. package/assets/components/assets/icon/alignBottom32.json +1 -0
  4. package/assets/components/assets/icon/alignCenterHorizontal16.json +1 -0
  5. package/assets/components/assets/icon/alignCenterHorizontal24.json +1 -0
  6. package/assets/components/assets/icon/alignCenterHorizontal32.json +1 -0
  7. package/assets/components/assets/icon/alignCenterVertical16.json +1 -0
  8. package/assets/components/assets/icon/alignCenterVertical24.json +1 -0
  9. package/assets/components/assets/icon/alignCenterVertical32.json +1 -0
  10. package/assets/components/assets/icon/alignLeft16.json +1 -0
  11. package/assets/components/assets/icon/alignLeft24.json +1 -0
  12. package/assets/components/assets/icon/alignLeft32.json +1 -0
  13. package/assets/components/assets/icon/alignRight16.json +1 -0
  14. package/assets/components/assets/icon/alignRight24.json +1 -0
  15. package/assets/components/assets/icon/alignRight32.json +1 -0
  16. package/assets/components/assets/icon/alignTop16.json +1 -0
  17. package/assets/components/assets/icon/alignTop24.json +1 -0
  18. package/assets/components/assets/icon/alignTop32.json +1 -0
  19. package/assets/components/assets/icon/columnGroup16.json +1 -0
  20. package/assets/components/assets/icon/columnGroup24.json +1 -0
  21. package/assets/components/assets/icon/columnGroup32.json +1 -0
  22. package/assets/components/assets/icon/columnRemove16.json +1 -0
  23. package/assets/components/assets/icon/columnRemove24.json +1 -0
  24. package/assets/components/assets/icon/columnRemove32.json +1 -0
  25. package/assets/components/assets/icon/columnUngroup16.json +1 -0
  26. package/assets/components/assets/icon/columnUngroup24.json +1 -0
  27. package/assets/components/assets/icon/columnUngroup32.json +1 -0
  28. package/assets/components/assets/icon/envelopeOpen16.json +1 -0
  29. package/assets/components/assets/icon/envelopeOpen24.json +1 -0
  30. package/assets/components/assets/icon/envelopeOpen32.json +1 -0
  31. package/assets/components/assets/icon/handDraw16.json +1 -0
  32. package/assets/components/assets/icon/handDraw24.json +1 -0
  33. package/assets/components/assets/icon/handDraw32.json +1 -0
  34. package/assets/components/assets/icon/monitorShare16.json +1 -0
  35. package/assets/components/assets/icon/monitorShare24.json +1 -0
  36. package/assets/components/assets/icon/monitorShare32.json +1 -0
  37. package/assets/components/assets/icon/pi16.json +1 -0
  38. package/assets/components/assets/icon/pi24.json +1 -0
  39. package/assets/components/assets/icon/pi32.json +1 -0
  40. package/assets/components/assets/icon/rowGroup16.json +1 -0
  41. package/assets/components/assets/icon/rowGroup24.json +1 -0
  42. package/assets/components/assets/icon/rowGroup32.json +1 -0
  43. package/assets/components/assets/icon/rowRemove16.json +1 -0
  44. package/assets/components/assets/icon/rowRemove24.json +1 -0
  45. package/assets/components/assets/icon/rowRemove32.json +1 -0
  46. package/assets/components/assets/icon/rowUngroup16.json +1 -0
  47. package/assets/components/assets/icon/rowUngroup24.json +1 -0
  48. package/assets/components/assets/icon/rowUngroup32.json +1 -0
  49. package/assets/components/assets/icon/sdCard16.json +1 -0
  50. package/assets/components/assets/icon/sdCard24.json +1 -0
  51. package/assets/components/assets/icon/sdCard32.json +1 -0
  52. package/assets/components/assets/icon/spaceAroundHorizontal16.json +1 -0
  53. package/assets/components/assets/icon/spaceAroundHorizontal24.json +1 -0
  54. package/assets/components/assets/icon/spaceAroundHorizontal32.json +1 -0
  55. package/assets/components/assets/icon/spaceAroundVertical16.json +1 -0
  56. package/assets/components/assets/icon/spaceAroundVertical24.json +1 -0
  57. package/assets/components/assets/icon/spaceAroundVertical32.json +1 -0
  58. package/assets/components/assets/icon/spaceBetweenHorizontal16.json +1 -0
  59. package/assets/components/assets/icon/spaceBetweenHorizontal24.json +1 -0
  60. package/assets/components/assets/icon/spaceBetweenHorizontal32.json +1 -0
  61. package/assets/components/assets/icon/spaceBetweenVertical16.json +1 -0
  62. package/assets/components/assets/icon/spaceBetweenVertical24.json +1 -0
  63. package/assets/components/assets/icon/spaceBetweenVertical32.json +1 -0
  64. package/assets/components/assets/icon/spacedEvenlyHorizontal16.json +1 -0
  65. package/assets/components/assets/icon/spacedEvenlyHorizontal24.json +1 -0
  66. package/assets/components/assets/icon/spacedEvenlyHorizontal32.json +1 -0
  67. package/assets/components/assets/icon/spacedEvenlyVertical16.json +1 -0
  68. package/assets/components/assets/icon/spacedEvenlyVertical24.json +1 -0
  69. package/assets/components/assets/icon/spacedEvenlyVertical32.json +1 -0
  70. package/assets/components/assets/icon/stretchHorizontal16.json +1 -0
  71. package/assets/components/assets/icon/stretchHorizontal24.json +1 -0
  72. package/assets/components/assets/icon/stretchHorizontal32.json +1 -0
  73. package/assets/components/assets/icon/stretchVertical16.json +1 -0
  74. package/assets/components/assets/icon/stretchVertical24.json +1 -0
  75. package/assets/components/assets/icon/stretchVertical32.json +1 -0
  76. package/assets/components/assets/icon/swatchPalette16.json +1 -0
  77. package/assets/components/assets/icon/swatchPalette24.json +1 -0
  78. package/assets/components/assets/icon/swatchPalette32.json +1 -0
  79. package/assets/components/assets/icon/thermometer16.json +1 -0
  80. package/assets/components/assets/icon/thermometer24.json +1 -0
  81. package/assets/components/assets/icon/thermometer32.json +1 -0
  82. package/assets/components/assets/icon/webCamera16.json +1 -0
  83. package/assets/components/assets/icon/webCamera24.json +1 -0
  84. package/assets/components/assets/icon/webCamera32.json +1 -0
  85. package/assets/esri/core/workers/RemoteClient.js +1 -1
  86. package/assets/esri/core/workers/chunks/078ed48eb055dd213ee6.js +1 -0
  87. package/assets/esri/core/workers/chunks/186350d720352bd5ff33.js +1 -0
  88. package/assets/esri/core/workers/chunks/21c0743b2f612e7e7de3.js +1 -0
  89. package/assets/esri/core/workers/chunks/25cc6d7178a52f2f46b7.js +1 -0
  90. package/assets/esri/core/workers/chunks/{6010799e05d239073de0.js → 25ecf94d776c3b6db0f3.js} +1 -1
  91. package/assets/esri/core/workers/chunks/{10d33b4f248864225f85.js → 2728eda8178e02fbca47.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{4c9df8ae9238454969b8.js → 2c21f4744e19b925a6ae.js} +1 -1
  93. package/assets/esri/core/workers/chunks/32fc7d1db4b311f6b880.js +1 -0
  94. package/assets/esri/core/workers/chunks/3acc1299c1382c3b034d.js +1 -0
  95. package/assets/esri/core/workers/chunks/{c2684fcde2923c9830e0.js → 42c4d0c1c08bf111e5a4.js} +1 -1
  96. package/assets/esri/core/workers/chunks/430802108b63194b7ddd.js +2 -0
  97. package/assets/esri/core/workers/chunks/{f5e8ccbd6b4c0a386903.js → 448f068a14f24f2f8a43.js} +1 -1
  98. package/assets/esri/core/workers/chunks/49c6dc487714f9cd55c7.js +1 -0
  99. package/assets/esri/core/workers/chunks/{70e0ead69a722fd964b8.js → 49e8ff5ed079a9e3be4b.js} +1 -1
  100. package/assets/esri/core/workers/chunks/{69921d068add041b5dcb.js → 5134241be1f1bf25231a.js} +1 -1
  101. package/assets/esri/core/workers/chunks/{54bb3678570ca032f051.js → 5762746cfb02a4119d82.js} +1 -1
  102. package/assets/esri/core/workers/chunks/{434c5b54e89ace974cbd.js → 5965a947f68b707eaa6b.js} +2 -2
  103. package/assets/esri/core/workers/chunks/6c25c929bcde7e3a2af1.js +1 -0
  104. package/assets/esri/core/workers/chunks/7610dd0b46948b7bd840.js +1 -0
  105. package/assets/esri/core/workers/chunks/7be56ac60e580c806a5d.js +1 -0
  106. package/assets/esri/core/workers/chunks/7f2ac03efaa4a4898ba2.js +2 -0
  107. package/assets/esri/core/workers/chunks/{847781aefed049493444.js → 9f760dc4492a03e0504c.js} +1 -1
  108. package/assets/esri/core/workers/chunks/{013c9cc198736a72f7f2.js → 9fb46ccd4be4c3b61c31.js} +1 -1
  109. package/assets/esri/core/workers/chunks/bdcca906fdfb8e179abb.js +2 -0
  110. package/assets/esri/core/workers/chunks/c5ceceb0683671f92efa.js +1 -0
  111. package/assets/esri/core/workers/chunks/c5e288d57bacb8451e2d.js +2 -0
  112. package/assets/esri/core/workers/chunks/{b92b7d6c1e693c97a3eb.js → d1f54b0079fb71a15612.js} +1 -1
  113. package/assets/esri/core/workers/chunks/{72be81c1394285b51ed3.js → d45483dd0dc2853b18b7.js} +212 -216
  114. package/assets/esri/core/workers/chunks/d5e3f8e5b8d2576d3cb3.js +2 -0
  115. package/assets/esri/core/workers/chunks/{21d4219844ae5654618b.js → d926bffc3ff9f87e9081.js} +1 -1
  116. package/assets/esri/core/workers/chunks/{abcda435bc83ef4240f9.js → e6dae16208f6978b59e0.js} +1 -1
  117. package/assets/esri/core/workers/chunks/e755075ac2e02e881fad.js +1 -0
  118. package/assets/esri/core/workers/chunks/{058d4c927486a361e633.js → ea9e770efc85594e4dd2.js} +1 -1
  119. package/assets/esri/core/workers/chunks/eff99e45d818e58fd443.js +1 -0
  120. package/assets/esri/core/workers/chunks/{a49147203e55609630cc.js → f453dc4a075d2f900c7d.js} +1 -1
  121. package/assets/esri/core/workers/chunks/f465fb26541372fdc908.js +2 -0
  122. package/assets/esri/core/workers/chunks/{b7809ef3e1dabd921339.js → f72f4413fc7461e11a2a.js} +1 -1
  123. package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +1 -0
  124. package/assets/esri/themes/base/widgets/_Bookmarks.scss +1 -0
  125. package/assets/esri/themes/dark/main.css +1 -1
  126. package/assets/esri/themes/light/main.css +1 -1
  127. package/assets/esri/themes/light/view.css +1 -1
  128. package/chunks/ChapmanAtmosphere.glsl.js +1 -1
  129. package/chunks/Component.glsl.js +57 -56
  130. package/chunks/DefaultMaterial.glsl.js +19 -23
  131. package/chunks/GaussianSplat.glsl.js +13 -11
  132. package/chunks/GlobalIllumination.glsl.js +1 -1
  133. package/chunks/Haze.glsl.js +1 -1
  134. package/chunks/Path.glsl.js +21 -24
  135. package/chunks/RealisticTree.glsl.js +42 -41
  136. package/chunks/RibbonLine.glsl.js +65 -56
  137. package/chunks/SimpleAtmosphere.glsl.js +1 -1
  138. package/chunks/Terrain.glsl.js +25 -25
  139. package/chunks/Water.glsl.js +4 -4
  140. package/config.js +1 -1
  141. package/core/units.js +1 -1
  142. package/geometry/support/heightModelInfoUtils.js +1 -1
  143. package/kernel.js +1 -1
  144. package/layers/GaussianSplatLayer.js +1 -1
  145. package/layers/ImageryTileLayer.js +1 -1
  146. package/layers/IntegratedMesh3DTilesLayer.js +1 -1
  147. package/layers/mixins/TiledImagery.d.ts +6 -0
  148. package/layers/mixins/TiledImagery.js +1 -1
  149. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  150. package/layers/raster/datasets/RasterFactory.js +1 -1
  151. package/layers/support/domainUtils.d.ts +2 -0
  152. package/layers/support/domainUtils.js +1 -1
  153. package/layers/support/fieldUtils.d.ts +10 -0
  154. package/layers/support/fieldUtils.js +1 -1
  155. package/package.json +6 -6
  156. package/support/revision.js +1 -1
  157. package/symbols/LineStyleMarker3D.d.ts +3 -4
  158. package/symbols/LineSymbol3D.d.ts +19 -2
  159. package/symbols/LineSymbol3D.js +1 -1
  160. package/symbols/LineSymbol3DLayer.d.ts +13 -6
  161. package/symbols/Symbol3DLayer.d.ts +1 -1
  162. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
  163. package/views/2d/engine/webgl/shaderGraph/techniques/animated/clipping.js +2 -0
  164. package/views/2d/input/MapViewInputManager.js +1 -1
  165. package/views/2d/input/handlers/KeyPan.js +1 -1
  166. package/views/2d/layers/support/annodime/DimensionInfo.js +1 -1
  167. package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
  168. package/views/3d/input/SceneInputManager.js +1 -1
  169. package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
  170. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  171. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  172. package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
  173. package/views/3d/support/MemoryController.js +1 -1
  174. package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
  175. package/views/3d/webgl-engine/collections/Component/ComponentDrawParameters.js +1 -1
  176. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  177. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  178. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +3 -3
  179. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +3 -3
  180. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +4 -4
  181. package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +2 -2
  182. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +57 -58
  183. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -3
  184. package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +2 -2
  185. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +7 -6
  186. package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -3
  187. package/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js +5 -10
  188. package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js +10 -48
  189. package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +16 -22
  190. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +6 -6
  191. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +5 -3
  192. package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrGlobals.glsl.js +19 -0
  193. package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrShadingInfo.glsl.js +24 -0
  194. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +3 -3
  195. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +2 -2
  196. package/views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js +4 -4
  197. package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
  198. package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
  199. package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
  200. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  201. package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
  202. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  203. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  204. package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
  205. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  206. package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
  207. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  208. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  209. package/views/3d/webgl-engine/materials/VisualVariablePassParameters.js +1 -1
  210. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  211. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  212. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +19 -22
  213. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  214. package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
  215. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  216. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  217. package/views/3d/webgl-engine/shaders/SlicePlaneMaterialTechniqueConfiguration.js +1 -1
  218. package/views/MapView.d.ts +1 -0
  219. package/views/SceneView.d.ts +1 -0
  220. package/views/View.js +1 -1
  221. package/views/support/DefaultsFromMap.js +1 -1
  222. package/widgets/BasemapLayerList.js +1 -1
  223. package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
  224. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  225. package/widgets/BatchAttributeForm/inputs/support/MultipleChoiceController.js +1 -1
  226. package/widgets/BatchAttributeForm.js +1 -1
  227. package/widgets/Bookmarks.js +1 -1
  228. package/widgets/FeatureForm/featureFormUtils.js +1 -1
  229. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  230. package/widgets/Search/LocatorSearchSource.d.ts +4 -3
  231. package/widgets/support/forms/formUtils.d.ts +5 -0
  232. package/widgets/support/forms/formUtils.js +1 -1
  233. package/widgets/support/forms/types.d.ts +7 -1
  234. package/assets/esri/core/workers/chunks/075eb62465edb9cbf907.js +0 -1
  235. package/assets/esri/core/workers/chunks/0ff13f7a18b0123d253e.js +0 -1
  236. package/assets/esri/core/workers/chunks/1082bb0858585bd4fa21.js +0 -2
  237. package/assets/esri/core/workers/chunks/19ac6f4664f97fb3821c.js +0 -1
  238. package/assets/esri/core/workers/chunks/1ec01fd6330d011c76d6.js +0 -1
  239. package/assets/esri/core/workers/chunks/2e2349387a2b9903f13c.js +0 -2
  240. package/assets/esri/core/workers/chunks/349e9f3d3e3267d02988.js +0 -1
  241. package/assets/esri/core/workers/chunks/3ffc852db1a820ed143b.js +0 -1
  242. package/assets/esri/core/workers/chunks/411bbdecba340df11d95.js +0 -2
  243. package/assets/esri/core/workers/chunks/4490dd8bae0dd2769d99.js +0 -1
  244. package/assets/esri/core/workers/chunks/476535cfb06ced74d611.js +0 -2
  245. package/assets/esri/core/workers/chunks/5e56a004b4407b8066eb.js +0 -1
  246. package/assets/esri/core/workers/chunks/6df29716f75696434807.js +0 -1
  247. package/assets/esri/core/workers/chunks/a322afbb48898ce35851.js +0 -1
  248. package/assets/esri/core/workers/chunks/b82b523b6837ed1f28d3.js +0 -2
  249. package/assets/esri/core/workers/chunks/c7b762bae945f383c723.js +0 -1
  250. package/assets/esri/core/workers/chunks/ef24fd6c0322e5de9fdf.js +0 -2
  251. package/assets/esri/core/workers/chunks/f9e5740b05de24ba81be.js +0 -1
  252. package/assets/esri/core/workers/chunks/fc622f9e33e3b48113c8.js +0 -1
  253. /package/assets/esri/core/workers/chunks/{476535cfb06ced74d611.js.LICENSE.txt → 430802108b63194b7ddd.js.LICENSE.txt} +0 -0
  254. /package/assets/esri/core/workers/chunks/{b82b523b6837ed1f28d3.js.LICENSE.txt → 7f2ac03efaa4a4898ba2.js.LICENSE.txt} +0 -0
  255. /package/assets/esri/core/workers/chunks/{ef24fd6c0322e5de9fdf.js.LICENSE.txt → bdcca906fdfb8e179abb.js.LICENSE.txt} +0 -0
  256. /package/assets/esri/core/workers/chunks/{1082bb0858585bd4fa21.js.LICENSE.txt → c5e288d57bacb8451e2d.js.LICENSE.txt} +0 -0
  257. /package/assets/esri/core/workers/chunks/{2e2349387a2b9903f13c.js.LICENSE.txt → d5e3f8e5b8d2576d3cb3.js.LICENSE.txt} +0 -0
  258. /package/assets/esri/core/workers/chunks/{411bbdecba340df11d95.js.LICENSE.txt → f465fb26541372fdc908.js.LICENSE.txt} +0 -0
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as o}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VerticalOffset as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as n}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{DefaultMaterialExternalColor as d}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js";import{EvaluateAmbientOcclusion as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as g,addAmbientBoostFactor as m,addLightingGlobalFactor as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightDirection as b,addMainLightIntensity as u}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{PhysicallyBasedRendering as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPassFragment as h,ReadShadowMapDrawFragment as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{colorTextureUV as L,emissiveTextureUV as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as j}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as C,addCameraPosition as O}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as P}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{If as S,glsl as N}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{SnowCover as D}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as M}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as T}from"../views/webgl/ShaderBuilder.js";function V(V){const F=new T,{attributes:R,vertex:$,fragment:B,varyings:I}=F,{output:E,offsetBackfaces:_,pbrMode:U,snowCover:k,spherical:z}=V,W=1===U||2===U;if(C($,V),R.add("position","vec3"),$.inputs.add("position",()=>"position"),I.add("vpos","vec3",{invariant:!0}),F.include(x,V),F.include(a,V),F.include(s,V),F.include(L,V),!i(E))return F.include(n,V),F;F.include(y,V),O(F.vertex,V),F.include(l,V),F.include(o),_&&F.include(e),I.add("vNormalWorld","vec3"),I.add("localvpos","vec3",{invariant:!0}),F.include(t,V),F.include(d,V),F.include(V.instancedDoublePrecision?h:p,V),$.main.add(N`
2
+ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js";import{isColor as i}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as r}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as o}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{InstancedDoublePrecision as a}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js";import{NormalAttribute as l}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as s}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VerticalOffset as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js";import{DefaultMaterialAuxiliaryPasses as n}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js";import{DefaultMaterialExternalColor as d}from"../views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialExternalColor.glsl.js";import{EvaluateAmbientOcclusion as c}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as g,addAmbientBoostFactor as m,addLightingGlobalFactor as v}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightDirection as u,mainLightIntensity as w}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as b}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PhysicallyBasedRendering as f}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js";import{PhysicallyBasedRenderingParameters as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js";import{ReadShadowMapPassFragment as h,ReadShadowMapDrawFragment as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{colorTextureUV as L,emissiveTextureUV as j}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TextureTransformUV.glsl.js";import{VisualVariables as x}from"../views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as C}from"../views/3d/webgl-engine/core/shaderLibrary/util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as O,addCameraPosition as P}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{If as N,glsl as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as M}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{SnowCover as A}from"../views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js";import{outputColorHighlightOLID as T}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as V}from"../views/webgl/ShaderBuilder.js";function F(F){const R=new V,{attributes:B,vertex:$,fragment:U,varyings:E}=R,{output:I,offsetBackfaces:_,pbrMode:k,snowCover:z}=F,W=1===k||2===k;if(O($,F),B.add("position","vec3"),$.inputs.add("position",()=>"position"),E.add("vpos","vec3",{invariant:!0}),R.include(x,F),R.include(a,F),R.include(t,F),R.include(L,F),!i(I))return R.include(n,F),R;R.include(j,F),P(R.vertex,F),R.include(l,F),R.include(o),_&&R.include(e),E.add("vNormalWorld","vec3"),E.add("localvpos","vec3",{invariant:!0}),R.include(s,F),R.include(d,F),R.include(F.instancedDoublePrecision?h:y,F),$.main.add(D`
3
3
  forwardDefaultMaterialExternalColor();
4
4
 
5
5
  vpos = getVertexInLocalOriginSpace();
@@ -16,43 +16,44 @@ import{Offset as e}from"../views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.
16
16
  forwardLinearDepthToReadShadowMap();
17
17
 
18
18
  gl_Position = shouldCullByOpacity() ? vec4(1e38, 1e38, 1e38, 1.0) :
19
- ${S(_,"offsetBackfacingClipPosition(basePosition, vpos, vNormalWorld, cameraPosition);","basePosition;")}
20
- `);const{hasColorTexture:H,hasColorTextureTransform:G}=V;return B.include(g,V),B.include(c,V),F.include(j,V),B.include(r,V),F.include(M,V),O(B,V),b(B),m(B),v(B),B.uniforms.add($.uniforms.get("localOrigin"),$.uniforms.get("view"),new P("ambient",e=>e.ambient),new P("diffuse",e=>e.diffuse)),H&&B.uniforms.add(new A("tex",e=>e.texture)),F.include(f,V),B.include(w,V),B.include(D,V),u(B),B.main.add(N`
21
- discardBySlice(vpos);
22
- vec4 texColor = ${H?`texture(tex, ${G?"colorUV":"vuv0"})`:" vec4(1.0)"};
23
- ${S(H,`${S(V.textureAlphaPremultiplied,"texColor.rgb /= texColor.a;")}\n discardOrAdjustAlpha(texColor);`)}
24
- vec3 viewDirection = normalize(vpos - cameraPosition);
25
- applyPBRFactors();
26
- float ssao = evaluateAmbientOcclusionInverse();
27
- ssao *= getBakedOcclusion();
28
-
29
- float additionalAmbientScale = additionalDirectedAmbientLight(vpos + localOrigin);
30
- vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
31
- float shadow = readShadow(additionalAmbientScale, vpos);
32
- vec3 matColor = max(ambient, diffuse);
33
- vec3 albedo = mixExternalColor(
34
- ${S(V.hasVertexColors,"vColor.rgb * ")} matColor,
35
- texColor.rgb,
36
- vExternalColor.rgb,
37
- colorMixMode
38
- );
39
- float opacity_ = getDefaultMaterialOpacity(texColor.a);
40
-
41
- vec3 shadingNormal = normalize(vNormalWorld);
42
- vec3 groundNormal = ${z?"normalize(vpos + localOrigin)":"vec3(0.0, 0.0, 1.0)"};
43
-
44
- ${S(k,"vec3 faceNormal = screenDerivativeNormal(vpos);\n float snow = getRealisticTreeSnow(faceNormal, shadingNormal, groundNormal);\n albedo = mix(albedo, vec3(1), snow);")}
45
-
46
- ${N`albedo *= 1.2;
47
- vec3 viewForward = vec3(view[0][2], view[1][2], view[2][2]);
48
- float alignmentLightView = clamp(dot(viewForward, -mainLightDirection), 0.0, 1.0);
49
- float transmittance = 1.0 - clamp(dot(viewForward, shadingNormal), 0.0, 1.0);
50
- float treeRadialFalloff = vColor.r;
51
- float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);
52
- additionalLight += backLightFactor * mainLightIntensity;`}
53
-
54
- ${W?N`float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
55
- ${S(k,"mrr = applySnowToMRR(mrr, snow);")}
56
- vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, groundNormal, mrr, additionalAmbientIrradiance);`:N`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
57
- vec4 finalColor = vec4(shadedColor, opacity_);
58
- outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${S(k,", 1.0")});`),F}const F=Object.freeze(Object.defineProperty({__proto__:null,build:V},Symbol.toStringTag,{value:"Module"}));export{F as R,V as b};
19
+ ${N(_,"offsetBackfacingClipPosition(basePosition, vpos, vNormalWorld, cameraPosition);","basePosition;")}
20
+ `);const{hasColorTexture:H,hasColorTextureTransform:G}=F;return U.include(g,F),U.include(c,F),R.include(C,F),U.include(r,F),R.include(T,F),P(U,F),m(U),v(U),U.uniforms.add(u,$.uniforms.get("localOrigin"),$.uniforms.get("view"),new S("ambient",e=>e.ambient),new S("diffuse",e=>e.diffuse)),H&&U.uniforms.add(new M("tex",e=>e.texture)),R.include(p,F),U.include(f,F),U.include(A,F),U.include(b,F),U.uniforms.add(w).main.add(D`
21
+ discardBySlice(vpos);
22
+ vec4 texColor = ${H?`texture(tex, ${G?"colorUV":"vuv0"})`:" vec4(1.0)"};
23
+ ${N(H,`${N(F.textureAlphaPremultiplied,"texColor.rgb /= texColor.a;")}\n discardOrAdjustAlpha(texColor);`)}
24
+ applyPBRFactors();
25
+ float ssao = evaluateAmbientOcclusionInverse();
26
+ ssao *= getBakedOcclusion();
27
+
28
+ float additionalAmbientScale = additionalDirectedAmbientLight(vpos + localOrigin);
29
+ vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
30
+ float shadow = readShadow(additionalAmbientScale, vpos);
31
+ vec3 matColor = max(ambient, diffuse);
32
+ vec3 albedo = mixExternalColor(
33
+ ${N(F.hasVertexColors,"vColor.rgb * ")} matColor,
34
+ texColor.rgb,
35
+ vExternalColor.rgb,
36
+ colorMixMode
37
+ );
38
+ float opacity_ = getDefaultMaterialOpacity(texColor.a);
39
+
40
+ vec3 shadingNormal = normalize(vNormalWorld);
41
+ vec3 viewDirection = normalize(vpos - cameraPosition);
42
+ vec3 upNormal = getLocalUp(vpos, localOrigin);
43
+
44
+ ${N(z,"vec3 faceNormal = screenDerivativeNormal(vpos);\n float snow = getRealisticTreeSnow(faceNormal, shadingNormal, upNormal);\n albedo = mix(albedo, vec3(1), snow);")}
45
+
46
+ ${D`albedo *= 1.2;
47
+ vec3 viewForward = vec3(view[0][2], view[1][2], view[2][2]);
48
+ float alignmentLightView = clamp(dot(viewForward, -mainLightDirection), 0.0, 1.0);
49
+ float transmittance = 1.0 - clamp(dot(viewForward, shadingNormal), 0.0, 1.0);
50
+ float treeRadialFalloff = vColor.r;
51
+ float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);
52
+ additionalLight += backLightFactor * mainLightIntensity;`}
53
+
54
+ ${N(W&&z,"applySnowToMRR(snow);")}
55
+
56
+ vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, upNormal);
57
+ vec4 finalColor = vec4(shadedColor, opacity_);
58
+ outputColorHighlightOLID(applySlice(finalColor, vpos), albedo ${N(z,", 1.0")});
59
+ `),R}const R=Object.freeze(Object.defineProperty({__proto__:null,build:F},Symbol.toStringTag,{value:"Module"}));export{R,F as b};
@@ -1,15 +1,15 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateSceneLighting as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as m,addPixelRatio as v}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as g}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as h}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 u}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as x,If as D}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as L}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as b}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as w}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as y}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as C}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as P}from"../views/webgl/ShaderBuilder.js";const F=1;function j(F){const j=new P,{attributes:z,varyings:A,vertex:W,fragment:T}=j,{applyMarkerOffset:I,draped:R,shadingEnabled:V,output:N,capType:E,stippleEnabled:O,falloffEnabled:J,wireframe:_,innerColorEnabled:$,hasAnimation:M,hasScreenSizePerspective:U,worldSizedImagePattern:H}=F,B=2===E,k=O&&B,G=J||k,X=O||B,Y=C(F).createBuilder(j,F);W.inputs.add("position",()=>Y.getTextureAttribute("position")),F.hasVVSize?W.inputs.add("sizeFeatureAttribute",()=>Y.getTextureAttribute("sizeFeatureAttribute")):W.inputs.add("size",()=>Y.getTextureAttribute("size")),F.hasVVOpacity&&W.inputs.add("opacityFeatureAttribute",()=>Y.getTextureAttribute("opacityFeatureAttribute")),F.hasVVColor?W.inputs.add("colorFeatureAttribute",()=>Y.getTextureAttribute("colorFeatureAttribute")):W.inputs.add("color",()=>Y.getTextureAttribute("color")),T.include(s),j.include(t,F),j.include(n,F);const Z={animation:F.animation,hasAnimation:F.hasAnimation,timeStampsExpr:Y.getTextureAttribute("timeStamps")};j.include(w,Z),11===N?(j.varyings.add("objectAndLayerIdColorVarying","vec4"),W.code.add(x`
2
+ import{SliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateSceneLighting as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{LineStipple as n,computePixelSize as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{NormalUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{PiUtils as s}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as l}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as c,NoPerspectiveRead as p}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{addProjViewLocalOrigin as m,addPixelRatio as v,addCameraPosition as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2BindUniform as f}from"../views/3d/webgl-engine/core/shaderModules/Float2BindUniform.js";import{Float4BindUniform as h}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{Float4PassUniform as u}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 x}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as D,If as b}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as L}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{alphaCutoff as w}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{AnimatedLine as y}from"../views/3d/webgl-engine/shaders/AnimatedLine.glsl.js";import{outputColorHighlightOLID as C}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as P}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as F}from"../views/webgl/ShaderBuilder.js";const j=1;function z(j){const z=new F,{attributes:A,varyings:W,vertex:T,fragment:R}=z,{applyMarkerOffset:I,draped:V,shadingEnabled:E,output:N,capType:O,stippleEnabled:$,falloffEnabled:J,wireframe:U,innerColorEnabled:_,hasAnimation:M,hasScreenSizePerspective:H,worldSized:B,imagePattern:k}=j,G=2===O,X=$&&G,Y=J||X,Z=$||G,q=P(j).createBuilder(z,j);T.inputs.add("position",()=>q.getTextureAttribute("position")),j.hasVVSize?T.inputs.add("sizeFeatureAttribute",()=>q.getTextureAttribute("sizeFeatureAttribute")):T.inputs.add("size",()=>q.getTextureAttribute("size")),j.hasVVOpacity&&T.inputs.add("opacityFeatureAttribute",()=>q.getTextureAttribute("opacityFeatureAttribute")),j.hasVVColor?T.inputs.add("colorFeatureAttribute",()=>q.getTextureAttribute("colorFeatureAttribute")):T.inputs.add("color",()=>q.getTextureAttribute("color")),R.include(s),z.include(t,j),z.include(n,j);const K={animation:j.animation,hasAnimation:j.hasAnimation,timeStampsExpr:q.getTextureAttribute("timeStamps")};z.include(y,K),11===N?(z.varyings.add("objectAndLayerIdColorVarying","vec4"),T.code.add(D`
3
3
  vec4 getOlidColor() {
4
- return ${Y.getTextureAttribute("olidColor")};
4
+ return ${q.getTextureAttribute("olidColor")};
5
5
  }
6
6
 
7
7
  void forwardObjectAndLayerIdColor() {
8
8
  objectAndLayerIdColorVarying = getOlidColor();
9
9
  }
10
- `),T.code.add(x`void outputObjectAndLayerIdColor() {
10
+ `),R.code.add(D`void outputObjectAndLayerIdColor() {
11
11
  fragColor = objectAndLayerIdColorVarying;
12
- }`)):(W.code.add(x`void forwardObjectAndLayerIdColor() {}`),T.code.add(x`void outputObjectAndLayerIdColor() {}`));const q=I&&!R;return q&&(W.uniforms.add(new u("markerScale",e=>e.markerScale)),j.include(o,{space:2,hasScreenSizePerspective:U})),m(W,F),W.uniforms.add(new L("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new g("nearFar",e=>e.camera.nearFar),new u("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new f("viewport",e=>e.camera.fullViewport)),W.constants.add("LARGE_HALF_FLOAT","float",65500),W.constants.add("EPS","float",.001),W.constants.add("NUM_JOIN_SUBDIVISIONS","float",F.numJoinSubdivisions),z.add("textureElementIndex","uint"),z.add("lineParameters","vec2"),A.add("vColor","vec4"),A.add("vpos","vec3",{invariant:!0}),A.add("vLineDistance","float"),A.add("vLineWidth","float"),O||(A.add("vIsInsideJoin","int"),A.add("vStretchFactor","float"),A.add("vJoinCenterLineSDFs","vec2"),A.add("vSubdivisionFactor","float")),O&&A.add("vLineSizeInv","float"),G&&A.add("vLineDistanceNorm","float"),B&&(A.add("vSegmentSDF","float"),A.add("vReverseSegmentSDF","float")),W.code.add(x`vec3 perpendicular(vec3 v) {
12
+ }`)):(T.code.add(D`void forwardObjectAndLayerIdColor() {}`),R.code.add(D`void outputObjectAndLayerIdColor() {}`));const Q=I&&!V;return Q&&(T.uniforms.add(new x("markerScale",e=>e.markerScale)),z.include(o,{space:2,hasScreenSizePerspective:H,worldSized:B})),m(T,j),V&&(B||$)&&T.uniforms.add(new S("worldToScreenRatio",e=>1/e.screenToPCSRatio)),T.uniforms.add(new L("inverseProjectionMatrix",e=>e.camera.inverseProjectionMatrix),new f("nearFar",e=>e.camera.nearFar),new x("miterLimit",e=>"miter"!==e.join?0:e.miterLimit),new h("viewport",e=>e.camera.fullViewport)),T.constants.add("LARGE_HALF_FLOAT","float",65500),T.constants.add("EPS","float",.001),T.constants.add("NUM_JOIN_SUBDIVISIONS","float",j.numJoinSubdivisions),A.add("textureElementIndex","uint"),A.add("lineParameters","vec2"),W.add("vColor","vec4"),W.add("vpos","vec3",{invariant:!0}),W.add("vLineDistance","float"),W.add("vLineWidth","float"),$||(W.add("vIsInsideJoin","int"),W.add("vStretchFactor","float"),W.add("vJoinCenterLineSDFs","vec2"),W.add("vSubdivisionFactor","float")),$&&W.add("vLineSizeInv","float"),Y&&W.add("vLineDistanceNorm","float"),G&&(W.add("vSegmentSDF","float"),W.add("vReverseSegmentSDF","float")),T.code.add(D`vec3 perpendicular(vec3 v) {
13
13
  return vec3(v.y, -v.x, 0.0);
14
14
  }
15
15
  float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
@@ -20,12 +20,12 @@ float s = sin(a);
20
20
  float c = cos(a);
21
21
  mat2 m = mat2(c, -s, s, c);
22
22
  return vec3(m * v.xy, v.z);
23
- }`),W.code.add(x`vec4 projectAndScale(vec4 pos) {
23
+ }`),T.code.add(D`vec4 projectAndScale(vec4 pos) {
24
24
  vec4 posNdc = proj * pos;
25
25
  posNdc.xy *= viewport.zw / posNdc.w;
26
26
  posNdc.z /= posNdc.w;
27
27
  return posNdc;
28
- }`),W.code.add(x`void clip(
28
+ }`),T.code.add(D`void clip(
29
29
  inout vec4 pos,
30
30
  inout vec4 prev,
31
31
  inout vec4 next,
@@ -56,16 +56,20 @@ if (next.z > -nearFar[0]) {
56
56
  next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos));
57
57
  }
58
58
  }
59
- }`),v(W),W.constants.add("aaWidth","float",O?0:1),W.main.add(x`
60
- vec3 position = ${Y.getTextureAttribute("position")};
61
- float u0 = ${Y.getTextureAttribute("u0")};
59
+ }`),v(T),T.constants.add("aaWidth","float",$?0:1),T.main.add(D`
60
+ vec3 position = ${q.getTextureAttribute("position")};
61
+ float u0 = ${q.getTextureAttribute("u0")};
62
+ ${b(B,D`
63
+ float prevU0 = ${q.getTextureAttribute("u0",-1)};
64
+ float nextU0 = ${q.getTextureAttribute("u0",1)};
65
+ `)}
62
66
 
63
67
  // unpack values from vertex type
64
68
  float vertexType = abs(lineParameters.y);
65
69
  float lineSide = sign(lineParameters.y);
66
70
  bool isStartVertex = vertexType == 2.0 || vertexType == 4.0;
67
- vec3 prevPosition = ${Y.getTextureAttribute("position",-1)};
68
- vec3 nextPosition = ${Y.getTextureAttribute("position",1)};
71
+ vec3 prevPosition = ${q.getTextureAttribute("position",-1)};
72
+ vec3 nextPosition = ${q.getTextureAttribute("position",1)};
69
73
 
70
74
  float coverage = 1.0;
71
75
 
@@ -80,11 +84,11 @@ next = mix(next, pos, nearPlaneInterpolationFactor(adjustedNearPlaneDistance, ne
80
84
  vec4 next = view * vec4(nextPosition, 1.0);
81
85
 
82
86
  bool isJoin = vertexType < 3.0;
83
- `),q&&W.main.add(x`vec4 other = isStartVertex ? next : prev;
87
+ `),Q&&T.main.add(D`vec4 other = isStartVertex ? next : prev;
84
88
  bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
85
89
  if (!isJoin && !markersHidden) {
86
90
  pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
87
- }`),j.include(c),W.code.add(x`
91
+ }`),z.include(c),T.code.add(D`
88
92
  vec2 computeJoinAndCapDisplacement(
89
93
  bool isJoin,
90
94
  bool isStartVertex,
@@ -129,7 +133,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
129
133
  }
130
134
  }
131
135
 
132
- ${D(!O,x`
136
+ ${b(!$,D`
133
137
  // Compute stretch compensation for feathering.
134
138
  if (subdivisionFactor > 0.0) {
135
139
  vIsInsideJoin = 1;
@@ -164,14 +168,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
164
168
  `)}
165
169
 
166
170
  if (isOutside && displacementLen > miterLimit * lineWidth) {
167
- ${D(F.roundJoins,x`
171
+ ${b(j.roundJoins,D`
168
172
  vec3 startDir = perpendicular(leftLen < EPS ? right : left);
169
173
  vec3 endDir = perpendicular(rightLen < EPS ? left : right);
170
- float factor = ${O?x`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:x`subdivisionFactor`};
174
+ float factor = ${$?D`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:D`subdivisionFactor`};
171
175
 
172
176
  float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
173
177
  joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
174
- `,x`
178
+ `,D`
175
179
  /**
176
180
  * Convert to bevel join if miterLimit is exceeded.
177
181
  * Here vertices with a subdivisionFactor > 0 are either START vertices or
@@ -183,18 +187,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
183
187
  vec3 startDir = perpendicular(leftLen < EPS ? right : left);
184
188
  vec3 endDir = perpendicular(rightLen < EPS ? left : right);
185
189
 
186
- ${D(O,x`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,x`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
190
+ ${b($,D`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,D`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
187
191
  `)}
188
192
  displacementLen = lineWidth;
189
193
  }
190
194
  } else {
191
195
  joinDisplacementDir = perpendicular(isStartVertex ? right : left);
192
- ${0!==E?x`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
196
+ ${0!==O?D`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`:""}
193
197
  }
194
198
 
195
199
  return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
196
200
  }
197
- `),W.main.add(x`
201
+ `),T.main.add(D`
198
202
  clip(pos, prev, next, isStartVertex);
199
203
 
200
204
  vec3 clippedPos = pos.xyz;
@@ -207,18 +211,18 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
207
211
  vec3 left = (pos.xyz - prev.xyz);
208
212
  vec3 right = (next.xyz - pos.xyz);
209
213
 
210
- float lineSize = getSize(${D(U,"clippedPos")});
211
- ${D(O&&U,"float patternLineSize = getSize(clippedCenter);")}
212
- ${D(O&&!U,"float patternLineSize = lineSize;")}
214
+ float lineSize = getSize(${b(H,"clippedPos")});
215
+ ${b($&&H,"float patternLineSize = getSize(clippedCenter);")}
216
+ ${b($&&!H,"float patternLineSize = lineSize;")}
213
217
 
214
- ${D(H,x`
218
+ ${b(B,D`
215
219
  lineSize += aaWidth;
216
220
  float lineWidth = lineSize * pixelRatio * worldToScreenRatio;
217
221
  if (lineWidth < 1.0) {
218
222
  coverage = lineWidth;
219
223
  lineWidth = 1.0;
220
224
  }
221
- `,x`
225
+ `,D`
222
226
  if (lineSize < 1.0) {
223
227
  coverage = lineSize; // convert sub-pixel coverage to alpha
224
228
  lineSize = 1.0;
@@ -229,14 +233,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
229
233
  `)}
230
234
 
231
235
  vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
232
- ${O?x`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
233
- `),X&&W.main.add(x`
236
+ ${$?D`vLineSizeInv = noPerspectiveWrite(1.0 / lineSize, pos.w);`:""}
237
+ `),Z&&T.main.add(D`
234
238
  float isEndVertex = float(!isStartVertex);
235
239
  vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
236
240
  vec3 segment = mix(right, left, isEndVertex);
237
- ${B?x`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
238
- `),W.main.add(x`
239
- ${D(!O,x`
241
+ ${G?D`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:""}
242
+ `),T.main.add(D`
243
+ ${b(!$,D`
240
244
  vIsInsideJoin = 0;
241
245
  vStretchFactor = 1.0;
242
246
  vSubdivisionFactor = 0.0;
@@ -267,10 +271,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
267
271
  float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
268
272
 
269
273
  vLineDistance = lineWidth * lineDistNorm;
270
- ${G?x`vLineDistanceNorm = lineDistNorm;`:""}
274
+ ${Y?D`vLineDistanceNorm = lineDistNorm;`:""}
271
275
 
272
276
  pos.xyz += displacement;
273
- `),O||W.main.add(x`if (isJoin) {
277
+ `),$||T.main.add(D`if (isJoin) {
274
278
  vec2 joinCenterToVertex = displacementXY;
275
279
  vec2 leftCenterlineDir = left.xy;
276
280
  vec2 rightCenterlineDir = right.xy;
@@ -285,30 +289,35 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
285
289
  ),
286
290
  pos.w
287
291
  );
288
- }`),B&&W.main.add(x`vec2 segmentDir = normalize(segment.xy);
292
+ }`),G&&T.main.add(D`vec2 segmentDir = normalize(segment.xy);
289
293
  vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
290
- vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),O&&(R?W.uniforms.add(new S("worldToScreenRatio",e=>1/e.screenToPCSRatio)):W.main.add(x`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
291
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),W.main.add(x`
294
+ vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),$&&(V||T.main.add(D`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
295
+ float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),T.main.add(D`
292
296
  float segmentLengthScreenDouble = length(segment.xy);
293
297
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
294
298
  float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
295
- float segmentLengthRender = length(mix(nextPosition - position, position - prevPosition, isEndVertex));
296
- ${D(!R||H,x`float segmentStartRender = mix(u0, u0 - segmentLengthRender, isEndVertex);`)}
299
+ float segmentLengthRender = ${b(B,D`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,D`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
300
+
301
+ ${b(!V||B,D`
302
+ float segmentStartRender = ${b(B,D`mix(u0, prevU0, isEndVertex)`,D`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
303
+ `)}
297
304
 
298
305
  vStipplePatternStretch = worldToScreenRatio / discreteWorldToScreenRatio;
299
- `),R?W.main.add(x`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
300
- float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):W.main.add(x`float startPseudoScreen = segmentStartRender * discreteWorldToScreenRatio;
301
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),W.uniforms.add(new u("stipplePatternPixelSize",e=>r(e))),W.main.add(x`
306
+ `),V?T.main.add(D`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
307
+ float startPseudoScreen = u0 * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):T.main.add(D`float startPseudoScreen = segmentStartRender * discreteWorldToScreenRatio;
308
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),T.uniforms.add(new x("stipplePatternPixelSize",e=>r(e))),T.main.add(D`
302
309
  float patternLength = patternLineSize * stipplePatternPixelSize;
303
310
 
304
- ${D(H,x`
311
+ ${b(B,D`
305
312
  vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
306
313
  vStipplePatternStretch = 1.0;
307
314
 
308
- // The v-coordinate used in case of an image pattern.
309
- bool isLeft = lineSide < 0.0;
310
- vStippleV = isLeft ? 0.0 : 1.0;
311
- `,x`
315
+ ${b(k,D`
316
+ // The v-coordinate used in case of an image pattern.
317
+ bool isLeft = lineSide < 0.0;
318
+ vStippleV = isLeft ? 0.0 : 1.0;
319
+ `)}
320
+ `,D`
312
321
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
313
322
  // fragment shader
314
323
  vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
@@ -329,7 +338,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
329
338
  }
330
339
 
331
340
  // Cancel out perspective correct interpolation because we want this length to really represent the screen
332
- // distance
341
+ // distance.
333
342
  vStippleDistanceLimits = noPerspectiveWrite(vStippleDistanceLimits, pos.w);
334
343
  vStippleDistance = noPerspectiveWrite(vStippleDistance, pos.w);
335
344
 
@@ -339,7 +348,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
339
348
  isStartVertex ?
340
349
  vec2(-1e34, vStippleDistanceLimits.y) :
341
350
  vec2(vStippleDistanceLimits.x, 1e34);
342
- `)),W.main.add(x`
351
+ `)),T.main.add(D`
343
352
  // Convert back into NDC
344
353
  pos.xy = (pos.xy / viewport.zw) * pos.w;
345
354
  pos.z = pos.z * pos.w;
@@ -347,13 +356,13 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
347
356
  vColor = getColor();
348
357
  vColor.a = noPerspectiveWrite(vColor.a * coverage, pos.w);
349
358
 
350
- ${_&&!R?"pos.z -= EPS * pos.w;":""}
359
+ ${U&&!V?"pos.z -= EPS * pos.w;":""}
351
360
 
352
361
  // transform final position to camera space for slicing
353
362
  vpos = (inverseProjectionMatrix * pos).xyz;
354
363
  gl_Position = pos;
355
364
  forwardObjectAndLayerIdColor();
356
- }`),j.fragment.include(e,F),j.include(y,F),T.include(d),T.main.add(x`discardBySlice(vpos);`),j.include(p),T.include(b),O||T.code.add(x`float lineFeatheringFactor(float lineWidth, float lineDistance) {
365
+ }`),z.fragment.include(e,j),z.include(C,j),R.include(d),R.main.add(D`discardBySlice(vpos);`),z.include(p),R.include(w),$||R.code.add(D`float lineFeatheringFactor(float lineWidth, float lineDistance) {
357
366
  float stretchFactor = vIsInsideJoin == 1 ? noPerspectiveRead(vStretchFactor) : 1.0;
358
367
  float featherWidth = 2.0;
359
368
  float featherStartDistance = max(lineWidth - featherWidth / stretchFactor, 0.0);
@@ -365,26 +374,26 @@ float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joi
365
374
  float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
366
375
  feather = vIsInsideJoin == 1 ? max(feather, straightFeather) : feather;
367
376
  return 1.0 - clamp(feather, 0.0, 1.0);
368
- }`),T.main.add(x`
377
+ }`),R.main.add(D`
369
378
  float lineWidth = noPerspectiveRead(vLineWidth);
370
379
  float lineDistance = noPerspectiveRead(vLineDistance);
371
- ${D(G,x`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
372
- `),_?T.main.add(x`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(B&&T.main.add(x`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
380
+ ${b(Y,D`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
381
+ `),U?R.main.add(D`vec4 finalColor = vec4(1.0, 0.0, 1.0, 1.0);`):(G&&R.main.add(D`float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
373
382
  vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
374
383
  float fragmentRadius = length(fragmentPosition);
375
384
  float fragmentCapSDF = (fragmentRadius - lineWidth) * 0.5;
376
385
  float capCoverage = clamp(0.5 - fragmentCapSDF, 0.0, 1.0);
377
386
  if (capCoverage < alphaCutoff) {
378
387
  discard;
379
- }`),k?T.main.add(x`vec2 stipplePosition = vec2(
388
+ }`),X?R.main.add(D`vec2 stipplePosition = vec2(
380
389
  min(getStippleSDF() * 2.0 - 1.0, 0.0),
381
390
  lineDistanceNorm
382
391
  );
383
392
  float stippleRadius = length(stipplePosition * lineWidth);
384
393
  float stippleCapSDF = (stippleRadius - lineWidth) * 0.5;
385
394
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
386
- float stippleAlpha = step(alphaCutoff, stippleCoverage);`):T.main.add(x`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==N&&T.main.add(x`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),T.uniforms.add(new h("intrinsicColor",e=>e.color)).main.add(x`vec4 color = intrinsicColor * vColor;
387
- color.a = noPerspectiveRead(color.a);`),$&&T.uniforms.add(new h("innerColor",e=>e.innerColor??e.color),new u("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(x`float distToInner = abs(lineDistance) - innerWidth;
395
+ float stippleAlpha = step(alphaCutoff, stippleCoverage);`):R.main.add(D`float stippleAlpha = getStippleAlpha(lineWidth);`),11!==N&&R.main.add(D`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),R.uniforms.add(new u("intrinsicColor",e=>e.color)).main.add(D`vec4 color = intrinsicColor * vColor;
396
+ color.a = noPerspectiveRead(color.a);`),_&&R.uniforms.add(new u("innerColor",e=>e.innerColor??e.color),new x("innerWidth",(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(D`float distToInner = abs(lineDistance) - innerWidth;
388
397
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
389
398
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
390
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),T.main.add(x`vec4 finalColor = blendStipple(color, stippleAlpha);`),J&&(T.uniforms.add(new u("falloff",e=>e.falloff)),T.main.add(x`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),O||T.main.add(x`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),V&&(A.add("vnormal","vec3"),j.include(a,F),W.main.add("vnormal = getLocalUp(vpos, localOrigin);"),T.include(i,F),T.main.add("finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, 0.0, 0.0, vec3(0.0)), finalColor.a);")),M&&T.main.add("finalColor = animate(finalColor);")),T.main.add(x`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),j}const z=Object.freeze(Object.defineProperty({__proto__:null,build:j,numRoundJoinSubdivisions:F},Symbol.toStringTag,{value:"Module"}));export{z as R,j as b,F as n};
399
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),R.main.add(D`vec4 finalColor = blendStipple(color, stippleAlpha);`),J&&(R.uniforms.add(new x("falloff",e=>e.falloff)),R.main.add(D`finalColor.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),$||R.main.add(D`finalColor.a *= lineFeatheringFactor(lineWidth, lineDistance);`),E&&(W.add("vnormal","vec3"),T.include(a,j),T.main.add("vnormal = getLocalUp(vpos, localOrigin);"),R.include(i,j),g(R,j),R.main.add("\n vec3 viewDirection = normalize(vpos - cameraPosition);\n finalColor = vec4(evaluateSceneLighting(vnormal, finalColor.rgb, 0.0, 0.0, vec3(0.0), viewDirection, vnormal), finalColor.a);")),M&&R.main.add("finalColor = animate(finalColor);")),R.main.add(D`outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`),z}const A=Object.freeze(Object.defineProperty({__proto__:null,build:z,numRoundJoinSubdivisions:j},Symbol.toStringTag,{value:"Module"}));export{A as R,z as b,j as n};
@@ -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{create as o}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{addMainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Float2PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as m}from"../views/webgl/NoParameters.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";class g extends m{constructor(){super(...arguments),this.texV=e(),this.altitudeFade=0,this.innerScale=0,this.undergroundFadeAlpha=0,this.silhouette=new p}}class p{constructor(){this.center=o(),this.v1=o(),this.v2=o()}}function h(e){const o=new f,{vertex:m,fragment:g}=o;if(r(m),2===e.geometry)o.attributes.add("position","vec2"),o.varyings.add("color","vec4"),m.uniforms.add(new s("cameraPosition",e=>e.camera.eye),new a("undergroundFadeAlpha",e=>e.undergroundFadeAlpha)),m.main.add(l`float ndotl = dot(normalize(cameraPosition), mainLightDirection);
2
+ import{create as e}from"../core/libs/gl-matrix-2/factories/vec2f64.js";import{create as o}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{mainLightDirection as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{Float2PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{Float3BindUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4BindUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Matrix4BindUniform.js";import{Texture2DPassUniform as c}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as m}from"../views/webgl/NoParameters.js";import{ShaderBuilder as f}from"../views/webgl/ShaderBuilder.js";class g extends m{constructor(){super(...arguments),this.texV=e(),this.altitudeFade=0,this.innerScale=0,this.undergroundFadeAlpha=0,this.silhouette=new p}}class p{constructor(){this.center=o(),this.v1=o(),this.v2=o()}}function h(e){const o=new f,{vertex:m,fragment:g}=o;if(m.uniforms.add(r),2===e.geometry)o.attributes.add("position","vec2"),o.varyings.add("color","vec4"),m.uniforms.add(new s("cameraPosition",e=>e.camera.eye),new a("undergroundFadeAlpha",e=>e.undergroundFadeAlpha)),m.main.add(l`float ndotl = dot(normalize(cameraPosition), mainLightDirection);
3
3
  float lighting = max(0.0, smoothstep(-1.0, 0.8, 2.0 * ndotl));
4
4
  color = vec4(vec3(lighting), undergroundFadeAlpha);
5
5
  gl_Position = vec4(position.xy, 1.0, 1.0);`),g.main.add(l`fragColor = color;`);else{o.include(i),o.attributes.add("position","vec3"),o.varyings.add("vtc","vec2"),o.varyings.add("falloff","float");const r=1===e.geometry;m.uniforms.add(new d("proj",e=>e.camera.projectionMatrix),new d("view",e=>e.camera.viewMatrix)),r||(o.varyings.add("innerFactor","float"),m.uniforms.add(new n("silCircleCenter",e=>e.silhouette.center),new n("silCircleV1",e=>e.silhouette.v1),new n("silCircleV2",e=>e.silhouette.v2),new t("texV",e=>e.texV),new a("innerScale",e=>e.innerScale)));const s=6.2831853,f=1/128;m.main.add(l`
@@ -1,21 +1,21 @@
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 o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as r,set as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as u}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{addMainLightDirection as b,addMainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDrawFragment as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{OverlayTerrain as L}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as j,TerrainTexture as x}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{addProjViewLocalOrigin as T,addViewNormal as P,addCameraPosition as M}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3BindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as $,If as z}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as D}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{Texture2DBindUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{alphaCutoff as F}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as _}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as V}from"../views/webgl/ShaderBuilder.js";class N extends j{constructor(){super(...arguments),this.useStencil=!1}}function W(o){const a=new V,{attributes:j,vertex:N,fragment:W,varyings:H}=a;j.add("position","vec3"),a.include(d,o),a.include(c,o);const U=()=>{a.include(C,o),N.code.add($`vec3 getNormal() {
2
+ import{translate as e}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{normalize as r,set as i}from"../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{addLinearDepth as l}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js";import{addNearFar as t}from"../views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as n}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as s}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{NormalAttribute as d}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js";import{TextureCoordinateAttribute as c}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js";import{VertexTangent as m}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js";import{outputDepth as g}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{OutputHighlight as v}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js";import{OutputHighlightOverlay as u}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlightOverlay.js";import{EvaluateAmbientOcclusion as p}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as w,addAmbientBoostFactor as f,addLightingGlobalFactor as h}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{mainLightDirection as b,mainLightIntensity as y}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js";import{NormalUtils as C}from"../views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js";import{ReadShadowMapDrawFragment as O}from"../views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js";import{OverlayTerrain as j}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js";import{OverlayTerrainPassParameters as L,TerrainTexture as x}from"../views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js";import{addProjViewLocalOrigin as T,addViewNormal as P,addCameraPosition as M}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3BindUniform as S}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{glsl as D,If as $}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4DrawUniform as z}from"../views/3d/webgl-engine/core/shaderModules/Matrix4DrawUniform.js";import{Texture2DBindUniform as A}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{alphaCutoff as F}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{outputColorHighlightOLID as N}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{ShaderBuilder as _}from"../views/webgl/ShaderBuilder.js";class V extends L{constructor(){super(...arguments),this.useStencil=!1}}function W(o){const a=new _,{attributes:L,vertex:V,fragment:W,varyings:H}=a;L.add("position","vec3"),a.include(d,o),a.include(c,o);const U=()=>{V.include(C,o),V.code.add(D`vec3 getNormal() {
3
3
  float z = 1.0 - abs(normalCompressed.x) - abs(normalCompressed.y);
4
4
  vec3 n = vec3(normalCompressed + vec2(normalCompressed.x >= 0.0 ? 1.0 : -1.0,
5
5
  normalCompressed.y >= 0.0 ? 1.0 : -1.0) * min(z, 0.0), z);
6
6
  return normalize(n);
7
- }`)};T(N,o),a.include(s),W.include(F);const{output:E,overlayMode:I,tileBorders:q,transparencyMode:R,overlayEnabled:G,renderOccluded:J}=o,K=2===R||3===R,Q=0!==o.pbrMode,X=G&&K;switch(E){case 0:case 1:case 2:{const l=0!==E||J?"discard":"";a.include(x,o),W.include(w,o),G&&a.include(L,o);const t=2===I;t&&a.include(m,o),H.add("vnormal","vec3"),H.add("vpos","vec3",{invariant:!0}),H.add("vup","vec3"),U(),N.main.add($`
7
+ }`)};T(V,o),a.include(s),W.include(F);const{output:E,overlayMode:I,tileBorders:q,transparencyMode:G,overlayEnabled:R,renderOccluded:J}=o,K=2===G||3===G,Q=R&&K;switch(E){case 0:case 1:case 2:{const l=0!==E||J?"discard":"";a.include(x,o),W.include(w,o),R&&a.include(j,o);const t=2===I;t&&a.include(m,o),H.add("vnormal","vec3"),H.add("vpos","vec3",{invariant:!0}),H.add("upNormal","vec3"),U(),V.main.add(D`
8
8
  vpos = position;
9
9
  vec3 positionWorld = position + localOrigin;
10
10
  gl_Position = transformPosition(proj, view, vpos);
11
11
  vnormal = getNormal();
12
- vup = getLocalUp(position, localOrigin);
13
- ${z(t,$`forwardVertexTangent(vnormal);`)}
12
+ upNormal = getLocalUp(position, localOrigin);
13
+ ${$(t,D`forwardVertexTangent(vnormal);`)}
14
14
 
15
15
  forwardTextureCoordinatesWithTransform(uv0);
16
- ${z(G,"setOverlayVTC(uv0);")}
17
- ${z(q,"forwardTextureCoordinates();")}
18
- forwardLinearDepthToReadShadowMap();`),a.include(O,o),W.include(n,o),W.include(w,o),W.include(p,o),a.include(_,o),M(W,o),f(W),h(W),W.uniforms.add(N.uniforms.get("localOrigin"),new S("viewDirection",({camera:e})=>r(B,i(B,e.viewMatrix[12],e.viewMatrix[13],e.viewMatrix[14])))),t&&W.uniforms.add(new A("ovWaterTex",e=>e.overlay?.getTexture(3)),new D("view",({origin:o},{camera:r})=>e(k,r.viewMatrix,o))),b(W),y(W),W.main.add($`
16
+ ${$(R,"setOverlayVTC(uv0);")}
17
+ ${$(q,"forwardTextureCoordinates();")}
18
+ forwardLinearDepthToReadShadowMap();`),a.include(O,o),W.include(n,o),W.include(w,o),W.include(p,o),a.include(N,o),M(W,o),f(W),h(W),W.uniforms.add(V.uniforms.get("localOrigin"),new S("viewDirection",({camera:e})=>r(B,i(B,e.viewMatrix[12],e.viewMatrix[13],e.viewMatrix[14])))),t&&W.uniforms.add(new A("ovWaterTex",e=>e.overlay?.getTexture(3)),new z("view",({origin:o},{camera:r})=>e(k,r.viewMatrix,o))),W.uniforms.add(b,y).main.add(D`
19
19
  vec3 normal = normalize(vnormal);
20
20
  float lightAlignment = dot(normal, mainLightDirection);
21
21
 
@@ -24,9 +24,9 @@ return normalize(n);
24
24
  float ssao = evaluateAmbientOcclusionInverse();
25
25
  vec4 tileColor = getTileColor();
26
26
 
27
- ${z(G,$`vec4 overlayColorOpaque = getOverlayColor(ovColorTex, vtcOverlay);
27
+ ${$(R,D`vec4 overlayColorOpaque = getOverlayColor(ovColorTex, vtcOverlay);
28
28
  vec4 overlayColor = overlayOpacity * overlayColorOpaque;
29
- ${z(K,`if (overlayColor.a < alphaCutoff) ${l};`)}
29
+ ${$(K,`if (overlayColor.a < alphaCutoff) ${l};`)}
30
30
  vec4 groundColor = tileColor;
31
31
  tileColor = blendColorsPremultiplied(overlayColor, tileColor);`)}
32
32
 
@@ -37,13 +37,13 @@ return normalize(n);
37
37
  tileColor *= groundSliceOpacity;
38
38
  }
39
39
 
40
+ vec3 viewDirection = normalize(vpos - cameraPosition);
40
41
  vec3 albedo = tileColor.rgb;
41
42
 
42
43
  // heuristic shading function used in the old terrain, now used to add ambient lighting
43
44
  vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
44
-
45
- ${Q?$`vec4 finalColor = vec4(evaluatePBRSimplifiedLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight, normalize(vpos - cameraPosition), vup), tileColor.a);`:$`vec4 finalColor = vec4(evaluateSceneLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight), tileColor.a);`}
46
- ${z(t,$`vec4 overlayWaterMask = getOverlayColor(ovWaterTex, vtcOverlay);
45
+ vec4 finalColor = vec4(evaluateSceneLighting(normal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, upNormal), tileColor.a);
46
+ ${$(t,D`vec4 overlayWaterMask = getOverlayColor(ovWaterTex, vtcOverlay);
47
47
  float waterNormalLength = length(overlayWaterMask);
48
48
  if (waterNormalLength > 0.95) {
49
49
  mat3 tbnMatrix = mat3(tbnTangent, tbnBiTangent, vnormal);
@@ -55,26 +55,26 @@ return normalize(n);
55
55
  // un-gamma the ground color to mix in linear space
56
56
  finalColor = mix(groundColor, waterColorNonLinear, waterColorLinear.w) * opacity;
57
57
  }`)}
58
- ${z(q,$`vec2 dVuv = fwidth(vuv0);
58
+ ${$(q,D`vec2 dVuv = fwidth(vuv0);
59
59
  vec2 edgeFactors = smoothstep(vec2(0.0), 1.5 * dVuv, min(vuv0, 1.0 - vuv0));
60
60
  float edgeFactor = 1.0 - min(edgeFactors.x, edgeFactors.y);
61
61
  finalColor = mix(finalColor, vec4(1.0, 0.0, 0.0, 1.0), edgeFactor);`)}
62
- outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`)}break;case 3:X&&a.include(L,o),N.main.add($`
63
- ${z(X,"setOverlayVTC(uv0);")}
64
- gl_Position = transformPosition(proj, view, position);`),W.main.add(`${z(X,"if (getCombinedOverlayColor().a < alphaCutoff) discard;")}`);break;case 5:case 6:case 7:case 8:a.include(g,o),W.main.add("outputDepth(linearDepth);");case 9:l(a),t(a),N.main.add("gl_Position = transformPositionWithDepth(proj, view, position, nearFar, linearDepth);"),W.main.add("");break;case 4:X&&a.include(L,o),H.add("vnormal","vec3"),P(N),U(),N.main.add($`
65
- ${z(X,"setOverlayVTC(uv0);")}
62
+ outputColorHighlightOLID(applySlice(finalColor, vpos), finalColor.rgb);`)}break;case 3:Q&&a.include(j,o),V.main.add(D`
63
+ ${$(Q,"setOverlayVTC(uv0);")}
64
+ gl_Position = transformPosition(proj, view, position);`),W.main.add(`${$(Q,"if (getCombinedOverlayColor().a < alphaCutoff) discard;")}`);break;case 5:case 6:case 7:case 8:a.include(g,o),W.main.add("outputDepth(linearDepth);");case 9:l(a),t(a),V.main.add("gl_Position = transformPositionWithDepth(proj, view, position, nearFar, linearDepth);"),W.main.add("");break;case 4:Q&&a.include(j,o),H.add("vnormal","vec3"),P(V),U(),V.main.add(D`
65
+ ${$(Q,"setOverlayVTC(uv0);")}
66
66
  gl_Position = transformPosition(proj, view, position);
67
- vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),W.main.add($`
67
+ vnormal = normalize((viewNormal * vec4(getNormal(), 1.0)).xyz);`),W.main.add(D`
68
68
  float opacity = 1.0;
69
- ${z(X,"\n opacity = getCombinedOverlayColor().a;\n if (opacity < alphaCutoff) discard;")}
69
+ ${$(Q,"\n opacity = getCombinedOverlayColor().a;\n if (opacity < alphaCutoff) discard;")}
70
70
  vec3 normal = normalize(vnormal);
71
71
  if (gl_FrontFacing == false) {
72
72
  normal = -normal;
73
73
  }
74
- fragColor = vec4(vec3(0.5) + 0.5 * normal, opacity);`);break;case 10:G&&(a.include(L,o),a.include(u,o)),N.main.add($`
75
- ${z(G,"setOverlayVTC(uv0);")}
76
- gl_Position = transformPosition(proj, view, position);`),a.include(v,o),W.main.add($`
77
- ${z(G,$`
74
+ fragColor = vec4(vec3(0.5) + 0.5 * normal, opacity);`);break;case 10:R&&(a.include(j,o),a.include(u,o)),V.main.add(D`
75
+ ${$(R,"setOverlayVTC(uv0);")}
76
+ gl_Position = transformPosition(proj, view, position);`),a.include(v,o),W.main.add(D`
77
+ ${$(R,D`
78
78
  calculateOcclusionAndOutputHighlight(getAllOverlayHighlightValuesEncoded());`,"calculateOcclusionAndOutputHighlight();")}
79
- `);break;case 11:if(G)a.include(L,o),N.main.add($`gl_Position = transformPosition(proj, view, position);
80
- setOverlayVTC(uv0);`),W.main.add($`fragColor = getOverlayColorTexel();`);else{const e=0===R;N.main.add($`${z(e,"gl_Position = transformPosition(proj, view, position);")}`),W.main.add($`fragColor = vec4(0.0);`)}}return a}const k=o(),B=a(),H=Object.freeze(Object.defineProperty({__proto__:null,TerrainPassParameters:N,build:W},Symbol.toStringTag,{value:"Module"}));export{N as T,H as a,W as b};
79
+ `);break;case 11:if(R)a.include(j,o),V.main.add(D`gl_Position = transformPosition(proj, view, position);
80
+ setOverlayVTC(uv0);`),W.main.add(D`fragColor = getOverlayColorTexel();`);else{const e=0===G;V.main.add(D`${$(e,"gl_Position = transformPosition(proj, view, position);")}`),W.main.add(D`fragColor = vec4(0.0);`)}}return a}const k=o(),B=a(),H=Object.freeze(Object.defineProperty({__proto__:null,TerrainPassParameters:V,build:W},Symbol.toStringTag,{value:"Module"}));export{V as T,H as a,W as b};